OSPF
Материал из Xgu.ru
|
Эта статья находится в процессе написания. |
- Автор: Наташа Самойленко
[править] Описание протокола
(продублировано в Википедии: [1])
[править] Терминология протокола 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) — обменивается информацией с маршрутизаторами, принадлежащими другим автономным системам. Пограничный маршрутизатор автономной системы может находиться в любом месте автономной системы и быть внутренним, пограничным или магистральным маршрутизатором.
[править] Объявления о состоянии канала (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
Type 1 LSA — Router LSA — объявление о состоянии каналов маршрутизатора. Эти LSA распространяются всеми маршрутизаторами. Распространяются только в пределах одной зоны.
В 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
Type 2 LSA — Network LSA — объявление о состоянии каналов сети. Распространяется DR в сетях со множественным доступом. Network LSA не создается для сетей в которых не выбирается DR. Распространяются только в пределах одной зоны.
В LSA содержится описание всех маршрутизаторов присоединенных к сети, включая DR.
Link-state ID — IP-адрес интерфейса DR.
[править] Type 3 LSA
Type 3 LSA — Network Summary LSA — суммарное объявление о состоянии каналов сети. Объявление распространяется пограничными маршрутизаторами. Объявление описывает только маршруты к сетям вне зоны и не описывает маршруты внутри автономной системы. Маршрутизатор отправляет информацию о сетях и о стоимости пути к этим сетям, но не отправляет информацию о топологии сети. Пограничный маршрутизатор отправляет отдельное объявление для каждой известной ему сети.
Link-state ID — номер сети назначения.
Когда маршрутизатор получает Network Summary LSA от пограничного маршрутизатора он не запускает алгоритм вычисления кратчайшего пути. Маршрутизатор просто добавляет к стоимости маршрута указанного в LSA стоимость маршрута к пограничному маршрутизатору. Затем маршрут к сети через пограничный маршрутизатор помещается в таблицу маршрутизации.
[править] Type 4 LSA
Type 4 LSA — ASBR Summary LSA — суммарное объявление о состоянии каналов пограничного маршрутизатора автономной системы.
Объявление распространяется пограничными маршрутизаторами (ABR). ASBR Summary LSA отличается от Network Summary LSA тем, что распространяется информация не о сети, а о пограничном маршрутизаторе автономной системы.
Link-state ID — Router ID ASBR, информацию о котором отправляет LSA.
[править] Type 5 LSA
Type 5 LSA — AS External LSA — объявления о состоянии внешних каналов автономной системы. Объявление распространяется пограничным маршрутизатором автономной системы в пределах всей автономной системы.
Объявление описывает маршруты внешние для автономной системы OSPF или маршруты по умолчанию (default route) внешние для автономной системы OSPF.
Link-state ID — номер внешней сети.
[править] Type 7 LSA
Type 7 LSA — AS External LSA for NSSA — объявления о состоянии внешних каналов автономной системы в NSSA зоне. Это объявление может передаваться только в NSSA зоне. На границе зоны пограничный маршрутизатор преобразует type 7 LSA в type 5 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, который анонсирует маршрут.
[править] Метрика
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.
[править] Типы пакетов 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 одинаковый заголовок.
|<-------------------------- 32 бита --------------------------->| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Version # | Type | Packet length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Router ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Area ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | AuType | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Authentication | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Authentication | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Поля заголовка пакета OSPF:
- Версия протокола (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 — поле пустое
[править] Hello
Hello-протокол используется для таких целей:
- С помощью него каждый маршрутизатор обнаруживает своих соседей;
- Он передает параметры о которых маршрутизаторы должны договориться прежде чем они станут соседями;
- Hello-пакеты выполняют роль keepalive-пакетов между соседями;
- Отвечает за установление двухсторонних коммуникаций между соседними маршрутизаторами (двухсторонняя коммуникация установлена тогда, когда маршрутизатор увидит себя в списке соседей hello-пакета полученного от соседнего маршрутизатора);
- Он выбирает DR и BDR в широковещательных и нешироковещательных сетях со множественным доступом.
Кроме стандартного заголовка пакета OSPF, в hello-пакете содержится такая информация:
|<-------------------------- 32 бита --------------------------->| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Version # | 1 | Packet length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Router ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Area ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | AuType | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Authentication | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Authentication | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Network Mask | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | HelloInterval | Options | Rtr Pri | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | RouterDeadInterval | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Designated Router | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Backup Designated Router | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Neighbor | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ... |
- Network mask — сетевая маска назначенная на интерфейсе с которого отправляется hello-пакет;
- HelloInterval — частота отправки hello-пакетов;
- Options — дополнительные опции, которые может поддерживать маршрутизатор. Это поле есть в пакетах hello, DBD, LSA. Согласно RFC 2328 могут быть установлены такие 5 битов:
- E-bit — указывает каким образом распространяются AS-external-LSA
- MC-bit — указывает соответствует ли IP multicast датаграмма спецификациям RFC 1584;
- N/P-bit — указывает как обрабатываются Type-7 LSA (RFC 1587);
- EA-bit — указывает желание маршрутизатора получать и отправлять External-Attributes-LSA;
- DC-bit — указывает как маршрутизатор работает с demand circuits (RFC 1793);
- Rtr Pri — приоритет маршрутизатора. Используется для выбора DR и BDR. Если приоритет установлен в 0, то маршрутизатор не может стать DR или BDR;
- RouterDeadInterval — интервал времени по истечению которого сосед будет считаться "мертвым";
- Designated Router — IP-адрес DR для сети в которую отправлен hello-пакет, с точки зрения отправляющего маршрутизатора. Поле установлено в значение 0.0.0.0, если в сети нет DR;
- Backup Designated Router — IP-адрес BDR для сети в которую отправлен hello-пакет, с точки зрения отправляющего маршрутизатора. Поле установлено в значение 0.0.0.0, если в сети нет BDR;
- Neighbor — идентификаторы всех маршрутизаторов от который маршрутизатор-отправитель получал hello-пакеты в течение последнего интервала RouterDeadInterval.
[править] Database Description
|<-------------------------- 32 бита --------------------------->| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Version # | 2 | Packet length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Router ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Area ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | AuType | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Authentication | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Authentication | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Interface MTU | Options |0|0|0|0|0|I|M|MS +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | DD sequence number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +- -+ | | +- An LSA Header -+ | | +- -+ | | +- -+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ... |
[править] Link State Request
Запрос информации о состоянии канала. Этот тип пакетов запрашивает отдельные фрагменты базы данных состояния каналов маршрутизатора.
|<-------------------------- 32 бита --------------------------->| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Version # | 3 | Packet length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Router ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Area ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | AuType | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Authentication | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Authentication | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | LS type | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Link State ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Advertising Router | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ... |
[править] Link State Update
|<-------------------------- 32 бита --------------------------->| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Version # | 4 | Packet length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Router ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Area ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | AuType | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Authentication | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Authentication | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | # LSAs | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +- +-+ | LSAs | +- +-+ | ... |
[править] Link State Acknowledgment
|<-------------------------- 32 бита --------------------------->| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Version # | 5 | Packet length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Router ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Area ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | AuType | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Authentication | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Authentication | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +- -+ | | +- An LSA Header -+ | | +- -+ | | +- -+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ... |
[править] Отношения соседства (adjacency)
Различают понятия сосед и отношения соседства:
- Сосед (neighbor) — два маршрутизатора, которые разделяют канал связи и у которых совпали нужные поля в hello-пакетах;
- Отношения соседства (adjacency или full adjacency) — два соседа, которые завершили процесс обмена сообщениями DD и LSU между собой.
Для того чтобы маршрутизаторы стали соседями:
- необходимо чтобы в hello-пакетах совпали значения таких полей:
- HelloInterval;
- RouterDeadInterval;
- Area ID;
- Authentication — пароль использующийся для аутентификации. Маршрутизаторы не обязательно должны использовать аутентификацию, но если она используется, то пароли должны совпадать;
- Stub area flag — не обязательный флаг, который устанавливается на всех маршрутизаторах, которые принадлежат тупиковой зоне (stub area);
- у маршрутизаторов должны совпадать сеть и маска сети.
|
Для того чтобы маршрутизаторы установили отношения соседства у них, кроме уже перечисленных критериев, должны совпадать значения MTU на интерфейсах. Информация о значении 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 в списке nighbors. Если это так, то он устанавливает отношения и переходит в состояние two-way.
- Exstart — на этой фазе роутеры определяют, кто из них master/slave
- Exchange — роутеры посылают друг другу database description пакеты (DDPs) с информацией о сетях, содержащихся в их собственной базе каналов (database).
- Loading — Если роутер видит, что части маршрутов нет в его topology table, он посылает сообщение типа LSR с перечислением тех сетей, по которым он хочет получить дополнительную информацию. Пока роутер находится в ожидании ответа в виде LSU сообщений, он пребывает в состоянии Loading.
- Full — Когда роутер получил всю информацию и database на обоих роутерах синхронизирована, оба роутера переходят в состояние fully adjacent.
[править] Синхронизация базы данных состояния каналов (link state database)
Для обмена информацией маршрутизаторы должны установить отношения master-subordinate. Маршрутизатор у которого больше значение RID, будет master во время процесса обмена.
[править] Вычисление таблицы маршрутизации
В это разделе описывается каким образом 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.
[править] Вычисление дерева кратчайшего пути для зоны
[править] Вычисление next hop
[править] Вычисление внешних маршрутов
[править] Equal-cost multipath
[править] OSPF в Cisco
- Основная страница: OSPF в Cisco
[править] OSPF в ProCurve
- Основная страница: OSPF в ProCurve
[править] OSPF в Quagga
[править] Проверка работы OSPF
show ip ospf border-routers
[править] OSPFv3
- Основная страница: OSPFv3
[править] Дополнительная информация
|
|
|---|

