基于floodlight&sflow的队列调整

前言

介绍本次实验前,我想先讲讲关于流量监控的事。嗯,基于sflow的ddos防御 的成功,坚定了我继续基于sflow做流量监控。对于流量监控,我最初的想法是通过openflow协议的count和meter入手。不幸的是,通过count能统计端口数据包和字节数,难以实现速率的监控;meter可以对端口进行速率控制,但OVS FAQ有提到OVS2.0以后都支持了meter,可是还没有实现meter的功能。回到主题,这一次的实验是基于sflow监控的基础上,通过floodlight进行的队列调整。

实验设计

1.拓扑结构沿用上次实验的:switch+3hosts+floodlight+sflow如图::
topo
2.设计思想:switch上有三个端口分别连接有host1,host2,host3。在端口3上设置3条队列,分别带宽设置为:
--id=@q0 create queue other-config:min-rate=1000000000 other-config:max-rate=1000000000
--id=@q1 create queue other-config:max-rate=20000000 other-config:min-rate=20000000
--id=@q2 create queue other-config:max-rate=2000000 other-config:min-rate=2000000

让host1和host2同时向host3发包通过流量监控,获取端口1和端口2的速率分别为R1和R2,然后进行判断:
若R1>R2:端口1到端口3的队列—>q0 端口2到端口3的队列—>q2
若R2>R1:端口1到端口3的队列—>q2 端口2到端口3的队列—>q0
若R1=R2:端口1到端口3的队列—>q1 端口2到端口3的队列—>q1

结果分析

首先让host1和host2分别向host3泛洪:
  h1> ping -f h3
  h2> ping -f h3
执行队列调整应用后终端显示:
console
可以看出,由于端口1(注意:eth0-eth2依次对应端口1-3)的速率比端口2的速率快,应用立即通知控制器下发流表给端口1和端口2设定不同的出口队列,再来看看控制器的流表:
sdnflow
从流表可以看到,控制器已经下发了队列调整流表项。端口1的速率变化:
sflow-port1
端口2的速率变化:
sflow-port1
从图中我们可以看到,最初阶段,端口1和端口2的速率均在2M左右;从时间17:13:18开始,也就是实施队列调整应用后,端口1的速率上升到了大于2M阶段,而端口2的速率下降到了500k以下。

个人分析,欢迎指正,若转载请注明出处!