Динамическая маршрутизация — вид маршрутизации, при котором таблица маршрутизации редактируется программно.
По области применения разделяют на:
- Протоколы междоменной маршрутизации (EGP):
- Протоколы внутридоменной маршрутизации (IGP):
В рамках нашего курса рассмотрим подробно OSPF.
OSPF (англ. Open Shortest Path First) — это протокол внутреннего шлюза (IGP), разработанный для IP-сетей и основанный
на принципах маршрутизации с учетом состояния канала. Алгоритм учета состояния
канала связи дает множество альтернативных преимуществ для средних и даже
крупных корпоративных сетей. В данном разделе вы познакомитесь с применением
алгоритма в IGP, а также узнаете принципы сходимости, применяемые в протоколе
OSPF, принципы реализации OSPF. Эти знания необходимы для поддержки работы OSPF
в корпоративных сетях.
- Создан IETF в 1988 году (то есть, является стандартным протоколом)
- OSPFv2 это текущая версия для IPv4 (описана в RFC 2328)
- IGP-протокол: используется для передачи информации между маршрутизаторами в пределах одной автономной системы (AS

OSPF инкапсулируется в IP. Номер протокола 89.
Для передачи пакетов использует мультикаст адреса:
- 224.0.0.5 все маршрутизаторы OSPF
- 224.0.0.6 все DR
OSPF представитель семейства Link-State протоколов.
Терминология протокола 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 является протоколом, в котором применяется алгоритм маршрутизации с
учетом состояния канала, что позволяет быстро обнаруживать топологические
изменения в автономной системе и устанавливать маршруты без петель за короткий
промежуток времени с задействованием минимального объема дополнительной
служебной информации, необходимой для согласования изменений топологии между
равноправными маршрутизаторами. OSPF также решает проблемы масштабируемости,
которые возникают, когда число соединений между растущим числом маршрутизаторов
становится настолько большим, что становится причиной нестабильности в
автономной системе. Решение данной проблемы достигается за счет использования
зон, ограничивающих возможность взаимодействия маршрутизатора (только с
изолированной группой) в автономной системе, благодаря чему OSPF поддерживает
малые, средние и даже большие сети. Протокол также может работать «поверх»
других протоколов, таких как MPLS (протокол коммутации по меткам), чтобы
обеспечить масштабируемость сети даже в отношении географически разнесенных
узлов. С точки зрения определения оптимального пути, OSPF предоставляет
расширенные метрики маршрутов, которые обеспечивают большую точность, чем
метрики маршрутов, применяемые в таких протоколах, как RIP. Это необходимо для
обеспечения оптимизации маршрутов в отношении не только расстояния, но и
скорости канала.

•Для достижения сходимости OSPF
необходимо, чтобы каждый и любой маршрутизатор, работающий по протоколу OSPF,
имел информацию о состоянии всех интерфейсов и смежностей (отношения между
подключенными маршрутизаторами), которая поможет установить наилучший путь к
каждой сети. Изначально это достигается путем лавинной рассылки объявлений о
состоянии канала (LSA), которые представляют собой блоки таких данных, как
известные сети и состояния каналов для каждого интерфейса в домене
маршрутизации. Каждый маршрутизатор будет использовать полученное LSA для
формирования базы данных состояний каналов (LSDB), которая является основой
создания дерева кратчайших путей к каждой сети, маршруты из которых, в конечном
итоге, будут включены в таблицу IP-маршрутизации.

•Идентификатор, назначаемый каждому
маршрутизатору, работающему по протоколу OSPF представляет собой 32-битное
значение. Данное значение однозначно определяет маршрутизатор в автономной
системе. Идентификатор маршрутизатора можно настроить вручную или получить из
сконфигурированного адреса. Если логический (loopback)
интерфейс сконфигурирован, то идентификатор маршрутизатора будет построен на
базе IP-адреса сконфигурированного логического интерфейса самого высокого
уровня, если существует несколько логических интерфейсов.
•Если логические интерфейсы не
сконфигурированы, то маршрутизатор будет использовать IP-адрес,
сконфигурированный для физического интерфейса, самого высокого уровня.
Перезапуск любого маршрутизатора, работающего по протоколу OSPF, можно
выполнить с помощью функции «мягкого» перезапуска, чтобы обновить ID
маршрутизатора, если будет сконфигурирован новый идентификатор. Настройку ID
маршрутизатора рекомендуется выполнять вручную, чтобы избежать непредвиденных
изменений идентификатора маршрутизатора в случае изменения адреса интерфейса.

•OSPF поддерживает сети разного
типа, в отношении которых применяются разные подходы к формированию отношений
между соседями и организации связи. Ethernet – это форма широковещательной
сети, в которой задействованы несколько маршрутизаторов, подключенных к одному
сегменту сети. Одна из основных задач заключается в организации связи между
соседними маршрутизаторами таким образом, чтобы минимизировать ресурсы
маршрутизации OSPF, занимаемые служебными данными. Если Ethernet-сеть
установлена, то в OSPF будет автоматически применяться тип широковещательной
сети.

•Если два маршрутизатора соединены с
помощью топологии «точка-точка», то используемый тип сети будет зависеть от
применяемой среды передачи и технологии, применяемой на канальном уровне. Как
уже упоминалось, при использовании Ethernet-среды для OSPF будет автоматически
назначен тип широковещательной сети. При использовании физической среды с
последовательной передачей используется двухточечная сеть. Протоколы, которые
работают в среде последовательной передачи на канальном уровне —протокол
двухточечной связи (PPP) и
высокоуровневый протокол управления каналом (HDLC).

•OSPF может работать в сетях
множественного доступа, которые не поддерживают широковещательную передачу.
Такими сетями являются Frame Relay и ATM, которые обычно организуются по
топологии «звезда» (Hub-and-Spoke)
с использованием
виртуальных каналов. OSPF поддерживает два типа сетей, которые могут
применяться к каналам, подключенным к таким средам. Тип сети NBMA (сеть
множественного доступа без поддержки широковещательной передачи) эмулирует
широковещательную сеть и поэтому требует, чтобы каждый интерфейс равноправного
узла принадлежал тому же сегменту сети. В отличие от широковещательной сети,
NBMA пересылает пакеты OSPF как одноадресные. Поэтому необходимо, чтобы для
каждого пункта назначения было сгенерировано несколько экземпляров одного и
того же пакета.
•Для каждого интерфейса может также
использоваться тип сети «точка-многоточка», и в этом случае применяется принцип
соединения «точка-точка». Это означает, что каждый интерфейс равноправного узла
должен быть связан с разными сетевыми сегментами. Выделенные маршрутизаторы (Designated Routers;
DR)
ассоциируются с широковещательными сетями и реализуются в сетях NBMA. Наиболее
важным является позиционирование DR, которое должно быть назначено на
узле-концентраторе архитектуры «звезда», чтобы все узлы могли обмениваться
данными с таким DR.

•Для адресации и оптимизации
OSPF-маршрутов в широковещательных сетях OSPF использует выделенный
маршрутизатор (DR), который действует как центральная точка связи для всех
остальных маршрутизаторов, ассоциированных с широковещательной сетью, по
меньшей мере, на одном интерфейсе. В теоретической широковещательной сети, в
которой не используется DR, маршрут рассчитывается по формуле: n(n-1)/2, где n
– это количество интерфейсов маршрутизатора, участвующих в процессе OSPF. В
приведенном примере используются 6 смежных соединений между всеми
маршрутизаторами. При использовании DR, все маршрутизаторы устанавливают связь
с таким DR, который функционирует в качестве центральной точки связи для всех
соседних маршрутизаторов в широковещательной сети.
•Резервный выделенный маршрутизатор
(BDR) – это маршрутизатор, который выбирается для переключения с DR в случае
сбоя. По существу, необходимо, чтобы BDR устанавливал базу данных состояния
канала как DR для обеспечения синхронизации. Это означает, что все соседние
маршрутизаторы также должны связываться с BDR в широковещательной сети. С
применением DR и BDR количество ассоциаций уменьшается с 6 до 5, поскольку RTA
и RTB должны связываться только с DR и BDR. Может показаться, что это не
существенно, однако когда это используется в сети, содержащей, например, 10
маршрутизаторов, то есть (10*9)/2, то в результате эффективность использования
такого подхода становится очевидной.

•Для обмена маршрутной информацией
OSPF создает отношения смежности между соседними маршрутизаторами. Не каждые
два соседних маршрутизатора станут смежными, особенно если один из двух
маршрутизаторов, устанавливающих отношения смежности, не является DR или BDR.
Эти маршрутизаторы, называемые DROther, только уведомляют о своем присутствии,
но не устанавливают полное соединение. Это называется отношение соседства.
Однако маршрутизаторы DROther формируют отношения полной смежности с
маршрутизаторами DR и BDR, чтобы обеспечить синхронизацию базы данных состояний
каналов маршрутизаторов DR и BDR с каждым из маршрутизаторов DROther. Такая
синхронизация достигается путем установления отношений соседства с каждым
DROther.
•Отношения смежности связаны с
сетью, являющейся общей для двух маршрутизаторов. Если два маршрутизатора имеют
несколько общих сетей, они могут иметь несколько отношений смежности между
ними.
Возможные состояния
- 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)

•Для достижения отношений соседства
или смежности каждый маршрутизатор, участвующий в OSPF, будет проходить через
несколько состояний канала. Все маршрутизаторы после инициализации находятся в
состоянии down и проходят процесс обнаружения соседей, который включает в себя,
во-первых, информирование о присутствии маршрутизаторов в сети OSPF через
отправку Hello-пакетов. При выполнении данного действия маршрутизатор перейдет
в состояние init.
•Как только маршрутизатор получит
ответ в виде Hello-пакета, содержащего идентификатор маршрутизатора,
получающего ответ, будет достигнуто состояние двустороннего обмена (2-Way) и
сформированы отношения соседства. В сетях NBMA состояние attempt достигается,
когда связь с соседом становится неактивной, и предпринимается попытка
восстановить связь посредством периодической отправки Hello-пакетов.
Маршрутизаторы, которые не достигли отношений смежности, останутся в состоянии
соседства в режиме двустороннего обмена.
Маршрутизаторы,
такие как DR и BDR, будут создавать отношения смежности со всеми другими
соседними маршрутизаторами и поэтому должны обмениваться информацией о
состоянии канала для создания полной базы данных состояния канала. Для этого
необходимо, чтобы равноправные маршрутизаторы, которые устанавливают отношения
смежности, сначала выполнили согласование для обмена информацией о состоянии
канала (ExStart), прежде чем приступить к обмену сводной информацией о сетях, о
которые им известно. Соседи могут идентифицировать маршруты, о которых они либо
не знают, либо не имеют актуальной информации, и поэтому они запрашивают
дополнительную информацию об этих маршрутах, что приводит к повышению нагрузки.
Полностью синхронизированные отношения между соседями определяются состоянием
full, при котором оба равноправных маршрутизатора могут считаться смежными.

•Обнаружение соседей достигается за
счет отправки Hello-пакетов, которые генерируются с определенными интервалами,
в зависимости от таймера, для которого по умолчанию установлено значение 10
секунд для широковещательных сетей и сетей типа «точка-точка»; в то время как
для сетей NBMA и сетей типа «точка-многоточка» интервал отправки Hello-пакетов
составляет 30 секунд. Hello-пакеты содержат этот интервал, а также поле
приоритета маршрутизатора, по которому соседи могут найти соседа с наивысшим
идентификатором для распознания DR и BDR в широковещательных сетях и сетях
NBMA.
•Также необходимо определить период
срока действия Hello-пакетов, прежде чем отношение соседства будет считаться
потерянным. Данный параметр определяется мертвой зоной маршрутизатора в
Hello-пакете. Для данного интервала мертвой зоны по умолчанию установлено
значение в четыре раза больше интервала отправки Hello-пакета. Он составляет 40
секунд для широковещательных сетей и двухточечных сетей и 120 секунд для сетей
NBMA и сетей типа «точка-многоточка». Кроме того, если необходимо, передаются
идентификаторы как DR, так и BDR на базе сети, для которой генерируется
Hello-пакет.

•После обнаружения соседей может
выполняться процедура выбора DR. Это зависит от типа сети сетевого сегмента —
выбор осуществляют широковещательные сети и сети NMBA. Выбор DR зависит от
приоритета, назначенного каждому интерфейсу, который участвует в данной
процедуре. По умолчанию установлено значение приоритета 1, и чем выше
приоритет, тем оптимальнее DR-кандидат.
•Если установлен приоритет 0, то
интерфейс больше не будет участвовать в выборе маршрутизатора в качестве DR или
BDR. Может случиться так, что если двухточечные соединения (с использованием
Ethernet в качестве физической среды передачи) настроены на поддержку
широковещательного типа сети, то произойдет выбор ненужного DR, которое
приведет к появлению избыточного трафика протокола. Поэтому рекомендуется
сконфигурировать тип сети «точка-точка».

•Для повышения эффективности
перехода к новому выделенному маршрутизатору (DR)
в каждой широковещательной сети и сети NBMA назначается резервный маршрутизатор
(BDR).
Резервный выделенный маршрутизатор также является смежным для всех
маршрутизаторов сети и переходит в статус DR
в случае отказа текущего активного выделенного маршрутизатора. Без BDR
пришлось бы формировать новые отношения смежности между новым выделенным
маршрутизатором и всеми остальными маршрутизаторами, подключенными к сети.
•Часть процесса формирования
отношений смежности включает в себя синхронизацию баз данных состояний каналов,
что потенциально может занять довольно много времени. В течение этого времени
сеть не будет доступна для передачи данных. Резервный выделенный маршрутизатор
устраняет необходимость формирования этих отношений смежности, поскольку они
уже существуют. Это означает, что период прерывания передачи транзитного
трафика будет длиться столько времени, сколько требуется для лавинной отправки
новых LSA (которые объявляют о новом выделенном маршрутизаторе). Выбор
резервного выделенного маршрутизатора также выполняется при помощи отправки
Hello-пакетов. Каждый Hello-пакет имеет поле, в котором указывается резервный
выделенный маршрутизатор для сети.

•В алгоритме маршрутизации с учетом
состояния канала очень важно, чтобы базы данных состояния канала всех
маршрутизаторов оставались синхронизированными. OSPF упрощает это, требуя
синхронизации БД только соседних маршрутизаторов. Процесс синхронизации начинается,
как только маршрутизаторы пытаются установить отношения смежности. Каждый
маршрутизатор описывает свою базу данных, отправляя последовательность пакетов Database Description своему
соседу. Каждый пакет Database
Description описывает
набор LSA, принадлежащих базе данных маршрутизатора.
•Когда сосед видит более новый LSA,
чем тот, который имеется в собственной копии базы данных, он отмечает, что
необходимо запросить этот более новый LSA. Такая отправка и получение пакетов Database Description
называется «процессом обмена базами данных». Во время этого процесса два
маршрутизатора формируют отношения «ведущий-ведомый». Каждый пакет Database Description имеет
порядковый номер. Пакеты Database
Description,
отправленные ведущим маршрутизатором, подтверждаются ведомым маршрутизатором
путем отправки порядкового номера в ответном сообщении.

•Во время и после процесса обмена
базами данных каждый маршрутизатор имеет список тех LSA, для которых у соседа
есть больше актуальных экземпляров. Пакет запроса состояния канала используется
для запроса более актуальных экземпляров базы данных соседа. Может
потребоваться использование нескольких пакетов запроса состояния канала.
•Пакеты обновления состояния канала
(Link State Update)
выполняют
лавинную отправку LSA. Каждый такой пакет передает набор LSA на один узел
дальше от их узла-источника. В один пакет могут быть включены несколько LSA. В
широковещательных сетях пакеты Link
State Update являются
многоадресными. IP-адрес пункта назначения, указанный для такого пакета,
зависит от состояния интерфейса. Если состояние интерфейса DR или Backup, то
используется адрес AllSPFRouters (224.0.0.5). В противном случае следует
использовать адрес AllDRouters (224.0.0.6). В не широковещательных сетях
отдельные пакеты обновления состояния канала должны отправляться одноадресной
передачей каждому смежному соседу (т.е. находящемуся в состоянии Exchange или
выше). IP-адреса пунктов назначения для этих пакетов являются IP-адресами
соседей.
Когда
процесс описания базы данных будет завершен, и все запросы состояния канала
будут выполнены, базы данных будут считаться синхронизированными, а
маршрутизаторы будут считаться полностью смежными. На данный момент смежность
будет полностью функциональной и она объявляется в LSA двух маршрутизаторов.


•OSPF вычисляет стоимость интерфейса
на базе полосы пропускания интерфейса. Для расчета используется следующая
формула: стоимость интерфейса = эталонное значение полосы пропускания/полоса
пропускания. Эталонное значение полосы пропускания можно настроить. По
умолчанию установлено значение 100 Мбит/с. При использовании формулы
100000000/полоса пропускания, метрика стоимости будет 1562 для
последовательного порта 64 кбит/с, 48 для интерфейса E1 (2,048 Мбит/с) и 1 для
Ethernet (100 Мбит/с) или выше.
•Чтобы различать высокоскоростные
интерфейсы, необходимо, чтобы метрика стоимости была скорректирована в
соответствии с поддерживаемыми в настоящее время скоростями. Команды
bandwidth-reference позволяют изменять метрику путем изменения эталонного
значения полосы пропускания в формуле стоимости. Чем выше значение, тем более
точной является метрика. Там, где поддерживаются скорости 10 Гб, рекомендуется
увеличить эталонное значение полосы пропускания до «10000» или 1010/полоса
пропускания, чтобы обеспечить метрики стоимости 1, 10 и 100 для каналов с
полосой пропускания 10 Гб, 1 Гб и 100 Мб, соответственно.
•Чтобы определить значение стоимости
для данного интерфейса, метрику стоимости можно указать вручную с помощью
команды ospf cost. Метрика стоимости находится в диапазоне от 1 до 65535, при
этом по умолчанию установлено значение 1.

•Считается, что маршрутизатор,
который достиг статуса full, получил все объявления о состоянии канала (LSA) и
синхронизировал свою базу данных состояний канала (LSDB) с базой данных смежных
соседей. Информация о состоянии канала, собранная в базе данных состояний
канала, затем используется для вычисления кратчайшего пути к каждой сети.
Каждый маршрутизатор, чтобы выполнить независимый расчет кратчайшего пути к
каждому пункту назначения, полагается только на информацию в LSDB, а не на
информацию от равноправных узлов, которая по предположению является лучшим
маршрутом к пункту назначения. Однако необходимость вычисления дерева
кратчайшего пути означает, что каждый маршрутизатор должен использовать
дополнительные ресурсы для выполнения этой операции.

•Небольшие сети могут выбирать
количество маршрутизаторов, которые будут работать в составе домена OSPF. Эти
маршрутизаторы считаются частью зоны, которая представлена идентичной базой
данных состояния каналов для всех маршрутизаторов в домене. В сетях с одной
зоной OSPF может быть назначен любой номер зоны, однако для будущей реализации
рекомендуется, чтобы этой зоне был назначен номер 0.

•Процессы передачи объявлений о
состоянии канала и последующего вычисления кратчайшего пути на основе базы
данных о состоянии канала все больше усложняются, поскольку все большее
количество маршрутизаторов входят в состав домена OSPF. Для ограничения размера
базы данных состояния канала и количества вычислений, которые должны быть
выполнены при определении кратчайшего пути к данной сети, OSPF поддерживает
иерархическую структуру.
•Реализация нескольких зон позволяет
разделить процесс вычисления в домене OSPF на основе базы данных состояния
канала, которая формируется отдельно для каждой зоны, но предоставляет
информацию для достижения всех пунктов назначения в домене OSPF. Некоторые
маршрутизаторы, известные как пограничные маршрутизаторы зоны (ABR), работают
между зонами и содержат базы данных состояний каналов отдельно для каждой зоны,
к которой подключаются. Зона 0 должна быть сконфигурирована в месте пересечения
всех зон OSPF, и весь трафик, передаваемый между зонами, обычно пересекает зону
0, что предупреждает возникновение петель маршрутов.