1、概述
1.1 什么是SDN
软件定义网络(英语:software-defined networking,缩写作 SDN)是一种新型网络架构。它利用OpenFlow协议将路由器的控制平面(control plane)从数据平面(data plane)中分离,改以软件方式实现。该架构可使网络管理员在不更动硬件设备的前提下,以中央控制方式用程序重新规划网络,为控制网络流量提供了新方案,也为核心网络和应用创新提供了良好平台。Facebook与Google都在他们的数据中心中使用OpenFlow协议,并成立了开放网络基金会来推动这个技术。
1.2 什么是mininet
Mininet是一个强大的网络仿真平台,通过这个平台,我们可以很方便的模拟真实环境中的网络操作与架构。特别是SDN,在真实网络中进行相关的网络实验有一定难度,自然需要一个仿真平台可以学习这种新型的网络架构,而Mininet就应运而生,承担了这个光荣而艰巨的使命。 Mininet自带交换机(switchs)、主机(hosts)、控制器(controllers),同时,在mininet上可以安装OpenvSwitch、多种控制器(NOX\POX\RYU\Floodlight\OpenDaylight等),同时,Mininet可以运行在多种操作系统上(windows\linux\Mac OS),具有很强的系统兼容性。最令人兴奋的一点是:在Mininet上进行的实验,可以无缝的移到真实的环境中去
1.3 什么是RYU
RYU是一款基于python的控制器,你可用Ryu实现各种想要实现的网络功能,它可以下发或接收流表进行各种路由运算。
2 实验流程
2.1 构建拓扑
构建的拓扑图
实验代码进行解决
命令解释
sudo:以管理员权限运行,因为mininet要调用内核的东西
mn:就是mininet的命令简写
--controller=remote:使用远程的控制器
ip,port:控制器的ip和端口
--topo:指定拓扑类型,single 就是单一拓扑,就是最简单的交换机下面接主机,后面的3 表示,三台主机。
当你看到 mininet> 标识符,表示拓扑创建完成,我们可以输入一些指令查看网络拓扑。 nodes 指令显示节点信息: links 指令显示节点信息:
2.2 ryu控制器配置
通过ryu-manager命令启动ryu控制器,并且打开ofctl_rest.py和simple_switch.py,作为交换机的转发规则,因为之后要用到restAPI,即控制器的北向接口(postamn连接使用),所以需要打开ofctl_rest.py。
2.3 sFlow-RT 使用
安装sFlow-RT,命令wget http://www.inmon.com/products/sFlow-RT/sflow-rt.tar.gz,然后解压到当前目录下,输入命令cd sflow-rt,然后启动:./start.sh,看到下列信息证明启动成功。其中 6343 是sFlow Collector 的默认端口,8008 则是 sFlow 的WebUI端口。(注意:执行sflow-rt需要先配置好jdk,否则会报Java不存在的错误)
其中 6343 是sFlow Collector 的默认端口,8008 则是 sFlow 的WebUI端口
其中sFlow-RT的ddos-blackhole(https://github.com/sflow-rt/ddos-blackhole)
配置sFlow Agent 我们需要在虚拟交换机配置sFlow Agent,这样sFlow Collector 才能收集到流量信息进行分析和呈现。 键入以下指令部署sFlow Agent :
指令说明:
1)agent:监控 eth0 网卡产生的流量; 2)target:sFlow-RT的IP,默认端口6343; 3)bridge:需要开启sFlow的网桥; 4)sampling:采样率,表示每隔N个Packet就取样一次 5)polling:轮询时间,每隔N秒polling一次 提示:如果有N个网桥,就需要执行N次部署 sFlowAgent 的指令,我们本次实验中只有一个网桥,所以执行一次就可以了。
通过如下指令可以查看已经配置的 sFlow Agent信息:
使用命令ip link,可以查看虚拟交换机端口与端口编号的映射,可以看见s1 交换机对应的编号是7: 接下来,查看sFlow Agent 是否配置成功,我们可以通过其WebUI进行查看,在浏览器中输入网址localhost:8008/html/index.html,可以看见各项监控状态。
|