我正在使用Linuxstream量控制function来限制KVM VM的输出带宽,并在使用filter匹配快速类的目的地和给定虚拟机的(默认)慢类时遇到困难。
物理networking输出接口为“eth0”(1 Gbit),是“bond0”绑定设备的一部分。 “bond0”是沿着虚拟机虚拟网卡“vmn {0,1,2,3,4}”的“br0”的一部分。
从VMnetworking数据包到Internet的path是:eth0(vm) – > vmn0(主机) – > br0(主机) – > bond0(主机) – > nic0(主机) – > Internet。
我想设置两个类:
我在主机上尝试了以下方法:
# If the qdisc was previously created, delete it tc qdisc del dev vmn0 root # New HTB qdisc. By default it goes to our slow traffic class (1:11) tc qdisc add dev vmn0 root handle 1: htb default 11 # Classes. 1:1 default (500 Mbit) ; 1:10 -> fast (500Mbit); 1:11 -> slow (100Mbit) tc class add dev vmn0 parent 1: classid 1:1 htb rate 500000kbit ceil 500000kbit quantum 1500 tc class add dev vmn0 parent 1:1 classid 1:10 htb rate 1000kbit ceil 500000kbit tc class add dev vmn0 parent 1:1 classid 1:11 htb rate 1000kbit ceil 100000kbit # Associates the fast traffic class with our desireed networks tc filter add dev vmn0 parent 1: protocol ip prio 10 u32 match ip dst 10.0.1.0/24 flowid 1:10 tc filter add dev vmn0 parent 1: protocol ip prio 10 u32 match ip dst 10.0.2.0/24 flowid 1:10 # Default match if any of previous rules not applied to a slow rate 1:11. Superfluous like traffic goes to 1:11 by default? tc filter add dev vmn0 parent 1: protocol ip prio 20 u32 match ip dst 0.0.0.0/0 flowid 1:11
从虚拟机“vma”与networking设备“vmn0”关联和IP地址“10.0.1.2”我运行“iperf -s”。
从不同主机上的VM“vmb”和IP地址“10.0.2.2”,我运行了“iperf -c 10.0.1.2”,结果如下:
[ ID] Interval Transfer Bandwidth Retr Cwnd [ 4] 0.00-1.00 sec 57.8 MBytes 485 Mbits/sec 0 1.84 MBytes [ 4] 1.00-2.00 sec 56.2 MBytes 472 Mbits/sec 0 1.84 MBytes [ 4] 2.00-3.00 sec 56.2 MBytes 472 Mbits/sec 0 1.84 MBytes [ 4] 3.00-4.00 sec 55.0 MBytes 461 Mbits/sec 0 1.84 MBytes [ 4] 4.00-5.00 sec 56.2 MBytes 472 Mbits/sec 0 1.84 MBytes
看起来不错,“10.0.2.2”的速率限制在500Mbit左右。
现在,从不同主机上的VM“vmc”再次访问IP地址“192.168.1.2”:
[ ID] Interval Transfer Bandwidth Retr Cwnd [ 4] 0.00-1.00 sec 57.3 MBytes 481 Mbits/sec 0 1.21 MBytes [ 4] 1.00-2.00 sec 56.4 MBytes 473 Mbits/sec 0 1.21 MBytes [ 4] 2.00-3.00 sec 56.7 MBytes 476 Mbits/sec 0 1.21 MBytes [ 4] 3.00-4.00 sec 56.7 MBytes 476 Mbits/sec 0 1.21 MBytes [ 4] 4.00-5.00 sec 56.5 MBytes 474 Mbits/sec 0 1.21 MBytes
这不是我所期望的,因为它应该有〜100 Mbit(默认类别,以及任何以前不匹配的匹配)。
有人能帮忙吗?
终于搞定了。
这些行显示我在做什么:
tc qdisc del dev vmn0 root tc qdisc add dev vmn0 root handle 1: htb default 11 r2q 83 tc class add dev vmn0 parent 1: classid 1:1 htb rate 100000kbit ceil 100000kbit quantum 1500 tc class add dev vmn0 parent 1:1 classid 1:10 htb rate 1000kbit ceil 500000kbit tc class add dev vmn0 parent 1:1 classid 1:11 htb rate 1000kbit ceil 100000kbit tc filter add dev vmn0 parent 1: protocol ip prio 10 u32 match ip src 10.0.2.0/24 flowid 1:10
在dst 10.0.1.0/24上删除filter后,stream量开始受到速率限制。 正如预期的那样,如果stream量不符合过滤规则,那么它将进入默认类(1:11,慢一点)。
stream量总是在规则10.0.1.0/24上进行匹配,因为它们都进行了发送和接收,所以stream量在那里被分类并给出了快速path。