logo资料库

Floodlight开发者文档(译文).pdf

第1页 / 共93页
第2页 / 共93页
第3页 / 共93页
第4页 / 共93页
第5页 / 共93页
第6页 / 共93页
第7页 / 共93页
第8页 / 共93页
资料共93页,剩余部分请下载后查看
架构
开始
安装指导
概述
准备工作
下载编译
运行Floodlight
Eclipse设置
虚拟一个网络
下一步
可兼容交换机
虚拟交换机
硬件交换机
可支持的拓扑结构
发布版
发行说明
Floodlight v0.9发行说明
概述
新添加的东西
应用
用户文档
控制器
Configuration HOWTO
监听地址和端口配置
Floodlight REST API
应用
REST应用
应用模块
OpenStack
开发者文档
模块描述及javadoc
控制器模块
FloodLight目前已经实现的控制器模块
FloodlightProvider
DeviceManagerImpl
LinkDiscoveryManager (Dev)
TopologyService
RestApiServer
ThreadPool
MemoryStorageSource
Flow Cache
Packet Streamer
应用模块
虚拟网络过滤器(Quantum插件)
转发
防火墙
Port Down Reconciliation
模块加载系统
Javadoc entry
添加模块
创建一个监听模块
Mininet虚拟网络连接floodlight
添加模块服务
创建类
添加rest API
Floodlight rest API开发
Floodlight-Test
Unit测试
控制器基准配置
基准配置
Cbench (New)
怎样用floodlight满足服务质量
目录 架构..........................................................................................................................................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
分享到:
收藏