我试图限制简单的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,$burst = 15k在桥上实现此bash脚本时,我看到iperf带宽减少,但不是几乎是强制值(通常为~5Mbps).
我的脚本中有错误吗?我是否误用了爆变量?请帮忙.
更新:
经过进一步调查,我发现这个流量控制在应用于与SERVER连接的以太网卡时工作正常,但是当相同的命令应用于CLIENT端时会出现问题.当整个设置颠倒时,这也适用.
tc中的HTB带宽控制仅形成输出流量,因此为了限制服务器和客户端TCP连接之间的带宽,必须对两个桥接接口应用整形. (感谢0x534B41)