在 python 中模拟 UDP 中的丢包

Simulate packet loss in UDP in python

我应该在Stop-and-wait协议中模拟10^-2的丢包率,即0.01,这意味着传输的100个数据包中有1个丢失。假设我要发送 1000 个数据包,如何从整个传输过程中发送的 100 个数据包中准确丢弃 1 个随机数据包?

速率为 0.01 并不意味着 100 个数据包中恰好有​​ 1 个被丢弃。这意味着每个数据包都有 1% 的几率丢失。在丢包相互独立的假设下,实际丢包数量将遵循binomial distribution.

对于您生成的每个数据包,检查随机 Uniform(0,1) 是否小于或等于损失比例 p,在您的情况下为 0.01。如果是,则该数据包丢失,否则通过。如果您增加或减少数据包总数 N,则此方法会扩展。预期的损失数量将是 N * p,但如果您多次重复实验,将会出现变化。