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.