OSPF — основы протокола
OSPF — это аббревиатура от Open Shortest Path First. OSPF является протоколом внутренней маршрутизации, сделанным для IP-сетей. В его основе лежит алгоритм Shortest Path First (SPF) и по сути это протокол передачи информации по наилучшему пути из возможных.
В сети OSPF маршрутизаторы занимаются наполнением базы данных состояния канала, описывающих топологию области, в которой они находятся. Каждый из маршрутизаторов готовит свою базу данных согласно объявлениям о состоянии канала (LSA). Получает он их от остальных маршрутизаторов, расположенных в той же области. Также он добавляет в базы LSA, которые создает сам.
LSA — это пакет, содержащий информацию о соседних маршрутизациях и стоимости пути. Основываясь на базах данных, каждый маршрутизатор определяет кратчайший путь передачи данных, используя алгоритм SPF.
Основные преимущества OSPF:
- По сравнению с протоколами маршрутизации на основе вектора расстояния (например, RIP), OSPF больше подходит для обслуживания больших разнородных объединенных сетей. OSPF может пересчитывать маршруты за короткий промежуток времени при изменении топологии сети.
- С помощью OSPF можно разделить автономную систему на области и сохранить их отдельные топологии. Это позволяет уменьшить трафик маршрутизации OSPF и размер базы данных для каждой области.
- OSPF обеспечивает многопутевую маршрутизацию с равной стоимостью. Повторяющиеся маршруты можно добавить в стек TCP, используя разные следующие переходы.
Как работает OSPF
Сначала маршрутизаторы в сети OSPF должны убедиться в том, что их интерфейсы работают. После этого они посылают пакеты Hello, чтобы найти соседей. Соседями являются остальные маршрутизаторы, имеющие интерфейсы к общей сети. Когда они будут найдены, соседние маршрутизаторы обмениваются своими базами данных о состоянии каналов.
Фаза EXSTART
Это начальный шаг обмена базами данных, характеризующими состояние каналов. Две системы договариваются о том, кто тут master, а кто slave.
Фаза Exchange (Обмен)
Две системы обмениваются пакетами описания базы данных, чтобы определить, какие LSA отсутствуют в базе данных каждой из систем. Каждая система хранит LSA, которые не включены в ее базу данных состояния канала, в списке повторной передачи.
Фаза Loading (Загрузка)
Каждая система отправляет пакеты Link State Request, чтобы запросить у соседа полные LSA, которые были сохранены в списке повторной передачи во время фазы EXCHANGE. Ответом на запрос LSA будут пакеты Link State Update.
Фаза Full
Когда две системы завершают обмен LSA и их базы данных состояния каналов синхронизируются, между двумя системами устанавливается смежность.
После того, как смежность установится между всеми маршрутизаторами в области, каждый маршрутизатор будет периодически отправлять LSA, чтобы поделиться своей смежностью или сообщить об изменении своего состояния. Сравнивая установленные отношения смежности с LSA, маршрутизаторы могут обнаруживать изменения в топологии области и соответствующим образом обновлять свои базы данных о состоянии каналов.
Как распределяются роли
В сети OSPF с множественным доступом (где несколько устройств могут подключаться и обмениваться данными одновременно) маршрутизаторам предстоит решить, какой из них будет выделенным, а какой резервным выделенным. В этом помогает протокол Hello.
Выделенный маршрутизатор генерирует LSA для всей сети, имеющей множественный доступ, отправляет их другим маршрутизаторам и решает, какие устройства должны стать смежными. Все остальные маршрутизаторы в сети располагаются рядом с выделенным. Он уменьшает сетевой трафик и размер баз для этой сети.
Резервный выделенный маршрутизатор не слишком отличается от других. Разница лишь в том, что ему необходимо установить смежность с остальными маршрутизаторами в сети (включая выделенный). Резервный выделенный маршрутизатор повышается до выделенного, если текущий выделенный выходит из строя.
Иерархия OSPF
В отличие от RIP, OSPF умеет работать в рамках иерархии. Самой большой сущностью в иерархии является AS, то есть группа сетей под общим управлением, которые используют единую стратегию. AS можно разделить на области, которые связаны друг с другом маршрутизаторами. Область в свою очередь состоит из групп смежных сетей и присоединенных хостов. Топология области невидима для объектов за её пределами. В одной и той же области все маршрутизаторы имеют абсолютно одинаковую базу данных состояния канала.
Маршрутизатор, расположенный на границе областей OSPF и соединяющий их с магистральной сетью, называется пограничным. Он имеет несколько интерфейсов для разных областей и поддерживает отдельные базы данных для каждой из них.
Типы пакетов OSPF
Маршрутизаторы отправляют LSA не напрямую, а с другими пакетами. В OSPF используются:
Hello пакеты через фиксированные отрезки времени отправляются со всех интерфейсов. Это необходимо для того, чтобы установить и поддерживать отношения соседства. Вместе с этими пакетами отправляются параметры, по поводу которых маршрутизаторам нужно условиться прежде, чем установить соседство.
2. Database Description или пакет описания базы данных
Эти пакеты описывают содержимое топологической базы данных. Процедура вопроса-ответа используется для описания использования нескольких пакетов. Один маршрутизатор назначается ведущим, а другой — ведомым. Пакеты описания базы данных отправляются ведомым устройством после отправки пакетов описания базы данных ведущим устройством. Эти пакеты необходимы для проверки синхронизации баз данных между маршрутизаторами.
3. Link-State Request или пакет запроса состояния канала
Когда состоялся обмен данными, маршрутизатор может понять, что часть его топологической базы является устаревшей. Пакет Link-State Request нужен для запроса более актуальных частей базы данных у соседей.
4. Link-State Update или пакеты обновления состояния канала
Эти пакеты требуются для выполнения лавинной рассылки объявлений. Пакеты обновлений операторов связи переносят группу объявлений о состоянии канала связи вперёд на один переход от источника.
5. Link-State Acknowledgment или пакеты подтверждения состояния канала
Подтверждение надежности лавинных объявлений о состоянии канала реализовано через отправку и получение пакетов подтверждения состояния канала. Один пакет подтверждает несколько объявлений о состоянии канала.
Как выбрать лучший маршрут
Все пути между соседними маршрутизаторами имеют свою стоимость. Для рассчёта маршрута необходимо иметь знания о топологии сети: маршрутизатор передает знания о соседних устройствах, о соединении и его стоимости. Далее проводятся вычисления по алгоритму Дейкстры (SPF). Маршрут выбирается, исходя из меньшей стоимости пути.