OSPF (англ. Open Shortest Path First) — протокол динамической маршрутизации, основанный на технологии отслеживания состояния канала (link-state technology) и использующий для нахождения кратчайшего пути Алгоритм Дейкстры (Dijkstra’s algorithm).
Протокол OSPF был разработан IETF в 1988 году. Последняя версия протокола представлена в RFC 2328. Протокол OSPF представляет собой протокол внутреннего шлюза (Interior Gateway Protocol — IGP). Протокол OSPF распространяет информацию о доступных маршрутах между маршрутизаторами одной автономной системы.
OSPF имеет следующие преимущества:
- Высокая скорость сходимости по сравнению с дистанционно-векторными протоколами маршрутизации;
- Поддержка сетевых масок переменной длины (VLSM);
- Оптимальное использование пропускной способности (т. к. строится дерево кратчайших путей по алгоритму Дейкстры);
Терминология протокола OSPF
- Интерфейс (interface) — соединение маршрутизатора и одной из подключенных к нему сетей. При обсуждении OSPF термины интерфейс и канал (link) часто употребляются как синонимы.
- Объявление о состоянии канала (link-state advertisement, LSA) — единица данных, которая описывает локальное состояние маршрутизатора или сети. Для маршрутизатора LSA включает описание состояния каналов и отношений соседства. Множество всех LSA, описывающих маршрутизаторы и сети, образуют базу данных состояния каналов.
- Состояние канала (link state) — состояние канала между двумя маршрутизаторами; обновления происходят при помощи пакетов LSA.
- Метрика (metric) — условный показатель "стоимости" пересылки данных по каналу;
- Автономная система (autonomous system) — группа маршрутизаторов, обменивающаяся маршрутизирующей информацией с помощью одного протокола маршрутизации.
- Зона (area) — совокупность сетей и маршрутизаторов, имеющих один и тот же идентификатор зоны.
- Соседи (neighbours) — два маршрутизатора, имеющие интерфейсы в общей сети.
- Состояние соседства (adjacency) — взаимосвязь между определенными соседними маршрутизаторами, установленная с целью обмена информацией маршрутизации.
- Hello-протокол (hello protocol) — протокол, использующийся для поддержания соседских отношений.
- База данных соседей (neighbours database) — список всех соседей.
- База данных состояния каналов (link state database, LSDB) — список всех записей о состоянии каналов. Встречается также термин топологическая база данных (topological database), употребляется как синоним базы данных состояния каналов.
- Идентификатор маршрутизатора (router ID, RID) — уникальное 32-битовое число, которое уникально идентифицирует маршрутизатор в пределах одной автономной системы.
Описание работы протокола
- Маршрутизаторы обмениваются hello-пакетами через все интерфейсы, на которых активирован OSPF. Маршрутизаторы, совместно использующие общий канал передачи данных, становятся соседями, когда они приходят к договоренности об определенных параметрах, указанных в их hello-пакетах.
- На следующем этапе работы протокола маршрутизаторы будут пытаться перейти в состояние смежности со своими соседями. Переход в состояние смежности определяется типом маршрутизаторов, обменивающихся hello-пакетами, и типом сети, по которой передаются hello-пакеты. OSPF определяет несколько типов сетей и несколько типов маршрутизаторов. Пара маршрутизаторов, находящихся в состоянии смежности, синхронизирует между собой базу данных состояния каналов.
- Каждый маршрутизатор посылает объявление о состоянии канала маршрутизаторам, с которыми он находится в состоянии смежности.
- Каждый маршрутизатор, получивший объявление от соседа, записывает информацию, передаваемую в нем, в базу данных состояния каналов маршрутизатора и рассылает копию объявления всем другим своим соседям.
- Рассылая объявления через зону, все маршрутизаторы строят идентичную базу данных состояния каналов маршрутизатора.
- Когда база данных построена, каждый маршрутизатор использует алгоритм "кратчайший путь первым" (shortest path first) для вычисления графа без петель, который будет описывать кратчайший путь к каждому известному пункту назначения с собой в качестве корня. Этот граф — дерево кратчайшего пути.
- Каждый маршрутизатор строит таблицу маршрутизации, основываясь на своем дереве кратчайшего пути.
Типы сетей, поддерживаемые протоколом OSPF
- Широковещательные сети со множественным доступом (Ethernet, Token Ring)
- Точка-точка (T1, E1, коммутируемый доступ)
- Нешироковещательные сети со множественным доступом (Non Broadcast Multiple Access, NBMA) (Frame relay)
В разных типах сетей работа OSPF отличается. В том числе отличается процесс установления отношений соседства и настройки протокола.
Выделенный маршрутизатор (DR) и резервный выделенный маршрутизатор (BDR)
В сетях со множественным доступом отношения соседства должны быть установлены между всеми маршрутизаторами. Это приводит к тому, что рассылается большое количество копий LSA. Если, к примеру, количество маршрутизаторов в сети со множественным доступом равно n, то будет установлено n(n-1)/2 отношений соседства. Каждый маршрутизатор будет рассылать n-1 LSA своим соседям, плюс одно LSA для сети, в результате сеть сгенерирует n² LSA.
Для предотвращения проблемы рассылки копий LSA в сетях со множественным доступом выбираются DR и BDR.
Выделенный маршрутизатор (designated router, DR) — управляет процессом рассылки LSA в сети. Каждый маршрутизатор сети устанавливает отношения соседства с DR. Информация об изменениях в сети отправляется DR, маршрутизатором обнаружившим это изменение, а DR отвечает за то, чтобы эта информация была отправлена остальным маршрутизаторам сети.
Недостатком в схеме работы с DR маршрутизатором является то, что при выходе его из строя должен быть выбран новый DR. Новые отношения соседства должны быть сформированы и, пока базы данных маршрутизаторов не синхронизируются с базой данных нового DR, сеть будет недоступна для пересылки пакетов. Для устранения этого недостатка выбирается BDR.
Резервный выделенный маршрутизатор (backup designated router, BDR). Каждый маршрутизатор сети устанавливает отношения соседства не только с DR, но и BDR. DR и BDR также устанавливают отношения соседства и между собой. При выходе из строя DR, BDR становится DR и выполняет все его функции. Так как маршрутизаторы сети установили отношения соседства с BDR, то время недоступности сети минимизируется.
Маршрутизатор, выбранный DR или BDR в одной присоединенной к нему сети со множественным доступом, может не быть DR (BDR) в другой присоединенной сети. Роль DR (BDR) является свойством интерфейса, а не свойством всего маршрутизатора.
|
Таймеры протокола
- HelloInterval — Интервал времени в секундах, по истечении которого маршрутизатор отправляет следующий hello-пакет с интерфейса. Для широковещательных сетей и сетей точка-точка значение по умолчанию, как правило, равно 10 секундам. Для нешироковещательных сетей со множественным доступом значение по умолчанию — 30 секунд.
- RouterDeadInterval — Интервал времени в секундах, по истечении которого сосед будет считаться "мертвым" (dead). Этот интервал должен быть кратным значению HelloInterval. Как правило, RouterDeadInterval равен 4 интервалам отправки hello-пакетов, то есть 40 секундам.
- Wait Timer — Интервал времени в секундах, по истечении которого маршрутизатор выберет DR в сети. Его значение равно значению интервала RouterDeadInterval.
- RxmtInterval — Интервал времени в секундах, по истечении которого маршрутизатор повторно отправит пакет, на который не получил подтверждения о получении (например, Database Description пакет или Link State Request пакеты). Это интервал называется также Retransmit interval. Значение интервала — 5 секунд.
Константы протокола
Некоторым параметрам OSPF присвоены фиксированные значения. Ниже описаны эти параметры, их названия и соответствующие им значения:
- LSRefreshTime —
- MinLSInterval —
- MinLSArrival —
- MaxAge —
- CheckAge —
- MaxAgeDiff —
- LSInfinity —
- DefaultDestination —
- InitialSequenceNumber —
- MaxSequenceNumber —
Каждые 5 минут (CheckAge) выполняется проверка контрольной суммы всех LSA (в Cisco каждые 10 минут).
|
Типы маршрутизаторов
- Внутренний маршрутизатор (internal router) — маршрутизатор, все интерфейсы которого принадлежат одной зоне. У таких маршрутизаторов только одна база данных состояния каналов.
- Пограничный маршрутизатор (area border router, ABR) — соединяет одну или больше зон с магистральной зоной и выполняет функции шлюза для межзонального трафика. У пограничного маршрутизатора всегда хотя бы один интерфейс принадлежит магистральной зоне. Для каждой присоединенной зоны маршрутизатор поддерживает отдельную базу данных состояния каналов.
- Магистральный маршрутизатор (backbone router) — маршрутизатор, у которого всегда хотя бы один интерфейс принадлежит магистральной зоне. Определение похоже на пограничный маршрутизатор, однако магистральный маршрутизатор не всегда является пограничным. Внутренний маршрутизатор интерфейсы которого принадлежат нулевой зоне, также является магистральным.
- Пограничный маршрутизатор автономной системы (AS boundary router, ASBR) — обменивается информацией с маршрутизаторами, принадлежащими другим автономным системам или не-OSPF маршрутизаторами. Пограничный маршрутизатор автономной системы может находиться в любом месте автономной системы и быть внутренним, пограничным или магистральным маршрутизатором.
Объявления о состоянии канала (LSA)
Объявление о состоянии канала (LSA) — единица данных, которая описывает локальное состояние маршрутизатора или сети.
Множество всех LSA, описывающих маршрутизаторы и сети, образуют базу данных состояния каналов (LSDB).
У каждого типа LSA своя функция:
- Router LSA и Network LSA описывают каким образом соединены маршрутизаторы и сети внутри зоны.
- Summary LSA предназначены для сокращения количества передаваемой информации о зонах.
- AS External LSA позволяет передавать по автономной системе информацию, которая получена из внешних источников (например, из другого протокола маршрутизации).
Фактически, сами по себе LSA маршрутизаторы не передают. Они передают LSA внутри других пакетов:
- В Database Description передается описание всех LSA, которые хранятся в LSDB маршрутизатора,
- В Link State Request передается запрос с описанием тех LSA, которых не хватает в LSDB,
- В Link State Update передаются полные LSA,
- В Link State Acknowledgment передается подтверждение о получении конкретных LSA, с описанием этих LSA.
Заголовок LSA
Все LSA начинаются с одинакового заголовка размером 20 байт.
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | LS age | Options | LS type | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Link State ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Advertising Router | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | LS sequence number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | LS checksum | length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Любое LSA уникально идентифицируют 3 поля заголовка:
- LS type
- Link State ID
- Advertising Router
Так как может существовать несколько копий одного и того же LSA, необходимо определять какая из копий актуальна. Это осуществляется с помощью анализа полей:
- LS age
- LS sequence number
- LS checksum
Одно из полей заголовка — link-state ID (LSID). Для разных LSA это поле может быть разным, в описании каждого типа LSA указано значение этого поля.
Type 1 LSA — Router LSA — объявление о состоянии каналов маршрутизатора. Эти LSA распространяются всеми маршрутизаторами. В LSA содержится описание всех каналов маршрутизатора и стоимость (cost) каждого канала. Распространяются только в пределах одной зоны.
В Router LSA содержится:
- описание всех каналов маршрутизатора
- стоимость (cost) каждого канала
- список соседей на каждом интерфейсе (в зоне маршрутизатора)
Link-state ID — Router ID маршрутизатора, который отправляет LSA.
LSA Type 1 link types и соответствующие link ID:
- Point-to-point соединение с другим маршрутизатором — Router ID соседа
- Соединение с транзитной сетью (сеть, в которой есть как минимум два непосредственно присоединенных маршрутизатора) — IP-адрес DR
- Соединение с тупиковой сетью (сеть, к которой присоединен только один маршрутизатор) — номер сети/подсети
- Virtual link — Router ID соседа
Type 2 LSA — Network LSA — объявление о состоянии каналов сети. Распространяется DR в сетях со множественным доступом. В LSA содержится описание всех маршрутизаторов присоединенных к сети, включая DR. Распространяются только в пределах одной зоны.
В LSA содержится описание всех маршрутизаторов присоединенных к сети, включая DR.
Link-state ID — IP-адрес интерфейса DR.
Type 3 LSA — Network Summary LSA — суммарное объявление о состоянии каналов сети. Объявление распространяется пограничными маршрутизаторами. Объявление описывает только маршруты к сетям вне зоны и не описывает маршруты внутри автономной системы. Пограничный маршрутизатор отправляет отдельное объявление для каждой известной ему сети.
Link-state ID — номер сети назначения.
Когда маршрутизатор получает Network Summary LSA от пограничного маршрутизатора он не запускает алгоритм вычисления кратчайшего пути. Маршрутизатор просто добавляет к стоимости маршрута указанного в LSA стоимость маршрута к пограничному маршрутизатору. Затем маршрут к сети через пограничный маршрутизатор помещается в таблицу маршрутизации.
Type 4 LSA — ASBR Summary LSA — суммарное объявление о состоянии каналов пограничного маршрутизатора автономной системы. Объявление распространяется пограничными маршрутизаторами. ASBR Summary LSA отличается от Network Summary LSA тем, что распространяется информация не о сети, а о пограничном маршрутизаторе автономной системы.
Link-state ID — Router ID ASBR, информацию о котором отправляет LSA.
Type 5 LSA — AS External LSA — объявление о состоянии внешних каналов автономной системы. Объявление распространяется пограничным маршрутизатором автономной системы в пределах всей автономной системы. Объявление описывает маршруты, внешние для автономной системы OSPF, или маршруты по умолчанию (default route), внешние для автономной системы OSPF.
Link-state ID — номер внешней сети.
Type 6 LSA — Multicast OSPF LSA — специализированный LSA, который используют мультикаст OSPF приложения (Not implemented by CISCO).
Type 7 LSA — AS External LSA for NSSA — объявления о состоянии внешних каналов автономной системы в NSSA зоне. Это объявление может передаваться только в NSSA зоне. На границе зоны пограничный маршрутизатор преобразует type 7 LSA в type 5 LSA.
Type 8 LSA — Link LSA — анонсирует link-local адрес и префикс(ы) маршрутизатора всем маршрутизаторам разделяющим канал (link). Отправляется только если на канале присутствует более чем один маршрутизатор. Распространяются только в пределах канала (link).
Type 9 LSA — Intra-Area-Prefix LSA
Типы зон
При разделении автономной системы на зоны, маршрутизаторам, принадлежащим к одной зоне, неизвестна информация о детальной топологии других зон.
Разделение на зоны позволяет:
- Снизить нагрузку на ЦПУ маршрутизаторов за счет уменьшения количества перерасчетов по алгоритму SPF;
- Уменьшить размер таблиц маршрутизации;
- Уменьшить количество пакетов обновлений состояния канала.
Каждой зоне присваивается идентификатор зоны (area ID). Идентификатор может быть указан в десятичном формате или в формате записи IP-адреса. Однако идентификаторы зон не являются IP-адресами, и могут совпадать с любым назначенным IP-адресом.
Существует несколько типов зон:
Магистральная зона (backbone area)
Магистральная зона (известная также как нулевая зона или зона 0.0.0.0) формирует ядро сети OSPF. Все остальные зоны соединены с ней, и межзональная маршрутизация происходит через маршрутизатор, соединенный с магистральной зоной.
Магистральная зона ответственна за распространение маршрутизирующей информации между немагистральными зонами. Магистральная зона должна быть смежной с другими зонами, но она не обязательно должна быть физически смежной; соединение с магистральной зоной может быть установлено и с помощью виртуальных каналов.
Стандартная зона (standard area)
Обычная зона, которая создается по умолчанию. Эта зона принимает обновления каналов, суммарные маршруты и внешние маршруты.
Тупиковая зона (stub area)
Тупиковая зона не принимает информацию о внешних маршрутах для автономной системы, но принимает маршруты из других зон. Если маршрутизаторам из тупиковой зоны необходимо передавать информацию за границу автономной системы, то они используют маршрут по умолчанию.
В тупиковой зоне не может находиться ASBR. Исключение из этого правила — ABR может быть и ASBR.
Totally stubby area
Totally stubby area не принимает информацию о внешних маршрутах для автономной системы и маршруты из других зон. Если маршрутизаторам необходимо передавать информацию за пределы зоны, то они используют маршрут по умолчанию.
В тупиковой зоне не может находиться ASBR. Исключение из этого правила — ABR может быть и ASBR.
Если на ABR настроен суммарный маршрут в totally stubby зону, то он будет анонсироваться.
Термин totally stubby введен именно компанией Cisco, однако многое оборудование тоже может переводить тупиковую зону в totally stubby, отключая отправку суммарных маршрутов в обычную тупиковую зону.
В RFC такой термин явно не определен, но ABR могут регулировать отправку суммарных маршрутов в тупиковую зону любым образом, вплоть до отправки в зону только маршрута по умолчанию (totally stubby).
|
Not-so-stubby area (NSSA)
Зона NSSA определяет дополнительный тип LSA — LSA type 7.
В NSSA зоне может находиться ASBR.
Выбор лучшего маршрута
Маршрутизатор выбирает лучший маршрут на основании наименьшего значения метрики. Однако, OSPF учитывает и несколько других факторов при выборе маршрута.
Выбор лучшего типа маршрута
Если маршрутизатору известны маршруты к одной и той же сети, но эти маршруты разных типов, то маршрутизатор выбирает наиболее приоритетный тип маршрута и не учитывает стоимость маршрута.
Различные типы маршрутов, в порядке убывания приоритета:
- Внутренние маршруты зоны (intra-area)
- Маршруты между зонами (interarea)
- Внешние маршруты типа 1 (E1)
- Внешние маршруты типа 2 (E2)
Хотя стоимость маршрута E2 не меняется при передаче его по зонам (не добавляется стоимость пути к ASBR), при совпадении стоимости маршрутов E2, сравнивается стоимость пути к ASBR, который анонсирует маршрут.
Подробное описание выбора лучшего маршрута с учетом специфики Cisco OSPF route selection rules
Метрика
OSPF использует метрику, которая называется стоимость (cost). Стоимость сравнивается у маршрутов одного типа.
Стоимость присваивается интерфейсу по формуле:
cost = reference bandwidth / link bandwidth
Суммарная стоимость маршрута считается суммированием стоимости исходящих интерфейсов по пути передачи LSA.
Для того чтобы обозначить недоступную сеть, OSPF использует метрику равную 16777215 (224 —1), которая считается недостижимой метрикой для OSPF.
Partial SPF calculation
При получении Network Summary LSA маршрутизатор добавляет в таблицу маршрутизации информацию о сетях, которые анонсируются этим LSA, но не запускает алгоритм SPF для этих сетей.
Метрика для этих сетей высчитывается на основании стоимости, которая анонсируется в Network Summary LSA плюс стоимость пути до ABR, который отправил LSA.
Если в зоне произошли изменения, то маршрутизаторы в других зонах не запускают SPF, а используют новую метрику, которая приходит в Network Summary LSA, добавляют к ней стоимость пути к ABR и помещают маршрут в таблицу маршрутизации — это и называется Partial SPF calculation.
Partial SPF calculation выполняется независимо от того настроено суммирование маршрутов на границе зоны или нет.
ABR Loop Prevention
Внутри зон OSPF использует логику link-state протокола, но между зонами он, в некотором смысле, работает как дистанционно-векторный протокол.
Например, при анонсировании в зону type 3 LSA, передается информация о сети назначения, стоимости пути и ABR, через которого эта сеть достижима — параметры аналогичны информации, которую передают дистанционно-векторные протоколы.
OSPF не использует традиционные механизмы дистанционно-векторных протоколов для предотвращения петель. OSPF использует несколько правил, которые касаются распространения LSA между зонами и таким образом исключает возможность возникновения петель. Но это может привести к тому, что передача данных будет осуществляться не по лучшему пути.
Внешние маршруты
OSPF использует два типа маршрутов для описания сетей вне автономной системы маршрутизатора:
- Type 1 external routes (E1)
- Type 2 external routes (E2)
Type 1 external routes — к метрике внешнего маршрута добавляется стоимость пути к ASBR, который анонсирует этот маршрут. Используется когда несколько маршрутизаторов анонсируют внешнюю сеть. Когда ABR передает type 5 LSA в другую зону, он создает type 4 LSA, которое указывает стоимость пути от этого ABR до ASBR, который создал type 5 LSA.
Маршрутизатор (не ABR), который находится в разных зонах с ASBR, будет высчитывать метрику внешнего маршрута E1 сложив следующие значения метрик:
- метрику внешнего маршрута, которая указана в type 5 LSA,
- стоимость пути к ASBR, которая анонсируется в type 4 LSA,
- стоимость пути к ABR, который анонсировал type 4 LSA.
Type 2 external routes (используется по умолчанию для внешних маршрутов) — используется стоимость внешнего маршрута и при передаче по сети стоимость не увеличивается. Другие маршрутизаторы, при получении type 5 LSA, просто добавляют в свою таблицу маршрутизации маршрут во внешнюю сеть со стоимостью, которая указана в type 5 LSA.
Хотя стоимость маршрута E2 не меняется при передаче его по зонам (не добавляется стоимость пути к ASBR), при совпадении стоимости маршрутов E2, сравнивается стоимость пути к ASBR, который анонсирует маршрут.
|
Forwarding address в Type 5 LSA
В RFC 2328, в разделе 16.4 (Calculating AS external routes), указано:
- If the forwarding address is non-zero, look up the forwarding address in the routing table. The matching routing table entry must specify an intra-area or inter-area path; if no such path exists, do nothing with the LSA and consider the next in the list.
Если forwarding address не равен 0.0.0.0, то для него выполняется проверка в таблице маршрутизации. Маршрут к этому адресу должен быть внутризональным или межзональным (не может быть внешним). Иначе изначальный внешний маршрут не учитывается.
Другими словами: нельзя использовать внешний маршрут для того чтобы дойти до другого внешнего маршрута. Это может привести к петлям, поэтому это запрещено
Типы пакетов OSPF
OSPF использует 5 типов пакетов:
- Hello — используется для обнаружения соседей и построения отношений соседства с ними.
- Database Description (DBD) — проверяет синхронизацию базы данных между маршрутизаторами.
- Link-State Request (LSR) — запрашивает определенные записи о состоянии каналов от маршрутизатора к маршрутизатору.
- Link-State Update (LSU) — отправляет определенные записи о состоянии каналов в ответ на запрос.
- Link-State Acknowledgment (LSAck) — подтверждает получение других типов пакетов.
Формат заголовка пакета OSPF
Все пять типов пакетов OSPF инкапсулируются непосредственно в IP-пакет. Номер протокола OSPF в IP-заголовке — 89.
У всех пакетов OSPF одинаковый заголовок.
Октет 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0—3 Version Type Packet length
4—7 Router ID
8—11 Area ID
12—15 Checksum Authentication type
16—19 Authentication
20—23
- Версия протокола (Version number) — версия протокола OSPF. Текущая версия для IPv4 — 2.
- Тип пакета (Type) — указывает какой тип пакета OSPF передается:
- 1 — Hello
- 2 — Database Description
- 3 — Link State Request
- 4 — Link State Update
- 5 — Link State Acknowledgment
- Длина пакета (Packet length) — длина пакета OSPF в байтах. Длина включает в себя и заголовок.
- Идентификатор маршрутизатора (Router ID) — определяет какой маршрутизатор отправил пакет.
- Идентификатор зоны (Area ID) — определяет в какой зоне сгенерирован пакет.
- Контрольная сумма (Checksum) — используется для проверки целостности пакета OSPF, для обнаружения ошибок при передаче.
- Тип аутентификации (Authentication type) — тип аутентификации, который используется между маршрутизаторами:
- 0 — аутентификация не используется,
- 1 — аутентификация открытым текстом,
- 2 — MD5-аутентификация.
- Данные аутентификации (Authentication) — используется при аутентификации маршрутизаторов.
Поле Данные отличается для различных типов пакетов OSPF:
- Hello — список известных соседей
- DBD — содержит суммарную информацию базы данных состояний каналов, которая включает в себя все известные идентификаторы маршрутизаторов и их последние номера последовательностей (sequence number) и другую информацию.
- LSR — содержит тип необходимого LSU и идентификатор маршрутизатора, у которого есть этот LSU.
- LSU — содержит полные записи объявления о состоянии канала. Несколько LSA могут передаваться в одном пакете обновлений.
- LSAck — поле пустое
Октет | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0—3 | Version | Type | Packet length | |||||||||||||||||||||||||||||
4—7 | Router ID | |||||||||||||||||||||||||||||||
8—11 | Area ID | |||||||||||||||||||||||||||||||
12—15 | Checksum | Authentication type | ||||||||||||||||||||||||||||||
16—19 | Authentication | |||||||||||||||||||||||||||||||
20—23 |
- Версия протокола (Version number) — версия протокола OSPF. Текущая версия для IPv4 — 2.
- Тип пакета (Type) — указывает какой тип пакета OSPF передается:
- 1 — Hello
- 2 — Database Description
- 3 — Link State Request
- 4 — Link State Update
- 5 — Link State Acknowledgment
- Длина пакета (Packet length) — длина пакета OSPF в байтах. Длина включает в себя и заголовок.
- Идентификатор маршрутизатора (Router ID) — определяет какой маршрутизатор отправил пакет.
- Идентификатор зоны (Area ID) — определяет в какой зоне сгенерирован пакет.
- Контрольная сумма (Checksum) — используется для проверки целостности пакета OSPF, для обнаружения ошибок при передаче.
- Тип аутентификации (Authentication type) — тип аутентификации, который используется между маршрутизаторами:
- 0 — аутентификация не используется,
- 1 — аутентификация открытым текстом,
- 2 — MD5-аутентификация.
- Данные аутентификации (Authentication) — используется при аутентификации маршрутизаторов.
- Hello — список известных соседей
- DBD — содержит суммарную информацию базы данных состояний каналов, которая включает в себя все известные идентификаторы маршрутизаторов и их последние номера последовательностей (sequence number) и другую информацию.
- LSR — содержит тип необходимого LSU и идентификатор маршрутизатора, у которого есть этот LSU.
- LSU — содержит полные записи объявления о состоянии канала. Несколько LSA могут передаваться в одном пакете обновлений.
- LSAck — поле пустое
Поле Данные отличается для различных типов пакетов OSPF:
Hello-пакет
Hello-пакет предназначен для установления и поддержания отношений с соседями. Пакет периодически посылается на все интерфейсы маршрутизатора.
Октет | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0—3 | Version | Type = 1 | Packet length | |||||||||||||||||||||||||||||
4—7 | Router ID | |||||||||||||||||||||||||||||||
8—11 | Area ID | |||||||||||||||||||||||||||||||
12—15 | Checksum | Authentication type | ||||||||||||||||||||||||||||||
16—19 | Authentication | |||||||||||||||||||||||||||||||
20—23 | ||||||||||||||||||||||||||||||||
24—27 | Network mask | |||||||||||||||||||||||||||||||
28—31 | Hello interval | Options | Router priority | |||||||||||||||||||||||||||||
32—35 | Router dead interval | |||||||||||||||||||||||||||||||
36—39 | Designated router | |||||||||||||||||||||||||||||||
40—43 | Backup designated router | |||||||||||||||||||||||||||||||
44—47 | Neighbor ID | |||||||||||||||||||||||||||||||
… | … |
- Network mask — сетевая маска интерфейса, через который отправляется hello-пакет;
- Hello interval — интервал задающий частоту рассылки приветственных сообщений для обнаружения соседей в автономной системе, для LAN значение по умолчанию равно 10 секундам;
- Options — 8-битное поле опций, описывает возможности маршрутизатора;
- Router priority — приоритет маршрутизатора, 8-битное число, символизирующее приоритет маршрутизатора при выборе DR (англ. Designated router) и BDR (англ. Backup designated router);
- Router dead interval — период времени, в течение которого маршрутизатор ожидает ответа соседей;
- Designated router (DR) — IP-адрес DR;
- Backup designated router (BDR) — IP-адрес BDR;
- Neighbor ID — идентификатор соседа. Список составляется из идентификаторов соседей, от которых маршрутизатор получил hello-пакеты в течение времени, заданного в поле router dead interval;
Database Description
Пакет Database Description описывает содержание базы данных состояния канала. Обмен пакетами производится при установлении состояния смежности.
Октет | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0—3 | Version | Type = 2 | Packet length | |||||||||||||||||||||||||||||
4—7 | Router ID | |||||||||||||||||||||||||||||||
8—11 | Area ID | |||||||||||||||||||||||||||||||
12—15 | Checksum | Authentication type | ||||||||||||||||||||||||||||||
16—19 | Authentication | |||||||||||||||||||||||||||||||
20—23 | ||||||||||||||||||||||||||||||||
24—27 | Interface MTU | Options | 0 | 0 | 0 | 0 | 0 | I | M | MS | ||||||||||||||||||||||
28—31 | DD sequence number | |||||||||||||||||||||||||||||||
LSA headers |
- Interface MTU — размер в байтах наибольшей IP дейтаграммы, которая может быть послана через данный интерфейс без фрагментации;
- I-бит — устанавливается для первого пакета в последовательности;
- M-бит — указывает наличие последующих дополнительных пакетов;
- MS-бит — устанавливается для ведущего, сбрасывается для ведомого;
- DD sequence number — в начальном пакете устанавливается на уникальное значение, при передаче каждого последующего пакета увеличивается на единицу, пока не будет передана вся база данных;
- LSA headers — массив заголовков базы данных состояния каналов.
Link State Request
Пакет Link State Request предназначен для запроса части базы данных соседнего маршрутизатора.
Октет | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0—3 | Version | Type = 3 | Packet length | |||||||||||||||||||||||||||||
4—7 | Router ID | |||||||||||||||||||||||||||||||
8—11 | Area ID | |||||||||||||||||||||||||||||||
12—15 | Checksum | Authentication type | ||||||||||||||||||||||||||||||
16—19 | Authentication | |||||||||||||||||||||||||||||||
20—23 | ||||||||||||||||||||||||||||||||
24—27 | LS Type | |||||||||||||||||||||||||||||||
28—31 | Link State ID | |||||||||||||||||||||||||||||||
32—35 | Advertising Router | |||||||||||||||||||||||||||||||
… | … |
- LS Type — тип объявления о состоянии канала;
- Link State ID — идентификатор домена маршрутизации;
- Advertising Router — идентификатор маршрутизатора, создавшего объявление о состоянии канала.
Link State Acknowledgment
Подтверждает получение пакета Link State Update.
Октет | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0—3 | Version | Type = 5 | Packet length | |||||||||||||||||||||||||||||
4—7 | Router ID | |||||||||||||||||||||||||||||||
8—11 | Area ID | |||||||||||||||||||||||||||||||
12—15 | Checksum | Authentication type | ||||||||||||||||||||||||||||||
16—19 | Authentication | |||||||||||||||||||||||||||||||
20—23 | ||||||||||||||||||||||||||||||||
LSA headers |
Отношения соседства (adjacency)
Различают понятия сосед и отношения соседства:
- Сосед (neighbor) — два маршрутизатора, которые разделяют канал связи и у которых совпали нужные поля в hello-пакетах;
- Отношения соседства (adjacency или full adjacency) — два соседа, которые завершили процесс обмена сообщениями DD и LSU между собой.
Для того чтобы маршрутизаторы стали соседями:
- необходимо чтобы в hello-пакетах совпали значения таких полей:
- HelloInterval;
- RouterDeadInterval;
- Area ID;
- Authentication — пароль использующийся для аутентификации. Маршрутизаторы не обязательно должны использовать аутентификацию, но если она используется, то пароли должны совпадать;
- Stub area flag — не обязательный флаг, который устанавливается на всех маршрутизаторах, которые принадлежат тупиковой зоне (stub area);
- у маршрутизаторов должны совпадать сеть и маска сети.
- HelloInterval;
- RouterDeadInterval;
- Area ID;
- Authentication — пароль использующийся для аутентификации. Маршрутизаторы не обязательно должны использовать аутентификацию, но если она используется, то пароли должны совпадать;
- Stub area flag — не обязательный флаг, который устанавливается на всех маршрутизаторах, которые принадлежат тупиковой зоне (stub area);
OSPF не проверяет сеть и маску сети при установке отношений соседства в point-to-point сетях. Поэтому можно использовать IP unnumbered интерфейсы.
|
Для того чтобы маршрутизаторы установили отношения соседства у них, кроме уже перечисленных критериев, должны совпадать значения IP MTU на интерфейсах. Информация о значении IP MTU передается в DD-пакетах и сравнивается в начале обмена DD-пакетами.
|
Отношения соседства устанавливаются только на primary адресах.
На интерфейсе может быть настроен secondary адрес. Маршрутизаторы не отправляют hello-пакеты с secondary адреса, не устанавливают отношения соседства на secondary адресах, но сеть secondary адреса может анонсироваться.
Возможные состояния
- Down — начальное состояние процесса обнаружения соседей. Это состояние указывает на то, что от соседей не была получена свежая информация. В NBMA сетях Hello-пакеты могут отправляться и соседям в состоянии Down, однако с меньшей частотой (PollInterval).
- Attempt — это состояние имеет смысл только для соседей, которые присоединены к NBMA сетям. Оно указывает на то, что от соседа не была получена свежая информация и что нужно сделать попытку связаться с соседом. Это делается путём отправки соседу сообщений Hello с промежутком времени HelloInterval (в Cisco в этом состоянии сообщения Hello отправляются каждый PollInterval. Имеет смысл для соседей в NBMA сетях, которые заданы командой neighbor).
- Init — состояние, в котором находится маршрутизатор, отправивший своему соседу hello и ожидающий от него ответного hello.
- Two-way — при получении ответных hello маршрутизатор должен увидеть в них свой RID в списке соседей. Если это так, то он устанавливает отношения и переходит в состояние two-way.
- Exstart — маршрутизаторы определяют Master/Slave отношения на основании Router ID. Маршрутизатор с высшим RID становится Master-маршрутизатором, который определяет DD Sequence number, а также первым начинает обмен DB Description.
- Exchange — маршрутизаторы посылают друг другу database description пакеты (DDPs) с информацией о сетях, содержащихся в их собственной базе каналов (database).
- Loading — Если маршрутизатор видит, что части маршрутов нет в его topology table, он посылает сообщение типа LSR с перечислением тех сетей, по которым он хочет получить дополнительную информацию. Пока маршрутизатор находится в ожидании ответа в виде LSU сообщений, он пребывает в состоянии Loading.
- Full — Когда маршрутизатор получил всю информацию и database на обоих маршрутизаторах синхронизирована, оба маршрутизатора переходят в состояние fully adjacent.
- Attempt — это состояние имеет смысл только для соседей, которые присоединены к NBMA сетям. Оно указывает на то, что от соседа не была получена свежая информация и что нужно сделать попытку связаться с соседом. Это делается путём отправки соседу сообщений Hello с промежутком времени HelloInterval (в Cisco в этом состоянии сообщения Hello отправляются каждый PollInterval. Имеет смысл для соседей в NBMA сетях, которые заданы командой neighbor).
Вычисление таблицы маршрутизации
В этом разделе описывается каким образом OSPF заполняет таблицу маршрутизации. Используя базы данных состояния каналов для зон к которым он подключен, маршрутизатор выполняет описанную последовательность действий, строя таблицу маршрутизации шаг за шагом. На каждом этапе маршрутизатор обращается к определенным участкам LSDB. Если в LSDB есть LSA у которых LS age равно MaxAge, то они не учитываются при вычислении таблицы маршрутизации.
Процесс построения таблицы маршрутизации:
- Текущая таблица маршрутизации обнуляется. Таблица маршрутизации строится снова с нуля. Старая таблица маршрутизации сохраняется для того чтобы изменения в определенных записях таблицы можно было обнаружить.
- С помощью построения дерева кратчайшего пути для каждой присоединенной зоны вычисляются внутризональные маршруты. Во время вычисления дерева кратчайшего пути для зоны, также для зоны высчитывается TransitCapability, которая используется позже на 4 этапе. Фактически, все записи таблицы маршрутизации с типом назначения (Destination Type) area border router высчитываются на втором этапе. Этот этап состоит из двух частей:
- Сначала дерево строится с учетом только линков между маршрутизаторами и транзитными сетями.
- Затем тупиковые сети включаются в дерево.
- Межзональные маршруты вычисляются выполнением просмотра существующих summary LSA. Если маршрутизатор пограничный, то просматриваются суммарные LSA только магистральной зоны.
- На пограничных маршрутизаторах, которые присоединены к одной или более транзитным зонам (не магистральные зоны в которых TransitCapability установлена в TRUE), проверяются суммарные LSA транзитных зон. LSA проверяются на наличие лучших путей, чем пути, которые были обнаружены на этапах 2-3.
- Высчитываются маршруты к внешним сетям. Для этого просматриваются AS-external-LSA. Местонахождение ASBR-маршрутизаторов было обнаружено на этапах 2-4.
В этом разделе описывается каким образом OSPF заполняет таблицу маршрутизации. Используя базы данных состояния каналов для зон к которым он подключен, маршрутизатор выполняет описанную последовательность действий, строя таблицу маршрутизации шаг за шагом. На каждом этапе маршрутизатор обращается к определенным участкам LSDB. Если в LSDB есть LSA у которых LS age равно MaxAge, то они не учитываются при вычислении таблицы маршрутизации.
Процесс построения таблицы маршрутизации:
- Текущая таблица маршрутизации обнуляется. Таблица маршрутизации строится снова с нуля. Старая таблица маршрутизации сохраняется для того чтобы изменения в определенных записях таблицы можно было обнаружить.
- С помощью построения дерева кратчайшего пути для каждой присоединенной зоны вычисляются внутризональные маршруты. Во время вычисления дерева кратчайшего пути для зоны, также для зоны высчитывается TransitCapability, которая используется позже на 4 этапе. Фактически, все записи таблицы маршрутизации с типом назначения (Destination Type) area border router высчитываются на втором этапе. Этот этап состоит из двух частей:
- Сначала дерево строится с учетом только линков между маршрутизаторами и транзитными сетями.
- Затем тупиковые сети включаются в дерево.
- Межзональные маршруты вычисляются выполнением просмотра существующих summary LSA. Если маршрутизатор пограничный, то просматриваются суммарные LSA только магистральной зоны.
- На пограничных маршрутизаторах, которые присоединены к одной или более транзитным зонам (не магистральные зоны в которых TransitCapability установлена в TRUE), проверяются суммарные LSA транзитных зон. LSA проверяются на наличие лучших путей, чем пути, которые были обнаружены на этапах 2-3.
- Высчитываются маршруты к внешним сетям. Для этого просматриваются AS-external-LSA. Местонахождение ASBR-маршрутизаторов было обнаружено на этапах 2-4.
Комментариев нет:
Отправить комментарий