BGP
Состояния соседства
http://habrastorage.org/getpro/habr/post_images/442/780/549/442780549c2f45cdda10773121b2800d.png
Сообщения
- Open - отправляется только на стадии установления соседства. Содержит параметры BGP соседа.
- Update - передает routing info между соседями. Атрибуты и список префиксов, подходящий под данные атрибуты.
- Keepalive - для удостоверения, что с соседством все ок.
- Notification - в случае если не прошел keepalive или update.
- Refresh - soft clearing BGP сессии.
Атрибуты пути (path attributes)
Атрибуты пути разделены на 4 категории:
- Well-known mandatory — все маршрутизаторы, работающие по протоколу BGP, должны распознавать эти атрибуты. Должны присутствовать во всех обновлениях (update).
- Well-known discretionary — все маршрутизаторы, работающие по протоколу BGP, должны распознавать эти атрибуты. Могут присутствовать в обновлениях (update), но их присутствие не обязательно.
- Optional transitive — могут не распознаваться всеми реализациями BGP. Если маршрутизатор не распознал атрибут, он помечает обновление как частичное (partial) и отправляет его дальше соседям, сохраняя не распознанный атрибут.
- Optional non-transitive — могут не распознаваться всеми реализациями BGP. Если маршрутизатор не распознал атрибут, то атрибут игнорируется и при передаче соседям отбрасывается.
Примеры атрибутов BGP:
- Well-known mandatory:
- Autonomous system path
- Next-hop
- Origin
- Well-known discretionary:
- Local preference
- Atomic aggregate
- Optional transitive:
- Aggregator
- Communities
- Optional non-transitive:
- Multi-exit discriminator (MED)
Autonomous system path
Атрибут Autonomous system path (AS Path):
- Описывает через какие автономные системы надо пройти, чтобы дойти до сети назначения.
- Номер AS добавляется при передаче обновления из одной AS eBGP-соседу в другой AS.
Используется для:
- обнаружения петель
- применения политик
Каждый сегмент атрибута AS path представлен в виде поля TLV (path segment type, path segment length, path segment value):
- path segment type — поле размером 1 байт для которого определены такие значения:
- 1 — AS_SET: неупорядоченное множество автономных систем, через которые прошел маршрут в сообщении Update,
- 2 — AS_SEQUENCE: упорядоченное множество автономных систем, через которые прошел маршрут в сообщении Update
- path segment length — поле размером 1 байт. Указывает сколько автономных систем указано в поле path segment value
- path segment value — номера автономных систем, каждая представлена полем размером 2 байта.
Next-hop
Атрибут Next-hop
- IP-адрес следующей AS для достижения сети назначения.
- Это IP-адрес eBGP-маршрутизатора, через который идет путь к сети назначения.
- Атрибут меняется при передаче префикса в другую AS
- Атрибут не меняется при передаче префикса в ту же AS
Third party next hop: 300px
Origin
Атрибут Origin — указывает на то, каким образом был получен маршрут в обновлении.
Возможные значения атрибута:
- 0 — IGP: NLRI получена внутри исходной автономной системы;
- 1 — EGP: NLRI выучена по протоколу Exterior Gateway Protocol (EGP). Предшественник BGP, не используется
- 2 — Incomplete: NLRI была выучена каким-то другим образом
Local preference
Атрибут Local preference:
- Указывает маршрутизаторам внутри автономной системы как выйти за её пределы.
- Этот атрибут передается только в пределах одной автономной системы.
- На маршрутизаторах Cisco и Juniper по умолчанию значение атрибута — 100.
- Выбирается та точка выхода у которой значение атрибута больше.
- Если eBGP-сосед получает обновление с выставленным значением local preference, он игнорирует этот атрибут.
- В Junos lpf можно задать через policy и в protocol bgp. Если задан обоими способами, то будет назначен lpf из policy.
Atomic aggregate
Aggregator
Communities
Атрибут community:
- Тегирование маршрутов
- Существуют предопределенные значения
- По умолчанию не пересылаются соседям
- Один из вариантов применения: передается соседней AS для управления входящим трафиком
Значения от 0x00000000 до 0x0000FFFF и от 0xFFFF0000 до 0xFFFFFFFF зарезервированы.
Как правило community отображаются в формате ASN:VALUE. В таком формате, доступны для использования community от 1:0 до 65534:65535. В первой части указывается номер автономной системы, а во второй значение community, которое определяет политику маршрутизации трафика.
Некоторые значения communities предопределены. RFC1997 определяет три значения таких community. Эти значения должны одинаково распознаваться и обрабатываться всеми реализациями BGP, которые распознают атрибут community.
Если маршрутизатор получает маршрут, в котором указано предопределенное значение communities, то он выполняет специфическое, предопределенное действие основанное на значении атрибута.
Предопределенные значения communities (Well-known Communities):
- no-export (0xFFFFFF01) — Все маршруты которые передаются с таким значением атрибута community не должны анонсироваться за пределы конфедерации (автономная система, которая не является частью конфедерации считается конфедерацией). То есть, маршруты не анонсируются EBGP-соседям, но анонсируются внешним соседям в конфедерации,
- no-advertise (0xFFFFFF02) — Все маршруты которые передаются с таким значением атрибута community не должны анонсироваться другим BGP-соседям,
- no-export-subconfed (0xFFFFFF03) — Все маршруты которые передаются с таким значением атрибута community не должны анонсироваться внешним BGP-соседям (ни внешним в конфедерации, ни настоящим внешним соседям). В Cisco это значение встречается и под названием local-as.
Маршрутизаторы, которые не поддерживают атрибут community, будут передавать его далее, так как это transitive атрибут.
Multi exit discriminator (MED)
Атрибут MED:
- Используется для информирования eBGP-соседей о том, какой путь в автономную систему более предпочтительный.
- Атрибут передается между автономными системами.
- Маршрутизаторы внутри соседней автономной системы используют этот атрибут, но, как только обновление выходит за пределы AS, атрибут MED отбрасывается.
- Чем меньше значение атрибута, тем более предпочтительна точка входа в автономную систему.
Weight (проприетарный атрибут Cisco)
Атрибут Weight:
- Позволяет назначить "вес" различным путям локально на маршрутизаторе.
- Используется в тех случаях, когда у одного маршрутизатора есть несколько выходов из автономной системы (сам маршрутизатор является точкой выхода).
- Имеет значение только локально, в пределах маршрутизатора.
- Не передается в обновлениях.
- Чем больше значение атрибута, тем более предпочтителен путь выхода.
Касательно всех атрибутов
Атрибуты, при выборе best, считаются лучшими с наименьшими значением. Это правило касается всех атрибутов, кроме Local Preference
Механизмы управления входящим трафиком:
- AS path prepend
- Community (если поддерживает провайдер)
- MED (подключение к одной и той же AS)
- Анонс разных префиксов через разных ISP
Механизмы управления исходящим трафиком:
- Проприетарный атрибут Cisco weight (локально на маршрутизаторе)
- Атрибут Local Preference (локально в AS)
- Балансировка трафика
Выбор лучшего пути (BGP Active Route Selection)
- Juniper
- Prefer highest local preference value
- Prefer shortest AS-path length
- Prefer lowest Origin value
- Prefer lowest MED value
- Prefer routes learned from an EBGP peer over an IBGP peer
- If the remaining routes were learned through IBGP, use the path with the lowest IGP cost to the IBGP peer.
- For EBGP received routes, prefer the current active route; otherwise, prefer routes from the peer with the lowest RID
- Prefer paths with the shortest cluster length
- Prefer routes from the peer with the lowest peer ID
© Наталия Бобкова 2014—2022