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

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

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

ћасштабируемость BGP

ѕредыдущие статьи цикла про BGP:

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

ћеханизмы масштабируемости BGP

»стощение доступных автономных системных номеров €вилось проблемой точно так же, как было проблемой дл€ интернета истощение IP-адресов. „тобы решить эту проблему, инженеры обратились к знакомому решению.

ќни обозначили диапазон номеров AS только дл€ частного использовани€. Ёто позвол€ет вам экспериментировать с AS конструкцией и политикой, например, в лаборатории и использовать числа, которые гарантированно не конфликтуют с интернет-системами.

ѕомните, что число AS-это 16-разр€дное число, допускающее до 65 536 чисел AS. ƒиапазон дл€ частного использовани€: 64512-65535.

≈ще одним решением проблемы дефицита, стало расширение адресного пространства имен. Ѕыло утверждено пространство, представл€ющее собой 32-разр€дное число.

¬ течение длительного времени, с точки зрени€ масштабируемости, одноранговые группы Border Gateway Protocol считались абсолютной необходимостью. ћы настраивали одноранговые группы дл€ уменьшени€ конфигурационных файлов. “ак же мы настраивали одноранговые группы дл€ повышени€ производительности.

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

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

“опологи€

ѕример 1: типична€ конфигураци€ BGP без одноранговых групп

ATL1(config)#router bgp 200
ATL1( config-router)#neiqhbor 10.30.30.5 remote-as 200    
ATL1( config-router)#neiqhbor 10.30.30.5 update- source lo0 
ATL1( config= router)#neiqhbor 10.30 .30.5 password S34Dfr112s1WP 
ATL1(config-router)#neiqhbor 10.40.40.4 remote-as 200
ATL1( config-router)#neiqhbor 10.40.40 .4 update- source lo0
ATL1(config-router)#neiqhbor 10.40.40.4 password S34Dfr112s1WP

ќчевидно, что все команды настройки относ€тс€ к конкретному соседу. » многие из ваших соседей будут иметь те же самые характеристики. »меет смысл сгруппировать их настройки в одноранговую группу. ѕример 2 показывает, как можно настроить и использовать одноранговую группу BGP.

ѕример 2: одноранговые группы BGP

ATL2 (config)#router bgp 200
ATL2 (config-router)#neighbor MYPEERGR1 peer-group
ATL2 (config-router)#neighbor MYPEERGR1 remote-as 200 
ATL2 (config-router)#neighbor MYPEERG1l update-source lo0 
ATL2(config-router)#neighbor MYPEERGRl next-hop-self
ATL2 (config-router)#neighbor 10.40.40 .4 peer-group MYPEERGR1
ATL2 (config-router)#neighbor 10.50.50 .5 peer-group MYPEERGR1

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

Ѕолее современный (и более эффективный) подход заключаетс€ в использовании шаблонов сеансов дл€ сокращени€ конфигураций. ј с точки зрени€ повышени€ производительности теперь у нас есть (начина€ с iOS 12 и более поздних версий) динамические группы обновлений. ќни обеспечивают повышение производительности без необходимости настраивать что-либо в отношении одноранговых групп или шаблонов.

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

Ѕлагодар€ шаблонам сеансов и шаблонам политик мы настраиваем параметры, необходимые дл€ правильной установки сеанса, и помещаем эти параметры в шаблон сеанса. “е параметры, которые св€заны с действи€ми политик, мы помещаем в шаблон политики.

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

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

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

Ќапример, мы делаем update source. ћы настраиваем eBGP multihop. ¬се это имеет отношение к текущему сеансу, и именно это мы будем прописывать в шаблоне сеанса. ќбратите внимание, что мы начинаем с создани€ шаблона. ѕоэтому используем команду template peer-session, а затем зададим ему им€. » тогда в режиме конфигурации шаблона можем настроить наследование, которое позволит наследовать настройки от другого однорангового сеанса. ћожем установить наш remote-as как и/или update source. ѕосле завершени€, мы используем команду exit-peer-session, чтобы выйти из режима конфигурации дл€ этого сеанса. ѕример 3 показывает конфигурацию шаблона сеанса.

ѕример 3: Ўаблоны сеансов BGP

ATL2#conf t
Enter configuration commands, one per line. End with CNTL/Z. 
ATL2 (config)#router bgp 200
ATL2 (config-router)#template peer- session MYNAME
ATL2 (config-router-stmp)#inherit peer- session MYOTHERNAME
ATL2 (config- router-stmp )#remote-as 200
ATL2(config-router-stmp )#password MySecrectPass123
ATL2 (config-router-stmp )#exit-peer-session
ATL2 (config-router)#neiqhbor 10.30.30 .10 inherit peer-session MYNAME
ATL2 (config-router)#end
ATL2#

Ёто простой пример настройки соседства с помощью оператора neighbor и использовани€ наследовани€ однорангового сеанса. «атем присваиваетс€ им€ однорангового сеанса, созданного нами дл€ нашего шаблона сеанса. Ёто соседство наследует параметры сеанса.

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

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

ѕример 4 показывает настройку и использование шаблона политики BGP.

ѕример 4: Ўаблоны политики BGP

ATL2#conf t
Enter configuration commands, one per line. End with CNTL/Z. 
ATL2 (config)#router bgp 200
ATL2(config-router)#template peer-policy MYPOLICYNAME
ATL2 (config-router-ptmp )#next-hop-self
ATL2 (config-router-ptmp )#route-map MYMAP out
ATL2 (config-router-ptmp )#allowas-in
ATL2 (config-router-ptmp )#exit-peer-policy
ATL2 (config-router)#neighbor 10.40.40.10 remote-as 200
ATL2 (config-router)#neighbor 10.40.40.10 inherit peer-policy MYNAME
ATL2 (config-router)#end 
ATL2#

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

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

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

Ѕлагодар€ предотвращению циклов и правилу разделени€ горизонта (split-horizon rule) IBGP, среди прочих факторов, нам нужно придумать определенные решени€ масштабируемости дл€ пирингов IBGP. ќдним из таких решений €вл€етс€ router reflector.

–ис. 1: ѕример топологии router reflector

ѕример топологии router reflector

 онфигураци€ router reflector удивительно проста, поскольку все это обрабатываетс€ на самом router reflector (R3).  лиенты route reflector Ц это R4, R5 и R6. ќни совершенно не знают о конфигурации и настроены дл€ пиринга IBGP с R3 как обычно. ѕример 5 показывает пример конфигурации router reflector. ќбратите внимание, что это происходит через простую спецификацию клиента router reflector.

ѕример 5: BGP ROUTE REFLECTOR

R3#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
 R3 (config)#router bgp 200
R3 (config-router)#neighbor 10.50.50.10 remote -as 200
R3 (config-router)#neighbor 10.50.50.10 route-reflector-client
R3 (config-router)#end	
R3#		

Route reflector автоматически создает значение идентификатора (ID) кластера дл€ кластера, и это устройство и эти клиенты будут частью того, что мы называем кластером route reflector. Cisco рекомендует разрешить автоматическое назначение идентификатора кластера дл€ идентификации клиента. Ёто 32-разр€дный идентификатор, который BGP извлекает из route reflector.

ћаги€ Route reflector заключаетс€ в том, как мен€ютс€ правила IBGP. Ќапример, если обновление поступает от клиента Route reflector (скажем, R4), то устройство R3 Ђотражаетї это обновление своим другим клиентам (R5 и R6), а также своим неклиентам (R1 и R2). Ёто обновление происходит даже при том, что конфигураци€ дл€ IBGP значительно короче полной сетки пирингов, котора€ обычно требуетс€.

ј теперь что будет, если обновление поступит от не клиента Route reflector (R1)? Route reflector отправит это обновление всем своим клиентам Route reflector (R4, R5 и R6). Ќо тогда R3 будет следовать правилам IBGP, и в этом случае он не будет отправл€ть обновление через IBGP другому не клиенту Route reflector (R2).

„тобы решить эту проблему, необходимо будет создать пиринг от R1 к устройству R2 с помощью IBGP. »ли, можно добавить R2 в качестве клиента Route reflector R3.

≈сть еще один способ, которым мы могли бы решить проблему с масштабируемостью IBGP- это манипулирование поведением EBGP. ћы делаем это с конфедераци€ми. ¬ы просто не замечаете, что конфедерации используютс€ так же часто, как Route reflector. » причина состоит в том, что они усложн€ют нашу топологию, и делают поиск неисправностей более сложным. Ќа рис. 2 показан пример топологии конфедерации.

–исунок 2: ѕример топологии конфедерации

ѕример топологии конфедерации

ћы имеем наш AS 100. ƒл€ создани€ конфедерации необходимо создать небольшие субавтономные системы внутри нашей основной автономной системы. ћы их пронумеруем с помощью, номеров автономных систем только дл€ частного использовани€.

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

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

¬новь добавленные атрибуты обеспечивают защиту от цикла из-за конфедерации. јтрибут AS_confed_sequence и AS_confed_set используютс€ в качестве механизмов предотвращени€ циклов.

ѕример 6 показывает пример частичной настройки конфедерации BGP.

R3#configure terminal
Enter configuration commands, one per line. End with CNTL/Z. 
R3 (config)#router bgp	65501
R3(config-router)#bgp confederation identifier 100
R3 (config-router)#bgp confederation peers 65502
R3 (config-router)#neighbor 10 .20.20.1 remote-as 65502
R3 (config-router)#end 
R3#

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

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

јтрибуты сообщества могут быть представлены в нескольких форматах. Ѕолее старый формат выгл€дит следующим образом:

  • Decimal - 0 to 4294967200 (в дес€тичном)
  • Hexadecimal Ц 0x0 to 0xffffffa0 (в шестнадцатеричном)

Ѕолее новый формат:

  • AA:NN

AA - это 16-битное число, которое представл€ет ваш номер AS, а затем идет 16-битное число, используемое дл€ задани€ значимости своей политике AS. “аким образом, вы можете задать дл€ AS 100 100:101, где 101- это номер внутренней политики, которую вы хотите применить к префиксам.

≈сть также хорошо известные общественные значени€. Ёто:

  • No-export - префиксы не объ€вл€ютс€ за пределами AS. ¬ы можете установить это значение, когда отправл€ете префикс в соседний AS. чтобы заставить его (соседний AS) не объ€вл€ть префикс за собственные границы.
  • Local-AS - префиксы с этим атрибутом сообщества никогда не объ€вл€ютс€ за пределами локального AS
  • No-advertise - префиксы с этим атрибутом сообщества не объ€вл€ютс€ ни на одном устройстве

Ёти хорошо известные атрибуты сообщества просто идентифицируютс€ по их зарезервированным именам.

≈сть также расширенные сообщества, которые также можно использовать. ќни предлагают 64-битную версию дл€ идентификации сообществ! «адание параметров осуществл€етс€ настройкой TYPE:VALUE. ¬ыгл€дит оно следующим образом:

  • 65535:4294967295

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

ѕример 7: ”становка значений сообщества в BGP

R3#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
R3(config)#ip prefix-list MYLIST permit 172.16.0.0/16 le 32
R3(config)#route-map SETCOMM permit 10
R3(config-route-map)#match ip address prefix-list MYLIST
R3(config-route-map)#set community no-export
R3(config-route-map)#route-map SETCOMM permit 20
R3(config)#router bgp 100
R3(config-router)#neighbor 10.20.20.1 route-map SETCOMM out
R3 (config-router)#neighbor 10.20.20.1 send-community
R3(config-router)#end
R3#