Border Gateway Protocol (BGP) — это протокол маршрутизации прикладного уровня. BGP выбирает наиболее эффективные маршруты для доставки интернет-трафика.
Оглавление:
Принцип работы BGP
BGP можно назвать службой доставки Интернета. Когда вы кому-то что-то отправляете, то для отправки вашей посылки выбирается самый быстрый и эффективный маршрут. BGP работает по очень похожей схеме, когда кто-то отправляет данные через Интернет, BGP проверяет все доступные пути, по которым могут перемещаться данные, и выбирает наилучший маршрут. Например, когда пользователь в Санкт-Петербурге загружает веб-сайт с исходными серверами в Бейруте, BGP обеспечивает самое быстрое и эффективное взаимодействие.
Соседи BGP
Соседи BGP — это одноранговые узлы, устанавливающиеся вручную между маршрутизаторами. Для поддержания соединения BGP динамик каждые 60 секунд посылает keepalive сообщения. Оcновным отличием BGP от других протоколов маршрутизации является то, что он использует TCP в качестве транспортного протокола.
BGP бывает двух типов: внутренний или iBGP и внешний eBGP. Внутренним он называется когда он работает в одной автономной системе (AS), а внешним когда в он работает в различных автономных системах.
iBGP и eBGP также различаются тем, как маршруты, полученные от одного соседа, распространяются на других соседей. К примеру, новые маршруты, полученные от eBGP, обычно перераспределяются между всеми iBGP узлами, а также всеми другими eBGP соседями. Но если новые маршруты объявляются на iBGP пиринге, то повторно они объявляются только всем одноранговым узлам eBGP. Это означает, что все iBGP соседи должны быть соединены в одну сеть.
Формат сообщений BGP
Сообщение BGP состоит из двух частей — заголовка и части данных. BGP запускается путем отправки четырех типов сообщений: open, update, notification и keepalive. Формат заголовка у всех типов один. Передаются сообщения на основе TCP (порт 179). Длина может быть от 19 до 4096 октетов. Заголовок каждого сообщения BGP состоит из трех полей и составляет 19 октетов.
Типы сообщений BGP
BGP использует при работе четырех типа сообщений:
- OPEN — Устанавливает и настраивает смежность BGP.
Сообщение OPEN используется для установки смежности BGP. Обе стороны согласовывают вероятности сеанса до установки пиринга. Сообщение OPEN содержит номер версии BGP, ASN исходного маршрутизатора, время удержания, идентификатор BGP и другие дополнительные параметры, которые определяют возможности сеанса. - UPDATE — Объявляет, обновляет или отменяет маршруты.
Сообщение Update объявляет любые возможные маршруты, отменяет ранее объявленные или может делать и то, и другое. Сообщение UPDATE включает информацию о доступности сетевого уровня (NLRI), которая включает префикс и связанные с ним PA BGP при объявлении префиксов. Изъятые NLRI включают только префикс. Сообщение UPDATE может действовать как Keepalive для уменьшения ненужного трафика. - NOTIFICATION — Указывает на состояние ошибки соседу BGP.
Сообщение NOTIFICATION отправляется, когда в сеансе BGP обнаруживается ошибка, такая как истечение таймера удержания, изменение возможностей соседей или запрос сброса сеанса BGP. Это сообщение приводит к закрытию BGP-соединения. - KEEPALIVE — Обеспечивает работоспособность соседей BGP.
BGP не полагается на состояние TCP-соединения, чтобы гарантировать, что соседи все еще работают. Сообщения Keepalive обмениваются каждые треть таймера удержания, согласованного между двумя маршрутизаторами BGP. Если время удержания установлено равным нулю, сообщения Keepalive между соседями BGP не отправляются.
Состояния соседства BGP
BGP формирует сеанс TCP с соседними маршрутизаторами, известными как одноранговые узлы. BGP использует конечный автомат (FSM) для ведения таблицы всех одноранговых узлов BGP и состояния их работоспособности. Сеанс BGP может сообщать о следующих состояниях:
- Idle:
Это первый этап BGP FSM. BGP обнаруживает стартовое событие, пытается инициировать TCP-соединение с одноранговым узлом, а также ожидает нового соединения от однорангового маршрутизатора. - Connect:
В этом состоянии BGP запускает TCP-соединение. Если трехстороннее подтверждение TCP завершается, установленный процесс BGP сеанса сбрасывает ConnectRetryTimer и отправляет сообщение Open соседу, а затем переключается в состояние OpenSent. - Active:
В этом состоянии BGP начинает новое трехстороннее квитирование TCP. Если соединение установлено, отправляется сообщение Open, таймер удержания устанавливается на 4 минуты, и состояние переключается в OpenSent. Если эта попытка TCP-подключения не удалась, состояние возвращается в состояние Connect и сбрасывает ConnectRetryTimer. - OpenSent:
В этом состоянии исходный маршрутизатор отправляет сообщение OPEN и находится в ожидании сообщения OPEN от другого маршрутизатора. После того, как исходный маршрутизатор получает сообщение OPEN от другого маршрутизатора. Оба сообщения проверяются на наличие ошибок. - OpenConfirm:
В этом состоянии BGP ожидает сообщения Keepalive или Notification. После получения сообщения Keepalive от соседа состояние меняется на Established. Если время таймера удержания истекает, происходит событие остановки или получено сообщение NOTIFICATION, и BGP переключается в состояние IDLE. - Established:
В этом состоянии сеанс BGP установлен. Соседи BGP обмениваются маршрутами через сообщения обновления. При получении сообщений Update и Keepalive таймер удержания сбрасывается. Если таймер удержания истекает, обнаруживается ошибка, и BGP переводит соседа обратно в состояние IDLE.