Открытый протокол, базирующийся на алгоритме поиска наикратчайшего пути (Open Shortest Path Fisrt - OSPF) является протоколом маршрутизации, разработанным для сетей IP рабочей группой Internet Engineering Task Force (IETF), занимающейся разработкой протоколов для внутрисистемных роутеров (interior gateway protocol - IGP). Рабочая группа была образована в 1988 г. для разработки протокола IGP, базирующегося на алгоритме "поиска наикратчайшего пути" (shortest path first - SPF), с целью его использования в Internet, крупной международной сети, об'единяющей научно-исследовательские институты, правительственные учреждения, университеты и частные предприятия. Как и протокол IGRP (смотри Главу 24 "IGRP"), OSPF был разработан по той причине, что к середине 1980 гг. непригодность RIP для обслуживания крупных гетерогенных об'единенных систем стала все более очевидна (смотри Главу 23 "RIP").
ОSPF явился результатом научных исследований по нескольким направлениям, включающим:
(Информация о IS-IS дается в Главе 28 "Maршрутизация OSI").
Как видно из его названия, OSPF имеет две основных характеристики. Первая из них-это то, что протокол является открытым, т.е. его спецификация является общественным достоянием. Спецификация OSPF опубликована в форме Запроса для Комментария (RFC) 1247. Второй его главной характеристикой является то, что он базируется на алгоритме SPF. Алгоритм SPF иногда называют алгоритмом Dijkstra по имени автора, который его разработал.
OSPF является протоколом маршрутизации с об'явлением состояния о канале (link-state). Это значит, что он требует отправки об'явлений о состоянии канала (link-state advertisement - LSA) во все роутеры, которые находятся в пределах одной и тойже иерархической области. В oб'явления LSA протокола OSPF включается информация о подключенных интерфейсах, об использованных показателях и о других переменных. По мере накопления роутерами OSPF информации о состоянии канала, они используют алгоритм SPF для расчета наикратчайшего пути к каждому узлу.
Являясь алгоритмом с об'явлением состояния канала, OSPF отличается от RIP и IGRP, которые являются протоколами маршрутизации с вектором расстояния. Роутеры, использующие алгоритм вектора расстояния, отправляют всю или часть своей таблицы маршрутизации в сообщения о корректировке маршрутизации, но только своим соседям.
В отличие от RIP, OSPF может работать в пределах некоторой иерархической системы. Самым крупным об'ектом в этой иерархии является автономная система (Autonomous System - AS) AS является набором сетей, которые находятся под единым управлением и совместно используют общую стратегию маршрутизации. OSPF является протоколом маршрутизации внутри AS, хотя он и способен принимать маршруты из других AS и отправлять маршруты в другие AS.
Любая AS может быть разделена на ряд областей (area). Область - это группа смежных сетей и подключенных к ним хостов. Роутеры, имеющие несколько интерфейсов, могут участвовать в нескольких областях. Такие роутеры, которые называются роутерами границы областей (area border routers), поддерживают отдельные топологические базы данных для каждой области.
Топологическая база (topological database) данных фактически представляет собой общую картину сети по отношению к роутерам. Топологическая база данных содержит набор LSA, полученных от всех роутеров, находящихся в одной области. Т.к. роутеры одной области коллективно пользуются одной и той же информацией, они имеют идентичные топологические базы данных.
Термин "домен" (domain) исользуется для описания части сети, в которой все роутери имеют идентичную топологическую базу данных. Термин "домен" часто используется вместо AS.
Топология области является невидимой для об'ектов, находящихся вне этой области. Путем хранения топологий областей отдельно, OSPF добивается меньшего трафика маршрутизации, чем трафик для случая, когда AS не разделена на области.
Разделение на области приводит к образованию двух различных типов маршрутизации OSPF, которые зависят от того, находятся ли источник и пункт назначения в одной и той же или разных областях. Маршрутизация внутри области имеет место в том случае, когда источник и пункт назначения находятся в одной области; маршрутизация между областями - когда они находятся в разных областях.
Стержневая часть OSPF (backbone) отвечает за распределение маршрутной информации между областями. Она включает в себя все роутеры границы области, сети, которые не принадлежат полностью како-либо из областей, и подключенные к ним роутеры. На Рис. 25-1 представлен пример об'единенной сети с несколькими областями.
На этом рисунке роутеры 4, 5, 6, 10, 11 и 12 образуют стержень. Если хост Н1 Области 3 захочет отправить пакет хосту Н2 Области 2, то пакет отправляется в роутер 13, который продвигает его в роутер 12, который в свою очередь отправляет его в роутер 11. Роутер 11 продвигает пакет вдоль стержня к роутеру 10 границы области, который отправляет пакет через два внутренних роутера этой области (роутеры 9 и 7) до тех пор, пока он не будет продвинут к хосту Н2.
Сам стержень представляет собой одну из областей OSPF, поэтому все стержневые роутеры используют те же процедуры и алгоритмы поддержания маршрутной информации в пределах стержневой области, которые используются любым другим роутером. Топология стержневой части невидима для всех внутренних роутеров точно также, как топологии отдельных областей невидимы для стержневой части.
Область может быть определена таким образом, что стержневая часть не будет смежной с ней. В этом случае связность стержневой части должна быть восстановлена через виртуальные соединения. Виртуальные соединения формируются между любыми роутерами стержневой области, которые совместно используют какую-либо связь с любой из нестержневых областей; они функционируют так, как если бы они были непосредственными связями.
Граничные роутеры AS, использующие OSPF, узнают о внешних роутерах через протоколы внешних роутеров (EGPs), таких, как Exterior Gateway Protocol (EGP) или Border Gateway Protocol (BGP), или через информацию о конфигурации (информация об этих протоколах дается соответственно в Главе 26 "EGP" и Главе 27 "BGP").
Алгоритм маршрутизации SPF является основой для операций OSPF. Когда на какой-нибудь роутер SPF подается питание, он инициилизирует свои структуры данных о протоколе маршрутизации, а затем ожидает индикации от протоколов низшего уровня о том, что его интерфейсфы работоспособны.
После получения подтверждения о работоспособности своих интерфейсов роутер использует приветственный протокол (hello protocol) OSPF, чтобы приобрести соседей (neighbor). Соседи - это роутеры с интерфейсами с общей сетью. Описываемый роутер отправляет своим соседям приветственные пакеты и получает от них такие же пакеты. Помимо оказания помощи в приобретении соседей, приветственные пакеты также действуют как подтверждение дееспособности, позволяя другим роутерам узнавать о том, что другие роутери все еще функционируют.
В сетях с множественным доступом (multi-access networks) (сетях, поддержиающих более одного роутера), протокол Hello выбирает назначенный роутер (designated router) и дублирующий назначенный роутер. Назначеный роутер, помимо других функций, отвечает за генерацию LSA для всей сети с множественным доступом. Назначенные роутеры позволяют уменьшить сетевой трафик и об'ем топологической базы данных.
Если базы данных о состоянии канала двух роутеров являются синхронными, то говорят, что эти роутеры смежные (adjacent). В сетях с множественным доступом назначенные роутеры определяют, какие роутеры должны стать смежными. Топологические базы данных синхронизируются между парами смежных роутеров. Смежности управляют распределением пакетов протокола маршрутизации. Эти пакеты отправляются и принимаются только на смежности.
Каждый роутер периодическив отправляет какое-нибудь LSA. LSA также отправляются в том случае, когда изменяется состояние какого- нибудь роутера. LSA включает в себя информацию о смежностях роутера. При сравнении установленных смежностей с состоянием канала быстро обнаруживаются отказавшие роутеры, и топология сети изменяется сооответствующим образом. Из топологической базы данных, генерируемых LSA, каждый роутер рассчитывает дерево наикратчайшего пути, корнем которого является он сам. В свою очередь дерево наикратчайшего пути выдает маршрутную таблицу.
Все пакеты OSPF начинаются с 24-байтового заголовка, как показано на Рис. 25-2.
Первое поле в заголовке OSPF - это номер версии OSPF (version number). Номер версии обозначает конкретную используемую реализацию OSPF.
За номером версии идет поле типа (type). Существует 5 типов пакета OSPF:
Каждое LSA в пакете корректировки состояния канала содержит тип поля. Существуют 4 типа LSA:
За полем типа заголовка пакета OSPF идет поле длины пакета (packet length). Это поле обеспечивает длину пакета вместе с заголовком OSPF в байтах.
Поле идентификатора роутера (router ID) идентифицирует источник пакета.
Поле идентификатора области (area ID) идентифицирует область, к которой принадлежит данный пакет. Все пакеты OSPF связаны с одной отдельной областью.
Стандартное поле контрольной суммы IP (checksum) проверяет содержимое всего пакета для выявления потенциальных повреждений, имевших место при транзите.
За полем контрольной суммы идет поле типа удостоверения (authentication type). Примером типа удостоверения является "простой пароль". Все обмены протокола OSPF проводятся с установлением достоверности. Тип удостоверения устанавливается по принципу "отдельный для каждой области".
За полем типа удостоверения идет поле удостоверения (authentication). Это поле длиной 64 бита и содержит информацию удостоверения.
В числе дополнительных характеристик OSRF - равные затраты, многотрактовая маршрутизация (multipath routing) и маршрутизация, базирующаяся на запросах типа услуг высшего уровня (type of service - TOS). Базирующаяся на TOS маршрутизация поддерживает те протоколы высшего уровня, которые могут назначать конкретные типы услуг. Например, какая-нибудь прикладная программа может включить требование о том, что определенная информация является срочной. Если OSPF имеет в своем распоряжении каналы с высоким приоритетом, то они могут быть использованы для транспортировки срочных дейтаграмм.
OSPF обеспечивает один или более показателей. Если используется только один показатель, то он считается произвольным, и TOS не обеспечивается. Если используется более одного показателя, то TOS обеспечивается факультативно путем использования отдельного показателя (и следовательно, отдельной маршрутной таблицы) для каждой из 8 комбинаций, образованной тремя битами IP TOS: битом задержки (delay), производительности (throughput) и надежности (reliability). Например, если биты IP TOS задают небольшую задержку, низкую производительность и высокую надежность, то OSPF вычисляет маршруты во все пункты назначения, базируясь на этом обозначении TOS.
Маски подсети IP включаются в каждый об'явленный пункт назначения, что позволяет использовать маски подсети переменной длины (variable-length subnet masks). С помощью масок подсети переменной длины сеть IP может быть разбита на несколько подсетей разной величины. Это обеспечивает администраторам сетей дополнительную гибкость при выборе конфигурации сети.