【Linux网络】理解tc命令
tctraffic control即交通控制。1.基本工作流程使用tc命令需要理解三个Linux内核网络中的概念qdisc是Queue Discipline的缩写中文是队列规则就是数据包怎么入队每个网口都有一个总队列。class子出口每个出口有自己的具体限制规则。这是逻辑上的出口只是为了便于说明也可以叫其他名字。filter规定了总队列中的哪类数据进入到哪个子队列。qdisc 是挂在网卡上的“总调度员”class 是它手下的“分车道”各有各的限速而 filter 就是站在入口的“交警”根据数据包的IP/端口把它们指挥进对应的高速公路”出口“。所以tc命令的作用是识别网络数据流 限制网络数据流可以精确到每一个数据包。2.tc的五大应用功能一般用tc命令实现以下五大功能流量整形流量调度流量策略流量丢弃网络模拟对数据包精准控制正是实现这些功能的核心机理。2.tc命令底层实现tc是用户态程序它需要和内核通信才能实现对网络协议栈的控制。通信方式不是一般的系统调用而是网络模块特有的Netlink通信方式。tc 命令 (用户态) → 构建 Netlink 消息 → 通过 socket() 等系统调用发送 → 内核 Netlink 子系统接收 → 内核 TC 子系统执行操作。这里的关键在于具体的“队列规则”逻辑完全是在Linux内核中实现的。tc 工具本身不执行任何流量整形或排队它只是一个“配置下发器”其真正的威力来自于内核中复杂而高效的 TC 子系统。