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

В настоящее время используетсяmdpв Arch Linux и Termux на Android, инструмент для создания уценки.

image

Использование

$ mdp {file}.md

Псевдоним Slick

md() {
  fileName=${1:-"README.md"}
  mdp "$fileName"
}

2
09.04.2020, 14:46
1 ответ

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

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

Вы можете проверить это, запросив у ядра маршрут, который оно выберет. Например, если адреса на m1 и m2 были 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 был в m1 локальной сети (и интерфейс m2 был отключен, чтобы избежать возможных несвязанных проблем ARP ), ping 192.0.2.1покажет задержку, потому что будет использоваться m1 :

# 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-канала, который также задерживается.

1
28.04.2021, 23:18

Теги

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