kvm之带宽限速(libvirt使用之---使用tc实现kvm虚拟机带宽控制)


libvirt使用之---使用tc实现kvm虚拟机带宽控制

注意,这个在libvirt 0.9.4版本之前是不work的(ubuntu 11.10上面安装libvirt 0.9.10有问题)
在kvm虚拟机管理的过程当中,对虚拟机带宽进行良好的控制是十分重要的。
linux系统当中对网络带宽的控制一般都是使用tc命令实现,tc即是traffic control的缩写,在 这里可以找到有关tc命令的内容。
当然你可以手动使用tc命令来处理这些事情,比如使用cbq队列,htb队列等,都是可以实现的,网上找找应该有很多关于这方面的资料,
比如下面就是使用cbq队列限制src ip为192.168.1.102发送数据包的速率:
1.建立cbq队列:
tc qdisc add dev eth0 root handle 1: cbq avpkt 1000 bandwidth 100mbit
2.建立带宽限制分类:
tc class add dev eth0 parent 1: classid 1:1 cbq rate 60mbit allot 1500 prio 5 bounded isolated
tc class add dev eth0 parent 1: classid 1:2 cbq rate 70mbit allot 1500 prio 5 bounded isolated
tc class add dev eth0 parent 1: classid 1:3 cbq rate 80mbit allot 1500 prio 5 bounded isolated
 
3.建立过滤器,绑定指定带宽限制类型至指定虚拟机ip:
tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip src 192.168.1.102 flowid 1:2
 
我比较推荐的方法还是直接使用libvirt,libvirt 中已经集成了带宽控制的功能,下面是关于带宽控制部分的xml描述:
使用方法:在网卡interface中加入
<bandwidth>
<inbound average='1000' peak='5000' burst='1024'/>
<outbound average='128' peak='256' burst='256'/>
</bandwidth>
以下是关于各项参数的解释,获取最新的信息可以到 这里.
mandatory attribute:
average: It specifies average bit rate on interface being shaped.
optional attributes:
peak: which specifies maximum rate at which interface can send data,
burst: amount of bytes that can be burst at peak speed.
Accepted values: integer numbers.
units:
average: kilobytes per second
peak: kilobytes per second
burst: kilobytes.
 
生产案例(限制300M带宽)
<interface type='bridge'>
      <mac address='fa:ca:21:7d:36:00'/>
      <source bridge='br_p2p2_800'/>
      <bandwidth>
        <inbound average='38400'/>
        <outbound average='38400'/>
      </bandwidth>
      <target dev='vnic10659.0'/>
      <model type='virtio'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
 
 
38400kb/s=37.5Mb/s=300Mb带宽
38400÷1024=37.5
37.5×8=300
 
 
=====================================================================
 
手动限速300M(根据网卡的mac地址)
$ sudo virsh domiflist a4b4faf54f854a068d4d07600ec2d1f0
Interface  Type       Source     Model       MAC
-------------------------------------------------------
vnic12993.0 bridge     br_p1p1_60 virtio      fa:b6:af:00:03:00
vnic12993.1 bridge     br_p1p2_610 virtio      fa:5c:47:11:e1:01
 
入方向限速
sudo virsh domiftune a4b4faf54f854a068d4d07600ec2d1f0 fa:b6:af:00:03:00 --live --config --inbound 38400,38400,38400
 
出方向限速
sudo virsh domiftune a4b4faf54f854a068d4d07600ec2d1f0 fa:b6:af:00:03:00 --live --config --outbound 38400,38400,38400
 
 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM