awesome-everything EN
↑ Обратно к восхождению

Сети и протоколы

Маршрутизация и форвардинг

Суть Как роутер решает куда отправить пакет: longest-prefix match в FIB, агрегация CIDR, BGP между автономными системами и ECMP по равностоимостным путям.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на middle-высоте — в небе
◷ 14 min

Когда пакет приходит на роутер, у роутера есть микросекунды чтобы решить куда его отправить. Он обращается к таблице с миллионами destination-префиксов, находит наилучшее совпадение и передаёт пакет — всё на line rate. Понимание этого механизма объясняет почему единственный неверный BGP-анонс может перенаправить глобальный трафик и почему ECMP может создавать проблемы с elephant flows.

CIDR и longest-prefix match

IPv4-адреса раньше делились на жёсткие классы (A: /8, B: /16, C: /24). Classless Inter-Domain Routing (CIDR, RFC 4632) заменил классы префиксами переменной длины: любой префикс от /1 до /32 допустим.

CIDR-префикс вроде 10.0.0.0/24 означает «первые 24 бита идентифицируют сеть; последние 8 бит идентифицируют хост». Этот префикс покрывает 256 адресов.

ПрефиксРазмерИспользуемых хостов
/24256 адресов254 (минус .0 сеть, .255 broadcast)
/1665 536 адресов65 534
/304 адреса2 (для point-to-point линков)
/816 777 216 адресов16 777 214

Когда несколько префиксов совпадают с destination, роутер выбирает longest match (наиболее специфичный префикс). Пакет к 10.0.0.5 совпадает с 10.0.0.0/8 и 10.0.0.0/24; побеждает /24 потому что он специфичнее.

CIDR позволяет агрегировать маршруты: единственный анонс 10.0.0.0/8 покрывает 16 миллионов адресов. Без агрегации BGP-таблица превысила бы практические лимиты памяти.

Таблица маршрутизации vs таблица форвардинга (FIB)

Таблица маршрутизации: строится протоколами маршрутизации (BGP, OSPF, IS-IS). Хранит все известные префиксы, их атрибуты и альтернативы. Может иметь миллионы записей.

Forwarding Information Base (FIB): таблица data plane которую роутер использует для каждого пакета. Это урезанный per-destination next-hop view скомпилированный из таблицы маршрутизации. Реализован в TCAM-hardware на современных роутерах для line-rate lookup’ов.

Разделение даёт чистую архитектуру:

  • Control plane (software): получает обновления протоколов маршрутизации, вычисляет лучшие пути, пишет таблицу маршрутизации, синхронизирует FIB.
  • Data plane (hardware ASIC): использует FIB для каждого пакета на скорости терабит в секунду.

Обновления таблицы маршрутизации поступают от BGP/OSPF → таблица маршрутизации → FIB за миллисекунды. Баги в data plane (редкость) проявляются как тихая потеря пакетов, а не очевидные крэши.

ARP и Neighbor Discovery

Зная next-hop IP, роутер должен узнать MAC-адрес этого next-hop чтобы построить link-layer фрейм. ARP (IPv4) бродкастит «кому принадлежит 10.0.0.5?» в локальной подсети; владелец отвечает своим MAC. Роутер кэширует это.

Neighbor Discovery (ND) — эквивалент IPv6: использует ICMPv6 multicast вместо broadcast, и также обрабатывает router advertisements, автоконфигурацию адресов и обнаружение дублирующихся адресов.

Масштабы маршрутизации
Размер глобальной BGP-таблицы (2026)
~1 000 000 префиксов
Типичное кол-во путей ECMP
4–64 равностоимостных пути
Таймаут ARP-кэша (Linux)
60 с
Время конвергенции BGP (тюнинг)
1–5 с
Конвергенция OSPF (датацентр)
~200 мс
TCAM lookup (hardware FIB)
наносекунды

BGP: протокол маршрутизации Интернета

Интернет разделён на Автономные Системы (AS) — сети управляемые одной организацией, каждая с уникальным номером AS. Внутри AS interior gateway протоколы (OSPF, IS-IS) вычисляют маршруты. Между AS — BGP (RFC 4271) согласовывает какие префиксы каждая AS анонсирует и предпочитает.

BGP — path-vector протокол: каждый маршрут несёт список номеров AS которые он прошёл. Роутер предпочитает более короткий AS-path (меньше AS для прохождения), с множеством тай-брейкеров (local preference, MED, community атрибуты). BGP намеренно policy-driven: AS может предпочесть дорогой прямой пиринг дешёвому транзиту или полностью избегать определённых AS.

Route leaks и хайджеки. Неправильно настроенная или злонамеренная AS может анонсировать префикс которым не владеет. Трафик для легитимного владельца перенаправляется к атакующему. RPKI (Resource Public Key Infrastructure) позволяет владельцам префиксов подписывать свои анонсы чтобы получатели могли проверить подлинность (подробнее в уроке по безопасности).

ECMP: распределение трафика по равностоимостным путям

Когда роутер имеет несколько равностоимостных путей к destination, он использует ECMP (Equal-Cost Multi-Path) для распределения нагрузки. Роутер хеширует 5-tuple (source IP, source port, destination IP, destination port, protocol) и выбирает путь по хешу mod число-путей. Все пакеты одного TCP-флоу хешируются к одному пути (сохраняя порядок внутри флоу); разные флоу распределяются по путям.

Датацентровые Clos-фабрики (leaf-spine) полагаются на ECMP для bisection bandwidth. Подводные камни:

  • Elephant flows: один большой флоу насыщает один путь пока другие простаивают.
  • Hash polarisation: одна и та же хеш-функция применённая на последовательных хопах вызывает систематический дисбаланс.
  • Современные дизайны используют weighted ECMP, flowlet switching (разбивка флоу во время тихих моментов) или CONGA для балансировки с учётом нагрузки.
Почему это работает

Почему BGP допускает асимметричную маршрутизацию. Каждая AS самостоятельно выбирает исходящий путь per destination. Путь пакета на выход может отличаться от пути ответа на вход — две стороны разговора могут проходить через совершенно разные AS. Это легально и распространено (называется асимметричной маршрутизацией). Важно для задержки (исходящий: 60 мс, обратный: 150 мс из-за обходного пути), для интерпретации traceroute (трассировка в каждом направлении отдельно) и для stateful firewall’ов (которые могут видеть только одно направление трафика).

Проследи
1/5

Проследите пакет от домашнего PC в Лондоне до сервера в Сан-Франциско.

1
Step 1 of 5
Пакет покидает PC. Первый роутер?
2
Locked
Пакет входит в ISP. Что делает edge router ISP?
3
Locked
Пакет проходит ~10–15 хопов через несколько AS. Что делает каждый роутер?
4
Locked
Сегмент через несколько AS использует MPLS. Что меняется?
5
Locked
Пакет достигает сети назначения. Что происходит?
Викторина

Что означает CIDR-префикс /24?

Викторина

Почему роутер ведёт и таблицу маршрутизации, и таблицу форвардинга (FIB)?

Расставь шаги по порядку

Расставьте порядок разрешения маршрута на роутере при получении пакета:

  1. 1 Декрементировать TTL; дропнуть и отправить ICMP если TTL равен 0
  2. 2 Найти destination IP в FIB (longest-prefix match)
  3. 3 Определить next-hop IP и выходной интерфейс
  4. 4 ARP/ND разрешить MAC next-hop если не закэширован
  5. 5 Построить новый L2-фрейм с destination MAC
  6. 6 Передать фрейм через выходной интерфейс
Вспомните перед уходом
  1. 01
    Что такое longest-prefix match и зачем он нужен?
  2. 02
    Объясните почему единственный неверный BGP-анонс может выключить домен глобально.
  3. 03
    Почему ECMP может вызывать проблемы с elephant flows и что делают современные дизайны?
Итог

Маршрутизация строит глобальную карту достижимых префиксов; форвардинг использует её на line rate. CIDR-префиксы переменной длины обеспечивают агрегацию — анонс /8 покрывает 16 миллионов адресов и держит BGP-таблицу управляемой. Роутеры разделяют control plane (таблица маршрутизации, обновления BGP/OSPF) от data plane (FIB в TCAM-hardware, наносекундные lookup’и). BGP распространяет достижимость префиксов между Автономными Системами через path-vector с AS-path; он policy-driven и по дизайну допускает асимметричную маршрутизацию. ECMP распределяет флоу по равностоимостным путям через 5-tuple хеш — отлично для суммарной пропускной способности, проблематично для elephant flows.

Связанные уроки
углубляется в
Продолжить восхождение ↑MTU и фрагментация
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources3
expand
  1. 01
  2. 02
  3. 03

Trademarks belong to their respective owners. Editorial reference only.