我正在尝试使用第三台被动机器作为桥梁来限制简单的 iperf 服务器和客户端之间的带宽。在没有干扰的情况下,iperf 返回的带宽约为 90 Mbits/sec。我的目标是创建一个根 qdisc,将所有未分类的流量(所有内容)发送到子 HTB 类,在那里设置我的带宽,然后路由到叶 qdisc,一旦我使其工作正常,将在其中设置其他 tc 参数。我的实现很简单:
sudo tc qdisc add dev $interface root handle 1: htb default 10
sudo tc class add dev $interface parent 1:0 classid 1:10 htb rate $bandwidth burst $burst
sudo tc qdisc add dev $interface parent 1:10 handle 10:0 netem #other stuff goes here
$interface = eth1
当使用、$bandwidth = 500kbps
、 ,在网桥上执行此 bash 脚本时$burst = 15k
,我发现 iperf 带宽有所减少,但远未达到规定值(通常为 ~5Mbps)。
我的脚本有错误吗?我是否误用了 burst 变量?请帮忙。
更新:经过进一步调查,我发现当将此流量控制应用于与服务器接口的以太网卡时,它可以正常工作,但当将相同的命令应用于客户端时,就会出现问题。当整个设置被逆转时,情况也是如此。
答案1
HTB 带宽控制碳只有形状传出流量,因此为了限制服务器和客户端 TCP 连接之间的带宽,必须对两个桥接接口应用整形。(感谢 0x534B41)