Итак, с сегодняшнего дня мы приступим к настройки BGP и изучению различных фич, которые предоставляет этот протокол.
Для того что бы активировать BGP протокол нужна одна команда: router bgp {AS-number}
где AS-Number это номер автономной системы, которая Вам была выделена. После этого процесс BGP запущен, но еще ничего не делает.
Теперь нам нужно установить соседские отношения между BGP пирами.
Итак, описываем соседские отношение или параметры TCP сессии.
neighbor {IP} remote-as {AS-number}
neighbor {IP} description BBR
Это тот минимум, который нам необходим для того что бы настроить соседские отношения.
Разумеется с другой стороны, с BBR, должно быть настроено зеркально.
Если используется аутентификация между пирами, прописываем это:
neighbor {IP} password {pass}
IBGP чаще всего строятся по лупбэкам, для стабильности (дабы не зависеть от физических интерфейсов), соответсвенно нам нужно прописать router-id, который будет совпадать с этим лупбэком.
Например лупбек у нас имеет адрес 1.1.1.1, прописываем router-id
bgp router-id 1.1.1.1
Все это делается в секции router bgp {AS}.
После прописывания router-id нам нужно настроить source интерфейс, с которого у нас будут рассылаться обновления (в нашем случае лупбек).
neighbor {ip} update-source lo0
Основные настройки TCP сессии между BGP пирами рассмотрели, теперь нам нужно анонсировать нашу сеть, делается это с помощью network :
network {ip-prefix} mask {mask}
Итого, если объеденить все настройки рассмотренные выше, мы имеем:
router bgp 10
bgp router-id 1.1.1.1
neighbor 2.2.2.2 remote-as 10
neighbor 2.2.2.2 description IBGP_Router
neighbor 2.2.2.2 password cisco
neighbor 2.2.2.2 update-source lo0
network 1.1.1.1 mask 255.255.255.255
Соответственно на другой стороне делаем зеркально:
router bgp 10
bgp router-id 2.2.2.2
neighbor 1.1.1.1 remote-as 10
neighbor 1.1.1.1 description IBGP_Router
neighbor 1.1.1.1 password cisco
neighbor 1.1.1.1 update-source lo0
network 2.2.2.2 mask 255.255.255.255
Теперь когда все прописано у нас должны подняться соседские отношения, и мы друг другу должны отправлять по одной сети.
Кстати, помним, что лупбеки должны будут достижимы для наших роутеров, так как они используются для router-id и update-source, чтоб это было возможным нам нужен IGP протокол, который будет разносить их по нашей IBGP сети.
Давайте теперь проверим наши соседские отношения show ip bgp sumR1#sh bgp sumR1(config-router)#do sh ip bgp sum
Что мы здесь видим.
Видим, что есть соседские отношение с роутером 2.2.2.2, видим автономную систему — 10, и видим что состояние Established (начался обмен маршрутами), на это показывает самая правая 1-ца (обменялись одним маршрутом) в поле State/PfcRcd.
Значит все ок.
Давайте посмотрим на BGP маршруты.R1#show ip bgp
Видим два маршрута, один наш, 1.1.1.1 а другой соседский, 2.2.2.2, но мы так же видим что возле 2.2.2.2 стоит r, что означается Rib-failure. Почему?
Ответ прост, дело в том, что этот маршрут не будет использоваться через BGP, так как у нас есть этот же маршрут но через OSPF, вот он и будет у нас использоваться, если мы посмотрим общую таблицу раутинга, то мы увидим, что мы получаем маршрут по OSPF, а по BGP его не будет.
Более детально можно посмотреть так:
Здесь мы видим описание маршрута.
На данном скриншоте видно, что у нас достижимость к 2.2.2.2 есть одним путем, через 2.2.2.2. Так же этот маршрут никому не рассылается, и указаны атрибуты, мы их не модифицировали, все по умолчанию.
Маршрут является IGP маршрутом.
Если у Вас будет достижение к префиксу несколькими путями, Paths будет несколько, и будет выбран лучше (этот маршрут будет отмечен как best).
При описании соседа, мы можем гибко управлять атрибутами, фильтрами и тому подобными вещами с помощью route-map, синтаксис такой:
neighbor 1.1.1.1 route-map Название_Роут_Мапы in/out
route-map вешается на входящий или исходящий потом (in/out соответственно).
Далее мы разберем, что можно прописывать в route-map и как этим пользоваться в bgp.