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