BGP – Border Gateway Protocol, протокол граничного шлюза, который обеспечивает маршрутизацию между автономными системами по всему миру. Чаще всего используется Интернет провайдерами. Благодаря протоколу BGP провайдеры или иные организации имеют возможность обмениваться маршрутами между собой.
Регистрация автономной системы для организации может быть полезна в том случае, когда требуется избыточность и отказоустойчивость сети. Так, например, чтобы получить уникальный номер автономной системы и пул адресов, организации необходимо подать заявку в RIPE. После некоторого промежутка времени, RIPE выдаст номер автономной системы и пул внешних IP адресов, которые сможет использовать эта организация для любых целей.
Для того, чтобы проложить маршрут к автономной системе организации, необходимо заключить договор с одним или несколькими Интернет провайдерами. Затем сообщить провайдерам номер своей автономной системы и пул адресов, который был выдан RIPE, чтобы они произвели настройки со своей стороны.
Здесь же мы рассмотрим минимально необходимые настройки протокола BGP на внутреннем маршрутизаторе со стороны организации. И раз уж речь зашла об избыточности сети, то в нашей топологии будут фигурировать два Интернет провайдера и два внутренних маршрутизатора.
Представим следующую топологию:
С января 2010 года выдаются 32-битные номера автономных систем. Так, например, можно запросто получить номер 197061. Чтобы маршрутизатор его правильно понял, необходимо, во-первых, обновить IOS, чтобы он поддерживал 32-битные номера AS, во-вторых, представить номер 197061 в виде x.y. Число 1.0 = 65536. Следовательно, номер 197061 будет выглядеть 3.453, т.е. если 3 умножить на 65536 и прибавить 453, получим 197061.
Объявим нашу автономную систему командой router bgp 3.453 в режиме глобальной конфигурации маршрутизатора. Укажем IP подсеть, которую нам любезно предоставил RIPE, командой network 194.22.35.0.
Пример:
router bgp 3.453 network 194.22.35.0
Теперь нужно объявить наших соседей, кем у нас являются Интернет-провадйеры. Но прежде чем мы это сделаем, нам нужно составить префикс лист для фильтрации маршрутов, ведь мы не хотим, чтобы весь интернет знал о наших внутренних сетях, да и маршруты со всего интернета нам также ни к чему, тем более, что на маршрутизаторе может не хватить оперативной памяти для их хранения. Для этого потребуется всего две команды: одна из которых будет фильтровать входящие маршруты, а другая – исходящие.
В режиме глобальной конфигурации создадим фильтр на все входящие маршруты, кроме маршрута по умолчанию, командой ip prefix-list ISP-in seq 10 permit 0.0.0.0/0, затем создадим фильтр, в котором будем анонсировать только нашу внешнюю сеть командой ip prefix-list ISP-out seq 10 permit 194.22.35.0/24 le 32. Применим фильтры в режиме конфигурации протокола BGP.
Пример:
ip prefix-list ISP-in seq 10 permit 0.0.0.0/0 ip prefix-list ISP-out seq 10 permit 194.22.35.0/24 le 32 router bgp 3.453
neighbor 44.4.4.1 prefix-list ISP-in in neighbor 44.4.4.1 prefix-list ISP-out out neighbor 77.7.7.1 prefix-list ISP-in in neighbor 77.7.7.1 prefix-list ISP-out out
Теперь можно объявить наших соседей не опасаясь, что мы получим или отдадим, что-либо лишнее:
router bgp 3.453 neighbor 44.4.4.1 remote-as 1000
neighbor 77.7.7.1 remote-as 2000
Проверьте состояние BGP сессий, командами:
sh ip bgp summary sh ip bgp
Последим шагом остается подружить оба наших внутренних маршрутизатора. Фильтровать нам ничего не нужно, поэтому будет достаточно всего двух команд:
router bgp 3.453 neighbor 172.16.1.2 remote-as 3.453 neighbor 172.16.1.2 update-source Loopback1
Команда update-source используется для того, чтобы маршрутизатор четко знал с какого интерфейса ему устанавливать и поддерживать BGP сессию.
На втором маршрутизаторе, команды будут идентичными первому за исключением следующих команд:
router bgp 3.453 neighbor 172.16.1.1 remote-as 3.453 neighbor 172.16.1.1 update-source Loopback1
Финальная конфигруация на первом маршрутизаторе будет выглядеть так:
int Loopback1 ip address 172.16.1.1 255.255.255.255 ip prefix-list ISP-in seq 10 permit 0.0.0.0/0 ip prefix-list ISP-out seq 10 permit 194.22.35.0/24 le 32 router bgp 3.453 no synchronization bgp log-neighbor-changes network 194.22.35.0 neighbor 44.4.4.1 remote-as 1000 neighbor 44.4.4.1 prefix-list ISP-in in neighbor 44.4.4.1 prefix-list ISP-out out neighbor 77.7.7.1 remote-as 2000 neighbor 77.7.7.1 prefix-list ISP-in in neighbor 77.7.7.1 prefix-list ISP-out out neighbor 172.16.1.2 remote-as 3.453 neighbor 172.16.1.2 update-source Loopback1 no auto-summary ip route 194.22.35.0 255.255.255.0 null0
Если вдруг маршрутизатор провайдера находится в более чем одном хопе от внутреннего маршрутизатора (провайдер обычно об этом предупреждает) следовательно ко всей остальной конфигурации нам понадобится добавить команду типа neighbor 77.7.7.1 ebgp-multihop 255. Где 255 – количество хопов до маршрутизатора провайдера. Во избежание колец желательно не использовать максимальное количество хопов, а установить такое число, которое будет минимально необходимым.