Быстрая сходимость OSPF. Таймеры протокола OSPF

Каждый из вас не раз сталкивался с различными протоколами динамической маршрутизации BGP , OSPF ,IS-IS, RIPи другие. Как вы знаете все они делятся на две большие группы протоколы внешней маршрутизации EGP (Exterior Gateway Protocol) и протоколы предназначенные для внутренней маршрутизации IGP (Interior Gateway Protocol). Основной задачей протоколов маршрутизации является автоматический поиск лучшего маршрута, на основе определенных атрибутов, для передачи трафика по нашей сети. Например: Строим отказоустойчивую сеть, основным условием является создание резервных каналов связи. Протоколы динамической маршрутизации, в данном случае, помогают нам эффективно использовать резервные каналы связи, избегая петель маршрутизации.

Давайте рассмотрим пример, который покажет преимущества динамической маршрутизации над статической: произошел обрыв канала связи.


Если мы используем статическую маршрутизацию:

1) Происходит обрыва канала связи;
2) Маршрутизатор теряет основной маршрут – не знает куда отправлять трафик;
3) Администратор вручную прописывает новый маршрут;
4) Восстановление передачи трафика.

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

Если мы используем динамическую маршрутизацию:

1) Происходит обрыв канала;
2) Маршрутизатор автоматически начинает поиск нового маршрута для передачи трафика;
3) Восстановление передачи трафика.

Если сравнивать время реакции на обрыв канала и восстановления работы сети после произошедшего сбоя, то явный перевес будет на стороне протоколов динамической маршрутизации. Например, протокол OSPF при использовании стандартных параметров, дает время сходимости до 1 минуты(в зависимости от размеров нашей сети). Если же используется статическая маршрутизация, то время может в десятки раз увеличится, в особенности если при обрыве канала пропадет доступ на нужный нам маршрутизатор. Основные минусы использования резервных статических маршрутов описаны выше.

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

Для начала введем понятие сходимости сети. Сходимость сети — это процесс восстановления/ синхронизации таблиц маршрутизации между маршрутизаторами после изменения топологии сети, для передачи трафика. Сеть сходится означает, что происходит расчет /поиск альтернативного маршрута, за «некоторый» промежуток времени. «Некоторый» промежуток времени определяется максимальным временем, необходимым для восстановления сети.

У многих может возникнуть вопрос: Зачем вообще необходимо уменьшать время сходимости, ведь OSPF сходится менее чем за минуту в небольших сетях?
Но поверьте, в большинстве случаев даже за такой незначительный период времени может возникнуть множество проблем связанных с предоставлением сервиса, а также может обернуться в потерю нескольких миллион.

Прежде чем рассматривать параметры, которыми мы сможем уменьшить время сходимости, рассмотрим формулу, показывающую нам, от каких именно параметров зависит быстрая сходимость протокола.

Convergence = Failure_Detection_Time + Event_Propagation_Time + SPF_Run_Time + RIB_FIB_Update_Time

1) Failure_Detection_Time — Время, необходимое для обнаружения проблем на физическом уровне. Например обрыв канала
2) Event_Propagation_Time — Время, необходимое для распространения LSA пакетов нашим соседям в сети
3) SPF_Run_Time — Время, необходимое для запуска расчета алгоритма SPF, после получения новых данных
4) RIB_FIB_Update_Time — Время, необходимое для обновления таблиц маршрутизации (RIB/FIB)

Перед тем как начать рассматривать каждый из параметров хотел бы предупредить, если мы хотим менять параметры для уменьшения времени сходимости протокола OSPF, необходимо данные изменения производить на всех маршрутизаторах в нашей области, иначе, OSPF соседство они не установят. Будьте аккуратны при внесении изменений в настройки протокола.

Поехали…

Failure_Detection_Time

Безусловно данный параметр является одним из самых важных. Раньше обнаружили, что сосед недоступен — раньше начали искать альтернативный маршрут. Определяется доступность соседей отправкой пакетов Hello. По умолчанию, в broadcast сетях, пакет отправляется каждые 10 секунд, каждым маршутизатором, каждым соседом. Если сосед не ответил на 4 подряд Hello пакета (40 секунд), сосед помечается как недоступный – начинается поиск альтернативного пути.

Hello-интервал, можно изменить следующей командой на интерфейсе маршрутизатора

Router(config-if)#ip ospf hello-interval <1-65535>

Dead-интервал, можно изменить следующей командой на интерфейсе маршрутизатора

Router(config-if)#ip ospf dead-interval <1-65535>

Также и эти временные интервалы мы можем уменьшить, для этого используются Fast Hello-пакеты

OSPF FAST hello-пакеты — это hello-пакеты, которые отправляются с интервалом меньше 1 секунды. Для этого необходимо установить dead-интервал равным 1 секунде (множитель равен 4 по умолчанию, тоесть в секунду будут отправлено 4 hello пакета).

Более частая отправка hello-пакетов позволяет увеличить скорость обнаружения соседей –> скорость сходимости сети.

Когда на интерфейсе настроена отправка hello-пакетов, с интервалом менее 1 секунды, то внутри hello-пакета, hello-интервал будет равен 0. Hello-интервал полученный в hello-пакетах, которые приходят на этот интерфейс, игнорируется, Dead-интервал должен быть одинаковым, для корректной работы протокола OSPF

Настройка dead-интервала равным 1 и изменение множителя:

router(config-if)# ip ospf dead-interval minimal hello-multiplier 5

множитель 5 обозначает, что будет отправлено 5 hello-пакетов в секунду.

Event_Propagation_Time

В протоколе OSPF рассылка изменений в топологии происходит посредством LSA сообщений. Для того чтобы сеть полностью сошлась, необходимо чтобы LSA сообщения с изменениями достигли каждого маршрутизатора в нашей области, работающей под протоколом OSPF. Время распространения зависит от следующих факторов:

1) LSA generation delay

OSPF обычно регулирует рассылку LSA сообщений, чтобы предотвратить лавинную рассылку в случае колебания маршрута, т.е. если маршрут пропал и через миллисекунду появился вновь, нет смысла оповещать об этом соседей. Для этого по умолчанию в протоколе OSPF существует задержка перед отправкой LSA сообщений своим соседям. Для оптимизации рассылки LSA устройства Cisco используют алгоритм экспоненциальной задержки.

Три таймера управляют процессом регулировки рассылки LSA сообщений:

1) initial interval –время задержки перед отправкой LSA
2) hold – время, по истечению которого LSA будет отправлено другим маршрутизаторам, если изменений не произошло
3) max_wait – время, по истечению которого таймеру hold будет возвращено первоначально заданное значение.

Данные параметры задаются в настройках протокола OSPF

Router(config-router)#timers throttle lsa initial hold max_wait

Рассмотрим более подробно каждый из таймеров

Пример:
Предположим, что наша сеть работает стабильно. Вдруг на одном из маршрутизаторов у нас пропадает маршрут, непосредственно подключенный к нему. Что произойдет?
Маршрут пропал. Маршрутизатор должен сгенерировать LSA сообщение и оповестить своих соседей. Маршрутизатор готовит LSA, включается первый таймер, initial interval, в котором указано время задержки перед отправкой сообщений LSA соседям. Затем включается второй таймер Hold, он измеряется в миллисекундах и показывает время, через которое будет отправлены LSA сообщения. Два эти таймера гарантируют нам, что если маршрут пропал на доли секунды и снова восстановился, то LSA сообщения, которые должны были сообщить соседям о пропадании маршрута, не отправятся соседям, тоесть, если маршрут пропал и появился за время таймера hold, LSA не отправляются. В то же время, если данная ситуация повторяется вновь, маршрут пропал и появился, то таймер hold увеличивается в 2 раза. Если ситуация и далее продолжается, то параметр hold растет по формуле 2^t*hold, пока не достигнет следующего параметра max_wait. По достижению данного таймера, таймер hold сбрасывается на начальное значение

Initial interval, оказывает значительное влияние на время сходимости , поэтому рекомендуется таймеру устанавливать значение 5-10 миллисекунд. Установка данного таймера на нулевое значение не рекомендуется, так как при пропадании, физического линка, многократно может увеличиться количество недоступных маршрутов, что приведет к тому, что на каждый потерянный маршрут будет генерироваться отдельное LSA сообщение, в то время как при времени задержки 5 миллисекунд, все изменения могли бы уместиться в одном LSA сообщении.

Также для улучшения защиты от лавинной рассылки LSA сообщений рекомендуется увеличивать таймер hold

2) LSA reception delay

Задержка приема LSA, это задержка на прием и обработку LSA cсообщений полученных маршрутизатором от соседей.
Данный таймер задается в настройках протокола OSPF.
Настройка таймера на задержку обработки LSA сообщения

router(config-router)# timers lsa arrival <0-600000>

Настройка таймера на повторную обработку приходящих LSA сообщений

router(config-router)#timers pacing retransmission <5-200>

Таким образом, чем меньше задержка для обработки, тем быстрей мы получим новую информацию о маршрутах, Важно помнить, если маршрутизатор вам отправил LSA, а ваш роутер вовремя не смог отправить ответный пакет Hello (из-за высокого значения данного таймера), LSA будет выслан заново

3) Processing Delay

Время необходимое маршрутизатору для помещения LSA сообщения в очередь на рассылку обновления другим маршрутизаторам.
Например, у нас произошло изменения топологии, маршрутизатор подготовил LSA и тут же его отправил, если появится еще одно LSA сообщение с обновлениями, то оно будет отправлено по умолчанию только через 55 мс. Рекомендуется для быстрой сходимости выставлять значение 5-10мс.

Данный таймер задается в настройках протокола OSPF

router(config-router)#timers pacing flood <5-100>

4) Packet Propagation Delay

Данный тип задержки зависит непосредственно от среды передачи данных, необходимо быстрей доставить пакеты – используйте более скоростные каналы.

SPF_Run_Time

Таймер регулирует процесс запуска процесса расчета алгоритма SPF
Данный таймер задается в настройках протокола OSPF

router(config-router) #timers throttle spf initial hold max_wait

Значения initial hold max_wait имеют тот же смысл что и при настройке throttle lsa .
Процесс расчета происходит таким же образом, а целью данного таймера является избегание чрезмерных вычислений дерева SPF во время сходимости сети. Тоесть уменьшение нагрузки на процессор маршрутизатора.

RIB_FIB_Update_Time

После того как завершен расчет SPF, необходимо произвести обновление в таблице маршрутизации. Соответственно, чем быстрей будут обновлены таблицы RIB и FIB тем быстрей мы сможем начать передачу трафика.
На данный параметр можно повлиять двумя способами.

1) Купить более производительное оборудование
2) Уменьшить количество распространяемых префиксов командой:

router(config-router) #prefix-suppression

На этом мы закончим рассмотрение таймеров, которыми мы сможем уменьшить время сходимости сети.

 

Сейчас мы рассмотрим пример, где попытаемся найти оптимальные настройки таймеров, для уменьшения времени сходимости нашей сети. Для получения информации по протоколу OSPF воспользуемся выводом команды «show ip ospf statistics»

show ip ospf statistics

            OSPF Router with ID (10.4.1.1) (Process ID 1)

  Area 10: SPF algorithm executed 18 times

  Summary OSPF SPF statistic

  SPF calculation time
Delta T  Intra    D-Intra  Summ     D-Summ   Ext      D-Ext    Total    Reason
1w3d     8        0        0        0        0        0        8        R, X
1w3d     12       0        0        0        4        0        16       R, X
1w3d     16       0        0        0        4        0        20       R, X
1w3d     8        0        0        0        0        0        8        R,
1w3d     20       0        0        0        0        0        20       R, X
1w2d     24       0        0        0        8        0        32       R, X
1w2d     8        4        0        0        0        0        12       R,
6d16h    4        0        0        0        0        4        8        R, X
6d16h    4        0        0        0        0        0        4        R,
6d16h    12       0        0        0        8        0        20       R, X

  RIB manipulation time during SPF (in msec):
Delta T  RIB Update       RIB Delete
1w3d     4        0
1w3d     8        0
1w3d     10       0
1w3d     5        0
1w3d     8        0
1w2d     10       0
1w2d     3        0
6d16h    2        0
6d16h    1        0
6d16h    9        0

Установим следующие параметры таймеров, для уменьшения времени сходимости.

Failure Detection Delay: 5-10ms время обнаружения обрыва канала.
Maximum SPF runtime: 32ms, увеличим его для стабильности и безопасности маршрутизатора от преждевременного расчета алгоритма SPF до 64ms
Maximum RIB update: 10ms, для предотвращения преждевременного обновления увеличим таймер до 20ms
OSPF interface flood pacing timer: 5ms (таймер не применяется к первому рассылаемому LSA, используется для последующих LSA)
LSA Generation Initial Delay: 10ms (время, достаточное, чтобы обнаружить многократные колебания маршрута)
SPF Initial Delay: 10ms (время, достаточное для задержки начала расчета алгоритма SPF, время за период которого может быть отправлено 2 LSA сообщения)

Параметры среды:
Гегорафическое расстояние 100 миль
Тип интерфейса GigabitEthernet

Примерное время сходимости исходя из заданных таймеров: 32*2 + 10*2 + 10 + 10 = 40+64 = 100ms. Это примерный расчет, мы также должны удостовериться, в том, что таймеры Hold и max_wait должны быть больше чем таймеры initial, для обеспечения стабильности обмена LSA сообщения и работы алгоритма SPF.

LSA Generation Hold Time: 100ms (приблизительное время сходимости)
LSA Generation Maximum Time: 1s (должно быть больше 100ms)
OSPF Arrival Time: 50ms (должно быть меньше LSA Generation hold time)
SPF Hold Time: 100ms
SPF Maximum Hold Time: 1s
Все таймеры, которые используются на маршрутизаторе можно узнать командой

Router#show ip ospf

Теперь примерно посчитаем, какое время сходимости будет в худшем случае при использовании данных параметров
LSA_Maximum_Delay (1 с) + SPF_Maximum_Delay (1 с) + RIB_Update (<1c)<3c
Пример конфигурации

router ospf 10
prefix-suppression
timers lsa arrival 50
timers throttle lsa all 10 100 1000
timers throttle spf 10 100 1000
timers pacing flood 5
timers pacing retransmission 60

Подведем итог:

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

Если проанализировать, то сходимость нашей сети зависит всего лишь от 3 параметров:

1) Задержка на обнаружение проблемы в физической среде;
2) Задержка на отправку LSA;
3) Задержка на запуск алгоритма SPF.

Уменьшив данные таймеры, мы получим более быструю сходимость и реакцию нашей сети на изменения. Остальные же параметры служат для стабилизации работы сети.
И еще небольшое отступление… Cisco рекомендует использовать в кампусной сети следующие таймеры initial/hold/maximum 10/100/5000 ms соответственно. При данных параметрах примерное время сходимости может составить более 10 секунд.

Друзья хочу дать совет, прежде чем начать тестировать и менять таймеры задаться вопросом, а нужно ли вам менять таймеры на вашей сети?
Всем удачи и до новых встреч.

Best regards
Dmitry Sultanakhmetov


Комментарии:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Hide me
Получать регулярно свежие материалы, лабораторные и вебинары
Email Имя
Show me