mininet floodlight 搭建SDN环境

在安装mininet之前,先介绍一下我对SDN的理解

借用Floodlight主页的图,SDN的整体框架如下图:

上层应用程序制定路由规则,通过北向API,将路由规则传输给floodlight;floodlight控制器,通过openflow协议与下层的Switch通信,传递路由规则,openflow协议是南向API的一种实现;目前openflow已经成为事实上的南向API标准协议,而北向API还没有统一的标准,每个控制器都有自己的一套API,不过未来的走向应该是REST API吧…

这样子就把交换机的路由设计从设备提供商解离了出来,让交换机的使用者可以DIY路由规则,进而控制整个局域网!

Mininet 是一个轻量级软件定义网络和测试平台;它采用轻量级的虚拟化技术使一个单一的系统看起来像一个完整的网络运行想过的内核系统和用户代码,也可简单理解为 SDN 网络系统中的一种基于进程虚拟化平台,它支持 OpenFlow、OpenvSwith 等各种协议,Mininet 也可以模拟一个完整的网络主机、链接和交换机在同一台计算机上且有助于互动开发、测试和演示,尤其是那些使用 OpenFlow 和 SDN 技术;同时也可将此进程虚拟化的平台下代码迁移到真实的环境中。

The Floodlight Open SDN Controller is an enterprise-class, Apache-licensed, Java-based OpenFlow Controller. It is supported by a community of developers including a number of engineers from Big Switch Networks.

回到主题,开始安装mininet和floodlight,搭建SDN的测试环境!

安装mininet

  1. git clone git://github.com/mininet/mininet
  2. cd mininet
  3. git checkout 2.2.0
  4. cd ..
  5. mininet/util/install.sh -a
    (这一步会下载很多文件,时间会比较长,然后就可以运行mn了)

安装floodlight

  1. git clone git://github.com/floodlight/floodlight.git
  2. cd floodlight/
  3. ant

运行floodlight

  1. cd floodlight/
  2. java -jar target/floodlight.jar
  3. 打开 http://localhost:8080/ui/index.html 即可看到floodlight的web界面

运行mininet

sudo mn –controller=remote,ip=IP,port=6653

例如 floodlight 的IP地址为10.17.11.23,则
sudo mn --controller=remote,ip=10.17.11.23,port=6653
连接成功之后,在http://localhost:8080/ui/index.html 即可看到hosts和switch的详细信息

为了方便在switch端测试,mininet开发了一个dpctl工具,可以绕过controller直接控制switch的flow规则,主要命令包括:

1. dpctl dump-flows tcp:127.0.0.1:6634
    显示 switch中的flow规则

2. dpctl add-flow tcp:127.0.0.1:6634 in_port=2,idle_timeout=360,actions=output:3
    添加flow规则,从port 2 发送到switch的数据包,从port 3 转发出去

3. dpctl del-flows tcp:127.0.0.1:6634 in_port=1
    删除从port 1 发送到switchflow规则

floodlight的Application

Floodlight的实现如下:
mininet floodlight 搭建SDN环境_第1张图片

floodlight之上的Application有两种:

  • floodlight模块,在floodlight启动时加载;

  • 使用REST API编写应用程序;

    • REST API 文档
    • floodlight提供了一个使用REST API实现的应用程序 (Circuit Pusher)

你可能感兴趣的:(sdn,floodlight,Mininet)