🦖 ECMP: балансировка трафика на уровне маршрутизации
Когда говорят о балансировке, то чаще вспоминают L4/L7-балансировщики. Но распределять трафик можно и ниже - прямо на уровне маршрутизации. Для этого существует ECMP - Equal-Cost Multi-Path.
Суть простая: если до одной и той же сети есть несколько маршрутов с одинаковой метрикой, роутер может использовать их параллельно, а не держать один основным, а остальные про запас.
Что это дает:
распределение нагрузки между несколькими линками;
лучшее использование полосы;
отказоустойчивость - при падении одного пути трафик уходит в оставшиеся.
Важный момент: ECMP обычно балансирует не каждый пакет как попало, а по хэшу потока. Например, учитываются source IP, destination IP, порты, протокол и весь конкретный flow идет по одному пути.
Это нужно, чтобы не получить reordering пакетов и не сломать TCP-сессии.
То есть два клиента могут уйти разными маршрутами, но один и тот же TCP-flow обычно будет идти стабильно по одному next-hop.
🤩 Где часто ошибаются:
▪️ думают, что ECMP всегда делит трафик идеально 50/50. На деле распределение зависит от числа flow и алгоритма хэширования.
▪️ путают ECMP с failover. ECMP - это не только резервирование, а именно одновременное использование нескольких равных путей.
▪️ забывают про asymmetry. В одну сторону трафик может пойти одним путем, в другую - другим. Для stateful-устройств это иногда становится проблемой.
ECMP хорошо работает там, где сеть и маршрутизация изначально под это спроектированы. Если просто включить ради баланса, можно получить странное распределение, проблемы с firewall state tracking и сложную диагностику.
#network #routing
🧑💻 NetworkAdmin
Post #855
1.57K
- 👍 7
- ❤ 2