Пример балансировки BGP канала между несколькими интерфейсами. В данном примере между двумя. .
Пример балансировки со стороны Mikrotik есть по адресу - http://wiki.mikrotik.com . Но у данного примера есть один недостаток - в случае пропадания одного из каналов общий канал превращается в неработоспособный. Поэтому немного модернизируем схему - добавляем связность между узлами с помощью OSPF.
Для начала создаем IP-адреса на loopback интерфейсах:
Mikrotik:
/interface bridge
add name=br-local
/ip address
add address=10.100.105.2 interface=br-local network=10.100.105.2
Juniper:
interfaces {
lo0 {
unit 0 {
family inet {
address 10.100.105.1/32;
}
}
}
}
Между этими адресами и будем поднимать BGP сессию, но сперва надо проанонсировать данные IP с помощью протокола OSPF:
Mikrotik:
/routing ospf instance
set [ find default=yes ] redistribute-connected=as-type-1
/ip address
add address=10.100.100.2/30 interface=ether1 network=10.100.100.0
add address=10.100.101.2/30 interface=ether2 network=10.100.101.0
/routing filter
add action=accept chain=ospf-out prefix=10.100.105.2
add action=discard chain=ospf-out
add action=accept chain=ospf-in set-distance=10
/routing ospf interface
add dead-interval=8s hello-interval=2s interface=ether1 network-type=nbma
add dead-interval=8s hello-interval=2s interface=ether2 network-type=nbma
/routing ospf nbma-neighbor
add address=10.100.101.1
add address=10.100.100.1
/routing ospf network
add area=backbone network=10.100.100.0/30
add area=backbone network=10.100.101.0/30
Juniper:
routing-options {
forwarding-table {
export load-balancing;
}
}
interfaces {
em0 {
unit 0 {
family inet {
address 10.100.100.1/30;
}
}
}
em1 {
unit 0 {
family inet {
address 10.100.101.1/30;
}
}
}
}
protocols {
ospf {
export [ ospf-export load-balancing ];
area 0.0.0.0 {
interface em0.0 {
interface-type nbma;
metric 100;
hello-interval 2;
dead-interval 8;
neighbor 10.100.100.2 eligible;
}
interface em1.0 {
interface-type nbma;
metric 100;
hello-interval 2;
dead-interval 8;
neighbor 10.100.101.2 eligible;
}
}
}
}
policy-options {
prefix-list ospf-export {
10.100.105.1/32;
}
policy-statement load-balancing {
then {
load-balance per-packet;
}
}
policy-statement ospf-export {
term 1 {
from {
prefix-list ospf-export;
}
then accept;
}
}
}
В результате мы получаем два равнозначных маршрута на микротике:
И следующую таблицу на juniper:
На Mikrotik балансировка организована с помощью равнозначных маршрутов, на Juniper используется load-balance per-packet
Остался последний этап - поднимаем BGP-сессию между IP 10.100.105.1 и 10.100.105.2
Mikrotik:
/routing bgp instance
set default redistribute-connected=yes router-id=10.100.105.2
/routing bgp network
add network=10.11.11.0/24 synchronize=no
/routing bgp peer
add multihop=yes name=peer1 out-filter=BGP-out remote-address=10.100.105.1 remote-as=65000 ttl=default update-source=br-local
/routing filter
add action=reject chain=BGP-out prefix=10.100.105.2
Juniper:
routing-options {
static {
route 0.0.0.0/0 next-hop 192.168.56.1;
}
}
protocols {
bgp {
group peer {
type external;
multihop;
local-address 10.100.105.1;
export bgp-export;
peer-as 65530;
local-as 65000;
neighbor 10.100.105.2;
}
}
policy-options {
policy-statement bgp-export {
from {
protocol static;
route-filter 0.0.0.0/0 exact;
}
then accept;
}
}
В данном примере мы анонсируем вышестоящему пиру сеть 10.11.11.0/24 и получаем маршрут по умолчанию
И как результат:
В итоге мы получаем отазоустойчивую балансировку BGP сессии между двумя каналами
- Войдите или зарегистрируйтесь, чтобы оставлять комментарии