L3 BGP: как операторы договариваются о маршрутах
Роутер знает только про сети, подключённые к нему напрямую. Но как он узнаёт про миллионы чужих сетей — офис клиента в другом городе, весь остальной Интернет? Ему кто-то должен рассказать. Этот «рассказчик» и есть BGP — протокол, на котором держится весь Интернет и все услуги оператора. Его ты будешь настраивать, диагностировать и объяснять клиентам каждый день.
- Что такое статическая vs динамическая маршрутизация (и зачем вторая)
- Что такое автономная система (AS) — «сеть-государство» — и какие бывают номера
- Как живёт BGP-сессия: TCP-порт 179, состояния от Idle до Established, keepalive
- Что именно едет внутри BGP-анонса: префикс, next-hop, AS_PATH
- eBGP vs iBGP — и почему это не одно и то же
- Стык PE–CE: конфиг с обеих сторон и как маршруты клиента попадают в VRF
- Как читать
show ip bgp summary— все состояния, а не только «поднялся/не поднялся» - Два плейбука: «сессия не поднимается» и «сессия есть, а маршрутов нет»
Урок 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).
- Публичные AS-номера выдаёт регистратор (в нашем регионе — RIPE NCC), они уникальны на весь мир. У Яндекса — AS13238, у Ростелекома — AS12389. Номер AS — такой же «паспорт» сети, как белые IP.
- Диапазон
64512–65534— приватные AS-номера (аналог серых IP): их используют на стыках с клиентами, внутри лабораторий — везде, где номер не должен светиться в глобальном интернете. В примерах уроков мы используем именно их.
BGP — это протокол, на котором AS договариваются между собой: «я умею доставлять в такие-то сети, шлите через меня».
3. Как живёт BGP-сессия
Первое, что отличает BGP от «магии»: это просто долгоживущее TCP-соединение на порт 179 между двумя роутерами. Как чат между двумя инженерами, который никогда не закрывают:
Пока сессия устанавливается, она проходит состояния — ты будешь видеть их в
show ip bgp summary, поэтому выучи цепочку:
Здоровая сессия мгновенно пробегает цепочку и остаётся в 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». Отсюда два следствия:
- Защита от петель: видишь свой собственный AS в списке — значит, маршрут вернулся к тебе по кругу; такой анонс молча отбрасывается.
- Выбор пути: из двух путей к одной сети BGP (при прочих равных) предпочтёт тот, где AS_PATH короче — «меньше пересадок».
На самом деле у 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 — самое рабочее место инженера СПД
Вот сценарий, который ты будешь настраивать чаще всего. Клиент подключается к оператору. На стыке два устройства:
- CE (Customer Edge) — роутер на стороне клиента.
- PE (Provider Edge) — роутер оператора, тот самый, где живут VRF из прошлого урока.
Между PE и CE поднимается сессия eBGP. По ней клиент «рассказывает» оператору свои сети, а оператор — клиенту то, что клиент должен видеть (другие свои офисы или весь Интернет). Это называется PE–CE маршрутизация.
AS65010
10.0.0.2/30
AS65000
10.0.0.1/30
VRF BANK
оператора
Посмотри на конфиг с обеих сторон — он короче, чем ты боялся. Сторона оператора (PE):
Сторона клиента (CE):
Обрати внимание на три вещи, в которых чаще всего ошибаются:
remote-as— это AS соседа, не свой. Перепутал числа местами — сессия не поднимется (сосед «представится не тем»).- На PE сосед прописывается внутри address-family нужной VRF — иначе маршруты клиента улетят в глобальную таблицу. Классика: «сессия поднялась, а маршрутов в VRF нет» — посмотри, в той ли AF настроен сосед.
networkна CE объявляет только сети, которые реально есть в его таблице маршрутизации. Прописал network про сеть, которой нет, — BGP промолчит и ничего не объявит.
Дальше цепочка из прошлого урока собирается воедино:
VRF BANK — потому что
сосед настроен внутри address-family этой VRF.7. Как читать состояние BGP
Первая команда, которую ты вводишь при разборе «а поднялся ли BGP с клиентом»:
Главное — колонка 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-проблему. |
Посмотреть, какие именно сети пришли от клиента:
Последние две команды — золотой инструмент: они показывают обмен с точки зрения BGP.
«Клиент говорит, что объявляет сеть, а мы её не видим» — смотри routes.
«Клиент не видит свой второй офис» — смотри advertised-routes: а мы вообще ему это отдаём?
8. Плейбук №1: сессия не поднимается
show ip bgp vpnv4 vrf BANK summary. Idle (Admin) —
стоп, сессию выключили специально. Idle/Active/Connect — иди дальше.ping vrf BANK 10.0.0.2. Нет пинга — BGP ни при чём: чини стык
(порт, VLAN, IP, ARP — плейбук урока 2). BGP не поднимется поверх мёртвого линка.remote-as — это AS соседа). Посмотри
show ip bgp vpnv4 vrf BANK neighbors 10.0.0.2 | include AS|state.%BGP-3-NOTIFICATION: … Bad Peer AS. Согласуй номера с клиентом.ping vrf BANK 10.0.0.2 size 1500 df-bit.
Не проходит — ищи, где по пути режется MTU.9. Плейбук №2: сессия есть, а маршрутов нет
… neighbors 10.0.0.2 routes — пусто?network … на сеть,
которая реально есть в его таблице. Частая ошибка: network прописан, а самой сети нет
(интерфейс down) — BGP молчит.show ip bgp vpnv4 vrf BANK neighbors 10.0.0.2 | include filter|map.show ip bgp vpnv4 vrf BANK 192.168.1.0 — маршрут виден, но без
«>» (best)? Значит, BGP не может его использовать — чаще всего недостижим next-hop.
Проверь ping vrf BANK <next-hop>.… advertised-routes. Пакет туда доедет, а обратно дороги нет —
симптомы точно такие же.10. Мини-лаба: потрогай настоящий BGP из браузера
BGP — редкий протокол, который можно исследовать без всякой лаборатории: интернет-сообщество выкладывает его состояние в открытый доступ.
bgp.tools или ipinfo.io — они покажут твой
белый IP и AS-номер оператора (например, AS12389). Вот она, автономная система, из которой ты
сейчас читаешь этот урок.bgp.tools вбей AS своего оператора: увидишь, сколько префиксов
он объявляет, с кем пирится (соседние AS). Это та самая информация из BGP-анонсов.show bgp с AS_PATH. Прочитай его: теперь ты понимаешь
каждое поле.11. Словарик урока
| Термин | По-английски | Смысл в одну строку |
|---|---|---|
| Автономная система | AS, autonomous system | крупная сеть под единым управлением со своим номером |
| IGP | Interior Gateway Protocol | протокол «внутри государства» — OSPF/IS-IS |
| eBGP / iBGP | external / internal BGP | сессия между разными AS / внутри одной AS |
| Сосед / пир | neighbor, peer | роутер, с которым установлена BGP-сессия |
| Префикс | prefix | объявляемая сеть (например 192.168.1.0/24) |
| Анонс / объявление | advertisement, announce | сообщение «эта сеть доступна через меня» |
| AS_PATH | AS path | список AS, через которые прошёл анонс; защита от петель |
| Next-hop | next-hop | адрес, куда реально слать пакеты для префикса |
| Established | Established | рабочее состояние сессии; всё остальное — не работает |
| Keepalive / hold time | keepalive / hold time | «я жив» каждые 60 с; тишина 180 с = сосед умер |
| Флаппинг | flapping | сессия постоянно поднимается и падает |
| Looking glass | looking glass | публичный read-only доступ к BGP-выводам реального роутера |
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.