Linux:数据包重新排序模拟

时间:2010-10-10 22:33:14

标签: linux testing networking

我想在Linux上模拟重新排序UDP数据包的数据包,以衡量我的应用程序的性能和容错能力。 有一种简单的方法可以做到这一点吗?

3 个答案:

答案 0 :(得分:4)

查看WANEM

  

WANem因此允许应用程序   开发团队设置一个   透明的应用程序网关   可用于模拟WAN   网络延迟等特征,   数据包丢失,数据包损坏,   断开连接,数据包重新排序,   抖动等

答案 1 :(得分:3)

您可以使用Linux内核中内置的“netem”功能。它随大多数现代发行版一起提供。 netem是一个交通控制学科模块,故意延迟,丢弃和重新排序数据包,并且具有高度可配置性。

这仅适用于发送数据包(因为队列仅限于出站),因此您可能希望在两个测试机器之间放置一个带有netem的路由器主机,并在两个接口上运行netem(如果您愿意,可以使用不同的参数)。

实现此目的的最简单方法是在VM中运行netem以在两个VM网络之间进行路由。我发现这很方便。

答案 2 :(得分:2)

您可以尝试scapy。这是一个操纵数据包的python库。您可以使用tcpdump,wireshark等来捕获pcap会话,然后使用scapy以任意顺序重放捕获的数据包。

a=rdpcap("/spare/captures/isakmp.cap")
for pkt in a.reverse():
   sendp(pkt)

根据您捕获数据包的方式,您可能需要发送(第3层)而不是sendp(第2层)