Понимание терминологии и принципов работы протокола OSPF
Здесь описываются основные характеристики протокола маршрутизации OSPF, включая описание link-state протоколов маршрутизации, зонной структуры, соседства в link-state протоколах, вычисление метрики и структуры данных.
Link-state протоколы маршрутизации
Необходимость преодолеть ограничения дистанционно-векторных протоколов привела к разработке протоколов маршрутизации link-state (состояния канала).
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 и ОЗУ.
Если зона становится слишком большой, то возникнут следующие проблемы:
- Частый запуск алгоритма перерасчёта SPF - в больших сетях изменения неизбежны, поэтому маршрутизаторы тратят множество своих ресурсов на перерасчёт и обновление таблиц маршрутизации.
- Большие таблицы маршрутизации - по умолчанию OSPF не суммирует маршруты вручную. Поэтому таблицы маршрутизации могут стать очень большими.
- Большие базы LSDB - так как LSDB содержит топологию всей сети, каждый маршрутизатор должен иметь запись для каждой сети в зоне (area), даже если не каждый маршрут будет представлен в таблице маршрутизации.
В целях уменьшения количества операций SPF протоколы link-state позволяют разбивать сеть на субдомены, называемые областями (area).
Область - это логическая совокупность OSPF-сетей, маршрутизаторов и соединений, которые имеют одинаковый идентификатор области. Маршрутизатор ведет базу данных топологии для своей области и не владеет детальной информацией о топологии вне области, что уменьшает размер LSDB.
Области ограничивают масштаб распространения информации о маршрутах и уменьшают количество объявляемых маршрутов. LSDB маршрутизаторы области могут синхронизироваться почти одновременно. Между областями возможно применение суммирования и фильтрации маршрутов.
Протоколы link-state используют двухуровневую иерархию областей:
Транзитная область (Transit area). Промежуточный тип OSPF-области внутри одного домена. В транзитной области нет конечных пользователей. Область 0, также называемая магистральной областью (backbone area), является транзитной областью. Обычная область (Regular area). Соединяет пользователей и ресурсы. Обычные области как правило устанавливаются по функциональному или географическому принципу. По умолчанию, обычная область не передает трафик от одной области к другой. Такой трафик должен передаваться через транзитную область. Обычная (немагистральная) область имеет ряд разновидностей: standard area, stub-area, totally stubby area, not-so-stubby area (NSSA).
OSPF усиливает эту жесткую двухуровневую иерархию. Структура физических соединение должна быть отображена на двухуровневую иерархию областей, где все немагистральные области должны подключаться непосредственно к области 0.