Linux: 模拟数据包重排序

3

我想在Linux上模拟UDP数据包的重新排序,以测量我的应用程序的性能和容错性。

有没有简单的方法可以做到这一点?

3个回答

4

了解一下WANEM

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


3
您可以使用内置在Linux内核中的“netem”功能,它随大多数现代版本的发行版一起提供。netem是一个流量控制模块,可以故意延迟、丢弃和重新排序数据包,并且具有高度可配置性。
由于队列仅限于出站数据包,因此这仅适用于发送数据包(所以您可能希望在两个测试机之间放置一个带有netem的路由器主机,并在两个接口上运行netem(如果您喜欢,则具有不同的参数)。
最简单的方法是在虚拟机中运行netem,以在两个虚拟机网络之间进行路由。我发现这非常方便。

2
你可以尝试使用scapy。它是一个Python库,用于操作数据包。你可以使用tcpdump、wireshark或其他工具来捕获pcap会话,然后使用scapy以任意顺序重放捕获的数据包。
a=rdpcap("/spare/captures/isakmp.cap")
for pkt in a.reverse():
   sendp(pkt)

根据你抓取数据包的方式,可能需要使用send(第三层)而不是sendp(第二层)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接