LINUX.ORG.RU
ФорумAdmin

перенаправление маршрута в Quagga

 ,


0

1

Всем доброго дня.
Столкнулся с проблемой:
Есть сервер с FreeBSD + Quagga на котором подняты BGP с двумя провайдерами. Основной маршрут в сеть 62.210.0.0/16 идет через провайдера AS 4444. Надо сделать так, чтобы основной маршрут был через провайдера AS 5555. Конфиг роутера:

router bgp 2222
 bgp router-id 234.23.174.134
 network 192.168.45.0/23
 neighbor 78.11.128.61 remote-as 4444
 neighbor 78.11.128.61 prefix-list local out
 neighbor 78.11.128.61 filter-list 100 out
 neighbor 234.23.174.133 remote-as 5555
 neighbor 234.23.174.133 prefix-list no-default-route in
 neighbor 234.23.174.133 prefix-list local out
 neighbor 234.23.174.133 filter-list 100 out
!
 address-family ipv6
 exit-address-family
 exit
!
ip prefix-list local seq 5 permit 192.168.45.0/23
ip prefix-list no-default-route seq 5 deny 0.0.0.0/0
ip prefix-list no-default-route seq 10 permit 0.0.0.0/0 le 32
!
ip as-path access-list 100 permit ^$
!
route-map PREP-OUT permit 10
 set as-path prepend 2222 2222 2222
!
line vty

Пробовал так:

ip prefix-list ping seq 5 permit 62.210.0.0/16
route-map PING permit 10
 match ip address prefix-list ping
 set as-path prepend 2222 2222 2222 2222 2222

И добавлял это в конфиг:

router bgp 2222
 bgp router-id 234.23.174.134
 network 192.168.45.0/23
 neighbor 78.11.128.61 remote-as 4444
 neighbor 78.11.128.61 route-map ping in
 neighbor 78.11.128.61 prefix-list local out
 neighbor 78.11.128.61 filter-list 100 out
 neighbor 234.23.174.133 remote-as 5555
 neighbor 234.23.174.133 prefix-list no-default-route in
 neighbor 234.23.174.133 prefix-list local out
 neighbor 234.23.174.133 filter-list 100 out

Но результата нет.
Также пробовал менять в роут мапе
set as-path prepend 2222 2222 2222 2222 2222
на
set as-path last-as 5
что тоже не помогло.


Если сеть 62.210/16 у тебя снаружи, используй Local Preference.

Если сеть 62.210/16 у тебя внутри (а так тоже можно понять «Основной маршрут в .. идёт через ..»), то полиси надо поставить на out.

frob ★★★★★
()
Ответ на: комментарий от frob

Сеть 62.210/16 получается снаружи и мы получаем от своих пиров фуллвью.

Сделал вот так:
ip prefix-list ping permit 62.210.0.0/16
Route-map PING permit 10
match ip address prefix-list ping
Set local-preference 200

neighbor 78.11.128.61 route-map PING in

Правило заработало, но оно фильтрует все остальные префиксы, т.е. если посмотреть sh ip bgp, то от этого пира будет префикс 62.210.0.0/16 c localpref 200 и все. Маршруты в остальные сети через этого провайдера исчезают. Как это побороть?

fasv
() автор топика
Ответ на: комментарий от fasv

Ну, я бы предположил, что надо добавить что-нибудь вроде
route-map PING permit 20
match any
set local-preference 100

Как конкретно выглядит match any на квагге — без понятия. Может можно match вовсе пропустить, чтоб было match any.

Ясность с тем, почему as-path не подходит в этом случае и в каком случае подходит появилась? ;)

frob ★★★★★
()
Последнее исправление: frob (всего исправлений: 1)
Ответ на: комментарий от frob

Да все оказывается работает. Спасибо за это frob.
В общем опираясь на ваше сообщение сделал вот так:

ip prefix-list ping seq 5 permit 62.210.0.0/16
route-map PING permit 10
match ip address prefix-list ping
set local-preference 300
route-map PING permit 20
Повесил данное правило на пира и все заработало.
В таком виде можно вместо set local-preference прописать:
set as-path prepend 2222 2222 2222 ....
либо:
set as-path prepend last-as

Все эти варианты позволяют регулировать исходящие маршруты. Остался только вопрос как правильнее будет это делать - с помощью local preference либо же препендами?

fasv
() автор топика
Ответ на: комментарий от fasv

Как правильно — зависит от того чего надо достичь.

В случае с регулированием исходящих маршрутов, у тебя обычно есть некоторая определённость и уверенность: «хочу, чтоб трафик в сеть Х шёл всегда через левую руку и только если её оторвут, то тогда через правую» или «хочу, чтоб шло как угодно, но не через Ж, а через Ж — только если других вариантов не осталось».
В такой ситуации ты назначаешь более высокий (или наоборот низкий) LocalPreference на нужных пиров и всё.
Если анонсы пришли, то ты их пометил и используешь. А что именно было в этих анонсах (помимо нужной сети) тебе уже не важно.

Если же ты используешь для исходящих маршрутов AS Path prepend, то твоя конструкция начинает зависеть от того, что прилетело в анонсах. Было от одной стороны три AS-ки от другой две. Ты хотел, чтобы ходило через три, поэтому добавил к двум добавил пять. А пиры что-то у себя подкрутили и стало десять и четыре. И твой препенд в 5 AS-ок больше не работает.
Если интересующая сеть где-то далеко, то такая фигня может происходить постоянно.

С другой стороны, если тебе надо чтобы к тебе ходили определённым образом, то выстрелить наружу с препендами — хороший вариант. Он не гарантирует, что трафик придёт именно так как хочется, но сдвигает баланс в пользу нужного исхода.

А то, что сначала не заработало с AS Path для исходящих... возможно надо было передёрнуть процесс, чтобы BGP всё пересчитал.
Не знаю есть ли на квагге soft reset, на циске было бы clear ip bgp <remote-as> in.

frob ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.