Я настроил 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, у вас появляются дополнительные режимы отказа, ни один из них не годится.