Вы здесь

Routing BGP

Сообщение об ошибке

  • Notice: Undefined index: DraggableCaptchaAnswer в функции draggable_captcha_generate_refresh() (строка 197 в файле /usr/local/www/drupal7/sites/all/modules/draggable_captcha/draggable_captcha.module).
  • Notice: Undefined index: DraggableCaptchaCodes в функции draggable_captcha_generate_refresh() (строка 197 в файле /usr/local/www/drupal7/sites/all/modules/draggable_captcha/draggable_captcha.module).

Полезные материалы

Fortigate BGP cookbook of example configuration and debug commands
https://yurisk.info/2020/05/20/fortigate-bgp-cookbook-of-example-configu...

Использовались материалы:
http://xgu.ru/wiki/BGP
https://bgphelp.com/

Терминология BGP

BGP состоит из двух отдельных подмножеств или понятий: internal BGP (iBGP) и external BGP (eBGP).
iBGP предназначено для использования внутри наших сетей.
eBGP используется для соединения друг с другом множества своих и чужих сетей.

BGP был разработан в 1989г. Текущая версия - BGP-4, была выпущена в 1995.
BGP-4+ поддерживает IPv6.
Основные преимущества BGP - classless inter-domain routing, aggregate routes.
BGP - единственный routing protocol, который использует TCP, все остальные протоколы динамической маршрутизации используют UDP.

BGP "принимает решения" на основе path, network policies, rulesets, в отличие от метрик IGP, таких как hop-count или cost-factor.

BGP - это routing protocol, используемый в Интернет. BGP позволяет эффективно децентрализовать управление, не зависеть от конкретного ISP, обладает гибкостью.
BGP осуществляет маршрутизацию между Autonomous Systems (AS), и иногда него называют Path-Vector Routing Protocol, поскольку он использует AS Path.
bgp_ciscomaster.ru_01.jpg

BGP routing information включает в себя последовательность AS numbers, обозначающих path(путь) до назначения через сеть.
Несмотря на то, что BGP используется прежде всего для маршрутизации между AS, он также используется в больших сетях MPLS-VPN.
BGP намного более масштабируем в сравнении с другими IGP.
Autonomous Systems (AS) - это совокупность маршрутизаторов, работающих под одним административным началом.

BGP поддерживает префиксы и поэтому является Classless Routing Protocol.
Обмен Routing Information осуществляется между peers.

BGPv4 на сегодняшний день является единственным Exterior Gateway Protocol (EGP).

Когда использовать BGP

bgp_ciscomaster.ru_02.jpg
Площадки, имеющие одного ISP, обычно используют статический Default Route, и весь трафик наружу уходить через этот ISP.
Чаще всего такие Single-homed network, белые адреса получают от провайдера, к которому они подключены.
Эти белые адреса привязаны именно к данному провайдеру, и могут использоваться только через этого провайдера, и они называются Nonportable Addresses.

Нам может понадобиться BGP в случае, когда у площадки есть более одного подключения к Интернет.
Настройки BGP позволяют контролировать исходящий и входящий трафик.
И хотя BGP способен переключаться, в случае сбоя одного из ISP, он не способен это делать также быстро, как протоколы IGP.

В случая подключения по BGP к нескольким ISP, маршрутизатор площадки использует свой пул белых адресов. Этот пул независим от провайдеров, и маршрутизация к нему определяется протоколом BGP. Адреса, входящие в этот пул называются Portable Addresses.
Portable Addresses могут быть выданы через Regional Address Registry.

eBGP и iBGP

bgp_ciscomaster.ru_03.jpg
BGP поддерживает два типа обмена информацией.
Обмены routing information между AS называются external BGP (eBGP).
Обмены routing information внутри AS (inter-AS) называются internal BGP (iBGP).

Соединение eBGP - это соединение между устройствами, находящимися в разных AS. Это физическое соединение, поверх которого поднято BGP connection.
Маршрутизаторы находятся в общей IP подсети, и обмениваются информацией между AS. Такие маршрутизаторы называются Border Gateway.

Соединение iBGP обычно поднимается между интерфейсами loopback маршрутизаторов. Часто iBGP поднимается между разрозненными роутерами, поэтому для поднятия iBGP необходимо использование внутреннего IGP, либо статики.

BGP peering sessions

В отличие от других динамических протоколов, для BGP все neighbors прописываются вручную.
BGP в качестве транспорта использует TCP:179

У BGP neighbor возможны следующие состояния:
bgp_ciscomaster.ru_04.jpg

  • idle state - Инициализация BGP, все соединения BGP рефьюзятся.
  • Connect State - BGP получил TCP SYN от нейбора, и ждёт TCP подключения с соседом(TCP three way handshake). Если TCP подключится, BGP отправит OPEN message, и state поменяется на Opensent. Если же TCP fail, система рестартует таймер ConnectRetryTimer, слушает входящие соединения и меняет состояние на Active.
  • Active State - BGP сам инициирует соединение TCP (TCP three way handshake with a SYN). Если TCP подключится, BGP отправит OPEN message, и state поменяется на Opensent. Если устройство остаётся в состоянии Active, необходимо проверить физическое подключение, пинг, фаервол и тд
  • OpenSent state - Если TCP успешно подключился, BGP отправит OPEN message, и state поменяется на Opensent. В этом состоянии BGP ждёт сообщения OPEN от соседа. Сообщение OPEN содержит характеристики BGP (Версия BGP, AS, ID и тд). Если полученное сообщение OPEN содержит ошибки, роутер уходит в состояние IDLE. Если ошибок нет, роутер отправляет keepalive message.
  • OpenConfirm state - BGP ожидает keepalive или notification message. Если в течение hold timer, keepalive не получено, BGP отправляет notification message и уходит в состояние IDLE. Если же keepalive успешно получено, состояние меняется на Established
  • Established state - в этом состоянии BGP обмениваются UPDATE, NOTIFICATION, KEEPALIVE. Каждый раз, при получении UPDATE или KEEPALIVE, hold timer рестартуется. Если hold timer достигает нуля, BGP отправляет notification message и уходит в состояние IDLE.

BGP message types

BGP message может быть максимального размера 4096 octets и минимального 19 octets (только header).
Message может быть нескольких типов:

  • Open message - Данное сообщение отправляется после того, как завершено TCP three-way handshake. Сообщение OPEN содержит характеристики BGP (Версия BGP, AS, ID и тд).
  • Update message - используется для транспорта routing information
  • Keepalive message - пиры обмениваются такими сообщениями для поддержания соединения и проверки статуса соседних маршрутизаторов.
  • Notification message - используется при обнаружении ошибок в BGP session, например unsupported option, невозможность отправки Update или Keepalive. При обнаружении ошибки BGP session закрывается.
  • Refresh message - в нормальном режиме работы BGP speaker не делает readvertise routes, т.е. не обновляет те маршруты, которые он уже отсылал. Refresh message позволяет выполнить BGP session soft clearing, заставляя повторно обменяться маршрутами.

BGP update message

bgp_ciscomaster.ru_05.jpg
BGP update message включает в себя single path, и далее список множества prefixes, которые доступны через этот path.
Полученная информация далее обрабатывается алгоритмами BGP: используются BGP attributes, предотвращение routing loops, определение best path для каждого prefix.
BGP peers подразумевают, что текущая информация актуальна, если не пришло udate для какого-то списка префиксов.
Update может включать изменения path для списка префиксов, или инфу о том, что какой-то префикс вообще недоступен.
Если от соседнего маршрутизатора не пришло Keepalive за время hold timer, считается что он упал. BGP speaker удаляет все маршруты, полученные от упавшего соседа, а также отправляет update message другим соседям.

Пример работы BGP

Рассмотрим следующий пример. Customer A подключён к единственному провайдеру ISP A.
ISP A предоставил для Customer A следующие (будем считать белые) адреса: 172.20.21.0/24
Внутри провайдера этот префикс входит в суммаризованый, более широкий диапазон, которым владеет ISP A: 172.20.0.0/16
Поскольку Customer A подключён к единственному провайдеру, для работы Интернет ему достаточно прописать статичный default router.
bgp_ciscomaster.ru_06.jpg

Рассмотрим как это работает внутри ISP A.
Внутри своей сети ISP A имеются маршруты на каждый используемый префикс, например наш 172.20.21.0/24 живёт на R1. R1 сообщает об этом префиксе всем своим соседям, используя IGP или iBGP.
Но на уровне провайдеров, например для ISP B, сообщается только о широком префиксе 172.20.0.0/16. Aggregate используется для уменьшения размера global routing table.
bgp_ciscomaster.ru_07.jpg

Таким образом, ISP A отдаёт по BGP его агрегированный range 172.20.0.0/16 + информацию Path, т.е. информацию о пути до этого диапазона.
Информация о пути состоит из нескольких атрибутов Path attributes.
Одним из них является атрибут AS Path, который представляет из себя список AS, через которые проходит путь до нужного диапазона.
Каждый маршрутизатор BGP модифицирует Path attributes, и в том числе AS Path, и отдаёт эту инфу соседям.
bgp_ciscomaster.ru_08.jpg

Рассмотрим Customer B. В настоящее время у него Single homed network, с подключением к ISP C. Но Customer B планирует подключение ко второму ISP, поэтому Customer B у себя поднял BGP.
Для Customer B был выдана AS 65501, а также portable prefix /20, и он его адвертайзит в сторону ISP C.
bgp_ciscomaster.ru_09.jpg

Теперь рассмотри момент, когда Customer B стал решил добавить второе соединение к ISP B.
В этом случае ISP B получает информацию о prefix 172.31.128.0/20 из двух источников: непосредственно от Customer B, и от ISP C.
ISP B выбирает best path, исходя из метрики AS path, и помещает лучший маршрут в свю routing table. Далее ISP B отдаёт в сторону ISP A prefix 172.31.128.0/20 со своим Best path.
bgp_ciscomaster.ru_10.jpg
Customer B также получает два advrtisements о префиксе ISP A, и также выберет Best path, через который доступен этот префикс.

BGP Attributes

Основная задача BGP - найти не shortest path до назначения, а best path.
Best path до данного префикса определяется для каждой AS.
Определение best path происходит через учёт outbound routing preferences, которые задаются на роутере, где живет наша AS; а также через учёт inbound routing preferences, которые роутер получил от соседа (например AS Path).
Вся эта информация содержится в path attributes, которые описывают path до данного префикса.
Рассмотрим эти атрибуты далее.

Next-hop Attribute

BGP Next-hop Attribute - это IP адрес соседнего BGP маршрутизатора (BGP peer). Это IP-адрес eBGP-маршрутизатора, через который идет путь к сети назначения.
BGP Next-hop Attribute - это IP адрес, который должен быть использован как Next-hop в пути до данного префикса.
Для того чтобы полученный маршрут был выбран как лучший в таблице BGP и был помещён в таблицу маршрутизации, необходимо чтобы указанный next-hop был доступен.
Для этого проверяется, что в таблице маршрутизации присутствует маршрут к этому next-hop.

Например, локальный маршрутизатор, получив новый маршрут по BGP (UPDATE message, для префикса 1.0.0.0/8), выполняет следующее:

  • Определяет Next-hop для данного префикса, просмотрев Next-hop Attribute в таблице BGP. Например, в нашем случае это будет 120.0.4.17
    CE1#show ip bgp 1.0.0.0/8 Network Next Hop Metric LocPrf Weight Path *> 1.0.0.0 120.0.4.17 0 100 i
  • Просматривает таблицу маршрутизации (route-lookup) для определения, что маршрут до 120.0.4.17 присутствует в таблице маршрутизации.
    CE1#show ip route 120.0.4.17 * directly connected, via GigabitEthernet2
  • Если маршрут до 120.0.4.17 присутствует в таблице маршрутизации, Полученный маршрут по BGP будет выбран как лучший в таблице BGP и будет помещён в таблицу маршрутизации.

Таким образом, получается, что проверка доступности next-hop фактически заставляет маршрутизатор дважды просматривать таблицу маршрутизации для того чтобы определить доступность пришедшего маршрута — это называется рекурсивной маршрутизацией.

Для чего были сделаны такие проверки Next-hop.
Дело в том, что поле Next-hop всегда меняется, если маршрут передаётся через линк eBGP.
Такие проверки бы не понадобились в простом случае, как этот:
bgp_ciscomaster.ru_11.jpg

Но, при передаче маршрута между пирами iBGP, по умолчанию, поле Next-hop не меняется.
В этом случае помочь может рекурсивная маршрутизация.
bgp_ciscomaster.ru_12.jpg

Что произойдёт, если в таблице маршрутизации маршрут к next-hop отсутствует?
Маршрут останется в таблице BGP, но как hidden route.
Такие маршруты можно посмотреть через команду (juniper):

show route hidden

Local Preference attribute

Local Preference attribute используется для направления всего исходящего трафика через указанный peer.
Local Preference имеет цифровое значение: более высокое значение "побеждает" более низкое. Значение по умолчанию - 100.
Local Preference можно задавать через настройку BGP, или через routing policy. При этом значение, полученное через routing policy побеждает настройку BGP.
Local Preference "живёт" только в пределах одной AS, и не передаётся через линки eBGP.

Рассмотрим пример.
bgp_ciscomaster.ru_13.jpg
Администраторы MyNET решили для исходящего трафика использовать ISP A, а ISP B использовать как secondary.
Для этого, для всех маршрутов, полученных от ISP A, атрибут Local Preference меняется на 300.
При этом, для всех маршрутов, полученных от ISP B, атрибут Local Preference не меняется, и остаётся по умолчанию 100.

Практический пример, в котором для isp2 Local Preference уменьшают до 70, делая isp1 более приоритетным.

set protocols bgp traceoptions file bgp.log set protocols bgp traceoptions file size 1m set protocols bgp traceoptions file files 50 set protocols bgp log-updown set protocols bgp local-as 50373 set protocols bgp group upstreams type external set protocols bgp group upstreams description "Upstreams peers" set protocols bgp group upstreams remove-private set protocols bgp group upstreams multipath multiple-as set protocols bgp group upstreams neighbor 81.22.150.177 description isp1 set protocols bgp group upstreams neighbor 81.22.150.177 local-address 81.22.150.178 set protocols bgp group upstreams neighbor 81.22.150.177 import import-from-up-isp1 set protocols bgp group upstreams neighbor 81.22.150.177 family inet unicast set protocols bgp group upstreams neighbor 81.22.150.177 export to-isp1 set protocols bgp group upstreams neighbor 81.22.150.177 peer-as 45863 set protocols bgp group upstreams neighbor 80.15.210.33 description isp2 set protocols bgp group upstreams neighbor 80.15.210.33 local-address 80.15.210.34 set protocols bgp group upstreams neighbor 80.15.210.33 import import-from-up-isp2 set protocols bgp group upstreams neighbor 80.15.210.33 family inet unicast set protocols bgp group upstreams neighbor 80.15.210.33 export to-isp2 set protocols bgp group upstreams neighbor 80.15.210.33 peer-as 12483   set policy-options policy-statement import-from-up-isp1 term RFC-1918 from route-filter 127.0.0.0/8 orlonger set policy-options policy-statement import-from-up-isp1 term RFC-1918 from route-filter 10.0.0.0/8 orlonger set policy-options policy-statement import-from-up-isp1 term RFC-1918 from route-filter 172.16.0.0/12 orlonger set policy-options policy-statement import-from-up-isp1 term RFC-1918 from route-filter 192.168.0.0/16 orlonger set policy-options policy-statement import-from-up-isp1 term RFC-1918 from route-filter 169.254.0.0/16 orlonger set policy-options policy-statement import-from-up-isp1 term RFC-1918 from route-filter 224.0.0.0/3 orlonger set policy-options policy-statement import-from-up-isp1 term RFC-1918 then reject set policy-options policy-statement import-from-up-isp1 term ACCEPT-ROUTES from route-filter 0.0.0.0/0 exact set policy-options policy-statement import-from-up-isp1 term ACCEPT-ROUTES then accept set policy-options policy-statement import-from-up-isp1 term REJECT-ROUTES-ALL then reject   set policy-options policy-statement import-from-up-isp2 term RFC-1918 from route-filter 127.0.0.0/8 orlonger set policy-options policy-statement import-from-up-isp2 term RFC-1918 from route-filter 10.0.0.0/8 orlonger set policy-options policy-statement import-from-up-isp2 term RFC-1918 from route-filter 172.16.0.0/12 orlonger set policy-options policy-statement import-from-up-isp2 term RFC-1918 from route-filter 192.168.0.0/16 orlonger set policy-options policy-statement import-from-up-isp2 term RFC-1918 from route-filter 169.254.0.0/16 orlonger set policy-options policy-statement import-from-up-isp2 term RFC-1918 from route-filter 224.0.0.0/3 orlonger set policy-options policy-statement import-from-up-isp2 term RFC-1918 then reject set policy-options policy-statement import-from-up-isp2 term ACCEPT-ROUTES from route-filter 0.0.0.0/0 exact set policy-options policy-statement import-from-up-isp2 term ACCEPT-ROUTES then local-preference 70 set policy-options policy-statement import-from-up-isp2 term ACCEPT-ROUTES then accept set policy-options policy-statement import-from-up-isp2 term REJECT-ROUTES-ALL then reject

AS Path attribute

AS Path - описывает путь по номерам AS, который сделал маршрут: от момента когда это маршрут был помещён в BGP, до AS, где собственно этот атрибут и считывается с маршрута.
AS Path - обязательный атирбут, и должен быть в наличии во всех маршрутах BGP.
Каждый раз, когда маршрут покидает AS, перед отправкой message соседу, маршрутизатор этой AS добавляет номер этой AS к AS Path
Если роутер получает маршрут, и его AS number содержится в AS Path этого маршрута, - полученный маршрут считается залупленным, дропается и никому не передаётся.
ciscomaster_bgp_08.jpg
AS Path влиет на routing decision: более короткий AS Path предпочтителен.
С помощью политик мы можем влиять на AS Path: ASN Prepend означает, что мы добавляем к AS Path не один номер нашей AS, а несколько - тем самым влияя на решения routing decision других маршрутизаторов.

Практический пример использования AS Path. Area1 подключена к Центру двумя каналами, один из которых основной, а другой резервный.

protocols bgp group internal-peers type external protocols bgp group internal-peers description Internal-peers protocols bgp group internal-peers local-address 15.40.2.252 protocols bgp group internal-peers export area1-to-ALL protocols bgp group internal-peers local-as 65501 protocols bgp group internal-peers neighbor 15.40.2.3 description CENTER_PRI-PRI protocols bgp group internal-peers neighbor 15.40.2.3 local-address 15.40.2.252 protocols bgp group internal-peers neighbor 15.40.2.3 family inet unicast protocols bgp group internal-peers neighbor 15.40.2.3 peer-as 65300 protocols bgp group internal-peers neighbor 15.40.4.3 description CENTER_PRI-SEC protocols bgp group internal-peers neighbor 15.40.4.3 local-address 15.40.4.252 protocols bgp group internal-peers neighbor 15.40.4.3 family inet unicast protocols bgp group internal-peers neighbor 15.40.4.3 export area1-to-ALL_PRI-SEC protocols bgp group internal-peers neighbor 15.40.4.3 peer-as 65300 policy-options policy-statement area1-to-ALL_PRI-SEC term net-area1-routes from protocol aggregate policy-options policy-statement area1-to-ALL_PRI-SEC term net-area1-routes from prefix-list-filter net-area1-prfx orlonger policy-options policy-statement area1-to-ALL_PRI-SEC term net-area1-routes then as-path-prepend 65531 policy-options policy-statement area1-to-ALL_PRI-SEC term net-area1-routes then accept policy-options policy-statement area1-to-ALL_PRI-SEC term else then reject policy-options policy-statement area1-to-ALL term net-area1-routes from protocol aggregate policy-options policy-statement area1-to-ALL term net-area1-routes from prefix-list-filter net-area1-prfx orlonger policy-options policy-statement area1-to-ALL term net-area1-routes then accept policy-options policy-statement area1-to-ALL term else then reject policy-options prefix-list net-area1-prfx 10.250.10.0/24 policy-options prefix-list net-area1-prfx 10.250.20.0/24 policy-options prefix-list net-area1-prfx 10.250.30.0/24 routing-options aggregate route 10.250.0.0/16

Добавить комментарий

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Допустимые HTML-теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и абзацы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и абзацы переносятся автоматически.
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
Target Image