BGP
BGP (англ. Border Gateway Protocol, укр. Протокол Граничного Шлюзу) — з 1994 року єдиний протокол маршрутизації між автономними системами в глобальній мережі Інтернет[1], а його розширена версія MBGP (Multiprotocol BGP) використовується в MPLS-мережах ІТ-провайдерів.
Модель TCP/IP (RFC 1122) |
---|
Прикладний рівень |
Транспортний рівень |
Мережевий рівень |
Канальний рівень |
BGP є протоколом міждоменної маршрутизації та належить до класу дистанційно-векторних протоколів. Як протокол міждоменної маршрутизації використовується усіма інтернет-провайдерами, а також великими компаніями та організаціями, які мають власні публічні номери автономних систем (ASN) та користуються послугами більш ніж одного інтернет-провайдера (мултіхомінг) або мають прямі IP-з'єднання з багатьма іншими великими компаніям, що також мають власні публічні номери автономних систем, без використання послуг інтернет-провайдерів.
Разом з тим немає ніяких обмежень на використання BGP в локальних мережах крім рекомендацій про приватні ASN (64512-65534).[2], але використання BGP як протоколу внутрішньодоменної маршрутизації є недоцільним через значний час конвергенції (збіжності) у порівнянні з іншими протоколами маршрутизації, що закладено в його дизайні.
На відміну від класичного дистанційно-векторного протоколу RIP, метрикою якого є кількість хопів (відрізків шляху) між маршрутизаторами, найкращий маршрут BGP обирається по точно визначеному пріоритету атрибутів, одним із яких, але не найпріоритетнішим, є кількість хопів між автономними системами — найкоротший шлях між автономними системами (англ. shortest AS path). Тому іноді цей протокол зараховують до окремого класу шляхо-векторних протоколів.[3]
Загальні відомості
На відміну від інших протоколів ІP-маршрутизації, де маршрутизатори-сусіди знаходять один одного автоматично, BGP-сусіди мають бути прописані у конфігурації кожного маршрутизатора явно. Також BGP не має своєї власної реалізації комунікації між сусідами; для цих цілей BGP використовує протокол TCP (порт 179). BGP-сусіди періодично, за замовченням кожні 60 секунд, надсилають один одному повідомлення keepalive (чи живий?).
Маршрутизатори BGP часто називають BGP-спікерами (speaker). Якщо між ними є TCP-комунікація, вони стають один одному сусідами або у BGP-термінології — BGP-пірами (peer).
Маршрути, отримані від сусідів з інших автономних систем, тобто по eBGP (Exterior, Зовнішній BGP) для маршрутизаторів Cisco мають адміністративну відстань (administrative distance (AD)) — 20, відповідно від сусідів з тієї ж самої АС тобто по iBGP (Interior, Внутрішній BGP) — 200.
BGP-атрибути
Маршрутизатор, на якому працює BGP. передає своїм BGP-сусідам (англ. peer) IP-префікси та набір атрибутів до них на основі вибору своїх найкращих маршрутів до конкретних IP-мереж. В свою чергу ці атрибути використовуються BGP-сусідами для калькуляції своїх власних маршрутів.
Атрибути поділяються на категорії:[4]
- Добре знані (Well-known) — усі BGP-реалізації мусять підтримувати ці атрибути
- Обов'язкові (Mandatory) — усі BGP-маршрутизатори мусять надсилати ці атрибути своїм сусідам
- Дискреційні (Discretionary) — надсилання цих атрибутів відбувається на власний розсуд або за обопільною згодою
- Додаткові (Optional) — необов'язкові
- Транзитні (Transitive) — мають передаватися по ланцюжку від одного маршрутизатора до іншого
- Нетранзитні (Non-transitive) — маршрутизатор передає лише своїм BGP-сусідам, які не зобов'язані передавати ці атрибути далі по мережі
Один із лідерів виробництва мережевого обладнання компанія Cisco у своїй документації часто називає локальний параметр своїх BGP-маршрутизаторів — WEIGHT (Вага) BGP-атрибутом, хоча він не передається від сусіда до сусіда, а може бути прописаним у конфігурації конкретного маршрутизатора.[5]
Алгоритм вибору маршруту
BGP-маршрутизатор призначає перший отриманий маршрут найкращим поточним маршрутом для конкретної IP-мережі. Якщо BGP-маршрутизатор отримує новий маршрут то порівнює його з найкращим поточним маршрутом згідно зі списком пріоритетності BGP-атрибутів. Якщо поточний крок вирішив неоднозначність, до наступного кроку не переходять, а вважається, що найкращий маршрут знайдено:[6]
- Перевага надається маршруту з найбільшим значенням параметра (атрибута) WEIGHT (Вага). Застосовується лише на маршрутизаторах Cisco.
- Маршрут, що має найбільше значення атрибуту LOCAL_PREF (Локальна Перевага), за замовченням цей атрибут має значення 100.
- Маршрутизатори Cisco надають перевагу своїм власним маршрутам над маршрутами отриманими від BGP-сусідів[7]. Маршрутизатори інших виробників можуть ігнорувати цей крок, або мати свої власні правила.
- Надання переваги найкоротшому шляху до конкретної IP-мережі на основі атрибуту AS_PATH (Шлях по автономних системах). Тобто найкращим маршрутом є той до якого веде шлях через мінімальну кількість автономних систем
- Вибір на основі атрибуту ORIGIN (Джерело). Якщо IP-префікс якоїсь мережі спочатку був отриманий BGP із протоколу внутрішньодоменної маршрутизації тоді маршрут, що веде до цієї мережі, є пріоритетнішим, ніж маршрути, які отримали IP-префікс цієї мережі з EGP (протокол наразі не використовується) або джерело отримання невідоме.
- Надання переваги маршруту з найменшим значенням атрибута MED (multi-exit discriminator, дискримінатор мульти-виходу)
- Перевага маршруту, отриманому через eBGP (Exterior, Зовнішній BGP) над iBGP (Interior, Внутрішній BGP) тобто маршрут отриманий від BGP-сусіда з іншої автономної системи має перевагу над маршрутом отриманим від BGP-сусіда тієї ж самої AS.
- Обирається маршрут, який отриманий від ближчого BGP-сусіда. Ближчим сусідом є той до якого є найменшою відстань в таблиці маршрутизації сформованій на основі прямих з'єднань, статичних маршрутів та протоколів внутрішньодоменної маршрутизації (IGP).[8]
- Цей пункт виконується, коли ми використовуємо Багатошляховий (Мultipath) BGP, тобто коли для цілей балансування навантаження використовується окрім найкращого один чи більше додаткових маршрутів до конкретної IP-мережі. Якщо претендент на найкращий маршрут має такі ж самі характеристик згідно з попередніми пунктами, як і раніше обраний, то він не стає новим найкращим, але може бути обраним, як додатковий. Маршрутизатори CISCO можуть мати до 6 BGP-маршрутів до конкретної IP-мережі.
- Маршрут отриманий першим має пріоритет.
- Перевага маршруту, що отриманий від BGP сусіда з найменшим значенням його ідентифікатора (Router ID)
- Цей пункт виконується лише при використанні багатошляхової маршрутизації. Надається перевага маршруту, що проходить через мінімальну довжину кластерного списку.
- Перевага маршруту, отриманому від сусіда з найменшою IP-адресою інтерфейсу.
Бази даних BGP
- Таблиця сусідів.
- BGP-таблиця, яку також часто називають база даних надсилання (forwarding database) або база даних топології (topology database). Таблиця містить у собі всі IP-маршрути з їхніми BGP-атрибутами, отриманими від сусідів.
- Таблиця IP-маршрутизації (IP routing table). Тільки найкращі маршрути до конкретних IP-мереж, обраних згідно з алгоритмом вибору маршруту.
Примітки
- RFC 1654
- Autonomous System (AS) Numbers
- Networking 101: Understanding BGP Routing
- BGP Path Attributes | netcerts.net. Архів оригіналу за 26 червня 2015. Процитовано 1 липня 2015.
- BGP Case Studies — Cisco
- BGP Best Path Selection Algorithm — Cisco
- BGP route selection algorithm
- Understanding BGP Path Selection — Technical Documentation — Support — Juniper Networks