我正在设置一些htb数据包队列,如下所示:
tc qdisc add dev eth0 root handle 10: htb tc qdisc add dev eth1 root handle 10: htb tc class add dev eth0 parent 10: classid 10:1012 htb rate 750kbps ceil 750kbps tc filter add dev eth0 parent 10: protocol ip prio 10 handle 1: cgroup tc class add dev eth1 parent 10: classid 10:1012 htb rate 750kbps ceil 750kbps tc filter add dev eth1 parent 10: protocol ip prio 10 handle 1: cgroup
我正在使用wget下载一个10MB的文件来testing它。 我已经validation了数据包上有正确的classid。
当我没有这些tc规则的下载时,我得到了〜9MB / s的平均下载速度
当我申请的限制,我的速度下降,但下降到错误的数字。 它始终以3.7MB / s的速度上涨。
我不知道为什么我的限制过多,特别是考虑到我有一个细胞集。 我注意到,下载似乎开始限制在750kbps,但随后开始迅速增长。
任何人有什么想法我做错了什么?
干杯!
没有进一步的知识你的实际configuration我会假设你有一个cgroup的问题。
尝试这个排除你的cgroups,只是为了限制设备本身。
#!/bin/bash # Using ifb device to shape ingress traffic modprobe ifb ifconfig ifb0 up # flush tc tc qdisc del dev eth0 root &> /dev/null tc qdisc del dev eth0 ingress &> /dev/null tc qdisc del dev ifb0 root &> /dev/null # limit all outbound traffic tc qdisc add dev eth0 root handle 1: htb default 1 tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit # forward inbound traffic to ifb tc qdisc add dev eth0 ingress tc filter add dev eth0 parent ffff: protocol all u32 match u32 0 0 action mirred egress redirect dev ifb0 # limit all inbound traffic via ifb egress tc qdisc add dev ifb0 root handle 1: htb default 1 tc class add dev ifb0 parent 1: classid 1:1 htb rate 1mbit
testing,你会发现它既可以入站也可以出站。 如果你只想限制在一个方向上,只要忽略其他部分。