HACK#22 如何控制网络的带宽

本节介绍控制网络带宽的功能。

Linux内核中安装有称为网络调度或分组调度的带宽控制。这个功能可以控制每个网络设备传输的吞吐量。通过控制带宽,就可以优先进行重要的通信,或者优先其他服务的性能。

本节将以CentOS 5.4所提供的CBQ(Class Based Queueing)的设置为例进行说明。需要安装iproute数据包。

设置带宽控制

CBQ是指以具有优先级的类为单位分配传输带宽。为每个类准备配置文件并介绍控制带宽的方法。

iproute工具包中具有样本/etc/sysconfig/cbq/cbq-0000.example。


cat/etc/sysconfg/cbq/cbq-0000.example

DEVICE=eth0,10Mbit,1Mbit

RATE=128Kbit

WEIGHT=10Kbit

PRIO=5

RULE=192.168.1.0/24


下面以这个样本为基础,对各个项进行说明。

DEVICE

DEVICE选项的是作为带宽控制对象的网络设备。

格式如下。


DEVICE=<iframe>,<bandwidth>[,<weight>]


ifname网络接口。在上例中为eth0。bandwidth指定的是网络设备的物理带宽。如果是千兆以太网(Gigabit Ethernet)则为1000Mbit。weight是根类的比重。值越大,表示根类一次处理的数据比例越大。根类是针对每个设备分别生成的。推荐将weight指定为bandwidth的1/10。

RATE

RATE指定的是分配到该类的带宽。单位为bit或bps。

bit对应bits/秒,bps对应bytes/秒。设置为100Mbytes/秒时,需指定RATE=100Mbps。WEIGHT WEIGHT用来设置该类的比重。值越大,表示该类一次处理的数据比例越大。推荐将WEIGHT指定为RATE的1/10。

PRIO

PRIO为该类的优先级。可设定为1~8。默认值为5。数字越大,表示优先级越低。PRIO为8时WEIGHT自动变为1。

RULE

RULE指定的是带宽控制对象。可以使用通信对象的IP地址或端口号来限定,因此也可以只控制HTTP或FTP的带宽。格式如下。

RULE=[[saddr[/prefix]][:port[/mask]],][daddr[/prefix]][:port[/mask]]

仅对192.168.0.100进行带宽控制时设置如下。

RULE=192. 168.0.100

仅对HTTP(端口号80)进行控制时设置如下。


RULE=192.168.0.100:80,


其他参数或配置的详细内容将在下一节中介绍。

TIME

TIME参数在上例中并没有出现。格式可以按照下列方式通过时间或星期来修改带宽RATE和WEIGHT的配置。


TIME=[<dow>,<dow>,……,<dow>/]<from>-<till>;<rate>/<weight>[/<peak>]


描述如下。


TIME=18:00-06:00;256Kbit/25Kbit