如何使用tc限制网络速度?

How to limit network speed using tc?

我有三台机器:客户端、服务器和代理。在客户端(1.1.1.1)我有简单的脚本,它使用 wget,在服务器(2.2.2.1)我有 apache。在代理机器上,我想通过使用 tc 来限制速度。在代理机器上,我有两个接口 eth0(1.1.1.2) 连接到客户端和 eth1(2.2.2.2) 连接到服务器。

我尝试添加此规则,但它们不起作用:

tc qdisc add dev eth1 root handle 1: cbq avpkt 1000 bandwidth 10mbit 
tc class add dev eth1 parent 1: classid 1:1 cbq rate 1mbit \
allot 1500 prio 5 bounded isolated 
tc filter add dev eth1 parent 1: protocol ip prio 16 u32 \
match ip dst 1.1.1.1 flowid 1:1

找到答案了。这是我的脚本:

#!/bin/bash
set -x

tc qdisc del dev eth0 root
tc qdisc add dev eth0 root handle 1: cbq avpkt 1000 bandwidth 100mbit

tc class add dev eth0 parent 1: classid 1:1 cbq rate 1mbps \
   allot 1500 prio 5 bounded isolated

tc filter add dev eth0 parent 1: protocol ip prio 16 u32 \
   match ip dst 1.1.1.1 flowid 1:1