ѕодпишитесь на наш Telegram-канал Ѕудьте в курсе последних новостей 👇 😉 ѕодписатьс€
ѕоддержим в трудное врем€ —пециальное предложение на техническую поддержку вашей »“ - инфраструктуры силами наших экспертов ѕодобрать тариф
ѕоставка оборудовани€ √аранти€ и помощь с настройкой. —кидка дл€ наших читателей по промокоду WIKIMERIONET  упить
»нтерфейс статистики Merion Mertics показывает ключевые диаграммы и графики по звонкам, а также историю звонков в формате, который легко поймет менеджер ѕопробовать бесплатно
¬недрение
офисной телефонии
Ўаг на пути к созданию доступных унифицированных коммуникаций в вашей компании ¬недрить
»нтеграци€ с CRM ѕомогаем навести пор€док с данными
и хранить их в единой экосистеме
ѕодключить
»“ Ѕезопасность ”мна€ информационна€ безопасность дл€ вашего бизнеса «аказать
ћерион Ќетворкс

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

¬ этой статье вы познакомитесь с основами BGP и узнаете о его различных типах сообщений и состо€ни€х.

 ќсновы протокола Border Gateway Protocol

¬се статьи из цикла про BGP:

  1. ѕостроение маршрута протоколом BGP
  2. ‘ормирование соседства в BGP
  3. ќповещени€ NLRI и политики маршрутизации BGP
  4. ћасштабируемость протокола BGP
  5. –абота протокола BGP с IPv6

ѕолное руководство по BGP в PDF

ќх как мы любим PDF 🙃 ƒл€ вашего удобства, весь цикл статей по BGP (Border Gateway Protocol) мы "упаковали" в документ формата PDF.


ќбзор BGP

ƒавайте посмотрим правде в глаза - Border Gateway Protocol неверо€тно уникален, особенно когда мы сравниваем его с другими протоколами маршрутизации. —амое первое, что делает BGP таким уникальным, - это то, что он наш единственный внешний шлюзовой протокол (EGP), широко используемый сегодн€. ћы знаем, что у нас есть Interior Gateway Protocols (IGPs), и похожий на OSPF, работающий внутри автономной системы. Ќо BGP - это EGP, а это означает, что он (как правило) будет принимать префиксы, которые наход€тс€ внутри автономной системы, и отправл€ть их в другие автономные системы.

Ќа рисунке 1 показан пример топологии BGP.

 пример топологии BGP

»менно поэтому протокол BGP €вл€етс€ протоколом, который обеспечивает функционирование сети. »нтернет-провайдеры (ISP) могут использовать BGP дл€ перемещени€ префиксной информации между другими »нтернет-провайдерами. ќднако уникальные характеристики BGP на этом не заканчиваютс€. ќдна из вещей, котора€ очень уникальна в протоколе, заключаетс€ в том, что он формирует пиринги (*равноправный информационный обмен) точка-точка с другими спикерами BGP, и вы должны создавать эти пиринги вручную.

— протоколом пограничного шлюза (BGP) нет такой вещи, как автоматическое формирование соседства с целой кучей устройств на одном сегменте. ƒл€ каждого из устройств, с которыми BGP должен пиринговать, он делает это с помощью одного однорангового отношени€, которое мы предпочитаем называть пирингом BGP.

≈ще одно очень уникальное свойство заключаетс€ в том, что BGP - это протокол прикладного уровн€. ѕо общему признанию, большинство сетевых инженеров поспорили бы, что это протокол сетевого уровн€ Ц и они проиграли бы этот спор!

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

— помощью Border Gateway Protocol разработчики решили не включать в протокол все эти типы контрол€ надежности. ќни просто полагаютс€ на чудесную надежность коммуникаций TCP. ¬ частности, BGP использует TCP- порт 179.

 огда мы думаем о наших протоколах маршрутизации, мы знаем, что будет некоторое значение, которое будет служить метрическим значением дл€ измерени€ рассто€ни€. Ќапример, в случае OSPF мы знаем, что метрикой €вл€етс€ стоимость, а стоимость напр€мую зависит от пропускной способности.

BGP не работает таким образом. ѕротокол BGP использует атрибуты, а не только одного показател€. ќдним из главных атрибутов протокола BGP называетс€ атрибута AS_PATH. Ёто список всех автономных систем (AS), которые префикс должен был передать на своем пути, скажем, в вашу автономную систему.

AS_PATH - это фактически запись всей информации о пути AS. ѕуть AS настолько важен дл€ функции BGP, что протокол часто называют протоколом маршрутизации вектора пути. ќбратите внимание, что это не протокол вектора рассто€ни€ (Distance Vector), а вектор пути (Path Vector). AS_PATH используетс€ не только дл€ определени€ наилучшего пути к месту назначени€ (т.е. более короткого пути AS), но и в качестве механизма предотвращени€ петель.

 огда автономна€ система видит свой собственный номер AS в AS_PATH, она очень обеспокоена тем, что в коммуникаци€х может быть петл€. „то- то еще, что делает BGP неверо€тно уникальным, - это тот факт, что, когда мы формируем пиринги внутри автономной системы, они называютс€ внутренними пирингами BGP, а правила, которым следуют, €вл€ютс€ внутренними правилами BGP (IBGP).

 огда мы формируем пиринг между автономными системами, это называетс€ протоколом внешнего пограничного шлюза (EBGP). (ѕримечание: в некоторых литературных источниках EBGP пишетс€ как eBGP.) ѕомните, что причина, по которой BGP различает пиринг IBGP и пиринг EBGP, заключаетс€ в том, что эксплуатационные характеристики должны измен€тьс€ в зависимости от того, как выполн€етс€ пиринг. Ќапример, мы за€вили, что существует путь AS, который записывает автономные системы, которые передаютс€. ќчевидно, что при пиринге EBGP, когда префикс передаетс€ от одного AS к другому AS, отправл€ющий AS должен поместить свою автономную систему в путь. Ќо с IBGP, префикс остаетс€ в AS, поэтому протокол BGP не обновл€ет значение AS. ¬ы можете вернутьс€ к рисунку 1, чтобы увидеть эти различные типы пиринга в действии.

“аким образом, правила мен€ютс€, когда мы говорим о IBGP против EBGP, чтобы быть последовательным и безошибочными. » уникальные свойства BGP просто не заканчиваютс€ на этом.


“ипы сообщений BGP, форматы и соседние типы сообщений состо€ни€ соседства BGP

ћногие люди описывают протокол пограничного шлюза (BGP) как чрезвычайно сложный протокол, но € не согласна с этим. ¬идите ли, установка политик BGP и контроль распространени€ префиксов внутри BGP-это может быть довольно сложно. Ќо сам протокол, хот€ и уникален, в основном прост в своей работе.

¬ этом части статьи мы рассмотрим типы сообщений BGP. Ќа рисунке 2 показаны различные типы сообщений BGP.

 типы сообщений BGP

«апомните первый шаг.  огда два спикера BGP хот€т сформировать пиринг, они будут полагатьс€ на протокол управлени€ передачей (TCP). », конечно, мы знаем, что будет three-way handshake (трехстороннее рукопожатие) с TCP, чтобы начать этот надежный сеанс св€зи.

„то же происходит дальше? “ак это то, что эти устройства будут обмениватьс€ открытыми сообщени€ми. ќткрытое сообщение содержит очень важную информацию, основным компонентом которой €вл€етс€ номер автономной системы однорангового узла. Ёто будет определ€ть, €вл€етс€ ли это пиринг IBGP или пиринг EBGP.

 огда происходит обмен открытыми сообщени€ми, то спикеры BGP далее начинают обмениватьс€ сообщени€ми Keepalive. Ёто, простой механизм, чтобы убедитьс€, что другой прибор жив, счастлив и здоров, и что пиринг в состо€нии up. ѕосле этого спикеры BGP получают обновлени€ дл€ совместного использовани€, называемое сообщением Update.

≈сли в какой-то момент времени что-то пойдет не так, спикеры BGP могут использовать простое сообщение Notification. ƒанное сообщение прерывает пиринг в результате ошибки, котора€ может произойти с BGP.

ќдним из очень интересных типов сообщений BGP €вл€етс€ тип сообщени€ Route Refresh (обновлени€ маршрута). ’от€ этот тип сообщений не был включен в исходный стандарт BGP, большинство наших основных сетевых вендоров поддерживают Route Refresh. Route Refresh позвол€ют сосед€м обновл€ть, скажем, информацию о маршруте BGP или даже обновл€ть вещи после довольно серьезной реконфигурации политики, не разруша€ пиринг и не вли€€ на пиринг каким- либо большим негативным образом.

–исунок 3 показывает эти типы сообщений в действии благодар€ захвату WiresharkТом обмена сообщени€ми BGP в нашем примере топологии из рисунка 1.

 типы сообщений BGP

‘орматы сообщений BGP

¬ этом части статьи мы еще больше узнаем об эксплуатационных характеристиках Border Gateway Protocol, более подробно рассмотрев типы сообщений BGP.

 аждый тип сообщени€ имеет заголовок BGP. Ётот заголовок показан на рисунке 4. ¬ы видите, что заголовок BGP имеет большое поле маркера. ћожно подумать, что это чрезвычайно важно. ќн имеет размер 16 октетов.  ак оказалось, это поле будет заполнено у всех.

 заголовок BGP

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

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

¬ажными пол€ми в заголовке, будут длина (Length) (то есть длина всего сообщени€) и пол€ типа (Type). ѕоле “ип указывает, с каким типом сообщени€ BGP мы имеем дело.

≈сли, например, в этом поле 1, вы имеете дело с открытым (Open) сообщением BGP. «начение 2 указывает на сообщение об обновлении (Update). ј 3 означает уведомление (Notification). «начение 4 будет иметь сообщение Keepalive. 5 указывает на необ€зательное Route Refresh.

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

“еперь € надеюсь вы понимаете, что, когда ваша система хочет сформировать BGP-пиринг с другим устройством, она собираетс€ отправить открытое сообщение. Ќа рисунке 5 показан формат этих сообщений.  Keepalive

 огда мы смотрим на формат открытого (Open) сообщени€, мы замечаем, что там есть номер версии. »менно так BGP указывает на версию BGP, которую вы используете.

¬аша система также отправит свой номер AS в открытом сообщении. Ёто очень важно дл€ такого поведени€ IBGP по сравнению с EBGP. —уществует значение Hold Time. „то же такое Hold Time?  огда маршрутизатор, с которым вы хотите сверитьс€, получает Open сообщение, он смотрит врем€ удержани€ (Hold Time), смотрит на свое собственное настроенное Hold Time, а затем использует меньшее из двух значений. Hold Time должно быть либо нулевым, либо не менее трех секунд.

≈сть поле BGP Identifier. Ёто ¬аш BGP Router ID, и это уникальное значение, которое будет однозначно отличать вашу систему в пирингах BGP.

Ќаконец, у нас есть дополнительные параметры (Optional Parameter), которые можно задать с помощью открытого сообщени€. “ам есть необ€зательна€ длина параметра (Optional Parameter Length), а затем сами параметры, дающие дополнительную гибкость работы с протоколом.

≈ще одно действительно важное сообщение, которое у нас есть, - это сообщение об обновлении (Update) BGP. Ќа рисунке 6 показана эта структура сообщени€.

 это сообщение об обновлении (Update) BGP

—ообщение об обновлении BGP содержит индикатор длины отозванных маршрутов (Withdrawn Routes Length). Ёто гарантирует, что сообщение обновлени€ €вл€етс€ средством дл€ маршрутов, которые будут удалены из таблицы BGP соседа. ѕримечание: затем в сообщение об обновлении вставл€етс€ список изъ€тых маршрутов.

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

’орошо известный атрибут, о котором мы уже упоминали, - это путь. ¬ы помните, что это список автономных систем, которые префикс передал на своем пути по всей инфраструктуре BGP. AS Path будет примером атрибута, который должен быть в сообщении об обновлении, когда он используетс€ дл€ отправки префиксов. “ам может быть много атрибутов, которые мы используем, и это €вл€етс€ причиной дл€ Total Path Attribute Length в сообщении об обновлении.

—ама информаци€ о префиксе сети находитс€ в поле NLRI. Ёто означает информацию о достижимости сетевого уровн€ (Network Layer Reachability Information). ¬ы можете вернутьс€ к рисунку 3 и увидеть эти пол€ в реальном пакете, а также их содержимое.

—оздатели BGP сделали гениальную вещь. ќни создали протокол дл€ передачи NLRI таким образом, чтобы он был гибким по мере изменени€ сетей и необходимости передачи новой информации. BGP создан дл€ того, чтобы сразу же запускать дл€ нас такие вещи, как IPv6. ќн также может легко переносить префиксы VPN IPv4 внутри чего-то вроде MPLS VPN.

Ќа рисунке 7 показаны пол€ сообщени€ уведомлени€ (Notification).

 сообщени€ уведомлени€ (Notification)

—амое первое поле - это код ошибки (Error Code). «атем поле ѕодкод ошибки (Error Subcode). Ёти пол€ дают нам общий тип ошибки, а затем еще больше информации. Ќапример, если в Error Code у нас есть значение 3, а затем в Error Subcode у нас есть значение 3, это указывает на то, что существует сообщение об ошибке обновлени€.


—оседство BGP

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

ћногие IGP спроектированы так, чтобы быть максимально быстро сход€щимис€. Ёто происходит потому, что в момент, когда происходит изменение внутри сети вашей организации, мы хотим sub-second сходимости других устройств, чтобы мы знали об этом изменении. BGP спроектирован по-другому. “аймеры имеют гораздо большую продолжительность, чем мы привыкли бы с нашим IGP, потому что мы хотим стабильности, жертву€ скоростью сходимости. ¬ конце концов, BGP имеет дело с общедоступными таблицами маршрутизации интернета в развертывани€х поставщиков услуг. Ёти таблицы маршрутизации очень массивны. Ќестабильность в этой среде приведет к катастрофе всего публичного »нтернета.

 огда вы изучите состо€ние соседства BGP, вы поймете дл€ чего это. ќтносительно большое число состо€ний соседства BGP, показанных на рисунке 8, свидетельствует о тщательных усили€х по обеспечению стабильности протокола маршрутизации.

состо€ние соседства BGP

ќбратите внимание, что есть состо€ние просто€, когда устройство не инициирует ни одно из других состо€ний, и есть установленное состо€ние, когда оно полностью установлено со своим узлом. „то несколько удивительно, так это то, что есть все эти УпромежуточныеФ состо€ни€ подключени€, активного, открытого подтверждени€ (OpenConfirm) и активного.

—осто€ние Ч подключени€-это состо€ние, в котором устройство BGP ожидает завершени€ TCP- соединени€ с соседним устройством.

¬ активном состо€нии он пытаетс€ инициировать TCP - соединение со своим соседом. ¬ состо€нии OpenSent, как вы можете догадатьс€, он отправл€ет свое открытое сообщение и ждет ответа от своего соседа с его открытым сообщением. ¬ режиме OpenConfirm, спикер BGP на самом деле ждет, Keepalive на основе успешного обмена открытыми сообщени€ми. Ѕудем наде€тьс€, что устройство BGP получит Keepalive. ≈сли будет ошибка, он получит уведомление.

»спользу€ в Cisco CLI специальные команды, можно узнать все о состо€нии BGP. ѕример 1 показывает использование команды show ip bgp summary дл€ проверки соседнего состо€ни€.

TPA1#show ip bgp summary
BGP router identifier 10.10.10.1, local AS number 100
BGP table version is 3, main routing table version 3
Neighbor	V	AS	MsgRcvd	MsgSent	TblVer	InQ	QutQ	Up/down	State/PfxRcd
10.10.10.2	4	200	0	0	1	0	0	00:00:00	Idle

ќбратите внимание на пример 1. Ётот пиринг BGP находитс€ в состо€нии ожидани€ (параметр State/PfxRcd в состо€нии Idle).  ак только произойдет соединение значение IDLE заменитс€ на 1 (≈сли ATL использует только один префикс с TPA 1).