Floodlight+Mininet搭建OpenFlow(三):Floodlight进阶

本节主要是关于Floodlight的深入学习。

在开始以前,请确定已经熟悉了前两节的内容,本文将会略过一些基本的命令和操作。

PS,开始之前我看了一下networkstatic.net上的关于OpenFlow的内容,发现作者的实验思路和我的类似,呵呵,只是平台不一样,这里我也会提到一些不同的地方,对比学习以后,可能收获会更大。

首先补充一下DataPath的概念,OpenFlow就是控制和数据转发分离,而控制端,就叫做Controller Path,比如floodlight等;负责转发数据的数据转发端,就叫做DataPath,也就是支持OpenFlow的硬件或者软件交换机Switch。

Floodlight进阶学习:

具体的了解Floodlight,可以先参考http://opennetsummit.org/talks/ONS2012/sherwood-mon-floodlight.pdf

这里详细列举几点:

1)模块化

,可以根据需要加载相应的模块。目前含有的主要模块:

net.floodlightcontroller.core.FloodlightProvider
net.floodlightcontroller.storage.memory.MemoryStorageSource
net.floodlightcontroller.devicemanager.internal.DeviceManagerImpl
net.floodlightcontroller.linkdiscovery.internal.LinkDiscoveryManager
net.floodlightcontroller.topology.TopologyManager
net.floodlightcontroller.forwarding.Forwarding
net.floodlightcontroller.flowcache.FlowReconcileManager
net.floodlightcontroller.core.OFMessageFilterManager
net.floodlightcontroller.staticflowentry.StaticFlowEntryPusher
net.floodlightcontroller.perfmon.PktInProcessingTime
net.floodlightcontroller.ui.web.StaticWebRoutable
net.floodlightcontroller.hub.Hub
net.floodlightcontroller.jython.JythonDebugInterface

这些信息在Floodlight启动时可以看到。那么,Floodlight的工作流程是这样的:

FloodlightProvider作为核心模块,负责将收到的OF Packet转换为一个个事件,而其他模块向FloodlightProvider进行注册,注册后成为一个service,然后就可以处理相应的事件。

各个主要模块的作用如下图:

2)模块化进阶

熟悉NOX的就知道,NOX只是作为一个平台,各种基于OF的功能都是在NOX上作为一个APP实现。那么,Floodlight的模块化结构,也支持这种使用方式,也就是说,你可以选择Floodlight启动时候所加载的模块,也可以加入你自己定义的功能的模块。Floodlight的功能,是取决于你的。那么如何操作,如下:

启动Floodlight的时候通过–cf参数可以指定模块的配置(也就是让Floodlight装载哪些模块)

默认的有一份配置文件,在src/main/resources/floodlightdefault.properties,可以看看它的内容,对于配置文件的优先级,有以下规则:

The file specified by using the -cf option
The config/floodlight.properties file if it exists
The floodlightdefault.properties file built into the jar (under src/main/resources)

那么,我们在前面以

sudo java -jar floodlight.jar

启动Floodlight实际上是用的整合Floodlight程序内的配置规则。

让我们来做个实验:在前面的实验中,mininet默认创建的拓扑(sudo mn)实际上执行pingall是能够互相Ping通的,这是因为Floodlight在启动的时候载入了net.floodlightcontroller.forwarding.Forwarding这个模块,这个是一个二层交换机的模块,我们去掉他,在配置文件中去掉这一项,然后再Floodlight目录下执行ant,从新整合。(当然也可以使用–cf指定配置文件)。

随后启动Floodlight,启动mininet,创建默认拓扑,此时执行pingall发现host间就无法相互ping通了。此时怎么办呢,别着急,慢慢来。下一节会讲。这个环境先放在这里。

3)OpenStack支持

这个请参考相应文档。

http://floodlight.openflowhub.org/quantum-and-openstack/

https://github.com/floodlight/quantum-restproxy

4)Static flow pusher以及python API

将会在下一节中讲到。

最后,以一张图进行一个总结,部分未涉及的内容下部分中讲。


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/sdn-guide/14884.html/
分享到:
条评论

登录后才可以评论

Jerry 发表于15-11-16
0