linux中的丢包

linux中的丢包,linux,simulation,packet-loss,Linux,Simulation,Packet Loss,我正在寻找一种可靠的方法,在linux中丢弃数据包,就好像你的网络不好一样。查看堆栈溢出(和internet),在中似乎指出了两种很好的可能性。这两个都应该有5%的数据包丢失 tc qdisc更改dev eth0根netem损失5% iptables-A输入-m统计-模式随机-概率0.05-j下降 然而,缔约国声明如下: 当本地使用损耗时(不是在网桥或路由器上),损耗为 向上层协议报告。这可能会导致TCP重新发送 表现得好像没有损失一样。测试协议响应时 丢失最好在网桥或路由器上使用netem 从

我正在寻找一种可靠的方法,在linux中丢弃数据包,就好像你的网络不好一样。查看堆栈溢出(和internet),在中似乎指出了两种很好的可能性。这两个都应该有5%的数据包丢失

  • tc qdisc更改dev eth0根netem损失5%
  • iptables-A输入-m统计-模式随机-概率0.05-j下降
  • 然而,缔约国声明如下:

    当本地使用损耗时(不是在网桥或路由器上),损耗为 向上层协议报告。这可能会导致TCP重新发送 表现得好像没有损失一样。测试协议响应时 丢失最好在网桥或路由器上使用netem

    从我(非常有限)的理解来看,两种解决方案(
    netem
    iptables
    )使用相同的解决方案,因此会有相同的缺点

    有没有办法不借助于在交换机或网桥上运行程序而准确地模拟丢弃的数据包?由于CRC将不得不重新请求数据包,破坏数据包是穷人“丢弃”数据包的方式吗


    谢谢。

    好吧,“老派”的做法是将电缆单侧隔离,并将电线暴露在移动天线或类似设备下,从而给电线增加一些真正的干扰。不完全准确,但真实。哈哈,我想我应该说,如果可能的话,我需要一种在软件中实现这一点的编程方式。这不是一个真正的答案,但在我看来,最简单的事情是拥有一个接近你想要模拟的网络配置。如果prod中有路由器,那么测试配置中应该有一些路由器。这并不一定意味着多个盒子,它可以是一个虚拟的设置。你可以挖掘的一个选项是在一小部分流量上引入一个疯狂的大延迟,然而,这又不是一个真正的答案,因为AFAIK
    tc
    不允许这样做。这可能是一个编写代码的机会:-)如果能够在路由器级别完成这项工作,那就太好了。如果是这样的话,那么netem会采取行动。我将不得不进一步调查此事。