我对使用 Linux tc 命令进行流量控制还比较陌生。因此,我正在尝试在同一网络中的两个主机上引入网络延迟、数据包丢失和损坏等问题。以下命令用于破坏从主机 A 的端口 20786 到主机 B 的端口 202 的所有流量。
sudo tc qdisc add dev eth0 root handle 1: prio priomap 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
sudo tc qdisc add dev eth0 parent 1:2 handle 20: netem corrupt 30%
sudo tc filter add dev eth0 parent 1:0 protocol ip u32 match ip sport 20786 0xffff flowid 1:2
sudo tc filter add dev eth0 parent 1:0 protocol ip u32 match ip dport 202 0xffff flowid 1:2
我如何确保数据包不会被损坏?我问这个问题是因为没有 TCP 错误控制来确保数据包不会被损坏吗?
答案1
如果数据包损坏,则它们将在目的地被丢弃,而源将(最终)重新传输它们。因此,您将在 Wireshark 中看到大量重新传输。损坏率为 30% 时,连接将有大量重新传输,因此速度会非常慢。