Linux:包重排序模拟

Linux:包重排序模拟,linux,testing,networking,Linux,Testing,Networking,我想在Linux上模拟UDP数据包的重新排序,以衡量我的应用程序的性能和容错性。 有没有一种简单的方法可以做到这一点?仔细研究 因此,WANem允许应用程序 开发团队要建立一个 透明应用网关 可以用来模拟广域网 网络延迟等特性, 数据包丢失,数据包损坏, 断开连接、数据包重新排序、, 抖动等 你可以试试。这是一个用于处理数据包的python库。您可以使用、wireshark等捕获pcap会话,然后使用scapy以任意顺序重播捕获的数据包 a=rdpcap("/spare/captures/isa

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

仔细研究

因此,WANem允许应用程序 开发团队要建立一个 透明应用网关 可以用来模拟广域网 网络延迟等特性, 数据包丢失,数据包损坏, 断开连接、数据包重新排序、, 抖动等

你可以试试。这是一个用于处理数据包的python库。您可以使用、wireshark等捕获pcap会话,然后使用scapy以任意顺序重播捕获的数据包

a=rdpcap("/spare/captures/isakmp.cap")
for pkt in a.reverse():
   sendp(pkt)
根据需要发送(第3层)而不是发送(第2层)的数据包的CATpure方式,您可以使用Linux内核内置的“netem”功能。它与大多数现代发行版一起发行。netem是一个流量控制规程模块,故意延迟、丢弃和重新排序数据包,并且具有高度可配置性

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

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