BGP Part 9. Практика.

2023.03.14. Kurapov Alexey.

BGP Part 9. 

                   Схема сети такая же, как и раньше:

 

BGP Best Path Selection

 

                    Проверим какие маршруты до int Lo1 R10 знает R3 и как с R3 ходим до префикса R10 - 100.100.100.100/32:


                    Т.е. на R3 есть три пути в сторону R10, три записи, с разными next-hop, от роутеров с Router-ID 2.2.2.2, 9.9.9.9 и 111.111.111.111. Лучшим выбран, полученный от 9.9.9.9, с next-hop = 10.0.139.9 – best, именно он и  инсталируется в таблицу маршрутизации, в итоге путь выглядит так – R3-R9-R6-R10.

                    Почему в качестве best выбран маршрут через R9? 

                     BGP Best Path Selectionв BGP Update сообщении передается сам префикс сети и некоторые аттрибуты – они влияют на то какой Update и соответственно, маршрут будет выбран наилучшим: 


            Порядок сравнения аттрибутов BGP (по уменьшению степени значимости):

 WEIGHT 

1.       Weight (Вес) – не передается внутри update, настроен локально на роутере, для определенных префиксов определенного соседа:

                   По умолчанию  для всех префиксов, полученных от соседей Weight = 0, а для собственных префиксов Weight = 32 768. Можно отфильтровать собственные префиксы по колонке Next Hop со значением равным 0.0.0.0 – локальные префиксы:

                   Как сделать, чтобы R3 ходил до R10, например, через R2?

                   Один из вариантов – изменить на самом R3 вес для данного маршрута - т.е. для маршрута через R2:  

                Как видим можем менять вес только целиком для соседа, не для конкретного префикса.  
    
                   Проверим:

Вес для префиксов получаемых от R2 не изменился, параметры изменятся после получения update от R2. 

В BGP нет периодических рассылок Update сообщений, если в сети все стабильно – роутеры не падают, маршруты не пропадают, то префиксы не пересылаются повторно, нет флуда. Попросим R2 заново переслать маршруты:

                   Теперь для префиксов, получаемых от R2, R3 выставил Weight = 90, проверим как теперь R3 ходит до R10:

Как и хотели теперь R3 ходит до R10 через R2. 

У данного решения есть недостаток - нет гранулярности, т.к. не можем изменить вес только для одного префикса 100.100.100.100/32, а меняем и для всех остальных получаемых от R2:

В итоге, например, до R8 ходим также через R2, хотя до изменения веса маршрут шел через  R9:

 

                    Как изменить вес для конкретного префикса?  Обычно используется route-map, изменим вес для определенного префикса.

                    Создадим Prefix-list, затем route-map, в которой будем матчить по созданному prefix-list и менять для конктетных префиксов интересующие аттрибуты, например, вес:

                    Создали два prefix-list, с помощью которых отлавливаем префиксы 88.88.88.88/32 и 100.100.100.100/32, затем создаем две route-map, с помощью первой установим вес = 180 для маршрута до R10 через R2, с помощью второй – для маршрута до R8 через R1 изменим значение веса на 170.

                    Вешаем route-map на BGP соседей в направлении in – меняем аттрибуты во входящих update, для изменения направления нашего выходного трафика:




                    Проверим как теперь ходит R3:


Все в порядке, веса для указанных маршрутов изменились и теперь до R8 ходим через R1, до R10 – через R2:

 

                    Вес удобно использовать в случае если из AS немного точек выхода, в большой BGP AS не удобно. Т.к. требуется изменение веса на всех роутерах AS, а т.к. этот атрибут никуда не передается, то требуется его ручная корректировка на каждом роутере AS, например, в нашем случае на R1, R2 и R3.

                    Например, сейчас R1 ходит до R10 через R4, а R2 до R8 - через R5: 



Кратко о Weight:

 






Комментарии

Популярные сообщения из этого блога