Border Gateway Protocol

BGP ( англ. Border Gateway Protocol , Протокол граничного шлюзу) - основний протокол динамічної маршрутизації в Інтернеті.

Протокол BGP призначений для обміну інформацією про досяжності підмереж між автономними системами (АС), тобто групами маршрутизаторів під єдиним технічним управлінням, що використовують протокол внутрідоменной маршрутизації для визначення маршрутів усередині себе і протокол міждоменної маршрутизації для визначення маршрутів доставки пакетів в інші АС. Передана інформація включає в себе список АС, до яких є доступ через дану систему. Вибір найкращих маршрутів здійснює виходячи з правил, прийнятих в мережі.

BGP підтримує безкласову адресацію і використовує підсумовування маршрутів для зменшення таблиць маршрутизації. З 1994 року діє четверта версія протоколу, всі попередні версії є застарілими.

BGP, поряд з DNS, є одним з головних механізмів, що забезпечують функціонування Інтернету.

BGP є протоколом прикладного рівня і функціонує поверх протоколу транспортного рівня TCP (порт 179). Після установки з'єднання передається інформація про всіх маршрутах, призначених для експорту. Надалі передається тільки інформація про зміни в таблицях маршрутизації. При закритті з'єднання видаляються всі маршрути, інформація про яких передана протилежною стороною.


1. Формат повідомлення

Повідомлення BGP починається з заголовка, після якого, в залежності від типу повідомлення, можуть слідувати дані. Максимальна довжина повідомлення - 4096 октетів, мінімальна - 19 октетів. Тема повідомлення містить наступні поля:

  • Маркер (16 октетів) - використовується для сумісності, повинен бути заповнений одиницями;
  • Довжина (2 октету) - довжина повідомлення в октетах, включаючи заголовок;
  • Тип (1 октет):
    • 1 - Відкриття;
    • 2 - Оновлення інформації;
    • 3 - Оповіщення;
    • 4 - Збереження з'єднання.

1.1. Відкриття

Перше повідомлення після установки з'єднання повинно бути "Відкриття". Якщо повідомлення успішно оброблено, у відповідь буде надіслано "Збереження з'єднання". На додаток до заголовка BGP повідомлення "Відкриття" містить наступні поля:

  • Версія (1 октет) - версія протоколу, поточне значення 4;
  • Моя система (2 октету) - номер автономної системи;
  • Інтервал часу (2 октету) - максимальний інтервал часу в секундах між отриманням повідомлень "Оновлення інформації" або "Збереження з'єднання";
  • Ідентифікатор відправника (4 октету) - встановлюється рівним IP-адресою;
  • Довжина додаткових параметрів (1 октет);
  • Додаткові параметри:
    • Тип параметра (1 октет);
    • Довжина параметра (1 октет);
    • Значення параметра.

1.2. Оновлення інформації

Повідомлення "Оновлення інформації" призначено для передачі інформації про маршрути між АС. Повідомлення може вказувати нові маршрути та видаляти непрацюючі. Структура повідомлення:

Прапори атрибутів
Біт Значення
0 1 - додатковий, 0 - стандартний
1 1 - транзитивність (для стандартних завжди 1)
2 1 - інформація часткова, 0 - повна
3 1 - поле довжини атрибута два октети, 0 - один октет
4 не використовуються, повинні бути 0
5
6
7
  • Довжина видаляються маршрутів (2 октету);
  • Видаляються маршрути:
    • Довжина (1 октет) - довжина в бітах префікса IP-адреси;
    • Префікс IP-адреси, доповнений мінімальною кількістю біт до повного октету;
  • Довжина атрибутів шляхи (2 октету);
  • Атрибути шляху:
    • Тип атрибута:
      • Прапор атрибута;
      • Код атрибута;
    • Довжина атрибуту (1 або 2 октету, в залежності від прапора);
    • Дані атрибуту;
  • Інформація про досяжності - список префіксів IP-адрес:
    • Довжина (1 октет) - довжина в бітах префікса IP-адреси (нульова довжина - відповідність всім IP-адресами);
    • Префікс IP-адреси, доповнений мінімальною кількістю біт до повного октету.

Всі атрибути шляху відповідають всім записам у полі "Інформація про досяжності".


1.3. Збереження з'єднання

Повідомлення збереження з'єднання повинно надсилатися не рідше ніж раз на одну третю частину максимального інтервалу часу між повідомленнями, але не частіше ніж один раз на секунду. Якщо інтервал часу встановлений рівним нулю, то повідомлення не повинне періодично розсилатися. Повідомлення не використовує додаткових полів.

1.4. Оповіщення

Оповіщення надсилається у разі виявлення помилки, при цьому з'єднання закривається. Повідомлення містить наступні поля:

  • Код помилки (1 октет);
  • Субкод (1 октет);
  • Дані.

2. Процес вибору

Процес вибору запускається після оновлення інформації і служить для відбору маршрутів, призначених для використання локально і передачі іншим маршрутизаторам, що використовують BGP. Процес використовує атрибути отриманих маршрутів для отримання ступеня переваги маршруту або інформації про те, що маршрут є невідповідним для занесення в базу маршрутів і повинен бути виключений з процесу відбору. Процес ділиться на три фази:

  • Обчислення ступеня переваги кожного отриманого маршруту;
  • Вибір найкращого маршруту для кожного місця призначення і занесення його до бази маршрутів;
  • Передача маршрутів на інші маршрутизатори, при цьому може проводитися підсумовування маршрутів.