BGP - это протокол динамической маршрутизации, используемый между автономными системами. Он в основном используется для обмена доступной информацией о маршрутизации между ASs, построения пути распространения между доменами AS, предотвращения петель маршрутизации и применения некоторых стратегий маршрутизации на уровне AS.
Обзор BGP
BGP - это протокол внешнего шлюза. В отличие от протоколов внутреннего шлюза, таких как OSPF и RIP, его внимание сосредоточено не на автоматическом обнаружении топологии сети, а на выборе наилучшего маршрута и управлении распространением маршрутов между ASs.
BGP использует TCP в качестве протокола транспортного уровня (номер порта прослушивания - 179), что повышает надежность протокола и не требует специального механизма для обеспечения управляемости соединения; из-за использования TCP он может отправлять только одноадресную рассылку, но не многоадресную рассылку, поэтому BGP не может автоматически определять топологию сети.
BGP выполняет междоменную маршрутизацию, которая предъявляет очень высокие требования к стабильности протокола. Следовательно, высокая надежность протокола TCP используется для обеспечения стабильности протокола BGP.
Одноранговые узлы BGP должны быть логически подключены и иметь TCP-соединения. Номер порта назначения - 179, номер локального порта - произвольный.
Периодического обновления нет, BGP отправляет только обновленные маршруты, что значительно снижает полосу пропускания, занимаемую распространением BGP, поэтому он подходит для распространения большого количества маршрутной информации в Интернете.
BGP намеренно избегает петель:
Между ASs : BGP отмечает проходящую AS, передавая информацию о пути AS. Маршруты с локальными номерами AS будут отброшены, что позволит избежать петель между доменами. В некоторых случаях маршрутизатор может принимать тот же маршрут AS с помощью команд.
Внутри AS: маршруты, полученные BGP в AS, больше не объявляются соседям BGP в AS, избегая петель в AS.
BGP предоставляет множество стратегий маршрутизации, которые могут реализовать гибкую фильтрацию и выбор маршрутов. BGP предоставляет механизм предотвращения смены маршрутов, который эффективно повышает стабильность сети Интернет. BGP легко расширяется и может адаптироваться к новым разработкам в сети. В основном он расширяется за счет TLV.
Принцип работы BGP - тип пакета
Open message: согласовать параметры BGP
Update message: информация о маршрутизации обмена
Keeplive messages: поддерживайте отношения с соседями
Notification message: уведомление об ошибке
Route-Refresh message: используется для запроса однорангового узла на повторную отправку информации о маршрутизации после изменения политики маршрутизации.
Работа BGP управляется сообщениями. Есть пять типов сообщений: Open, Update, Keeplive, Notification и Route-Refresh:
Open message: первое сообщение, отправленное после установления TCP-соединения, используемое для установления связи между узлами BGP. После того, как одноранговый узел получит сообщение Open и успешно проведет переговоры, он отправит сообщение Keeplive для подтверждения и поддержания действительности соединения. После подтверждения одноранговые узлы могут обмениваться сообщениями Update, Notification, Keeplive и Route-Refresh.
Update message: используется для обмена информацией о маршрутизации между одноранговыми узлами. Сообщение обновления может публиковать несколько частей доступной маршрутной информации с одинаковыми атрибутами, а также может отменять несколько частей недоступной маршрутной информации.
Keeplive messages: BGP периодически отправляет одноранговым узлам сообщения Keeplive для поддержания действительности соединения.
Notification message: когда BGP обнаруживает статус ошибки, он отправляет уведомление партнеру, после чего соединение BGP немедленно прерывается.
Route-Refresh message: проинформируйте BGP-узел о поддержке возможности обновления маршрута локально через сообщение Open. Когда Route-Refresh включен на всех BGP-маршрутизаторах, при изменении политики входящей маршрутизации BGP локальный BGP-маршрутизатор отправит одноранговому узлу сообщение Route-Refresh. Повторно отправьте на локальный маршрутизатор BGP. Таким образом, таблица маршрутизации BGP может динамически обновляться, и новые стратегии маршрутизации могут применяться без прерывания соединения BGP.
Приложение сообщений BGP
BGP использует TCP для установления соединения, а локальный порт прослушивания равен 179. Подобно установлению соединения TCP, установление соединения BGP также проходит через серию разговоров и рукопожатий. TCP объявляет свой порт и другие параметры посредством согласования рукопожатия. Параметры согласования установления связи BGP включают в себя: версию BGP, время удержания соединения BGP, идентификатор локального маршрутизатора (идентификатор маршрутизатора), информацию об авторизации и т. Д. Эта информация передается в сообщении Open. В процессе согласования BGP будет совместим с более высокими версиями и более низкими версиями, поэтому различные версии BGP также могут нормально устанавливать соединения.
После того, как соединение BGP установлено, если есть маршрут для отправки, отправляется сообщение Update для уведомления однорангового узла. Когда сообщение Update объявляет маршрут, оно также содержит атрибут маршрута этого маршрута, который используется, чтобы помочь одноранговому протоколу BGP выбрать оптимальный маршрут. Когда локальный маршрут BGP изменяется, одноранговые узлы BGP должны быть уведомлены с помощью сообщения Update.
После периода обмена маршрутной информацией ни локальный BGP, ни одноранговый BGP не имеют объявлений о новых маршрутах и стремятся к стабильному состоянию. В настоящее время сообщения Keeplive следует отправлять регулярно, чтобы поддерживать соединение BGP. Для локального BGP, если сообщение BGP не отправлено от однорангового узла в течение времени удержания, считается, что соединение BGP было прервано.
Когда локальный BGP обнаруживает ошибку во время работы (например, версия BGP однорангового узла не поддерживается локально, локальный BGP получил сообщение об обновлении с недопустимой структурой и т. д.), Должно быть отправлено сообщение уведомления для уведомления однорангового узла BGP. Когда локальный BGP выходит из BGP-соединения, ему также необходимо отправить сообщение с уведомлением.
Принцип работы BGP - конечный автомат
В конечном автомате BGP имеется шесть состояний: Idle, Connect, Active, Open Sent, Open Confirm и Established.
Состояние Idle - это начальное состояние BGP. В состоянии ожидания BGP отклоняет запрос на соединение, отправленный соседом. Только после получения события Start этого устройства BGP начинает попытки установить TCP-соединение с другими одноранговыми узлами BGP и переходит в состояние Connect.
Start событие вызывается оператором настройки процесса BGP или сброса существующего процесса или программного обеспечения маршрутизатора сброса процесса BGP.
После получения сообщений Error, таких как уведомление или уведомление о разрыве TCP, в любом состоянии BGP переходит в состояние ожидания.
В состоянии Connect BGP запускает таймер повторной передачи соединения, ожидая, пока TCP завершит соединение. На этом этапе, запрос на подключение TCP предварительно выдается, если соединение TCP успешно, BGP отправляет Открытое сообщение одноранговому узлу и переходит в состояние OpenSent, если соединение TCP не удается, BGP переходит в активное состояние, если таймер повторной передачи соединения истекает, и BGP все еще не получил ответа от однорангового узла BGP, BGP продолжает пытаться установить соединение TCP с другими одноранговыми узлами BGP и остается в состоянии подключения, если происходят другие события, вернитесь в состояние ожидания.
В Active состоянии BGP всегда пытается установить TCP-соединение на этом этапе, дождитесь, пока другая сторона инициирует TCP-соединение. Если TCP-соединение установлено успешно, BGP отправляет одноранговому узлу сообщение Open , закрывает таймер повторной передачи соединения, и переходит в состояние OpenSent . Если TCP-соединение не удается, BGP остается в активном состоянии. Если таймер повторной передачи соединения истекает, а BGP все еще не получает ответ от однорангового узла BGP, BGP переходит в состояние Connect. В состоянии OpenSent BGP ожидает сообщения Open от однорангового узла. и проверяет номер AS и код аутентификации версии в полученном сообщении Open. Если полученное сообщение Open верное, BGP отправляет Keepliveсообщение и переходит в состояние OpenConfirm. Если полученное сообщение Open оказывается неверным, BGP отправляет сообщение уведомления партнеру и переходит в состояние ожидания. В состоянии OpenConfirm BGP ожидает сообщений Keeplive или уведомлений. Если получено сообщение Keeplive , оно переходит в состояние Established, если оно получает сообщение с уведомлением, оно переходит в состояние Idle. В состоянии Established BGP может обмениваться сообщениями Update, Keeplive , Route-Refresh и Notification с одноранговым узлом. или Keeplive сообщение получено, BGP предполагает , что партнер находится в нормальном режиме и будет поддерживать соединение BGP , если некорректное обновление или Keeplive сообщение получено, BGP отправляет сообщение уведомления для уведомления однорангового узла и переходит в состояние ожидания.
Сообщения Route-Refresh не изменяют состояние BGP. Если получено сообщение с уведомлением, BGP переходит в состояние ожидания. Если получено сообщение об отключении TCP-соединения, BGP отключается и переходит в состояние ожидания. Принцип работы BGP - обработка информации маршрутизации BGP Таблица IP-маршрутизации (IP-RIB): библиотека информации глобальной маршрутизации, включая всю информацию IP-маршрутизации таблица маршрутизации BGP (Loc-RIB): база данных информации маршрутизации BGP, включая информацию о маршрутизации, выбранную локальными узлами BGP Таблица соседей: список одноранговых соседей Adj-RIB-In: Необработанная база маршрутной информации объявляется локальному динамику BGP Adj-RIB-Out: локальный динамик BGP сообщает базу маршрутной информации указанного однорангового узла.
Обработка маршрутной информации BGP :
Как работает BGP - принцип взаимодействия между пирами:
Маршруты, полученные от одноранговых узлов IBGP, объявляются только одноранговым узлам EBGP.
Маршруты, полученные от одноранговых узлов EBGP, объявляются всем одноранговым узлам EBGP и IBGP.
Объявлять партнеру только лучший маршрут BGP
Отправлять только обновленные маршруты BGP