我想知道是否有人有设置专门为通过网络发送/接收请求时的性能不佳而设计的环境的经验。我正在开发一个应用程序,并希望使其在性能极差的网络上也能保持稳健。有谁知道是否可以将路由器配置为:
- 间歇性丢弃数据包
- 间歇性地在数据包中引入延迟
- 数据包中的数据损坏(这不是必需的,因为它需要打开数据包,更改数据并更新校验和,因为 TCP 层会捕获此类问题)
如果路由器无法实现,是否可以配置一台计算机作为路由器并执行此操作?
非常感谢!
答案1
如果您使用 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% 的转发数据包。
答案2
我已经成功使用万奈姆模拟德国和印度之间 WAN 的网络状况。WANem 以可启动 CD 或虚拟设备的形式提供。您只需启动它,配置所需的网络属性,然后通过它路由您的流量。引用官方描述:
WANem 是一个广域网模拟器,旨在在 LAN 环境中进行应用程序开发/测试时提供广域网/互联网的真实体验。通常,应用程序开发人员在 LAN 上开发应用程序,而其预期目的可能是客户端通过 WAN 甚至 Internet 访问应用程序。因此,WANem 允许应用程序开发团队设置透明的应用程序网关,该网关可用于模拟 WAN 特性,如网络延迟、数据包丢失、数据包损坏、断开连接、数据包重新排序、抖动等。WANem 可用于模拟数据/语音流量的广域网条件,并根据广泛接受的 GPL v2 许可证发布。
答案3
如果可以的话,将上行链路端口设置为 10Mbps 和半双工。然后使用网络上的主机 ping 一下。这应该可以让你轻松自如 :D