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

Quagga bgp - не анонсируется AS клиента Подземные стуки

Итак, есть бордер 2FV и почти такой же бордер на ua-ix. Квагга 0.99.17. Есть клиентская AS с PI/24 которую надо анонсить. Есть роутер в который воткнут клиент, пирится по iBGP с обеими бордюрами. Пиринг с клиентом поднят, через IX бордер клиент анонсится, через мировой - нет. Конфиги почти идентичны, конфиг проблемного бордера:

 

hostname gw-world
log stdout
!
router bgp 44686
bgp router-id a.b.c.d
network 91.x.x.0/23
network 91.x.x.0/23
network 91.x.x.0/23
network 91.x.x.0/23
neighbor local peer-group
neighbor local remote-as 44686
neighbor local next-hop-self
neighbor local prefix-list local_out out
neighbor local route-map local_in in
neighbor local route-map local_out out
neighbor 77.88.x.x remote-as 21011
neighbor 77.88.x.x route-map TOPNET-out out
neighbor 80.91.x.x remote-as 21219
neighbor 80.91.x.x route-map DATAGROUP-out out
neighbor 192.168.x.x peer-group local
neighbor 192.168.x.y peer-group local
!
ip prefix-list local_out seq 50 permit any
ip prefix-list our_as seq 1 permit 91.x.x.0/22
ip prefix-list our_as seq 2 permit 91.x.x.0/22
ip prefix-list our_as seq 3 permit 91.x.x.0/23
ip prefix-list our_as seq 4 permit 91.x.x.0/23
ip prefix-list our_as seq 5 permit 91.x.x.0/23
ip prefix-list our_as seq 6 permit 91.x.x.0/23
ip prefix-list client seq 1 permit 91.y.y.0/24
!
ip as-path access-list our_as permit ^$
ip as-path access-list client permit ^(xxxxx_)*yyyyy(_yyyyy)*$
!
route-map TOPNET-out permit 10
match ip address prefix-list our_as
match as-path our_as
!
route-map TOPNET-out permit 20
match ip address prefix-list client
match as-path client
!
route-map TOPNET-in permit 10
!
route-map UARNET-out permit 10
!
route-map DATAGROUP_in permit 10
!
route-map DATAGROUP-out permit 10
match ip address prefix-list our_as
match as-path our_as
!
route-map DATAGROUP-out permit 20
match ip address prefix-list client
match as-path client
!
route-map local_in permit 10
match ip address prefix-list client
match as-path client
set local-preference 1
!
route-map local_out permit 10
set local-preference 1
!
line vty

 

route-map написан верно:

 

gw-world# sh ip bgp route-map DATAGROUP-out
BGP table version is 0, local router ID is a.b.c.d
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
             r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete

  Network          Next Hop            Metric LocPrf Weight Path
*> 91.x.x.0/23      0.0.0.0                  0         32768 i
*> 91.x.x.0/23      0.0.0.0                  0         32768 i
* i91.y.y.0/24      91.x.x.41                0      1      0 yyyyy i
*> 91.x.x.0/23      0.0.0.0                  0         32768 i
*> 91.x.x.0/23      0.0.0.0                  0         32768 i

Total number of prefixes 5

 

То, что анонсится бордерами:

gw-world# sh ip bgp neigh 80.91.x.x advertised-routes 
BGP table version is 0, local router ID is a.b.c.d
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
             r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete

  Network          Next Hop            Metric LocPrf Weight Path
*> 91.x.x.0/23      80.91.x.x                0         32768 i
*> 91.x.x.0/23      80.91.x.x                0         32768 i
*> 91.x.x.0/23      80.91.x.x                0         32768 i
*> 91.x.x.0/23      80.91.x.x                0         32768 i

 

При clear x.x.x.x - один раз как-то появился ненадолго анонс в advertised-routes, потом при следующей проверке - исчез о_0

Рестарт bgpd ничего не дал.

 

Вопрос: в чем причина такого интересного поведения? И что отображается в advertised-routes / может ли на них влиять второй пир?

 

P.S. второй аплинк прислал что обновил фильтры, сделал clean сессии с ним - и анонс появился на оба аплинка... Загадка, магия полосатой лошадки...

Share this post


Link to post
Share on other sites

route-reflector client ?

 

ebgp анонсы от ibgp пира к ibgp пиру по дефолту не анонсируются.

 

Это если я правильно понял Вашу схему.

Share this post


Link to post
Share on other sites

h1vs2

нет, у него судя по всему (world)e-i-e(customer), что совершенно нормально(да других вариантов особо и нет, только RR, что в данном конкретном случае тоже самое дало бы).

 

 

Надо было запускать debug и смотреть что к чему

Share this post


Link to post
Share on other sites

маршрут с gw-world до клиента есть прямой? точнее связь до него есть?

 

я к тому, что некстхоп полученый по ibgp может быть и не достижим с gw-world, а если это так - он не проанонсит.

Share this post


Link to post
Share on other sites

маршрут с gw-world до клиента есть прямой? точнее связь до него есть?

Есть, внутри по оспф подсети анонсятся. Опять же, со 2-го бордюра все ок. Сейчас и на этом бордюре анонс появился. Вопрос в том - не исчезнет ли снова :)

Share this post


Link to post
Share on other sites

Есть, внутри по оспф подсети анонсятся. Опять же, со 2-го бордюра все ок. Сейчас и на этом бордюре анонс появился. Вопрос в том - не исчезнет ли снова :)

 

 

А в БГП таблице префикс клиента нормально выглядит?

Вообще это странно, может какой-то рассинхрон, но вряд ли, обычно квагга такие сценарии нормально отрабатывает.

Share this post


Link to post
Share on other sites

А в БГП таблице префикс клиента нормально выглядит?

Да вроде как да. Опять же - при просмотре route-map маршрут на клиента есть, при просмотре экспортируемых маршрутов - не было. Потом появился волшебным образом. Без каких-либо изменений конфигов с моей стороны.

На втором бордере - все нормально, взлетело с полпинка...

Share this post


Link to post
Share on other sites

Да вроде как да. Опять же - при просмотре route-map маршрут на клиента есть, при просмотре экспортируемых маршрутов - не было. Потом появился волшебным образом. Без каких-либо изменений конфигов с моей стороны.

 

 

Ну роут мап показывает по-сути лишь префиксы удовлетворяющие условиям. Экспорт префиксов это уже другое. Возможно маршрут на стыковочник клиента отсутствовал или выучен был как-либо не правильно (например извне).

Share this post


Link to post
Share on other sites

Ладно, посмотрим что будет дальше...

К слову, квагга этой версии при большом кол-ве маршрутов начинает подлагивать спустя время - проц не жрет, а в консоли какие-то залипоны на несколько секунд.

 

Вообще - в планах постепенный уход на птичку, но то в перспективе.

Share this post


Link to post
Share on other sites

NiTr0,

У меня птица как RR в iBGP работает - отлично, нравится.

Но по ощущениям именно для маршрутизации Quagga как-то лучше с Linux взаимодействует. Птицой к тому же гораздо проще выстрелить себе в ногу там, где Quagga тупо не позволит такого сделать.

Share this post


Link to post
Share on other sites

Ну да, птица - она более конфигурабельна и, соответственно, более внимательно ее надо конфигурить. Заапдейчу дистр на бордюрах - и буду птичку мучить. Пока она на одном брасе крутится - ведет себя стабильно и предсказуемо, особенно как ей починили флуд в лог о пропадании оспф маршрута.

Share this post


Link to post
Share on other sites

Я бы сказал что грабли именно в наборе аплинков(топнет+дата), и без высшего соизволения и ручной правки фильтров они изученные друг другом префиксы не принимают.

Именно поэтому при clear одного префиксы временно появились, и потому же все заработало после правки фильтров.

Share this post


Link to post
Share on other sites

тут же вопрос не в том, что кто-то чего-то принимает, а в том, что quagga не анонсирует без видимой причины

Share this post


Link to post
Share on other sites

Не факт, sh advertised-routes говорит о наборе уже согласованных маршрутов, а не о том что анонсируется нами.

Share this post


Link to post
Share on other sites

kayot

Это что-то новенькое. Что такое согласованный маршрут в bgp?

Share this post


Link to post
Share on other sites

s.lobanov

Анонсированный мной и принятый пиром, не?

Share this post


Link to post
Share on other sites

s.lobanov

Анонсированный мной и принятый пиром, не?

 

bgp так не умеет. просто нет такого в протоколе (оповещать соседа о том, что его префикс принят или не принят)

 

Квагга умеет магию? Циска, например, не умеет магии.

 

Технически неграмотное предположение товарища kayot навело меня на мысль, что возможно у NiTr0 работает orf/5292 и он принял prefix-list inbound от соседа и зафильтровал сам себя на своём outbound'е. Дебаг бы это показал

 

NiTr0

orf capability согласовался с соседом?

Share this post


Link to post
Share on other sites

может оно в дефолтном конфигах в новых кваггах (я немножко отстал в плане версий квагги). надо смотреть show ip bgp neigh

Share this post


Link to post
Share on other sites

По ходу таки orf работало:

 

BGP neighbor is 77.88.x.x, remote AS xxxxx, local AS xxxxx, external link
 BGP version 4, remote router ID 88.81.x.x
 BGP state = Established, up for 19:07:28
 Last read 14:43:09, hold time is 90, keepalive interval is 30 seconds
 Neighbor capabilities:
   4 Byte AS: advertised and received
   Route refresh: advertised and received(old & new)
   Address family IPv4 Unicast: advertised and received
   Graceful Restart Capabilty: received
     Remote Restart timer is 120 seconds
     Address families by peer:
       none
 Graceful restart informations:
   End-of-RIB send: IPv4 Unicast
   End-of-RIB received: 
 Message statistics:
   Inq depth is 0
   Outq depth is 0
                        Sent       Rcvd
   Opens:                  2          2
   Notifications:          1          0
   Updates:                5     359447
   Keepalives:          2477       2573
   Route Refresh:          0          0
   Capability:             0          0
   Total:               2485     362022
 Minimum time between advertisement runs is 30 seconds

For address family: IPv4 Unicast
 Community attribute sent to this neighbor(both)
 Outbound path policy configured
 Route map for outgoing advertisements is *TOPNET-out
 499274 accepted prefixes

 Connections established 2; dropped 1
 Last reset 19:07:38, due to User reset
Local host: 77.88.x.x, Local port: 60540
Foreign host: 77.88.x.x, Foreign port: 179
Nexthop: 77.88.x.x
Nexthop global: fe80::216:31ff:fefb:8d53
Nexthop local: ::
BGP connection: non shared network
Read thread: on  Write thread: off

BGP neighbor is 80.91.x.x, remote AS 21219, local AS xxxxx, external link
 BGP version 4, remote router ID 80.91.x.x
 BGP state = Established, up for 20:50:47
 Last read 14:43:09, hold time is 90, keepalive interval is 30 seconds
 Neighbor capabilities:
   4 Byte AS: advertised and received
   Route refresh: advertised and received(old & new)
   Address family IPv4 Unicast: advertised and received
   Graceful Restart Capabilty: received
     Remote Restart timer is 120 seconds
     Address families by peer:
       none
 Graceful restart informations:
   End-of-RIB send: IPv4 Unicast
   End-of-RIB received: 
 Message statistics:
   Inq depth is 0
   Outq depth is 0
                        Sent       Rcvd
   Opens:                  1          1
   Notifications:          0          0
   Updates:                3     268104
   Keepalives:          2475       2624
   Route Refresh:          0          0
   Capability:             0          0
   Total:               2479     270729
 Minimum time between advertisement runs is 30 seconds

For address family: IPv4 Unicast
 Community attribute sent to this neighbor(both)
 Outbound path policy configured
 Route map for outgoing advertisements is *DATAGROUP-out
 496265 accepted prefixes

 Connections established 1; dropped 0
 Last reset never
Local host: 80.91.x.x, Local port: 49408
Foreign host: 80.91.x.x, Foreign port: 179
Nexthop: 80.91.x.x
Nexthop global: fe80::216:31ff:fefb:8d53
Nexthop local: ::
BGP connection: non shared network
Read thread: on  Write thread: off

 

Странно, что на датагруповском аплинке префикса не было тоже - их я дергал насчет переконфигурирования еще пару месяцев назад, топнет не дернул тогда (они сейчас вроде как одна контора же - оказалось, у них все сложно).

Share this post


Link to post
Share on other sites

Для не имущих квагги, подскажите кто-нить, а как оно отображается в sh ip bgp neigh и есть ли там типа цисковского

sh ip bgp neighbors x.x.x.x received prefix-filter

Share this post


Link to post
Share on other sites

Outbound path policy configured - мне что-то это навело на мысль об orf (после совещания с гуглом). Но sh ip bgp neighbors x.x.x.x received prefix-filter - пусто...

Загадка однако.

Share this post


Link to post
Share on other sites

Просто в квагге все не однозначно, там этими свойствами управлять кажется вообще нельзя. У циски в выводе sh ip bgp neigh сразу видно есть ли ORF, а тут ...

Но recieved prefix-filter должен был бы показать все, если бы оно было. Но я в версию ORF мало верю, такое обычно согласовывается с алпинком заранее, да и многим isp вообще побоку эти штуки.

Share this post


Link to post
Share on other sites

Поставил кваггу таки на интерес :)

 

# sh ip bgp neighbors
BGP neighbor is x.x.x.x, remote AS xxxxx, local AS xxxxx, internal link
 BGP version 4, remote router ID x.x.x.x
 BGP state = Established, up for 00:00:26
 Last read 00:00:14, hold time is 180, keepalive interval is 60 seconds
 Neighbor capabilities:
   4 Byte AS: advertised and received
   Route refresh: advertised and received(old & new)
   Address family IPv4 Unicast: advertised and received
 Message statistics:
   Inq depth is 0
   Outq depth is 0
                        Sent       Rcvd
   Opens:                  3          2
   Notifications:          0          0
   Updates:                0       1757
   Keepalives:          1001        969
   Route Refresh:          0          1
   Capability:             0          0
   Total:               1004       2729
 Minimum time between advertisement runs is 5 seconds

* For address family: IPv4 Unicast
*  AF-dependant capabilities:
*    Outbound Route Filter (ORF) type (128) Prefix-list:
*      Send-mode: received
 Community attribute sent to this neighbor(both)
 1965 accepted prefixes

 Connections established 3; dropped 2
 Last reset 00:00:29, due to Peer closed the session
Local host: x.x.x.x, Local port: 28013
Foreign host: x.x.x.x, Foreign port: 179
Nexthop: x.x.x.x
Nexthop global: fe80:::::
Nexthop local: ::
BGP connection: non shared network
Read thread: on  Write thread: off

 

Так что ок, это должно быть видно и по-умолчанию квагга все это принимает. Правда received prefix-list все равно пусто.

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