TC 简介 Linux 从 kernel 开始支持 QOS ,不过,需要重新编译内核。运行'make config' 时将 EXPERIMENTAL _OPTIONS 设置成'y' ,并且将 Class Based Queueing (CBQ), Token Bucket Flow, Traffic Shapers 设置为'y' ,运行'make dep; make clean; make bzilo' ,生成新的内核。在 Linux 操作系统中流量控制器(TC) 主要是在输出端口处建立一个队列进行流量控制,控制的方式是基于路由, 亦即基于目的 IP 地址或目的子网的网络号的流量控制。流量控制器 TC , 其基本的功能模块为队列、分类和过滤器。 Linux 内核中支持的队列有, Class Based Queue , Token Bucket Flow , CSZ , First In First Out , Priority , TEQL , SFQ , ATM , RED 。这里我们讨论的队列与分类都是基于 CBQ(Class Based Queue) 的,而过滤器是基于路由(Route) 的。配置和使用流量控制器 TC , 主要分以下几个方面: 分别为建立队列、建立分类、建立过滤器和建立路由,另外还需要对现有的队列、分类、过滤器和路由进行监视。其基本使用步骤为: 1) 针对网络物理设备( 如以太网卡 eth0) 绑定一个 CBQ 队列; 2) 在该队列上建立分类; 3) 为每一分类建立一个基于路由的过滤器; 4) 最后与过滤器相配合,建立特定的路由表。先假设一个简单的环境,如下图所示: 流量控制器上的以太网卡(eth0) 的 IP 地址为 , 在其上建立一个 CB Q 队列。假设包的平均大小为 1000 字节,包间隔发送单元的大小为 8 字节,可接收冲突的发送最长包数目为 20 字节。假如有三种类型的流量需要控制: 1) 是发往主机 1 的,其 IP 地址为 。其流量带宽控制在 8Mbit ,优先级为 2; 2) 是发往主机 2 的,其 IP 地址为 。其流量带宽控制在 1Mbit ,优先级为 1; 3) 是发往子网 1的, 其子网号为 , 子网掩码为 。流量带宽控制在 1Mbit ,优先级为 6。 1. 建立队列一般情况下,针对一个网卡只需建立一个队列。将一个 cbq 队列绑定到网络物理设备 eth0 上, 其编号为 1:0 ; 网络物理设备 eth0 的实际带宽为 10 Mbit ,包的平均大小为 1000 字节;包间隔发送单元的大小为 8 字节,最小传输包大小为 64 字节。· tc qdisc add dev eth0 root handle 1: cbq bandwidth 10Mbit avpkt 1000 cell 8 mpu 64 2. 建立分类分类建立在队列之上。一般情况下, 针对一个队列需建立一个根分类, 然后再在其上建立子分类。对于分类,按其分类的编号顺序起作用,编号小的优先;一旦符合某个分类匹配规则,通过该分类发送数据包,则其后的分类不再起作用。 1) 创建根分
TC简介 来自淘豆网m.daumloan.com转载请标明出处.