Поднятие BGP на Summit x480. Пошаговая инструкция с описанием возможных «граблей»
Процесс настройки
1) Сначала прошиваем железку до нужной версии, я настраивал на 12.6.2.10. Подробности опускаю, делается всё элементарно.
2) Инсталлируем лицензию «CORE»
Если вам нужно уместить более 260000 маршрутов, нужно перевести железку в режим l3-only
configure forwarding external-tables l3-only
и вдогонку configure iproute reserved-entries max slot all
После чего обязательно нужна полная перезагрузка
3) Настройка vlan-интерфейсов
create vlan «Internal_BGP»
configure vlan Internal_BGP tag 10
create vlan «My_peer1»
configure vlan My_peer1 tag 11
create vlan «Sample_IX»
configure vlan Sample_IX tag 12
create vlan «Upstream_Internet»
configure vlan Upstream_Internet tag 14
configure ports 1 display-string My_peer
configure ports 29 display-string Trunk_Upstreams
configure ports 30 display-string Trunk_Internal
configure vlan Default add ports 24 untagged
configure vlan My_peer1 add ports 1 tagged
configure vlan Upstream_Internet add ports 29 tagged
configure vlan Sample_IX add ports 29 tagged
configure vlan Internal_BGP add ports 30 tagged
# Управление железкой, форвардинг здесь не нужен
configure vlan Default ipaddress 192.168.1.2 255.255.255.0
# назначаем IP адреса на vlan-интерфейсы роутера и ОБЯЗАТЕЛЬНО включаем ipforwarding!!! Иначе сессия установится и даже маршруты получите,
# но все полученные через этот влан маршруты будут «недостижимы» и не попадут в таблицу маршрутизации.
# Я так накололся при смене подсети. Менял IP и не заметил что при удалении IP-адреса автоматически сносится и ipforwarding.
# Потом новый IP назначил, но ipforwarding не сделал. И не мог никак понять почему маршруты от пира не принимаются.
configure vlan Upstream_Internet ipaddress 192.168.13.1 255.255.255.252
enable ipforwarding vlan Upstream_Internet
configure vlan Sample_IX ipaddress 192.168.12.1 255.255.255.0
configure vlan Sample_IX add secondary-ipaddress 192.168.13.1 255.255.255.0
enable ipforwarding vlan Sample_IX
configure vlan My_peer1 ipaddress 192.168.11.1 255.255.255.252
enable ipforwarding vlan My_peer1
configure vlan Internal_BGP ipaddress 192.168.10.1 255.255.255.252
enable ipforwarding vlan Internal_BGP
# Указываем какие влан-интерфейсы будем мониторить по snmp, без этого снять счётчики не получится
# А чтобы снять эти данные по SNMP надо в mib-browser'е покопаться.
configure ports 29 monitor vlan Upstream_Internet
configure ports 29 monitor vlan Sample_IX
4) Настройка BGP
# Конфигурация BGP
# Привожу в том порядке в котором лучше вводить команды
# В конфиге оно не очень удобно — перемешано между собой.
# кроме этого наследуемые от peer-group настройки так же дублируются и для neighbor, отчего конфиг «распухает»
configure bgp AS-number 65510
configure bgp routerid 192.168.13.1
configure bgp local-preference 102
enable bgp community format AS-number:number
# Включаем BGP
enable bgp
## Подключение к IX с двумя Route Servers
##
create bgp peer-group sample-ix
configure bgp peer-group sample-ix remote-AS-number 65512
configure bgp peer-group sample-ix send-community extended
configure bgp peer-group sample-ix route-policy in ix-in
configure bgp peer-group sample-ix route-policy out mypref-out
## Первый PS
create bgp neighbor 192.168.12.100 peer-group sample-ix
configure bgp neighbor 192.168.12.100 description «sample-ix RS 1»
enable bgp neighbor 192.168.12.100 soft-in-reset
disable bgp neighbor 192.168.12.100 capability ipv4-multicast
enable bgp neighbor 192.168.12.100
## Второй RS
create bgp neighbor 192.168.13.100 peer-group sample-ix
configure bgp neighbor 192.168.13.100 description «sample-ix RS 2»
enable bgp neighbor 192.168.13.100 soft-in-reset
disable bgp neighbor 192.168.13.100 capability ipv4-multicast
enable bgp neighbor 192.168.13.100
## Наш пир которого мы пропускаем во внешку
create bgp neighbor 192.168.11.2 remote-AS-number 65511
configure bgp neighbor 192.168.11.2 description «Sample peer N1»
configure bgp neighbor 192.168.11.2 route-policy in peer1-in
configure bgp neighbor 192.168.11.2 route-policy out peer1-out
enable bgp neighbor 192.168.11.2 soft-in-reset
disable bgp neighbor 192.168.11.2 capability ipv4-multicast
enable bgp neighbor 192.168.11.2
## Внутренний пир iBGP
create bgp neighbor 192.168.10.2 remote-AS-number 65510
configure bgp neighbor 192.168.10.2 description «IBGP Router»
configure bgp neighbor 192.168.10.2 send-community extended
configure bgp neighbor 192.168.10.2 next-hop-self
configure bgp neighbor 192.168.10.2 route-policy out ibgp-out
enable bgp neighbor 192.168.10.2 soft-in-reset
disable bgp neighbor 192.168.10.2 capability ipv4-multicast
enable bgp neighbor 192.168.10.2
## Наш апстрим
create bgp neighbor 192.168.14.2 remote-AS-number 65514
configure bgp neighbor 192.168.14.2 description «Internet peer»
configure bgp neighbor 192.168.14.2 send-community extended
configure bgp neighbor 192.168.14.2 route-policy in upstream-in
configure bgp neighbor 192.168.14.2 route-policy out upstream-out
enable bgp neighbor 192.168.14.2 soft-in-reset
disable bgp neighbor 192.168.14.2 capability ipv4-multicast
enable bgp neighbor 192.168.14.2
5) ROUTE-POLICY Самая сложная и важная часть и не совсем автоматизирована. Собственно работа для хирурга
Примеры route-policy
Policy: upstream-in
entry bogus-rej {
if match any {
nlri 10.0.0.0/8 ;
nlri 192.168.0.0/16 ;
nlri 172.16.0.0/12 ;
}
then {
deny ;
}
}
entry own-as {
if match all {
as-path «^65514*$» ;
}
then {
local-preference 200 ;
permit ;
}
}
entry russia-opg {
if match any {
as-path «^65514 .*20485 .*» ;
as-path «^65514 .*12389 .*» ;
as-path «^65514 .*3216 .*» ;
as-path «^65514 .*8359 .*» ;
as-path «^65514 .*31133 .*» ;
}
then {
local-preference 99 ;
permit ;
}
}
entry other-as {
if match all {
}
then {
local-preference 102 ;
permit ;
}
}
Policy: mypref-out
@description «export my AS prefixes»
entry my-pref {
if match any {
nlri 192.168.0.0/23 exact ;
nlri 192.168.2.0/23 exact ;
}
then {
permit ;
}
}
@description «export my AS-SET prefixes»
entry asset-pref {
if match any {
as-path «^65511*$» ;
as-path «^65512*$» ;
as-path «^65513*$» ;
}
then {
permit ;
}
}
@description «deny other prefixes»
entry final-deny {
if match all {
}
then {
deny ;
}
}
В конструкциях подобных
as-path «^65514 .*20485 .*»
очень важно после номера AS вставлять пробел, иначе будет ругаться на всё что угодно, но только не на это. С проверкой синтаксиса тут засада, особенно это напрягает вначале, а потом уже редактировать по образу и подобию не так сложно.
Как делать полиси?
команда
содается полиси-файл так
edit policy upstream-in
открывается редактор, по сути урезанный vi
я привык к vim ,так что никаких неудобств не ощутил в этом смысле
После редактирования, проверка полиси
check policy upstream-in
и потом применяем в нужном месте конфига (смотрите выше)
или же если полиси уже «в деле» — тогда обновить так
refresh policy upstream-in
Не помешает ещё и сделать пиру например так
configure bgp neighbor 192.168.14.2 soft-reset in