Протокол маршрутизации OSPF
Протокол OSPF, наряду с IS-IS, принадлежит к классу протоколов маршрутизации Link State. Принципы этого класса заключается в том, что в памяти маршрутизатора помимо всех оптимальных маршрутов в удаленные сети должна быть полная карта сети, в том числе с действующими связями между другими маршрутизаторами. OSPF изначально создавался как открытый протокол, что сделало его самым распространенным среди протоколов маршрутизации. Его алгоритм позволяет достаточно легко выстраивать стек протоколов для OSPF. Поэтому для специалистов, имеющих отношение к сетям, важно понимание, по крайней мере, общих принципов его работы.
Разберем, что такое сетевой протокол OSPF для чайников.
Принцип работы OSPF
Работа протокола OSPF строится по следующему алгоритму:
- Маршрутизаторы производят обмен малыми пакетами HELLO.
- После выполнения обмена между ними устанавливаются соседства. Каждый из маршрутизаторов добавляет в специальную локальную таблицу соседей.
- Маршрутизаторы выполняют сбор состояний своих связей с соседями (линков). Линки включают id самого маршрутизатора и соседа, сеть и префикс, тип сети и метрику (стоимость линка). После сбора состояний маршрутизатор формирует пакет LSA (Link State Advertisement).
- LSA рассылается каждому соседу, который передает пакет дальше по сети.
- После получения пакета LSA каждый маршрутизатор добавляет содержащуюся в нем информацию в локальную таблицу LSDB (Link State Database).
- В таблице LSDB накапливаются данные обо всех парах маршрутизаторов в пределах сети.
- На основании накопленных данных выстраивается полная карта сети, которая включает все действующие маршрутизаторы и образованные между ними связи.
- Используя карту, каждый маршрутизатор выполняет поиск самых коротких маршрутов во все сети и формирует из них таблицу маршрутизации.
Учитывая ресурсоемкий и сложный принцип работы OSPF, от каждого маршрутизатора требуется достаточно высокая производительность и значительный объем оперативной памяти.
В случае разрыва связи с соседом у одного из маршрутизаторов, он отправляет по сети новые пакеты LCA, и повторяется вся процедура формирования таблицы маршрутизации. Чтобы исключить постоянный пересчет в крупных сетях с большим количеством маршрутизаторов, в них применяют разделение на отдельные зоны. В каждой из них выполняются автономные вычисления с передачей между зонами только итогового результата. В любой конфигурации OSPF должна присутствовать корневая зона с индексом 0. Малые сети обычно помещаются в ее пределах, а для больших — требуется формирование дополнительных зон.
Пакет OSPF помещается в пакет IP с мультикастовым адресом получателя. Отправителю же в нем соответствует адрес маршрутизатора. Пакет помещается в мультикастовый фрейм, например, в Ethernet. При формировании списков контроля доступа нужно учитывать, что OSPF инкапсулируется непосредственно в IP, а не в UDP или TCP.
Виды OSPF сообщений
Протокол маршрутизации OSPF поддерживает 5 типов сообщений:
- Hello — периодически направляются для поиска соседей.
- Database Description DBD — применяются для контроля синхронизации LSDB у соседей.
- Link state request LSR — запрос у LSA у маршрутизатора, выполняемый принудительно. Применяется в случаях, когда маршрутизатор только включается и ему необходимо определить действующие в сети связи, а также если у него пропала сеть и нужно найти альтернативные маршруты.
- Link state update LSU — содержит данные о состоянии связей маршрутизатора.
- Link State Acknowledgment LSAck — подтверждающий пакет, который отправляется в ответ на сообщения других типов.
Hello пакеты отправляются с установленной периодичностью. По умолчанию она составляет 1 раз в 10 секунд для сетей BMA и point-to-point и 1 раз в 40 секунд для сетей NBMA. Также существует понятие Dead-интервала, который по умолчанию равняется 4 Hello-интервалам. Если в течение этого периода маршрутизатор не получает ни одного пакета, то он считает, что сосед отключился. За этим следует пересчет и обновление таблицы маршрутизаторы.
ID маршрутизатора в OSPF
Учитывая, что при построении карты сети маршрутизаторами в качестве узлов выступают другие маршрутизаторы, большое значение имеет наличие у каждого из них уникального имени. Для определения такого имени используется поле Router ID.
Идентификатор записывается в виде IP-адреса IPv4. Неважно, какое он примет значение, главное, чтобы он был уникальным в пределах этой сети. ID маршрутизатора в OSPF можно задать вручную. Если он не задан, то будет присвоен автоматически.
Принцип работы протокола OSPF предусматривает следующий алгоритм назначения ID маршрутизатора:
- В случае явного задания идентификатора командой router-id, используется назначенный вручную ID.
- В случае если не было ввода router-id, присваивается больший адрес из настроенных на маршрутизаторе loopback интерфейсов.
- При отсутствии loopback интерфейсов принимается больший адрес из всех включенных на маршрутизаторе интерфейсов.
Для определения большего адреса используется прямое сравнение по октетам слева направо.
Работа OSPF в сетях с множественным доступом
К основным проблемам OSPF можно отнести работу протокола в сетях с множественным доступом. Распространена топология, при которой множество маршрутизаторов объединяются не через последовательное подключение друг к другу, а через общую сеть. Теоретически OSPF должен выстраивать соседства в пределах общей сети на основе принципа «каждый с каждым». Однако это требует формирования огромных таблиц, работа с которыми сильно перегружает процессор и память.
Решение этой проблемы достигается посредством механизма выбора Designated Router (DR) и Backup Designated Router (BDR), которые представляют собой роли маршрутизаторов. В сети с множественным доступом, к которой подключены более 2 маршрутизаторов, один из них назначается на роль DR, а второй — на роль BDR. При отправке любым маршрутизатором какого-либо пакета, он поступает не всем устройства в сети, а подается на отдельный мультикастовый адрес, доступный только DR и BDR. В свою очередь, DR рассылает пакет всем маршрутизаторам в сети. Такое посредничество значительно снижает нагрузку. BDR выполняет резервную функцию и моментально принимает роль DR при его отключении. После этого среди остальных маршрутизаторов сразу выбирается новый BDR.
Метрика в OSPF
Открытый протокол маршрутизации не устанавливает отдельных требований к расчету метрики и оценки маршрутов. Его стандарт определяет стоимость каждого линка. В случае прохождения маршрута через несколько линков их стоимость суммируется. Оптимальным признается маршрут с наименьшей стоимостью. При этом принципы подсчета стоимости линка зависят от принципов, примененных конкретным производителем сетевого оборудования.
Например, Cisco применяет два варианта расчета стоимости.
В первом случае стоимость линка рассчитывается как обратная величина от его скорости (1000 — для 1 Мбит, 100 — для 10 Мбит, 10 — для 100 Мбит, 1 — для 1 Гбита и т. д.). Этот вариант подойдет при условии, что все маршрутизаторы будут считать стоимость по данному алгоритму, аэто требует использование только устройств Cisco.
Второй способ предусматривает задание стоимости администратором на основе собственного определения качества линка. Этот вариант используют в тех случаях, когда качество линка определяется не одной только его скоростью. В том числе метрика может быть завышена для линка, на котором чаще других появляются ошибки или осуществляется тарификация трафика. Этот способ применим в сетях, где установлены маршрутизаторы разных производителей.
Типы маршрутизаторов OSPF
Принцип действия протокола OSPF предусматривает использование следующих типов маршрутизаторов:
- IR (Internal Router) — это внутренний маршрутизатор, у которого все интерфейсы ассоциированы только с одной определенной областью.
- ABR (Area Border Router) — устанавливается в нулевой зоне для обеспечения связи с другими зонами.
- ASBR (Autonomous System Boundary Router) — обеспечивает объединение автономных систем для обмена маршрутами.
Отдельно следует выделить описанные выше типы маршрутизаторов DR, BDR, обеспечивающие работу протокола в сети с множественным доступом при минимальных нагрузках на оборудование. Маршрутизатор DR в этой паре является основным, а BDR — резервным.