在线等更新
LWhite 发布的帖子
-
NS-3下的OpenFlow仿真(三)——eclipse环境配置
为什么要配置eclipse环境呢?
因为NS-3的源码和库很大,没有一个良好的开发环境不足以更好的学习其中的调用关系也不便于使用开发。
下面我们就开始配置吧。
(1)新建 NS3 空工程。
File->new->C++ project,Project name 用 NS3,选择 Empty Project,点击 Finish,如图所示。
(2)设置 Eclipse 中 NS3 编译器为 waf
在 Project Explorer 中的 NS3 上单击右键,选择 properties,做如下操作:在C/C++ build 中的 Build Settings 选项卡如图所示,去掉 use default build command 复选框中的钩,
并在 build command 中输入workspaceloc:/NS3/waf;去掉generatemakefilesautomatically复选框中的钩,在builddirectory中输入workspace_loc:/NS3/build
将图中的目录替换成你的就ok
然后,如图所示在 C/C++ Build 的 Behavior 选项卡中,Workbench BuildBehavior 中的复选框都选上,前 2 个的值都为空,最后一个是 clean。
(2)设置 Eclipse 执行程序使用外部工具
选择 Run->External Tools->External tools Configuration,在 Program 中右键选择 New,
如图 所示, location 中设置workspaceloc:/NS3/waf,workingdirectory中设置{workspace_loc:/NS3},argument 设置为--run “${string_prompt}”
点击run,输入scratch-simulator,点击ok
这样我们的开发环境就配置完成了可以愉快的开始写代码了 -
NS-3下的OpenFlow仿真(二)——OFswitch13登场
OFswitch13,一款专用于解决NS-3的垃圾openflow支持的武器。我们可以直接进入这个支持项目的主页看一看:点击进入
闲话不多说,下面我们开始安装这一款武器
启动之前,请确保系统上安装了以下软件包:sudo apt-get install libpcap-dev libxerces-c-dev libpcre3-dev flex bison $ sudo apt-get install pkg-config autoconf libtool libboost-dev ofSoftSwitch13依赖于netbee库(https://github.com/netgroup-polito/netbee),用于解析网络数据包(有一项正在进行的工作来消除这种依赖性)。所以我们需要手动编译安装此库。首先,克隆netbee存储库并编译库:
$ git clone https://github.com/netgroup-polito/netbee.git
cmake . $ make 然后,安装共享库,配置动态链接器运行时绑定,并复制包含文件:
$ sudo cp ../bin/libn*.so /usr/local/lib
sudo cp -R ../include/* /usr/include/ $ cd - 于是我们的准备工作就完成了
将最近稳定的NS-3代码下载到您的计算机中(我们使用的是用于NS-3.29的Mercurial存储库):
$ hg clone http://code.nsnam.org/ns-3.29
将ofswitch13代码下载到src/文件夹中(从ns-3.28开始,您还可以下载代码到新的contrib/文件夹中)。此过程将递归地将ofSoftSwitch13代码下载到ofswitch13/lib/ofsoftswitch13/目录。git clone --recurse-submodules https://github.com/ljerezchaves/ofswitch13.git git checkout 3.3.0 && git submodule update --recursive ./boot.sh make patch -p1 < src/ofswitch13/utils/ofswitch13-src-3_29.patch $ patch -p1 < src/ofswitch13/utils/ofswitch13-doc-3_29.patch $ ./waf configure $ ./waf 好了我们的OFswitch13安装完成了,下一节我们将介绍of13的基本实现原理和使用例程
-
NS-3下的OpenFlow仿真(一)——准备
什么是OpenFlow?
OpenFlow,一种网络通信协议,属于数据链路层,能够控制网络交换器或路由器的转发平面(forwarding plane),借此改变网络数据包所走的网络路径。
总而言之,OpenFlow是一个协议,一个为了软件定义网络(SDN)而创建的协议,用以更灵活的使用交换机在网路中的控制功能,OpenFlow允许从远程控制网络交换器的数据包转送表,透过新增、修改与移除数据包控制规则与行动,来改变数据包转送的路径。比起用 访问控制表 (ACLs) 和路由协议,允许更复杂的流量管理。同时,OpenFlow允许不同供应商用一个简单,开源的协议去远程管理交换机(通常提供专有的接口和描述语言)附:OpenFlow白皮书(点击下载)
Openflow的基本概念了解
OpenFlow的标准中存在两种设备,OpenFlow控制器、OpenFlow交换机,交换机的转发规则由流表(FlowTable)控制,用以匹配数据包和计数转发,控制器通过安全通道与交换机沟通,通过配置交换机的流表来控制交换机的转发,基本结构如下图:
具体的OpenFlow协议请另行学习,本帖不详述。NS-3下的OpenFlow环境搭建:
首先,你需要搭建好NS-3的基本环境,这一方面我们就不赘述了。
当你装完后你会惊喜的发现,NS-3内置了OpenFlow模块!但这还需要编译模块。编译流程如下
In order to use the OpenFlowSwitch module, you must create and link the OFSID (OpenFlow Software Implementation Distribution) to ns-3. To do this:Obtain the OFSID code. An ns-3 specific OFSID branch is provided to ensure operation with ns-3. Use mercurial to download this branch and waf to build the library:
cd openflow From the “openflow” directory, run:
./waf build* Your OFSID is now built into a libopenflow.a library! To link to an ns-3 build with this OpenFlow switch module, run from the ns-3-dev (or whatever you have named your distribution):
$ ./waf configure --enable-examples --enable-tests --with-openflow=path/to/openflow* Under ---- Summary of optional NS-3 features: you should see:
"NS-3 OpenFlow Integration : enabled"
indicating the library has been linked to ns-3. Run:
$ ./waf build
to build ns-3 and activate the OpenFlowSwitch module in ns-3.
然后你就可以跑跑例程了
这是如此的令人激动的发现,然而当你深入他的文档和例程,你会疑惑万分?这东西怎么用呀?事实上,这个东西本来就没法用。经过调查与论证,这个OpenFlow模块止步于0.8版本,而且多年未更新,基本属于无法使用的状态。
这个时候我们真正的主角就登场了!
请看下一贴,ofswitch13登场