我正在使用 Linux 的流量控制 ( tc
) 实用程序,据我了解,该实用程序用于配置 Linux 内核数据包调度程序。我还使用netem
命令 intc
来添加延迟、丢弃或损坏流量。
我的主要问题是,是否netem
修改传输层数据报、IP 数据包或链路层帧(如以太网)?
我发现这一页它解释了Linux内核中的网络通信流程。它提到整形和排队规则是在“第 2 层:链路层(例如以太网)”中制定的。这是否意味着netem
在帧(第 2 层)上增加了损坏、丢失或延迟?
但是,既然tc filter
允许您将流量规则应用于某个 IP:端口对,这是否意味着它在传输层数据报(第 4 层)上运行?
答案1
tc
影响排队规则,即传出“数据包”发送到硬件的顺序。该实现对sk_buff
结构进行操作,并且文档sk_buff似乎暗示数据包格式是特定网络接口使用的任何格式(例如,以太网接口的以太网数据包)。
因此,我假设netem corrupt
在这一层上增加了损坏,这应该通过第 2 层校验和来发现(无论第 2 层用于特定接口)。
此外,还sk_buff
包含指向更高层有效负载的指针,这解释了为什么tc filter
可以对它们进行操作。