Для начала схема сети:
Описание:
Внедряется новый граничный маршрутизатор Juniper, времменно, пока не подняты новые "прямые" bgp сессии с абонентами необходимо их префиксы отдавать апстриму через новый роутер. Для того чтобы не городить новые префикс листы, было принято решение пометить префиксы получаемые от клиентов соответствующим community 1234:2001, после чего на Juniper сделать фильтр для экспорта этих префиксов провайдеру. Дополнительно провайдеру отдаются собственные префиксы, получаемые от DR по протоколу ospf. Часть конфига Juniper R1:
- Код: Выделить всё
protocols {
bgp {
log-updown;
remove-private;
group PROVIDERS {
type external;
export ANNOUNCE-OUT;
local-as 1234;
neighbor x.x.x.x1 {
description "#Prov#";
local-preference 370;
local-address x.x.x.x2;
family inet {
unicast;
}
export [ prov-out ANNOUNCE-OUT ];
peer-as 4444;
}
}
group IBGP {
type internal;
local-address y.y.y.y1;
log-updown;
peer-as 1234;
local-as 1234;
neighbor y.y.y.y2;
}
...
policy-options {
prefix-list OUR-PREFIXES {
y.y.y.0/19;
z.z.z.0/21;
}
policy-statement ANNOUNCE-OUT {
term OUR-PREFIXES-LONG {
from {
protocol ospf;
prefix-list-filter OUR-PREFIXES exact;
}
then accept;
}
term CLIENTS-PREFIXES-OUT {
from {
protocol bgp;
community clients-prefixes;
}
then accept;
}
term reject-all {
then reject;
}
}
policy-statement prov-out {
then {
community set prov-out;
as-path-prepend "1234 1234 1234 1234";
}
}
community clients-prefixes members "^1234:2001";
community prov-out members 4444:1200;
....
Клиент отдает префикс d.d.d.0/21
Проверки:
1. Смотрим "прилетает" ли префикс с нужным коммьюнити от Cisco-R1:
- Код: Выделить всё
JUNR1# run show route receive-protocol bgp y.y.y.y2 community ^1234:2001
inet.0: 360192 destinations, 715948 routes (360189 active, 3 holddown, 0 hidden)
Prefix Nexthop MED Lclpref AS path
* d.d.d.0/21 y.y.y.y2 0 500 5555 I
2. Проверяем активен ли наш маршрут:
- Код: Выделить всё
JUNR1# run show route d.d.d.0/21
inet.0: 360187 destinations, 715932 routes (360174 active, 13 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
d.d.d.0/21 *[BGP/170] 02:09:54, MED 0, localpref 500
AS path: 5555 I
> to y.y.y.y2 via xe-1/0/0.506
3. Проверяем. что мы "отдаем" провайдеру:
- Код: Выделить всё
JUNR1# run show route advertising-protocol bgp x.x.x.x1
inet.0: 360185 destinations, 715939 routes (360185 active, 0 holddown, 0 hidden)
Prefix Nexthop MED Lclpref AS path
* y.y.y.0/19 Self 20 1234 1234 1234 1234 [1234] I
* z.z.z.0/21 Self 20 1234 1234 1234 1234 [1234] I
Собственно в этом и проблема, не отдаются префиксы от iBGP пира, помеченные соответствующим коммьюнити. Будут полезны любые комментарии.
P.S. при измнении policy-statement ANNOUNCE-OUT:
- Код: Выделить всё
policy-statement ANNOUNCE-OUT {
term OUR-PREFIXES-LONG {
from {
protocol ospf;
prefix-list-filter OUR-PREFIXES exact;
}
then accept;
}
term CLIENTS-PREFIXES-OUT {
from {
protocol bgp;
route-filter d.d.d.0/21 exact;
}
then accept;
}
term reject-all {
then reject;
}
}
все работает замечательно:
- Код: Выделить всё
JUNR1# run show route advertising-protocol bgp x.x.x.x1
inet.0: 360317 destinations, 716216 routes (360316 active, 1 holddown, 0 hidden)
Prefix Nexthop MED Lclpref AS path
* d.d.d.0/21 Self 1234 1234 1234 1234 [1234] 5555 I
* y.y.y.0/19 Self 20 1234 1234 1234 1234 [1234] I
* z.z.z.0/21 Self 20 1234 1234 1234 1234 [1234] I