sdn控制器使用bgp协议 sdn控制器部署位置_git



1 Floodlight概述

Floodlight是目前主流的SDN控制器之一,它的稳定性、易用性已经得到SDN专业人士以及爱好者们的一致好评,并因其完全开源,这让SDN网络世界变得更加有活力。控制器作为SDN网络中的重要组成部分,能集中地灵活控制SDN网络,为核心网络及应用创新提供了良好的扩展平台,本文档主要介绍基于Java语言的开源SDN控制器Floodlight的安装部署。



2 安装前准备工作

如果不是专业人士,我们建议在虚拟机中搭建环境并安装。

Linux:本文基于Ubuntu12.04版本安装

  • 系统需求:Ubuntu 10.04(Natty)及以上版本(运行Ant1.8.1及以下版本)
  • 安装JDK,Ant。(可在Eclipse上安装)
# sudo apt-get install build-essential default-jdk ant python-dev eclipse

 

  • 安装图形化Eclipse(非必须)
  • 安装git

 

# sudo apt-get install git-core

or

# sudo apt-get install git

3 安装Floodlight

(1)从Github下载并编译Floodlight。

# git clone git://github.com/floodlight/floodlight.git

cd floodlight
git submodule init
git submodule init
git submodule update
ant

(2)运行Floodlight。

java -jar target/floodlight.jar

稍等一会Floodlight就会开始运行,并在控制台打印debug信息。

sdn控制器使用bgp协议 sdn控制器部署位置_数据库_02

稍等一会Floodlight就会开始运行,并在控制台打印debug信息。

如果Floodlight运行不正常可以查看Floodlight的主进程是否正在运行。

# ps -ef |grep floodlight

sdn控制器使用bgp协议 sdn控制器部署位置_git_03

(3)Eclipse设置
如果是桌面版带图形化界面的Ubuntu并且之前已经安装了Eclipse,那么我们就可以通过图形化界面的Eclipse运行、开发、配置Floodlight:

# ant eclipse

 

上述命令将创建多个文件:Floodlight.launch,Floodlight_junit.launch,classpath和.project。打开Eclipse软件,可以通过下面这些来设置新的Eclipse项目。

  • 打开eclipse创建一个新的工程
  • File -> Import -> General -> Existing Projects into Workspac ,点击下一步
  • 点击“Browse”。选择之前放置Floodlight的路径
  • 点击Floodlight
  • 点击“Finish”

现在就产生了一个Floodlight的Eclipse工程。由于我们是使用静态模块加载系统运行Floodlight,我们必须配置Eclipse来正确的运行Floodlight。创建Floodlight目标文件:

  • 点击Run->Run Configurations
  • 右击Java Application,选择 New
  • “Name”使用“FloodlightLaunch”
  • “Project”使用“Floodlight”
  • “Main”使用“net.floodlightcontroller.core.Main”
  • 点击“Apply”
  • 点击“Run”,Floodlight就开始运行了

(4)运行Floodlight后可以通过登录http://localhost:8080/ui/index.html使用Floodlight提供的web管理界面查看里面的信息,包括交换机、主机等等,因为我们没有接什么设备,页面没有什么信息。

sdn控制器使用bgp协议 sdn控制器部署位置_开发工具_04



4 配置Floodlight

Floodlight提供了两个配置文件:floodlightdefault.properties和learningswitch.properties,路径都位于floodlight/src/main/resources/。通过这两个配置文件可以查看Floodlight已经加载的子模块以及控制器的侦听端口、web端口,默认的侦听端口是6633,web端口是8080。如有必要用户可以自定义加载子模块和修改侦听端口,通过vi命令修改配置文件后,在Floodlight目录下执行ant编译后重启Floodlight即可。配置参数如下两图a)、图b)所示:

sdn控制器使用bgp协议 sdn控制器部署位置_sdn控制器使用bgp协议_05

图a)  floodlightdefault.properties配置信息

sdn控制器使用bgp协议 sdn控制器部署位置_git_06

图b)  learningswitch.properties配置信息



5 常用Floodlight命令

Floodlight将自己的API通过Rest Api的形式向外暴露,关于Rest Api,就是将程序的API封装成为通用的http GET/PUT的形式,这样的话无需关注程序实现细节,通过发送http请求即可完成API操作。所以用户可以通过Floodlight的Restful api来向Floodlight请求各种信息,包括交换机状态、能力、拓扑等。需要注意,通过Floodlight的Restful api返回的信息以json格式封装。REST Api信息用户访问http://www.projectfloodlight.org/floodlight/来获得。

(1)请求该控制器上所有的switch的DPID,可以参考如下命令,其中localhost:8080要换成控制器的ip和port。

# curl http://localhost:8080/wm/core/controller/switches/json

(2)加入流表项

# 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"}' http://localhost:8080/wm/staticflowentrypusher/json

(3)读取流表项

# curl http://localhost:8080/wm/staticflowentrypusher/list/all/json

注:这种方式是通过static flow pusher来获取流表项。

(4)删除流表项

# curl -X DELETE –d '{"name":"Open_vSwitch"}' http://localhost:8080/wm/staticflowentrypusher/json

假如要删除所有的流表项,使用如下命令:

# curl http://localhost:8080/wm/staticflowentrypusher /clear/<dpid>/json

6 Floodlight可兼容交换机其它常见操作同Open vSwitch。

下面列出了可以和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