Понимание терминологии и принципов работы протокола OSPF

Материал из Cisco CCNP
Версия от 09:51, 13 августа 2012; imported>Artem (→‎Терминология зон)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску

Здесь описываются основные характеристики протокола маршрутизации OSPF, включая описание link-state протоколов маршрутизации, зонной структуры, соседства в link-state протоколах, вычисление метрики и структуры данных.

Link-state протоколы маршрутизации

Необходимость преодолеть ограничения дистанционно-векторных протоколов привела к разработке протоколов маршрутизации link-state (состояния канала).

Link-state протоколы имеют следующие характеристики:

  • Быстрая реакция на изменения в сети.
  • Рассылка обновлений после изменения топологии.
Файл:Link state pr operation.png
Рис. 1. Работа link-state протокола.
  • Периодическая рассылка обновлений (link-state refresh) через длительный интервал времени (30 мин. по умолчанию).

Link-state протоколы генерируют обновления маршрутизации только после изменений в топологии сети. Когда канал меняет состояние, устройство, которое обнаружило измнение, создаёт LSA-анонс (link-state advertisement - объявление состояния канала), относящийся к этому каналу (рис. 1). Обмен LSA между соседними маршрутизаторами информирует их о состоянии маршрутизаторов и соединений в сети. Каждый маршрутизатор хранит LSA, пересылает его соседям (в пределах зоны) и обновляет свою таблицу состояний каналов (link-state database - LSDB). LSA передаются всем соседним маршрутизаторам используя multicast-адрес 224.0.0.5. Когда маршрутизатор принимает LSA, он обновляет LSDB. LSDB используется для расчета лучшего маршрута по алгоритму Dijkstra, также известного как SPF (Shortest Path First), формируя SPF-дерево. Лучший маршрут, выбранный из SPF-дерева помещается в таблицу маршрутизации.

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

OSPF и IS-IS относятся к link-state протоколам.

Маршрутизаторы с запущенным link-state протоколом собирают ото всех соседей в сети (или в зоне) маршрутную информацию и затем, независимо друг от друга, вычисляют наилучшие маршруты ко всем получателям использую алгоритм Дейкстры. Неверная инфомрация от какого-либо маршрутизатора имеет меньше шансов вызвать путаницу, т.к. у каждого маршрутизатора свой собственный взгляд на сеть.

Высокие требования к ресурсам памяти для поддержки таблиц соседей, топологии и маршрутизации являются единственным недостатком link-state протоколов.

Каждый OSPF-маршрутизатор должен иметь следующую информацию для принятия решения по выбору маршрута:

  • Информация о соседних маршрутизаторах. Если маршрутизатор потеряет контакт с соседом, в течении нескольких секунд он сбросит все маршруты, проходящие через этого соседа и произведет их пересчет. Информация о соседях хранится в таблице соседей (neighbor table), также называемой базой данных смежности (adjacency database).
  • Информация о всех маршрутизаторах области. Маршрутизатор распознает другие маршрутизаторы в области через LSA, которые распространяются в сети. LSA сохраняются в таблице топологии (LSDB).
  • Информация о лучшем маршруте к сети назначения. Каждый маршрутизатор независимо рассчитывает лучший маршрут, используя алгоритм SPF. Все возможные маршруты хранятся в таблице LSDB. Лучший маршрут затем включается в таблицу маршрутизации, иногда называемую базой данных пересылки (forwarding database).
Внимание!
OSPF neighbor table = adjacency database
OSPF topology table = OSPF topology database = LSDB
Routing table = Forwarding database

В отличии от маршрутизаторов, использующих дистанционно-векторные протоколы маршрутизации и полагающихся на решения соседей, link-state маршрутизаторы могут независимо друг от друга принимать решение, основанное на видении всей картины сети.

OSPF Area Structure

В малых сетях, структура соединений не является сложной, и маршруты к сетям назначений легко просчитываются. Однако, в больших сетях итоговая структура является весьма сложной, а количество альтернативных маршрутов - огромным. Поэтому операции SPF по анализу возможных маршрутов могут занимать значительное время и перегружать ресурсы CPU и ОЗУ.

Файл:LargeOSPF network.png
Рис. 2. Структура большой OSPF сети

Если зона становится слишком большой, то возникнут следующие проблемы:

  • Частый запуск алгоритма перерасчёта SPF - в больших сетях изменения неизбежны, поэтому маршрутизаторы тратят множество своих ресурсов на перерасчёт и обновление таблиц маршрутизации.
  • Большие таблицы маршрутизации - по умолчанию OSPF не суммирует маршруты вручную. Поэтому таблицы маршрутизации могут стать очень большими.
  • Большие базы LSDB - так как LSDB содержит топологию всей сети, каждый маршрутизатор должен иметь запись для каждой сети в зоне (area), даже если не каждый маршрут будет представлен в таблице маршрутизации.

В целях уменьшения количества операций SPF протоколы link-state позволяют разбивать сеть на субдомены, называемые областями (area).

Область - это логическая совокупность OSPF-сетей, маршрутизаторов и соединений, которые имеют одинаковый идентификатор области. Маршрутизатор ведет базу данных топологии для своей области и не владеет детальной информацией о топологии вне области, что уменьшает размер LSDB. Число маршрутизаторов в области и число LSA небольшое, поэтому и сами базы LSDB имеют небольшой размер => вычисления по алгоритму Дейкстры занимают меньше времени и требуют меньше ресурсов.

Области ограничивают масштаб распространения информации о маршрутах и уменьшают количество объявляемых маршрутов. LSDB маршрутизаторы области могут синхронизироваться почти одновременно. Между областями возможно применение суммирования и фильтрации маршрутов.

При правильной адресации и конфигурации OSPF, использование множества областей имеет несколько существенных преимуществ:

  • Сокращается частота пересчёта по SPF - потому что детальная инфа о маршрутах существует только в пределах какой-либо зоны. Нет необходимости распространять все изменения во все другие зоны. Таким образом, только маршрутизаторы, на которые влияют изменения, должны запускать SPF. Влияние изменений ограничено в пределах зоны.
  • Небольшие таблицы маршрутизации - маршруты к специфическим сетям зоны остаются в зоне. Вместо их анонсирования за пределы зоны маршрутизаторы могут быть настроены для анонсирования суммированного маршрута, что сократит число LSA между зонами, а доступность сетей при этом не пострадает.
  • Сокращение накладных расходов на LSU - LSU содержат различные типы LSA, включая информацию о состоянии каналов и суммировании. Вместо того чтобы отправить LSU с информацией о каждой сети в зоне, маршрутизатор может анонсировать один суммированный маршрут или небольшое число маршрутов между зонами, тем самым сократив накладные расходы связанные с LSU, при их переходы между зонами.

Протоколы link-state используют двухуровневую иерархию областей:

  • Транзитная область (Backbone area). Промежуточный тип OSPF-области внутри одного домена, главной функцией которого является быстра и эффективная пересылка пакетов. В транзитной области нет конечных пользователей. Она связана с другими типами зон. Область 0 является транзитной областью или ядром.
  • Обычная область (Regular area). Соединяет пользователей и ресурсы. Обычные области, как правило, устанавливаются по функциональному или географическому принципу. По умолчанию, обычная область не передает трафик от одной области к другой. Такой трафик должен передаваться через транзитную область. Обычная (немагистральная) область имеет ряд разновидностей: standard area, stub-area, totally stubby area (или totally NSSA, или totally stub NSSA, not-so-stubby area (NSSA).
Внимание!
В некоторых доках Cisco вы можете встретить определение backbone как транзитной сети. Однако, в OSPF RFC транзитная зона
относится к виртуальным каналам.

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

Области OSPF

В link-state протоколах маршрутизации, все маршрутизаторы должны иметь копии LSDB. Чем больше маршрутизаторов (и больше каналов между ними), тем больше база LSDB. С одной стороны знание обо всех маршрутах можно отнести к преимуществу, но такой подход не применим к масштабированию в больших сетях. Подход с использованием зон - это компромис. Маршрутизаторы внутри зоны содержат детальную информацию обо всех каналах и маршрутизаторах этой зоны. OSPF можно настроить так, чтобы только общая или суммированная информация о маршрутизаторах и каналах других областей была в БД на маршрутизаторах этой области.

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

Файл:Typy of OSPF routers.png
Рис. 3. Типы маршрутизаторов OSPF

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

Рекомендации позволяющие не перегружать маршрутизаторы расчётами OSPF:

  • Зона должна содержать не более 50 маршрутизаторов.
  • Маршрутизатор должен быть не более чем в 3 зонах.

Конечно, не последюю роль играет стабильность каналов и дизайн сети.

Терминология зон

OSPF-маршрутизаторы классифицируются по функциям, которые они выполняют:

  • Внутренние маршрутизаторы (internal routers). Маршрутизаторы, интерфейсы которых находятся в одной области, имеющие идентичные LSDB.
  • Магистральные маршрутизаторы (backbone routers). Маршрутизаторы расположенные внутри периметра магистральной области, как минимум один интерфейс которых соединен с областью 0. Магистральные маршрутизаторы поддерживают информацию о маршутах, используя такие же процедуры как и внутренние маршрутизаторы.
  • Пограничные маршрутизаторы области (area borders routers - ABR). Маршрутизаторы, интерфейсы которых подключены к нескольких областям. Ведут различные LSDB для каждой области, к которой они подключены, и маршрутизируют трафик из или в эти области. ABR - это точки выхода для области. Трафик, направленный в другую область, обязательно проходит через ABR. ABR могут (и только они) быть настроены на суммирование маршрутов своих областей. ABR передают информацию о маршрутах в магистральную область. Магистральные маршрутизаторы передают эту информацию другим ABR. ABR разделяют LSA flooding зоны и могут функционировать как источник default маршрутов. Зона может иметь один или несколько ABR.
  • Пограничные маршрутизаторы автономной системы (autonomous system boundary routers - ASBR). Маршрутизаторы, как минимум один интерфейс которых подключен к внешней сети (другой автономной системе), например к неOSPF-сети. ASBR могут импортировать информацию о маршрутах из внешней сети в свою сеть, и наоборот. Этот процесс называется перерараспределением (redistribution). Пограничный маршрутизатор автономной системы может находиться в любом месте автономной системы и быть внутренним, пограничным или магистральным маршрутизатором.

Маршрутизатор может принадлежать к нескольким типам. Маршрутизатор для каждой зоны, к которой он подключён, имеет отдельную базу LSDB. Получается, что LSDB имеет одну базу для зоны 0 и ещё одну для другой зоны, в которую он включён.

LSDB синхронизируются между парой соседних маршрутизаторов.

Соседство в OSPF

В первую очередь OSPF-маршрутизатор должен установить смежность с соседями. Маршрутизатор достигает смежности путем обмена hello-пакетами:

  • Маршрутизатор посылает и принимает hello-пакеты соседним маршрутизаторам. Multicast-адрес назначения hello-пакетов 224.0.0.5.
  • Hello-пакеты содержат параметры смежности, которые маршрутизаторы принимают во внимание прежде, чем стать соседями. Параметры включают ID маршрутизатора и ID области (area ID), таймеры hello, которые должны совпадать, установки аутентификации, приоритет маршрутизатора, информацию о назначенном маршрутизаторе (DR - designated router) и резервном назначенном маршрутизатор (BDR - backup designated router).
  • Маршрутизатор объявляет смежность с соседом, когда закончен обмен.
  • После того, как два маршрутизатора установили смежность, они синхронизируют LSDB, обмениваясь LSA и подтверждая получение LSA от соседа. Соседи распознают, что они имеют синхронизированную LSDB. В этом случае маршрутизаторы переходят в состояние полной (full) смежности.
  • Если необходимо, маршрутизаторы пересылают любые новые LSA другим соседям, гарантируя полную синхронизацию link-state информации внутри области.

Формирование смежности OSPF зависит и от типа сети. Например, два OSPF-маршрутизатора, соединенных последовательной линией, формируют смежность друг с другом, когда они соглашаются с назначенными параметрами. В широковещательной сети множественного доступа (например Ethernet) необходимы выборы маршрутизаторов в DR и BDR. OSPF-маршрутизаторы в сегменте LAN выбирают один маршрутизатор как DR и один как BDR. Остальные маршрутизаторы в данном сегменте LAN формируют полные смежности с DR и BDR и отбрасывают LSA от иных источников (т.е. пересылают LSA только DR и BDR). DR пересылает обновления от одного соседа другим в той же LAN. Одна из основных функций DR это гарантировать чтобы все маршрутизаторы в одной LAN имели одинаковые LSDB. Таким образом в широковещательных сетях LSDB сихронизируется между DROTHER (маршрутизатором, который не является DR или BDR) и его DR и BDR.

DR пересылает свою базу LSDB любому новому маршрутизатору, подключившемуся к этой LAN. Логически неэффективно, чтобы все маршрутизаторы в LAN отсылали идентичные БД новичку, поэтому один DR олицетворяет (represent) все другие маршрутизаторы для новичка.

Маршрутизаторы в LAN также поддерживают частичные соседские отношения ('partial-neighbor relationship), называемые two-way adjacency state, с другими маршрутизаторами, не являющимися DR или BDR (т.е. DROTHER).

Важно понимать, что принцип DR построен на канальном уровне. В широковещательной среде с множественным доступом, каждый сетевой сегмент будет иметь собственный DR и BDR. Маршрутизатор, подключённый к двум сетям, например, в одной может быть DR, а в другой DROTHER.

LSA также называют link state protocol data units (PSUs).

LSA сообщают состояние маршрутизаторов и канала между маршрутизаторами - отсюда и термин link state. Таким образом link-state информация должна быть синхронизированна между маршрутизаторами. Для выполнения этого LSA имеют следующие характеристики:

  • LSA надёжны. Доставка покатов подтвержается.
  • LSA рассылаются по всей зоне (или по всему домену, если зона всего одна)
  • LSA имеет seq number и set lifetime. Таким образом каждый маршрутизатор может определить имеет ли он последнюю версию LSA.
  • LSA периодически обновляются, чтобы подтвердить топологическую информацию прежде, чем она устареет в бд LSDB.

Только reliably рассылка link-state информации может гарантировать, что любой маршрутизатор в зоне или домене имеет точную топологическую картину. Только так маршрутизаторы смогут принять верное решение, согласующееся с решениями других маршрутизаторов сети.

Вычисление метрики в OSPF

Link-state протоколы используют алгоритм Dijkstra для поиска наилучшего пути к сети назначения. Каждому соединению присваивается стоимость (cost). Маршрутизатор назначает себя корнем SPF-дерева. Ветви дерева используются для выбора наилучшего пути к сети назначения.

По умолчанию стоимость соединения в OSPF рассчитывается по полосе пропускания - чем больше п/п, тем меньше cost. Стоимость соединения можно также задать и вручную, использую команду ip ospf cost, которая переопределяет значение по умолчанию.

По умолчанию формула расчёта стоимости в Cisco:

 (100)/(п/п мбит/сек)

или

 (10^8)/(bps)
OSPF RFC 2328 не определяет, что должно быть cost. В роутерах Cisco используется обратно пропорциональное п/п значение.

Если п/п канала изменить, то и стоимость OSPF тоже изменится. Только одно значение стоимости может быть присвоено интерфейсу. Это значение анонсируется в анонсах канала (link adv) как link cost. Стандартные значения OSPF cost:

  • 56-кбит последовательный канал - 1785
  • 64-кбит последовательный канал - 1562
  • T1 (1,544 мбит) - 64
  • E1 (2048) - 48
  • Ethernet - 10
  • Fast Ethernet - 1
  • FDDI - 1
  • ATM - 1

Для каждого интерфейса можно задать вручную значение стоимости.

Файл:SPF calc.png
Рис. 4. Вычисление SPF

На рисунке 4 показан пример вычисления.

  • Маршрутизатор H объявляет о своем присутствии маршрутизатору E. Тот в свою очередь объявляет H и себя своим соседям (C и G). С и G поступают аналогично, и так далее.
  • Распространение LSA следует правилу расщепления горизонта (split horizon), которое гласит, что маршрутизатор никогда не пересылает LSA соседу, от которого этот LSA был получен. В нашем примере E не посылает LSA о H обратно маршрутизатору H.
  • X имеет четырех соседей: A, B, C, D. От них он получает LSA об остальных маршрутизаторах сети. На основании полученных LSA X делает выводы о структуре соединений между маршрутизаторами.
  • Каждому Ethernet соединению назначена стоимость 10. Суммируя стоимости соединений для каждой сети назначения, маршрутизатор выбирает наилучшие маршруты.
  • Правая часть рисунка демонстрирует итоговые наилучшие маршруты, которые X занесет в свою таблицу маршрутизации.

Структуры данных

Каждый LSA имеет собственное время жизни (aging timer, по умолчанию 30 минут), указанное в секундах в поле Link-State Age. После устаревания LSA, маршрутизатор, создавший его, посылает новый LSA с более высоким последовательным номером внутри LSU-пакета (link-state update) для того, чтобы проверить, что канал всё ещё активен. Если LSA достиг maxage = 60 min, он будет отброшен. LSU-пакет может содержать один или более LSA. Такой метод проверки LSA более экономично использует полосу пропускания по сравнению с дистанционно-векторными протоколами, в которых обновления посылаются намного чаще.

При получении LSU маршрутизатор действует следующим образом:

  • Если LSA еще не существует, маршрутизатор добавляет его в свою LSDB, посылает подтверждение LSAck (link-state acknowledgment) обратно, распространяет информацию другим маршрутизаторам, запускает SFP и обновляет свою таблицу маршрутизации.
  • Если LSA уже существует, и принимаемый LSA имеет такой же последовательный номер, то маршрутизатор игнорирует такой LSA.
  • Если LSA уже существует, и принимаемый LSA имеет больший последовательный номер, то маршрутизатор добавляет информацию LSA в свою LSDB, послывает обратно LSAck, распространяет информацию другим маршрутизаторам, запускает SFP и обновляет свою таблицу маршрутизации.
  • Если LSA уже существует, но принимаемый LSA имеет меньший последовательный номер, то маршрутизатор посылает отправителю LSU с актуальной информацией.