Jump to content
Калькуляторы

quagga анонсирует не все маршруты

Заранее приношу извинения за длинное описание - но коротко не получится.

 

Имеем:

Linux 2.6.29-gentoo-r5

quagga 0.99.18

 

На квагге настроено два bgp view, которые формируют таблицы маршрутов (каждый view - свою таблицу) и отдают эти таблицы (по протоколу bgp) на соответствующие маршрутизаторы (каждый view - на свой маршрутизатор). В качестве маршрутизаторов выступают Extreme Networks Summit X450a с версией XOS 12.5.4.5.

 

Для определенности будем называть эти маршрутизаторы "основной" и "удаленный". Соответственно, bgp view будем называть "RS основной" и "RS удаленный".

 

"RS удаленный" получает анонсы от трех соседей (2000+, 2000+ и 500+ маршрутов), и итоговую таблицу маршрутов отдает своему маршрутизатору и "RS основному". В этой связке все работает.

 

"RS основной" получает анонсы от "RS удаленного" и еще от 6 соседей (5500+ от одного из них, от остальных - по 1-2 маршрута). Все маршруты принимаются корректно. В таблице маршрутов я вижу все принятые анонсы от всех соседей.

 

Далее результирующая таблица маршрутов отдается на свой маршрутизатор. И вот тут возникает ситуация, которую я не могу понять. На маршрутизатор не анонсируются маршруты, которые были получены от "RS удаленного"! Вообще не анонсируются.

 

Т.е. получается следующее:

 

Допустим, для сети a.a.a.a/a есть два маршрута, один из них получен от соседа с 5500+ маршрутов, другой - от "RS удаленого". Если лучшим является маршрут от соседа 5500+ - он анонсируется на маршрутизатор. Если лучшим является маршрут от "RS удаленного" - эта сеть вообще не анонсируется.

 

Я понимаю, что где-то что-то недоконфигурил. Вот только пока не могу сообразить, где.

 

Вот кусок конфига квагги, где описывается сосед - собственный маршрутизатор:

 

router bgp NNNNN view XXX
bgp router-id A.A.A.A
network B.B.B.B/B
network C.C.C.C/C
neighbor 192.168.101.2 remote-as NNNNN
neighbor 192.168.101.2 description "SSSSSSSSSS"
neighbor 192.168.101.2 update-source 192.168.101.20
neighbor 192.168.101.2 soft-reconfiguration inbound

 

Т.е. никаких фильтров нет - должны отдаваться все анонсы.

 

Вот кусок конфига X450a:

 

configure bgp AS-number NNNNN
configure bgp routerid 192.168.101.2
create bgp neighbor 192.168.101.20 remote-AS-number NNNNN
configure bgp neighbor 192.168.101.20 source-interface ipaddress 192.168.101.2
configure bgp neighbor 192.168.101.20 description "quagga Routing Server"
enable bgp neighbor 192.168.101.20
configure bgp neighbor 192.168.101.20 route-policy in bgp_in
enable bgp

 

Тут есть фильтр - вот он:

 

Policy: bgp_in
entry row00 {
if match any {
nlri 0.0.0.0/8 ;
nlri 10.0.0.0/8 ;
nlri 127.0.0.0/8 ;
nlri 169.254.0.0/16 ;
nlri 172.16.0.0/12 ;
nlri 192.0.0.0/24 ;
nlri 192.0.2.0/24 ;
nlri 192.88.99.0/24 ;
nlri 192.168.0.0/16 ;
nlri 198.18.0.0/15 ;
nlri 198.51.100.0/24 ;
nlri 203.0.113.0/24 ;
nlri 240.0.0.0/4 ;
}
then {
deny  ;
}
}
entry row10 {
if match any {
nlri B.B.B.B/B ;
nlri C.C.C.C/C ;
}
then {
deny  ;
}
}
entry row99 {
if match any {
}
then {
permit  ;
}
}

 

row00 запрещает принимать анонсы немаршрутизируемых сетей, row10 запрещает принимать анонсы моих собственных сетей. Других запретов нет.

 

Тем не менее, часть маршрутов не анонсируется.

 

Подскажите, пожалуйста, хотя бы в какую сторону смотреть.

Share this post


Link to post
Share on other sites

 

row00 запрещает принимать анонсы немаршрутизируемых сетей, row10 запрещает принимать анонсы моих собственных сетей. Других запретов нет.

 

Тем не менее, часть маршрутов не анонсируется.

 

Подскажите, пожалуйста, хотя бы в какую сторону смотреть.

 

1) нарисуйте графическую схему.

2) почитайте про route-reflector

Share this post


Link to post
Share on other sites

1) нарисуйте графическую схему.

Попытался (см. вложение).

 

Все объекты (RS основной, RS удаленный, X450a основной, X450a удаленный) имеют одинаковый номер AS.

 

Анонсы маршрута a.a.a.a/a приходят на "RS основной" от одного из соседей и от "RS удаленный" Я их "вижу" в таблице маршрутов на "RS основной":

 

  Network      	Next Hop        	Metric LocPrf Weight Path
* ia.a.a.a/a    	ppp.pp.p.pp             	       	0 jjjjj kkkkk i
*>              	qq.qqq.qqq.qqq                 		0 jjjjj kkkkk i

 

Маршрут с nexthop равным ppp.pp.p.pp пришел от "RS удаленный" (соответственно, его статус помечен как "i" - internal), маршрут с nexthop равным qq.qqq.qqq.qqq пришел от соседа. В вышеприведенном фрагменте кода "лучшим" выбран маршрут с nexthop равным qq.qqq.qqq.qqq, и анонс этого маршрута нормально уходит на "X450a основной"

 

Если же возникает ситуация, как на нижеприведенном фрагменте кода:

 

  Network      	Next Hop        	Metric LocPrf Weight Path
*>ia.a.a.a/a    	ppp.pp.p.pp             	       	0 jjjjj kkkkk i
*           		qq.qqq.qqq.qqq                 		0 jjjjj kkkkk i

 

т.е. "лучшим" считается маршрут с nexthop равным ppp.pp.p.pp - такой маршрут не анонсируется на "X450a основной".

 

Получается, маршруты со статусом "internal" (полученные от маршрутизатора с таким же AS) не анонсируются на другой маршрутизатор с таким же AS.

 

2) почитайте про route-reflector

Да, это ответ на мой вопрос.

 

В настройках "RS основной" нужно пир "X450a основной" описать как route-reflector-client. Тогда на него будут анонсироваться все маршруты, в том числе и со статусом "internal" (т.е. полученные от пира в той же AS).

 

Cпасибо за ответ - тему можно закрывать.

bgp.jpg

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this