мета-данные страницы
Это старая версия документа!
OSPF
OSPF (Open Shortest Path First) — протокол (3его уровня) динамической маршрутизации
OSPFv2 работает поверх IP, а конкретно, он заточен только под IPv4
OSPFv3 не зависит от протоколов 3-го уровня и потому может работать с IPv6
Терминология протокола OSPF
Основы
Термины
- Канал/интерфейс (link/interface) — соединение маршрутизатора и одной из подключенных к нему сетей. При обсуждении OSPF термины интерфейс и канал (link) часто употребляются как синонимы
- Метрика (metric) — условный показатель расстояния до сети назначения
- Стоимость (cost) — условный показатель «стоимости» пересылки данных по каналу. В OSPF зависит от пропускной способности интерфейса (bandwidth)
- Автономная система (autonomous system) — группа маршрутизаторов, обменивающаяся маршрутизирующей информацией с помощью одного протокола маршрутизации (определение соответствует тому, как этот термин используется в протоколах IGP)
Базовые термины OSPF:
- Идентификатор маршрутизатора (router ID, RID) — уникальное 32-битовое число, которое уникально идентифицирует маршрутизатор в пределах одной автономной системы
- Зона (area) — совокупность сетей и маршрутизаторов, имеющих один и тот же идентификатор зоны
- Объявление о состоянии канала (link-state advertisement, LSA) — единица данных, которая описывает локальное состояние маршрутизатора или сети. Например, для маршрутизатора LSA включает описание состояния каналов и отношений соседства. Множество всех LSA, описывающих маршрутизаторы и сети, образуют базу данных состояния каналов (LSDB).
- База данных состояния каналов (link state database, LSDB) — список всех записей о состоянии каналов (LSA). Встречается также термин топологическая база данных (topological database), употребляется как синоним базы данных состояния каналов
Соседи OSPF:
- Соседи (neighbours) — два маршрутизатора, интерфейсы которых находятся в одном широковещательном сегменте (и на которых включен OSPF на этих интерфейсах)
- Отношения соседства (adjacency) — взаимосвязь между соседними маршрутизаторами, установленная с целью синхронизации информации
- Hello-протокол (hello protocol) — протокол, использующийся для установки и поддержания соседских отношений
- База данных соседей (neighbours database) — список всех соседей (также используется термин neighbour table)
Пакеты OSPF:
- Hello — пакеты, которые используются для обнаружения соседей, установки отношений соседства и мониторинга их доступности (keepalive)
- DBD — пакеты, которые описывают содержание LSDB
- LSR — пакеты, с помощью которых запрашивается полная информация об LSA, которых недостает в LSDB локального маршрутизатора
- LSU — пакеты, которые передают полную информацию, которая содержится в LSA
- LSAck — пакеты, с помощью которых подтверждается получение других пакетов
Описание работы протокола
- Включить OSPF на маршрутизаторе
- Маршрутизатор выбирает Router ID (уникальное имя маршрутизатора)
- Включить OSPF на интерфейсах (чтобы протокол знал о каких интерфейсах можно сообщать другим маршрутиазторам)
- Обнаружение соседей с помощью Hello-пакетов
- Маршрутизаторы обмениваются hello-пакетами через все интерфейсы, на которых активирован OSPF.
- Маршрутизаторы, которые находятся в одном широковещательном сегменте, становятся соседями, когда они приходят к договоренности об определенных параметрах, указанных в их hello-пакетах.
- Adjacency (отношения соседства, отношения смежности) это тип соседства между маршрутизаторами, по которому они синхронизируют LSDB. Установка этих отношений зависит от типа сети:
- Если маршрутизаторы находятся в сети с множественным доступом, они выбирают DR и выполняют синхронизацию LSDB с ним
- Если маршрутизаторы находятся в сети point-to-point, они приступают к синхронизации LSDB друг с другом
- Синхронизация LSDB. Происходит в несколько этапов. По сформированным отношениям соседства происходит обмен такими пакетами:
- DBD (краткое описание LSA в LSDB). С помощью этих пакетов маршрутизаторы сообщают друг другу о том, какую информацию они знают, в сокращенном виде
- LSR. После обмена DBD-пакетами, с помощью LSR маршрутизаторы запрашивают у соседа недостающую информацию
- LSU (содержит полное описание LSA). В ответ на LSR, который ему прислал сосед, маршрутизатор отправляет LSU, с полным описанием информации, которой не хватает у соседа
- LSAck. После получения LSU от соседа, маршрутизатор отправляет подтверждение, что он получил информацию
- Если оба маршрутизатора должны запросить друг у друга информацию, то эта процедура повторяется и в другую сторону.
- После этого, LSDB синхронизирована, а значит, полностью одинакова между соседями
- После синхронизации LSDB, маршрутизатор отправляет обновление далее, своим соседям в других широковещательных сегментах
- Рассылая объявления через зону, все маршрутизаторы строят идентичную LSDB
- Когда база данных построена, каждый маршрутизатор использует алгоритм SPF (shortest path first) для вычисления графа без петель, который будет описывать кратчайший путь к каждому известному пункту назначения с собой в качестве корня. Этот граф — дерево кратчайшего пути.
- Каждый маршрутизатор строит таблицу маршрутизации, основываясь на своем дереве кратчайшего пути.
Выбор Router ID
При запуске процесса OSPF на любом маршрутизаторе, обязательно должен быть выбран Router ID.
Router ID — это уникальное имя маршрутизатора, по которому он известен в AS.
В зависимости от реализации, Router ID может выбираться по-разному: * минимальный IP-адрес или максимальный IP-адрес, который назначен на интерфейсах маршрутизатора * также обычно есть способ задания Router ID вручную * главное, чтобы Router ID был уникален в AS
После изменения Router ID, процесс OSPF должен быть перезагружен, а все LSA, которые сгенерировал этот маршрутизатор, должны быть удалены из AS, до перезагрузки.
Установка отношений соседства
Обнаружение соседей начинается после того как:
- протокол был включен глобально
- выбран Router ID
- OSPF включен на интерфейсах
Для обнаружения и мониторинга соседей используются сообщения Hello.
Процедура установки отношений соседства зависит от типа сети, в которой работает OSPF
Типы сетей, поддерживаемые протоколом OSPF
- Широковещательные сети со множественным доступом (broadcast): Ethernet
- Точка-точка (point-to-point): Туннели, T1, E1, PPP, HDLC, Frame-Relay P-to-P
- Нешироковещательные сети со множественным доступом (Non Broadcast Multiple Access, NBMA): Frame-Relay, ATM, X.25
В разных типах сетей работа OSPF отличается. В том числе отличается процесс установления отношений соседства и настройки протокола.
В реальной жизни, чаще всего используются два типа сетей:
- point-to-point
- broadcast
Для broadcast и nonbroadcast сетей (то есть, для сетей с множественным доступом), выбираются DR и BDR.
Отношения соседства (adjacency)
Различают понятия сосед и отношения соседства:
- Сосед (neighbor) — два маршрутизатора, которые находятся в одном широковещательном сегменте и у которых совпали нужные поля в hello-пакетах
- Отношения соседства (adjacency или full adjacency) — два соседа, которые завершили процесс синхронизации LSDB между собой.
Для того чтобы маршрутизаторы стали соседями:
- необходимо чтобы в hello-пакетах совпали значения таких полей:
- Hello Interval — частота отправки сообщений Hello
- Router Dead Interval — период времени, по прохождению которого, сосед считается недоступным, если не было Hello
- Area ID — так как в OSPF граница зоны проходит через маршрутизатор, то маршрутизаторы в одном широковещательном сегменте, должны быть в одной зоне (подробнее про зоны ниже)
- Authentication — пароль использующийся для аутентификации и тип аутентификации. Маршрутизаторы не обязательно должны использовать аутентификацию, но если она используется, то пароли и тип должны совпадать
- Stub area flag — не обязательный флаг, который устанавливается на всех маршрутизаторах, которые принадлежат тупиковой зоне (stub area)
- у маршрутизаторов должны совпадать сеть и маска сети
Отношения соседства устанавливаются только на primary адресах.
На интерфейсе может быть настроен secondary адрес. Маршрутизаторы не отправляют hello-пакеты с secondary адреса, не устанавливают отношения соседства на secondary адресах, но сеть secondary адреса может анонсироваться.
Возможные состояния
- Down — начальное состояние процесса обнаружения соседей. Это состояние указывает на то, что от соседей не была получена свежая информация. В NBMA сетях Hello-пакеты могут отправляться и соседям в состоянии Down, однако с меньшей частотой (PollInterval)
- Attempt — это состояние имеет смысл только для соседей, которые присоединены к NBMA сетям. Оно указывает на то, что от соседа не была получена свежая информация и что нужно сделать попытку связаться с соседом. Это делается путём отправки соседу сообщений Hello с промежутком времени Hello Interval (в Cisco в этом состоянии сообщения Hello отправляются каждый PollInterval. Имеет смысл для соседей в NBMA сетях, которые заданы командой neighbor)
- Init — состояние, в котором находится маршрутизатор, отправивший своему соседу hello и ожидающий от него ответного hello
- Two-way — при получении ответных hello маршрутизатор должен увидеть в них свой RID в списке соседей. Если это так, то он устанавливает отношения и переходит в состояние two-way. Когда в широковещательном сегменте более 3х маршрутизаторов, то в этом состоянии остаются между собой маршрутизаторы DROTHER
- Exstart — маршрутизаторы определяют Master/Slave отношения на основании Router ID. Маршрутизатор с высшим RID становится Master-маршрутизатором, который определяет DD Sequence number, а также первым начинает обмен DD-пакетами
- Exchange — маршрутизаторы посылают друг другу database description пакеты (DD) с информацией о сетях, содержащихся в их собственной LSDB
- Loading — Если маршрутизатор видит, что части маршрутов нет в его LSDB, он посылает сообщение LSR с перечислением тех сетей, по которым он хочет получить дополнительную информацию. Пока маршрутизатор находится в ожидании ответа в виде LSU сообщений, он пребывает в состоянии Loading
- Full — Когда маршрутизатор получил всю информацию и LSDB на обоих маршрутизаторах синхронизирована, оба маршрутизатора переходят в состояние fully adjacent (FULL)
Выделенный маршрутизатор (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, то время недоступности сети минимизируется.
Таймеры протокола
- 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 —
Зоны OSPF
При разделении автономной системы на зоны, маршрутизаторам, принадлежащим к одной зоне, неизвестна информация о детальной топологии других зон.
Разделение на зоны позволяет:
- Снизить нагрузку на ЦПУ маршрутизаторов за счет уменьшения количества перерасчетов по алгоритму SPF
- Уменьшить размер таблиц маршрутизации (засчет суммирования маршрутов на границах зон)
- Уменьшить количество пакетов обновлений состояния канала.
Каждой зоне присваивается идентификатор зоны (area ID). Идентификатор может быть указан в десятичном формате или в формате записи IP-адреса. Однако идентификаторы зон не являются IP-адресами, и могут совпадать с любым назначенным IP-адресом.
- в зоне 0 не должно быть разрывов
- если ненулевая зона должна быть присоединена к другой ненулевой, используется:
- virtual-link
- или обычный туннель настроенный вручную (например, GRE)
Коротко типы зон:
| Название зоны | Замена маршрутов | Типы LSA | Описание |
|---|---|---|---|
| Backbone (area 0) | - | Все LSA разрешены | Разрешены все типы маршрутов |
| Normal | - | Все LSA разрешены | Разрешены все типы маршрутов |
| Stub | EX ⇒ IA 0.0.0.0/0 ASBR запрещен | LSA 5 запрещены | Все внешние маршруты заменены на межзональный маршрут по умолчанию. ASBR не может находиться в зоне |
| Totally Stub | EX и IA ⇒ IA 0.0.0.0/0 ASBR запрещен |
Все LSA 3 заменены на LSA 3 0.0.0.0/0 | Все внешние и межзональные маршруты заменены на межзональный маршрут по умолчанию. ASBR не может находиться в зоне |
| NSSA |
ASBR разрешен | LSA 5 запрещены LSA 7 передает внешние маршруты только в NSSA | Все внешние маршруты должны быть заменены на межзональный маршрут по умолчанию. В зоне может быть ASBR |
| Totally NSSA |
ASBR разрешен | LSA 5 запрещены Все LSA 3 заменены на LSA 3 0.0.0.0/0
LSA 7 передает внешние маршруты только в NSSA | Все внешние и межзональные маршруты должны быть заменены на межзональный маршрут по умолчанию. В зоне может быть ASBR |
Магистральная зона (backbone area)
Магистральная зона (известная также как нулевая зона или зона 0.0.0.0) формирует ядро сети OSPF. Все остальные зоны соединены с ней, и межзональная маршрутизация происходит через маршрутизатор, соединенный с магистральной зоной.
Магистральная зона ответственна за распространение маршрутизирующей информации между немагистральными зонами. Магистральная зона должна быть смежной с другими зонами, но она не обязательно должна быть физически смежной; соединение с магистральной зоной может быть установлено и с помощью виртуальных каналов.
Стандартная зона (standard area)
Обычная зона, которая создается по умолчанию. Эта зона принимает обновления каналов, суммарные маршруты и внешние маршруты.
Тупиковая зона (stub area)
Тупиковая зона:
- Не принимает информацию о внешних маршрутах для автономной системы, но принимает маршруты из других зон.
- Если маршрутизаторам из тупиковой зоны необходимо передавать информацию за границу автономной системы, то они используют маршрут по умолчанию
- В тупиковой зоне не может находиться ASBR.
- * Исключение из этого правила — ABR может быть и ASBR.
- На всех маршрутизаторах зоны должна быть указана «тупиковость»
Totally stubby area
Totally stubby area:
- Не принимает информацию о внешних маршрутах для автономной системы и маршруты из других зон.
- Если маршрутизаторам из тупиковой зоны необходимо передавать информацию за границы зоны, то они используют маршрут по умолчанию
- В totally stub зоне не может находиться ASBR.
- * Исключение из этого правила — ABR может быть и ASBR.
- На всех маршрутизаторах зоны должна быть указана «тупиковость»
- * замена межзональных маршрутов на маршрут по умолчанию настраивается только на ABR зоны
То есть, фактически totally stub зона это «усиление» тупиковой: в ней не только внешние маршруты, но и межзональные заменены на маршрут по умолчанию.
totally stubby введен именно компанией Cisco, однако многое оборудование тоже может переводить тупиковую зону в totally stubby, отключая отправку суммарных маршрутов в обычную тупиковую зону.
В RFC такой термин явно не определен, но ABR могут регулировать отправку суммарных маршрутов в тупиковую зону любым образом, вплоть до отправки в зону только маршрута по умолчанию (totally stubby).
Not-so-stubby area (NSSA)
NSSA зона:
- Работает по тем же принципам, что и Stub-зона:
- Единственное отличие в том, что в NSSA зоне может находиться ASBR.
- Внешние маршруты других зон также заменены на маршрут по умолчанию
- Так как до этого в RFC было определено, что в тупиковой зоне не может находится ASBR, и, следовательно, LSA 5, для NSSA зоны был создан специальный тип LSA: LSA type 7.
- LSA 7 передает внешние маршруты в зоне NSSA и во всем соответствует LSA 5
- Когда пограничный маршрутизатор зоны NSSA передает LSA 7 в другие зоны, вместо LSA 7 передается стандартный LSA 5.
Totally NSSA
Totally NSSA зона:
- Работает по тем же принципам, что и NSSA:
- Единственное отличие в том, что в totally NSSA зоне все маршруты других зон и внешние маршруты для AS, заменяются на маршрут по умолчанию
Типы маршрутизаторов
- Внутренний маршрутизатор (internal router) — маршрутизатор, все интерфейсы которого принадлежат одной зоне. У таких маршрутизаторов только одна база данных состояния каналов.
- Пограничный маршрутизатор (area border router, ABR) — соединяет одну или больше зон с магистральной зоной и выполняет функции шлюза для межзонального трафика. У пограничного маршрутизатора всегда хотя бы один интерфейс принадлежит магистральной зоне. Для каждой присоединенной зоны маршрутизатор поддерживает отдельную базу данных состояния каналов.
- Магистральный маршрутизатор (backbone router) — маршрутизатор, у которого всегда хотя бы один интерфейс принадлежит магистральной зоне. Определение похоже на пограничный маршрутизатор, однако магистральный маршрутизатор не всегда является пограничным. Внутренний маршрутизатор интерфейсы которого принадлежат нулевой зоне, также является магистральным.
- Пограничный маршрутизатор автономной системы (AS boundary router, ASBR) — обменивается информацией с маршрутизаторами, принадлежащими другим автономным системам или не-OSPF маршрутизаторами. Пограничный маршрутизатор автономной системы может находиться в любом месте автономной системы и быть внутренним, пограничным или магистральным маршрутизатором.