流量控制(Traffic Control, tc)是Linux内核提供的流量限速、整形和策略控制机制。它以qdisc-class-filter的树形结构来实现对流量的分层控制 :
tc最佳的参考就是Linux Traffic Control HOWTO,详细介绍了tc的原理和使用方法。
基本组成
从上图中可以看到,tc由qdisc、fitler和class三部分组成:
qdisc通过队列将数据包缓存起来,用来控制网络收发的速度
class用来表示控制策略
filter用来将数据包划分到具体的控制策略中
qdisc
qdisc通过队列将数据包缓存起来,用来控制网络收发的速度。实际上,每个网卡都有一个关联的qdisc。它包括以下几种:
无分类qdisc(只能应用于root队列)
[p|b]fifo:简单先进先出
pfifo_fast:根据数据包的tos将队列划分到3个band,每个band内部先进先出
red:Random Early Detection,带带宽接近限制时随机丢