1. Вводная часть
Аналогично LSDB у OSPF, Topology database у EIGRP, у BGP имеются собственные базы маршрутной информации (далее – RIB [Routing information base]).
BGP имеет аж 3 RIB содержащие следующую информацию:
- Adj-RIB-In – база с нетронутым набором NLRI полученный от соседей, до применения к ним входящих политик;
- Loc-RIB – база с актуальным набором NLRI, полученная из Adj-RIB-In обработанной входящими политиками;
- Adj-RIB-Out – база, которую маршрутизатор посылает соседям. Создаётся из Loc-RIB обработанной исходящими политиками;
Общая последовательность использования баз и их взаимодействие с системой представлены на рисунке ниже (кликабельно):

2. Политики
Согласно схеме, входящие политики применяют на базу Adj-RIB-In, однако согласно этапу 2 база Ajd-RIB-In очищается по факту успешной обработки политик и перемещения результата в Loc-RIB. Таким образом, в случае обновления политик имеется необходимость получить всю информацию вновь, обеспечив выполнение этапов 1-3.
3. Hard reset
Базовый метод позволяющий выполнить повторный запрос информации у соседа называется Hard reset и обеспечивается полным сбросом соединения с соседом.
Для маршрутизаторов на базе ОС Cisco IOS данная операция выполняется следующей командой:
|
1
|
clear ip bgp [neighbor–address]
|
Для маршрутизаторов на базе ОС Juniper Junos OS данная операция выполняется следующей командой:
|
1
|
clear bgp neighbor [neighbor–address]
|
4. Route Refresh
RFC2918 описывает метод, позволяющий избежать полной реинициализации сессии с соседом, путём отправки в специального типа сообщения – ROUTE REFRESH. Сообщение запрашивает у соседа отправку всей информации. Во время процедуры, включающей: запрос REFRESH, получение информации, применение политик, обновление Loc-Rib – прерывания в маршрутизации не происходит.
Для возможности использования специального метода оба соседа должны поддерживать данную возможность (“Capability: REFRESH” в сообщениях отладки).
Для маршрутизаторов на базе ОС Cisco IOS данная операция выполняется вручную следующей командой:
|
1
|
clear ip bgp [neighbor–address] soft [in|out]
|
Необходимость именно ручного запуска связана с отсутствием у ОС знания в какой момент проводить обновления, ведь не известно завершены ли работы по созданию/изменению политик, преждевременная обработка которых может привести к некорректным таблицам маршрутизации.
Для маршрутизаторов на ОС поддерживающих функцию подтверждения о завершении выполнения конфигурирования (commit), например Juniper Junos OS или Cisco IOS-XR, данная операция выполняется автоматически по факту завершения конфигурирования. Разумеется, имеется возможность ручного запуска процесса, например для OC Juniper Junos OS можно использовать следующую команду:
|
1
|
clear bgp neighbor [neighbor–address|as] [soft|soft–inbound|soft–minimum–igp]
|
5. Soft Reconfiguration
Более того, имеется возможность обновления политик без необходимости повторного получения всей информации. Данный функционал называется Soft reconfiguration и заключается в локальном хранении базы Adj-RIB-In, т.е. в любой момент времени, локальная база Adj-RIB-In идентичная соседской базе Adj-RIB-Out. Таким образом, отсутствует необходимость на получение информации с целью применения политик и для данных нужд используется локальная база.
Метод, в течение всей работы, использует дополнительную оперативную память по сравнению с использованию оперативной памяти методом Route Refresh, только по факту получения информации.
Soft reconfiguration и Route refresh являются взаимоисключающими и единовременно может использовать только один из методов.
Для операционной системы Cisco IOS настройка происходит для каждого соседа индивидуально:
|
1
2
3
4
|
!
router bgp [AS–Num]
neighbor 1.1.1.1 soft–reconfiguration inbound
!
|
Несмотря на то, что используется ключевое слово “inbound“, варианта “outbound” не существует, так как сосед на другой стороне ничего не знает о использовании Soft reconfiguration у соседа.
Так же имеется возможность настроить использование Soft reconfuguration как fallback-механизма, т.е. только в случае отсутствия поддержки типа Route Refresh на соседском маршрутизаторе.
|
1
2
3
4
|
!
router bgp [AS–Num]
bgp soft–reconfig–backup
!
|
Для маршрутизаторов на базе Cisco IOS метод не исключает необходимость ручного запуска переработки Adj-RIB-In и выполняется вручную следующей командой:
|
1
|
clear ip bgp [neighbor–address] soft [in|out]
|
Для маршрутизаторов на ОС поддерживающих функцию подтверждения о завершении выполнения конфигурирования (commit), например Juniper Junos OS или Cisco IOS-XR, данная операция выполняется автоматически по факту завершения конфигурирования.
Для оборудования на базе ОС Juniper Junos OS функция soft reconfiguration включена(!) по умолчанию, однако хранятся все маршруты кроме тех, в AS_PATH которых содержится номер нашей AS (loop). Имеется возможность управления данным поведением с помощью следующих команд:
|
1
2
3
4
|
# для всех соседей в группе
set protocols bgp group [Group] keep [all|none]
# для отдельного соседа
set protocols bgp group [Group] neighbor [neighbor–address] keep [all|none]
|
, ключевое слово all обозначает “хранить локально всю BGP-информацию, включая содержащую номер нашей AS в атрибуте AS_PATH”, ключевое слово none отключает локальное хранение в Adj-RIB-In. Поведение по умолчанию можно обеспечить удалением слова keep.
6. Источники
BGP в Cisco [RU]
Книга BGP Design and Implementation
Junos ® OS BGP Configuration Guide




Comments
So empty here ... leave a comment!