Open vSwitch 给虚拟机网卡限流(QoS)
这里我们简单描述下如何通过Open vSwitch给虚拟机限流(出流量),同时测试限流效果。测试环境继续复用《整合Open vSwitch与DNSmasq为虚拟机提供DHCP功能》一文中描述的。
测试工具:假设两台虚拟机VM1、VM2都已经安装好 netperf
1、事先在VM1中启动 netserver:

2、由于VM2的虚拟网卡是tap1,这里先查看下当前tap1网卡的情况:
◄► sudo ovs-vsctl list interface tap1
_uuid : aa4b7e2b-44b9--ab02-909d66fc4333
admin_state : up
bfd : {}
bfd_status : {}
cfm_fault : []
cfm_fault_status : []
cfm_health : []
cfm_mpid : []
cfm_remote_mpids : []
cfm_remote_opstate : []
duplex : full
external_ids : {attached-mac="52:54:00:f9:b6:b1", iface-id="0c9430f2-87ca-4ca2-92c8-2968ddfb2947", iface-status=active, vm-id="8d910a8b-726b-833d-3420-7da607486336"}
ifindex :
ingress_policing_burst: 0
ingress_policing_rate: 0
lacp_current : []
link_resets :
link_speed :
link_state : up
mac : []
mac_in_use : "fe:54:00:f9:b6:b1"
mtu :
name : "tap1"
ofport :
ofport_request : []
options : {}
other_config : {}
statistics : {collisions=, rx_bytes=, rx_crc_err=, rx_dropped=, rx_errors=, rx_frame_err=, rx_over_err=, rx_packets=, tx_bytes=, tx_dropped=, tx_errors=, tx_packets=}
status : {driver_name=tun, driver_version="1.6", firmware_version=""}
type : ""
这里的 ingress_policing_rate 和 ingress_policing_burst 值全为0,则表示 不限流。
3、在 不限流 的情况下,从VM2中通过 netperf 测试的情况如下:

从上面的Throughput来看,出流量差不多打到了 11Gbps。
4、此时,我们通过 ovs 将 tap1 的带宽限制在 1M:
◄► sudo ovs-vsctl set interface tap1 ingress_policing_burst=
◄► sudo ovs-vsctl set interface tap1 ingress_policing_rate=
◄► sudo ovs-vsctl list Interface tap1
_uuid : aa4b7e2b-44b9--ab02-909d66fc4333
admin_state : up
bfd : {}
bfd_status : {}
cfm_fault : []
cfm_fault_status : []
cfm_health : []
cfm_mpid : []
cfm_remote_mpids : []
cfm_remote_opstate : []
duplex : full
external_ids : {attached-mac="52:54:00:f9:b6:b1", iface-id="0c9430f2-87ca-4ca2-92c8-2968ddfb2947", iface-status=active, vm-id="8d910a8b-726b-833d-3420-7da607486336"}
ifindex :
ingress_policing_burst:
ingress_policing_rate:
lacp_current : []
link_resets :
link_speed :
link_state : up
mac : []
mac_in_use : "fe:54:00:f9:b6:b1"
mtu :
name : "tap1"
ofport :
ofport_request : []
options : {}
other_config : {}
statistics : {collisions=, rx_bytes=, rx_crc_err=, rx_dropped=, rx_errors=, rx_frame_err=, rx_over_err=, rx_packets=, tx_bytes=, tx_dropped=, tx_errors=, tx_packets=}
status : {driver_name=tun, driver_version="1.6", firmware_version=""}
type : ""
注意,ingress_policing_rate 和 ingress_policing_burst 的默认单位是 Kbps,这里我们将tap1的带宽限制在了1M。
5、在 带宽为1M 的情况下,从VM2中通过 netperf 测试的情况如下:

这次从上面的Throughput来看,出流量也就最大打到了 1Mbps。
6、我们再次将带宽调增到10M,测试情况:

这次从上面的Throughput来看,出流量最大打到了 10Mbps。
Open vSwitch 给虚拟机网卡限流(QoS)的更多相关文章
- Sentinel限流示例:编码和注解限流
一.Sentinel 是什么? 随着微服务的流行,服务和服务之间的稳定性变得越来越重要.Sentinel 以流量为切入点,从流量控制.熔断降级.系统负载保护等多个维度保护服务的稳定性. Sentine ...
- Rabbitmq——实现消费端限流 --NACK重回队列
如果是高并发下,rabbitmq服务器上收到成千上万条消息,那么当打开消费端时,这些消息必定喷涌而来,导致消费端消费不过来甚至挂掉都有可能. 在非自动确认的模式下,可以采用限流模式,rabbitmq ...
- RabbitMQ 消费端限流、TTL、死信队列
目录 消费端限流 1. 为什么要对消费端限流 2.限流的 api 讲解 3.如何对消费端进行限流 TTL 1.消息的 TTL 2.队列的 TTL 死信队列 实现死信队列步骤 总结 消费端限流 1. 为 ...
- TCP通过滑动窗口和拥塞窗口实现限流,能抵御ddos攻击吗
tcp可以通过滑动窗口和拥塞算法实现流量控制,限制上行和下行的流量,但是却不能抵御ddos攻击. 限流只是限制访问流量的大小,是无法区分正常流量和异常攻击流量的. 限流可以控制本软件或者应用的流量大小 ...
- RabbitMQ消费端限流策略(十)
消费端限流: 什么是消费端限流? 场景: 我们RabbitMQ服务器有上万条未处理的消息,我们随便打开一个消费者客户端,会出现下面情况: 巨量的消息瞬间全部推送过来,但是我们单个客户端无法同时处理这么 ...
- Rabbitmq之高级特性——实现消费端限流&NACK重回队列
如果是高并发下,rabbitmq服务器上收到成千上万条消息,那么当打开消费端时,这些消息必定喷涌而来,导致消费端消费不过来甚至挂掉都有可能. 在非自动确认的模式下,可以采用限流模式,rabbitmq ...
- coding++:RateLimiter 限流算法之漏桶算法、令牌桶算法--简介
RateLimiter是Guava的concurrent包下的一个用于限制访问频率的类 <dependency> <groupId>com.google.guava</g ...
- RabbitMQ高级之消息限流与延时队列
人生终将是场单人旅途,孤独之前是迷茫,孤独过后是成长. 楔子 本篇是消息队列RabbitMQ的第五弹. 上篇本来打算讲述RabbitMQ的一些高级用法: 如何保证消息的可靠性? 消息队列如何进行限流? ...
- 使用tc配置后端设备,来限制虚拟机网卡带宽
如果通过tc来限制虚拟机网卡接收方向带宽呢,实际上使用tc对接收方向限制的不够好,使用tc ingress可以限制接收,但是功能不够多,而且会形成丢包问题.一般是采用将流量重定向到一个虚拟设备ifb上 ...
随机推荐
- linux web php 安全相关设置
1 隐藏apache 或者 nginx的版本号 2 隐藏php的版本号 3 php 程序做好基本的防注入 xss之类的攻击 4 禁用PHP一些危险的函数 比如 phpinfo.system之类的 5 ...
- 伪命题:PHP识别url重写请求
手上有一个网站,然后启用了伪静态,因为一些设置上的原因,一段时间后,发现收录的都是.php的文件,而启用的伪静态地址则收录很少,在更改设置后,想尽快去掉.php的收录,然后想将.php的地址转向.ht ...
- C#画线源码
画线 private void Form1_Load(object sender, EventArgs e) { this.Paint += new PaintEventHandler(Form1_P ...
- Python背景色与语法高亮主题配置
使用python idle的人恐怕都无法忍受默认的白色背景,及其语法高亮主题. 大家更倾向于使用黑色背景. 用户目录 的.idlerc 目录: 下面的各个系统下对应的该文件的位置: 在Linux系列系 ...
- winform插入sql的事务处理
实现目的:点击按钮,原子性执行两条sql语句,同时成功或同时失败 数据库有这三个字段(忽略已有的一条记录): 一.用事务的sql语句 按钮事件完整代码: //事务处理插入sql语句 using (SQ ...
- 阻止Infinitescroll.js无限滚动加载页面解决方法
由于某些原因,想终止当前页继续翻页的操作,可在Infinitescroll回调函数中将翻页事件取消. 代码如下: // -- 每页滚屏加载的页数-- var IpageItems = 5; var i ...
- 关于Integer缓冲
默认的时候,-128--127范围内的数会被缓冲 但是jvm启动的时候可以修改启动参数-Djava.lang.Integer.IntegerCache.high=2000 来修改上限,但是下限是不可以 ...
- Visual Studio安装卸载模板
Visual Studio中有两种类型的模板:项目模板和项模板 一.已安装模板: 默认情况下,与产品一起安装的模板位于以下位置: ①\<Visual Studio 安装目录>\Common ...
- JVM-类文件结构
无关性的基石 I> "平台无关性"实现在操作系统的应用层上:sun公司以及其他虚拟机提供商发布了许多可以运行在各种不同平台上的虚拟机,这些虚拟机都可以载入和执行同一种平台无关 ...
- selectNodes
解析beans.xml的时候有时候找不到节点,把其他多余的删除之后就好了,不知道为什么.