用tc来限制stream量,但是带宽是错误的

我正在使用这些命令来设置带宽限制:

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 

我的理解是,这些命令应该限制我的networkingstream量为1 MBit / 125 KByte每秒,但他们不。

实际的数据传输速率大约是每秒5 MByte。 我通过NFS传输大文件来衡量这一点。 如果我将“rate 1Mbit”参数修改为“rate 512 Kbit”,则传输速率仅为2.5 MByte /秒,所以tc命令实际上确实会限制stream量,而不是参数所说的内容。

该服务器运行Debian Linux 6.0.7作为Citrix XenServer VM。

我在做什么错了? 请指教。

您的tc规则仅适用于传出stream量。

检查这个页面:

现在请记住,我们通常只会形成传出的stream量,因为那是我们所控制的,而不像stream量进来。

如果路由两个接口,则可以在每个设备上放置类似的规则,并在两者之间路由/桥接。 这样一来,传递到一个设备的input链上的信号会传递到另一个设备的输出端,从而在两个方向上有效地限制带宽

另一种select是使用IFB伪装置

允许附加队列discplines传入的数据包。