流量控制Traffic Control
简称TC
,表示网络设备接收和发送数据包的排队机制。比如,数据包的接收速率、发送速率、多个数据包的发送顺序等。
Linux实现了流量控制子系统,它包括两部分:
- 内核部分的
traffic control
框架 - 用户态的规则配置工具:
iproute2
软件包中的tc
程序
它们有些类似于内核态的netfilter
框架和用户态的iptables
程序。但相较于netfilter
, 关于tc
的资料非常少,并且也较为古老,彻底理解它的机制还是需要对照源码。
Traffic Control
的作用包括以下几种:
- 调整(
Shaping
): 通过推迟数据包发送来控制发送速率,只用于网络出方向(egress
) - 时序(
Scheduling
):调度不同类型数据包发送顺序,比如在交互流量和批量下载类型数据包之间进行发送顺序的调整。只用于网络出方向(egress
) - 监督(
Policing
): 根据到达速率决策接收还是丢弃数据包,用于网络入方向(ingress
) - 丢弃(
Dropping
): 根据带宽丢弃数据包,可以用于出入两个方向