OSPF представляет собой протокол маршрутизации, задачей которого является нахождение оптимального пути для передачи данных. В статье рассмотрим принцип работы протокола маршрутизации OSPF и ряд важных особенностей, понимание которых упростит работу с ним.
Чтобы понять, как работает Open Shortest Path First (так расшифровывается эта аббревиатура, которую можно перевести, как «первый кратчайший открытый путь»), нужно знать основы статической маршрутизации. Допустим, у нас есть корпоративная БД, размещенная на сервере организации. При открытии файла маршрутизатор (будем также использовать синонимы: устройство маршрутизации и роутер) получает запрос и определяет, куда направить пакет данных. Делается это с помощью таблицы маршрутизации.
Трудности начинаются, когда корпоративная инфраструктура состоит уже из нескольких сотен устройств маршрутизации. И решение в этом случае заключается в использовании динамического транспортного протокола OSPF, который автоматизирует работу маршрутизаторов, что существенно облегчает задачу системным администраторам.
Выручает OSPF и при сбоях сети. При прерывании одного из каналов связи передача пакетов данных также прекратится, поскольку статическая маршрутизация не предполагает автоматического переопределения путей. А делать это вручную при разветвленной инфраструктуре крайне трудозатратно. Если же используется OSPF, перестроение маршрутов будет происходить в автоматическом режиме.
И данные будут пересылаться до тех пор, пока есть хотя бы один доступный канал, где бы он ни был расположен внутри системы. Внутри, потому что этот протокол работает только в пределах одного домена или сетевой структуры замкнутого типа.
Чтобы понять алгоритмы, по которым работает протокол динамической маршрутизации OSPF, нужно знать несколько несложных терминов:
Алгоритм, по которому работает 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 делится на зоны (Area), которые представляют собой логические структуры. Под термином Area понимается своеобразный сетевой кластер — определенный набор роутеров с собственной БД и топологией. При этом роутеры из других Area не располагают информацией о чужих топологиях. Зоны имеют собственные ID, которые называются Area ID. Внешне эти ID могут выглядеть как IP, однако таковыми не являются. Теперь давайте рассмотрим типы зон OSPF. Основных пять:
И еще немного терминологии. Внутризональные устройства, в том числе и находящиеся в пределах зоны 0.0.0.0, называют внутренними или Internal. Особенность этих устройств в том, что они имеют зональные интерфейсы и единую Link-State DataBase. При этом каждое устройство может одновременно выступать в разных ролях, а зоны не всегда являются физическими, поскольку для их создания могут использоваться технологии виртуализации инфраструктуры.
Также существует и мультизональная структура, которая используется при значительном числе устройств маршрутизации. Мультизональная структура подходит для сегментирования сети, снижения нагрузки на аппаратную часть и для сокращения количества пересылаемых пакетов.
LSA представляет собой пакет данных с информацией о конкретном устройстве маршрутизации или отдельной сети. Из LSA формируется LSDB, причем данные пакеты имеют 11 разновидностей:
Далее стоит отметить, что независимая передача LSA невозможна, и устройства передают эти данные только внутри пакетов OSPF. Заголовок такого пакета обычно содержит информацию о версии, типе пересылаемых данных, длине, ID устройства, зональный ID и ряд дополнительных данных. Что касается самих типов пакетов OSPF, то различают следующие разновидности:
LSA любого типа формируют Topological DB, а каждое устройство маршрутизации имеет собственную копию этой базы данных, которую они сопоставляют с БД выделенного роутера. При этом остальные роутеры отвечают за информацию об исходящих от них связях. При изменении структуры сети (например, возникли другие связи или какие-то устройства оказались недоступны) рядовой роутер изменяет копию БД и посылает ее выделенному. За это отвечает протокол под названием Flooding. Добавим, что каждая запись в Topological DB имеет свой номер, и чем она новее, тем больше номер. Это помогает поддерживать актуальность базы данных.
Для этого в протоколе используется специальный алгоритм. Он базируется на расчете стоимости пересылки пакетов на основе топологии. При этом стоимость определяется с учетом различных метрик (например, загруженность канала связи, его пропускная способность). Кроме того, имеется и система приоритетов. Так, при построении маршрута в первую очередь анализируются внутренние зоны, затем межзональные пути и уже потом внешние каналы передачи данных. Для расчетов используется алгоритм Дейкстры и регулярно обновляемая таблица Topological DB. При этом данная таблица каждый раз обнуляется, и маршруты выстраиваются заново с учетом новых данных. Разумеется, это довольно затратно в плане нагрузки на процессорные мощности сервера.
Устройства 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 для одной области.
Поддержка IPv6 у OSPF имеется, однако для этого нужно использовать минимум третью версию протокола. Заметим, что вся информация выше одинаково применима ко всем версиям протокола, поэтому настройка IPv6 также не должна вызывать трудностей, поскольку выполняется аналогично процедуре настройки IPv4. После включения протокола необходимо задать ID устройства, причем потребуется сделать это вручную. Всё остальное (Area, IP, другие ID) настраивается точно так же.
OSPF позволяет эффективно выполнять динамическую маршрутизацию локальной сетевой инфраструктуры благодаря вычислениям оптимальных маршрутов по определенным алгоритмам. Единственный недостаток протокола заключается в том, что его работа нагружает процессорные мощности и оперативную память сервера. Однако это компенсируется широкими возможностями масштабирования благодаря построению иерархии зон.