1 почему так важно контролировать значение id маршрутизатора при использовании протокола ospf

Обновлено: 06.07.2024

1. Основы IGP протокола OSPF класса Link-State или базовая настройка динамической маршрутизации на роутере Cisco

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

1.1 Введение

Первым протоколом динамической маршрутизации, о котором хотелось бы рассказать является OSPF. Почему OSPF? Потому что именно этот протокол применяется в локальных сетях для обмена маршрутной информацией чаще всего. Дело в том, что старичка RIP используют в основном некрофилы и микротикофилы, EIGRP — проприетарный протокол Cisco и для его работы вся сеть должна быть построена на оборудование этого вендора, BGP — хороший, гибкий, управляемый протокол, но заточен он не для маршрутизации внутри автономной системы, а между автономными системами, время сходимости у BGP значительно выше, нежели у трех других.

1.2 Основы протокола OSPF

На данный момент в мире две версии протокола OSPF: OSPFv2 и OSPFv3. Первая используется для динамической маршрутизации IPv4 (RFC 2328), вторая для IPv6 (RFC 2740). Вне зависимости от версии протокола OSPF относится к группе IGP протоколов, а это означает, что используется он в пределах одной автономной системы. Когда мы разберемся с тем, как работает OSPF, вы поймете, что этот протокол не применим для глобальной маршрутизации в силу естественных причин, связанных с производительностью роутеров, им просто не хватит вычислительной мощности, чтобы просчитать все маршруты Интернета по алгоритмам, применяющимся в OSPF.

В основе работы протокола OSPF лежит Алгоритм Дейксты или алгоритм поиска кратчайшего пути, отсюда, собственно и вытекает SPF (shortest path first). Для обмена информацией о маршрутах, а также для обмена дополнительной информацией, использует несколько разных типов пакет. Какие? Потом разберемся. Сейчас нам нужно для себя отметить, что пакеты OSPF инкапсулируются в IP-пакеты. Вы должны помнить, что у IP-пакета есть код вложения, увидев этот код, роутер поймет, что находится внутри IP-пакета, для OSPF зарезервирован код 89. Передача OSPF пакета может происходить как unicast, так и multicast, при этом используется два multicast адреса:

Ну и еще одна важна вещь, о которой стоит сказать. OSPF относится к протоколам типа Link-State, а это означает, что каждый маршрутизатор внутри автономной системы обладает полным представлением о том, как устроена его сеть на уровне IP протокола (то есть на сетевом уровне моделей TCP/IP и OSI 7), в дальнейшем мы убедимся, что это не так и поймем, почему это не так, опять же, всё упирается в производительность железок.

1.3 Терминология протокола OSPF

Терминология в OSPF, как и у любого сложного протокола, довольно объемная, буду рад, если в комментариях появятся дополнения. Термины я приведу сразу, чтобы потом каждый раз к ним не возвращаться.

ПРЕДУПРЕЖДЕНИЕ: не пытайтесь заучить эти термины, лучше при прочтении возвращается к этому месту, если какое-то слово покажется вам незнакомым, смысла заучивать нет, все необходимое запомнится само по мере погружения в тему.

Для облегчения задачи мы разделим термины на три группые. Стоит добавить, что терминология OSPF является устоявшейся, но все равно некоторые вендоры могут вводить что-то свое, в этом случае рекомендую обращаться к документации вендора или в Google, там ответ вы точно найдете.

1.3.1 Основные термины протокола OSPF

Начнем с основных терминов, которые так или иначе есть практически во всех протоколах динамической маршрутизации.

Это были общие термины, относящиеся к протоколу OSPF

1.3.2 Соседи и отношения соседства в OSPF

Компьютерные сети бывают большими и с огромным количеством роутеров, и этим роутерам нужно как-то взаимодействовать друг с другом в большой сети. Для описания взаимодействия роутеров по протоколу OSPF есть несколько терминов.

  1. Сосед/соседи (neighbor/neighbors) – это два маршрутизатора, которые находятся в одной канальной среде, но это еще не всё. На интерфейсах этих маршрутизаторов, смотрящих друг на другу, должен быть включен и правильно настроен OSPF, то есть настройки должны быть консистентные с обеих сторон.
  2. Отношение соседства (adjacency) – маршрутизаторы в OSPF должны постоянно синхронизировать свои базы данных, в которых хранится информации о сети, если два маршрутизатора нормально обмениваются такой информацией, то можно сказать, что они имеют соседские отношения.
  3. Hello-протокол (hello-protocol) – для поиска соседей, установления соседства, а также для поддержания соседских отношений маршрутизаторы используют hello-пакеты.
  4. База данных соседей (neighbors database) – маршрутизатор должен знать всех своих соседей, чтобы в случае чего потыкать в них палочкой и что-нибудь уточнить или что-нибудь сообщить своим соседям, например, если появилась новая сеть. Для этих целей у маршрутизаторов есть список соседей, иногда этот список называется neighbors table.

Это основные термины, которыми можно описать взаимоотношения между роутерами в рамках протокола OSPF.

1.3.3 Виды пакетов в OSPF

Последний блок терминов, который мы рассмотрим, касается пакетов в OSPF, их довольно много и у каждого типа свое назначение. Тут главное не запутаться пакетов много.

Теперь вы знаете пакеты, которыми обмениваются маршрутизаторы при взаимодействие по протоколу OSPF.

1.4 Как работает протокол OSPF: краткая теория и практика на примере маршрутизаторов Cisco.

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

1.4.1 Схема для демонстрации и настройки IP-протокола на маршрутизаторе

Начнем с того, что я покажу вам схему, с которой мы будем работать и IP-адреса, которые будем использовать. Схему я собирал в EVE-NG, дамп трафика делал при помощи Wireshark, в качестве Telnet клиента я использую SecureCRT. Сама схема показана ниже.

1.1 Схема для демонстрации базовой настройки протокола OSPF на оборудование Cisco

Да, вот так незамысловато. Два роутера, два интерфейса, они подписаны на рисунке. На физическом интерфейсе RO1 я буду использовать IP-адрес 10.0.0.1/24, а на физическом интерфейсе RO2 10.0.0.2/24, у каждого роутера есть Loopback интерфейс, цель которых – имитировать клиентские сети. Если вам так неудобно, то представьте, что к роутеру RO1 подключен компьютер с IP-адресом 1.1.1.1, а к роутеру RO2 подключен компьютер с адресом 2.2.2.2.

Данная статья была написана для себя, чтоб при необходимости быстро освежить память и разобраться с теорией. Решил ее опубликовать, возможно кому-то будет полезна, а может в чем то ошибаюсь.

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

OSPF (англ. Open Shortest Path First) — протокол динамической маршрутизации, основанный на технологии отслеживания состояния канала (link-state technology) и использующий для нахождения кратчайшего пути алгоритм Дейкстры.

Возникает сразу вопрос — Что есть технология отслеживания состояния канала? Данное название считаю не совсем удачным. Сложилось так, что существует два типа протоколов динамической маршрутизации: Link-state и Distance-Vector. Рассмотрим их принципы работы:

В Distance-Vector протоколах, маршрутизатор узнает информацию о маршрутах посредством маршрутизаторов непосредственно подключенных в один с ним сегмент сети. То есть, маршрутизатор имеет информацию о топологии только в границах его соседних маршрутизаторов и понятия не имеет как устроена топология за этими маршрутизаторами, ориентируясь только по метрикам. В Link-state протоколах каждый маршрутизатор должен непросто знать самые лучшие маршруты во все удалённые сети, но и иметь в памяти полную карту сети со всеми существующими связями между другими маршрутизаторами в том числе. Это достигается за счет построения специальной базы LSDB, но подробнее об этом позже.

Итак, начнем с того, как же строится LSDB из которой маршрутизатор узнает о всех-всех маршрутах? Построим начальную топологию для изучения. Выглядит она так:

image

Посмотрим как выглядит Hello-пакет:

image

1. Настроен специальной командой router-id A.B.C.D — в формате ip адерса.
2. Настроен один loopback-интерфейс и несколько интерфейсов с различными адресами:

  • Адрес присвоенный loopback-интерфейсу будет Router ID.
  • Наибольший IP-адрес присвоенный любому из loopback-интерфейсов будет Router ID.
  • Наибольший IP-адрес из всех активных интерфейсов будет Router ID.

Итак, мы включили OSPF на vIOS1 и он начал каждые 10 секунд отправлять Hello-пакеты. Включим OSPF на vIOS2 и проследим как будут устанавливаться отношения соседства.

image

  • Hello — используется для обнаружения соседей, проверки параметров, построения отношений соседства с ними и мониторинга доступности.
  • Database Description (DBD) — проверяет состояние синхронизации баз данных на маршрутизаторах.
  • Link-State Request (LSR) — запрашивает определенные записи о состоянии каналов от маршрутизатора к маршрутизатору для синхронизации.
  • Link-State Update (LSU) — отправляет определенные записи о состоянии каналов в ответ на запрос.
  • Link-State Acknowledgment (LSAck) — подтверждает получение других типов пакетов.

image

Задумаемся о вопросе, что будет, если мы активируем OSPF на vIOS3? Так как vIOS3 придется строить LSDB и синхронизировать её с другими маршрутизатора, то встает вопрос с кем именно синхронизировать? С vIOS1 или vIOS2? С каждым по отдельности? Насколько это оптимально? Поэтому в OSPF есть такое понятие как DR — Designated router. Введем данное понятие:

Выделенный маршрутизатор (designated router, DR) — управляет процессом рассылки LSA в сети. Каждый маршрутизатор сети устанавливает отношения соседства с DR. Информация об изменениях в сети отправляется DR, маршрутизатором обнаружившим это изменение, а DR отвечает за то, чтобы эта информация была отправлена остальным маршрутизаторам сети.

Другими словами, если в сегменте сети появляется новый маршрутизатор, то он будет синхронизировать свою LSDB именно с DR. Также важно заметить, что и не только новые, но и все остальные маршрутизаторы при изменении сети или появлении нового маршрута будут сообщать об этом DR, а остальные будут забирать данную информацию с DR. Но тут же возникают вопросы — Что будет, если DR выйдет из строя? Как выбирается DR?

При выходе его из строя должен быть выбран новый DR. Новые отношения соседства должны быть сформированы и, пока базы данных маршрутизаторов не синхронизируются с базой данных нового DR, сеть будет недоступна для пересылки пакетов. Для устранения этого недостатка выбирается BDR — Backup designated router:

Резервный выделенный маршрутизатор (backup designated router, BDR). Каждый маршрутизатор сети устанавливает отношения соседства не только с DR, но и BDR. DR и BDR также устанавливают отношения соседства и между собой. При выходе из строя DR, BDR становится DR и выполняет все его функции. Так как маршрутизаторы сети установили отношения соседства с BDR, то время недоступности сети минимизируется. Таким образом, у нас в сети получаются не только DR, но и BDR. Остальные маршрутизаторы будут получать и сообщать актуальную информацию о сети только посредством их. DR и BDR выбирается только внутри одного сегмента, а не зоны! То есть, у маршрутизаторов vIOS1, vIOS2, vIOS3, vIOS4 будут выбраны одни DR и BDR, а, например, между vIOS и vIOS1 будут определены свои DR и BDR уже относительно их сегмента сети, даже, если они в одной Area 0. Для общения с DR и BDR, маршрутизаторы используют мулитькастовый адрес — 224.0.0.6.

Следующий вопрос — Как выбирается DR/BDR? Применяются следующие критерии:

  1. DR: Маршрутизатор с самым высоким приоритетом интерфейса OSPF.
  2. BDR: Маршрутизатор со вторым самым высоким приоритетом интерфейса OSPF.
  3. Если приоритеты интерфейсов OSPF равны, самый высокий ID маршрутизатора используется, чтобы осуществить выбор. Как мы говорили, что маршрутизаторы определяют свой Router-ID. В начале, когда OSPF запускался на vIOS1 и vIOS2, помимо установления соседства, также происходили выборы DR/BDR. В данном споре победил vIOS2 c ID — 2.2.2.2, когда vIOS1 имел ID — 1.1.1.1. vIOS1 был выбран в качестве BDR. Важно заметить, что процесс выбора DR и BDR не происходит сразу после получения первых Hello-пакетов от второго маршрутизатора. Для этого существует специальный таймер равный Router Dead Interval — 40 секунд. Если за это время не будет получен Hello-пакет с лучшим ID, то произойдет выбор на основе уже имеющихся Hello-пакетов.

image

По такой же схеме у нас подключается и vIOS4. После синхронизации, у всех маршрутизаторов одна и так же LSDB. Посмотрим как выглядят состояния соседства у vIOS3. Команда show ip ospf neighbor:

image

Как мы можем увидеть, DR — 2.2.2.2, BDR — 1.1.1.1, а с vIOS4 выбрано состояние 2WAY/DROTHER. О состояниях соседства была дана ссылка выше.

А вот состояния соседства на vIOS1 c установленном соседством c vIOS:

image

Как видите у него два DR потому, что у него имеется сосед и в другом сегменте сети.

Мультизоны

Рассмотрим принципы работы OSPF в случае, когда используется несколько зон. Изменим нашу топологию, добавив новые маршрутизаторы:

image

Начнем с того, что сконфигурируем OSPF на vIOS1 и vIOS так, что их интерфейсы Gi0/1 на vIOS и vIOS1 будут находиться в зоне 1. Посмотрим, что изменитcя. vIOS1 теперь имеет интерфейсы и в Area 0 (Gi0/0), и в Area 1 (Gi0/0). Такой маршрутизатор называется ABR — Area Border Router ( чуть ниже дадим более корректное определение ABR). ABR будет рассылать информацию о маршрутах из одной зоны в другую. Делается это посредством LSA Type 3:

Type 3 LSA — Network Summary LSA — суммарное объявление о состоянии каналов сети:

  • Объявление распространяется пограничными маршрутизаторами
  • Объявление описывает маршруты к сетям вне локальной зоны
  • Содержит информацию о сетях и о стоимости пути к этим сетям, но не отправляет информацию о топологии сети
  • По умолчанию, пограничный маршрутизатор отправляет отдельное объявление для каждой известной ему сети. При необходимости, на ABR сети могут быть просуммированы
  • Link-state ID — номер сети назначения.

image

По своей сути, структура LSA Type 3 не сильно отличается от LSA Type 1, но они по-разному влияют на работу протокола. При получения обновленного или при потере какого-либо LSA Type 1&2, запускается заново SPF (алгоритм вычисления кратчайшего пути) и пересчитывает LSDB.

При получении LSA Type 3, данный процесс не происходит — получается маршрут с метрикой в LSA Type 3. В этом LSA хранится данные о том, через какой ABR был получен данный маршрут ( ABR указан в поле Advertising Router) и метрика, чтоб достичь данный ABR уже имеется в LSDB. Таким образом, метрика из LSA Type 3 суммируется с метрикой маршрута до ABR и получаем готовый маршрут без перезапуска SPF. Данный процесс называется Partial SPF calculation. Это довольно важно потому, что в больших сетях размеры LSDB могут быть довольно большими и часто запускать SPF не есть хорошо. Также, создание LSA Type 3 говорит о том, что изменения и пересчет LSDB это дела одной зоны. ABR только сообщает, что с каким-то маршрутом что изменилось.

Также важно заметить, что любой маршрут из ненулевой зоны в любую ненулевую зону проходит через Area 0. Если есть ABR, он не может быть не подключен к Area 0 (исключаем вариант с virtual-link). Area 0 является ядром, которое соединяет все остальные зоны и обеспечивает маршрутизацию между зонами. Определение ABR выглядит так:

Пограничный маршрутизатор (area border router, ABR) — соединяет одну или больше зон с магистральной зоной и выполняет функции шлюза для межзонального трафика. У пограничного маршрутизатора всегда хотя бы один интерфейс принадлежит магистральной зоне. Для каждой присоединенной зоны маршрутизатор поддерживает отдельную базу данных состояния каналов.
Разобрались с установлением соседства, созданием LSDB и SPF, с обычной зоной. А сейчас разберемся с сходимостью и реакцией OSPF на изменения в топологии.

Type 2 LSA — Network LSA — объявление о состоянии каналов сети:

  • Распространяется DR в сетях со множественным доступом
  • Network LSA не создается для сетей в которых не выбирается DR
  • Распространяются только в пределах одной зоны
  • Link-state ID — IP-адрес интерфейса DR

Включим обратно vIOS3 и установим соседство заново. Следующим экспериментом будет — реакция на отключения интерфейса Gi0/1 на vIOS3. Как только vIOS3 детектирует падения линка, он моментально отправляет LS Update к DR на адрес 224.0.0.6, где сообщается о падении определенных маршрутов при помощи выставления флага в LSA — LS Age равный 3600 секунд. Для LSDB это Max Age и все LSA c Max Age не учитываются при SPF, поэтому их не будет в таблице маршрутизации. Возникает вопрос: А когда Age LSA естественным путем достигает Max Age, что происходит? Для этого в OSPF есть LSRefreshTime — равный половине Max Age, через каждые 1800 секунд отправляется LS Update с маршрутизатора для обновления данных таймеров:

image

Далее, DR обработав данный LS Update, отправляет всем остальным маршрутизаторам LS Update на адрес 224.0.0.5. Как только, маршрутизаторы получили новую информацию — они отправляют LSAck. Тем самым достигается хорошая сходимость в OSPF.

Выбор лучшего маршрута

Маршрутизатор выбирает лучший маршрут на основании наименьшего значения метрики. Однако, OSPF учитывает и несколько других факторов при выборе маршрута. В данном случае важен источник маршрута и его тип. Приоритет выбора маршрута следующий:

  • Внутренние маршруты зоны (intra-area)
  • Маршруты между зонами (interarea)
  • Внешние маршруты типа 1 (E1)
  • Внешние маршруты типа 2 (E2)

cost = reference bandwidth / link bandwidth. Reference bandwidth — базис пропусной способности. По умолчанию, на Cisco равен 100Mbit.

ABR Loop Prevention. Как мы говорили выше, между зонами принцип работы OSPF похож на distance-vector протокол. Используя механизмы предотвращения петель, можем получить, что выбирается неоптимальный путь. Например, между зонами существует правило подобное Split Horizon из distance-vector протоколов. Рассмотрим это на примере, если изменить нашу топологию на границе зоны 0 и 4 так:

image

то мы получим, что vIOS18 будет выбирать неоптимальный путь с метрикой 100 через интерфейс Gi0/0. Происходит это в силу того, что vIOS18 не будет учитывать LSA Type 3, полученные не от зоны 0. Также, выше указанное правило запрещает передавать данный LSA Type 3 обратно в зону 0.

Для процесса маршрутизации OSPF идентификатор маршрутизатора (RID) является очень важным параметром. Идентификатор маршрутизатора применяется в алгоритмах работы протокола OSPF для однозначной идентификации маршрутизатора.

Идентификатор маршрутизатору назначается при запуске процесса OSPF. Идентификатором маршрутизатора может быть назначен:

– Старший IP адрес любого физического интерфейса маршрутизатора. Интерфейс может не использоваться в процессе OSPF маршрутизации, но он должен находиться в активном состоянии. Поэтому на маршрутизаторе при запуске процесса OSPF должен быть активен хотя бы один интерфейс, иначе маршрутизатор выдаст ошибку, представленную в примере 11.6 и процесс не будет запущен.

– Старший IP адрес логического интерфейса loopback. Логические интерфейсы всегда находиться в активном состоянии, поэтому использование логического интерфейса является наиболее предпочтительным.

– Вручную. Для ручного задания RID используется команда router-id.

Самым высоким приоритетом при назначении идентификатора обладает ручная настройка, самым низким старший адрес физического интерфейса.

Синтаксис команды router-id приводится в примере 11.5

Пример 11.5 – Синтаксис команды router-id

В качестве параметра команды router-id может выступать IP адрес либо число, записанное в формате IP адреса.

Однажды заданный идентификатор активен все время работы процесса маршрутизации OSPF. Если во время работы маршрутизатора интерфейс, адрес которого используется в качестве RID, переходит в неактивное состояние, идентификатор маршрутизатора не изменяется. Однако при использовании адресов физических интерфейсов в качестве идентификатора маршрутизатора нельзя гарантировать, что после перезагрузки маршрутизатора будет назначен тот же идентификатор, что был ранее. Идентификатор маршрутизатора также переназначается при перезапуске процесса маршрутизации OSPF.

Исходя из этого использование логических интерфейсов предпочтительнее, во-первых, логический интерфейс всегда активен, во-вторых, он может быть объявлен в процесс маршрутизации, что позволит использовать ping с других маршрутизаторов, чтобы проверять наличие связи между маршрутизаторами.

При назначении RID, используя команду router-id, на идентификатор нельзя будет послать ping.

Еще одним плюсом использования реальных IP адресов, будь то адреса физических или логических интерфейсов является возможность применения команды ip ospf name-lookup. Данная команда вводится в режиме глобальной конфигурации маршрутизатора и позволяет при выводе информации содержащей RID заменять его числовое значение DNS именем. Это позволяет упростить администратору СПД идентифицировать маршрутизаторы OSPF.

При первоначальной конфигурации идентификатора маршрутизатора с помощью команды router-id необходимо перезапустить процесс маршрутизации OSPF, используя команду clear ip ospf process. В дальнейшем при перезагрузках маршрутизатора идентификатор, заданный командой router-id будет назначаться автоматически.

Пример 11.6 – Ошибка назначения RID

%OSPF-4-NORTRID: OSPF process [dec] cannot start. There must be at least one "up" IP interface, for OSPF to use as router ID

11.3 Настройка аутентификации в протоколе OSPF

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

Как и другие протоколы маршрутизации, протокол OSPF поддерживает два типа аутентификации:

– Аутентификация по паролю;

– Аутентификация при помощи MD5.

Оба типа аутентификации настраиваются отдельно на каждом интерфейсе маршрутизатора, на котором запущен протокол OSPF.

Для задания типа аутентификации используется команда ip ospf authentication. Синтаксис команды ip ospf authentication приводится в примере 11.7.

Пример 11.7 – Синтаксис команды ip ospf authentication

Описание параметров команды ip ospf authentication приводиться в таблице 11.3.

Таблица 11.3 – Параметры команды ip ospf authentication

Аутентификация с помощью MD5.

При использовании команды ip ospf authentication без параметров будет использована аутентификация по паролю.

Для задания текстовой строки используемой при аутентификации по паролю используется команда ip ospf authentication-key. Синтаксис команды ip ospf authentication-key приводится в примере 11.8.

Пример 11.8 – Синтаксис команды ip ospf authentication-key

В качестве параметра команды ip ospf authentication-key выступает строка, которая будет использоваться как пароль. Необходимо отметить, что для аутентификации будет использоваться только первые 8 символов, а остальные будут отброшены. Пример настройки аутентификации по паролю приводиться на рисунке 11.2.

R1 S0

interface serial 0

ip address 172.16.1.1 255.255.255.252

ip ospf authentication

ip ospf authentication -key PassWord

S1 R2

interface serial 1

ip address 172.16.1.2 255.255.255.252

ip ospf authentication

ip ospf authentication -key PassWord

Рисунок 11.2 – Аутентификация по паролю в протоколе OSPF

Для задания текстовой строки используемой при аутентификации с помощью MD5 используется команда ip ospf message-digest-key md5. Синтаксис команды ip ospf message-digest-key md5 приводится в примере 11.9. Описание параметров команды приводиться в таблице 11.4.

Пример 11.9 – Синтаксис команды ip ospf message-digest-key md5

Протокол состояния канала (Link-state) Open Shortest Path First (OSPF) предназначен для работы в больших гибких составных сетях, где обмен маршрутной информацией между множеством маршрутизаторов потребовал бы значительных вычислительных ресурсов и пропускной способности сети. Поэтому большая сеть делится на области или зоны (area), внутри которых и происходит рассылка обновлений (модификаций) при изменениях в сетевой топологии. Использование OSPF внутри определенной области, в которой маршрутизаторы разделяют маршрутную информацию между собой ( рис. 4.1), снижает нагрузку на сеть .

Области функционирования протокола OSPF


Рис. 4.1. Области функционирования протокола OSPF

Областей (зон) может быть несколько, среди которых нулевая область (area 0) является главной или единственной. Остальные зоны взаимодействуют с нулевой областью, а напрямую между собой не взаимодействуют. Взаимодействие периферийных областей с магистральной (area 0) производится через пограничные маршрутизаторы ABR ( рис. 4.1). Далее рассматривается случай единственной области area 0.

Протокол OSPF оперативно реагируют на изменения в сети, обеспечивая быструю сходимость . Он может работать с оборудованием разных фирм производителей, и потому получил широкое распространение. Административное расстояние протокола OSPF равно 110 (см. табл. 1.1).

Протокол OSPF формирует три базы данных , на основе которых создает соответствующие таблицы:

  1. База данных смежности (adjacency database) позволяет сформировать таблицу соседних устройств(neighbor table), содержимое которой можно посмотреть по команде show ip ospf neighbor .
  2. На основе базы данных о состоянии каналов (Link-State Data Base - LSDB) формируется таблица топологии сети (topology table), проверяемая по команде show ip ospf database . После схождения сети базы данных о состоянии каналов LSDB должны быть одинаковы у всех маршрутизаторов области.
  3. На основе базы LSDB и базы данных смежности формируется база пересылки и создается таблица маршрутизации, которую можно посмотреть по команде show ip route .

В основе протокола OSPF лежит алгоритм Дийкстра (Dijkstra), обеспечивающий выбор кратчайшего пути (shortest path ) к адресату назначения. Протокол OSPF не проводит периодический обмен объемными обновлениями ( update ) маршрутной информации для снижения нагрузки на сеть , и характеризуется быстрой сходимостью.

Сходимость или конвергенция ( convergence ) сети достигается, когда базы данных о состоянии каналов LSDB одинаковы у всех маршрутизаторов области.

Для обмена маршрутной информацией между устройствами протокол OSPF использует пять типов пакетов:

  1. Пакет приветствия Hello.
  2. Пакет описания базы данных Data Base Description - DBD.
  3. Пакет запроса Link-State Request - LSR.
  4. Пакет обновлений Link-State Update - LSU.
  5. Пакет подтверждения Link-State Acknowledgment - LSAck.

Пакеты Hello маршрутизатор отправляет со всех своих интерфейсов, чтобы обнаружить соседние устройства. В отличие от других, Hello-пакеты рассылаются периодически и довольно часто, чтобы непрерывно отслеживать работоспособность соседних устройств. После обмена Hello-пакетами между соседними устройствами устанавливаются и поддерживаются отношения смежности ( adjacency ) и формируются таблицы соседних устройств.

Различают три типа сетей:

  1. Широковещательные с множественным доступом (Broadcast multi-access), например Ethernet.
  2. Сети типа точка-точка (Point-to-point).
  3. Нешироковещательные с множественным доступом (Non broadcast multi-access - NBMA), например, сети Frame Relay, ATM.

В сетях первых двух типов период рассылки Hello-пакетов - 10 секунд, а в сетях NBMA - 30 сек. Период простоя (Dead Interval ) - в четыре раза больше. Если в течение периода простоя от соседнего устройства не пришло ни одного Hello-пакета, то считается, что устройство прекратило функционирование. Протокол OSPF удалит не отвечающего соседа из базы данных LSDB. При рассылке Hello-пакетов в сетях IPv4 используется адрес 224.0.0.5 многоадресного режима без подтверждения доставки. В сетях IPv6 для рассылки используется адрес FF02::5.

Пакет DBD содержит сокращенный список базы данных передающего маршрутизатора и используется принимающим маршрутизатором для синхронизации (проверки) своей базы данных . Базы данных должны быть идентичными. Принимающий маршрутизатор может запросить полную информацию о входах базы данных передатчика, используя пакет запроса Link-State Request - LSR.

Для обмена объявлениями о состоянии канала используется пакет обновлений Link-StateUpdate - LSU . Пакет LSU может содержать различные типы извещений или объявлений (Link-State Advertisements - LSA). Обмен пакетами объявлений LSA производится на начальном этапе формирования сети после установления отношения смежности, а также при возникновении изменений в топологии сети.

Когда происходят изменения в каком-либо соединении сети, то маршрутизатор , первым заметивший это изменение, создает извещение о состоянии этого соединения LSA , которое передается соседним устройствам. Каждое устройство, получив обновление LSA , транслирует копии LSA всем соседним маршрутизаторам в пределах области и затем модифицирует свою топологическую базу данных. Такая лавинообразная рассылка объявлений о состоянии каналов ускоряет процесс сходимости.

Для подтверждения принятого пакета обновлений LSU используется пакет подтверждения (Link-Stat Acknowledgment - LSAck), который рассылается в одноадресном режиме.

Состояние канала (соединения) - это описание интерфейса, которое включает IP адрес интерфейса, маску подсети, тип сети и другие параметры. Полученные пакеты LSA позволяют протоколу OSPFсформировать на маршрутизаторе базу данных о состоянии каналов LSDB. Зная базу данных, алгоритм Dijkstra (shortest path first algorithm - SPF) вычисляет кратчайшие пути к сетям назначения. При этом строится древовидная топология кратчайших путей SPF ко всем доступным сетям, свободная от маршрутных петель. Корнем в дереве является сам маршрутизатор . Первый вычисленный кратчайший путь записывается в таблицу маршрутизации.

Пакет OSPF размещается внутри IP -пакета сразу за IP -заголовком ( рис. 4.2).

Заголовок OSPF

Заголовок IP -пакета содержит групповой адрес назначения (224.0.0.5 или 224.0.0.6) и IP - адрес источника.В поле протокола пакета задается значение 89, что говорит об использовании OSPF .

Заголовок OSPF содержит:

  • тип пакета;
  • идентификатор маршрутизатора (Router ID);
  • идентификатор области (area 0);
  • другие параметры.

Идентификатор устройства ( Router ID ), по сути, является IP -адресом одного из интерфейсов маршрутизатора.

Данные пакета OSPF зависят от типа пакета. Так пакет приветствия Hello включает:

  • маску сети или подсети;
  • интервалы времени рассылки пакетов (Hello Interval), интервал простоя (Dead Interval);
  • приоритет маршрутизатора;
  • идентификаторы назначенного (главного, определяющего) маршрутизатора (Designated Router - DR) и запасного назначенного маршрутизатора (Backup Designated Router - BDR) данной области;
  • список соседних устройств, содержащий идентификаторы соседей.

Для формирования смежности необходимо, чтобы маршрутизаторы работали в сети одного типа, и у соседних устройств должны быть одинаковы:

  1. Период времени обмена Hello-пакетами (Hello Interval).
  2. Период времени простоя (Dead Interval), по истечению которого связь считается потерянной, если за это время не было получено ни одного Hello-пакета.

Выбор назначенного (главного) маршрутизатора области сети (Designated - DR) и запасного назначенного маршрутизатора сети (BDR), производится в сетях с множественным доступом. В сетях " точка-точка " этот механизм не используется. В сегменте сети с множественным доступом, несколько маршрутизаторов связаны между собой. Поскольку каждый маршрутизатор должен установить полное отношение смежности со всеми соседними маршрутизаторами и обменяться информацией о состоянии связи всех соединений, то, например, при 5 маршрутизаторах необходим обмен десятью состояниями связи. В общем случае для n маршрутизаторов должно быть n*(n-1)/2 обменов, на что должны быть выделены дополнительные ресурсы, прежде всего, полоса пропускания .

Если в сети выбран назначенный маршрутизатор области (DR), то маршрутизатор , первым обнаруживший изменение в сети, посылает информацию об изменениях только маршрутизатору DR, а тот в свою очередь , рассылает LSAs всем другим OSPF маршрутизаторам области, по адресу 224.0.0.5. Это сокращает количество обменов модификациями в сети. Если маршрутизатор DR выходит из строя, то его функции начинает выполнять запасной назначенный маршрутизатор области сети BDR.

Выбор DR и BDR происходит на основе сравнения приоритетов маршрутизаторов. По умолчанию приоритет всех маршрутизаторов равен 1. Значение приоритета может быть любым от 0 до 255. Маршрутизатор с приоритетом 0 не может быть избранным DR или BDR. Маршрутизатор с самым высоким OSPF приоритетом будет отобран как DR маршрутизатор . Маршрутизатор со вторым приоритетом будет BDR .

Когда не задано никаких дополнительных параметров и приоритет одинаков, выбор DR и BDR происходит на основе идентификаторов (ID) маршрутизаторов.

Идентификатор маршрутизатора (ID) может быть задан администратором по команде:

У данной команды наивысший приоритет назначения идентификатора маршрутизатора.

Если идентификатор не задан администратором, то протокол OSPF автоматически выбирает в качестве ID адрес одного из интерфейсов с наибольшим значением. Маршрутизатор с высшим значением идентификатора ID становится DR. Маршрутизатор со вторым наибольшим значением идентификатора ID становится BDR.

Поскольку на интерфейсах используются разъемы, то они являются ненадежными элементами сети. Для повышения надежности работы DR на маршрутизаторах формируют виртуальные логические интерфейсы loopback. OSPF использует адрес интерфейса loopback как ID маршрутизатора, независимо от значения адресов других интерфейсов. Маршрутизатор , на котором сформировано несколько интерфейсов loopback , использует самое большое значение адреса интерфейса loopback в качестве ID маршрутизатора. Таким образом, выбор DR и BDR происходит на основе сравнения адресов интерфейсов loopback .

После выбора, DR и BDR сохраняют свои роли, даже если к сети добавляются маршрутизаторы с более высоким приоритетом до тех пор, пока маршрутизаторы не будут переконфигурированы.

Создание интерфейса loopback производится по команде interface loopback , например:

Интерфейс loopback должен формироваться с маской подсети на 32 бита - 255.255.255.255. Такая маска называется маской узла, потому что маска определяет сеть одного узла.

Изменение приоритета OSPF может производиться администратором по команде ip ospf priority в режиме конфигурирования интерфейса:

Значение приоритета ( № ) интерфейса может изменяться в пределах от 0 до 255. Приоритет можно посмотреть по команде:

При подключении маршрутизатора, например В к сети ( рис. 4.3), протокол OSPF проходит последовательно несколько стадий, чтобы достичь сходимости. На этапе установления отношения смежности происходит переход интерфейса G0/1 маршрутизатора В из выключенного состояния Down в состояние Init, когда интерфейс начинает передавать Hello-пакеты.

Маршрутизатор В отправляет Hello-пакеты с идентификатором, например 192.168.10.2, из всех своих интерфейсов по групповому адресу 224.0.0.5. Получив Hello-пакет, соседний маршрутизатор А устанавливает отношение смежности с В, добавив полученный идентификатор в свою базу данных смежности и модифицировав таблицу соседних устройств. При этом маршрутизатор А в режиме одноадресной рассылки отправляет Hello-пакет маршрутизатору В. Пакет содержит идентификатор самого устройства А, например 192.168.10.1, и список соседей, подключенных к этому интерфейсу, т.е. идентификатор 192.168.10.2.

Подключение маршрутизатора к сети

Получив Hello-пакет со своим собственным идентификатором, маршрутизатор В добавляет устройство А в свою базу данных смежности и формирует таблицу соседних устройств. Протокол OSPF переводит маршрутизатор в состояние Two-Way.

После этого в сетях Ethernet проводятся выборы назначенного (DR) и запасного ( BDR ). Если маршрутизаторы А и В ( рис. 4.3) имеют одинаковый приоритет, например 1, то в Ethernet -соединении между устройствами наибольшее значение IP -адреса (192.168.10.2) имеет интерфейс G0/1. Поэтому назначенным (DR) будет маршрутизатор В, резервным ( BDR ) - станетмаршрутизатор А.

На следующем этапе синхронизации баз данных в состоянии ExStart устройство с боле высоким значением идентификатора ( маршрутизатор В) становится ведущим, которое начинает процесс обмена пакетами DBD с ведомым (состояние Exchange). Получение пакетов DBD подтверждается пакетами LSAck. Если информация в пакетах DBD показывает, что требуются дополнительные данные, то используются пакты LSR и LSU (состояние Loading, работает алгоритм SPF ). Достижение маршрутизаторами сходимости характеризуется состоянием Full.

После синхронизации баз данных пакеты LSU рассылаются только при изменениях топологии сети или каждые 30 минут работы.

При отладке сети команда show ip protocols отображает номер процесса OSPF , идентификатор маршрутизатора, адреса присоединенных сетей, наличие пассивных интерфейсов, адреса источников, из которых передаются обновления, значение административного расстояния.

Читайте также: