Назад | Перейти на главную страницу

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

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

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

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

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

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

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

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

Похоже, вы хотите использовать что-то вроде 'tc' (se 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 для man-страницы на tc.

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