Border gateway protocol что это

Обновлено: 01.06.2024


Понятия BGP и AS (Autonomous System) очень тесно связаны. Всемогущая википедия говорит нам, что АС - это система IP-сетей и маршрутизаторов под управлением одного или нескольких операторов, имеющих единую политику маршрутизации с интернетом.
Давайте отбросим абстракции и представим живой пример. Пусть город у нас будет единой автономной системой и по аналогии как два города связаны магистралями, также и две АС связаны друг с другом посредством BGP. А внутри городов куча своих дорог, IGP-протоколов.
Картина примерно следующая:

В рамках протокола BGP автономная система это совсем не абстрактная вещь для удобства понимания. Это вещь вполне себе реальная, более того выдачей номеров AS занимаются специальные организации - RIR (Regional Internet Reistry) или LIR (Local Internet Registry). Глобально же всем этим рулит IANA, просто делегирует эту задачу RIR, региональным организациям, таким как RIPE NCC для Европы и стран Ближнего Востока:

А вот статус LIR может получить практически любая организация, и заниматься она будет выдачей номеров AS для относительно мелких контор, такой как в нашем примере. То есть для фирмочки ЛинкМиАп некий провайдер Балаган-Телеком мог бы стать тем самым LIR'ом. У него мы и возьмем AS Number, ASN 64500. У прова же будет номер 64501.
В качестве исторического экскурса укажу такой факт, что до 2007 года использовать можно было только 16-битные номер автономок, т.е. всего 65536 номеров, из которых 0 и 65535 зарезервированы.
Пул 64512-65534 являлся приватным и глобально не маршрутизировался, что-то вроде аналога приватных IP.
Пул 64496-64511 чисто для примеров и разного рода теоретических документаций. Из него мы номера и возьмем.
По состоянию на данный момент можно юзать уже 32-битные номера AS. Что характерно, данный переход куда как легче глобальной миграции с IPv4 на IPv6.
И да, автономки в неком смысле неразрывно связаны с блоками IP-адресов, т.е. в большинстве случаев за каждой AS закреплен какой-то блок IP.

Нет-нет, это отнюдь не неграмотность. PI означает Provider Independent, а не перепутанные буквы IP.
При подключении к прову вам выдается диапазон публичных адресов, которые зовутся PA или Provider Aggregatable. Получить подобный пул не составляет никакого труда, но не будучи LIR'ом, при смене провайдера эти самые PA-адреса нужно будет вернуть. Плюс ко всему допускается подключение только к одному провайдеру, если по факту. Короче говоря, меняете прова и теряете адреса, а новый пров выдаст вам новый диапазон. Но не всё так плохо!
У LIR можно купить блок адресов, который является "провайдеронезависимым" - PI, тот самый Provider Independent и вместе с ним в обязательном порядке ASN. Если брать конкретный случай, то это будет блок 100.0.0.0/23, который мы будем анонсировать посредством BGP своим соседям. Это именно наши IP-адреса, смена провайдера не будет означать их потерю.
И да, получить вожделенный блок PI задача непростая - нужно и документы собрать и подготовить обоснование вашего желание. Подробнее тут.
В мире где мы с вами живем отхватить более-менее крупный блок адресов уже невозможно. RIR уже не выдает новых блоков, разве что LIR еще делает это.
В общем номер AS и в довесок PI-адреса вы получаете в одной и той же организации.
Получив указанное выше богатство нужно отредактировать базу данных RIPE, о чем развернуто можно почитать здесь.
Наш пример подразумевает получение блока 100.0.0.0/23 и AS 64500. Если продолжить сравнение с городом, то мы его наконец-то назвали и получили охапку почтовых индексов.
Полезные статьи:
Инфраструктура сети: AS, PI, LIR etc.
Краткий FAQ на тему.
Установление BGP-сессии и процедура обмена маршрутами Если с завидной периодичностью BGP-сессия поднимается, а потом также отваливается, то в большинстве случаев это верный признак того, что не проходят keepalive. Порочный цикл обычно имеет величину 60x3=180 секунд или 3 минут (так настроен HOLD-таймер по-умолчанию. Если такое происходит, то искать источник проблемы следует на L2-уровне. Это может быть, например, плохое качество связи, забитый канал, перегрузка на интерфейсе или банальные CRC Errors на нем же.

Ну-с, приступим? Для начала простое - настройка интерфейсов.



Назначим и Loopback-интерфейсу какой-нибудь адрес, чтобы далее проверить связность:

А теперь самое вкусное - настройка BGP. Будем разбирать каждую строчку.

Сначала поднимаем процесс BGP и назначаем AS Number, именно тот, что выдал нам LIR!
Далее настраиваем пиринг, задаем информацию о соседе:

Маршрут говорит нам, что пакеты идущие в эту сеть будут дропнуты. Но это по плану, так надо. Просто напросто при наличии более конкретных маршрутов (маска больше /23, т.е. /24. /30. /32), то следуя правилу Longest Prefix Match будут выбираться именно они.
Радуемся. В BGP-таблице отобразился локальный маршрут:

Теперь если мы настроим процесс BGP и нужные маршруты на всех устройствах нашей схемы, то таблички BGP и маршрутизации на бордере (border - пограничный маршрутизатор сети) станет такой:



В BGP-таблице, как можно заметить, по два маршрута к некоторым сетям, а вот в таблице маршрутизации он только в одном экземпляре. Просто маршрутизатор выбираем лучший из двух, и именно его закидывает в таблицу маршрутизации.
Ну, вот. Мы настроили BGP в самом первом приближении.

Схема будет следующая:

Условие: Настройки маршрутизаторов несущественны. Никаких фильтров маршрутов не настроено. Почему на одном из соседей отсутствует альтернативный маршрут в сеть 195.12.0.0/16 через AS400?


R3 получает два маршрута в сеть 195.12.0.0/16: один через R1, другой через R2.
Они равнозначны, но R3 должен выбрать только один из них. Делается это на основе IP-адреса, который меньше у R2.
Соответственно R3 анонсирует своим соседям только один маршрут через R2 до данной сети. R2 его не получает, разумеется, а вот R1 он этот маршрут изучит.
В итоге R1 получит два анонса об этой сети, а R2 только один.
Это очень простая в постановке задача с нетривиальным ответом.

Мимо данной темы в контексте BGP и подключения к прову попросту невозможно пройти. Вот наша уютная компания уже имеет AS Number и вооружилась ворохом PI-адресов. При организации стыка с провайдером Балаган-Телеком нас строго спросят - "будем фулл вью или ограничимся дефолтом?"
Всё, что было у нас выше - это Full View. Маршрутизатор будет изучать все без исключения маршруты Интернета. Наш теоретический случай предусматривает штук пять-шесть маршрутов, но в действительности их более 400000. В итоге нам и один провайдер анонсирует 400 тысяч маршрутов и другой столько же. А вдруг будет еще резервный пров? Получите распишитесь, в итоге больше миллиона маршрутов.
Ну, и чего теперь, отваливать сотни нефти за мощную циску?

Вот так выглядит саммари маршрутной таблицы route-server.ip.att.net, одного публичного сервера. Можно стучаться телнетом.
По факту не всем автономкам нужно курить Full View, даже более-менее крупным компаниям достаточно Default Route и погнали. Идея простая. Вместо вороха точных маршрутов нам приходит по одному маршруту по-умолчанию от каждого из провайдеров. Впрочем, это может происходить не только вместо, но и вместе.
Разберемся в плюсах и минусах обоих случаев.
При работе с Full View вся структура интернета у вас перед глазами. Вы можете посмотреть трассу от себя до любого адреса глобальной сети:

И вы знаете, какие AS ведут к сети назначения, а RIPE позволяет узнать, какие провайдеры обеспечивают передачу. И мы можем без проблем следить за всеми изменениями сети. Даже если где-то далеко на крайних хопах у кого-то что-то отвалится (т.е. не обязательно у вас или одного из ваших провайдеров), BGP обнаружит это и перестроит таблицу маршрутизации в соответствии с изменением топологии, например, пустит трафик через второго провайдера.
И мы вольны гибко рулить маршрутами, тонко настраивая алгоритм выбора наилучшего пути. Допустим, трафик до яндекса мы будем пускать через "Балаган Телеком", а вот уже до гугла - через "Филькин Сертификат". Это будет load balancing - распределение нагрузки.
Сделать это можно, например, путем настройки приоритета маршрутов для определенных префиксов.
Ваш выбор без вариантов Full View, если ваша AS транзитная, т.е. к вам по BGP будут подключены еще клиенты.
Плюсов много, но расплатой здесь будет производительность. Готовьтесь к высокой утилизации оперативки и долгому изучению маршрутной информации после подъема BGP-сессии. Например, даже при кратковременном падении линка до вышестоящего провайдера на полное восстановление уйдет несколько минут.
А теперь Default Route. В первую очередь - это огромная экономия ресурсов нашего оборудования. Обслуживать тоже проще, больше нет задачи гонять тысячи и тысячи маршрутов внутри нашей AS. С другой стороны вы понятия не имеете о состоянии интернетов и доступности конечных узлов - вы тупо шлете трафик на дефолт, прилетевший от провайдера, апстрима (upstream). И если проблема где-то дальше, вы о ней не будете иметь понятия, а как следствие падение части предоставляемых сервисов. В этом месте мы отдаем всё на откуп вышестоящему провайдеру, надеясь, что там BGP быстренько перестроится и снова всё взлетит.
Балансировка и распределение входящего трафика не пострадает, мы этим сможем рулить, а вот управление исходящим накроется.

Давайте резюмировать. Если у вас нет цели гонять через себя транзитный трафик (подключать через себя другие AS) и не требуется гибкое распределение исходящего трафика, то вам дорога к Default Route.
Но вот точно не имеет смысла принимать от одного провайдера анонсы Full View, а от другого Default Route, т.к. один линк всегда будет простаивать и не станет гонять через себя исходящий трафик, ведь выбираться будет более специфический маршрут, который точно найдется среди анонсированного вам Full View.
Но ничего не мешает брать от всех провов Default Route и в нагрузку определенные префиксы (конкретно этого провайдера, например). Тогда до нужных ресурсов у вас будут специфические маршруты, но при этом без Full View.
Взглянем на пример настройки Default Route для линка в нижестоящему маршрутизатору:

Default Route - это совсем не противопоставление Full View. Не обязательно жестко выбирать между тем или другим.
Никто не мешает использовать Default Route как дополнение к Full View. Или, например, Default Route и набор специфических маршрутов.
Looking Glass - крайне мощный инструмент при работе с BGP. Это некоторое множество серверов в глобальной сети, который позволяют взглянуть на сеть извне. Можно объективно проверить доступность узлов, посмотреть через какие AS трафик идет к нашей автономке, запустить трассировку до нашего блока IP.


Несколько простых движений, и вот мы уже видим как наши анонсы выглядят извне. Например, вы сможете узнать трассу, по которой к вам возвращаются пакеты. Обратный маршрут может отличаться от первоначального.
Существуют организации, следящие за анонсами BGP в сетях, и в случае аномалий/коллизий уведомляют владельцев этих сетей - BGPMon, Renesys, RouteViews.
Эти организации предотвратили несколько аварий глобального характера.
А, к примеру, сервис BGPlay позволяет визуализировать информацию о распространении маршрутов.
На NAG.ru есть годная статья о глобальных BGP "катастрофах" вроде "AS 7007 Incident" или "Google's May 2005 Outage".
А вот здесь замечательная статья по различным инструментам для работы с BGP.
И еще вдогонку Список Looking Glass серверов.

И еще маленькое отступление перед погружением в пучины маршрутизации. Есть на эту тему годное мозговыносящее чтиво MPLS Enabled Application. Так что там с понятиями в заголовке? Это никакие не уровни сетевой модели, среды или некие моменты передачи данных, а лишь абстрактное деление.
Control Plane - уровень управления, где работают служебные протоколы, которые обеспечивают условия для передачи данных. Вот запускается BGP, следует по всем своим агрегатным состояниям и обменивается маршрутной информацией. Или же когда в MPLS-сетях LDP распределяет метки на префиксы. Таким же макаром обсуждавшийся уже STP обменивается BPDU и строит L2-топологию.
Все эти процессы живут в рамках Control Plane.
А вот Data Plane, передающий уровень - это уже передача полезных данных клиента.
Часто случается, что данные с этих двух уровней ходят в разных направлениях как бы "навстречу друг другу". Таким вот образом маршруты передаются из AS100 в AS200, чтобы в свою очередь AS200 могла передать данные в AS100.

И на разных уровнях могу быть совершенно отличные принципы работы. В том же MPLS на Data Plane создается само соединение, а непосредственно данные передаются посредством заранее определенного пути LSP. Сам же путь определяется по обычному TCP/IP стандарту, т.е. от одного хоста к другому.
Тут нужно понять назначение этих уровней и разницу в них.
Это крайне важный вопрос для BGP. Анонсируя свои маршруты вы одновременно создаете путь для входящего трафика - маршруты исходят от вас, а вот трафик течет к вам.


Что у нас там с маршрутами?
Вот имеется таблица BGP, которая включает в себя все полученные от соседей маршруты:

Короче говоря, даже если у нас несколько маршрутов до сети 100.0.0.0/23, то они все окажутся в этой таблице, и неважно какие из них лучше, а какие хуже.

Но также есть и таблица маршрутизации, о которой мы уже столько говорили. И вот уже в ней содержатся только лучшие маршруты. Таким же образом BGP анонсирует своим соседям не все подряд маршруты, а только лучшие. Вы никогда не получите от одного и того же соседа два маршрута в одну сеть.
Какие у нас будут критерии выбора лучших маршрутов? Давайте разбираться.
1. Значение Weight должно быть максимальным (локально для маршрутизатора, актуально для Cisco);
2. Максимальное значение Local Preference (для всей AS);
3. Предпочтения для локального маршрута роутера (т.е. next hop = 0.0.0.0);
4. Самый короткий путь через автономки (смотрим у кого AS_PATH короче);
5. Миниальный Origin Code (IGP < EGP < incomplete);
6. Минимальный MED (передается между автономками);
7. При этом путь eBGP лучше, чем iBGP;
8. Выбор пути через ближайшего IGP-соседа;
При выполнении данного условия, кстати, нагрузка между равнозначными линками будет балансироваться.
А вот эти условия могут у разных вендоров отличаться.
9. Выбор самого старого маршрута для eBGP-пути;
10. Выбор пути через нейбора с самым маленьким BGP router ID;
11. Аналогично, но сосед должен быть с наименьшим IP-адресом.
Сложно? Сложно. Критериев и различных атрибутов много, и опять таки они сложные - сходу тяжело понять. Остановимся чуть позже на принципах выбора маршрутов.
  • AS-Path ACL
  • Prefix-list
  • Weight
  • Local Preference
  • MED

Возможности BGP

Ниже приведены функции маршрутизатора BGP шлюза RAS.

Маршрутизация BGP в качестве службы роли удаленного доступа. Теперь можно установить службу роли маршрутизации роли сервера удаленного доступа, не устанавливая службу роли службы удаленного доступа (RAS) , если вы хотите использовать удаленный доступ в качестве маршрутизатора локальной сети BGP. Это сокращает объем памяти маршрутизатора BGP и устанавливает только компоненты, необходимые для динамической маршрутизации BGP. Служба роли маршрутизации полезна, если требуется только виртуальная машина маршрутизатора BGP и не требуется использование DirectAccess или VPN. Кроме того, использование удаленного доступа в качестве маршрутизатора локальной сети с BGP обеспечивает преимущества динамической маршрутизации BGP во внутренней сети.

Поддержка маршрутизации на основе множественных маршрутов равной стоимости (ECMP). Маршрутизатор BGP поддерживает ECMP, и в его таблице и стеке маршрутизации BGP может быть несколько маршрутов равной стоимости. Если маршрутизация ECMP включена, маршрутизатор BGP выбирает маршрут для передачи пакетов данных случайным образом.

Настройка значения HoldTime. Маршрутизатор BGP поддерживает настройку значения HoldTimer в соответствии с требованиями сети. Этот таймер можно динамически изменять для обеспечения взаимодействия с устройствами сторонних производителей или для задания определенного времени ожидания для сеанса пиринга BGP.

Поддержка iBGP и eBGP. Маршрутизатор BGP поддерживает пиринг iBGP и eBGP. Для его настройки необходимо назначить соответствующие номера ASN локальному и удаленному маршрутизаторам BGP. Во всех четырех топологиях развертывания BGP используется пиринг eBGP, а в четвертой топологии также применяется пиринг iBGP.

Взаимодействие с решениями сторонних производителей. Маршрутизатор BGP основан на последней спецификации BGP версии 4 и был проверен на возможность взаимодействия с большинством основных устройств маршрутизации BGP сторонних производителей. Подробнее см .в документе RFC 4271 Протокол BGP версии 4.

Поддержка пиринга транспорта IPv4 и IPv6. Маршрутизатор BGP поддерживает пиринг IPv4 и IPv6. Однако идентификатор BGP нужно настроить как IPv4-адрес маршрутизатора BGP. Для всех топологий развертывания маршрутизатора BGP можно использовать любой из двух типов пиринга (IPV4 или IPv6).

Возможность одноадресного получения и объявления маршрутов IPv4 и IPv6 (мультипротокольная информация сетевого уровня о доступности сети (NLRI)). Независимо от используемого транспорта маршрутизатор BGP может обмениваться сведениями о маршрутах IPv4 и IPv6, если соответствующая возможность была объявлена другими маршрутизаторами BGP при создании сеанса. Чтобы настроить маршрутизацию IPv6, нужно включить параметр IPv6Routing и настроить локальный глобальный IPv6-адрес на уровне маршрутизатора.

Пиринг в смешанном и пассивном режимах. Можно настроить сеансы пиринга BGP в смешанном режиме, где маршрутизатор BGP выступает в качестве инициатора, ответчика или пассивного режима, где маршрутизатор BGP не инициирует пиринг, но отвечает на входящие запросы. Смешанный режим используется по умолчанию и рекомендуется для пиринга BGP. Это верно во всех случаях, кроме тех, когда нужно использовать пассивный режим в целях отладки или диагностики. Во всех топологиях развертывания маршрутизатора BGP пиринг в смешанном режиме необходим для обеспечения автоматического перезапуска в случае сбоев.

Возможность перезаписи атрибутов маршрутизатора. С помощью политик маршрутизации BGP можно добавлять, изменять и удалять следующие атрибуты из входящих и исходящих объявлений маршрутов маршрутизатора BGP: Next-Hop, MED, Local-Pref и Community.

Фильтрация маршрутов. Маршрутизатор BGP поддерживает фильтрацию входящих и исходящих объявлений маршрутов на основе различных атрибутов маршрутов, таких как Prefix, ASN-Range, Community и Next-Hop.

Перенаправление (RR) и клиент RR. Маршрутизатор BGP может действовать как Route-Reflector и клиент RR. Это полезно в сложных топологиях, где RR может упростить сеть, формируя кластеры RR.

Поддержка настройки статических маршрутов. Статические маршруты и интерфейсы в маршрутизаторе BGP можно настроить с помощью команды Add-BgpCustomRoute среды Windows PowerShell. Настраиваемые статические маршруты могут быть префиксами или именами интерфейсов, из которых выбираются маршруты. Однако только маршруты с разрешаемыми следующими прыжками включаются в таблицы маршрутизации BGP и объявляются для одноранговых узлов.

Поддержка транзитной маршрутизации. Маршрутизатор BGP поддерживает транзитную маршрутизацию для подключений Ибгп к Ибгп, Ибгп для подключений eBGP, а также eBGP к eBGP подключениям.

Ослабление Колыханий маршрута. ослабление колыханий маршрута для маршрутизации BGP в Windows Server 2016 обеспечивает поддержку ослабления колыханий маршрута. Например, если маршрут постоянно объявляется и удаляется, что делает таблицу маршрутизации нестабильной, можно настроить маршрутизатор BGP, чтобы назначить для маршрута весовой коэффициент ослабления и отслеживать его для закрылок, и соответствующим образом подавить или отменить его отключение при необходимости. Это помогает поддерживать устойчивую таблицу маршрутизации и меньше обрабатывается маршрутизатором BGP.

Border gateway protocol что это

Если вы считаете, что её стоило бы доработать как можно быстрее, пожалуйста, скажите об этом.


BGP (Border Gateway Protocol) — это основной протокол динамической маршрутизации, который используется в Интернете.

Маршрутизаторы, использующие протокол BGP, обмениваются информацией о доступности сетей. Вместе с информацией о сетях передаются различные атрибуты этих сетей, с помощью которых BGP выбирает лучший маршрут и настраиваются политики маршрутизации.

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

Маршрутизация осуществляется пошагово от одной автономной системы к другой. Все политики BGP настраиваются, в основном, по отношению к внешним/соседним автономным системам. То есть, описываются правила взаимодействия с ними.

Так как BGP оперирует большими объемами данных (текущий размер таблицы для IPv4 более 450 тысяч маршрутов), то принципы его настройки и работы отличаются от внутренних протоколов динамической маршрутизации (IGP).

Содержание

При использовании RR для маршрутизаторов в AS определяются такие три роли:

  • RR сервер (RR Server, RR)
  • Клиент (Client)
  • Не клиент (Nonclient)

Только маршрутизатор работающий как RR использует логику отличную от обычного iBGP-маршрутизатора. Другие маршрутизаторы (клиент и не клиент) не изменяют правила работы и фактически даже не знают о существовании RR.

Правила, которыми руководствуется RR принимая решение отправлять маршруты соседу или нет:

Общая таблица сравнения различных режимов работы RR:

Источник от которого выучен префикс Анонсируется ли маршрут клиентам? Анонсируется ли маршрут не клиентам?
Клиент Да Да
Не клиент Да Нет
eBGP Да Да

Отличия в работе RR возникают при взаимодействии с маршрутизаторами, которые работают в роли клиентов. При взаимодействии с eBGP-соседями или с не клиентами, правила аналогичны обычному взаимодействию, с eBGP и iBGP маршрутизаторами, соответственно.

RR сервер (или несколько серверов) и его клиенты формируют один RR кластер (RR cluster). AS в которой используются RR может состоять из:

  • кластера с несколькими RR,
  • нескольких кластеров (использование нескольких кластеров имеет смысл, если существует физическая избыточность).

Когда используется несколько кластеров, то хотя бы один RR из кластера должен быть соседом с хотя бы одним RR в каждом из других кластеров. Как правило, все RR являются непосредственно присоединенными соседями и формируют между собой полносвязную топологию. Маршрутизаторы, которые не являются клиентами, также должны быть присоединены к полносвязной топологии из RR.

Для того чтобы предотвратить образование петель RR используют такие механизмы:

В тех случаях, когда маршрутизаторы могут получить один и тот же маршрут от RR и от обычного маршрутизатора, правила выбора лучшего маршрута BGP немного изменяются:

  1. Первые шаги, в которых учитываются атрибуты weight, local preference, origin и MED — остаются без изменений,
  2. Если все предыдущие параметры одинаковы, то маршруты полученные от EBGP-соседей предпочтительней, чем маршруты полученные от IBGP-соседей,
  3. Выбрать путь через ближайшего IGP-соседа
  4. Выбрать путь через соседа с наименьшим BGP router ID. Если у префикса есть атрибут Originator ID, то вместо router ID сравнивается Originator ID.
  5. Reflected-маршруты с более коротким cluster-list предпочтительнее (длина cluster-list равна нулю, если маршрут без атрибута cluster-list),
  6. Выбрать путь через соседа с наименьшим IP-адресом

BGP RR.jpg

На маршрутизаторах, которые выполняют роль клиентов никаких отличий в настройках BGP нет. Пример конфигурации BGP на dyn5:

Конфигурация BGP на dyn1:

Конфигурация BGP на dyn3:

Подробная информация о маршруте, в том числе атрибуты относящиеся к RR:

Подробная информация о маршруте на маршрутизаторе qua2, в том числе атрибуты относящиеся к RR (два кластера):

Подробная информация о маршруте, в том числе информация о том, что одним из источников маршрута был RR-клиент:

Содержание

  • Внутренний протокол маршрутизации (interior gateway protocol) – протокол, который используется для передачи информации о маршрутах внутри автономной системы.
  • Внешний протокол маршрутизации (exterior gateway protocol) – протокол, который используется для передачи информации о маршрутах между автономными системами.
  • Автономная система (autonomous system, AS) — набор маршрутизаторов, имеющих единые правила маршрутизации, управляемых одной технической администрацией и работающих на одном из протоколов IGP (для внутренней маршрутизации AS может использовать и несколько IGP).
  • Транзитная автономная система (transit AS) — автономная система, через которую передается трафик других автономных систем.
  • Путь (path) — последовательность состоящая из номеров автономных систем через которые нужно пройти для достижения сети назначения.
  • Атрибуты пути (path attributes, PA) — характеристики пути, которые позволяют выбрать лучший путь.
  • BGP speaker — маршрутизатор, на котором работает протокол BGP.
  • Соседи (neighbor, peer) — любые два маршрутизатора, между которыми открыто TCP-соединение для обмена информацией о маршрутизации.
  • Информация сетевого уровня о доступности сети (Network Layer Reachability Information, NLRI) — IP-префикс и длина префикса.

BGP выбирает лучшие маршруты не на основании технических характеристик пути (пропускной способности, задержки и т.п.), а на основании политик. В локальных сетях наибольшее значение имеет скорость сходимости сети, время реагирования на изменения. И маршрутизаторы, которые используют внутренние протоколы динамической маршрутизации, при выборе маршрута, как правило, сравнивают какие-то технические характеристики пути, например, пропускную способность линков.

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

Как и другие протоколы динамической маршрутизации, BGP может передавать трафик только на основании IP-адреса получателя. Это значит, что с помощью BGP нет возможности настроить правила маршрутизации, в которых будет учитываться, например, то, из какой сети был отправлен пакет или данные какого приложения передаются. Если принимать решение о том как должен маршрутизироваться пакет, необходимо по каким-то дополнительным критериям, кроме адреса получателя, необходимо использовать механизм policy-based routing (PBR).

BGP это path-vector протокол с такими общими характеристиками:

Автономная система (autonomous system, AS) — это система IP-сетей и маршрутизаторов, управляемых одним или несколькими операторами, имеющими единую, четко определенную политику маршрутизации с Интернетом (RFC 1930).

Диапазоны номеров автономных систем (autonomous system number, ASN):

  • 0-65535 (изначально определенный диапазон для ASN 16 бит)
  • 65536-4294967295 (новый диапазон для ASN 32 бита (RFC 4893))
  • 0 и 65535 (зарезервированы)
  • 1-64495 (публичные номера)
  • 65552-4294967295 (публичные номера)
  • 64512-65534 (приватные номера)
  • 23456 (представляет 32-битный диапазон на устройствах, которые работают с 16-битным диапазоном)
  • Таблица соседей (neighbor table) — список всех соседей BGP
  • Таблица BGP (BGP table, forwarding database, topology database):
    • Список сетей, полученных от каждого соседа
    • Может содержать несколько путей к destination сетям
    • Атрибуты BGP для каждого пути

    Inside BGP.jpg

    Если существует несколько путей к получателю, то маршрутизатор будет анонсировать соседям не все возможные варианты, а только лучший маршрут из таблицы BGP.

    • Внутренний BGP (Internal BGP, iBGP) — BGP работающий внутри автономной системы. iBGP-соседи не обязательно должны быть непосредственно соединены.
    • Внешний BGP (External BGP, eBGP) — BGP работающий между автономными системами. По умолчанию, eBGP-соседи должны быть непосредственно соединены.

    Если iBGP-маршрутизаторы работают в нетранзитной AS, то соединение между ними должно быть full mesh. Это следствие принципов работы протокола — если маршрутизатор, находящийся на границе AS, получил обновление, то он передает его всем соседям; соседи, которые находятся внутри автономной системы, больше это обновление не распространяют, так как считают, что все соседи внутри AS уже его получили.

    Open — используется для установки отношений соседства и обмена базовыми параметрами. Отправляется сразу после установки TCP-соединения.

    Update — используется для обмена информацией маршрутизации.

    • Error Code — тип оповещения:
      • 1 — Message Header Error
      • 2 — OPEN Message Error
      • 3 — UPDATE Message Error
      • 4 — Hold Timer Expired
      • 5 — Finite State Machine Error
      • 6 — Cease

      Keepalive — используется для поддерживания отношений соседства, для обнаружения неактивных соседей.

      Для того чтобы установить отношения соседства, в BGP надо настроить вручную каждого соседа.

      Когда указывается сосед локального маршрутизатора, обязательно указывается автономная система соседа. По этой информации BGP определяет тип соседа:

      • Внутренний BGP сосед (iBGP-сосед) — сосед, который находится в той же автономной системе, что и локальный маршрутизатор. iBGP-соседи не обязательно должны быть непосредственно соединены.
      • Внешний BGP сосед (eBGP-сосед) — сосед, который находится в автономной системе отличной от локального маршрутизатора. По умолчанию, eBGP-соседи должны быть непосредственно соединены.

      Тип соседа мало влияет на установку отношений соседства. Более существенные отличия между различными типами соседей проявляются в процессе отправки обновлений BGP и добавлении маршрутов в таблицу маршрутизации.

      BGP выполняет такие проверки, когда формирует отношения соседства:

      1. Маршрутизатор должен получить запрос на TCP-соединение с адресом отправителя, который маршрутизатор найдет указанным в списке соседей (команда neighbor).
      2. Номер автономной системы локального маршрутизатора должен совпадать с номером автономной системы, который указан на соседнем маршрутизаторе командой neighbor remote-as (это требование не соблюдается при настройках конфедераций).
      3. Идентификаторы маршрутизаторов (Router ID) не должны совпадать.
      4. Если настроена аутентификация, то соседи должны пройти её.

      У первого пункта проверки есть некоторая особенность: только у одного из двух маршрутизаторов IP-адрес, указанный как адрес отправки обновлений, должен быть указан в команде neighbor другого маршрутизатора.

      BGP выполняет проверку таймеров keepalive и hold, однако несовпадение этих параметров не влияет на установку отношений соседства. Если таймеры не совпадают, то каждый маршрутизатор будет использовать меньшее значение таймера hold.

      Если не совпали IP-адреса с соседом, то этот сосед будет в состоянии active.

      Атрибуты пути разделены на 4 категории:

      1. Well-known mandatory — все маршрутизаторы, работающие по протоколу BGP, должны распознавать эти атрибуты. Должны присутствовать во всех обновлениях (update).
      2. Well-known discretionary — все маршрутизаторы, работающие по протоколу BGP, должны распознавать эти атрибуты. Могут присутствовать в обновлениях (update), но их присутствие не обязательно.
      3. Optional transitive — могут не распознаваться всеми реализациями BGP. Если маршрутизатор не распознал атрибут, он помечает обновление как частичное (partial) и отправляет его дальше соседям, сохраняя не распознанный атрибут.
      4. Optional non-transitive — могут не распознаваться всеми реализациями BGP. Если маршрутизатор не распознал атрибут, то атрибут игнорируется и при передаче соседям отбрасывается.

      Примеры атрибутов BGP:

      • Well-known mandatory:
        • Autonomous system path
        • Next-hop
        • Origin
        • Local preference
        • Atomic aggregate
        • Aggregator
        • Communities
        • Multi-exit discriminator (MED)
        • Originator ID
        • Cluster list

        AS path.jpg

        Атрибут Autonomous system path (AS Path):

        • Описывает через какие автономные системы надо пройти, чтобы дойти до сети назначения.
        • Номер AS добавляется при передаче обновления из одной AS eBGP-соседу в другой AS.
        • обнаружения петель
        • применения политик

        Каждый сегмент атрибута AS path представлен в виде поля TLV (path segment type, path segment length, path segment value):

        Next-hop.jpg

        Атрибут Next-hop

        • IP-адрес следующей AS для достижения сети назначения.
        • Это IP-адрес eBGP-маршрутизатора, через который идет путь к сети назначения.
        • Атрибут меняется при передаче префикса в другую AS

        Next-hop3.jpg

        Third party next hop:

        Атрибут Origin — указывает на то, каким образом был получен маршрут в обновлении.

        Возможные значения атрибута:

        • 0 — IGP: NLRI получена внутри исходной автономной системы;
        • 1 — EGP: NLRI выучена по протоколу Exterior Gateway Protocol (EGP). Предшественник BGP, не используется
        • 2 — Incomplete: NLRI была выучена каким-то другим образом

        Атрибут Local preference:

        • Указывает маршрутизаторам внутри автономной системы как выйти за её пределы.
        • Этот атрибут передается только в пределах одной автономной системы.
        • На маршрутизаторах Cisco по умолчанию значение атрибута — 100.
        • Выбирается та точка выхода у которой значение атрибута больше.
        • Если eBGP-сосед получает обновление с выставленным значением local preference, он игнорирует этот атрибут.

        Метка, указывающая, что NLRI является summary.

        Список RID и ASN маршрутизаторов, создавших summary NLRI.

        • Тегирование маршрутов
        • Существуют предопределенные значения
        • По умолчанию не пересылаются соседям
        • Один из вариантов применения: передается соседней AS для управления входящим трафиком

        Значения от 0x00000000 до 0x0000FFFF и от 0xFFFF0000 до 0xFFFFFFFF зарезервированы.

        Как правило community отображаются в формате ASN:VALUE. В таком формате, доступны для использования community от 1:0 до 65534:65535. В первой части указывается номер автономной системы, а во второй значение community, которое определяет политику маршрутизации трафика.

        Некоторые значения communities предопределены. RFC1997 определяет три значения таких community. Эти значения должны одинаково распознаваться и обрабатываться всеми реализациями BGP, которые распознают атрибут community.

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

        Предопределенные значения communities (Well-known Communities):

        • no-export (0xFFFFFF01) — Все маршруты которые передаются с таким значением атрибута community не должны анонсироваться за пределы конфедерации (автономная система, которая не является частью конфедерации считается конфедерацией). То есть, маршруты не анонсируются EBGP-соседям, но анонсируются внешним соседям в конфедерации,
        • no-advertise (0xFFFFFF02) — Все маршруты которые передаются с таким значением атрибута community не должны анонсироваться другим BGP-соседям,
        • no-export-subconfed (0xFFFFFF03) — Все маршруты которые передаются с таким значением атрибута community не должны анонсироваться внешним BGP-соседям (ни внешним в конфедерации, ни настоящим внешним соседям). В Cisco это значение встречается и под названием local-as.

        Маршрутизаторы которые не поддерживают атрибут community, будут передавать его далее, так как это transitive атрибут.

        Атрибут MED:

        • Используется для информирования eBGP-соседей о том, какой путь в автономную систему более предпочтительный.
        • Атрибут передается между автономными системами.
        • Маршрутизаторы внутри соседней автономной системы используют этот атрибут, но, как только обновление выходит за пределы AS, атрибут MED отбрасывается.
        • Чем меньше значение атрибута, тем более предпочтительна точка входа в автономную систему.

        Атрибут Weight:

        • Позволяет назначить "вес" различным путям локально на маршрутизаторе.
        • Используется в тех случаях, когда у одного маршрутизатора есть несколько выходов из автономной системы (сам маршрутизатор является точкой выхода).
        • Имеет значение только локально, в пределах маршрутизатора.
        • Не передается в обновлениях.
        • Чем больше значение атрибута, тем более предпочтителен путь выхода.

        Характеристики процедуры выбора пути протоколом BGP:

        • В таблице BGP хранятся все известные пути, а в таблице маршрутизации — лучшие.
        • Пути выбираются на основании политик.
        • Пути не выбираются на основании пропускной способности.
        • Доступен ли next-hop (Route Resolvability Condition) Для того чтобы next-hop считался доступным (accessible), необходимо чтобы в таблице маршрутизации был IGP-маршрут, который ведет к нему.

        На маршрутизаторе Cisco, если не настроены никакие политики выбора пути, выбор пути происходит таким образом (на каждый следующий шаг маршрутизатор переходит только при совпадении значений на предыдущем):

        1. Максимальное значение weight (локально для маршрутизатора).
        2. Максимальное значение local preference (для всей AS).
        3. Предпочесть локальный маршрут маршрутизатора (next hop = 0.0.0.0).
        4. Кратчайший путь через автономные системы. (самый короткий AS_PATH)
        5. Минимальное значение origin code (IGP < EGP < incomplete).
        6. Минимальное значение MED (распространяется между автономными системами).
        7. Путь eBGP лучше чем путь iBGP.
        8. Выбрать путь через ближайшего IGP-соседа.
        9. Выбрать самый старый маршрут для eBGP-пути.
        10. Выбрать путь через соседа с наименьшим BGP router ID.
        11. Выбрать путь через соседа с наименьшим IP-адресом.

        Если существует несколько маршрутов до одной сети назначения, будет выбран только один из них. Каждый шаг в алгоритме выбора лучшего маршрута пытается устранить все, кроме одного маршруты к пункту назначения. Если на шаге алгоритма маршрутов все еще больше одного, будет выполнен переход на следующий шаг алгоритма. Таким образом, алгоритм работает до тех пор, пока это необходимо. В устройствах Juniper выбор наилучшего маршрута происходит по следующему алгоритму:

        1. проверка на доступность next-hop в локальной таблице маршрутизации. Если next-hop не доступен, маршрут отбрасывается.
        2. маршрутизатор выбирает маршрут с наибольшим Local Preference атрибутом.
        3. маршрутизатор выбирает маршрут с кратчайшим AS Path length.
        4. маршрутизатор выбирает маршрут с наименьшим значением атрибута Origin (то есть отдается предпочтение IGP).
        5. маршрутизатор выбирает маршрут с наименьшим значением MED. Этот шаг выполняется, по умолчанию, только для маршрутов из одной AS.
        6. маршрутизатор выбирает маршруты, полученные от соседей EBGP нежели полученные от IBGP соседей. Если остальные маршруты EBGP-маршруты, маршрутизатор переходит к шагу 9.
        7. маршрутизатор выбирает маршрут с наименьшей метрикой IGP к анонсируемому BGP Next Hop.
        8. если используется Route Reflection для IBGP пиринга, маршрутизатор выбирает путь с наименьшим Cluster-List length.
        9. маршрутизатор выбирает маршрут от партнера с наименьшим Router ID.
        10. маршрутизатор выбирает маршрут от партнера с наименьшим Peer Address.

        Только лучший путь помещается в таблицу маршрутизации и анонсируется BGP-соседям.

        BGP route reflector


        Route reflectors (RR) как и конфедерация позволяет:

        • избежать необходимости создания полносвязной топологии между всеми iBGP-соседями,
        • всем iBGP-соседям выучить все iBGP-маршруты в AS,
        • предотвратить образование петель.

        Протокол BGP

        В этом разделе вы можете получить представление о протоколе BGP, в том числе о поддерживаемых им топологиях развертывания, а также его компонентах и возможностях.

        Помимо этого раздела, доступна следующая документация по BGP.

        В этом разделе содержатся следующие подразделы.

        при настройке на Windows Server 2016 ( шлюза RAS службы удаленного доступа ) в многоклиентский режим протокол BGP (BGP) предоставляет возможность управлять маршрутизацией сетевого трафика между клиентами и их удаленными сайтами. Можно также использовать протокол BGP для развертываний шлюза RAS одного клиента и при развертывании удаленного доступа в качестве ( ) маршрутизатора локальной сети.

        Протокол BGP снижает потребность в ручной настройке маршрутов в маршрутизаторах, так как является протоколом динамической маршрутизации и автоматически определяет маршруты между сайтами, связанными с помощью межсайтовых подключений VPN.

        Чтобы использовать маршрутизацию BGP, необходимо установить службу удаленного доступа ( RAS ) и (или) роль маршрутизации роли сервера удаленного доступа на компьютере или на виртуальной машине виртуальной машины ( ) . тип используемой системы зависит от того, есть ли у вас развертывание с несколькими клиентами:

        Для развертывания на нескольких клиентах рекомендуется установить шлюз RAS на одной или нескольких виртуальных машинах. Использование нескольких виртуальных машин обеспечивает высокий уровень доступности. Шлюз RAS способен обрабатывать несколько подключений из нескольких клиентов и состоит из узла Hyper-V и виртуальной машины, которая фактически настроена в качестве шлюза. Для этого шлюза настроены VPN-подключения типа "сеть — сеть" в качестве маршрутизатора BGP с несколькими клиентами для клиентов Exchange и ( ) маршрутов подсети поставщика облачных служб CSP.

        Для развертывания одного шлюза пограничных клиентов или развертывания маршрутизатора локальной сети можно установить шлюз RAS на физическом компьютере или на виртуальной машине.

        при установке шлюза RAS необходимо указать, включен ли протокол BGP для каждого клиента с помощью команды Enable-ремотеакцессраутингдомаин Windows PowerShell со значением All параметра типа All. Чтобы установить удаленный доступ в качестве маршрутизатора локальной сети с поддержкой BGP без возможностей клиентов, можно использовать команду Install-RemoteAccess-VpnType раутингонли.

        В следующем примере кода показано, как установить RAS в режиме многоадресной рассылки со всеми компонентами удаленного доступа (VPN-подключение типа "точка — сеть", VPN-подключением типа "сеть — сеть" и маршрутизацией BGP) для двух клиентов, Contoso и Fabrikam.

        Топологии развертывания, поддерживаемые протоколом BGP

        Ниже перечислены поддерживаемые топологии развертывания, в которых сайты предприятия подключены к центру обработки данных поставщика облачных услуг (CSP).

        во всех сценариях шлюз CSP — это Windows Server 2016 шлюза RAS на границе. Шлюз RAS, который способен обрабатывать несколько подключений из нескольких клиентов, состоит из узла Hyper-V и виртуальной машины, которая фактически настроена в качестве шлюза. Этот пограничный шлюз настраивается для межсайтовых подключений VPN как мультитенантный маршрутизатор BGP, служащий для обмена маршрутами между предприятием и подсетью CSP.

        Клиенты подключаются к своим ресурсам в центре обработки данных CSP с помощью межсайтовых (S2S) подключений VPN. Кроме того, протокол маршрутизации BGP развертывается для динамического обмена информацией о маршрутизации между предприятием и шлюзами CSP.

        Поддерживаются указанные ниже топологии развертывания.

        В дальнейших подразделах приведены дополнительные сведения о каждой поддерживаемой топологии BGP.

        шлюз VPN типа "сеть — сеть" с BGP на сайте Enterprise сайта

        В этой топологии представлен сайт предприятия, подключенный к CSP. топология маршрутизации Enterprise включает внутренний маршрутизатор, Windows Server 2016 шлюз RAS, настроенный для подключений VPN типа "сеть — сеть" с CSP, и устройство с граничным брандмауэром. Шлюз RAS прерывает подключения S2S VPN и BGP.

        Шлюз VPN типа "сеть — сеть" для RAS

        Оба сайта подключаются по протоколу eBGP, который позволяет передавать данные между маршрутизаторами с поддержкой BGP в отдельных автономных системах. Для этого необходимо, чтобы у предприятия и CSP были отдельные номера автономных систем (ASN), что является неотъемлемым параметром протокола BGP.

        В этом сценарии протокол BGP работает описанным ниже образом.

        Пограничное устройство сайта предприятия определяет маршруты виртуализованной подсети (10.2.1.0/24), размещенной в облаке, с помощью BGP. Это устройство также объявляет Локальные маршруты подсети (10.1.1.0/24) в многоклиентский шлюз RAS поставщика службы удаленного доступа.

        Пограничный маршрутизатор клиента определяет внутренние локальные маршруты одним из указанных ниже способов.

        Пограничное устройство использует протокол BGP с внутренним маршрутизатором и определяет внутренние маршруты (в этом примере это 10.1.1.0/24). Тем временем внутренний маршрутизатор узнает внутренние маршруты (например, 10.2.1.0/24) от пограничного устройства и должен предоставить эти маршруты другим локальным маршрутизаторам с помощью протокола IGP, такого как OSPF или RIP.

        В пограничном устройстве можно настроить статические маршруты или интерфейсы для выбора маршрутов, которые должны объявляться посредством BGP. Пограничное устройство также сообщает внешние маршруты другим локальным маршрутизаторам с помощью IGP.

        Сторонний шлюз с BGP на границе сайта предприятия

        В этой топологии представлен сайт предприятия, который использует сторонний пограничный маршрутизатор для подключения к CSP. Пограничный маршрутизатор также служит шлюзом для межсайтовых подключений VPN.

        Сторонний шлюз с BGP на границе сайта предприятия

        Пограничный маршрутизатор предприятия определяет внутренние локальные маршруты одним из указанных ниже способов.

        Пограничное устройство использует протокол BGP с внутренним маршрутизатором и определяет внутренние маршруты (в этом случае это 10.1.1.0/24).

        Пограничное устройство реализует протокол IGP и непосредственно участвует во внутренней маршрутизации.

        несколько Enterprise сайтов, подключающихся к облачному центру обработки данных CSP

        В этой топологии представлено несколько сайтов предприятия, которые используют сторонние шлюзы для подключения к CSP. Сторонние пограничные устройства выступают в роли шлюзов для межсайтовых подключений VPN и в роли маршрутизаторов BGP.

        несколько Enterprise сайтов, подключающихся к облачному центру обработки данных CSP

        Пограничные маршрутизаторы клиента определяют внутренние локальные маршруты одним из указанных ниже способов.

        Пограничное устройство использует протокол BGP с внутренним маршрутизатором и определяет внутренние маршруты (в этом случае это 10.1.1.0/24).

        Пограничное устройство реализует протокол IGP и непосредственно участвует во внутренней маршрутизации.

        Каждый сайт предприятия узнает маршруты от другого сайта посредством прямого подключения eBGP.

        Каждый сайт предприятия получает сведения о маршрутах в размещенной сети напрямую и от другого сайта предприятия, а затем выбирает оптимальный маршрут на основе его стоимости.

        если маршрутизатор bgp на Enterprise сайте 1 не может подключиться к Enterprise маршрутизатора bgp сайта 2 из-за сбоя подключения, маршрутизатор bgp сайта 1 динамически начинает изучать маршруты к Enterprise сети сайта 2 от маршрутизатора bgp поставщика службы шифрования, а трафик легко перенаправляется с сайта 1 на сайт 2 через маршрутизатор bgp Windows Server на сервере CSP.

        Отдельные точки завершения для BGP и VPN

        В этой топологии представлено предприятие, в котором в качестве конечной точки BGP и конечной точки межсайтовых подключений VPN используются два разных маршрутизатора. VPN-подключение типа "сеть — сеть" прерывается в шлюзе Windows Server 2016 RAS, а BGP завершается на внутреннем маршрутизаторе. На стороне поставщика служб шифрования CSP прерывает подключения VPN и BGP к шлюзу RAS. В такой конфигурации оборудование внутреннего стороннего маршрутизатора должно поддерживать повторное распространение маршрутов IGP в BGP, а также повторное распространение маршрутов BGP в IGP.

        Отдельные точки завершения для BGP и VPN

        Внутренний маршрутизатор определяет маршруты предприятия одним из указанных ниже способов.

        Протокол IGP, например OSPF или RIP

        Настройка статических маршрутов

        При использовании любого протокола IGP на сайте предприятия внутренний маршрутизатор должен повторно распространять маршруты IGP в BGP, а также повторно распространять маршруты BGP в IGP для обеспечения связи между виртуальными сетями CSP и локальными подсетями предприятия.

        в этом развертывании шлюз ras Enterprise имеет VPN-подключение типа "сеть — сеть" с шлюзом ras поставщика службы удаленного доступа, который предоставляет Enterprise шлюзу ras с маршрутами к шлюзу csp. затем Enterprise внутренний маршрутизатор рассылает этот маршрут шлюзу CSP с помощью ибгп с шлюзом Enterprise RAS. в связи с этим внутренний маршрутизатор Enterprise может установить сеанс пиринга с маршрутизатором BGP шлюза удаленного доступа CSP.

        с этого момента Enterprise внутренний маршрутизатор и сведения о маршрутизации обмена данными для шлюза RAS CSP. и маршрутизатор Enterprise RAS BGP изучит маршруты CSP и Enterprise маршруты, чтобы физически маршрутизировать пакеты между сетями.

        Читайте также: