Понимание протокола BGP

Border Gateway Protocol (BGP), описанный в RFC 1771, предназначен для маршрутизации между автономными системами. Этот протокол включает в себя защиту от «зацикливания»

 Аглоритм выбора маршрута

1. Если ближайший следующий узел (NextHop) недоступен, то маршрут игнорируется.
2. Предпочитается маршрут с наибольшим весом (Weight По умолчанию, значение weight attribute = 32768 , используется только в Cisco , это значение не передается в протаколе BGP соседнима маршрутизаторам );
3. Если веса маршрутов оказались одинаковыми, то следует выбрать из них маршрут с наибольшим
значением коэффициента предпочтения (LocPref , это тоже саоме что и wieght — только эта инофрмация передается с BGP апдейтами своим соседям , чем больше тем выше приоритет);
4. Если нет локально cгенерированных маршрутов и коэффициент предпочтения оказался одинаковым, то следует предпочесть маршрут с наименьшим значением атрибута AS_PATH (то есть самый короткий путь , то есть дистанция);
5. Если длина AS_PATH у маршрутов совпадает, то следует выбрать маршрут с наименьшим значением атрибута типа протокола ORIGIN (где IGP стоит ниже EGP, a EGP — ниже, чем INCOMPLETE). То есть необходимо сравнить из какого источника был получен маршрут на маршрутизаторе с которого получены обновления этого маршрута, если он задан статически с использованием команды network в настройках BGP (IGP) то он более предпочтителен чем полученный из другого внешнего источника (другой AS) BGP (EGP). INCOMPLETE определяет
маршруты полученные при помощи других протоколов внутри одной AS, например, OSPF, такой
маршрут наименее предпочтителен;
6. Если атрибут типа протокола также совпадает, то следует выбрать маршрут с наименьшим значением атрибута MED, если маршруты были приняты от одной и той же AS (или если была задана команда bgp always-compare-med). То есть необходимо сравнить приоритеты маршрутов (Metric) рекомендуемые соседней AS (Multi-Exit Descriminator Attribute — это способ указания наилучшего пути своим внешним neighbor’ам. , чем меньше тем предпочтительней);
7. Если у маршрутов равные значения MED, то IBGP маршрутам (BGP внутри одной AS) следует предпочесть EBGP маршруты (BGP между AS);
8. Если во всех предыдущих случаях получены совпадения, то следует предпочесть маршрут, который пролегает через ближайшего соседа используя локальный протокол маршрутизации, например, OSPF или статические маршруты, то есть предлагается избрать кратчайший путь к удаленному узлу внутри AS. (Следовать кратчайшему пути до узла, указанного в NEXT_HOP)

9. Origin attribute содержит информацию о том, кто является «хозяином» данного пути. То есть кто инициировал запись в таблице BGP маршрутизации о данном конкретном пути (то есть получен ли он от IGP или EGP или же это Incomplete — неизвестен) .

10. Если и внутренние маршруты окажутся одинаковыми, то для решения этой за дачи следует использовать атрибут ROUTER_ID. В этом случае следует предпочесть маршрут, полученный от маршрутизатора BGP, с наименьшим значением RID. В Cisco IOS в качестве RID выступает наибольший адрес Loopback интерфейса, если такой сконфигурирован, иначе — наибольший IP адрес маршрутизатора. В конечном случае, установление RID зависит от изготовителя конкретного оборудования.

 

Ещё одно важное правило не относящееся напрямую к BGP, но относящееся ко всей маршрутизации в IP сетях: из двух равнозначных маршрутов будет выбран тот, маска сети которого длиннее. То есть маршрут 6.0.0.0/16 будет более предпочтительным чем 6.0.0.0/8, если мы хотим достичь узла 6.0.0.1. В таблице маршрутизации это будет выглядеть так, если бы AS6 дополнительно объявляла бы маршрут до сети 6.0.0.0/16:

 

Так же стоит отметить , что для BGP не важна какой у вас линк 10 mb/s или 1000 mb/s — для него это не имеет

значения .

Community attribute — это способ группирования маршрутов (communities), к которым может быть установлено одно из правил, таких как «acceptance», «preference», «redistribution».

Как и MED Attribute, Community передается соседним neighbor’ам и служит для управления маршрутами к вашей AS.

Для установки community attribute используется route-map.

Несколько заранее определенных Community attributes содержатся в табл. 12-1.

Table  Predefined Communities

Community:                     Meaning:

no-export                      Не передавать эти маршруты EBGP peer’ам
no-advertise                   Не передавать эти маршруты вообще никому
internet                       Передавать эти пути в internet community; Все маршруты внутри сети относятся к этому community.

 

Administrative Distance

Обычно, о некоем маршруте роутер может узнать из более чем одного протокола. Механизм «Administrative Distance» используется для распознования путей, о которых роутер узнал, используя несколько протоколов.

Путь с мЕньшим значением administrative distance прописываются в IP routing table.

По умолчанию, BGP использует Administrative Distances из табл. 12-2.

Distance         Default value     Function

Extarnal         20                Присваивается путям, полученным из EBGP
Internal         200               ——————- // ———— IBGP
Local            200               Пути, которые рождены на данном роутере

ЗАМЕЧАНИЕ: Distance не влияет на алгоритм выбора BGP пути, но влияет на
процесс записи путей, полученных по BGP, в IP routing table.

Ниже представлена метрика (вес маршрутов)

Connected interface 0
Static route 1
Enhanced Interior Gateway Routing Protocol (EIGRP) summary route 5
External Border Gateway Protocol (BGP) 20
Internal EIGRP 90
IGRP 100
OSPF 110
Intermediate System-to-Intermediate System (IS-IS) 115
Routing Information Protocol (RIP) 120
Exterior Gateway Protocol (EGP) 140
On Demand Routing (ODR) 160
External EIGRP 170
Internal BGP 200
Unknown 255

 

Если административная дистанция равна 255, роутер не доверяет источнику маршрута и никогда не инсталирует такой маршрут в таблицу маршрутизации.

Обычно, если маршрут приходит через BGP, он прописывается в IP routing table, поскольку его «distance» = 20. Однако иногда две AS имеют как бы «back door» между собой, полученный по IGP, кроме пути, полученного по EBGP. При этом, с помощью определенных команд на одном из этих роутеров, можно управлять маршрутизацией таким образом, что наилучшим путем будет путь, полученный через IGP, а запасным путем (который будет использоваться в IP route table в случае падения основного пути) будет путь, полученный через BGP update.

Так же стоит отметить Multihop используется только с EBGP.

BGP peers инициируют обмен полными таблицами BGP маршрутизации между собой. Все роутеры, обменивающиеся BGP таблицами внутри AS, должны установить «peers relations» между собой. Это означает, что BGP speakers внутри AS должны быть логически связаны . Позже они посылают лишь incremental updates (table version number — это счетчик опдейтов — он увеличевается при обновлении информации о новых сетях или маршрутах). Кроме этого, BGP peers обмениваются keepalive messages (чтобы удостовериться, что связь между ними не потеряна), и notification messages (сообщениями об ошибках и другой служебной информацией).

Информация о путях к роутерам, пришедшая по EBGP, может быть redistributed (преобразована) в IGP в пределах данной AS, а затем быть redistributed обратно в другую AS.

Комманда synchronisation — добавляем маршруты при опдейтах и проверяет их достижимость перед тем как внести в свою таблицу .

Как происходит обмен данными через BGP

 

    • 1 — OPEN2 — KEEPALIVE3 — UPDATE4 — NOTIFICATION

 Как работает алгоритм оптимального выбора пути :

1. WEIGHT

2.LOCAL_PREF

3.Если есть next-hop 0.0.0.0

4. AS_PATH

5. Предпочтение отдается пути с меньшим типом источника (IGP меньше, чем Exterior Gateway Protocol (EGP), а EGP меньше, чем INCOMPLETE)

6. MED

7. Предпочтение отдается путям eBGP, а не путями iBGP (то есть метрика маршрута)

8. Выбрать самый старый маршрут для eBGP-пути.

9. Выбрать путь через соседа с наименьшим BGP router ID.

10. Выбрать путь через соседа с наименьшим IP-адресом.