L3 BGP: как операторы договариваются о маршрутах

Роутер знает только про сети, подключённые к нему напрямую. Но как он узнаёт про миллионы чужих сетей — офис клиента в другом городе, весь остальной Интернет? Ему кто-то должен рассказать. Этот «рассказчик» и есть BGP — протокол, на котором держится весь Интернет и все услуги оператора. Его ты будешь настраивать, диагностировать и объяснять клиентам каждый день.

Что узнаешь
Вспомни из прошлых уроков

Урок 1: стык между роутерами — сеть /30 или /31, loopback /32 — «паспорт» роутера. Урок 3: таблица маршрутизации — правила «сеть → куда слать»; в ней маршруты с буквами: C — своё, S — статика, B — принёс BGP. Сегодня выясним, как именно появляются маршруты с буквой B.

1. Статика vs динамика — зачем вообще протокол

Есть два способа рассказать роутеру про сети:

✍️ Статический маршрут

  • Инженер руками пишет: «сеть X — через роутер Y»
  • Просто и предсказуемо для 2–3 сетей
  • Не адаптируется: линк упал — трафик всё равно летит в стену
  • Тысячи маршрутов руками = ад и человеческие ошибки

🔄 Динамическая маршрутизация

  • Роутеры сами рассказывают друг другу, какие сети знают
  • Линк упал — маршрут автоматически пересчитался в обход
  • Масштабируется на миллионы сетей
  • Это то, на чём работает весь Интернет
Аналогия

Статика — бумажная карта, динамика — живой навигатор

Статический маршрут — как распечатанная карта: пока дороги не менялись, работает, но перекрыли улицу — ты об этом не узнаешь и упрёшься в кирпич. Динамический протокол — как навигатор с пробками: соседи постоянно сообщают «эта дорога есть, эта закрыта», и маршрут пересобирается сам.

Динамических протоколов несколько, и они делятся на два семейства. Внутри своей сети (своего «государства») операторы гоняют IGP (Interior Gateway Protocol — OSPF или IS-IS): он быстро находит кратчайшие пути между своими роутерами. А между сетями разных владельцев работает ровно один протокол на планете — BGP (Border Gateway Protocol, «протокол пограничного шлюза»). Почему такое разделение? IGP оптимизирован на скорость и доверяет всем участникам; BGP — на масштаб (весь интернет: 900+ тысяч маршрутов) и на политику: с кем дружить, чьи маршруты принимать, кому что рассказывать. Границы сетей — это границы бизнесов, и там нужны переговоры, а не доверие.

Что учить дальше

В этом пути мы разбираем BGP, потому что он — язык услуг оператора (стыки с клиентами, IPVPN). OSPF внутри сети оператора тоже живёт, но клиентов почти не касается. Захочешь глубже — в треке «Сети для инженера» есть отдельные уроки и по OSPF, и по BGP на уровне CCNA/CCNP.

2. Автономная система (AS) — сеть-государство

Интернет — это не одна большая сеть, а тысячи независимых сетей, которые между собой соединяются. Каждая такая крупная сеть (оператор, дата-центр, крупная компания) называется автономной системой (AS) и имеет уникальный номер — AS-номер (например, AS65000).

BGP — это протокол, на котором AS договариваются между собой: «я умею доставлять в такие-то сети, шлите через меня».

Автономные системы обмениваются маршрутами через BGP
AS65000 наш оператор AS65010 клиент «Банк» AS65020 другой оператор eBGP eBGP
Каждая AS — независимая сеть со своим номером. По сессиям eBGP они рассказывают друг другу, какие сети умеют доставлять.

3. Как живёт BGP-сессия

Первое, что отличает BGP от «магии»: это просто долгоживущее TCP-соединение на порт 179 между двумя роутерами. Как чат между двумя инженерами, который никогда не закрывают:

Знакомство (OPEN)
Роутеры устанавливают TCP-сессию и обмениваются «визитками»: мой AS-номер, мой идентификатор, мои возможности. Если ожидания не совпали (сосед представился не тем AS, который у нас настроен) — сессия рвётся сразу.
Обмен маршрутами (UPDATE)
Стороны рассказывают друг другу свои сети. Не «всю таблицу каждые N секунд», а только изменения: появился маршрут — прислали UPDATE, пропал — прислали отзыв (withdraw). Поэтому BGP тянет сотни тысяч маршрутов и не захлёбывается.
Поддержание жизни (KEEPALIVE)
Каждые 60 секунд — «я жив». Не было вестей 180 секунд (hold time) — сосед считается умершим, все его маршруты выбрасываются из таблицы. Вот почему при падении линка связь «отваливается не сразу, а через пару минут» — ждали hold time.

Пока сессия устанавливается, она проходит состояния — ты будешь видеть их в show ip bgp summary, поэтому выучи цепочку:

Idle
спим / не можем начать
Connect / Active
пытаемся установить TCP
OpenSent / OpenConfirm
обмен «визитками»
Established
работаем! идут UPDATE

Здоровая сессия мгновенно пробегает цепочку и остаётся в Established часами и месяцами. Всё, что «висит» в ранних состояниях, — повод для диагностики (плейбук ниже).

4. Что внутри анонса: префикс, next-hop, AS_PATH

Каждый маршрут в BGP — это не просто «сеть X существует». Это «сеть X доступна через меня, и вот свойства этого пути». Три главных поля, которые ты будешь читать глазами каждый день:

ПолеЧто значитПример
Префикс (prefix)сама сеть, о которой рассказ192.168.1.0/24
Next-hopадрес, куда слать пакеты для этой сети10.0.0.2
AS_PATHсписок AS, через которые прошёл анонс — «штампы в паспорте»65000 65010

AS_PATH — гениально простой механизм. Каждая AS, передавая маршрут дальше, дописывает свой номер в начало списка. Получатель видит весь путь: «этот маршрут прошёл через AS65000, а родился в AS65010». Отсюда два следствия:

Про выбор лучшего пути

На самом деле у BGP целая лестница критериев выбора (local preference, AS_PATH, MED и ещё полдюжины) — это тема собеседований уровня middle+. Для старта достаточно знать: из всех путей BGP выбирает один лучший, и только он попадает в таблицу маршрутизации. Остальные хранятся про запас и мгновенно подхватываются, если лучший умрёт.

5. eBGP и iBGP — два вкуса одного протокола

ТипМежду кемПростыми словами
eBGP (external)Между разными AS«Переговоры между двумя государствами». Например, оператор ↔ клиент, или оператор ↔ другой оператор. Обычно между непосредственными соседями по стыку /30.
iBGP (internal)Внутри одной AS«Общение между городами одного государства». Роутеры одного оператора синхронизируют маршруты между собой — обычно между loopback'ами (помнишь «паспорт роутера» из урока 1? вот где он работает).

Зачем iBGP, если внутри сети уже есть IGP (OSPF)? Разделение труда: OSPF знает дорогу между роутерами оператора (служебные адреса, loopback'и), а iBGP разносит по этим роутерам клиентские и интернет-маршруты — сотни тысяч записей, которые в OSPF просто не влезут. OSPF — скелет, BGP — кровеносная система поверх него.

6. Стык PE–CE — самое рабочее место инженера СПД

Вот сценарий, который ты будешь настраивать чаще всего. Клиент подключается к оператору. На стыке два устройства:

Между PE и CE поднимается сессия eBGP. По ней клиент «рассказывает» оператору свои сети, а оператор — клиенту то, что клиент должен видеть (другие свои офисы или весь Интернет). Это называется PE–CE маршрутизация.

🏦CEклиент
AS65010
10.0.0.2/30
📡PEоператор
AS65000
10.0.0.1/30
VRF BANK
🏦другой офисчерез MPLS

Посмотри на конфиг с обеих сторон — он короче, чем ты боялся. Сторона оператора (PE):

! PE: сессия с CE клиента живёт внутри его VRF PE(config)# router bgp 65000 PE(config-router)# address-family ipv4 vrf BANK PE(config-router-af)# neighbor 10.0.0.2 remote-as 65010 # сосед и ЕГО AS PE(config-router-af)# neighbor 10.0.0.2 activate

Сторона клиента (CE):

! CE: рассказываю оператору свои сети CE(config)# router bgp 65010 CE(config-router)# neighbor 10.0.0.1 remote-as 65000 # сосед и ЕГО AS CE(config-router)# network 192.168.1.0 mask 255.255.255.0 # «объявляю эту сеть» CE(config-router)# network 192.168.2.0 mask 255.255.255.0

Обрати внимание на три вещи, в которых чаще всего ошибаются:

Дальше цепочка из прошлого урока собирается воедино:

CE клиента объявляет свои сети
«У меня есть 192.168.1.0/24 и 192.168.2.0/24» — отправляет их по eBGP на PE.
PE принимает их в VRF этого клиента
Маршруты попадают не в общую таблицу, а в VRF BANK — потому что сосед настроен внутри address-family этой VRF.
Оператор разносит их к другим офисам клиента
Маршруты получают ярлыки RD/RT (урок 3!) и едут по iBGP между PE-роутерами. Так офисы клиента видят друг друга. Это и есть услуга IPVPN — финал в уроке 7.
PE отдаёт клиенту нужные маршруты обратно
CE узнаёт про другие офисы (или получает default-маршрут в Интернет) и дальше работает сам.

7. Как читать состояние BGP

Первая команда, которую ты вводишь при разборе «а поднялся ли BGP с клиентом»:

Router# show ip bgp vpnv4 vrf BANK summary Neighbor V AS MsgRcvd MsgSent Up/Down State/PfxRcd 10.0.0.2 4 65010 1502 1498 02:14:07 6 ← ОК: сосед поднят, принято 6 сетей 10.0.0.6 4 65011 0 0 never Idle ← НЕ ОК: сессия не установилась

Главное — колонка State/PfxRcd (последняя). Расшифруем все варианты, которые ты встретишь:

Что видишьЧто это значит
Число (например 6)✅ Сессия Established. Число = сколько сетей (префиксов) прислал сосед. Это норма.
Число 0⚠️ Сессия поднята, но сосед ничего не прислал. Либо ему нечего объявлять, либо у него не настроен network, либо всё режут фильтры. Смотри плейбук №2.
Idle❌ Сессия даже не пытается. Часто нет связи (проверь ping), не настроен сосед или сработал admin-shutdown.
Active / Connect⏳ Пытается установить TCP, но не выходит. Обычно нет L3-связности, неверный адрес соседа, или сосед не отвечает на порт 179.
OpenSent / OpenConfirm⏳ TCP есть, идёт обмен «визитками». Если висит тут — чаще всего не совпадают AS-номера с ожиданиями сторон.
Idle (Admin)⛔ Сосед выключен командой neighbor … shutdown. Кто-то сделал это специально — узнай у коллег, прежде чем включать!
Up/Down маленькое (минуты) при большом MsgRcvd⚠️ Сессия «моргает» (flapping): поднимается и падает. Ищи нестабильный линк или MTU-проблему.

Посмотреть, какие именно сети пришли от клиента:

Router# show ip route vrf BANK bgp B 192.168.1.0/24 [20/0] via 10.0.0.2 ← пришло по BGP от CE клиента B 192.168.2.0/24 [20/0] via 10.0.0.2 Router# show ip bgp vpnv4 vrf BANK neighbors 10.0.0.2 routes # всё, что прислал сосед Router# show ip bgp vpnv4 vrf BANK neighbors 10.0.0.2 advertised-routes # всё, что мы отдали ему

Последние две команды — золотой инструмент: они показывают обмен с точки зрения BGP. «Клиент говорит, что объявляет сеть, а мы её не видим» — смотри routes. «Клиент не видит свой второй офис» — смотри advertised-routes: а мы вообще ему это отдаём?

8. Плейбук №1: сессия не поднимается

Смотри состояние
show ip bgp vpnv4 vrf BANK summary. Idle (Admin) — стоп, сессию выключили специально. Idle/Active/Connect — иди дальше.
Проверь L3-связность — всегда первым делом
ping vrf BANK 10.0.0.2. Нет пинга — BGP ни при чём: чини стык (порт, VLAN, IP, ARP — плейбук урока 2). BGP не поднимется поверх мёртвого линка.
Пинг есть, но Active/Connect? Проверь параметры сессии
Сверь с двух сторон: адреса соседей (не перепутаны ли .1 и .2), AS-номера (remote-as — это AS соседа). Посмотри show ip bgp vpnv4 vrf BANK neighbors 10.0.0.2 | include AS|state.
Висит в OpenSent/OpenConfirm?
TCP работает, но «визитки» не сходятся: чаще всего AS mismatch — сосед представился не тем AS, который мы ждём. В логах будет %BGP-3-NOTIFICATION: … Bad Peer AS. Согласуй номера с клиентом.
Поднялась и падает каждые пару минут (flapping)?
Классика — MTU: маленькие пакеты (keepalive) проходят, большие (UPDATE с маршрутами) — нет. Проверь: ping vrf BANK 10.0.0.2 size 1500 df-bit. Не проходит — ищи, где по пути режется MTU.

9. Плейбук №2: сессия есть, а маршрутов нет

Убедись, что дело в маршрутах
В summary состояние — число? Если 0 — сосед ничего не прислал. Спроси … neighbors 10.0.0.2 routes — пусто?
Проверь сторону клиента
Объявляет ли CE сети? У него должен быть network … на сеть, которая реально есть в его таблице. Частая ошибка: network прописан, а самой сети нет (интерфейс down) — BGP молчит.
Проверь фильтры
На PE обычно стоят фильтры «принимать от клиента только согласованные сети» (route-map / prefix-list). Клиент объявил новую сеть, а фильтр её режет — маршрут «есть у клиента, нет у нас». Смотри show ip bgp vpnv4 vrf BANK neighbors 10.0.0.2 | include filter|map.
Маршруты в BGP есть, а в таблице нет?
show ip bgp vpnv4 vrf BANK 192.168.1.0 — маршрут виден, но без «>» (best)? Значит, BGP не может его использовать — чаще всего недостижим next-hop. Проверь ping vrf BANK <next-hop>.
Не забудь про вторую сторону
Связь — это два направления. Мы приняли маршруты клиента, а отдали ли мы ему его второй офис? … advertised-routes. Пакет туда доедет, а обратно дороги нет — симптомы точно такие же.

10. Мини-лаба: потрогай настоящий BGP из браузера

BGP — редкий протокол, который можно исследовать без всякой лаборатории: интернет-сообщество выкладывает его состояние в открытый доступ.

Узнай AS своего провайдера
Открой bgp.tools или ipinfo.io — они покажут твой белый IP и AS-номер оператора (например, AS12389). Вот она, автономная система, из которой ты сейчас читаешь этот урок.
Посмотри на сеть оператора глазами BGP
На bgp.tools вбей AS своего оператора: увидишь, сколько префиксов он объявляет, с кем пирится (соседние AS). Это та самая информация из BGP-анонсов.
Пройди путь маршрута через Looking Glass
Погугли «looking glass + имя крупного оператора». Looking glass — это публичный read-only доступ к настоящему роутеру. Вбей туда любой адрес (например 8.8.8.8) — увидишь настоящий вывод show bgp с AS_PATH. Прочитай его: теперь ты понимаешь каждое поле.

11. Словарик урока

ТерминПо-английскиСмысл в одну строку
Автономная системаAS, autonomous systemкрупная сеть под единым управлением со своим номером
IGPInterior Gateway Protocolпротокол «внутри государства» — OSPF/IS-IS
eBGP / iBGPexternal / internal BGPсессия между разными AS / внутри одной AS
Сосед / пирneighbor, peerроутер, с которым установлена BGP-сессия
Префиксprefixобъявляемая сеть (например 192.168.1.0/24)
Анонс / объявлениеadvertisement, announceсообщение «эта сеть доступна через меня»
AS_PATHAS pathсписок AS, через которые прошёл анонс; защита от петель
Next-hopnext-hopадрес, куда реально слать пакеты для префикса
EstablishedEstablishedрабочее состояние сессии; всё остальное — не работает
Keepalive / hold timekeepalive / hold time«я жив» каждые 60 с; тишина 180 с = сосед умер
Флаппингflappingсессия постоянно поднимается и падает
Looking glasslooking glassпубличный read-only доступ к BGP-выводам реального роутера
BGP — это долгоживущая TCP-сессия (порт 179), по которой автономные системы обмениваются маршрутами: префикс + next-hop + AS_PATH. eBGP — между разными AS (оператор ↔ клиент), iBGP — внутри одной AS. Твоё рабочее место — стык PE–CE: сосед настраивается внутри address-family нужной VRF, клиент объявляет сети через network. Диагностика начинается с show ip bgp … summary: число = хорошо, Idle/Active = чини связность, 0 префиксов = смотри объявления и фильтры. И главное правило: сначала ping, потом BGP.

12. Задачи — реши сам

Задача 1. В summary сосед 10.0.0.2 показывает Active. Твои первые две команды?

1) ping vrf BANK 10.0.0.2 — жив ли стык. 2) Если пинг есть — сверить настройки сессии: адреса и AS с обеих сторон (show … neighbors 10.0.0.2). Active = TCP не устанавливается, в 90% случаев это связность или опечатка в адресе/AS.

Задача 2. Сессия Established, PfxRcd = 5, но клиент жалуется: «объявили шестую сеть, вы её не видите». Куда смотреть?

show … neighbors 10.0.0.2 routes — прислал ли CE шестую сеть вообще. Прислал, а в таблице её нет — смотри фильтры на приём (prefix-list/route-map): новая сеть не согласована и режется. Не прислал — проблема у клиента: нет network или сети нет в его таблице.

Задача 3. Каждые 2–3 минуты сессия с клиентом падает и поднимается. Маленькие пинги ходят. Диагноз?

Похоже на MTU-проблему: keepalive (маленькие) проходят, UPDATE с маршрутами (большие) — нет, hold time истекает, сессия рвётся и цикл повторяется. Проверка: ping vrf BANK 10.0.0.2 size 1500 df-bit.

Задача 4. В AS_PATH маршрута роутер увидел свой собственный AS. Что он сделает?

Отбросит анонс — это защита от петель: маршрут уже проходил через нашу AS, принимать его обратно нельзя.

Задача 5. Почему iBGP-сессии поднимают между loopback'ами, а не между адресами стыков?

Loopback не зависит от физического порта: если один из линков умрёт, IGP найдёт обходной путь, и сессия между loopback'ами переживёт аварию. Сессия между адресами стыка умерла бы вместе с линком.

Задача 6. Сессия в состоянии Idle (Admin). Что это и что делать?

Кто-то выключил соседа командой neighbor … shutdown — умышленно (работы, авария, неоплата). Не включать, пока не выяснишь причину у коллег/в тикетах.

Чем eBGP отличается от iBGP?

eBGP — между разными автономными системами (разные AS-номера), например оператор и клиент. iBGP — внутри одной AS, между роутерами одного оператора.

Что такое PE и CE?

PE (Provider Edge) — пограничный роутер оператора. CE (Customer Edge) — роутер клиента. Между ними обычно поднимается eBGP.

В show ip bgp summary сосед в состоянии Idle. С чего начать?

С проверки базовой L3-связности: ping до адреса соседа (в нужной VRF). Если пинга нет — чинить порт/VLAN/IP/ARP, а не BGP.

Почему BGP не «захлёбывается» на сотнях тысяч маршрутов?

Потому что после первоначального обмена шлются только изменения (UPDATE/withdraw), а не вся таблица по кругу. Плюс TCP гарантирует доставку — не нужно перепосылать всё «на всякий случай».

Мост к следующему уроку

У тебя в руках все механизмы: IP и стыки (урок 1), ARP (урок 2), VRF с ярлыками RD/RT (урок 3) и BGP (этот урок). Дальше смотрим, как из них собираются продукты, которые клиент покупает за деньги: интернет-доступ (IP access), прозрачный канал (EPL) и частная сеть офисов (IPVPN). Начнём с самого массового — IP access.