1.实验参考文章:
https://www.sdnlab.com/10211.html
https://blog.csdn.net/u012707739/article/details/85337640
https://www.cnblogs.com/mrwuzs/p/10243289.html 这个实验比较简单而且易懂
https://blog.51cto.com/13958494/2177890
https://www.sdnlab.com/23289.html :通过网卡限速,队列限速,meter表限速三种方式
2.实验目的---利用队列限速
可以是tcp、udp流量
(1)在许多网络场景中,都需要根据需求对网络流量部署服务质量(QoS)保障策略,比如限制指定主机的最大接入带宽等需求。本节将介绍如何在OVS上添加队列,并完成数据的入队操作,从而完成QoS策略部署。
(2)实现业务带宽保障,实验所设计系统是适用于OpenFlow网络的QoS管理服务,实现对TCP的限速,对带宽的最低保障和对视频流单独分区以保障其带宽
3.实验步骤:
(1)创建拓扑
也可以利用Python脚本创建
(2)首先sdnlab实验平台的mininet平台中有ovs组件,把这个交换机类型设置成open vswitch交换机,
Open Flow VSwitch 是纯软件实现Open Flow协议的交换机,是软件虚拟的交换机。
Mininet是网络仿真软件,可以在一台主机上仿真出一个自定义的的网络,可以添加如Open Flow VSwitch这样的虚拟交换机。
对于ovs交换机(例如叫s1)的网路接口s1-eth1进行设置规则,也就是设置qos策略newqos ,在策略中创建类型为linux-htb的队列q0、q1、q2,,然后对于每个队列的一些配置开始设置参数:比如设置最大或者最小(也就是保障带宽)为多少
可以查看设置在端口的队列
(3)在ovs交换机添加上流表FlowTable,也就是交换机的转发规则
例如下面的流表信息,但并不是针对于该拓扑结构的,使得ovs能够正确转发数据,实现h1和h2之间的正常通信,这样ovs交换机中有就不用了去控制器找规则了。
详细的过程和原理:https://blog.csdn.net/haidalongjuanfeng/article/details/61196489
这样人工对于ovs交换机添加一个流表,则交换机内就有一个流表FlowTable,ovs交换机按照流表转发数据,流表由控制器生成和维护。内有数据包匹配特征和数据包处理方法。
数据进入switch之后,在table中寻找对应的flow进行匹配,并执行相应的action,若无匹配的flow则产生packet_in
无法匹配的数据包会产生packet_in,action也可以指定将数据包发给packet_in,也就是说我们可以利用这一点,将需要的数据包发给控制器。
(4)利用iperf测试带宽
Iperf可以测试最大TCP和UDP带宽性能,具有多种参数和UDP特性,可以根据需要调整,可以报告带宽、延迟抖动和数据包丢失。
在没有限流的情况下,测试网络带宽。iperf是一款常用的网络带宽测试工具,分为客户端和服务端。服务端首先开启监听,客户端发送流量,最后测得带宽的大小。以h1为服务端,以h2为客户端。
可以看到队列限速会优先满足设定min保障速率的队列,只要发送速率在设定的保障速率之内,则一定能满足。而超出保障速率的部分或者没有设置保障速率的队列则不一定能保证其速率,其速率按一定的规则分配所得。