配置路由器以丢弃数据包,引入延迟,破坏数据


13

我想知道是否有人在设置通过网络发送/接收请求时故意针对不良性能而设计的环境方面有任何经验。我正在开发一个应用程序,并希望使其在性能极差的网络上变得强大。有谁知道是否可以将路由器配置为:

  1. 间歇性丢包
  2. 间歇性地在数据包中引入延迟
  3. 破坏数据包中的数据(由于TCP层会捕获此类问题,因此不需要打开数据包,更改数据和更新校验和,因此不需要此数据)

如果不能在路由器上进行配置,是否可以将计算机配置为路由器并执行此操作?

非常感谢!

Answers:


17

如果您使用Linux机顶盒作为路由器,则netfilter有多种干扰数据包流量的方法。

random模块可用于随机丢弃数据包。例如,这:

iptables -A FORWARD -m random --average 10 -j DROP

将导致路由器以10%的平均速率随机丢弃数据包。

您还可以使用XOR目标破坏随机数据包,例如

iptables -A FORWARD -m random --average 1 -j XOR --key "junktoxortomypacket"

通过与从给定字符串派生的密钥进行异或,将损坏转发的数据包的1%。


听起来很棒!谢谢史蒂文!您设置过吗?什么Linux发行版?
标记

我已经成功地使用Debian为小型网络创建了路由器。但是实际上,几乎所有带有最新内核的Linux发行版都可以正常运行,因为netfilter已内置在内核中。我从来没有尝试过像这里描述的那样创建一个“坏的”路由器,但是对于一个懒惰的周日下午来说,这可能是一个有趣的项目……
史蒂文星期一

如果您使用的是iptables版本1.3.5,则上述命令可能会出现错误,并显示消息“ iptables v1.3.5:无法加载匹配的'random'”。下面为我工作的命令- iptables的-A FORWARD -m统计--mode随机--probability 0.2 -j DROP
prashantsunkari

3

我已经成功地使用WANem模拟了德国和印度之间WAN的网络状况。WANem作为可引导CD或虚拟设备提供。您只需启动它,配置所需的网络属性,然后通过它路由您的流量。引用官方说明:

WANem是一种广域网仿真器,旨在在LAN环境中的应用程序开发/测试过程中提供广域网/ Internet的真实体验。通常,应用程序开发人员在LAN上开发应用程序,而其预期目的可能是客户端通过WAN或Internet访问相同的应用程序。因此,WANem允许应用程序开发团队设置透明的应用程序网关,该网关可用于模拟WAN特性,例如网络延迟,数据包丢失,数据包损坏,断开连接,数据包重新排序,抖动等。WANem可用于模拟广域网数据/语音流量的网络条件,并根据广泛接受的GPL v2许可证发布。


2

如果可以,将上行链路端口设置为10Mbps和半双工。然后,使用网络上的主机ping出网络连接。那应该让你绝育:D


还将ping上的数据包大小也设置为比默认值大得多。这是一种模拟饱和/通常不良的网络链接的非常有效且简便的方法-如果您可以故意将其带宽设置为低于“攻击”计算机的带宽,则可以削弱特定的连接,如前所述。
安德鲁·巴伯

您也可以弄混MTU,选择一个真实的奇数球大小:)
SpacemanSpiff 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.