Linux: симуляция переупорядочения пакетов - PullRequest
3 голосов
/ 11 октября 2010

Я хотел бы смоделировать переупорядочение пакетов для пакетов UDP в Linux, чтобы измерить производительность и отказоустойчивость моего приложения.Есть ли простой способ сделать это?

Ответы [ 3 ]

4 голосов
/ 11 октября 2010

просмотр WANEM

Таким образом, WANem позволяет команде разработчиков приложений настроить прозрачный шлюз приложений, который можно использовать для моделирования характеристик WAN, таких как задержка в сети, потеря пакетов, пакеткоррупция, разъединения, переупорядочение пакетов, джиттер и т. д.

3 голосов
/ 11 октября 2010

Вы можете использовать функцию "netem", встроенную в ядро ​​Linux. Поставляется с большинством современных дистрибутивов. netem - это модуль дисциплины управления трафиком, который намеренно задерживает, отбрасывает и переупорядочивает пакеты и имеет широкие возможности настройки.

Это работает только для отправки пакетов (поскольку очереди только исходящие), поэтому вы можете разместить хост маршрутизатора с netem между двумя тестовыми машинами и запустить netem на обоих интерфейсах (с разными параметрами, если хотите).

Самый простой способ добиться этого - запустить netem в виртуальной машине для маршрутизации между двумя сетями виртуальных машин. Я обнаружил, что это очень удобно.

2 голосов
/ 11 октября 2010

Вы можете попробовать scapy . Это библиотека Python для управления пакетами. Вы можете захватить сеанс pcap, используя tcpdump , wireshark, что угодно, а затем воспроизвести захваченные пакеты в произвольном порядке с помощью scapy.

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

В зависимости от того, как вы перехватили пакеты, вам может потребоваться отправить (уровень 3), а не sendp (уровень 2)

...