BGP

Автономні системи і BGP

BGP (англ. Border Gateway Protocol, укр. Протокол Граничного Шлюзу) — з 1994 року єдиний протокол маршрутизації між автономними системами в глобальній мережі Інтернет[1], а його розширена версія MBGP (Multiprotocol BGP) використовується в MPLS-мережах ІТ-провайдерів.

BGP є протоколом міждоменної маршрутизації[en] та належить до класу дистанційно-векторних протоколів[en]. Як протокол міждоменної маршрутизації використовується усіма інтернет-провайдерами, а також великими компаніями та організаціями, які мають власні публічні номери автономних систем (ASN) та користуються послугами більш ніж одного інтернет-провайдера (мултіхомінг[en]) або мають прямі IP-з'єднання з багатьма іншими великими компаніям, що також мають власні публічні номери автономних систем, без використання послуг інтернет-провайдерів.

Разом з тим немає ніяких обмежень на використання BGP в локальних мережах крім рекомендацій про приватні ASN (64512-65534).[2], але використання BGP як протоколу внутрішньодоменної маршрутизації[en] є недоцільним через значний час конвергенції (збіжності)[en] у порівнянні з іншими протоколами маршрутизації, що закладено в його дизайні.

На відміну від класичного дистанційно-векторного протоколу RIP, метрикою якого є кількість хопів (відрізків шляху) між маршрутизаторами, найкращий маршрут BGP обирається по точно визначеному пріоритету атрибутів, одним із яких, але не найпріоритетнішим, є кількість хопів між автономними системами — найкоротший шлях між автономними системами (англ. shortest AS path). Тому іноді цей протокол зараховують до окремого класу шляхо-векторних протоколів[en].[3]

Загальні відомості[ред. | ред. код]

На відміну від інших протоколів ІP-маршрутизації, де маршрутизатори-сусіди знаходять один одного автоматично, BGP-сусіди мають бути прописані у конфігурації кожного маршрутизатора явно. Також BGP не має своєї власної реалізації комунікації між сусідами; для цих цілей BGP використовує протокол TCP (порт 179). BGP-сусіди періодично, за замовченням кожні 60 секунд, надсилають один одному повідомлення keepalive[en] (чи живий?).

Маршрутизатори BGP часто називають BGP-спікерами (speaker). Якщо між ними є TCP-комунікація, вони стають один одному сусідами або у BGP-термінології — BGP-пірами (peer).

Маршрути, отримані від сусідів з інших автономних систем, тобто по eBGP (Exterior, Зовнішній BGP) для маршрутизаторів Cisco мають адміністративну відстань[en] (administrative distance (AD)) — 20, відповідно від сусідів з тієї ж самої АС тобто по iBGP (Interior, Внутрішній BGP) — 200.

BGP-атрибути[ред. | ред. код]

Топологія BGP

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

Атрибути поділяються на категорії:[4]

  1. Добре знані (Well-known) — усі BGP-реалізації мусять підтримувати ці атрибути
    1. Обов'язкові (Mandatory) — усі BGP-маршрутизатори мусять надсилати ці атрибути своїм сусідам
    2. Дискреційні (Discretionary) — надсилання цих атрибутів відбувається на власний розсуд або за обопільною згодою
  2. Додаткові (Optional) — необов'язкові
    1. Транзитні (Transitive) — мають передаватися по ланцюжку від одного маршрутизатора до іншого
    2. Нетранзитні (Non-transitive) — маршрутизатор передає лише своїм BGP-сусідам, які не зобов'язані передавати ці атрибути далі по мережі

Один із лідерів виробництва мережевого обладнання компанія Cisco у своїй документації часто називає локальний параметр своїх BGP-маршрутизаторів — WEIGHT (Вага) BGP-атрибутом, хоча він не передається від сусіда до сусіда, а може бути прописаним у конфігурації конкретного маршрутизатора.[5]

Алгоритм вибору маршруту[ред. | ред. код]

BGP-маршрутизатор призначає перший отриманий маршрут найкращим поточним маршрутом для конкретної IP-мережі. Якщо BGP-маршрутизатор отримує новий маршрут то порівнює його з найкращим поточним маршрутом згідно зі списком пріоритетності BGP-атрибутів. Якщо поточний крок вирішив неоднозначність, до наступного кроку не переходять, а вважається, що найкращий маршрут знайдено:[6]

  1. Перевага надається маршруту з найбільшим значенням параметра (атрибута) WEIGHT (Вага). Застосовується лише на маршрутизаторах Cisco.
  2. Маршрут, що має найбільше значення атрибуту LOCAL_PREF (Локальна Перевага), за замовченням цей атрибут має значення 100.
  3. Маршрутизатори Cisco надають перевагу своїм власним маршрутам над маршрутами отриманими від BGP-сусідів[7]. Маршрутизатори інших виробників можуть ігнорувати цей крок, або мати свої власні правила.
  4. Надання переваги найкоротшому шляху до конкретної IP-мережі на основі атрибуту AS_PATH (Шлях по автономних системах). Тобто найкращим маршрутом є той до якого веде шлях через мінімальну кількість автономних систем
  5. Вибір на основі атрибуту ORIGIN (Джерело). Якщо IP-префікс якоїсь мережі спочатку був отриманий BGP із протоколу внутрішньодоменної маршрутизації[en] тоді маршрут, що веде до цієї мережі, є пріоритетнішим, ніж маршрути, які отримали IP-префікс цієї мережі з EGP (протокол наразі не використовується) або джерело отримання невідоме.
  6. Надання переваги маршруту з найменшим значенням атрибута MED (multi-exit discriminator, дискримінатор мульти-виходу)
  7. Перевага маршруту, отриманому через eBGP (Exterior, Зовнішній BGP) над iBGP (Interior, Внутрішній BGP) тобто маршрут отриманий від BGP-сусіда з іншої автономної системи має перевагу над маршрутом отриманим від BGP-сусіда тієї ж самої AS.
  8. Обирається маршрут, який отриманий від ближчого BGP-сусіда. Ближчим сусідом є той до якого є найменшою відстань в таблиці маршрутизації сформованій на основі прямих з'єднань, статичних маршрутів[en] та протоколів внутрішньодоменної маршрутизації (IGP).[8]
  9. Цей пункт виконується, коли ми використовуємо Багатошляховий[en] (Multipath) BGP, тобто коли для цілей балансування навантаження використовується окрім найкращого один чи більше додаткових маршрутів до конкретної IP-мережі. Якщо претендент на найкращий маршрут має такі ж самі характеристик згідно з попередніми пунктами, як і раніше обраний, то він не стає новим найкращим, але може бути обраним, як додатковий. Маршрутизатори CISCO можуть мати до 6 BGP-маршрутів до конкретної IP-мережі.
  10. Маршрут отриманий першим має пріоритет.
  11. Перевага маршруту, що отриманий від BGP сусіда з найменшим значенням його ідентифікатора (Router ID)
  12. Цей пункт виконується лише при використанні багатошляхової маршрутизації. Надається перевага маршруту, що проходить через мінімальну довжину кластерного списку.
  13. Перевага маршруту, отриманому від сусіда з найменшою IP-адресою інтерфейсу.

Бази даних BGP[ред. | ред. код]

  1. Таблиця сусідів.
  2. BGP-таблиця, яку також часто називають база даних надсилання (forwarding database) або база даних топології (topology database). Таблиця містить у собі всі IP-маршрути з їхніми BGP-атрибутами, отриманими від сусідів.
  3. Таблиця IP-маршрутизації (IP routing table). Тільки найкращі маршрути до конкретних IP-мереж, обраних згідно з алгоритмом вибору маршруту.

Примітки[ред. | ред. код]

  1. RFC 1654
  2. Autonomous System (AS) Numbers. Архів оригіналу за 4 липня 2015. Процитовано 29 червня 2015.
  3. Networking 101: Understanding BGP Routing. Архів оригіналу за 5 вересня 2015. Процитовано 30 червня 2015.
  4. BGP Path Attributes | netcerts.net. Архів оригіналу за 26 червня 2015. Процитовано 1 липня 2015.
  5. BGP Case Studies — Cisco. Архів оригіналу за 2 липня 2015. Процитовано 2 липня 2015.
  6. BGP Best Path Selection Algorithm — Cisco. Архів оригіналу за 2 липня 2015. Процитовано 2 липня 2015.
  7. BGP route selection algorithm. Архів оригіналу за 5 березня 2016. Процитовано 3 липня 2015.
  8. Understanding BGP Path Selection — Technical Documentation — Support — Juniper Networks. Архів оригіналу за 5 липня 2015. Процитовано 4 липня 2015.