Назад | Перейти на главную страницу

Quagga продолжает объявлять маршруты

Я настроил BGP на двух маршрутизаторах с помощью qugga. Когда я отключаю интерфейс, содержащий блок IP, который я рекламирую, zerba удаляет маршрут из своей таблицы, но bgpd продолжает его рекламировать. Я вижу, что он все еще рекламируется через соседние таблицы BGP, а также show ip bgp nei 172.16.14.1 ad команда от маршрутизатора, который делает рекламу. Этот интерфейс содержит полный маршрут, который объявляется, поэтому агрегация отсутствует.

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

Обновить:
Итак, в маршрутизаторе у меня есть следующая таблица BGP.

so-rt1# show ip bgp
BGP table version is 0, local router ID is 172.16.14.1
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
*> 0.0.0.0          12.12.12.12                   200      0 5555 i
*  15.15.15.0/24    172.16.14.2              0    100      0 i
*>                  0.0.0.0                  0         32768 i

Total number of prefixes 2

Для сети 15.15.15.0/24, о которой я объявляю, маршрут прямого подключения (последняя запись) является предпочтительным. Если я отключу интерфейс, содержащий 15.15.15.0/24, не только напрямую подключенный маршрут не будет удален из таблицы BGP, но и будет предпочтительным маршрутом. Таким образом, после выключения этого интерфейса таблица BGP остается неизменной.

Zebra знает, что прямого маршрута 15.15.15.0/24 больше нет. Я вижу это с show ip route пока интерфейс активен, и запись пропала, когда я его выключил. Итак, проблема, я думаю, в том, что таблица BGP почему-то не получает обновлений, которые, как я полагаю, должны от zebra.

Если я правильно понял вопрос, у вас есть IGP (или локальный) маршрут к сети, и вы объявляете его через BGP. Когда маршрут исчезает в IGP (или локальном), вы хотите, чтобы BGP вытягивал маршрут.

Если это так, вы делаете что-то неправильно (TM), и Quagga не позволит вам легко это сделать. Из мануала по сетевой команде:

BGP: network A.B.C.D/M

    This command adds the announcement network.             

    router bgp 1
     network 10.0.0.0/8

    This configuration example says that network 10.0.0.0/8 will be announced 
    to all neighbors. Some vendors' routers don't advertise routes if they 
    aren't present in their IGP routing tables; bgp doesn't care about IGP 
    routes when announcing its routes. 

Это происходит из-за того, что вы легко можете получить более частые колебания, если экспортируете информацию IGP в BGP. У нас уже достаточно маршрутов в Интернете, и перераспределение маршрутной информации из IGP в BGP считается плохой практикой. BGP не является IGP, и не злоупотребляйте им как таковым;)

Кроме того, я не вижу хороших случаев для извлечения маршрута из Интернета (это вызовет колебание, и вы рискуете затухать в течение нескольких часов или дней), если только вы не попадете в ситуацию с разделенной AS, если этот конкретный маршрут отсутствует и хотите защитить себя от странных проблем с маршрутизацией, которые это может вызвать. (В этом случае вам следует подумать, хотите ли вы, чтобы маршрутизатор вообще оставался в сети. Ситуация с Split-AS неприятна!)

Правильное решение (TM) - оставить маршрут как можно более стабильным, независимо от того, что делает ваш IGP. Если вы потеряете соединение с сетью, просто отключите трафик локально. Убедитесь, что вы не возвращаете его к провайдеру транзита, если IGP-маршрут к сети не работает.

Основное правило: «никогда не меняйте объявления BGP, если об этом не должен знать весь Интернет». То, что ваш IGP колеблется, не волнует остальную часть Интернета.

Редактировать:

Насколько я понимаю, ваша сеть выглядит так:

Provider (AS 5555) --------------------- Provider (AS 5555)
 (12.12.12.12)                                   |
     | eBGP                                      |eBGP
     |                                           |
  Router1---------15.15.15.0/24---------------Router2
172.16.14.1                                 172.16.14.2
     |                  iBGP                     |
      --------------------------------------------

И ваша проблема в том, что если вы отключите интерфейс на Router1 до 15.15.15.0/24, вы хотите, чтобы он перестал сообщать о сети, поэтому вы переместите данные на 172.16.14.2. Этот тип автоматических изменений в вашей политике пиринга не является тем, что вы обычно делаете, и, насколько мне известно, не поддерживается Quagga. Вместо этого ожидается, что вы перенаправите данные через IGP и сохраните статичность ваших пирингов. Если бы вы внесли изменения в свои пиринги, вы бы изменили MED (MULTI_EXIT_DISC), чтобы направить трафик на правильный маршрутизатор.

Обратите внимание, что если отключение 15.15.15.0/24 разбивает вашу AS, у вас появляются дополнительные режимы отказа, ни один из них не годится.