BGP - это сложный протокол маршрутизации, и бывают ситуации, когда что-то идет не так как надо. Кроме того, что он сложный, он также совершенно отличается от наших IGP протоколов (OSPF и EIGRP). В этой статье мы начнем с рассмотрения неполадок, возникающих в установлении соседства BGP, и как только это разберем, перейдем к проблемам с объявлением маршрутов, которые должны или не должны появляться!
Видео: Основы BGP за 7 минут
Урок 1

Начнем с нескольких простых сценариев. Два маршрутизатора BGP, которые подключены и настроены для EBGP. К сожалению, мы видим это, когда проверяем соседство BGP:


Когда два маршрутизатора EBGP, которые напрямую подключены, не образуют рабочее соседство BGP, может произойти ряд ошибок:
- Layer 2 не позволяет нам добраться до другой стороны.
- Проблема уровня 3: неправильный IP-адрес на одном из маршрутизаторов.
- Список доступа, блокирующий TCP-порт 179 (BGP).
- Неправильный IP-адрес настроен для соседнего маршрутизатора BGP
Мы можем использовать команду show ip bgp summary
, чтобы проверить IP-адреса маршрутизаторов. Они, совпадают.

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


Проверяем интерфейсы и видим, что кто-то ввел команду отключения интерфейса.
R2(config)#interface fa0/0 R2(config-if)#no shutdown
"Поднимаем" интерфейс


Это прекрасно! Наше соседство BGP установлено. Это было легко!
Итог урока: убедитесь, что ваш интерфейс работает.
Урок 2

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


Вот конфигурация BGP. Как вы видите, мы используем loopback интерфейсы для установления соседства BGP-соседей.


Оба маршрутизатора показывают, что их сосед BGP бездействует. Есть ряд вещей, которые мы должны проверить здесь:
- Доступен ли IP-адрес соседа BGP? Мы не используем прямые линии связи, поэтому у нас могут возникнуть проблемы с маршрутизацией.
- TTL IP-пакетов, которые мы используем для внешнего BGP, равен 1. Это работает для сетей с прямым подключением, но, если они не подключены напрямую, нам нужно изменить эту настройку.
- По умолчанию BGP будет получать обновления с IP-адреса, ближайшего к соседу BGP. В нашем примере это интерфейс FastEthernet. Это то, что мы должны изменить.


Начнем с маршрутизации. Оба маршрутизатора знают только о своих напрямую подключенных сетях. Чтобы достичь loopback интерфейсов друг друга, мы будем использовать статическую маршрутизацию.
R1(config)#ip route 2.2.2.2 255.255.255.255 192.168.12.2 R2(config)#ip route 1.1.1.1 255.255.255.255 192.168.12.1
Два статических маршрута должны выполнить эту работу.

Отправка ping на IP-адрес 2.2.2.2 и получение его из нашего собственного loopback интерфейса доказывает, что оба маршрутизатора знают, как связаться с loopback интерфейсом друг друга.
R1(config-router)#neighbor 2.2.2.2 ebgp-multihop 2 R2(config-router)#neighbor 1.1.1.1 ebgp-multihop 2
Команда ebgp-multihop изменяет TTL на 2.


Мы можем включить отладку, чтобы увидеть прогресс. Ясно видно, что R2 использует IP-адрес 192.168.12.2, а R1 отказывается от соединения.
R1(config-router)#neighbor 2.2.2.2 update-source loopback 0 R2(config-router)#neighbor 1.1.1.1 update-source loopback 0
Используйте команду update-source, чтобы изменить IP-адрес источника для обновлений BGP.


Соседство BGP работает!
Итог урока: маршрутизаторам BGP не требуется устанавливать соседство с использованием напрямую подключенных интерфейсов. Убедитесь, что маршрутизаторы BGP могут связаться друг с другом, что пакеты BGP получены из правильного интерфейса, и в случае EBGP не забудьте использовать команду multihop.
Урок 3

Продолжим рассмотрение некоторых проблем IBGP. Два маршрутизатора в одной AS и вот конфигурация:


Легко и просто. Маршрутизаторы используют напрямую подключенные IP-адреса для соседства BGP.


Жаль ... мы не становимся соседями. Что может быть не так? Мы используем напрямую подключенные интерфейсы, поэтому не так много проблем, если не считать проблемы L2 / L2.

Отправка пинга с одного маршрутизатора на другой доказывает, что L2 и L3 работают нормально. Как насчет L3? У нас могут быть проблемы с транспортным уровнем.


Я не могу подключиться к TCP-порту 179 с обоих маршрутизаторов. Это звоночек в сторону того, что что-то блокирует BGP?


Вот оно! Это Служба безопасности.…

Кто-то решил, что было бы неплохо "обезопасить" BGP и заблокировать его списком доступа.
R2(config)#interface fastEthernet 0/0 R2(config-if)#no ip access-group 100 in
Удалим список доступа.


Итог урока: не блокируйте TCP-порт BGP 179.
Урок 4

Следующая проблема IBGP. Это похоже на ситуацию с EBGP ранее...мы будем использовать loopback-интерфейсы для установления соседства BGP, вот конфигурации:


Ничего особенного, IBGP и мы используем loopback интерфейсы.


Не повезло здесь ... нет соседей. Давайте сначала проверим, могут ли маршрутизаторы получить доступ к loopback интерфейсам друг друга:


Быстрый взгляд на таблицу маршрутизации показывает нам, что это не так. Мы могли бы исправить это с помощью статического маршрута или IGP. Обычно мы используем IGP для IBGP для объявления loopback интерфейсов. Сейчас будем использовать OSPF:
R1(config)#router ospf 1 R1(config-router)#network 1.1.1.0 0.0.0.255 area 0 R1(config-router)#network 192.168.12.0 0.0.0.255 area 0 R2(config)#router ospf 1 R2(config-router)#network 192.168.12.0 0.0.0.255 area 0 R2(config-router)#network 2.2.2.0 0.0.0.255 area 0
Набор правильных команд OSPF должно сделать свою работу!

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


Тем не менее, соседство BGP по-прежнему отсутствует


Отладка показывает, что в соединении отказано, а также показывает локальный IP-адрес, который используется для BGP. Кажется, кто-то забыл добавить команду update-source, так что давайте исправим это!
R1(config)#router bgp 1 R1(config-router)#neighbor 2.2.2.2 update-source loopback 0 R2(config)#router bgp 1 R2(config-router)#neighbor 1.1.1.1 update-source loopback 0
Точно так же, как EBGP, мы должны установить правильный источник для наших пакетов BGP.


Задача решена! Единственное отличие от EBGP в том, что нам не нужно менять TTL с помощью команды ebgp-multihop.
Итог урока: распространенная практика настройки IBGP между loopback интерфейсами. Убедитесь, что эти loopback доступны и обновления BGP получены из loopback интерфейса.
Теперь, рекомендуем почитать вторую часть статьи по траблшутингу протокола BGP.