基于Open vSwitch的传统限速和SDN限速--实验 2

简介: 基于Open vSwitch的传统限速和SDN限速--实验

3.实验步骤

3.1启动floodlight控制器

cd floodlight/
java -jar target/floodlight.jar //运行floodlight控制器,该窗口请不要关闭

5ad85ce8f0774f63bcc42f638864d489.png


3.2创建拓扑

sudo mn --topo single,6 --controller=remote,ip=127.0.0.1,port=6633 --switch ovs,protocols=OpenFlow13

948976d0c0bf4fa291f2c64097b2fb3e.png


4e5a3fb39f584045bd6b0991d33b5a70.png


拓扑设备分工如下:

设备 限速方法
h1, h2 网卡限速
h3, h4 队列限速
h5, h6 meter表限速

打开终端

xterm h1 h2

查看两个主机h1和h2的ip地址

ifconfig

iperf测试带宽


h1:


iperf -s

h2


iperf -c 10.0.0.1

b2ad3d77a6cd4bf38b806312d04bf869.png


测得在正常情况下,本环境中的网络带宽是12.8Mbits/sec


这里可以再次查看Open vSwitch的端口


922f489516c44aa39d1c58ff51a626c0.png


3.3网卡限速

原理


Open vSwitch本身并不具备QoS功能,网卡限速是基于Linux内核来完成,而Open vSwitch所做的是对Linux内核的限速功能进行配置。Linux内核中接收数据包使用的方法叫策略(policing),用于限制网卡上接收分组(ingress)的速率,当速率超过了配置速率,就简单的把数据包丢弃。Policing通过简单的丢包机制实现接口速率的限制,它既可以作用于物理接口,也可以作用于虚拟接口。


查看h1和h2的网卡


a776638d20664577a320cf3889b32ad9.png


对两个网卡做策略


当两个网卡接收到的数据包超过5000kb时,数据包就直接丢弃掉


ovs-vsctl set interface s1-eth1 ingress_policing_rate=5000
ovs-vsctl set interface s1-eth2 ingress_policing_rate=5000

ingress_policing_rate:为接口最大收包速率,单位kbps,超过该速度的报文将被丢弃,默认值为0表示关闭该功能

4fcae5c1b19746d794db3e4e754a979f.png



验证带宽


以h1为服务端,以h2为客户端,通过iperf打流来测试网络带宽。选择UDP传输,客户端以10M的带宽去发送流量,由于网卡被限速,服务器端会显示相应的带宽

xterm h1
iperf -u -s


xterm h2
iperf -u -c 10.0.0.1 -b 10M

06a220c372bb4d38ad8b1aa2ab56a6a1.png


带宽:10.5 Mbit/s


抖动:15.649 ms


丢包率:4063/8918=46%


3.4队列限速

原理


数据包队列是任何一个网络栈的核心组件,数据包队列实现了异步模块之间的通讯,提升了网络性能。 Linux可以将网络数据包缓存起来,然后根据用户的设置,在尽量不中断连接(如 tcp)的前提下来平滑网络流量。内核通过某个网络接口发送数据包,它都需要按照这个接口的队列规则把数据包加入队列。由于Linux对接收队列的控制不够好,所以一般只用发送队列,即”控发不控收”。shaping用于实现出口流量的控制,使用队列queue,可以缓存和调度数据包发送顺序,比policing更加精确和有效。在ovs的数据表中主要使用QoS和Queue两张表。

5cfa73a863b34ddc9ea1fd6b28d3ed39.png



队列原理图

在网卡s1-eth4上限制创建队列

ovs-vsctl set port s1-eth4 qos=@newqos -- \
  --id=@newqos create qos type=linux-htb queues=0=@q0 -- \
  --id=@q0 create queue other-config:max-rate=5000000

69c52dc422c6449c9f06dbecebdaf670.png


为s1-eth4创建qos,名称为newqos


创建qos,名称为newqos,类型为linux-htb,指定处理队列为q0


创建队列q0,设置最大的速率为5000000bps,即5M


查看队列具体信息


查看网卡s1-eth4上的qos,qos的参数信息,最重要的是处理队列的uuid

sudo ovs-vsctl list qos

96813a5d58ed4c6a9f73f7d82704a7ea.png


查看网卡s1-eth4上的队列的信息,最重要的是队列的最大速度

sudo ovs-vsctl list queue

f6976fb7c9064fb5ad9be1efab45a321.png


验证带宽


xterm h3
iperf -u -c 10.0.0.4 -b 10M
xterm h4
iperf -u -s

759b5e5ef11a4c7db176c84ccaf0306f.png


带宽:10.5 Mbit/s


抖动:1121.52us = 1.1ms


丢包率:40%


3.5 Meter表限速

原理


Meter表限速是SDN的限速方式。OpenFlow 1.3版本中增加了对单个数据流的计量功能,使得OpenFlow能够实现简单的QoS服务(例如流量限速),并且可以结合每个端口队列来实现更复杂的QoS框架(例如DiffServ)


0ddcac6b3b1941d8b6435b14704435d3.png


Meter表的字段

含义:


Meter Identifier 32位的无符号整数,用来唯一识别该计量表项

Merter Bands 由计量带组成的无序列表,其中每个计量带都指明了其速率及处理数据包的方式

Counters 用于在报文被计量表项处理时更新相关计数

每个计量表项可能具有一个或多个计量带,每个计量带都指定了其所适用的速率和数据被处理的方式。每个Meter Band指明了带宽速率以及对数据包的处理行为。数据包基于其当前的速率会被其中一个Meter Band来处理。

149850c26aba4780be2d9782c857575f.png



Meter Band详细字段

含义:


Band Type 定义了数据包怎样被处理(drop,dscp remark)

Rate 用于选择计量带,定义了带可以运行的最高速率

Counters 当数据报文被计量带处理时,更新计数器

Type specific arguments 带类型的可选参数

Band Type:


Drop 通过丢弃数据包,定义带宽速率限制

Dscp remark 降低数据包的IP头中的DSCP字段丢弃的优先级

限速过程


查看交换机中的流表

ovs-ofctl dump-flows s1 -O openflow13

f97f1d9520714612899cdbdb27c84ff8.png


设置交换机的工作模式和协议版本

ovs-vsctl set bridge s1 datapath_type=netdev
ovs-vsctl set bridge s1 protocols=OpenFlow13

596e7c9964584361b86aa87ecbfed035.png


下发meter表


ovs-ofctl add-meter s1 meter=1,kbps,band=type=drop,rate=5000 -O OpenFlow13

查看流表转发端口,为下发流表准备

ovs-ofctl show s1

下发流表并查看

ovs-ofctl add-flow s1 in_port=5,action=meter:1,output:6 -O openflow13
ovs-ofctl dump-flows s1 -O openflow13

4837a5f675b142b689e31e93bec3c9c7.png

in_port=5:进端口为5


action=meter:1,output:6:匹配的动作为先交给meter表1处理,然后转发给端口6


流表的意思是将进端口为5的流量使用meter表限速,然后转发给6端口。


验证带宽


打开h5、h6终端,查看带宽

xterm h5
iperf -u -c 10.0.0.6 -b 10M
xterm h6
iperf -u -s

c2cccaf47ffe4f63853ea1e5c7c1a7cf.png


带宽:10.5 Mbit/s


抖动:15.649 ms


丢包率:7447/8917=84%


4.三种方式数据对比

限速方式 带宽M/s 抖动ms 丢包率
正常带宽 12.8 / /
网卡限速 10.5 15.649 46%
队列限速 10.5 1.1 40%
Meter表限速 10.5 15.68 84%

5.实验分析

本实验是基于开源交换机Open vSwitch,仿真了从传统网络模式和SDN模式限流的功能,单从实验的数据来看,队列限速的表现最好,抖动最小,丢包率最少。


Meter表作为SDN模式限速的代表,表现中规中矩,这可能和ovs交换的流表控制能力有关。交换机中流表的匹配,数据流计数,动作的执行等都是影响其控制力度的原因。软件实现的交换机对流表的控制肯定比不上硬件交换机,如果使用硬件交换机,其效率表现应该有所提高。


6.总结

限流是Qos中常用的一种技术手段,当网络过载或拥塞时,QoS能确保重要业务量不受延迟或丢弃,同时保证网络的高效运行。对于网络业务,服务质量包括:传输的带宽、传送的时延、数据的丢包率、网络抖动等。在网络中可以通过保证传输的带宽、降低传送的时延、降低数据的丢包率、降低网络抖动值等措施来提高服务质量。


–end–


相关文章
|
缓存 监控 负载均衡
基于SDN环境下的DDoS异常攻击的检测与缓解--实验
基于SDN环境下的DDoS异常攻击的检测与缓解--实验
|
Ubuntu 网络协议 Linux
混合IP-SDN环境的仿真实验
混合IP-SDN环境的仿真实验
混合IP-SDN环境的仿真实验
|
Java SDN 数据库
基于Open vSwitch的传统限速和SDN限速--实验 1
基于Open vSwitch的传统限速和SDN限速--实验
|
3月前
|
5G 网络安全 SDN
网络功能虚拟化(NFV)和软件定义网络(SDN):赋能5G网络灵活、智能演进的关键
网络功能虚拟化(NFV)和软件定义网络(SDN):赋能5G网络灵活、智能演进的关键
91 3
|
6月前
|
SDN 网络虚拟化 虚拟化
云数据中心中的SDN/NFV应用
【6月更文挑战第9天】计算和存储虚拟化技术在云计算IDC中已基本满足需求,但网络成为新瓶颈,主要问题包括虚拟化环境下的网络配置复杂度增加、拓扑展现困难和无法动态调整资源。
|
7月前
|
安全 SDN 网络虚拟化
SDN和NFV笔记
SDN和NFV笔记
141 1
|
7月前
|
网络安全 SDN 网络虚拟化
《计算机网络简易速速上手小册》第8章:软件定义网络(SDN)与网络功能虚拟化(NFV)(2024 最新版)
《计算机网络简易速速上手小册》第8章:软件定义网络(SDN)与网络功能虚拟化(NFV)(2024 最新版)
167 2
|
SDN 网络虚拟化 人工智能
带你读《智慧光网络:关键技术、应用实践和未来演进》——2.9.6 光接入网SDN/NFV
带你读《智慧光网络:关键技术、应用实践和未来演进》——2.9.6 光接入网SDN/NFV
|
SDN 网络虚拟化
SDN与NFV分类对照表
SDN与NFV分类对照表
202 0
SDN与NFV分类对照表