流量控制器TC(Traffic Control)用于Linux内核的流量控制,主要是通过在输出端口处建立一个队列来实现流量控制。
一、TC规则
1、流量控制方式:
- SHAPING(限制) 当流量被限制,它的传输速率就被控制在某个值以下。限制值可以大大小于有效带宽,这样可以平滑突发数据流量,使网络更为稳定。shaping(限制)只适用于向外的流量。
- SCHEDULING(调度) 通过调度数据包的传输,可以在带宽范围内,按照优先级分配带宽。SCHEDULING(调度)也只适于向外的流量。
- POLICING(策略) SHAPING用于处理向外的流量,而POLICIING(策略)用于处理接收到的数据。
- DROPPING(丢弃) 如果流量超过某个设定的带宽,就丢弃数据包,不管是向内还是向外。
2、流量控制处理对象:
- qdisc(排队规则)
- class(类别)
- filter(过滤器)。
1.qdisc
1.1 CLASSLESS QDisc(不可分类QDisc)一般不用
不可分类QDISC包括:
- [p|b]fifo
- pfifo_fast
- red
- sfq
- tbf
不可分类QDisc的配置:
如果没有可分类QDisc,不可分类QDisc只能附属于设备的根。它们的用法如下:
tc qdisc add dev DEV root QDISC QDISC-PARAMETERS
要删除一个不可分类QDisc,需要使用如下命令:
tc qdisc del dev DEV root
一个网络接口上如果没有设置QDisc,pfifo_fast就作为缺省的QDisc。
1.2 CLASSFUL QDISC(分类QDisc)
可分类QDISC包括:
- CBQ
- HTB
- PRIO
- hfsc
2.CLASS(类)
某些QDisc(排队规则)可以包含一些类别,不同的类别中可以包含更深入的QDisc(排队规则),通过这些细分的QDisc还可以为进入的队列的数据包排队。通过设置各种类别数据包的离队次序,QDisc可以为设置网络数据流量的优先级。
3.FILTER(过滤器)
Filter(过滤器)用于为数据包分类,决定它们按照何种QDisc进入队列。无论何时数据包进入一个划分子类的类别中,都需要进行分类。分类的方法可以有多种,使用fileter(过滤器)就是其中之一。使用filter(过滤器)分类时,内核会调用附属于这个类(class)的所有过滤器,直到返回一个判决。如果没有判决返回,就作进一步的处理,而处理方式和QDISC有关。需要注意的是,filter(过滤器)是在QDisc内部,它们不能作为主体。
二、TC控制命令
tc可以使用以下命令对QDisc、类和过滤器进行操作:
add
在一个节点里加入一个QDisc、类或者过滤器。添加时,需要传递一个祖先作为参数,传递参数时既可以使用ID也可以直接传递设备的根。如果要建立一个QDisc或者过滤器,可以使用句柄(handle)来命名;如果要建立一个类,可以使用类识别符(classid)来命名。
remove/del
删除有某个句柄(handle)指定的QDisc,根QDisc(root)也可以删除

最低0.47元/天 解锁文章
IP限速&spm=1001.2101.3001.5002&articleId=105961327&d=1&t=3&u=2f2325793e8f4c21b4180a175728039b)
4399

被折叠的 条评论
为什么被折叠?



