第二届SDN大赛--提高题2

2小题:流表管理

                                                                                               -------------温州大学 12网工

一、 实验目的

利用控制器提供的API(例如REST API),开发一个网络及流表管理工具(客户端,网页端均可)。管理工具可以显示网络拓扑结构,查看流表,增加流表,删除流表。

二、 实验原理-程序设计

我们基于Floodlight现有的API实现了一个简单的Web站点主要功能有:

l 查看Switch列表及各个Switch的信息

l 查看Host列表及各个Host的信息

l 查看拓扑图

l 查看流表

l 针对某个Switch添加/删除Static Flow

l 查看日志

程序的架构设计如图1.1所示:

1.1:架构设计

 

底层虚拟机上的操作系统上安装有Mininet,通过Mininet我们可以创建多种类型的拓扑,并且可以把floodlight controller设置为远程,在我们的方案中floodlight安装在虚拟机的宿主机上。Floodlight负责监听和控制虚拟机中拓扑的动态。我们在宿主机上又搭建了一个网站,网站后端即Command Proxy负责转发前端Web Interface的操作请求给FloodlightFloodlight通过REST API接口开放。前端Web Interface负责发出操作请求并在页面上展示整个拓扑的状态并提供操作接口以便用户能够添加/删除flows

 

(一)Mininet Virtual Network

1.1 Mininet介绍

Mininet是由一些虚拟的终端节点(end-hosts)、交换机、路由器连接而成的一个网络仿真器,它采用轻量级的虚拟化技术使得系统可以和真实网络相媲美。Mininet可以很方便地创建一个支持SDN的网络:host就像真实的电脑一样工作,可以使用ssh登录,启动应用程序,程序可以向以太网端口发送数据包,数据包会被交换机、路由器接收并处理。有了这个网络,就可以灵活地为网络添加新的功能并进行相关测试,然后轻松部署到真实的硬件环境中。

Mininet的特性包括可以简单、迅速地创建一个支持用户自定义的网络拓扑,缩短开发测试周期。可以运行真实的程序,在Linux上运行的程序基本上可以都可以在Mininet上运行,如WiresharkMininet。支持Openflow,在Mininet上运行的代码可以轻松移植到支持OpenFlow的硬件设备上。Mininet可以在自己的电脑,或服务器,或虚拟机,或者云(例如Amazon EC2)上运行。Mininet提供python API,简单易用。

1.2 基于Mininet拓扑搭建

    拓扑搭建方面我们使用了Mininet,我们在VirtualBox安装Mininet虚拟 机。利用它可以非常方便的模拟出一个网络。例如,模拟出一个如提高题1    中的网络的命令为:

 >>sudo mn --custom /home/ubuntu/mininet/custom/proxy-access.py --topo mytopo --switch ovsk --controller=remote,ip=192.168.181.129,port=6633

 

Mininet可以连接到Floodlight作为ControllerController可以是本地的 或者远程的。默认情况下一个Mininet虚拟网络中的Swicth只能使用同一个 Controller,但是可以通过编写自定义脚本的方式来构建Mininet拓扑,并且 在其中显示的指定多个Controller

(二)Floodlight

FloodlightOpenflow协议的一个实现。它提供了一些简单的API用来查询和控制网络状态,例如查询拓扑环境;罗列SwitchHost;添加/删除静态流;配置防火墙等。

(三)Command Proxy

由于ajax不能跨域请求,所以我们建立了一个服务器端代理。Command Proxy是我们用Php编写的一个后端脚本,它用来转发Web Interface的请求或者执行Web Interface发送的命令。流程如图1.2所示:

1.2Command Proxy流程

 

(四)Web Interface

Web Interface提供了可视化的用户接口,用户可以在浏览器中查看拓扑、添加/删除流、查看日志等操作,并负责发出操作请求到后端commend proxy

 

三、 实验过程及结果

在浏览器中输入localhost/floodlightUI/index.html可进入web界面查看各类信息。主界面如图1.3所示。

 

1.3web主界面

 

 

(一)查看Switch列表及各个Switch的信息

 

1.4Switches界面

 

首先为用户提供了可视化界面来查看路由的列表,所有路由的IP AdressVenderPacketsBytesFlows以及Connected Since信息一览无遗。

(二)查看Host列表及各个Host的信息

 

1.5Host界面

 

同时继续利用floodlight的自带API让各主机的信息也完美地展现在了用户面前。

(三)查看拓扑图

 

1.6Topology界面

 

接着我们实现了查看拓扑结构的功能,用户还可以自由拖动图中的设备以达到最好的视觉化效果。

(四)查看流表

 

1.7Flows界面

 

 

点击Switches界面中某个具体交换机,便可以进入并查看该交换机的具体信息,还提供了查看流表的功能。用户可以看到流的名称、Cookie、优先级、数据包数量等信息。

(五)针对某个Switch添加/删除Static Flow

 

1.8:添加流表

 

我们还给用户提供了增加和删除流表的功能。在流表的下方我们为用户提供了命令输入窗口,单击Flow Pusher可出现一个输入框,在这里用户可以自主输入添加流表命令,比如示例命令如下:

curl -d '{"switch": "00:00:00:00:00:00:00:03", "name":"flow-mod-1", "cookie":"0", "priority":"32768", "ingress-port":"1","active":"true", "actions":"output=2"}' http://localhost:8080/wm/staticflowentrypusher/json

 

单击commit来添加流表。图1.8是在添加流表,图1.9则是添加流表成功的样子。我们可以明显看到流表中多了一条记录。

 

1.9:流表已添加

 

 

删除和添加基本上一样,区别仅在于命令不同。这是删除上面添加的流表的示例命令:

curl -X DELETE -d '{"name":"flow-mod-1"}' http://localhost:8080/wm/staticflowentrypusher/json

删除的动作如下。

 

1.10:删除流表

 

删除完成,点击确认后,删除流表

 

1.11:流表已删除

 

(六)查看日志

最后我们还完成了查看日志的功能。整个拓扑网络的日志监听完整地在这里反映出来了,并能够根据日志实时更新页面。页面的样子如下:

 

1.12:架构设计

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值