【译】FloodLight官网开发者文档一
架构
Floodlight不仅仅是一个支持OpenFLow协议的控制器(FloodlightCOntroller),也是一个基于Floodlight控制器的应用集。 当用户在OpenFLow网络上运行各种应用程序的时候,Floodlight控制器实现了对OpenFLow网络的监控和查询功能。图0.0显示了Floodlight不同模块之间的关系,这些应用程序构建成java模块,和Floodlight一起编译。同时这些应用程序都是基于REST API的。
开始
安装指导
概述
基于Java的Floodlight可以用标准jak工具或ant编译运行,当然也可以有选择性的在Eclipse上运行。
准备工作
Linux:
- Ubuntu 10.04(Natty)及以上版本(运行Ant1.8.1及以下版本):
-
安装JDK,Ant。(可在eclipse上安装):
$sudo apt-get install build-essential default ant python-dev eclipse
Mac
- Mac系统x10.6及以上版本(低版本未测试)
- Cxode4.1或Xcode4.0.2
- JDK:只需要在终端输入命令:‘javac’便可安装
- Eclipse(非必须 )
下载编译
从Github下载并比编译Floodlight
$git clone git://github.com/floodlight/floodlight.git
$cd floodlight
$ant
运行Floodlight 如果java运行环境已经安装成功,就可以直接运行:
$java -jar target/floodlight.jar
Floodlight就会开始运行,并在控制台打印debug信息
Eclipse设置
通过Eclipse运行、开发、配置Floodlight:
$ant eclipse
上述命令将创建多个文件:Floodlight.launch,Floodlight_junit.launch,classpath和.project。通过这些设置eclipse工程
- 打开eclipse创建一个新的工程
- 文件->导入->常规->现有项目到工程中->下一步
- 点击“选择根目录”,点击“浏览”。选择之前放置Floodlight的父路径
- 点击Floodlight
- 点击“完成”
现在就产生了一个Floodlight的Eclipse工程。由于我们是使用静态模块加载系统运行Floodlight,我们必须配置eclipse来正确的运行Floodlight。 创建Floodlight目标文件:
- 点击运行->运行配置
- 右击java 应用->新建
- “Name”使用“FloodlightLaunch”
- “Project”使用“Floodlight”
- “Main”使用“net.floodlightcontroller.core.Main”
- 点击“应用”
创建一个虚拟网络
启动了Floodlight之后,就需要链接到一个OpenFlow的网络。Mininet是最好的网络虚拟工具之一。
- 下载Floodlight-vm机自启动并内嵌Mininet工具。
- 使用Vmware或者virtualbox打开Floodlight-vm,在启动之前,点击网络选项不要从导入虚拟机后的安装目录中运行脚本启动
- 登录(用户名是:floodlight没有密码)
-
既可以在使用Floodlight-vm开机自启动的Floodlight控制器也可以通过命令指定到远程的控制器,输入:
$sudo mn –controller=remote,ip=
,port=
可以通过ssh远程登陆到floodlight-vm虚拟机运行wireshark,监听eth0端口并用“of”协议过滤器过滤。
$ssh -X floodlight@<vm-ip>
$sudo wireshark
下一步
阅读完getstart文档之后,可以参阅floodlight开发文档,里面有很多实例和代码。
可兼容交换机
下面列出了可以和Floodlight控制器兼容的交换机
虚拟交换机
- Open vSwitch(OVS)
硬件交换机
- Arista 7050
- Brocade MLXe
- Brocade CER
- Brocade CES
- Dell S4810
- Dell Z9000
- Extreme Summit x440, x460, x670
- HP 3500, 3500yl, 5400zl, 6200yl, 6600, and 8200zl (the old-style L3 hardware match platform)
- HP V2 line cards in the 5400zl and 8200zl (the newer L2 hardware match platform)
- Huawei openflow-capable router platforms
- IBM 8264
- Juniper (MX, EX)
- NEC IP8800
- NEC PF5240
- NEC PF5820
- NetGear 7328SO
- NetGear 7352SO
- Pronto (3290, 3295, 3780) - runs the shipping pica8 software
可支持的拓扑结构
Floodlight现在在支持梁中锋不同的包转发应用,这两种应用具有不同的行为,并且向下图的拓扑结构一样运行:
- 在转发方面:在网络中的任意两个终端设备之间进行端到端的数据转发
内含OpenFLow网络孤岛(OpenFlow island):到同一OpenFlow网络孤岛中的任意一设备A发送数据包到设备B,转发模块会计算出A到B之间的最短路径。 内含非OpenFlow网络孤岛(non-OpenFlow island)的OpenFLow网络孤岛:每一个OpenFlow网络孤岛都可能有一个连接到非OpenFlow孤岛的链接。另外,如图3所示,OpenFlow和非OpenFlow网络孤岛之间不能构成环网 图1:Floodlight接入OpenFlow网络的例网拓扑 图2:Floodlight未接入OpenFlow网络的例网拓扑,OpenFlow网络孤岛1有两个到非OpenFlow网络孤岛的链接 图3:Floodlight未接入OpenFlow网络的例网拓扑,OpenFlow孤岛和非OpenFlow孤岛形成了一个环网,甚至每一个OpenFlow孤岛都有唯一一个连接到非OpenFlow孤岛的链接
- 当转发路径中超过指定的时间间隔(默认5秒),通过转发超时安装路径。
- 自我学习的交换机:一个简单的二层自我学习交换机:
① 在任何数量的OpenFlow网络孤岛中使用,甚至在非OpenFlow的2层网络孤岛中。 ② 不能在环路网路中的网络孤岛中工作,也不能在孤岛形成的环网中工作 ③ 数据转发效率远高于其他方法 l 另外,Floodlight也提供一个Static Flow Entry Pusher应用和一个Circuit Pusher应用,允许用户主动安装转发路径(proactively install forwarding paths)的行为 ① Static Flow Entry Pusher允许修改交换机流表项,从而创造由用户根据交换机端口明确选择的转发路径 ② CircuitPusher是基于Static Flow Entry Pusher,Device Manager,Routing services的RestAPI,在单个OpenFlow孤岛中建立一个最短路径流
术语“孤岛”和“集群”是可以互换使用的。一个OpenFlow孤岛/集群就是OpenFlow交换机连接到其中任何设备的集合。类似的,非OpenFlow的孤岛/集群就是任何连接到非OpenFlow交换机的设备。
发布版
发行说明
Floodlight v0.9发行说明
发布日期:2012年10月
概述
Floodlighr v0.9包含了控制器新的RestAPI,新的应用,漏洞修复,新框架测试等
更新
REST APIs 显示如何进行外部连接,通过BDDP发现多跳链路而不是LLDP
由于处理错误的API并不在发布包中,但是可以通过纯净版的Floodlight下载页面或者在github上的Floodlight-master下载获得。
· /wm/topology/external-links/json
显示在LLDP数据包中发现的直连(DIRECT)和隧道链接(TUNNEL)
· /wm/topology/links/json
给OpenStack/quantum插件的虚拟网络过滤器添加新的API,以显示所有的创建的虚拟网络名,Guid,网关和主机
· /quantum/v1.0/tenants/
- Circuit Pusher,一个基于Python的REST应用接口,使用RESTAPI来设置两台IP主机的流。包括新的REST APIs Fi
最新评论