网络带宽限制之 – Traffic Control 流控原理

TC(Traffic Control)是Linux内核中目前用于网络带宽流控非常成熟的一个工具,通过使用TC灵活的创建各种队列、并定义队列中的数据包被发送的方式, 从而实现对流量的控制。比如开源的 mesos 使用tc来限制job流量,并在twitter公司内大规模推广

Linux高级路由控制:http://lartc.org/howto/

TC文档:http://tldp.org/HOWTO/Traffic-Control-HOWTO/index.html

1. 原理

TC中主要包含两种队列:一类是无类队列(classless qdiscs)规定, 另一类是分类队列(classful qdiscs)规定。 无类队列规定相对简单,而分类队列规定则引出了分类和过滤器等概念,使其流量控制功能增强。

无类队列规定是对进入网络设备的数据流不加区分统一对待的队列规定。使用无类队列规定形成的队列能够 接受数据包以及重新编排、延迟或丢弃数据包。这类队列规 定形成的队列可以对整个网络设备的流量进行整形, 但不能细分各种情况。