linux中使用TC(Traffic control)进行流量管理。主要原理为在输出端口处建立一个队列,基于目的ip地址进行流量的控制。linux内核支持的队列有CBQ,TBF,CSZ,FIFO,ATM,RED,SFQ等等,以下实验的队列及分类均为基于CBQ(Class Based Queue)的。
配置流量控制器主要分为以下几个步骤:
(1)为网卡绑定一个CBQ队列
(2)在队列上建立分类
(3)为每一分类建立基于路由的过滤器
(4)建立特定路由表
假定以下的实验环境:
流量控制器上的网络设备eth0的ip地址为192.168.1.66,在其上建立一个CBQ队列。假设包的平均大小为1000字节,包间隔发送单元的大小为8字节,可接收冲突的发送最长包数目为20字节。
假如有三种类型的流量需要控制:
1) 是发往主机1的,其IP地址为192.168.1.24。其流量带宽控制在8Mbit,优先级为2;
2) 是发往主机2的,其IP地址为192.168.1.26。其流量带宽控制在1Mbit,优先级为1;
3) 是发往子网1的,其子网号为192.168.1.0,子网掩码为255.255.255.0。流量带宽控制在1Mbit,优先级为6。
1.为网卡绑定CBQ队列
将一个cbq队列绑定到网络物理设备eth0上,其编号为1:0;网络物理设备eth0的实际带宽为10 Mbit,包的平均大小为1000字节;包间隔发送单元的大小为8字节,最小传输包大小为64字节。
2.在队列上建立分类
一个队列上建立一个根分类,再在根分类上建立子分类
1)创建根分类1:1;分配带宽为10Mbit,优先级别为8
2)创建分类1:2,其父分类为1:1,分配带宽为8Mbit,优先级别为2
参数 bounded表示禁止借用未分配带宽
3)创建分类1:3,其父分类为1:1,分配带宽为1Mbit,优先级别为1
4)创建分类1:4,其父分类为1:1,分配带宽为1Mbit,优先级别为6
3.为根分类提供过滤器为子分类提供路由映射
1) 应用路由分类器到cbq队列的根,父分类编号为1:0;过滤协议为ip,优先级别为100,过滤器为基于路由表。
2) 建立路由映射分类1:2, 1:3, 1:4
4.建立路由表
路由表与所建路由映射应一一对应
1) 发往主机192.168.1.24的数据包通过分类2转发(分类2的速率8Mbit)
2)发往主机192.168.1.30的数据包通过分类3转发(分类3的速率1Mbit)
3)发往子网192.168.1.0/24的数据包通过分类4转发(分类4的速率1Mbit)