Найти в Дзене
Николай Калюжный

Введение в BGP (I)

Всем привет, добро пожаловать на наш курс по BGP, также известный как протокол пограничного шлюза. Моя цель состоит в том, чтобы сделать BGP простым для понимания, используя простые примеры, понятные и понятные каждому. Я не буду вдаваться в запутанные термины, так что давайте сразу перейдем к делу. Я начну с предположения, что у вас есть базовое понимание сетей и протоколов внутренней маршрутизации, таких как OSPF. Хотя это не обязательно, эти знания пригодятся, когда мы рассмотрим конкретные примеры. Зачем еще один урок по BGP, когда их так много, некоторые из них написаны людьми намного умнее меня и исследуют BGP очень подробно? Вот моя причина - я хочу предложить простое, основанное на тексте учебное пособие, которое легко понять. Я из тех, кто предпочитает чтение, а не просмотр видео, и я думаю, что в письменном руководстве есть ценность. Это руководство может быть вам полезно, если: Если вы углубляетесь в свои исследования CCNA или CCNP, вы, вероятно, сталкивались со статическим
Оглавление

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

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

Но почему? Существует 100 уроков.

Зачем еще один урок по BGP, когда их так много, некоторые из них написаны людьми намного умнее меня и исследуют BGP очень подробно? Вот моя причина - я хочу предложить простое, основанное на тексте учебное пособие, которое легко понять. Я из тех, кто предпочитает чтение, а не просмотр видео, и я думаю, что в письменном руководстве есть ценность. Это руководство может быть вам полезно, если:

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

Зачем нужен BGP?

Если вы углубляетесь в свои исследования CCNA или CCNP, вы, вероятно, сталкивались со статическими маршрутами, а затем переходили к протоколам динамической маршрутизации, таким как EIGRP или OSPF. Вы видели, как эти динамические протоколы автоматически изучают маршруты, что делает их более практичным выбором по сравнению со статической маршрутизацией.

Итак, теперь, когда вы вступаете в мир BGP, вы, возможно, задаетесь вопросом: «Зачем нам нужен BGP? Разве мы не можем просто придерживаться OSPF?» Помню, у меня был такой же вопрос, когда я учился. Попробую прояснить это с помощью простой аналогии.

Сравнение OSPF/EIGRP с BGP немного похоже на сравнение маленького автомобиля с большим грузовиком. Конечно, маленькие автомобили — это здорово. Они предназначены для эффективной транспортировки людей или небольших грузов из точки А в точку Б. С другой стороны, грузовые автомобили предназначены для перевозки грузов на дальние расстояния.

Теперь подумайте об этом, стали бы вы использовать маленький автомобиль для перевозки тонны товаров? Технически вы могли бы это сделать, но для этого потребовались бы сотни поездок, а автомобили на самом деле не предназначены для такого рода задач. OSPF/EIGRP похож на автомобиль – быстрый, эффективный и динамичный для небольших перевозок. BGP, напротив, похож на грузовик, возможно, он не самый быстрый, но он создан для обработки огромного количества маршрутов, что делает его незаменимым для обширного сетевого ландшафта Интернета.

Как работает BGP?

BGP использует TCP в качестве транспортного протокола на порту 179. Два маршрутизатора, говорящих на языке BGP, образуют TCP-соединение друг с другом. Затем маршрутизаторы обмениваются сообщениями для открытия и подтверждения параметров подключения (подробнее об этом позже)

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

Любые два маршрутизатора, говорящих на языке BGP, которые образуют TCP-соединение для обмена информацией о маршрутизации BGP, являются «одноранговыми» или «соседями». Одноранговые узлы BGP изначально обмениваются полными таблицами маршрутизации BGP. После этого одноранговые узлы отправляют инкрементные обновления. Одноранговые узлы BGP также используют сообщения keepalive, которые гарантируют, что соединение между одноранговыми узлами BGP является активным. Пакеты уведомлений отправляются в ответ на ошибки или особые условия. (подробнее об этом мы расскажем в следующей части)

BGP в двух словах

  1. Протокол вектора пути
  2. Рекламирует и изучает маршруты, разбросанные по Интернету
  3. BGP имеет надежный алгоритм наилучшего пути и использует атрибуты пути для выбора маршрута
  4. Формируйте соседние соединения с другими маршрутизаторами BGP с помощью TCP-порта 179
  5. Использует номера автономных систем (AS) для принятия решений о маршрутизации
  6. Возможность масштабирования для обработки тысяч маршрутов
  7. Предлагает механизмы для предотвращения петель
  8. Поддерживает как IPv4, так и IPv6
  9. Может быть сконфигурирован для внутренних (iBGP) и внешних (eBGP) соседей
  10. Предоставляет возможности агрегирования и фильтрации маршрутов
  11. Объявленный префикс/маска BGP известен как NLRI (информация о доступности сетевого уровня)

💡

в BGP NLRI (Network Layer Reachability Information) — это обновление маршрутизации, состоящее из атрибутов префикса, длины префикса и пути BGP.

Некоторые различия между IGP и BGP

  1. IGP предназначен для маршрутизации в рамках одной автономной системы; BGP предназначен для маршрутизации между автономными системами.
  2. Решения о маршрутизации IGP основаны на метриках; Решения BGP основаны на нескольких атрибутах пути.
  3. IGP обычно имеет более быструю сходимость, чем BGP.
  4. IGP объявляет все маршруты по умолчанию, в то время как BGP объявляет только лучший путь.
  5. IGP оптимизирован для небольших сетей; BGP масштабируется по всему Интернету.
  6. IGP может обнаруживать соседей динамически, тогда как в BGP нам нужно статически определять каждого соседа
  7. Соседи BGP не нуждаются в прямом подключении
  8. IGP использует протоколы link-state или расширенные протоколы вектора расстояния; BGP — это протокол вектора пути.

Автономная система

Автономная система (AS) — это набор префиксов IP-маршрутизации, находящихся под контролем одного или нескольких сетевых провайдеров от имени одного административного объекта. Первоначально числа AS определялись как 16-битные целые числа, что позволяло использовать максимум 65 536 чисел. Тем не менее, IANA также начала присваивать 32-разрядные номера AS в диапазоне от 0 до 4 294 967 295.

ASN от 64 512 до 65 534 исходного 16-разрядного диапазона AS и от 4 200 000 000 до 4 294 967 294 от 32-разрядного диапазона зарезервированы для частного использования. Таким образом, если вы хотите запустить BGP внутри компании, вы можете выбрать один из номеров AS из этого частного диапазона.

💡

Обратите внимание, что номера Private AS не должны рекламироваться в Интернете. Они предназначены исключительно для внутреннего использования.

eBGP и iBGP

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

eBGP

  • Назначение - eBGP используется для маршрутизации между различными автономными системами (AS).
  • Пиринговые отношения: В eBGP маршрутизаторы формируют пиринговые сессии с маршрутизаторами в других AS, что позволяет им обмениваться информацией о маршрутизации через Интернет и крупные корпоративные сети.
  • Выбор пути - eBGP фокусируется на определении наилучшего пути для подключения к сетям в других AS, используя различные атрибуты пути, такие как AS Path, Next-Hop и другие.

iBGP

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

Конечная цель состоит в том, чтобы получать маршруты от ваших соседей по eBGP и объявлять их по всей вашей собственной AS через соседей iBGP. Если вы владеете публичными IP-адресами и у вас есть собственная AS, вы также должны объявлять о них своим одноранговым узлам eBGP. Сила BGP заключается в использовании атрибутов пути. Как мы уже упоминали ранее, BGP имеет надежный алгоритм выбора наилучшего пути. Вы полностью контролируете выбор оптимального пути для входящего и исходящего трафика. Когда маршрутизатор BGP объявляет маршруты своему одноранговому узлу, он включает в себя те атрибуты пути, которые можно настроить для влияния на выбор наилучшего пути. Мы углубимся в это более подробно в следующем разделе этого курса.

Очень простой пример

В этом простом примере у нас есть предприятие, подключенное к Интернету через двух разных интернет-провайдеров (ISP). Сеть компании представлена как Autonomous System 100 (AS 100), и она является пиринговой с AS 200 и AS 300, которые являются интернет-провайдерами.

Вот как работает настройка.

  • Два маршрутизатора в рамках стандарта AS 100 устанавливают сеанс eBGP с маршрутизатором каждого интернет-провайдера. Таким образом предприятие получает интернет-маршруты от интернет-провайдеров.
  • В стандарте AS 100 корпоративные маршрутизаторы также устанавливают сеанс iBGP (внутренний BGP) друг с другом. Этот внутренний сеанс имеет решающее значение, поскольку он позволяет предприятию обмениваться маршрутами, полученными от обоих интернет-провайдеров, по всей своей сети.
  • С помощью этой конфигурации предприятие теперь может сравнивать и выбирать лучшие пути. Например, он может использовать поставщика услуг Интернета 1 (AS 200) для определенного исходящего трафика и поставщика услуг Интернета 2 (AS 300) для входящего трафика, или наоборот.
  • Предприятие также рекламирует свои собственные маршруты обоим интернет-провайдерам. Это означает, что он информирует как AS 200, так и AS 300 о принадлежащих ему IP-адресах, что позволяет направлять как входящий, так и исходящий трафик в Интернет и из него.

eBGP AS_Path поведение и предотвращение циклов

Атрибут «AS_Path» — это, по сути, навигационная цепочка, которая отмечает маршрут через различные автономные системы (AS). Каждый раз, когда маршрут объявляется в новую AS, номер AS, через который он прошел, добавляется в этот список. Думайте о «AS_Path» как о списке номеров AS, по которым прошел маршрут.

-2

Давайте воспользуемся нашим примером диаграммы для объяснения. Маршрут для 8.8.0.0/16 начинается в AS 100. При переходе на AS 200 маршрутизатор в AS 100 устанавливает «AS_Path» на «100», потому что именно отсюда он и взялся.

Когда маршрутизатор в AS 200 отправляет этот маршрут своему соседу eBGP в AS 300, он добавляет свой собственный номер AS в список. Таким образом, к тому времени, когда маршрут достигает маршрутизатора в AS 300, «AS_Path» читается как «200 100». Здесь важно обратить внимание на порядок, последний номер AS добавляется слева, в результате чего самый старый номер AS находится справа.

В AS 300 первый маршрутизатор, получивший маршрут, делится им со своими одноранговыми узлами iBGP, не добавляя свой номер AS к 'AS_Path'. Однако, когда этот маршрут объявляется одноранговому узлу eBGP, маршрутизатор включает свой собственный номер AS. Таким образом, когда маршрут доходит до AS 400, «AS_Path» эволюционировал в «300 200 100».

Если по какой-либо причине маршрутизатор в AS 400 попытается отправить этот маршрут обратно в AS 200, маршрутизатор в AS 200 отбросит/отбросит маршрут, увидев свой собственный номер AS в 'AS_Path'. Именно так работает механизм предотвращения петель в eBGP, гарантируя, что маршруты не будут бесконечно циркулировать среди AS.

Предотвращение петель iBGP

Как мы видели в предыдущем разделе, маршрутизаторы BGP проверяют атрибут AS-path входящих маршрутов и отклоняют/отбрасывают маршруты, содержащие их собственный номер AS.

Но как насчет сессий iBGP? Ну, механизм предотвращения петель iBGP говорит, что «если маршрутизатор iBGP получает маршрут, ему не разрешается объявлять тот же маршрут другому одноранговому узлу iBGP"

Рассмотрим приведенный пример. Предположим, что R1 получает маршрут к 8.8.0.0/16 от соседа eBGP. Затем R1 объявит об этом маршруте своим одноранговым узлам iBGP, R2 и R3, в рамках AS 100. Как только R2 и R3 получают этот маршрут, они следуют правилу предотвращения циклов iBGP, которое гласит, что они не могут отправлять этот же маршрут другим узлам iBGP.

-3

Таким образом, в нашем сценарии R2, получив маршрут, не объявит его обратно R3, и точно так же R3 не отправит его R2. Это правило важно, поскольку оно гарантирует, что в пределах одной и той же AS маршрутизаторы не будут создавать петли маршрутизации, многократно объявляя один и тот же маршрут между собой.

Полносетчатый iBGP

В RFC 4271 указано, что все маршрутизаторы BGP в одной AS должны быть полностью объединены в сетку, чтобы обеспечить полную таблицу маршрутизации без петель и предотвратить «черную дыру» в трафике. Давайте рассмотрим другой пример, чтобы понять, что это за «блэкхолинг».

-4

В данном сценарии «черная дыра» трафика происходит из-за отсутствия информации о маршруте на маршрутизаторе B в пределах AS 100. Вот как это разворачивается.

  1. Маршрутизатор в стандарте AS 100 объявляет префикс 8.8.0.0/16 маршрутизатору A через eBGP.
  2. Маршрутизатор A знает об этом маршруте и делится им с маршрутизатором C через свою сессию iBGP.
  3. Маршрутизатор C, теперь знающий о маршруте к 8.8.0.0/16, объявляет этот префикс своему одноранговому узлу eBGP в AS 200.

Теперь, если AS 200 отправляет трафик, предназначенный для 8.8.0.0/16, на маршрутизатор C.

  1. Маршрутизатор C получает трафик и должен перенаправить его на маршрутизатор A, который объявляет маршрут. Он проверяет свою таблицу маршрутизации и видит, что следующий переход к маршрутизатору A проходит через маршрутизатор B.
  2. Маршрутизатор C перенаправляет трафик на маршрутизатор B, ожидая, что маршрутизатор B затем отправит его на маршрутизатор A. Но вот в чем проблема, маршрутизатор B не имеет никакой информации о префиксе 8.8.0.0/16, потому что у него нет сессии iBGP с маршрутизатором A или маршрутизатором C; следовательно, он так и не узнал маршрут.

В результате маршрутизатор B отбрасывает трафик, потому что ему некуда его отправлять. Это проблема «черных дыр» в трафике в iBGP, которая возникает, когда маршрутизатор должен перенаправлять трафик в пункт назначения, к которому у него нет маршрута. Чтобы предотвратить это, требуется полная сетка iBGP или в качестве альтернативы можно использовать отражатели маршрутов или конфедерации, чтобы гарантировать, что все маршрутизаторы в AS имеют всю необходимую информацию о маршрутизации.

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

Ссылки

https://www.cisco.com/c/en/us/support/docs/ip/border-gateway-protocol-bgp/26634-bgp-toc.html