Pull to refresh

5 решений для оптимизации BGP на границе сети. Timers

Сейчас сложно представить себе мало-мальски серьезную сеть, в которой не использовался бы протокол BGP. И чаще всего используется он на стыке с другими операторами и солидными клиентами, а потому надеюсь статья будет полезна даже тем, кто ни разу не слышал про RR и не думал, включать next-hop-self или нет. Сразу оговорюсь, все примеры я буду приводить использую маршрутизаторы Cisco. Под оптимизацией я подразумеваю в первую очередь уменьшение времени простоя сети в случае аварии и сходимости после ее устранения. И, да, часть методов требует настройки спикера на другом конце кабеля.

Итак, 5 способов оптимизировать поведения протокола BGP на границе сети при помощи таймеров:

Наименее популярный способ увеличения производительности протокола BGP — изменения значений таймеров, а потому и наименее освещенный. Предполагается что квалифицированные разработчики IEEE заложили значения влияющих на поведение протокола констант по-умолчанию оптимальными. Все же иногда реальность вынуждает их изменить. Вот что мы можем сделать:

1. Keepalive и Holdtime


Эти таймеры отвечают за поддержание сессии, если спикер в течении периода Holdtime не получит от соседа посылаемое через Keepalive интервал сообщение, то он помечает его недоступным и маршруты — недействительными. Согласно RFC4271 значения этих таймеров рекомендуется выставить соответственно 30 и 90 (keepalive * 3) секунд. На маршрутизаторах Cisco эти значения по умолчанию равны 60 и 180 секундам.

Во время установления BGP сессии спикеры обмениваются значениями Holdtime и для работы выбирается наименьший, следовательно если мы таки решили их подкрутить, то согласие удаленной стороны нам не требуется. Итак, выставим значения Keepalive и Holdtime согласно RFC.

Router(config-router)#timers bgp 30 <keepalive:0-65535> 90 <HoldTime:0-65535> 90 <min_HoldTime:0-65535>
Router(config-router)#neighbor x.x.x.x timers 30 <keepalive:0-65535> 90 <HoldTime:0-65535> 90 <min_HoldTime:0-65535>


Параметр min_HoldTime позволяет указать минимальное значение HoldTime, которое будет принято для установление сессии. Т.е. если администратор на другом конце в отчаянии выставит HoldTime равным 30 секундам, то мы такую сессию попросту не примем. После изменения таймеров BGP нужно передернуть.

2. Advertisement Interval


Отвечает за скорость обмена префиксами (advertisement и withdrawal), по умолчанию равен 30 секундам в случае ebgp. Чаще всего его использование разумно совместно с conditional advertisement, да и вообще на всех нестабильных multihomed площадках.

Router(config-router)#neighbor x.x.x.x advertisement-interval <0-600>

3. Initial delay


Этот параметр определяет время между установлением BGP сессии между спикерами и началом обмена префиксами. Использование init delay таймера улучшает сходимость, так как удаленный маршрутизатор использует это время с пользой. А именно определяет свои лучшие маршруты, дабы потом быстро принять верное решение. По-умолчанию равно 120 секундам,
но если мы уверены в том, что лучшие маршруты уже в RIB, да и вообще их немного, то можем обменяться ими раньше и наоборот.

Router(config-router)#bgp update-delay <1-3600>

4. BGP scanner


Контролирует поведение Background BGP scanner. Который в свою очередь сканирует, сортирует и чистит IP и BGP RIB, поддерживая таким образом работу всего протокола. Как известно BGP использует только маршруты с доступным next-hop и в случае его исчезновения из IP RIB удаляет и префикс. Этой проверкой и занимается background scanner, пробегающий все маршруты раз в 60 секунд для IPv4 и раз в 15 для VPNv4. Если за спиной у спикера нестабильно работающий IGP, то в эти интервалы возможны временные петли и черные дыры. В обмен на загрузку маршрутизатора мы можем изменить частоту сканирования (отдельно для каждый address-family):

Router(config-router)#bgp scan-time <5-60>

5.Connect Retry timer


Этот таймер определяет время, по прошествии которого протокол проверяет установлена ли TCP сессия между спикерами. Если нет, то пробует ее установить. Этот процесс никак не связан с реакцией на входящее соединение. На маршрутизаторах Cisco значение этого таймера равно 120 секундам и в настоящий момент изменить его нельзя. Так как считается что это может помешать корректной установке TCP сессии. Тем не менее на Juniper его поменять можно.

Далее — 5 способов оптимизировать BGP на границе сети при помощи сторонних протоколов.

— Используемая литература:
RFC4271 — A Border Gateway Protocol 4 (BGP-4)
Border Gateway Protocol (BGP) — Cisco.com
Configuring BGP Routing — Juniper
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.