Приоритеты

Статическая и динамическая, протоколы

Приоритеты

Сообщение v.seregin » 16 май 2014, 04:56

Добрый день!

С толкнулся с проблемой, после подключения второго провайдера по BGP (оба BGP соединения не фуллы), первый провайдер имеет скорость порядка 50 Мбит, второй как резервный 10 Мбит (на случай отключения первого), оба оптика до нашего оборудования (SRX240H2):
1. Второй провайдер глобальный (по России), пинги лучше и прочее, его маршруты железяка выбирает по умолчанию сама, т.е. у нас скорость сразу падает до 10 Мбит
2. Балансировка не нужна.
3. Нужно чтоб первый провайдер со своими маршрутами туда и обратно был в высоком приоритете, даже если у второго маршрут лучше намного.
4. Если первый провайдер падает (иногда раз в 2-3 месяца бывает), чтоб второй брал на себя все.
5. Когда первый поднимается, он опять становился приоритетным.

Пробовал приоритеты в BGP сессиях править, но толку нет

Параметры BGP:
Код: Выделить всё
protocols {
    bgp {
        traceoptions {
            file bgp.log size 1m files 50;
        }
        advertise-inactive;
        log-updown;
        damping;
        local-as MYAS;
        group uplink {
            type external;
            description Uplink;
            no-advertise-peer-as;
            multipath multiple-as;
            neighbor 1.1.1.1 {
                description AS1;
                preference 50;
                import [ bogus-reject bogus-ases rules_in_1 ];
                export rules_out_1;
                peer-as 1111;
            }
            neighbor 2.2.2.2 {
                description AS2;
                preference 250;
                import [ bogus-reject bogus-ases rules_in_2 ];
                export rules_out_2;
                peer-as 2222;
            }
        }
    }
    rstp;
}


Скорее всего где то еще параметры нужно указать, но где, так же присутствует строчка, но удаление её нет результата:
Код: Выделить всё
routing-options {
    static {
        route 3.3.3.0/24 {
            next-hop 3.3.3.1;
            retain;
            readvertise;
        }
        route 10.0.0.0/8 discard;
        route 172.16.0.0/12 discard;
        route 192.168.0.0/16 discard;
        route 192.168.11.0/24 next-hop st0.0;
    }
    aggregate {
        route 3.3.3.0/24 discard;
    }
    router-id 3.3.3.1;
    autonomous-system 3333;
    forwarding-table {
        export per-flow-load-balancing;
    }
}


per-flow-load-balancing
Код: Выделить всё
    policy-statement per-flow-load-balancing {
        term balance {
            then {
                load-balance per-packet;
            }
        }
    }


Может пригодится:
Код: Выделить всё
    policy-statement rules_in_2{
        term DEF {
            from {
                route-filter 0.0.0.0/24 exact;
            }
            then accept;
        }
        term From-AS2 {
            from as-path BEELINE;
            then accept;
        }
        term WORLD {
            then reject;
        }
    }
    policy-statement rules_in_1 {
        term own-as {
            from as-path AS1;
            then {
                local-preference 200;
                accept;
            }
        }
        term final-accept {
            then {
                local-preference 100;
                accept;
            }
        }
    }
    policy-statement rules_out_1 {
        term DEF {
            from {
                protocol direct;
                policy our-CIDR-blocks-aggregated;
            }
            then accept;
        }
    }
    policy-statement rules_out_2 {
        term DEF {
            from {
                protocol [ direct static ];
                route-filter 3.3.3.0/24 exact;
            }
            then accept;
        }
        term default {
            then reject;
        }
    }


P.S. второй провайдер на out только так работает, policy our-CIDR-blocks-aggregated - это обрубает все что нам не нужно.
Последний раз редактировалось v.seregin 16 май 2014, 07:59, всего редактировалось 1 раз.
v.seregin
новичок
 
Сообщения: 6
Зарегистрирован: 16 май 2014, 04:42

Re: Приоритеты

Сообщение root » 16 май 2014, 07:51

Не стоит заменять все и вся на XXX, т.к. теряется смысл конфига. Стоит оставить хотя бы несколько реальных цифр или, если есть паранойя, то заменять на разные буквы, или заменять на цифры отбалды.
Согласись что:
Код: Выделить всё
            neighbor 1.1.1.1 {
                ..........
                peer-as 1;
            }
            neighbor 2.2.2.2 {
                ..........
                peer-as 2;
            }

Гораздо понятнее и вносит ясность.
А из-за твоих сплошных xxxxx лично мне не понятно кто является "первым провайдером", а кто вторым. Из description выходит одно, из policy и preference другое. Сидеть гадать ?

v.seregin писал(а):Балансировка не нужна.

Тогда зачем в конфиге вот это:
v.seregin писал(а):
Код: Выделить всё
multipath multiple-as;

multipath (Protocols BGP)
v.seregin писал(а):
Код: Выделить всё
export per-flow-load-balancing;

Overview of Per-Packet Load Balancing

Раз балансинг не нужен, то и эти настройки не нужны.

v.seregin писал(а):Пробовал приоритеты в BGP сессиях править, но толку нет

так а что показывает show route ? pref то на маршрутах выставился ?

Так же стоит определиться и устанавливать pref только в одном месте или в policy или в neighbor. Лично я предпочитаю высталять pref в policy.
Сейчас для AS1 pref указывается и в neighbor, причем там он 50, а в policy rules_in_1 он устанавливается в 100.
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1882
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia

Re: Приоритеты

Сообщение v.seregin » 16 май 2014, 08:09

Простите, и правда непонято получилась, поправил примеры конфига.

root писал(а):так а что показывает show route ? pref то на маршрутах выставился ?

Так же стоит определиться и устанавливать pref только в одном месте или в policy или в neighbor.
Сейчас для AS1 pref указывается и в neighbor, причем там он 50, а в policy rules_in_1 он устанавливается в 100.


Вывод команды show route, частично, иначе там более 118 маршрутов:
Код: Выделить всё

85.234.104.0/21    *[BGP/150] 05:29:40, MED 0, localpref 200
                      AS path: 1111 I
                    > to 93.94.хх.хх via ge-0/0/1.0
85.234.116.0/23    *[BGP/150] 05:29:40, MED 0, localpref 200
                      AS path: 1111 I
                    > to 93.94.хх.хх via ge-0/0/1.0
87.229.142.0/23    *[BGP/250] 00:00:15, localpref 100
                      AS path: 2222 I
                    > to 195.239.хх.хх via ge-0/0/2.0
87.229.144.0/23    *[BGP/250] 00:00:15, localpref 100
                      AS path: 2222 I
                    > to 195.239.хх.хх via ge-0/0/2.0
87.229.176.0/21    *[BGP/250] 00:00:15, localpref 100
                      AS path: 3216 I
                    > to 195.239.хх.хх via ge-0/0/2.0
87.229.186.0/23    *[BGP/250] 00:00:15, localpref 100
                      AS path: 2222 I
                    > to 195.239.хх.хх via ge-0/0/2.0

Localpref видимо то что и нужно, тогда что это BGP/250 и BGP/150?

Читал и инструкции и форумы, так и не понял, чем больше значение pref тем меньше приоритет?

И еще вопрос, получается можно уставить приоритет только в police? Если да, то они должны быть одинаковы на in и out?

Так же там две команды local-preference и просто preference, какую и где использовать?
v.seregin
новичок
 
Сообщения: 6
Зарегистрирован: 16 май 2014, 04:42

Re: Приоритеты

Сообщение root » 19 май 2014, 07:53

v.seregin писал(а):Читал и инструкции и форумы

ну не знаю... не знаю... найти ответ на juniper.net можно за несколько секунд

v.seregin писал(а):тогда что это BGP/250 и BGP/150

juniper: show route terse
Prf

Preference value of the route. In every routing metric except for the BGP LocalPref attribute, a lesser value is preferred. In order to use common comparison routines, Junos OS stores the 1's complement of the LocalPref value in the Preference2 field. For example, if the LocalPref value for Route 1 is 100, the Preference2 value is -101. If the LocalPref value for Route 2 is 155, the Preference2 value is -156. Route 2 is preferred because it has a higher LocalPref value and a lower Preference2 value.


v.seregin писал(а):чем больше значение pref тем меньше приоритет?

Preference у пира - чем меньше Preference, тем больше приоритет пира.

juniper: local-preference
Modify the value of the LOCAL_PREF path attribute, which is a metric used by BGP sessions to indicate the degree of preference for an external route. The route with the highest local preference value is preferred.

Это BGP атрибут и чем больше local-preference, тем больше приоритет у маршрута.

v.seregin писал(а):получается можно уставить приоритет только в police?

local-preference может устанавливается в policy (а если быть точнее в policy-statement) на какие то конкретные маршруты, либо может быть установлен как на пира, так и на группу:
Код: Выделить всё
# set protocols bgp group GROUP_NAME local-preference ?
Possible completions:
  <local-preference>   Value of LOCAL_PREF path attribute

Код: Выделить всё
# set protocols bgp group GROUP_NAME neighbor 1.1.1.1 local-preference ?
Possible completions:
  <local-preference>   Value of LOCAL_PREF path attribute


v.seregin писал(а):Если да, то они должны быть одинаковы на in и out

Атрибут local-preference передается только в пределах одной автономной системы и не передается eBGP пирам.

v.seregin писал(а):Так же там две команды local-preference и просто preference, какую и где использовать?

Даже не знаю как ответить. Это все равно что спросить "А что лучше пить ? Чай или кофе ?"
Необходимо осознать работу этих команд и выбрать в зависимости от того результата, который необходимо получить. Как я и писал выше, лично я использую только local-preference.

v.seregin писал(а):поправил примеры конфига

вот теперь другое дело, только тогда на эти же данные стоило и остальные выводы команд подгонять, тот же show route, т.к. теперь опять не "бьется": neighbor 1.1.1.1 и neighbor 2.2.2.2 супротив 93.94.хх.хх и 195.239.хх.хх. Исходя из конфига получается что 93.94.хх.хх это 1.1.1.1, а 195.239.хх.хх это 2.2.2.2.
Но опять же из конфига лично мне не понятно как маршрут 2.2.2.2 получает local-preference. Конфиг приведен не весь ? Или приведен конфиг один, а вывод команды производился при другом конфиге.
Установка приоритетов на приходящие маршруты влияет на то как будет отправлен исходящий трафик. Я советую убрать preference из пиров и устанавливать приоритеты с помощью local-preference в соответствующих policy.
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1882
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia

Re: Приоритеты

Сообщение v.seregin » 19 май 2014, 09:59

вот теперь другое дело, только тогда на эти же данные стоило и остальные выводы команд подгонять, тот же show route, т.к. теперь опять не "бьется": neighbor 1.1.1.1 и neighbor 2.2.2.2 супротив 93.94.хх.хх и 195.239.хх.хх. Исходя из конфига получается что 93.94.хх.хх это 1.1.1.1, а 195.239.хх.хх это 2.2.2.2.

да вы все правильно поняли

Но опять же из конфига лично мне не понятно как маршрут 2.2.2.2 получает local-preference. Конфиг приведен не весь ? Или приведен конфиг один, а вывод команды производился при другом конфиге.

Он вообще не указан ни где для него кроме как в neighbor(и то я уже удалил от туда), и да после удаления из neighbor preference получается следующее, что при команде show route [BGP/170] и у первого и у второго провайдера. Это нормальное явление?

Установка приоритетов на приходящие маршруты влияет на то как будет отправлен исходящий трафик. Я советую убрать preference из пиров и устанавливать приоритеты с помощью local-preference в соответствующих policy.

Убрал по вашему совету из пиров, и поправил конфиги, теперь они такие:
Код: Выделить всё
policy-statement prov_2_in {
        term own-as {
            from as-path prov_2;
            then {
                local-preference 200;
                accept;
            }
        }
        term final-accept {
            then {
                local-preference 100;
                accept;
            }
        }
    }
    policy-statement prov_2_out {
        term DEF {
            from {
                protocol direct;
                policy our-CIDR-blocks-aggregated;
            }
            then accept;
        }
    }
    policy-statement prov_1_in {
        term own-as {
            from as-path prov_1;
            then {
                local-preference 800;
                accept;
            }
        }
        term final-accept {
            then {
                local-preference 600;
                accept;
            }
        }
    }
    policy-statement prov_2_out {
        term DEF {
            from {
                protocol direct;
                policy our-CIDR-blocks-aggregated;
            }
            then accept;
        }
    }

Получается в out приоритеты не нужно выставлять судя по вашему примеру из блога на данном сайте?
v.seregin
новичок
 
Сообщения: 6
Зарегистрирован: 16 май 2014, 04:42

Re: Приоритеты

Сообщение root » 20 май 2014, 08:11

v.seregin писал(а):Он вообще не указан

чудес не бывает

v.seregin писал(а):Это нормальное явление?

абсолютно нормальное

v.seregin писал(а):поправил конфиги

теперь полученные от 1.1.1.1 маршруты будут всегда преобладать над маршрутами от 2.2.2.2 и в первую очередь исходящий трафик будет предпочитать уходить в сторону 1.1.1.1
но при таких policy не ясно зачем терм from as-path prov_2 в prov_2_in, т.к. в терме final-accept в prov_1_in полюбому имеет выше loc-pref, поэтому в данном случае он бесполезен
вот если уровнять до 600, чтобы в ASку пира ходить не окольными путями, а все же по прямому линку.

v.seregin писал(а):Получается в out приоритеты не нужно выставлять

можно, но не нужно, т.к. они все равно будут проигнорированы, о чем уже написано выше:
root писал(а):Атрибут local-preference передается только в пределах одной автономной системы и не передается eBGP пирам.

а пиры 1.1.1.1 и 2.2.2.2 в данном случае это как раз eBGP пиры
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1882
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia

Re: Приоритеты

Сообщение v.seregin » 21 май 2014, 03:02

Спасибо большое, все заработало как нужно!
v.seregin
новичок
 
Сообщения: 6
Зарегистрирован: 16 май 2014, 04:42

Re: Приоритеты

Сообщение root » 21 май 2014, 07:31

Админ шоколадки не пьет

:D
Пжалста.
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1882
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia


Вернуться в Маршрутизация / Routing

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

cron