Протокол OSPF позволяет также редуцировать размер базы данных состояния связей. Для этого в граф системы вводится виртуальная вершина «транзитная сеть», представляющая собой сеть множественного доступа как таковую. Каждый маршрутизатор, в том числе и выделенный, при таком подходе имеет не набор двухточечных связей со всеми остальными маршрутизаторами своей сети, а одну связь с вершиной «транзитная сеть».
Выборы выделенного маршрутизатора проводятся с помощью протокола Hello. Кроме выделенного маршрутизатора выбирается также и запасной выделенный маршрутизатор (backup designated router, BDR), остальные маршрутизаторы сети устанавливают отношения смежности как с DR, так и с BDR (следовательно, в предыдущем пункте при описании отношений смежности не хватает BDR). Все сообщения для DR и BDR посылаются по мультикастинговому адресу 224.0.0.6 «Всем выделенным OSPF‑маршрутизаторам».
Запасной выделенный маршрутизатор получает эти сообщения, но не предпринимает никаких действий, связанных со своей выделенной функцией. Однако если выделенный маршрутизатор отключается (этот факт детектируется с помощью протокола Hello), то запасной немедленно становится выделенным, не тратя времени на установление отношений смежности с остальными маршрутизаторами, так как эти отношения уже установлены. При этом с помощью протокола Hello выбирается новый запасной выделенный маршрутизатор. Если бывший выделенный маршрутизатор подключится снова, статус выделенного маршрутизатора ему не возвращается.
В случае, когда несколько OSPF‑маршрутизаторов подключены к сети множественного доступа, не поддерживающей широковещательную передачу (NBMA‑сеть), они следуют той же процедуре, что и в случае широковещательной сети, поскольку каждый маршрутизатор также может непосредственно связаться с каждым, и, следовательно, существует та же проблема по числу отношений смежности и числу записей в базе данных состояния связей. В случае NBMA‑сетей проблема даже усугубляется тем, что поддержка постоянных соединений между любыми двумя маршрутизаторами для обмена маршрутной информацией (отношения смежности) может потребовать значительных технических и финансовых затрат.
Отличие NBMA от широковещательных сетей состоит в том, что адреса всех соседей должны быть предварительно сконфигурированы на каждом маршрутизаторе, потому что возможности передавать мультикастинговые сообщения нет.
Если маршрутизатор, подключенный к нешироковещательной сети, может непосредственно связаться с несколькими, но не со всеми маршрутизаторами этой сети (неполный множественный доступ), такое соединение конфигурируется как point-to-multipoint и не рассматривается протоколом OSPF как сеть множественного доступа со всеми вышеописанными последствиями. Маршрутизатор, подключенный к соединению типа point-to-multipoint, устанавливает двухточечные связи с каждым своим соседом по соединению.
Могут быть также причины, по которым администратор пожелает сконфигурировать сеть с полным множественным доступом как point-to-multipoint.
Для упрощения вычисления маршрутов и уменьшения размера базы данных состояния связей OSPF‑система может быть разбита на отдельные независимые области (areas), объединяемые в единую систему особой областью, называемой магистралью (backbone). Области, не являющиеся магистралью, называются периферийными.
Маршруты внутри каждой области вычисляются как в отдельной системе: база данных состояния связей содержит записи только о связях маршрутизаторов внутри области, действие протокола затопления не распространяется за пределы области.
Некоторые маршрутизаторы принадлежат магистрали и одной или нескольким периферийным областям. Такие маршрутизаторы называются областными пограничными маршрутизаторами (area border router, ABR). Каждая область должна иметь как минимум один ABR, иначе она будет полностью изолирована от остальной части системы.
Областные пограничные маршрутизаторы поддерживают отдельные базы данных состояния связей для всех областей, к которым они подключены. На основании этих данных они обобщают информацию о достижимости сетей внутри отдельных областей и сообщают результат в смежную область. Также ABR обрабатывают подобные сообщения от других ABR (граничащих с другими областями) и ретранслируют информацию о внешних маршрутах, исходящую от пограничных маршрутизаторов (автономной) системы (ASBR).
Тем самым обеспечивается передача маршрутной информации и коннективность между областями. При этом, за пределы области передается не полная база данных состояния связей, а просто список сетей этой области, достижимых извне области через данный ABR, вместе с метриками расстояния до этих сетей. Если возможно, адреса сетей агрегируются в общий адрес с более короткой маской. Подобную же информацию, но только о сетях, лежащих за пределами OSPF‑системы, распространяют ASBR.
Области, внутрь которых не передается информация о внешних маршрутах, называются тупиковыми областями (stub areas). Все дейтаграммы, исходящие из данной области и адресованные за пределы автономной системы, отправляются по маршруту по умолчанию (default) через определенный ABR. Тупиковая область может иметь несколько ABR, но для каждого узла внутри области установлен маршрут по умолчанию, проходящий только через один их ABR.
Протокол OSPF определяет также понятие не совсем тупиковых областей (not so stubby area, NSSA). К таким областям относятся тупиковые области, в которых разрешено объявлять некоторые внешние маршруты.
Протокол OSPF в стеке протоколов TCP/IP находится непосредственно над протоколом IP, код OSPF равен 89. То есть если значение поля «Protocol» IP‑дейтаграммы равно 89, то данные дейтаграммы являются сообщением OSPF и передаются OSPF‑модулю для обработки. Соответственно размер OSPF‑сообщения ограничен максимальным размером дейтаграммы.
Все сообщения OSPF имеют общий заголовок (следующий в дейтаграмме непосредственно за IP‑заголовком):
Значения полей:
· Version (1 октет) – версия протокола (=2);
· Type (1 октет) – тип сообщения:
1. Hello;
2. описание базы данных (DatabaseDescription);
3. запрос состояния связей (Link State Request);
4. обновление состояния связей (Link State Update);
5. подтверждение приема сообщения о состоянии связей (Link State Acknowledgment).
· Packet length (2 октета) – длина сообщения в октетах, включая заголовок.
· Router ID (4 октета) – идентификатор маршрутизатора, отправившего сообщение. Router ID равен адресу одного из IP‑интерфейсов маршрутизатора. У маршрутизаторов Cisco это наибольший из адресов локальных интерфейсов, а если таковых нет, то наибольший из адресов внешних интерфейсов.
· Area ID (4 октета) – номер области, к которой относится данное сообщение; номер 0 зарезервирован для магистрали. Часто номер области полагают равным адресу IP‑сети (одной из IP‑сетей) этой области.
· Checksum (2 октета) – контрольная сумма, охватывает все OSPF‑сообщение, включая заголовок, но исключая поле «Authentication»; вычисляется по тому же алгоритму, что и в IP‑заголовке.
· Authentication Type (2 октета) – тип аутентификации сообщения. Стандарт определяет несколько возможных типов, самые простые из них: 0 – нет аутентификации, 1 – аутентификация с помощью пароля.
· Authentication (8 октетов) – аутентификационные данные; например, восьмисимвольный пароль.
· Далее при рассмотрении формата сообщений вышеописанный заголовок будет изображаться в виде поля «OSPF‑заголовок», помещенного в начало сообщения.
После инициализации модуля OSPF (например, после подачи питания на маршрутизатор) через все интерфейсы, включенные в OSPF‑систему, начинают рассылаться Hello‑сообщения. Задача Hello‑протокола – обнаружение соседей и установление с ними отношений смежности.
Соседями называются OSPF‑маршрутизаторы, подключенные к одной сети (к одной линии связи) и обменивающиеся Hello‑сообщениями.
Смежными называются соседние OSPF маршрутизаторы, которые приняли решение обмениваться друг с другом информацией, необходимой для синхронизации базы данных состояния связей и построения маршрутов. Не все соседи становятся смежными.
Другая задача протокола Hello – выбор выделенного маршрутизатора в сети с множественным доступом, к которой подключено несколько маршрутизаторов.
Hello‑пакеты продолжают периодически рассылаться и после того, как соседи были обнаружены. Таким образом маршрутизатор контролирует состояние своих связей с соседями и может своевременно обнаружить изменение этого состояние (например, обрыв связи или отключение одного из соседей). Обрыв связи может быть также обнаружен и с помощью протокола канального уровня, который просигнализирует о недоступности канала.
В сетях с возможностью широковещательной рассылки (broadcast networks) Hello‑пакеты рассылаются по мультикастинговому адресу 224.0.0.5 («Всем ОSPF‑маршрутизаторам»). В других сетях все возможные адреса соседей должны быть введены администратором.
Значения полей:
· Network Mask (4 октета) – маска IP‑сети, в которой находится интерфейс маршрутизатора, отправившего сообщение.
· Hello Interval (2 октета) – период посылки Hello‑сообщений, в секундах.
· Options (1 октет) – определено значение нескольких бит:
DC | EA | N/P | MC | E | T |
o Бит Т установлен, поддерживается маршрутизация по типу сервиса (этот бит исключен из последней версии стандарта OSPF, но может поддерживаться для совместимости с предыдущими версиями).