Виртуальная сеть для воспроизводимых тестов

Я разрабатываю программный продукт, который использует сетевые функции, такие как связывание устройств по протоколам множественной адресации. Как и при любой разработке протокола, тест-код должен учитывать задержку, отбрасывание пакетов и т. Д. Поэтому я пытаюсь создать виртуальную сетевую среду, в которой я могу проводить контролируемые, воспроизводимые тесты.

Две основные функции, которые я хочу протестировать (например, измерять производительность, стабильность и т. Д.):

  • SCTP множественные ассоциации, где клиент использует несколько конечных точек.
  • Устройство склеивания нескольких устройств.

Как уже упоминалось, я хочу иметь возможность управлять трафиком между узлами в сети, а также фильтровать трафик для имитации устаревших NAT и т. Д.

Пример теста:

Предполагается, что этот тест будет эмулировать клиента с четырьмя сетевыми картами (Wi-Fi, USB, Bluetooth, Ethernet), обменивающимися данными через Интернет с сервером с одним интерфейсом.

Я хотел бы создать виртуальную сеть, которая имитирует этот макет. Одно устройство эмулирует узел WAN, а четыре других представляют клиентские интерфейсы. Существует ограничение полосы пропускания в 1 Мбит / с между интерфейсами клиента и интерфейсом сервера, а потеря пакетов составляет 1%.

Создается связующее устройство из четырех клиентских интерфейсов. Сервер iperf связан с адресом WAN, а клиент связан с адресом связывающего устройства и подключен к серверу WAN.

1 ответ

Похоже, вы хотите использовать что-то вроде 'tc' (см. http://www.linuxcommand.org/man_pages/tc8.html) на различных интерфейсах, используя компонент ядра 'netem'.

Примером может быть:

tc qdisc add dev eth1 root handle 1: netem delay 500ms 125ms reorder 3% loss 2%

См. http://man.he.net/man8/tc для справочной страницы по 'tc'.

См. http://www.linuxfoundation.org/collaborate/workgroups/networking/netem для получения информации о том, как использовать модуль netem с tc.

Другие вопросы по тегам