Бесплатная миграция IT-инфраструктуры в облако

OSPF-протокол: основные термины и принцип работы

Роман Андреев
Роман Андреев
Технический писатель
03 ноября 2022 г.
2996
12 минут чтения
Средний рейтинг статьи: 3

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

Использование .map() Для Итерации Элементов Массива В Javascript

Основы протокола OSPF

Чтобы понять, как работает Open Shortest Path First (так расшифровывается эта аббревиатура, которую можно перевести, как «первый кратчайший открытый путь»), нужно знать основы статической маршрутизации. Допустим, у нас есть корпоративная БД, размещенная на сервере организации. При открытии файла маршрутизатор (будем также использовать синонимы: устройство маршрутизации и роутер) получает запрос и определяет, куда направить пакет данных. Делается это с помощью таблицы маршрутизации.

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

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

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

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

Чтобы понять алгоритмы, по которым работает протокол динамической маршрутизации OSPF, нужно знать несколько несложных терминов:

  • Автономная система — сетевая инфраструктура с единым управлением и настройками маршрутизации.
  • Интерфейс — в данном случае является синонимом канала.
  • Area — зона или система устройств маршрутизации, обменивающихся LSA и обладающих единым ID.
  • LSA — пакеты данных с информацией о статусе каналов.
  • Link State — состояние связи между роутерами, для обновления состояния используются LSA.
  • LSU — пакет данных с содержащимися в нем LSA. Также используется термин Hello-пакет, однако различие между LSU и Hello в том, что LSU пересылают информацию о состоянии каналов связи, а Hello используются для нахождения устройств.
  • Link-State DataBase — база LSA с соответствующими записями. Для ее обозначения обычно используется сокращение LSDB. Синонимичный термин: Topological DB.
  • Router ID — идентификатор устройства, обычно 32-битный. Всегда является уникальным.
  • Соседи — роутеры в пределах одной Area.
  • Adjacency — двусторонняя связь между соседями, которые обмениваются данными о путях маршрутизации.
  • Shortest Path First или SPF — так называется алгоритм, рассчитывающий оптимальные маршруты.
  • Стоимость — затратность передачи данных по конкретному пути. Определяется различными факторами, а одним из важнейших является пропускная способность.
  • Designated Router или DR — выделенный роутер. Управляет передачей LSA в масштабах всей сети, поэтому связан со всеми остальными устройствами.
  • Backup Designated Router или BDR — резервное устройство. Этот роутер необходим в тех случаях, когда недоступен основной DR, что повышает стабильность сети. Также связан со всеми устройствами маршрутизации.

Принцип работы OSPF

Алгоритм, по которому работает OSPF, следующий:

  • После включения роутеру присваивается Router ID (также можно назначить ему ID и самостоятельно).
  • OSPF приступает к поиску соседних маршрутизаторов, рассылая по сети соответствующие пакеты.
  • При успешном ответе между роутерами формируются каналы связи, а если ответ не был получен, маршруты автоматически перестраиваются.
  • Далее происходит обмен LSA, в которых содержится нужная информация (о сетях, соседних маршрутизаторах и т. д.) для того, чтобы рассчитывать оптимальные пути передачи пакетов данных.
  • Затем роутеры синхронизируют общую LSDB, в которой сохранены LSA.
  • Чтобы избежать забивания каналов, задействуется Designated Router, через который пересылаются пакеты данных с информацией о состоянии всей сети и о статусе каждого роутера. DR можно назначить принудительно, а если этого не сделать, система присваивает этот статус маршрутизатору с наибольшим IP.
  • Наконец, OSPF приступает к расчетам кратчайших маршрутов для сетей. Построение идет по древовидной схеме, когда от корней (роутеров) идут ветви (пути), при этом схема оптимизируется по мере необходимости.

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

Запуск

Запускаем OSPF на роутере. Идентификатор маршрутизатора будет назначен автоматически, хотя можно сделать это и вручную. Далее назначаются сети для передачи OSPF и указывается, откуда будут идти пакеты. Также назначаются сети, которые будут объявлены для других роутеров. Для этого необходимо указать номер сети, маску и номер Area. Теперь, если остальные маршрутизаторы настроены корректно, то между ними будет установлено соседство. Важно: для корректной работы интервалы передачи hello-пакетов, Area ID и интерфейсы на соседствующих роутерах должны быть идентичными.

Установка отношений

«Соседские» отношения между маршрутизаторами устанавливаются так. Допустим, у нас 4 роутера, причем четвертый будет новым, для которого нам нужно установить отношения соседства. Теперь вспоминаем терминологию. Один из роутеров у нас DR, а другой BDR.

Новый роутер рассылает hello-пакеты, а первые три, получая их, добавляют его в свои списки со статусом поиска Init. Затем соседство подтверждает и четвертый роутер. Происходит автоматическое установление 2-Way. Это тип симметричных отношений, при которых установлен обмен пакетами данных, однако обмен маршрутами пока не осуществляется.

Далее устройства пересылают друг другу служебные пакеты данных с информацией о маршрутной БД, а также запросы Link State (также называемые LSR или Link State Request). После этого происходит обмен сообщениями с детальной информацией о маршрутах и синхронизируется Link-State DataBase (Topological DB). На этом этапе устанавливаются полноценные соседствующие отношения между устройствами, в том числе с выделенным и резервным роутерами.

Распределение ролей

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

DR играет ключевую роль в обеспечении связности: он отвечает за обмен LSA-пакетами, установление соседства, синхронизацию работы устройств через обмен DBD (в этих сообщениях содержится информация о синхронизации через Topological DB). Из других особенностей отметим, что роутеры со статусом DR и BDR получают групповой адрес.

Зоны OSPF

Сетевое пространство в OSPF делится на зоны (Area), которые представляют собой логические структуры. Под термином Area понимается своеобразный сетевой кластер — определенный набор роутеров с собственной БД и топологией. При этом роутеры из других Area не располагают информацией о чужих топологиях. Зоны имеют собственные ID, которые называются Area ID. Внешне эти ID могут выглядеть как IP, однако таковыми не являются. Теперь давайте рассмотрим типы зон OSPF. Основных пять:

  • Area 0. Встречаются и другие названия: магистральная, зона 0.0.0.0. Это важнейшая часть системы маршрутизации, формирующая ядро всей сети, и через нее проходит весь сетевой трафик. «Мозгом» Area 0 является Backbone Router, магистральный роутер, минимум один из интерфейсов которого относится к Area 0.
  • Normal Area. Это стандартная зона, назначение которой в обновлении каналов маршрутизации, в том числе внешней.
  • Transit Area. Транзитная зона, отвечающая за передачу пакетов данных между соседними областями. Area 0 также можно отнести к транзитным, но с особыми полномочиями.
  • NSS Area или NSSA. Назначение этой зоны (расшифровывается как Not-So-Stubby Area) заключается в передаче пакетов данных в другие зоны, при этом она не получает информацию о путях маршрутизации извне. Поэтому для пересылки пакетов в этом месте сети используют роутер особого типа, ASBR, который как раз и способен получать такие маршруты. А для обмена данными на границах между зонами используют устройства ABR, являющиеся пограничными роутерами.
  • Stub Area. Это название переводится как «тупиковая зона», и здесь невозможен прием пакетов данных, содержащих информацию о внешней маршрутизации. Однако возможен прием маршрутов из соседних зон. Также Stub Area не предназначена для размещения устройств типа ASBR, поэтому здесь задействуются пути по умолчанию. Существует и расширенный вариант под названием Totally Stub Area, где на стандартные пути заменены и остальные: не только внешние, но и между зонами.

И еще немного терминологии. Внутризональные устройства, в том числе и находящиеся в пределах зоны 0.0.0.0, называют внутренними или Internal. Особенность этих устройств в том, что они имеют зональные интерфейсы и единую Link-State DataBase. При этом каждое устройство может одновременно выступать в разных ролях, а зоны не всегда являются физическими, поскольку для их создания могут использоваться технологии виртуализации инфраструктуры.

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

Типы пакетов LSA и OSPF

LSA представляет собой пакет данных с информацией о конкретном устройстве маршрутизации или отдельной сети. Из LSA формируется LSDB, причем данные пакеты имеют 11 разновидностей:

  • LSA1 создаются роутерами в пределах одной зоны. В пакетах этого типа пересылаются данные об интерфейсах и особенностях внутризональных устройств.
  • LSA 2 предназначены для отправки соседним внутризональным устройствам. Отправителем данных пакетов выступает выделенный роутер, а содержимое этих пакетов — информация о подключенных устройствах.
  • LSA 3 содержат общие данные о путях маршрутизации соседних устройств, исключая топологическую информацию.
  • LSA 4, помимо данных, передаваемых LSA 3, также содержат маршруты до локальных устройств, относящимся к соседним зонам.
  • LSA 5 несут внешние данные, передаваемые в том числе по иным протоколам.
  • LSA 6 — пакеты для мультиадресной маршрутизации MOSPF.
  • LSA 7 работают аналогично LSA 5, однако создают ASBR при условии нахождения в NSSA.
  • LSA 8 необходимы для трансляции данных BGP.
  • Наконец, пакеты LSA 9, 10, 11 выполняют особые функции, расширяющие функционал протокола. С их помощью можно организовать, например, потоковое вещание.

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

  • Hello. Используются для нахождения соседних устройств, определения их состояния и создания связей соседства с ними.
  • DBD. Нужны для контроля синхронизации БД между устройствами.
  • LSR. Используются для запросов фрагментов БД соседних устройств.
  • LSU. Нужны для отправки данных о текущем состоянии каналов связи.
  • LSAck. Предназначены для подтверждения получения каких-либо пакетов данных, пересылаемых по OSPF.

Синхронизация LSDB (Topological DB)

LSA любого типа формируют Topological DB, а каждое устройство маршрутизации имеет собственную копию этой базы данных, которую они сопоставляют с БД выделенного роутера. При этом остальные роутеры отвечают за информацию об исходящих от них связях. При изменении структуры сети (например, возникли другие связи или какие-то устройства оказались недоступны) рядовой роутер изменяет копию БД и посылает ее выделенному. За это отвечает протокол под названием Flooding. Добавим, что каждая запись в Topological DB имеет свой номер, и чем она новее, тем больше номер. Это помогает поддерживать актуальность базы данных.

Выбор оптимального маршрута

Для этого в протоколе используется специальный алгоритм. Он базируется на расчете стоимости пересылки пакетов на основе топологии. При этом стоимость определяется с учетом различных метрик (например, загруженность канала связи, его пропускная способность). Кроме того, имеется и система приоритетов. Так, при построении маршрута в первую очередь анализируются внутренние зоны, затем межзональные пути и уже потом внешние каналы передачи данных. Для расчетов используется алгоритм Дейкстры и регулярно обновляемая таблица Topological DB. При этом данная таблица каждый раз обнуляется, и маршруты выстраиваются заново с учетом новых данных. Разумеется, это довольно затратно в плане нагрузки на процессорные мощности сервера.

OSPF в Cisco и Juniper

Устройства Cisco и Juniper работают по OSPF так же, как и остальные, а различие заключается только в инструкциях. Вот сравнительные примеры проверки отношений соседства и таблицы маршрутизации на Cisco и Juniper соответственно:

Cisco:

show ip ospf neighbors
show ip route

Juniper:

root@R1> show ospf neighbor
root@R1> show route

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

OSPF для IPv6

Поддержка IPv6 у OSPF имеется, однако для этого нужно использовать минимум третью версию протокола. Заметим, что вся информация выше одинаково применима ко всем версиям протокола, поэтому настройка IPv6 также не должна вызывать трудностей, поскольку выполняется аналогично процедуре настройки IPv4. После включения протокола необходимо задать ID устройства, причем потребуется сделать это вручную. Всё остальное (Area, IP, другие ID) настраивается точно так же.

Заключение

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

03 ноября 2022 г.
2996
12 минут чтения
Средний рейтинг статьи: 3
Пока нет комментариев