Поднятие 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