Linux 的带宽管理系统(2) 然后就是大家熟知的编译和安装过程了。 2.2 建立 [因特网] ---〈E3、T3 等〉--- [Linux 路由器] --- [Office+ISP] eth1 eth0 上图中的 Linux 路由器有两个接口,不妨称之为 eth0 和 eth1。eth1 连接到路由器, eth0 连接到包括公司防火墙在内的子网上。 由于我们只能限制发送的内容,所以我们需要两套独立的、但可能非常相似的规则集。我们可以通过改变发送次序来控制传输速率。通过修改 eth0 上的队列,我们可以确定客户 的下载(download)速率;通过修改 eth1 上的队列,我们可以确定我们公司自己的用 户的上载(upload)速率。 比如说,公司连接到因特网的线路带宽为 10 兆,同时满足外部客户和公司自己用户的需要;此时,我们就需要一种策略,来进行管理和协调。CBQ 就可以满足我们的要求。 我们有两个主类:'ISP' 和 'Office'。我们可以决定,客户有 8 兆的带宽,Office用户有 2 兆的带宽。 我们首先发布如下的命令: # tc qdisc add dev eth0 root handle 10: cbq bandwidth 10Mbit avpkt 1000 其含义是:我们配置了 eth0 的队列规定,root 表示这是根(root)规定,其句柄 (handle)设定为 10:'。 其类型为 CBQ。带宽为 10 M,平均包大小为 1000 字节。 下面生成根类(root class): # tc class add dev eth0 parent 10:0 classid 10:1 cbq bandwidth 10Mbit rate \ 10Mbit allot 1514 weight 1Mbit prio 8 maxburst 20 avpkt 1000 这条命令其实不比前一条命令有更多的含义。其中,1514 是 MTU 的值。 下面生成 ISP 类: # tc class add dev eth0 parent 10:1 classid 10:100 cbq bandwidth 10Mbit rate \ 8Mbit allot 1514 weight 800Kbit prio 5 maxburst 20 avpkt 1000 bounded 我们分配了 8 兆的带宽给它,其中 bounded 表示该类不能超过该阀值。 下面生成 Office 类: # tc class add dev eth0 parent 10:1 classid 10:200 cbq bandwidth 10Mbit rate \ 2Mbit allot 1514 weight 200Kbit prio 5 maxburst 20 avpkt 1000 bounded