如何在 Linux 上模拟延迟和丢包?


为了模拟延迟或丢弃的数据包,我们可以使用 **netem**,它提供网络仿真功能,有助于测试协议。

**netem** 的工作原理是通过模拟广域网的特性来测试协议。

**netem** 有不同的版本,当前的稳定版本允许我们模拟数据包的可变延迟、丢失、重新排序和复制。

我们可以使用网络仿真器两种方式,第一种是最基本的方式,我们可以通过以下简单的步骤启用 **netem** 内核组件。

Networking ->
   Networking Options ->
      QoS and/or fair queuing ->
         Network emulator

或者我们可以使用命令行,因为命令行工具 **‘tc’** 用于 **netem** 内核。

让我们探索一些命令行工具 **tc** 的不同示例,我们将首先模拟广域网络延迟,然后讨论数据包丢失。

模拟广域网络延迟

命令

# tc qdisc add dev eth0 root netem delay 100ms

现在,如果我们对本地网络上的主机进行简单的 ping 测试,我们会看到延迟增加了 100 毫秒。延迟通常受内核时钟分辨率 (HZ) 的限制。

我们也可以在不更改 **qdisc** 的情况下导致延迟,为此请考虑以下所示的命令:

# tc qdisc change dev eth0 root netem delay 100ms 10ms

上述命令将导致添加的延迟为 100ms ± 10ms。

Learn Linux/Unix in-depth with real-world projects through our Linux/Unix certification course. Enroll and become a certified expert to boost your career.

数据包丢失

我们可以使用百分比在 ‘tc’ 命令中指定数据包丢失。

考虑以下所示的模拟相同情况的命令:

命令

# tc qdisc change dev eth0 root netem loss 0.1%

上述命令将导致 1/1000(即 1/10 个百分点)的数据包被随机丢弃。

更新于:2021-07-31

562 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告