Введение.
Протокол OSPF (Open Shortest Path First), на русский можно перевести как
протокол кратчайшего пути (маршрута).
OSPF является промышленным протоколом, который описывается в соответсвующем RFC 2328
Протоколы маршрутизации делятся на три типа:
1. Дистанционно-векторные протоколы
2. Протоколы по состоянию каналов
3. Смешанные протоколы.
OSPF относится к протоколам по состоянию каналов.
Для того, чтоб начать обмен маршрутной информацией между
маршрутизаторами, необходимо уставновить связь между соседними
маршрутизаторами.
OSPF — масштабируемый протокол маршрутизации, он может быть использован
как в отдельной единственной зоне в небольших сетях, так и в нескольких
занах большой сети. Можно сгруппировать некоторые маршрутизаторы в одну
Area, а другие в другую. Тем самым изменения маршрутной информации в
одной зоне, не повлияет на работоспособность другой. Для взаимодействия
нескольких зон используют Area0, т.е. это зона является магистралью
(backbone).
Состояния протокола OSPF.
При уставке связи между маршрутизаторами, протокол OSPF имеет следующие
состояния. Стоит хорошо усвоить работу этих состояний, т.к. это является
основополагающим в понимании OSPF.
Сущесвтует 5 состояний:
1. Состояние отключено (down state)
2. Cостояние инициализации (init state)
3. Двусторонее соединение (Two-way)
4. ExStart
5. Обмен (Exchange)
6. Загрузка (Loading)
7. Установка полной смежности (Full adjecency)
Для разбора всех этих состояний, нам требуется ещё знать, какие типы
пакетов используются в протоколе OSPF.
Типы пакетов в протоколе OSPF:
— Hello пакет — данный тип пакета предназначен для создания и поддержки таблицы соседних устройств.
— DBD пакет (Database Description packet), как видно из название это пакет описания содержимого базы данных
состояния каналов маршрутизатора.
— LSR (Link State Request) — запрос о состоянии каналов, предназначен для запроса
отдельного фрагмента базы данных
состояния каналов.
— LSU (Link state update) — обновление состояния каналов. Данный пакет передает
в себе обновление о состоянии
каналов.
— LSAck (Link state acknowledgment) — Подтверждение о получении от соседнего
устройства LSA (Link State Advertisement).
Теперь рассмотрим состояния и переходы между состояниями более подробно.
1. Down state.
Самое простое состояние, и не требует детального описания. В двух
словах, это состояние, при котором не происходил обмен между соседними
маршрутизаторами, маршрутизатор ожидает перехода в следующее состояние —
Init State, состояние инициализации.
2. Init State.
В состоянии инициализации маршрутизатор OSPF посылает Hello пакеты для
установки связи между соседними устройствами, по умолчанию каждые 10
секунд. Когда интерфейс получает Hello пакет, маршрутизатор переходит в
состояние инициализации, другими словами, маршрутизатор «понимает» что
на этом интерфейсе есть соседнее устройство.
3. Состояние двусторонней связи (Two-way).
Каждый маршрутизатор OSPF пытается установить связь со всеми своими
соседями, это просиходит с помощью пакета Hello. В пакете Hello
передается список всех известных соседних маршрутизаторов. Если
маршрутизатор принимает пакет Hello и «видит» в этом пакете себя, то
считается что состояние двусторонней связи установлено.
Данное состояние является базовым, но для совместного использования
маршрутной инфомарцией этого недостаточно.
4. Состояние ExStart.
Для установки состояние ExStart использутеся пакет DBD (описание базы
данных). Так же в этом состоянии «выясняется», какой из маршрутизаторов
является ведущим (master), а какой ведомый (slave). Выбор осуществляется
по ID маршрутизатора. Маршутизатор, у которого ID больше становится
master. После того, как определены роли маршрутизаторов, маршрутизаторы
переходят в следующее состояние — обмена.
5. Exchange
В состоянии Exchange, как видно из названия, происходит обмен информации
о состоянии каналов. После получения маршрутизатором такой информации,
маршрутизатор сравнивает с своей базой данных и если такая информация
отсутсвует, то маршрутизатор запрашивает полную информацию о данном
канале. Полный обмен информации происходит в следующем состоянии —
Loading.
6. Loading или состояние загрузки.
В состоянии Exchange, маршрутизатор нашел информацию, которой нет в
собственной базе данных, для получения полной информации об этом канале
маршрутизатор посылает пакет-запрос LSR (Link State Request)
соответсвующему соседу. Сосед отвечает пакетом LSU (Link State Update),
в котором содержится полная информация о запрашиваемом канале. После
получения пакета LSU, маршрутизатор должен подтвердить это
соответсвующим пакетом (LSAck).
7. Full adjacency — Состояние полной смежности.
После загрузки всех данных, в состоянии Loading, маршрутизаторы
считаются полностью смежными. Каждый маршрутизатор имеет свою таблицу
смежных маршрутизаторов.
При прохождении всех этих состояний, в маршрутизаторе будет сформированы
три базы данных.
1. База данных канального уровня. — в данной базе содержится вся
информация о состоянии каналов всех маршрутизаторов, т.е. данная БД
содержит общую топологию всей сети. Следует отметить, что все
маршрутизаторы имеют одинаковую БД канального уровня.
2. База данных о смежных устройствах. — Список всех устройств, с
которыми установлено двусторонние соединение.
3. Таблица маршрутизации. — Список маршрутов, который сформирован каждым
маршрутизатором с помощью алгоритма SPF.
Маршруты вычисляются из базы данных канального уровня. И вычисляются
каждым маршрутизатором самостоятельно!
Протокол OSPF поддерживает следующие типы сетей:
1. Широковещательные сети множественного доступа (broadcast multiaccess)
2. Нешироковещательные сети множественного доступа (nonbroadcast multiaccess — NBMA)
3. Point — to — Point. «Точка-точка».
4. Point — to — multipoint. «точка-многоточек»
В широковещательных сетях, с множеством маршрутизаторов, появляется
слишком много служебной информации, когда все маршрутизаторы начинают
обмениваться данными, своими маршрутами, и т.д.
Для уменьшения слежебного трафика используется выбор назначенного и
резервного маршрутизатора (DR — designated router и BDR — backup
designated router), которые и будут рассылать все необходимые маршруты
остальным маршрутизатором. Смысл этого в том, что все маршрутизаторы
устанавливают состояние полной смежности только с DR/BDR и только им
послылают информацию о состоянии своих каналов, тем самым происходит
уменьшение служебного трафика в сети.
«Общение» между маршрутизаторами и DR/BDR осщуествляется с помощью
мультикаста — 224.0.0.5. «Общение» между DR и BDR происходит по своему
мультикаст адресу — 224.0.0.6
В сетях point — to — point существует только два маршрутизатора,
соответсвенно не нужно выбирать ни DR ни BDR.