我正在使用这些命令来设置带宽限制:
tc qdisc del dev eth1 root
tc qdisc add dev eth1 root handle 1: cbq avpkt 1000 bandwidth 100Mbit
tc class add dev eth1 parent 1: classid 1:1 cbq rate 1Mbit allot 1500 prio 3 bounded isolated
tc filter add dev eth1 parent 1: protocol ip u32 match ip protocol 6 0xff flowid 1:1
它
我的理解是这些命令应该将我的网络流量限制为每秒 1 MBit / 125 KByte,但事实并非如此。
实际数据传输速率大约为每秒 5 兆字节。我通过 NFS 传输一个大文件来衡量这一点。如果我将“rate 1Mbit”参数修改为“rate 512 Kbit”,传输速率仅为每秒 2.5 MByte,因此 tc 命令实际上会限制流量,但不会限制参数所说的内容。
此服务器作为 Citrix XenServer VM 运行 Debian Linux 6.0.7。
我做错了什么?请指教。
您的
tc
规则仅适用于传出流量。检查此页面:
如果路由两个接口,则可以在每个设备和路由/桥接器之间放置类似的规则。这样,传递到一个设备的传入链的内容将传递到另一个设备的传出链,从而有效地限制了两个方向的带宽
另一种选择是使用IFB伪设备