The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Juniper MX204, проблема с  BGP communities, !*! maxnetstat, 31-Май-22, 13:21  [смотреть все]
Привет!
На 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, и возможно изначальный дизайн был построен не очень верно.
Буду рад советам и замечаниям.
Спасибо.

  • Juniper MX204, проблема с  BGP communities, !*! maxnetstat, 12:55 , 03-Июн-22 (1)
    Решение проблемы оказалось очень простым.
    Я создал дополнительные клиентские комьюнити:

    community CUSTOMER-UPSTREAM-1-EXP members XXXXX:1100
    community CUSTOMER-UPSTREAM-1-EXP-1 members XXXXX:1101
    community CUSTOMER-UPSTREAM-1-EXP-2 members XXXXX:1102
    community CUSTOMER-UPSTREAM-1-EXP-3 members XXXXX:1103
    community CUSTOMER-UPSTREAM-1-EXP-4 members XXXXX:1104
    community CUSTOMER-UPSTREAM-1-EXP-DENY members XXXXX:1109

    community CUSTOMER-UPSTREAM-2-EXP members XXXXX:1110
    community CUSTOMER-UPSTREAM-2-EXP-1 members XXXXX:1111
    community CUSTOMER-UPSTREAM-2-EXP-2 members XXXXX:1112
    community CUSTOMER-UPSTREAM-2-EXP-3 members XXXXX:1113
    community CUSTOMER-UPSTREAM-2-EXP-4 members XXXXX:1114
    community CUSTOMER-UPSTREAM-2-EXP-DENY members XXXXX:1119

    community CUSTOMER-UPSTREAM-3-EXP members XXXXX:1120
    community CUSTOMER-UPSTREAM-3-EXP-1 members XXXXX:1121
    community CUSTOMER-UPSTREAM-3-EXP-2 members XXXXX:1122
    community CUSTOMER-UPSTREAM-3-EXP-3 members XXXXX:1123
    community CUSTOMER-UPSTREAM-3-EXP-4 members XXXXX:1124
    community CUSTOMER-UPSTREAM-3-EXP-DENY members XXXXX:1129

    И добавил их в исходящие политики ПЕРЕД старыми, т.к. политика работает таким образом, что после первого вхождения далее она не обрабатывается:

    # show policy-options policy-statement UPSTREAM-1-OUT-v4

    ...
    term 20 {
    from community [ UPSTREAM-1-EXP-DENY CUSTOMER-UPSTREAM-1-EXP-DENY ];
    then reject;
    }

    term 50 {
        from community CUSTOMER-UPSTREAM-1-EXP;
        then accept;
    }
    term 60 {
        from community CUSTOMER-UPSTREAM-1-EXP-1;
        then {
            as-path-prepend XXXXX;
            accept;
        }
    }
    term 70 {
        from community CUSTOMER-UPSTREAM-1-EXP-2;
        then {
            as-path-prepend "XXXXX XXXXX";
            accept;
        }
    }
    term 80 {
        from community CUSTOMER-UPSTREAM-1-EXP-2;
        then {                              
            as-path-prepend "XXXXX XXXXX XXXXX";
            accept;
        }
    }
    term 90 {
        from community CUSTOMER-UPSTREAM-1-EXP-4;
        then {
            as-path-prepend "XXXXX XXXXX XXXXX XXXXX";
            accept;
        }
    }

    term 100 {
        from community [ UPSTREAM-1-EXP ];
        then accept;
    }
    term 110 {
        from community [ UPSTREAM-1-EXP-1 ];
        then {
            as-path-prepend XXXXX;
            accept;
        }
    }
    ...




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру