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

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

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

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

Предположим, что есть три ВМ: A, B, C

  | 

A |  <- 5 μs delay -> B 

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

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

Создание задержек можно моделировать с помощью алгоритмов формирования трафика, поддерживаемых ядром 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 мс при случайном изменении трафика на сервер B.