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