在一个局域网中(如图1所示),我们设定流量控制器上的以太网卡(设备名为eth0)的IP地址为10.172.4.66,在其上建立一个CBQ队列。假设包的平均大小为1K字节,包间隔发送单元的大小为8字节,可接收冲突的发送最长包数目为20字节。假如有三种类型的流量需要控制:
(1)发往主机1的流量,其IP地址设定为10.172.4.138.其流量带宽控制在500Mbit,优先级为2;
(2)是发往主机2的,其IP地址为10.172.4.141.其流量带宽控制在200Mbit,优先级为1;
(3)是发往子网1的,其子网号为10.172.4.0,子网掩码为255.255.255.0.流量带宽控制在300Mbit,优先级为6.
那么,根据上面的实例条件,我们可以采用如下的步骤进行TC配置和控制:
图1 Linux TC流量控制示意图
1.绑定CBQ队列
一般情况下,针对一个网卡只需建立一个队列:
将一个cbq队列绑定到网络物理设备eth0上,其编号为1:0;网络物理设备eth0的实际带宽为1000Mbit,包的平均大小为1000字节;包间隔发送单元的大小为8字节,最小传输包大小为64字节。
#tc qdisc add dev eth0 root handle 1: cbq bandwidth 1000Mbit avpkt 1000 cell 8 mpu 64