Формирование трафика с использованием tc-netem на macvlan

Формирование трафика с использованием tc-netem на macvlan

Я настраиваю виртуальную сеть с помощью macvlans и подключил traffic-control tc к каждому из них. Я установил задержку для каждого в 90 мс. Но на ping получаю время 0,02 секунды. Почему tc не работает на macvlan?

Я использую следующие команды:

tc qdisc add dev m1 root netem delay 90ms
tc qdisc add dev m2 root netem delay 90ms

и затем выполните ping с IP-адреса m1 на IP-адрес m2. m1 и m2 — это macVLAN.

решение1

Ваша проблема связана с тем, как выполняется маршрутизация, а не стк,нетемилимаквлан.

При достижении с IP-адреса, принадлежащего хосту, другого IP-адреса, принадлежащего хосту, маршрут использует интерфейс lo(loopback), сверяясь с локальной таблицей маршрутизации (скрытой, try ip route show table local) и никогда не использует фактические интерфейсы, которым были назначены IP-адреса.

Вы можете проверить это, спросив ядро, какой маршрут оно выберет. Например, если адреса нам1им2были 192.0.2.2/24 и 192.0.2.3/24:

# ip route get from 192.0.2.2 to 192.0.2.3
local 192.0.2.3 from 192.0.2.2 dev lo table local uid 0 
    cache <local> 

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

В моем гипотетическом случае выше, если 192.0.2.1 был вм1локальная сеть (им2интерфейс был отключен, чтобы избежать возможных не связанных с этим проблем ARP), ping 192.0.2.1покажет задержку, потому чтом1будет использоваться:

# ip route get from 192.0.2.2 192.0.2.1
192.0.2.1 from 192.0.2.2 dev m1 uid 0 
    cache 

Самый первый пинг обычно влечет за собой задержку в два раза большую, поскольку до этого выполняется ARP-запрос для разрешения IP-соединения, который также задерживается.

Связанный контент