Привет!
На Juniper MX204 строю 3 eBGP соседства с вышестоящими операторами,
Куда и анонсирую свои сети.Для балансировки входящего трафика используются communities, как приведено ниже:
My network:
# show routing-options
static {
route yyy.yyy.0.0/16 {
discard;
community [ XXXXX:100 XXXXX:111 XXXXX:120 ];
}
community UPSTREAM-1-EXP members XXXXX:100
community UPSTREAM-1-EXP-1 members XXXXX:101
community UPSTREAM-1-EXP-2 members XXXXX:102
community UPSTREAM-1-EXP-3 members XXXXX:103
community UPSTREAM-1-EXP-4 members XXXXX:104
community UPSTREAM-1-EXP-8 members XXXXX:108
community UPSTREAM-1-EXP-DENY members XXXXX:109
community UPSTREAM-2-EXP members XXXXX:110
community UPSTREAM-2-EXP-1 members XXXXX:111
community UPSTREAM-2-EXP-2 members XXXXX:112
community UPSTREAM-2-EXP-3 members XXXXX:113
community UPSTREAM-2-EXP-4 members XXXXX:114
community UPSTREAM-2-EXP-8 members XXXXX:118
community UPSTREAM-2-EXP-DENY members XXXXX:119
community UPSTREAM-3-EXP members XXXXX:120
community UPSTREAM-3-EXP-1 members XXXXX:121
community UPSTREAM-3-EXP-2 members XXXXX:122
community UPSTREAM-3-EXP-3 members XXXXX:123
community UPSTREAM-3-EXP-4 members XXXXX:124
community UPSTREAM-3-EXP-8 members XXXXX:128
community UPSTREAM-3-EXP-DENY members XXXXX:129
community CUSTOMER members XXXXX:700
community CUSTOMER-1 members XXXXX:701
community CUSTOMER-2 members XXXXX:702
В исходящей политике добавляются препенды в зависимости от community (на примере одного из апстримов. У других политики аналогичны):
# show policy-options policy-statement UPSTREAM-1-OUT-v4
...
term 20 {
from community [ UPSTREAM-1-EXP-DENY ];
then reject;
}
term 30 {
from community [ UPSTREAM-1-EXP CUSTOMER];
then accept;
}
term 40 {
from community [ UPSTREAM-1-EXP-1 CUSTOMER-1];
then {
as-path-prepend XXXXX;
accept;
}
}
term 50 {
from community [ UPSTREAM-1-EXP-2 CUSTOMER-2];
then {
as-path-prepend "XXXXX XXXXX";
accept;
}
}
term 60 {
from community [ UPSTREAM-1-EXP-3 ];
then {
as-path-prepend "XXXXX XXXXX XXXXX";
accept;
}
}
term 70 {
from community [ UPSTREAM-1-EXP-4 ];
then {
as-path-prepend "XXXXX XXXXX XXXXX XXXXX";
accept;
}
}
term 80 {
from community [ UPSTREAM-1-EXP-8 ];
then {
as-path-prepend "XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX";
accept;
}
}
term 100 {
then reject;
}
Для изменения количества препендов в сторону соседа необходимо изменить community в routing-options.
Данная схема работает нормально, как от неё и ожидается, но есть одна проблема, которую
мне пока не удалось решить.
Заключается она в том, что я также строю BGP соседство со своими клиентами.
Эти клиенты могут мне анонсировать как свои собственные сети, так и подсети из моего блока сетей.
И я бы хотел предоставить им возможность балансировать трафик с помощью communities.
Из конфига видно, что для клиентов BGP используется отдельный community (CUSTOMER, CUSTOMER-1...)
и таким образом их сети анонсируются. Назначается этот community вручную мною при построении BGP соседства.
Задача дать клиенту возможность самому использовать community.
Например, клиент хочет добавить препенды в сторону UPSTREAM-1.
Он может в мою сторону проанонсить мне XXXXX:103, но эффекта не будет, т.к.
этот community просто добавится к тем, которые я уже указал в routing-option:
run show route zz.zz.zz.0/22 detail
......
Communities: XXXXX:100 XXXXX:111 XXXXX:120 XXXXX:103
А мне нужно:
run show route zz.zz.zz.0/22 detail
......
Communities: XXXXX:103 XXXXX:111 XXXXX:120
Я не большой специалист по juniper, и возможно изначальный дизайн был построен не очень верно.
Буду рад советам и замечаниям.
Спасибо.