|
|
 |
您的位置:教育频道--IT培训认证--技术教材 |
|
|
《LINUX带宽优化》
优先、共享和输入、输出流量限制等。这套系统可以与专用的带宽管理系统相媲美。
1. 基本的构成块
tc 包括三个基本的构成块: 队列规定(queueing discipline )、类(class)和分类器(Classifiers)
。
队列规定可以看作设备的流量/数据包管理器。 队列规定内封装了其他两个主要TC组件(类和分类器),控制数据的流动。
目前,有一些设备队列规定可以用来管理设备,包括类基队列(CBQ),优先级和CSZ (Clark-Shenker-Zhang)等。CBQ
是一种超级队列,即它能够包含其它队列(甚至其它CBQ)。
类由设备队列规定来管理。类由若干规则(rule)构成,这些规则用以管理那个类所拥有的数据。例如,某类里的全部数据包都受到 1 Mbps的速率限度,而在午夜和早上6点的一段时间段内允许最高达
3 Mbps。
一些队列规定可以绑定到类上,包括FIFO(先进先出),RED(随机早期探测),SFQ(随机公平队列)和令牌桶(Token Bucket)。
如果设备上未绑定队列规定,则使用基本的FIFO。另外, CBQ,CSZ和优先级也能用于类,以及类的子类。这表明使用TC,可以轻松地建造非常复杂的流量控制。管理类的队列规定可以称为类队列规定(class
queueing disciplines)。
一般地,类队列规定管理该类的数据和队列,能决定延迟、丢掉或者重新分类它管理的包。分类器或过滤器描述包,并且把他们映射到队列规定所管理的类。
这些过滤器通常都提供简单的描述语言,指定选择包、把包映射到类的方法。
目前,TC可以使用的过滤器有:fwmark分类器,u32分类器,基于路由的分类器和RSVP分类器(分别用于IPV6、IPV4)等;其中,fwmark分类器允许我们使用
Linux netfilter 代码选择流量,而u32分类器允许我们选择基于 ANY 头的流量 。所有的防火墙过滤器, 例如,ipchains,都能用来分类包。
TC代码位于内核,不同的功能块既能编译为模块,也能直接编进内核。 与内核代码或模块的通信和配置由用户级程序tc完成。
2. 示例
编译内核
首先要确保选中 Kernel/User netlink socket,因为只有这样 tc 才能通过 netlink 与内核通讯。
然后,把队列规定和分类器都编进内核。这其中包括:
QoS or fair queueing, CBQ packet scheduler, CSZ packet scheduler, the
simplest PRIO pseudoscheduler, RED queue, SFQ queue, TBF queue, QoS support,
rate estimator, packet classifier
|
|
|
|
|