TC(Traffic Control)命令—linux自带高级流控
tc命令——linux基于ip进行流量限制
原理部分参考多方文档进行整理,本文主要目的是记录几个限速的实例来进行直观认识和学习(git限速1、2)。
参考:
- http://blog.csdn.net/zhongbeida_xue/article/details/54613750
- http://www.cnblogs.com/endsock/archive/2011/12/09/2281519.html
- http://blog.163.com/ninja_wk/blog/static/989155620084280154811/
- http://www.chinaunix.net/jh/4/16110.html
- https://my.oschina.net/u/3497124/blog/1632937
- http://blog.csdn.net/qinyushuang/article/details/46611709
一、tc原理
Linux操作系统中的流量控制器TC(Traffic Control)用于Linux内核的流量控制,主要是通过在输出端口处建立一个队列来实现流量控制。 接收包从输入接口进来后,经过流量限制丢弃不符合规定的数据包,由输入多路分配器进行判断选择:
- 如果接收包的目的主机是本主机,那么将该包送给上层处理,否则需要进行转发,将接收包交到转发块(Forwarding Block)处理。
- 转发块同时也接收本主机上层(TCP、UDP等)产生的包,通过查看路由表,决定所处理包的下一跳。
- 然后,对包进行排列以便将它们送到输出接口。
一般只能限制网卡发送的数据包,不能限制网卡接收的数据包,所以可以通过改变发送次序来控制传输速率。Linux流量控制主要是在输出接口排列时进行处理和实现的。