因为一般直接NS3官网下载安装的NS3不自带openflow模块,需要自己安装的,现在我把过程写一下
官网其实有相关的英文安装过程,如下:http://www.nsnam.org/docs/release/3.17/models/html/openflow-switch.html
本人所做的是在Ubuntu 13.04和ns-3.17的环境下的。
安装过程如下:
一. 获取OFSID(The OpenFlow software implementation distribution )代码。使用 mercurial 下载并编译在目录中:
PS:为了下面安装过程不出错最好安装在“ns-allinone-3.17/ns-3.17/”目录下,而且避免下次寻找,毕竟他只是ns-3.17的一个模块
$ hg clone http://code.nsnam.org/openflow
$ cd openflow
显示如下:
二. 在openflow目录中,运行::
$ ./waf configure
$ ./waf build
显示如下:
Waf: Entering directory `/home/roger/openflow/build'
[ 1/58] cc: lib/command-line.c -> build/default/lib/command-line_1.o
[ 2/58] cc: lib/csum.c -> build/default/lib/csum_1.o
[ 4/58] cc: lib/dhcp.c -> build/default/lib/dhcp_1.o
[ 3/58] cc: lib/daemon.c -> build/default/lib/daemon_1.o
[ 5/58] cc: lib/dhcp-client.c -> build/default/lib/dhcp-client_1.o
。。。。
[56/58] cc: switch/table-hash.c -> build/default/switch/table-hash_1.o
[57/58] cc: switch/table-linear.c -> build/default/switch/table-linear_1.o
[58/58] static_link: build/default/lib/command-line_1.o build/default/lib/。。。。。。
Waf: Leaving directory `/home/roger/openflow/build'
'build' finished successfully (4.114s)
三. OFSID现在已经建进libopenflow.a库,为了链接OpenFlow switch module到ns-3 bulid中还需要在ns-3.17中运行:
$ ./waf configure --enable-examples --enable-tests --enable-mpi --with-openflow=/home/roger/ns-allinone-3.17/ns-3.17/openflow
PS:因为此处官网使用的是:./waf configure --enable-examples --enable-tests --with-openflow=path/to/openflow
你在使用中会发现出错的,所以需要把openflow的目录写详细
这其中的--enable-sudo是使 Use sudo to set suid bit enable -
--enable-mpi是使MPI Support enable
--with-openflow是使NS-3 OpenFlow Integration enable
结果显示如下:
上述表明库已经链接到ns-3
四. 构建ns-3,并触发ns-3中的OpenflowSwitch模块,运行:
$ ./waf build
显示如下:
。。。
[2101/2103] cxx: src/tap-bridge/model/tap-creator.cc -> build/src/tap-bridge/model/tap-creator.cc.4.o
[2102/2103] cxx: src/tap-bridge/model/tap-encode-decode.cc -> build/src/tap-bridge/model/tap-encode-decode.cc.4.o
[2103/2103] cxxprogram: build/src/tap-bridge/model/tap-creator.cc.4.o build/src/tap-bridge/model/tap-encode-decode.cc.4.o -> build/src/tap-bridge/ns3.17-tap-creator-debug
Waf: Leaving directory `/home/roger/ns-allinone-3.17/ns-3.17/build'
'build' finished successfully (20m52.990s)
Modules built:
antenna aodv applications
bridge buildings config-store
core csma csma-layout
dsdv dsr emu
energy fd-net-device flow-monitor
internet lte mesh
mobility mpi netanim (no Python)
network nix-vector-routing olsr
openflow (no Python) point-to-point point-to-point-layout
propagation spectrum stats
tap-bridge test (no Python) tools
topology-read uan virtual-net-device
visualizer wifi wimax
Modules not built (see ns-3 tutorial for explanation):
brite click
可见ns-3中的Openflow模块已经安装好了(和前一篇Blog相比)。
五. 在一个简单的例子中证明其用法:
$ ./waf --run openflow-switch
或者你也可以用下述命令看详细记录:
$ ./waf --run "openflow-switch -v"
显示如下:(我使用的是前者)
六. 当然你也可以通过一个测试组件测试:
$ ./test.py --suite=openflow