⚡ ѕ–ќ…ƒ» Ќќ¬џ… ќЌЋј…Ќ  ”–— ѕќ —≈“≈¬џћ “≈’ЌќЋќ√»яћ —ќ — »ƒ ќ… 50%

до конца скидки осталось

Ќачать обучение 🚀
ћерион Ќетворкс

12 минут чтени€

ѕервоначально BGP был разработан как протокол ¬нешнего шлюза (Exterior Gateway Protocol - EGP), что означает, что он предназначалс€ дл€ подключени€ сетей или автономных систем (AS), а не устройств. ≈сли BGP €вл€етс€ EGP, это должно означать, что другие протоколы маршрутизации, такие как RIP, EIGRP, OSPF и IS-IS, должны быть протоколами внутренних шлюзов (Interior Gateway Protocols- IGP). „еткое определение внутренних и внешних шлюзов оказалось полезным при проектировании и эксплуатации крупномасштабных сетей. BGP €вл€етс€ уникальным среди широко распространенных протоколов в том, что касаетс€ расчета пути без петель. —уществует три широко используемых протокола векторов рассто€ний (Spanning Tree, RIP и EIGRP). —уществует два широко используемых протокола состо€ни€ канала св€зи (OSPF и IS-IS). » есть еще много примеров этих двух типов протоколов, разработанных и внедренных в то, что можно было бы считать нишевыми рынками. BGP, однако, €вл€етс€ единственным широко развернутым протоколом вектора пути.

ќбучайс€ в Merion Academy

ѕройди курс по
сетевым технологи€м

Ќачать

 аковы наиболее важные цели EGP? ѕервый - это, очевидно, выбор путей без петель, но это €вно не означает кратчайшего пути. ѕричина, по которой кратчайший путь не так важен в EGP, как в IGP, заключаетс€ в том, что EGP используютс€ дл€ соединени€ объектов, таких как поставщики услуг, поставщики контента и корпоративные сети. ѕодключение сетей на этом уровне означает сосредоточение внимани€ на политике, а не на эффективности - с точки зрени€ сложности, повышение состо€ни€ с помощью механизмов политики при одновременном снижении общей оптимизации сети с точки зрени€ передачи чистого трафика.


BGP-пиринг

BGP не обеспечивает надежной передачи информации. ¬место этого BGP полагаетс€ на TCP дл€ передачи информации между одноранговыми узлами BGP. »спользование TCP гарантирует:

  • ќбнаружение MTU обрабатываетс€ даже дл€ соединений, пересекающих несколько переходов (или маршрутизаторов).
  • ”правление потоком осуществл€етс€ базовым транспортом, поэтому BGP не нуждаетс€ в непосредственном управлении потоком (хот€ большинство реализаций BGP действительно взаимодействуют со стеком TCP на локальном хосте, чтобы повысить пропускную способность, в частности, дл€ BGP).
  • ƒвусторонн€€ св€зь между одноранговыми узлами обеспечиваетс€ трехсторонним рукопожатием, реализованным в TCP.

Ќесмотр€ на то, что BGP полагаетс€ на базовое TCP-соединение дл€ многих функций, которые плоскости управлени€ должны решать при построении смежности, по-прежнему существует р€д функций, которые TCP не может предоставить. —ледовательно, необходимо более подробно рассмотреть процесс пиринга BGP.

–исунок 1 позвол€ет изучить этот процесс.

–ис. 1 ѕроцесс пиринга BGP
  1. —еанс пиринга BGP начинаетс€ в состо€нии ожидани€ (idle state).
  2. A отправл€ет TCP open на порт 179. B отвечает на временный порт (ephemeral port) на A. ѕосле завершени€ трехстороннего подтверждени€ TCP (сеанс TCP успешен), BGP перемещает состо€ние пиринга дл€ подключени€. ≈сли пиринговый сеанс формируетс€ через какой-либо тип фильтрации на основе состо€ни€, такой как брандмауэр, важно, чтобы открытое TCP-сообщение передавалось Ђизнутриї фильтрующего устройства.
  3. ¬ случае сбо€ TCP-соединени€ состо€ние пиринга BGP переводитс€ в активное.
  4. A отправл€ет BGP open в B и переводит B в состо€ние opensent. ¬ этот момент A ожидает от B отправки сообщени€ keepalive. ≈сли B не отправл€ет сообщение keepalive в течение определенного периода, A вернет сеанс обратно в состо€ние ожидани€ (idle state). ќткрытое сообщение содержит р€д параметров, например, какие семейства адресов поддерживают два спикера BGP и hold timer. Ёто называетс€ согласованием возможностей. —амый низкий (минимальный) hold timer из двух объ€вленных выбираетс€ в качестве hold timer дл€ однорангового сеанса.
  5.  огда B отправл€ет A сообщение keepalive, A переводит B в состо€ние openconfirm.
  6. Ќа этом этапе A отправит B сообщение keepalive дл€ проверки соединени€.  огда A и B получают сообщени€ поддержки активности друг друга, пиринговый сеанс переходит в established state.
  7. ƒва узла BGP обмениваютс€ маршрутами, поэтому их таблицы обновлены. A и B обмениваютс€ только своими лучшими пут€ми, если кака€-либо форма многонаправленного распространени€ BGP не поддерживаетс€ и не настроена на двух спикерах.
  8. „тобы уведомить A, что он завершил отправку всей своей локальной таблицы, B отправл€ет A сигнал End of Table (EOT) или End of RIB (EOR).

—уществует два типа пиринговых отношений BGP: одноранговые узлы BGP в одной и той же автономной системе (AS, что обычно означает набор маршрутизаторов в одном административном домене, хот€ это довольно общее определение) называютс€ внутренними одноранговыми узлами BGP (internal BGP - iBGP) и ќдноранговые узлы BGP между автономными системами называютс€ внешними (или внешними - exterior) узлами BGP (eBGP). ’от€ два типа пиринговых отношений BGP построены одинаково, у них разные правила объ€влени€.


ѕроцесс выбора оптимального пути BGP

ѕоскольку BGP предназначен дл€ соединени€ автономных систем, алгоритм наилучшего пути ориентирован в первую очередь на политику, а не на отсутствие петель. ‘актически, если вы изучите какое-либо стандартное объ€снение процесса наилучшего пути BGP, то, €вл€етс€ ли конкретный путь свободным от петель, вообще не будет учитыватьс€ в процессе прин€ти€ решени€.  ак же тогда BGP определ€ет, что конкретный узел объ€вл€ет маршрут без петель? –исунок 2 демонстрирует это.

–ис. 2 BGP и пути без петель

Ќа рисунке 2 каждый маршрутизатор находитс€ в отдельной AS, поэтому кажда€ пара спикеров BGP будет формировать сеанс пиринга eBGP. A, который подключен к 2001: db8: 3e8: 100 :: / 64, объ€вл€ет этот маршрут к B и C. ќбъ€влени€ маршрута BGP несут р€д атрибутов, одним из которых €вл€етс€ путь AS. ѕеред тем, как A объ€вит 100 :: / 64 дл€ B, он добавл€ет свой номер AS в атрибут AS Path. B получает маршрут и объ€вл€ет его D. ѕеред объ€влением маршрута к D он добавл€ет AS65001 к AS Path. “огда путь AS, прослеживающийс€ от A до C, на каждом шаге выгл€дит примерно так:

  • ѕолучено B: [AS65000]
  • ѕолучено C: [AS65000, AS65001]
  • ѕолучено D: [AS65000, AS65001, AS65003]

 огда D получил маршрут от B, он анонсирует его обратно в C (в BGP нет split horizon). ѕредположим, что C, в свою очередь, объ€вл€ет обратный маршрут к A по какой-то причине (в этой ситуации это не так, потому что путь через A был бы лучшим путем к месту назначени€, а просто дл€ демонстрации предотвращени€ петель), A будет провер€ть AS Path и обнаружение его локальной AS находитс€ в AS Path. Ёто €вно петл€, поэтому A просто игнорирует маршрут. ѕоскольку этот маршрут игнорируетс€, он никогда не помещаетс€ в таблицу топологии BGP. —ледовательно, с использованием процесса наилучшего пути BGP сравниваютс€ только маршруты без петель.

¬ большинстве реализаций процесс наилучшего пути BGP состоит из 13 шагов (первый шаг реализуетс€ не всегда, так как это локальное решение со стороны узла BGP):

  1. ¬ыбираетс€ маршрут с наибольшим весом. Ќекоторые реализации не используют вес маршрута.
  2. ¬ыбираетс€ маршрут с наивысшим местным предпочтением (local preference- LOCAL PREF). Local preference собой политику выхода локальной AS - какую точку выхода из доступных точек выхода предпочел бы владелец этой AS, как и узел BGP.
  3. ѕредпочитайте маршрут с локальным происхождением, то есть на этом узле BGP. Ётот шаг редко используетс€ в процессе прин€ти€ решени€.
  4. ѕредпочитайте путь с самым коротким AS Path. Ётот шаг предназначен дл€ выбора наиболее эффективного пути через объединенную сеть, выбора пути, который будет проходить через наименьшее количество автономных систем дл€ достижени€ пункта назначени€. ќператоры часто добавл€ют записи AS Path, чтобы повли€ть на этот шаг в процессе прин€ти€ решени€.
  5. ѕредпочитайте путь с наименьшим значением координат. ћаршруты, которые перераспредел€ютс€ из IGP, предпочтительнее маршрутов с неизвестным происхождением. Ётот шаг редко оказывает какое - либо вли€ние на процесс прин€ти€ решений.
  6. ѕредпочитайте путь с самым низким multiexit discriminator (MED). MED представл€ет входную политику удаленной AS. “аким образом, MED сравниваетс€ только в том случае, если от одной и той же соседней AS было получено несколько маршрутов. ≈сли один и тот же маршрут получен от двух разных соседних автономных систем, MED игнорируетс€.
  7. ѕредпочитайте маршруты eBGP маршрутам iBGP.
  8. ѕредпочитайте маршрут с наименьшей стоимостью IGP до следующего перехода. ≈сли политика локального выхода не задана (в форме локального предпочтени€), и соседн€€ AS не установила политику входа (в форме MED), то путь с ближайшим выходом из локального маршрутизатора выбираетс€ как точка выхода.
  9. ќпределите, следует ли устанавливать несколько путей в таблице маршрутизации (настроена некотора€ форма multipath).
  10. ѕри сравнении двух внешних маршрутов (полученных от однорангового узла eBGP) предпочтите самый старый маршрут или маршрут, изученный первым. Ёто правило предотвращает отток маршрутов только потому, что маршруты обновл€ютс€.
  11. ѕредпочитайте маршрут, полученный от однорангового узла с наименьшим идентификатором маршрутизатора. Ёто просто средство разрешени€ конфликтов дл€ предотвращени€ оттока в таблице маршрутизации.
  12. ѕредпочитайте маршрут с наименьшей длиной кластера.
  13. ѕредпочитайте маршрут, полученный от однорангового узла с наименьшим адресом пиринга. Ёто, оп€ть же, просто тай-брейк, выбранный произвольно, чтобы предотвратить ненужные св€зи и вызвать отток в таблице маршрутизации, и обычно используетс€, когда два одноранговых узла BGP соединены по двум параллельным каналам.

’от€ это кажетс€ долгим процессом, почти каждое решение наилучшего пути в BGP сводитс€ к четырем факторам: локальному предпочтению (local preference), MED, длине AS Path и стоимости IGP.


ѕравила объ€влени€ BGP

BGP имеет два простых правила дл€ определени€ того, где объ€вл€ть маршрут:

  • ќбъ€вл€йте лучший путь к каждому пункту назначени€ каждому узлу eBGP.
  • ќбъ€вл€йте лучший путь, полученный от однорангового узла eBGP, дл€ каждого однорангового узла iBGP.

≈ще один способ сформулировать эти два правила: никогда не объ€вл€ть маршрут, полученный от iBGP, другому узлу iBGP. –ассмотрим рисунок 3.

–ис. 3 ѕравила объ€влени€ BGP

Ќа рисунке 3 A и B - это одноранговые узлы eBGP, а B и C, а также C и D - одноранговые узлы iBGP. ѕредположим, A объ€вл€ет 2001: db8: 3e8: 100 :: / 64 дл€ B. ѕоскольку B получил это объ€вление маршрута от однорангового узла eBGP, он объ€вит 100 :: / 64 на C, который €вл€етс€ одноранговым узлом iBGP. C, изучив этот маршрут, не будет объ€вл€ть маршрут к D, поскольку C получил маршрут от однорангового узла iBGP, а D также €вл€етс€ одноранговым узлом iBGP. “аким образом, на этом рисунке D не узнает о 100 :: / 64. Ёто не очень полезно в реальном мире, однако ограничение присутствует не просто так.

–ассмотрим, как BGP предотвращает образование петель маршрутизации - передава€ список автономных систем, через которые прошел маршрут, в самом объ€влении маршрута. ѕри объ€влении маршрута от одного спикера iBGP к другому AS Path не измен€етс€. ≈сли узлы iBGP объ€вл€ют маршруты, полученные от одноранговых узлов iBGP, одноранговым узлам iBGP, петли маршрутизации могут быть легко сформированы. ќдним из решений этой проблемы €вл€етс€ простое построение многоуровневых пиринговых отношений между B и D (помните, что BGP работает поверх TCP. ѕока существует IP-соединение между двум€ узлами BGP, они могут построить пиринговые отношени€). ѕредположим, что B строит пиринговые отношени€ с D через C, и ни B, ни D не стро€т пиринговые отношени€ с C. „то произойдет, когда трафик переключаетс€ на 100 :: / 64 посредством D на C? „то будет с пакетами в этом потоке на C? ” C не будет маршрута к 100 :: / 64, поэтому он сбросит трафик. Ёто может быть решено несколькими способами - например, B и D могут туннелировать трафик через C, поэтому C не об€зательно должен иметь доступность к внешнему пункту назначени€. BGP также можно настроить дл€ перераспределени€ маршрутов в любой основной запущенный IGP (это плохо - не делайте этого).

ƒл€ решени€ этой проблемы были стандартизированы рефлекторы маршрутов BGP. –исунок 4 иллюстрирует работу отражателей маршрута.

–ис. 4 –ефлекторы маршрутов BGP

Ќа рисунке 4 E сконфигурирован как рефлектор маршрута. B, C и D настроены как клиенты рефлектора маршрутов (в частности, как клиенты E). A объ€вл€ет маршрут 2001: db8: 3e8: 100 :: / 64 к B. B объ€вл€ет этот маршрут E, потому что он был получен от однорангового узла eBGP, а E €вл€етс€ одноранговым узлом iBGP. E добавл€ет новый атрибут к маршруту, список кластеров, который указывает путь обновлени€ в AS через кластеры отражател€ маршрута. «атем E объ€вит маршрут каждому из своих клиентов. ѕредотвращение зацикливани€ в этом случае обрабатываетс€ списком кластеров.


ѕодведение итогов о BGP

’от€ изначально BGP был разработан дл€ соединени€ автономных систем, его использование распространилось на центры обработки данных, передачу информации о виртуальных частных сет€х. ‘актически, использование BGP практически безгранично. ѕостепенно BGP превратилс€ в очень сложный протокол.

BGP можно описать как:

  • ѕроактивный протокол, который узнает о достижимых местах назначени€ через конфигурацию, локальную информацию и другие протоколы.
  • ѕротокол вектора пути, который объ€вл€ет только лучший путь к каждому соседу и не предотвращает образование петель в автономной системе (если не развернуты рефлекторы маршрута или кака€-либо дополнительна€ функци€)
  • ¬ыбор путей без петель путем изучени€ пути, по которому может быть достигнут пункт назначени€
  • ѕроверка двустороннего подключени€ и MTU за счет использовани€ TCP в качестве основы дл€ передачи информации.

>