linuxlab.io
Учебники▾
  • Линукс и сети
    Файловая система, процессы, TCP/IP, BGP и OSPF
    →
  • Terraform и IaC
    HCL, state, plan/apply на sandbox LocalStack
    →
  • Git и GitHub
    Объектная модель, plumbing, ветвление, GitHub Actions
    →
Все учебники →
ЦеныО платформеВойтиСоздать аккаунт
/
  • Введение
  • Уроки
  • How it works
  • Симулятор
  • База знаний
  • Собеседование
Index
Categories
All entries
Footer
linuxlab-УчебникиЦеныО платформеКонфиденциальность и куки
Copyright © 2026 LinuxLab. Все права защищены.
home/linux/kb/Протоколы/bgp

kb/protocols ── Протоколы ── advanced

BGP - Border Gateway Protocol

**BGP** - протокол маршрутизации между автономными системами (AS). Это «язык» которым общаются ISP и крупные сети интернета: какой AS владеет какими prefix'ами и через кого до них доходить.

view as markdownaka: border-gateway-protocol, bgp4

Зачем BGP

Внутри одной организации работают IGP (interior gateway protocols) - ospf, IS-IS, RIP. Они быстрые, делятся всей топологией, но не масштабируются на размер интернета.

BGP - это EGP (exterior gateway protocol). Он:

  • Работает между автономными системами (AS) - независимыми сетями с собственным номером (ASN, например 65001 для приватных или 13335 для Cloudflare)
  • Не делится топологией - только достижимостью: «AS 65001 может достать prefix 10.0.0.0/24 через путь AS 65002 → AS 65003»
  • Решает не «кратчайший путь по метрике», а политикой: предпочесть транзит подешевле, не отдавать prefix конкурентам, и т.д.

Интернет - это ~75000 AS которые между собой обмениваются BGP-апдейтами. Полная BGP-таблица интернета сейчас ~950000 IPv4 prefix'ов.

eBGP vs iBGP

ТипМежду кемОсобенность
eBGPразные ASTTL=1 (соседи на одном link'е), AS-path увеличивается
iBGPвнутри одной ASfull-mesh обязателен, AS-path не меняется

iBGP нужен когда у вас несколько BGP-роутеров в одной AS - они должны все знать друг про друга чтобы консистентно forward'ить транзит. Вместо full-mesh используют route reflector (один говорит со всеми, переотправляет апдейты).

Состояния сессии (FSM)

BGP-сессия - это TCP/179. После установления TCP идёт BGP handshake:

Idle → Connect → Active → OpenSent → OpenConfirm → Established
  • Idle - стартовое, ждём триггера
  • Connect - пытаемся открыть TCP
  • Active - TCP не открылся, retry
  • OpenSent / OpenConfirm - обменялись OPEN-сообщениями
  • Established - всё, можем обмениваться prefix'ами

Если в show ip bgp summary сосед в Active - значит TCP не идёт (firewall, IP не тот, AS не тот). См. cmd-vtysh.

BGP-атрибуты (как принимается решение)

Когда роутер получает один и тот же prefix несколькими путями, он выбирает best-path по порядку:

  1. Local Preference (выше = лучше) - внутри AS
  2. AS-path length (короче = лучше)
  3. Origin (IGP < EGP < incomplete)
  4. MED (Multi-Exit Discriminator, ниже = лучше)
  5. eBGP > iBGP
  6. IGP-метрика до next-hop
  7. Router ID (тie-breaker)

В скобках упрощено - реально шагов 13. Главное: путь короче (по AS) и Local-Pref выше - значит этот путь побеждает.

Минимальная конфигурация (FRR)

Сосед на p2p-линке 10.0.0.0/30, своя AS 65001, чужая 65002:

router bgp 65001
 bgp router-id 1.1.1.1
 no bgp default ipv4-unicast
 neighbor 10.0.0.2 remote-as 65002
 address-family ipv4 unicast
  neighbor 10.0.0.2 activate
  network 192.168.10.0/24
 exit-address-family

Что тут:

  • network - анонсируем свой prefix соседу (он должен быть в RIB)
  • no bgp default ipv4-unicast - современная best-practice: явно активировать address-family для каждого соседа
  • bgp router-id - стабильный 32-битный ID (часто loopback IP)

Проверка: show ip bgp summary → должен быть Established и число принятых prefix'ов.

Префикс-фильтры

Без фильтров iBGP/eBGP может сделать вас транзитом для половины интернета. Минимум:

ip prefix-list MY-PREFIXES seq 10 permit 192.168.10.0/24
router bgp 65001
 neighbor 10.0.0.2 prefix-list MY-PREFIXES out

→ соседу 10.0.0.2 отправляем только наш prefix, ничего больше.

BGP в датацентре

В современных DC (Clos / spine-leaf) BGP вытеснил OSPF даже как IGP - это BGP-as-IGP или EVPN BGP. Причины:

  • Простой policy control (route-map, prefix-list)
  • Multipath с unequal AS-path
  • Не нужно area-design как в ospf
  • Легко отделить underlay от overlay (VXLAN/EVPN)

Кому интересно: Cumulus / NVIDIA "BGP in the Data Center" - фактический стандарт de-facto.

§ команды

bash
vtysh -c 'show ip bgp summary'

Состояние всех BGP-соседей: AS, sessions, число prefix'ов

bash
vtysh -c 'show ip bgp'

Полная BGP-таблица: prefix → next-hop → AS-path

bash
vtysh -c 'show ip bgp neighbors 10.0.0.2 advertised-routes'

Что мы анонсируем конкретному соседу

bash
vtysh -c 'show ip bgp neighbors 10.0.0.2 received-routes'

Что приняли от соседа (нужно soft-reconfiguration inbound)

bash
ss -tnp '( sport = :179 or dport = :179 )'

Активные BGP TCP-сессии - быстрая проверка без vtysh

§ см. также

  • ospfOSPF - Open Shortest Path First**OSPF** - link-state IGP внутри одной автономной системы. Каждый роутер знает полную топологию (LSDB) и независимо считает кратчайшие пути алгоритмом Dijkstra. Сходимость секунды.
  • routing-tableRouting tableТаблица маршрутизации - список «куда направлять пакеты с таким destination». Самая длинная (longest-prefix) подходящая запись выигрывает.
  • ipv4-addressingIPv4-адресация и CIDRIP-адрес = 32 бита, обычно как `a.b.c.d`. **/N** в конце - длина префикса сети: `/24` = первые 24 бита фиксированы, последние 8 - host'ы (256 адресов).
  • cmd-vtyshvtysh - CLI к FRR (BGP/OSPF)vtysh - Cisco-подобный CLI к FRRouting. Через него настраиваются все routing-демоны (zebra, bgpd, ospfd) одной интегрированной сессией.
  • cni-pluginsCNI plugins - сеть Kubernetes (calico, cilium, flannel)CNI - спека плагина: дай pod IP и сеть. Реализации: flannel (VXLAN L2-overlay), calico (BGP routing), cilium (eBPF в kernel). Каждая даёт NetworkPolicy для firewall'а между подами. IPAM - часть CNI, выделяет адреса.

§ упоминается в уроках

  • ›advanced-08-bgp-minimal
  • ›advanced-09-ospf-area-0
  • ›intermediate-03-three-node-routing
Footer
linuxlab-
Copyright © 2026 LinuxLab. Все права защищены.
Учебники
Цены
О платформе
Конфиденциальность и куки