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登场
-
openflow应用如此灵活,好像可以用在校园网上欸
-
此回复已被删除!
-
@pencil 昂,用在团队的交换机上可以抓包分析你有没有连团队的网打游戏呀