




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Floodlight的介绍、安装及使用一、Floodlight简介Floodlight 是一个企业级的,Apache许可,基于Java的的OpenFlow控制器,它的开发者社区由一批从事大交换网络的工程师们支持。1.2 Floodlight的特点下面介绍Floodlight的一些特性1.2.1模块化可以根据需要加载相应的模块。目前含有的主要模块:net.floodlightcontroller.core.FloodlightProvidernet.floodlightcontroller.storage.memory.MemoryStorageSernal.DeviceManagerIernal.LinkDiscoveryManagernet.floodlightcontroller.topology.TopologyManagernet.floodlightcontroller.forwarding.Forwardingnet.floodlightcontroller.flowcache.FlowReconcileManagernet.floodlightcontroller.core.OFMessageFilterManagernet.floodlightcontroller.staticflowentry.StaticFlowEntryPushernet.floodlightcontroller.perfmon.PktInProcessingTimenet.floodlightcontroller.ui.web.StaticWebRoutablenet.floodlightcontroller.hub.Hubnet.floodlightcontroller.jython.JythonDebugInterface 这些信息在Floodlight启动时可以看到。1.2.2模块化进阶Floodlight的模块化结构,可以选择Floodlight启动时候所加载的模块,也可以加入你自己定义的功能的模块。启动Floodlight的时候通过-cf参数可以指定模块的配置(也就是让Floodlight装载哪些模块)默认的有一份配置文件,在src/main/resources/perties,可以看看它的内容,可以配置默认启动的模块和某些默认端口,对于配置文件的优先级,有以下规则:The file specified by using the -cf optionThe config/perties file if it existsThe perties file built into the jar (under src/main/resources)1.2.3 支持OpenStack1.2.4 Static flow pusher以及python API1.3 Floodlight的工作流程FloodlightProvider作为核心模块,负责将收到的OF Packet转换为一个个事件,而其他模块向FloodlightProvider进行注册,注册后成为一个service,然后就可以处理相应的事件。二、Floodlight安装Floodlight是以java为基础,设计为与标准的JDK工具和ant运行,而且可以有选择的在Eclipse中运行。2.1准备条件2.1.1 Linuxl Ubuntu 10.04 (Natty) or higher. (Has been run with Ubuntu 10.04 with Ant versions 1.8.1 or lower).l 安装 JDK,Ant。可以选择安装eclipse 但是它不是一定要用得到的。执行下面命令sudo apt-get install build-essential default-jdk ant python-dev eclipse注:eclopse可以不安装。2.1.2 Macl Mac OS X 10.6 or higher: older versions may work but have not been testedl Xcode 4.1 (for 10.7 Lion) or Xcode 4.0.2 (for 10.6 Snow Leopard) (includes gcc, make, git, etc.)l Java Development Kit: to install, just type javac in a Terminal; this should automatically install the JDK if it isnt already presentl Eclipse (optional)2.2下载安装Floodlight从Github下载和build都很简单2.2.1安装gitrootubuntu229:# apt-get install git-coreorrootubuntu229:# apt-get install git2.2.2安装floodlight官网指导git clone git://floodlight/floodlight.gitcd floodlightgit checkout stableant;实际操作git clone git://floodlight/floodlight.gitcd floodlightant注:/p.telephony.freeswitch.user/529432.2.3运行Floodlight假如java在你的路径中,可以直接运行有ant产生的floodlight.jar文件java -jar target/floodlight.jarFloodlight运行并将调试信息打到屏幕上。查看Floodlight可以控制日志级别,默认情况下,Floodlight显示所有的日志级别。为了控制日志级别,可以通过一个JVM参数,操作如下rootubuntu229:/floodlight# java -Dlogback.configurationFile=logback.xml -jar ./target/floodlight.jar注:这个设置显示Info信息,不显示debug信息2.2.4设置EclipseIts also possible to setup, develop and run Floodlight through Eclipse. Rather than setting up projects manually, its easily to use the Eclipse ant target.rootubuntu229:/floodlight# ant eclipse这将创建几个文件,“:Floodlight.launch,Floodlight_junit.launch,类路径中,和项目。从这些,你可以设置一个新的Eclipse项目。 Open eclipse and create a new workspace File - Import - General - Existing Projects into Workspace. Then click “Next”. From “Select root directory” click “Browse”. Select the parent directory where you placed floodlight earlier. Check the box for “Floodlight”. No other Projects should be present and none should be selected. Click Finish.现在Floodlight有一个工作的Eclipse项目。通过Eclipse,也可以直接运行项目。由于我们使用动态模块加载系统运行Floodlight,我们必须以正确的方式配置Eclipse来启动它。创建FloodlightLaunch任务: Click Run-Run Configurations Right Click Java Application-New For Name use FloodlightLaunch For Project use Floodlight For Main use net.floodlightcontroller.core.Main Click Apply三、Floodlight操作Floodlight可以配置载入不同的模块,来应对不同的应用程序。3.1 Floodlight控制器3.1.1环境说明29安装floodlight,56安装OpenvSwitch,floodlight做OpenvSwitch的控制器。3.1.2详细步骤29安装运行floodlight,方法同上。56安装运行OpenvSwitch,并依次作如下操作:rootbogon:# ovs-vsctl add-br br0rootbogon:# ovs-vsctl set-controller br0 tcp:29:6633rootbogon:# ovs-vsctl show05d9e9e9-cb3b-4e7d-900e-e85926e6b7d3 Bridge br0 Controller tcp:29:6633 is_connected: true Port br0 Interface br0 type: internalrootbogon:# ovs-controller tcp:29:6633 -detach检查情况可见29和56连接起来了。并且可以注意到switch156上连接的是TCP,而控制器229上连接的是TCP6。Floodlight REST API查看rootubuntu229:# curl 29:8080/wm/core/controller/switches/json actions:4095,dpid:00:00:4a:66:2a:dd:9d:41,attributes:supportsOfppFlood:true,FastWildcards:4194303,DescriptionData:length:1056,manufacturerDescription:Nicira, Inc.,hardwareDescription:Open vSwitch,softwareDescription:1.7.1,serialNumber:None,datapathDescription:None,supportsOfppTable:true,role:null,ports:name:br0,state:1,hardwareAddress:4a:66:2a:dd:9d:41,portNumber:65534,config:1,currentFeatures:0,advertisedFeatures:0,supportedFeatures:0,peerFeatures:0,buffers:256,tables:-1,capabilities:199,inetAddress:/:23439,connectedSince:1352696543018注:这里可以查出控制器连接的switch的dpid(红色字体),这个值在后面控制器修改switch的流表项中会用到。3.2 Floodlight启动试验 其实启动Floodlight实际上是用的整合Floodlight程序内的配置规则。3.2.1环境说明vSwitch:56和59Controller:293.2.2配置修改前安装配置方法同上229上启动floodlightcd /root/floodlightjava -jar target/floodlight.jar156和159上都执行如下命令ovs-controller tcp:29:6633查看连接情况rootbogon:# netstat -npt |grep 6633 /56tcp 0 0 56:41975 29:6633 ESTABLISHED 5608/ovs-vswitchdrootbogon159:# netstat -npt |grep 6633tcp 0 0 59:40339 29:6633 ESTABLISHED 7107/ovs-vswitchdrootubuntu229:# netstat -npt |grep 6633tcp6 0 0 29:6633 :37587 ESTABLISHED 20787/java tcp6 0 0 29:6633 :37637 ESTABLISHED 20787/java 156和159互Ping,能够ping通3.2.3配置修改后然后在floodlight/src/main/resources/perties这个文件中去掉net.floodlightcontroller.forwarding.Forwarding,最后在Floodlight目录下执行ant,从新整合。(当然也可以使用-cf指定配置文件)步骤依次如下/修改文件rootubuntu229:# vi floodlight/src/main/resources/perties/buildcd floodlightant/启动java -jar target/floodlight.jar最后的操作同3.2.2这时发现156和159互ping,发现ping不通。分析:net.floodlightcontroller.forwarding.Forwarding这个模块,这个是一个二层交换机的模块,配置修改前,因为加载了这个模块,所以156和159能够相互通信;修改配置后,去掉了这个二层交换机的模块,156和159之前没有连接的桥,所以无法通信。3.3 Floodlight流表操作在使用了OpenvSwitch作为DataPath的环境下,OpenvSwitch提供了工具dpctl以及vsctl可以用来直接与DataPath进行交互,向DataPath中读取或者写入流表。但是这种方式忽略了controller,所以,这里我们引入Floodlight的static flow pusher机制。3.3.1操作流程简单来说,Floodlight将自己的API通过Rest Api的形式向外暴露,关于Rest Api,就是讲程序的API封装成为通用的http GET/PUT的形式,这样的话无需关注程序实现细节,通过发送http请求即可完成API操作。 所以,我们可以通过Floodlight的Restful api来向Floodlight请求各种信息,包括交换机状态,能力,拓扑等等,而static flow pusher这套机制则是通过Restful api来进行流表的操作,包括添加,删除流表等等。 需要注意:通过Floodlight的Restful api返回的信息是以json格式封装的;Floodlight中的配置、系统、流表信息是存于内存中的(通过Rest api可以知道),以后Floodlight可能会将这个信息放于独立的数据库而不是内存中。3.3.2流表试验 Restful api形式这里用Restful api形式进行操作加入流表项rootubuntu229:# curl -d switch:00:00:de:c1:43:9b:64:46, name:Open_vSwitch, cookie:0, priority:32768, ingress-port:1,active:true, actions:output=2 29:8080/wm/staticflowentrypusher/jsonstatus : Entry pushed注:假如添加多个流表项,每个流表项的名字不能一样。红色字体代表的是dpid,获取命令见3.1.2读取流表项rootubuntu229:# curl 29:8080/wm/staticflowentrypusher/list/all/json 00:00:4a:66:2a:dd:9d:41:Open_vSwitch:actions:port:1,maxLength:32767,length:8,type:OUTPUT,lengthU:8,priority:-32768,bufferId:-1,cookie:45035996679627708,idleTimeout:0,hardTimeout:0,flags:0,match:dataLayerDestination:00:00:00:00:00:00,dataLayerSource:00:00:00:00:00:00,dataLayerType:0x0000,dataLayerVirtualLan:-1,dataLayerVirtualLanPriorityCodePoint:0,inputPort:1,networkDestination:,networkDestinationMaskLen:0,networkProtocol:0,networkSource:,networkSourceMaskLen:0,networkTypeOfService:0,transportDestination:0,transportSource:0,wildcards:4194302,command:0,outPort:-1,length:80,type:FLOW_MOD,version:1,lengthU:80,xid:0注:这种方式是通过static flow pusher来获取流表项。在156上查看rootbogon:# ovs-ofctl dump-flows br0NXST_FLOW reply (xid=0x4): cookie=0xa000001831e3bc, duration=33.107s, table=0, n_packets=0, n_bytes=0, idle_age=33, in_port=1 actions=output:2可见控制器已经把规则写到了switch的流表中删除流表项rootubuntu229:# curl -X DELETE -d name:Open_vSwitch 29:8080/wm/staticflowentrypusher/jsonstatus : Entry Open_vSwitch deleted假如要删除所有的流表项,使用如下命令curl 29:8080/wm/staticflowentrypusher /clear/json DataPath形式所谓DataPath工具,就是在DataPath开发的时候,作为控制DataPath的一套工具。实际上在OpenFlow环境中控制DataPath是应该由controller来实现的。但为了调试等方便还是会提供直接控制DataPath的工具。举例来说,controller与DataPath交互默认是6633端口,而OpenvSwitch提供的dpctl等工具与OpenvSwitch交互的端口是6634.3.4 Floodlight多switch 环境和3.2的Floodlight启动试验环境一样,这里只是验证一台控制器如何去控制两台switch在229上用curl 29:8080/wm/core/controller/switches/json命令查看dpid159:00:00:f2:29:19:bd:a1:47156:00:00:4a:66:2a:dd:9d:41给159添加流表rootubuntu229:# curl -d switch:00:00:f2:29:19:bd:a1:47, name:Open_vSwitch, cookie:0, priority:32768, ingress-port:1,active:true, actions:output=1 29:8080/wm/staticflowentrypusher/jsonstatus : Entry pushed给156添加流表rootubuntu229:# curl -d switch:00:00:4a:66:2a:dd:9d:41, name:Open_vSwitch, cookie:0, priority:32768, ingress-port:2,active:true, actions:output=2 29:8080/wm/staticflowentrypusher/jsonstatus : Entry pushed验证rootbogon159:# ovs-ofctl dump-flows br0NXST_FLOW reply (xid=0x4): cookie=0xa000001831e3bc, duration=254.481s, table=0, n_packets=0, n_bytes=0, idle_age=254, in_port=1 actions=output:1rootbogon:# ovs-ofctl dump-flows br0NXST_FLOW reply (xid=0x4): cookie=0xa000001831e3bc, duration=116.335s, table=0, n_packets=0, n_bytes=0, idle_age=116, in_port=2 actions=output:23.5 Floodlight多controller3.5.1相同款控制端一个OpenFlow网络中可以有多个同一号的控制端,比如,一个OpenFlow网络中同时有多个Floodlight存在(这一点是OpenFlow 1.2标准定义)环境说明Controller:59,29都是floodlight控制器Switch:56 OpenvSwitch详细步骤在159和229上安装floodlight控制器,在156上安装OpenvSwitch,方法同上。把控制器和switch连接起来,方法同3.1,不同的是156上需要建立两个网桥,每个桥上设置一个控制器,因为同一个桥上只能设置一个控制器,结果如下rootbogon:# ovs-vsctl show05d9e9e9-cb3b-4e7d-900e-e85926e6b7d3 Bridge br1 Controller tcp:59:6633 is_connected: true Port br1 Interface br1 type: internal Bridge br0 Controller tcp:29:6633 is_connected: true Port br0 Interface br0 type: internal查看连接状态rootbogon:# netstat -npt |grep 6633tcp 0 0 56:58718 59:6633 ESTABLISHED 5608/ovs-vswitchdtcp 0 0 56:42331 29:6633 ESTABLISHED 5608/ovs-vswitchdrootubuntu229:# netstat -npt |grep 6633tcp6 0 0 29:6633 :48915 ESTABLISHED 24492/java rootbogon159:# netstat -npt |grep 6633tcp6 0 0 59:6633 56:58718 ESTABLISHED 20823/java验证229上给156添加流表项rootubuntu229:# curl -d switch:00:00:4a:66:2a:dd:9d:41, name:Open_vSwitch, cookie:0, priority:32768, ingress-port:1,active:true, actions:output=1 29:8080/wm/staticflowentrypusher/jsonstatus : Entry pushed在156上用curl 59:8080/wm/core/controller/switches/json命令查看dpid:00:00:72:3c:41:9d:e1:41159上给156添加流表项rootbogon159:# curl -d switch:00:00:72:3c:41:9d:e1:41, name:Open_vSwitch, cookie:0, priority:32768, ingress-port:2,active:true, actions:output=2 59:8080/wm/staticflowentrypusher/jsonstatus : Entry pushed156上查看结果rootbogon:# ovs-ofctl dump-flows br0 /br0NXST_FLOW reply (xid=0x4): cookie=0xa000001831e3bc, duration=768.467s, table=0, n_packets=0, n_bytes=0, idle_age=768, in_port=1 actions=output:1rootbogon:# ovs-ofctl dump-flows br1 /br1NXST_FLOW reply (xid=0x4): cookie=0xa000001831e3bc, duration=39.169s, table=0, n_packets=0, n_bytes=0, idle_age=39, in_port=2 actions=output:2结论:由上述试验可以说明,同一个网络中,switch可以被多个相同的controller控制,之间相互不影响,因为每一个controller都被设置在一个bridge上,不可以在同一个bridge上设置多个controller。3.5.2不同款控制端一个OpenFlow网络中可以有多个同一号的控制端,比如一个OpenFlow网络中同时有Floodlight和POX,它们之间遵循OpenFlow1.2标准多控制端的规定四、参考文档/tag/floodlight /display/floodlightcontroller/Installation+Guide /casado/of-sw.htmlRestful api:/display/floodlightcontrolle
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人一自然课件
- 预防心脏骤停的核心护理措施纲要
- 手机怎么制作年终总结
- 新手如何操作电脑
- 门机班组工作总结
- 通讯维护半年度工作总结
- 试用期护士工作总结
- 慢性胃炎的护理业务查房
- 2025年股权质押合同5篇
- 护理病程录书写规范
- DB64-266-2018:建筑工程资料管理规程-401-450
- 《中国脓毒血症指南》课件
- 2025年高速公路收费员岗位技能及理论知识考试题与答案
- 员工离职单模板1
- 三减三健课件
- 人教版初中美术八年级上册 第一单元 第1课 造型的表现力 教案
- 2024年国考真题及答案
- 人音版小学音乐《法国号》示范说课稿课件
- 成吉思汗课件
- 素养与情操-美术鉴赏的意义
- 2024年保育员考试题库加解析答案
评论
0/150
提交评论