1. Глобальные сети и протокол динамической маршрутизации BGP
Глобальные сети и протокол динамической маршрутизации BGP
В 1989 году на конференции IETF два инженера, Кирк Лохид из Cisco и Яков Рехтер из IBM, набросали черновик протокола на трех салфетках. Этот импровизированный документ лег в основу BGP (Border Gateway Protocol) — технологии, которая сегодня удерживает вместе сотни тысяч независимых сетей, образуя то, что мы называем Интернетом. Если внутренние протоколы маршрутизации (IGP), такие как OSPF или EIGRP, можно сравнить с навигатором внутри города, то BGP — это логистическая система, соединяющая целые страны и континенты. Без него ваш компьютер не знал бы, через какого провайдера отправить пакет, чтобы он кратчайшим путем достиг сервера в Токио или Сан-Франциско.
Анатомия глобальной связности: Автономные системы
Прежде чем разбирать механику передачи пакетов, необходимо понять иерархию глобальной сети. Интернет — это не монолитная структура, а конгломерат из более чем 70 000 независимых сетей, называемых Автономными Системами (Autonomous Systems, AS).
Автономная система — это совокупность IP-сетей и маршрутизаторов под управлением одного административного субъекта (провайдера, университета или крупной корпорации), имеющая единую политику маршрутизации. Каждой такой системе присваивается уникальный номер — ASN (Autonomous System Number).
Существует два типа ASN:
Внутри этого диапазона выделены частные номера (Private AS), аналогичные «серым» IP-адресам: 64 512–65 534 для 16-битных и 4 200 000 000–4 294 967 294 для 32-битных. Они используются внутри корпоративных сетей или при подключении к провайдеру, когда выход в глобальную таблицу маршрутизации под собственным номером не требуется.
Маршрутизация в глобальном масштабе делится на два уровня:
Почему BGP не похож на другие протоколы
Если вы привыкли к OSPF, где маршрутизаторы обмениваются состоянием каналов (Link-State) и строят карту сети, BGP покажется вам странным. Его называют Path-Vector протоколом (дистанционно-векторный протокол с учетом пути). BGP не знает топологию соседней сети; он знает только список автономных систем, которые нужно пройти, чтобы достичь целевого префикса.
Главное отличие BGP от IGP заключается в приоритетах. Для OSPF главное — скорость сходимости и техническая оптимальность пути. Для BGP главное — политика и экономика. В глобальной сети «кратчайший» путь не всегда лучший. Провайдер может предпочесть более длинный маршрут через партнера, с которым у него заключен договор о бесплатном пиринге, вместо короткого, но дорогого платного канала (Transit).
BGP работает поверх протокола TCP (порт 179). Это обеспечивает надежную доставку обновлений без необходимости реализовывать собственные механизмы подтверждения получения данных, контроля потока и фрагментации. Однако использование TCP накладывает ограничение: чтобы установить соседство, маршрутизаторы уже должны иметь IP-связность.
Типы соседства: iBGP vs eBGP
BGP-сессии разделяются на две категории в зависимости от того, находятся ли соседи (пиры) в одной автономной системе или в разных.
External BGP (eBGP)
Устанавливается между маршрутизаторами разных AS. По умолчанию eBGP предполагает, что соседи соединены напрямую (TTL пакета равен 1). Если пакет должен пройти через промежуточный узел, необходимо настраиватьebgp-multihop. При передаче маршрута eBGP-соседу маршрутизатор меняет атрибут Next Hop на свой собственный адрес и добавляет свой номер AS в список AS_Path.Internal BGP (iBGP)
Устанавливается между маршрутизаторами внутри одной AS. Здесь правила меняются:AS_Path при передаче префикса iBGP-соседу.Next Hop по умолчанию не меняется (что часто приводит к проблемам доступности, если внутри AS нет маршрута до внешнего стыка).Чтобы обойти ограничение Split Horizon в крупных сетях, где невозможно построить полносвязную топологию (Full Mesh), используют:
Атрибуты BGP: Как принимаются решения
В OSPF есть метрика (Cost), в EIGRP — сложная формула из пропускной способности и задержки. В BGP нет единой метрики. Вместо этого используется набор атрибутов (Path Attributes), которые проверяются в строгом иерархическом порядке. Процесс выбора лучшего пути (BGP Best Path Selection) — это «фильтр», через который проходят все доступные маршруты к одной сети.
Рассмотрим ключевые атрибуты в порядке их приоритета:
1. Weight (Вес)
Это проприетарный атрибут Cisco. Он имеет локальное значение для конкретного маршрутизатора и не передается соседям.2. Local Preference (Локальное предпочтение)
Передается внутри всей AS (между iBGP-соседями).3. AS_Path (Путь через автономные системы)
Список всех ASN, через которые прошел маршрут.AS_Path, он отбрасывает такой маршрут.AS_Path Prepending — искусственное удлинение списка своим номером AS, чтобы сделать путь менее привлекательным для остального мира (управление входящим трафиком).4. Origin (Происхождение)
Указывает, как маршрут попал в BGP:i (IGP) — через команду network.e (EGP) — устаревший вариант.? (Incomplete) — через перераспределение (redistribution) из других протоколов.i перед ?.5. Multi-Exit Discriminator (MED)
Используется для подсказки соседней AS, какой вход в вашу сеть предпочтительнее.Практика настройки: Базовый сценарий Cisco IOS
Представим корпоративную сеть (AS 65001), которая подключается к провайдеру (AS 100). У нас есть два маршрутизатора в нашей сети для отказоустойчивости.
Базовая настройка на основном шлюзе:
В этом примере команда network не «включает» протокол на интерфейсе (как в OSPF), а ищет точное совпадение префикса в локальной таблице маршрутизации (Routing Table). Если сети 203.0.113.0/24 нет в таблице (например, интерфейс выключен), BGP не будет анонсировать её соседу.
Для управления приоритетами используются route-map. Например, повысим Local Preference для всех входящих маршрутов от этого провайдера:
Глобальная таблица маршрутизации и Full View
Когда организация подключается к интернету по BGP, перед инженером встает выбор: какие маршруты принимать от провайдера?
0.0.0.0/0. Это экономит ресурсы маршрутизатора (память, CPU), но не позволяет выбирать оптимальный путь, если у вас несколько провайдеров.Для работы с Full View требуются высокопроизводительные маршрутизаторы (например, серии Cisco ASR или Juniper MX) с объемом оперативной памяти не менее 8–16 ГБ, так как хранение и обработка миллиона записей (с учетом нескольких копий от разных соседей) — ресурсоемкая задача.
Проблемы безопасности и BGP Hijacking
BGP проектировался в эпоху доверия. По умолчанию маршрутизатор верит любому анонсу, пришедшему от соседа. Это порождает уязвимость, известную как BGP Hijacking (перехват трафика).
Если злоумышленник (или администратор по ошибке) анонсирует в BGP чужой префикс, причем сделает его «более специфичным» (например, /24 вместо легитимного /22), то согласно правилу Longest Prefix Match, весь мировой трафик к этому ресурсу потечет через сеть злоумышленника. Так в истории случались инциденты, когда трафик YouTube уходил в Пакистан, а запросы к криптобиржам — на подставные серверы в Восточной Европе.
Для борьбы с этим внедряются механизмы:
Взаимодействие BGP и IGP в корпоративной среде
В правильно спроектированной сети роли четко разделены. IGP (OSPF) обеспечивает связность между Loopback-интерфейсами маршрутизаторов внутри компании. BGP использует эти Loopback-адреса для построения iBGP-сессий.
Почему нельзя просто перераспределить (redistribute) все маршруты из BGP в OSPF?
Поэтому в корпоративном ядре используется дизайн BGP-free Core: пограничные маршрутизаторы (Edge) обмениваются клиентскими маршрутами по iBGP, а внутренние узлы сети (Core) просто пересылают пакеты, зная только, как дойти до следующего Edge-роутера (используя MPLS или рекурсивную маршрутизацию).
Тонкая настройка: Состояния сессии
При диагностике BGP важно понимать состояния соседства. В выводе команды show ip bgp summary вы можете увидеть:
Интересный нюанс: если в поле State/PfxRcd стоит число (например, 150), это означает, что сессия в состоянии Established и вы получили 150 маршрутов. Если там написано слово (Active, Idle) — сессия не работает.
Заключение
BGP — это не просто протокол, это язык, на котором разговаривают сети. Его сложность обусловлена не математическими алгоритмами, а гибкостью настроек. В корпоративной среде BGP становится необходимым при переходе от простого доступа в интернет к архитектуре Multihoming (подключение к двум и более провайдерам). Понимание атрибутов, механизмов фильтрации и принципов iBGP/eBGP позволяет инженеру не просто «прокинуть интернет», а построить отказоустойчивую систему, способную адаптироваться к изменениям в глобальной сетевой инфраструктуре.