Протоколы маршрутизации
Предпосылки: IP и маршрутизация (роутер, таблица маршрутизации, TTL).
← Эталонные модели | Firewalls →
В предыдущих заметках роутер “знал”, куда отправить пакет — у него была таблица маршрутизации. Но откуда эта таблица берётся? В маленькой сети с тремя роутерами можно настроить маршруты вручную. Интернет — это десятки тысяч независимых сетей и сотни тысяч роутеров. Ручная настройка невозможна, маршруты постоянно меняются (аварии, новые каналы, перегрузки). Нужны протоколы, которые позволяют роутерам автоматически обмениваться информацией о топологии и строить маршруты.
Автономные системы
Интернет не управляется из одного центра. Он состоит из автономных систем (AS — Autonomous System) — сетей, управляемых одной организацией (провайдер, крупная компания, облачный провайдер). Каждая AS имеет уникальный номер (ASN). Amazon — AS16509, Google — AS15169, Cloudflare — AS13335.
Маршрутизация делится на два уровня. Внутри AS (Interior Gateway Protocol, IGP) — роутеры одной организации обмениваются информацией о внутренней топологии. Между AS (Exterior Gateway Protocol, EGP) — автономные системы обмениваются информацией о достижимости сетей.
OSPF: маршрутизация внутри автономной системы
OSPF (Open Shortest Path First) — протокол типа link-state: каждый роутер знает полную топологию сети и самостоятельно вычисляет кратчайший путь.
Как это работает. Каждый роутер рассылает LSA (Link-State Advertisement) — информацию о своих соседях и стоимости каналов до них. Все роутеры получают LSA от всех и строят одинаковую карту сети — базу данных link-state (LSDB). На основе этой карты каждый роутер вычисляет кратчайший путь до каждой сети.
При изменении топологии (упал канал, добавился роутер) затронутый роутер рассылает обновлённый LSA. Все роутеры пересчитывают маршруты. Сходимость (convergence) — время до полного обновления — в OSPF составляет секунды.
Для больших сетей OSPF поддерживает разделение на области (areas): LSA распространяются только внутри области, между областями передаётся агрегированная информация. Это снижает нагрузку на роутеры и ускоряет пересчёт.
BGP: маршрутизация между автономными системами
BGP (Border Gateway Protocol) — единственный протокол межсетевой маршрутизации в интернете. Каждая AS объявляет через BGP: “через меня можно добраться до сетей X, Y, Z”.
BGP — протокол типа path-vector: вместо полной карты сети каждый роутер знает путь (последовательность AS) до каждой сети. Когда AS16509 (Amazon) объявляет маршрут, в объявлении указан AS-path — через какие автономные системы проходит маршрут:
Сеть: 54.239.0.0/16
AS-path: 16509
|
v
AS-path: 3356 16509 (через Level3, потом Amazon)
|
v
AS-path: 6939 3356 16509 (через HE, Level3, Amazon)
Выбор маршрута. Когда BGP-роутер знает несколько путей до одной сети, он выбирает лучший по серии критериев: local preference (политика организации), AS-path length (короче = лучше), origin type, MED (Multi-Exit Discriminator). Короткий AS-path — основной критерий, но политики организации могут его перекрыть.
eBGP и iBGP. eBGP (external) — обмен маршрутами между разными AS на пограничных роутерах. iBGP (internal) — распространение полученных от eBGP маршрутов внутри AS.
BGP и реальность
BGP основан на доверии: AS объявляет свои сети, и соседи верят. BGP hijack — ситуация, когда AS (случайно или намеренно) объявляет чужие сети как свои. Трафик перенаправляется через атакующего. В 2008 году Pakistan Telecom случайно объявил маршрут к YouTube, и сервис стал недоступен во всём мире.
Для защиты используется RPKI (Resource Public Key Infrastructure) — криптографическая проверка, что AS имеет право объявлять конкретные сети. Внедрение RPKI идёт постепенно.
Looking Glass
Looking Glass — публичные инструменты, которые показывают, как конкретный роутер видит интернет: таблицу маршрутов BGP, AS-path до заданной сети, результаты traceroute. Провайдеры и Internet Exchange Points (IXP) предоставляют Looking Glass для диагностики проблем маршрутизации. Аналогичные данные доступны через сервисы bgp.tools, Hurricane Electric BGP Toolkit.
← Эталонные модели | Firewalls →