Как и OSPF или EIGRP, протокол BGP устанавливает соседство с другими маршрутизаторами BGP, прежде чем они обменяются любой информацией о маршрутизации. Однако, в отличие от других протоколов маршрутизации, BGP не использует широковещательную (broadcast) или многоадресную (multicast) рассылку для «обнаружения» других соседей BGP.
Содержание:
Введение
Соседей необходимо указывать вручную командой neighbor {ip-address | peer-group-name} remote-as {as-number}
, указав IP-адрес напрямую подключённого соседа и номер AS, в которой находится маршрутизатор соседа. BGP использует порт TCP 179 для подключения.
Ниже представлены 6 состояний соседства (neighbor adjacency), в которых может оказаться маршрутизатор BGP при попытке установить смежность с другим маршрутизатором:
- Idle — это первое состояние, когда BGP ожидает «события запуска». Событие запуска происходит при настройке нового соседа BGP или при перезапуске уже установленного сеанса BGP. После события запуска, BGP инициализирует некоторые ресурсы, сбрасывает таймер ConnectRetry и инициирует TCP-соединение с соседом BGP. Он также начнет прослушивать соединение, если удаленный сосед BGP попытается установить соединение. Когда всё проходит успешно, BGP переходит в состояние Connect. Когда что-то идёт не так, он останется в состоянии Idle.
- Connect — BGP ожидает завершения трехстороннего подтверждения TCP. Когда он его получит, перейдёт в состояние OpenSent. В случае неудачи сеанс останется в состоянии Active. Таймер ConnectRetry будет сброшен, и BGP попытается выполнить трехстороннее рукопожатие TCP. Если произойдёт некая неполадка (например, сброс BGP), маршрутизатор возвращается в состояние Idle.
- Active — BGP попытается выполнить другое трехстороннее рукопожатие TCP, чтобы установить соединение с удаленным соседом BGP. Если оно будет успешным, он перейдёт в состояние OpenSent. Если таймер ConnectRetry истекает, то он возвращается в состояние Connect. BGP также будет продолжать прослушивать входящие соединения, на случай, если удаленный сосед BGP пытается установить соединение.
- OpenSent — в этом состоянии BGP будет ожидать сообщения Open от удаленного BGP-соседа. Сообщение Open будет проверяться на наличие ошибок. Если что-то не так (неправильные номера версий, неправильный номер AS и т. д.), то BGP ответит сообщением «Notification» и перейдет в состояние Idle. Это также тот момент, когда BGP решает, используется eBGP или iBGP. Если всё в порядке, то BGP начинает отправлять сообщения keepalive и сбрасывает свой таймер keepalive. В этот момент время удержания согласовывается (выбирается самое низкое значение) между двумя BGP-маршрутизаторами. В случае сбоя сеанса TCP, BGP вернется в состояние Active. Когда происходят какие-либо другие ошибки (истечение таймера удержания), BGP отправляет уведомление с кодом ошибки и переходит в состояние Idle.
- OpenConfirm — BGP ожидает сообщения keepalive от удаленного BGP-соседа. Когда он получит keepalive, то сможет перейти в состояние Established, и соседство будет установлено. Когда это произойдет, случится сброс таймера удержания. Если маршрутизатор получит сообщение «Notification» от удаленного соседа BGP, то вернется в состояние Idle. BGP будет продолжать отправлять сообщения keepalive.
- Established — соседство BGP установлено, и маршрутизаторы BGP отправят пакеты для обмена информацией о маршрутизации. Каждый раз, когда маршрутизатор получает сообщение keepalive или update, таймер удержания будет сброшен. При получении сообщения Notification — возвращается в состояние Idle.
Весь этот процесс установления соседства BGP можно визуализировать для лучшего восприятия информации. Официальное название «диаграммы», показывающей разные состояния, по которым мы можем перемещаться из одного в другое, называется конечным автоматом — FSM (Finite State Machine). Для BGP это выглядит так:
Топология
Исследуемая топология состоит из двух маршрутизаторов (Cisco 1941 с образом Cisco IOS Version 15.9(3)M6). Допускается использование других моделей маршрутизаторов и версий программного обеспечения Cisco IOS. В зависимости от модели маршрутизатора и версии программного обеспечения Cisco IOS, доступные команды и полученные результаты могут отличаться от показанных в этой статье.
Схема топологии следующая:
Настройки маршрутизатора R1
Настройки маршрутизатора R2
Отслеживание состояний соседства
Прежде чем настроить BGP, включим отладку на двух маршрутизаторах:
На R1 заходим в конфигурацию BGP и прописываем IP-адрес соседа и его AS:
Сразу после ввода вышеуказанной команды, маршрутизатор выдает следующие сообщения:
R1 пытается подключиться к R2. Первая строка вывода debug указывает, что состояние меняется с Idle на Active (оно не показывает состояние Connect в отладке). Когда что-то идёт не так, он возвращается в состояние Idle.
Теперь давайте настроим BGP на R2, чтобы увидеть успешный прогресс изменения состояния:
После этого посмотрим на отладку на R2:
В выводе выше можно видеть, что состояние BGP меняется с Idle на Active, а затем на OpenSent. Некоторые сообщения Open отправляются и принимаются, маршрутизаторы BGP обмениваются своей информацией. Далее смежность переходит в состояние OpenConfirm и Established. Наконец, соседство BGP успешно установлено (последняя строка).
На R1 происходит нечто подобное.
Если по какой-то причине соседство не появляется, эти команды отладки могут быть полезны для решения данной проблемы.
Выводы
Спасибо за уделенное время на прочтение статьи. Теперь Вы знаете больше о состояниях соседства BGP.
Если возникли вопросы, задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet (программируемые сети) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.