这里我们简单描述下如何通过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)的更多相关文章

  1. Sentinel限流示例:编码和注解限流

    一.Sentinel 是什么? 随着微服务的流行,服务和服务之间的稳定性变得越来越重要.Sentinel 以流量为切入点,从流量控制.熔断降级.系统负载保护等多个维度保护服务的稳定性. Sentine ...

  2. Rabbitmq——实现消费端限流 --NACK重回队列

    如果是高并发下,rabbitmq服务器上收到成千上万条消息,那么当打开消费端时,这些消息必定喷涌而来,导致消费端消费不过来甚至挂掉都有可能. 在非自动确认的模式下,可以采用限流模式,rabbitmq ...

  3. RabbitMQ 消费端限流、TTL、死信队列

    目录 消费端限流 1. 为什么要对消费端限流 2.限流的 api 讲解 3.如何对消费端进行限流 TTL 1.消息的 TTL 2.队列的 TTL 死信队列 实现死信队列步骤 总结 消费端限流 1. 为 ...

  4. TCP通过滑动窗口和拥塞窗口实现限流,能抵御ddos攻击吗

    tcp可以通过滑动窗口和拥塞算法实现流量控制,限制上行和下行的流量,但是却不能抵御ddos攻击. 限流只是限制访问流量的大小,是无法区分正常流量和异常攻击流量的. 限流可以控制本软件或者应用的流量大小 ...

  5. RabbitMQ消费端限流策略(十)

    消费端限流: 什么是消费端限流? 场景: 我们RabbitMQ服务器有上万条未处理的消息,我们随便打开一个消费者客户端,会出现下面情况: 巨量的消息瞬间全部推送过来,但是我们单个客户端无法同时处理这么 ...

  6. Rabbitmq之高级特性——实现消费端限流&NACK重回队列

    如果是高并发下,rabbitmq服务器上收到成千上万条消息,那么当打开消费端时,这些消息必定喷涌而来,导致消费端消费不过来甚至挂掉都有可能. 在非自动确认的模式下,可以采用限流模式,rabbitmq ...

  7. coding++:RateLimiter 限流算法之漏桶算法、令牌桶算法--简介

    RateLimiter是Guava的concurrent包下的一个用于限制访问频率的类 <dependency> <groupId>com.google.guava</g ...

  8. RabbitMQ高级之消息限流与延时队列

    人生终将是场单人旅途,孤独之前是迷茫,孤独过后是成长. 楔子 本篇是消息队列RabbitMQ的第五弹. 上篇本来打算讲述RabbitMQ的一些高级用法: 如何保证消息的可靠性? 消息队列如何进行限流? ...

  9. 使用tc配置后端设备,来限制虚拟机网卡带宽

    如果通过tc来限制虚拟机网卡接收方向带宽呢,实际上使用tc对接收方向限制的不够好,使用tc ingress可以限制接收,但是功能不够多,而且会形成丢包问题.一般是采用将流量重定向到一个虚拟设备ifb上 ...

随机推荐

  1. [转载]Windows 7笔记本创建wifi热点供手机上网教程

    用智能手机的朋友会发现这样一个问题,智能手机比普通手机上网更耗流量.这是因为智能手机应用(软件)丰富,而且大部分应用都会自动联网.为此,许多人每月包了上百M的流量套餐,但用的时候还是小心翼翼,生怕流量 ...

  2. JS正则表达式基础

    正则表达式的作用:      测试字符串的某个模式     替换文本     根据模式匹配从字符串中提取一个子字符串.可以用来在文本或输入字段中查找特定文字 [^\d]/g这是一个正则表达式,在JS中 ...

  3. Linux常用的一些命令

    linux 关闭防火墙命令 servers iptables stop  关闭 servers  iptables status  状态 servers  iptables restart 重启 关闭 ...

  4. 二模 (4)day2

    第一题: 题目大意:给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b.中位数是指把所有元素从小到大排列后,位于中间的数. N<=100000 1.考虑到一个符合要求的连 ...

  5. Python标准库---子进程 (subprocess包)

    这里的内容以Linux进程基础和Linux文本流为基础.subprocess包主要功能是执行外部的命令和程序.比如说,我需要使用wget下载文件.我在Python中调用wget程序.从这个意义上来说, ...

  6. CRF条件随机场简介

    CRF(Conditional Random Field) 条件随机场是近几年自然语言处理领域常用的算法之一,常用于句法分析.命名实体识别.词性标注等.在我看来,CRF就像一个反向的隐马尔可夫模型(H ...

  7. [开发笔记]-DataGridView控件中自定义控件的使用

    最近工作之余在做一个百度歌曲搜索播放的小程序,需要显示歌曲列表的功能.在winform中采用DataGirdView来实现. 很久不写winform程序了,有些控件的用法也有些显得生疏了,特记录一下. ...

  8. 有关嵌入式linux的注意点总结

    知识收集和个人学习过程遇到的问题. 仅供参考. 1.sudo apt-get update 一直无法更新 一,查看网络是否连接上 有几种网络连接方式.常用的两种有网桥网络(Bridged)和网络地址翻 ...

  9. pig

    1.Pig是基于hadoop的一个数据处理的框架. MapReduce是使用java进行开发的,Pig有一套自己的数据处理语言,Pig的数据处理过程要转化为MR来运行.2.Pig的数据处理语言是数据流 ...

  10. c# Winforms WebBrowser - Clear all cookies

    Hello,   I recently search for a method to delete all cookies from the build in .NET WinForms WebBro ...