Настройка BGP на Juniper MX — балансировка трафика

Приведу пример настройки eBGP на Juniper MX204 с несколькими аплинками и балансировкой трафик между ними.

Перейдем в режим конфигурирования:

configure

Заранее подготовим необходимые политики, чтобы потом применять их к BGP соседям.

edit policy-options

Например принимать только маршрут по умолчанию IPv4/IPv6:

set policy-statement DEFAULT-IPv4 term ACCEPT from route-filter 0.0.0.0/0 exact
set policy-statement DEFAULT-IPv4 term ACCEPT then accept
set policy-statement DEFAULT-IPv4 term REJECT then reject

set policy-statement DEFAULT-IPv6 term ACCEPT from route-filter ::/0 exact
set policy-statement DEFAULT-IPv6 term ACCEPT then accept
set policy-statement DEFAULT-IPv6 term REJECT then reject

Принимать только маршрут по умолчанию IPv4 и увеличить as-path-prepend (так можно балансировать исходящий трафик):

set policy-statement DEFAULT-IPv4-IXNFO1-IN term 1 from route-filter 0.0.0.0/0 exact
set policy-statement DEFAULT-IPv4-IXNFO1-IN term 1 then as-path-prepend "MYAS MYAS"
set policy-statement DEFAULT-IPv4-IXNFO1-IN term 1 then accept
set policy-statement DEFAULT-IPv4-IXNFO1-IN term 2 then reject

Пример с as-path-prepend чтобы балансировать входящий трафик:

set policy-statement IXNFO1-OUT term my-prefix from protocol aggregate policy MY-NET-Aggregated
set policy-statement IXNFO1-OUT term my-prefix then as-path-prepend "MYAS MYAS"
set policy-statement IXNFO1-OUT term my-prefix then accept
set policy-statement IXNFO1-OUT term reject-other then reject

Вместо as-path-prepend можно использовать as-path-expand, пример:

then as-path-expand last-as count 2

Пример просмотра AS path:

run show route protocol bgp
run show bgp neighbor 192.168.5.5

Не принимать маршрут по умолчанию:

set policy-statement default-route-reject from route-filter 0.0.0.0/0 exact
set policy-statement default-route-reject then reject

Не принимать серые сети:

set policy-statement bogus-reject from route-filter 127.0.0.0/8 orlonger
set policy-statement bogus-reject from route-filter 10.0.0.0/8 orlonger
set policy-statement bogus-reject from route-filter 172.16.0.0/12 orlonger
set policy-statement bogus-reject from route-filter 192.168.0.0/16 orlonger
set policy-statement bogus-reject from route-filter 169.254.0.0/16 orlonger
set policy-statement bogus-reject from route-filter 224.0.0.0/4 orlonger
set policy-statement bogus-reject from route-filter 240.0.0.0/4 orlonger
set policy-statement bogus-reject then reject

Чтобы анонсировать свою сеть аплинкам, создадим для нее агрегированный маршрут (если ни одного маршрута в этой сети не будет активно, то агрегированный маршрут тоже будет неактивен):

set policy-statement IXNFO-COM1-OUT term my-prefix from protocol aggregate
set policy-statement IXNFO-COM1-OUT term my-prefix from policy MY-NET-Aggregated
set policy-statement IXNFO-COM1-OUT term my-prefix then accept
set policy-statement IXNFO-COM1-OUT term reject-other then reject

set policy-statement MY-NET-Aggregated term MYAS-prefix from route-filter x.x.x.0/23 exact
set policy-statement MY-NET-Aggregated term MYAS-prefix then accept

set routing-options aggregate route x.x.x.0/23

Сеть /23 также можно разделить на две сети /24, например для балансировки, но можно балансировать и без этого:

set policy-statement MY-NET-Aggregated term MYAS-prefix from route-filter x.x.x.0/23 orlonger
set policy-statement MY-NET-Aggregated term MYAS-prefix then accept

set routing-options aggregate route x.x.1.0/24
set routing-options aggregate route x.x.2.0/24

Не принимать серые AS:

set policy-statement bogus-ases from as-path grey-as
set policy-statement bogus-ases then reject
set as-path grey-as 64512-65535

Перейдем к настройке протокола BGP, укажем свою AS, логирование обрыва сессий с соседями:

edit protocols bgp
set local-as 201
set log-updown

Все логи лучше отправлять на syslog сервер и просматривать их через web интерфейс, так удобнее и встроенная память устройств больше прослужит.
Установка Rsyslog + Loganalyzer + MySQL

Пример указания соседей (в закомментированных строках я показал дополнительные параметры):

edit group IXNFO_COM_1
set type external
set hold-time 30
set log-updown
set description TEXT
set peer-as 200
set local-as 201
set export IXNFO-COM1-OUT
; no-advertise-peer-as
; set advertise-inactive
; set damping
; set multipath multiple-as
set neighbor 192.168.5.5 description TEXT
set neighbor 192.168.5.5 local-address 192.168.5.4
set neighbor 192.168.5.5 import [ bogus-reject bogus-ases IXNFO1-IN ]
set neighbor 192.168.6.5 description TEXT
set neighbor 192.168.6.5 local-address 192.168.6.4
set neighbor 192.168.6.5 import [ bogus-reject bogus-ases default-route-reject IXNFO1-IN ]
show
exit
set policy-statement IXNFO1-IN term accept-other then accept

Укажем свою AS и router-id (любой IP адрес из сети соей AS который назначен на устройстве, заодно и агрегированный маршрут постоянно будет активен):

set routing-options router-id 1.2.3.4
set routing-options autonomous-system 201

Настроим балансировку, например когда необходимо принимать маршрут по умолчанию (0.0.0.0/0) от все аплинков:

set policy-options policy-statement load-balancing-policy term balance then load-balance per-packet
set routing-options forwarding-table export load-balancing-policy

Пример изменения local-preference (значение по умолчанию 100), например если определенные маршруты принадлежат AS вашего соседа, анонсируются вам и от других соседей, и чтобы исходящий трафик предпочтительнее шел напрямую к нему, а не через других соседей, увеличим local-preference для всех маршрутов указанной AS, если принимаются только маршруты этой AS или через prefix-list укажем сети и поднимем для них local-preference):

set policy-statement IXNFO-COM1-IN term 1 from as-path prov-1-as
set policy-statement IXNFO-COM1-IN term 1 then local-preference 200
set policy-statement IXNFO-COM1-IN term 1 then accept
set policy-statement IXNFO-COM1-IN term accept-other then accept
set policy-statement IXNFO-COM1-IN term accept-other then local-preference 100
set as-path prov-1-as «.*555»
run show bgp neighbor | match preference
set prefix-list LIST1 100.100.100.0/23
set policy-statement IXNFO-COM1-IN term 1 from prefix-list-filter LIST1 exact
set policy-statement IXNFO-COM1-IN term 1 then local-preference 200
set policy-statement IXNFO-COM1-IN term reject-other then reject

Аплинки желательно подключить напрямую в L3 порты Juniper MX, чтобы не гонять L3 трафик через L2 коммутаторы и потом можно еще на L3 порты аплинков повесить фильтры, например для фильтрации мелких UDP пакетов к NTP и прочие для защиты устройства и сети.

Пример включения отладочных логов (не забываем потом отключить):

set protocols bgp traceoptions file bgp.log
set protocols bgp traceoptions file size 1m
set protocols bgp traceoptions file files 3
set protocols bgp log-updown

Если нет маршрута по умолчанию, а есть серые сети которые нужно отправить на NAT сервер, то смотрите мою статью:
Juniper MX. Как отправить трафик клиентов на NAT сервер

Проверим конфигурацию и применим с указанием комментария:

commit check
commit comment «ixnfo.com»

Пример просмотра маршрутов по номеру AS:

show route aspath-regex ".*65000" | count

Просмотр различной информации:

show route table
run show bgp summary
show route summary

BGP порт должен быть открыт только для соседей, а не публично, поэтому нужно ограничить доступ например как я описывал в статье:
Ограничение доступа к управлению на Juniper MX

Или например так:

edit policy-options prefix-list bgp-neighbors
set apply-path "protocols bgp group <*> neighbor <*>"

edit firewall family inet filter bgp-protect
set term accept-bgp from source-prefix-list bgp-neighbors
set term accept-bgp from protocol tcp
set term accept-bgp from port bgp
set term accept-bgp then accept
set term deny-bgp from protocol tcp
set term deny-bgp from port bgp
set term deny-bgp then reject

set interfaces lo0 unit 0 family inet filter input-list [ bgp-protect limit-mgmt-access ]

Пример обрыва сессии с BGP соседом:

clear bgp neighbor 192.168.5.5
clear bgp neighbor all

Просмотр принятых и анонсируемых маршрутов:

run show route receive-protocol bgp 192.168.5.5
run show route advertising-protocol bgp 192.168.5.5

Смотрите также мои статьи:
Настройка iBGP на Juniper MX
Настройка BGP prefix-limit

Оставьте комментарий

Добавить комментарий