Задержка внедрения между виртуальными машинами в VLAN

Мы хотели бы смоделировать влияние локальности с помощью виртуальных машин в публичном облаке (скажем, AWS EC2).

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

Предположим, что существует три виртуальных машины: A, B, C

  | 

A |  <- 5 μs delay -> B 

  | <---- 25 μs delay ----> C

Как нам проще всего ввести задержку 5 мкс (или любое произвольное значение) для соединений между A и B по сравнению с задержкой 25 мкс между A и C? Приветствуется любое решение (изменение уровня ядра Linux на каждой виртуальной машине / создание оверлейной сети / ...).

4
задан 24 February 2017 в 10:18
1 ответ

Создание задержек можно смоделировать с помощью алгоритмов формирования трафика, поддерживаемых ядром Linux. Из руководства netem :

# tc qdisc add dev eth0 root handle 1: prio
# tc qdisc add dev eth0 parent 1:3 handle 30: tbf rate 20kbit buffer 1600 limit  3000
# tc qdisc add dev eth0 parent 30:1 handle 31: netem  delay 200ms 10ms distribution normal
# tc filter add dev eth0 protocol ip parent 1:0 prio 3 u32  match ip dst <IP_of_server_B>/32 flowid 1:3

Который, при запуске на сервере A, создает задержку 200 мс со случайным изменением ± 10 мс в трафике к серверу B.

4
ответ дан 3 December 2019 в 03:28

Теги

Похожие вопросы