目录
架构..........................................................................................................................................3
开始..........................................................................................................................................3
安装指导...........................................................................................................................3
概述...........................................................................................................................3
准备工作...................................................................................................................3
下载编译...................................................................................................................3
运行 Floodlight.........................................................................................................4
Eclipse 设置..............................................................................................................4
虚拟一个网络............................................................................................................4
下一步.......................................................................................................................5
可兼容交换机...................................................................................................................5
虚拟交换机................................................................................................................5
硬件交换机................................................................................................................5
可支持的拓扑结构............................................................................................................6
发布版......................................................................................................................................8
发行说明...........................................................................................................................8
Floodlight v0.9 发行说明..........................................................................................8
概述...........................................................................................................................8
新添加的东西............................................................................................................8
应用...........................................................................................................................9
用户文档..................................................................................................................................9
控制器...............................................................................................................................9
Configuration HOWTO.............................................................................................9
监听地址和端口配置..............................................................................................10
Floodlight REST API................................................................................................11
应用.........................................................................................................................18
开发者文档............................................................................................................................28
模块描述及 javadoc.......................................................................................................28
控制器模块.....................................................................................................................28
FloodLight 目前已经实现的控制器模块.................................................................28
FloodlightProvider.................................................................................................28
DeviceManagerImpl..............................................................................................30
LinkDiscoveryManager (Dev).................................................................................32
TopologyService.....................................................................................................33
RestApiServer.........................................................................................................34
ThreadPool.............................................................................................................35
MemoryStorageSource..........................................................................................36
Flow Cache.............................................................................................................36
Packet Streamer.....................................................................................................37
应用模块.........................................................................................................................41
虚拟网络过滤器(Quantum 插件)......................................................................41
1
转发.........................................................................................................................43
防火墙.....................................................................................................................44
Port Down Reconciliation......................................................................................49
模块加载系统..........................................................................................................50
Javadoc entry..........................................................................................................55
添加模块.........................................................................................................................57
创建一个监听模块..................................................................................................57
Mininet 虚拟网络连接 floodlight...........................................................................63
添加模块服务.................................................................................................................63
创建类.....................................................................................................................65
添加 rest API...........................................................................................................70
Floodlight rest API 开发.................................................................................................76
Floodlight-Test........................................................................................................77
Unit 测试.................................................................................................................85
控制器基准配置.............................................................................................................86
基准配置.................................................................................................................86
Cbench (New).........................................................................................................87
怎样用 floodlight 满足服务质量.............................................................................88
2
架构
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(非必须 )
3
下载编译
从 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”
点击“应用”
4
虚拟一个网络
启动了 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@
$sudo wireshark
下一步
阅读完 getstart 文档之后,可以参阅 floodlight 开发文档,里面有很多实例和代码。
可兼容交换机
下面列出了可以和 Floodlight 控制器兼容的交换机
虚拟交换机
Open vSwitch(OVS)
硬件交换机
Arista 7050
Brocade MLXe
5
Brocade CER
Brocade CES
Extreme Summit x440, x460, x670
Dell S4810
Dell Z9000
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
NEC IP8800
NEC PF5240
NEC PF5820
NetGear 7328SO
NetGear 7352SO
Pronto (3290, 3295, 3780) - runs the shipping pica8 software
IBM 8264
Juniper (MX, EX)
可支持的拓扑结构
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 未接入
6
OpenFlow 网络的例网拓扑,OpenFlow 孤岛和非 OpenFlow 孤岛形成了一个环网,甚至每一个 OpenFlow 孤岛
都有唯一一个连接到非 OpenFlow 孤岛的链接
当转发路径中超过指定的时间间隔(默认 5 秒),通过转发超时安装路径。
自我学习的交换机:一个简单的二层自我学习交换机:
1 在任何数量的 OpenFlow 网络孤岛中使用,甚至在非 OpenFlow 的 2 层网络孤岛中。
2 不能在环路网路中的网络孤岛中工作,也不能在孤岛形成的环网中工作
3 数据转发效率远高于其他方法
另外,Floodlight 也提供一个 Static Flow Entry Pusher 应用和一个 Circuit Pusher 应用,允
许用户主动安装转发路径(proactively install forwarding paths)的行为
1 Static Flow Entry Pusher 允许修改交换机流表项,从而创造由用户根据交换机端口明确
选择的转发路径
2 CircuitPusher 是基于 Static Flow Entry Pusher,Device Manager,Routing services 的
RestAPI,在单个 OpenFlow 孤岛中建立一个最短路径流
*术语“孤岛”和“集群”是可以互换使用的。一个 OpenFlow 孤岛/集群就是 OpenFlow 交换机连接到
其中任何设备的集合。类似的,非 OpenFlow 的孤岛/集群就是任何连接到非 OpenFlow 交换机的
设备。
发布版
发行说明
Floodlight v0.9 发行说明
发布日期:2012 年 10 月
概述
Floodlighr v0.9 包含了控制器新的 RestAPI,新的应用,漏洞修复,新框架测试等
7
新添加的东西
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//networks
应用
Circuit Pusher,一个基于 Python 的 REST 应用接口,使用 RESTAPI 来设置两台 IP 主机的流。
包括新的 REST APIs
Firewall,一个 java 应用模块,提供基于控制器的无状态 ACL 支持
用户文档
控制器
Floodlight 不仅仅是一个支持 OpenFLow 协议的控制器(FloodlightCOntroller),也是一个
基于 Floodlight 控制器的应用集。
当用户在 OpenFLow 网络上运行各种应用程序的时候,Floodlight 控制器实现了对 OpenFLow 网
络的监控和查询功能。图 0.0 显示了 Floodlight 不同模块之间的关系,这些应用程序构建成 java
模块,和 Floodlight 一起编译。同时这些应用程序都是基于 REST API 的。
当运行 floodlight 时,控制器和一组 java 应用模块(这些会在 floodlight 属性文件中载入)
开始运行。REST API 通过 REST 端口(默认 8080)对所有的运行中的模块开放。
8