Как проверить установление соседских отношений между маршрутизаторами

Обновлено: 05.07.2024

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

Принцип работы заключается в следующем:

  1. После включения маршрутизаторов протокол ищет непосредственно подключенных соседей и устанавливает с ними “дружеские” отношения.
  2. Затем они обмениваются друг с другом информацией о подключенных и доступных им сетях. То есть они строят карту сети (топологию сети). Данная карта одинакова на всех маршрутизаторах.
  3. На основе полученной информации запускается SPF (Shortest Path First - Выбор наилучшего пути) алгоритм, который рассчитывает оптимальный маршрут к каждой сети. Данный процесс похож на построение дерева, корнем которого является сам маршрутизатор, а ветви - пути к доступным сетям. Данный процесс, то есть конвергенция, происходит очень быстро.

SPF протоколы не рассылают периодические обновления, как это делают векторные алгоритмы. Вместо этого они рассылают обновления каждые 30 минут, причем не всю базу данных, а только определенную часть, не загружая при этом сеть.

Если какой-нибудь интерфейс или маршрутизатор отключится, то будет немедленно сгенерировано обновление и все маршрутизаторы сразу же обновят свои таблицы маршрутизации.

Для сравнения возьмем сеть и посмотрим как протоколы RIP и SPF построят маршрут от узла А до сети Е.

RIP построит следующий маршрут, учитывая наименьшее расстояния до цели:


SPF протоколы построят иной маршрут, но с учетом скорости и надежности канала:


У SPF протоколов маршрут получился гораздо длиннее, однако пропускная способность канала гораздо выше, чем у RIP.

К SPF протоколам относят OSPF и IS-IS. Это 2 похожих протокола, которые были разработаны разными организациями. Мы будем рассматривать только протокол OSPF.

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

Иерархия и структура сети

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

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


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

В OSPF зона 0 (Area 0) всегда является магистральной (backbone), к которой подключаются остальные зоны. Связь между зонами всегда осуществляется только через магистральную зону.

Всего существует 6 зон:

Название зоны

Отвечает за межзональную маршрутизацию. Всегда присутствует в топологии сети

Обычная зона. Может содержать пограничные маршрутизаторы зоны ABR и пограничные маршрутизаторы автономной системы ASBR, то есть может подключаться к другим автономным системам.

Не принимает анонсы о внешних сетях всей автономной зоны, однако принимает анонсы о других зонах. Маршрут к внешним сетям заменен на маршрут по умолчанию. Не может иметь ASBR маршрутизатор, то есть не подключается к другим автономным сетям.

Totally Stub - полностью тупиковая

Такая же сеть, как и Stub, однако в дополнение не принимает анонсы о других зонах. Маршруты к другим зонам заменены на маршрут по умолчанию.

Not-So-Stubby-Area (NSSA) - частично тупиковая сеть

Такая же сеть, как и Stub, однако может иметь ASBR маршрутизатор.

“Усиление” NSSA, кроме того маршруты к другим зонам заменены на маршрут по умолчанию.

Мы же рассмотрим только магистральные и стандартные зоны.

Следует выделить специальные маршрутизаторы, играющие определенную роль при разделении на зоны:

Магистральный маршрутизатор ( Backbone router, BR ) - используется только в зоне 0.

Пограничный маршрутизатор ( Area Border Router, ABR ) - включается на стыке 2-х и более зон.

Внутренний маршрутизатор ( Internal Route r) - обычный внутризонный маршрутизатор.

Пограничный маршрутизатор автономной сети ( AS Boundary router, ASBR ) - подключается на стыке разных автономных систем


К маршрутизаторам BR, ABR, ASBR предъявляются большие требования по мощности и пропускной способности, так как они оперируют с большими потоками данных.

Составление таблиц протокола

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

Таблица смежности или таблица соседей ( Adjacency table ) - содержит всех непосредственно подключенных соседей:



Топологическая таблица (Link State Data Base, LSDB) - содержит информацию обо всех маршрутизаторах своей зоны и активных интерфейсах этих маршрутизаторах. Все маршрутизаторы одной зоны имеют одинаковую таблицу


Таблица маршрутизации (Route table) - вычисляется алгоритмом SPF на основе информации из топологической таблицы


Чтобы понять назначение всех этих таблиц сравним работу протокола с работой обычного навигатора, установленного в машине. Водителю необходимо доехать из пункта А в пункт В. Для этого в навигатор загружают карту, чтобы он смог найти дорогу. Эта карта и является аналогом Топологической таблицы LSDB. Затем навигатор вычисляет оптимальный маршрут, учитывая при этом множества параметров:

  • пробки на дорогах
  • дорожное покрытие
  • скоростное ограничение
  • платные и бесплатные дороги
  • радары и многое другое.

Подобные параметры также учитываются протоколами SPF.

В результате на экране навигатора отображаются один или несколько маршрутов. Эти маршруты являются аналогом таблицы маршрутизации протокола OSPF.

Как же строятся таблицы смежности и топологии?

Для этого маршрутизаторы рассылают друг другу специальные обновления, называемые анонсами LSA (Link State Advertisements). Анонсы рассылаются по адресам 224.0.0.5 и 225.0.0.6. Существуют несколько типов анонсов. Мы их рассмотрим ниже в этом уроке.

Типы OSPF сетей

Маршрутизация работает на уровне L3, однако для того, чтобы связать маршрутизаторы другом с другом, используются различные технологии, работающие на уровнях L1 и L2. Одна из таких технологий Ethernet. Существуют и другие технологии такие, как Frame Relay, ATM, ISDN и так далее. Мы подробно их изучим в одной из следующих глав. Сейчас вкратце остановимся на том, каковы особенности работы протокола OSPF в сетях, где используются перечисленные технологии.

Прежде всего следует знать, что в некоторых типах сетей, протокол выбирает выделенный (Designated, DR) и резервный выделенный (Backup Designated Router, BDR) маршрутизаторы. Сделано это с целью уменьшения служебного трафика. Об этом подробнее чуть далее.

Выделяют следующие типы OSPF сетей:

  • Point-to-Point (сети типа точка-точка) - связь организуется только между парой маршрутизаторов. DR и BDR не выбираются. Например, 2 маршрутизатора связаны с помощью технологии ISDN.


  • Broadcast (широковещательные сети) - сети с множественным доступом (то есть объединяет сразу несколько маршрутизаторов) с поддержкой широковещательных рассылок. Например, сеть Ethernet. DR и BDR в данном случае выбираются


  • Nonbroadcast multiaccess, NBMA - сеть с множественным доступом, однако широковещательная рассылка в них не поддерживается. В таких сетях задействованы технологии Frame Relay, ATM, X.25. DR и BDR в них могут выбираться, а могут и не выбираться. Все зависит от режима работа сети NBMA


В данном курсе рассматривать сети NBMA мы не будем, однако для общей информации приведу таблицу режимов работы сетей NBMA

Режим работы

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

Сеть воспринимается как набор нескольких соединений point-to-point. Соседи обнаруживаются автоматически за счет многоадресной (multicast) рассылки пакетов Hello. Все маршрутизаторы должны находиться в одной подсети. DR и BDR не выбираются, все соседи обнаруживаются автоматически.

Похож на режим point-to-point, то есть устанавливается только парное соединение. DR и BDR не выбираются.

Похож на режим Broadcast в Ethernet.Соседи обнаруживаются автоматически за счет многоадресной (multicast) рассылки пакетов Hello. Все маршрутизаторы должны находиться в одной подсети. Выбираются DR и BDR, работает в полносвязной топологии.

Похож на режим Point-to-multipoint, однако необходимо вручную указывать всех соседей. Multicast и Broadcast рассылка пакетов Hello не поддерживается. DR и BDR не выбираются.


Итак, для чего же нужны DR и BDR?

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

Если взглянуть на сеть Ethernet, то отношения смежности установятся каждый с каждым. Это приведет к резкому увеличению служебного трафика. Чтобы снизить трафик была выбрана концепция с применением DR и BDR.

Данный принцип основан на следующих правилах:

  • Выбираются DR и BDR
  • Если DR выходит из строя, то BDR сразу становится DR. После этого выбирается другой BDR.
  • Отношения смежности устанавливаются только с DR и BDR. Это означает, что передача топологической информации осуществляется только между выделенным и невыделенным (DROther) маршрутизаторами.
  • Для связи с DR и BDR используется адрес групповой рассылки 224.0.0.6.
  • DR и BDR связываются с остальными маршрутизаторами по адресу 224.0.0.5
  • При любом изменении сети, обновления передаются всегда только DR и BDR (по каналу 224.0.0.6). И только после этого DR оповещает остальные маршрутизаторы (по каналу 224.0.0.5).
  • BDR не принимает активного участия в рассылке обновлений, однако содержит идентичную базу данных, что и DR на случай отказа последнего.



А как выбираются DR и BDR?

В OSPF каждый маршрутизатор обязан иметь свой ID. ID представляет собой 32-х битный десятичный номер, который выглядит как IP адрес. Поэтому в качестве ID выбирается IP адрес работающего порта. Затем все маршрутизаторы сравнивают свои ID. Побеждает тот у кого ID имеет большее значение. Весь процесс выбора DR автоматический, однако на его результаты можно повлиять.

Для этого можно настроить один из следующих параметров:

  • Приоритет интерфейса
  • Router ID
  • IP адрес loopback интерфейса

Если приоритет установлен на 0, то маршрутизатор никогда не будет выбран в качестве DR/BDR. На блок-схеме внизу указан процесс выбора ID OSPF маршрутизатора:


Сам процесс выбора DR и BDR рассмотрен подробнее в конце данного урока.

Принцип работы протокола. Типы пакетов, состояния связей

Углубимся немного в детали протокола. Рассмотрим типы пакетов, а также узнаем какие стадии проходит маршрутизатор в процессе конвергенции.

Рассмотрим весь процесс по порядку на примере сети


Как только включили маршрутизаторы они находятся в состоянии Down , то есть никаких отношений соседства нет и они даже не знают друг о друге.

1. Чтобы обнаружить соседей каждые 10 с каждый маршрутизатор отправляет пакет Hello по адресу 224.0.0.5, а также сам принимает такой же пакет от соседей.

  • Свой ID (Router ID)
  • Hello Interval
  • Dead Interval
  • ID своих соседей (Neighbors)
  • Маску подесети (Subnet mask)
  • Номер зоны (Area ID)
  • Приоритет маршрутизатора (Router Priority)
  • Адреса DR и BDR маршрутизаторов
  • Пароль аутентификации

2. Сразу после отправки пакета маршрутизаторы переходят в состояние Init .

3. Первый пакет Hello не содержит ID соседа. Пакет посылается по групповому адресу 224.0.0.5:


Как только R2 получит пакет от R1, то R2 в начале сравнит все параметры. если они совпадают, то адрес R1 вносится в таблицу соседей. После этого R2 вложит ID R1 в следующий пакет. Hello, который отправляется по адресу маршрутизатора R1, то есть ответный пакет Hello не использует групповой адрес:


R1, приняв пакет от R2 тоже сравнит параметры. И если они совпадают, то адрес R2 вносится в таблицу соседей. Затем R1 анализирует ID соседей в принятом пакете. Как только R1 увидит свой ID в пакете от R2, то перейдет в состояние двусторонней связи 2WAY . Аналогичный процесс происходит и с R2. Весь процесс проиллюстрирован ниже:

4. Если тип сети Broadcast, то выбирается DR/BDR. В процессе выбора все маршрутизаторы переходят в состояние Exstart . Изначально на стадиях INIT и 2WAY все маршрутизаторы в пакетах Hello указывают, что DR и BDR = 0.0.0.0, то есть не определены.


После того, как определены все соседи, маршрутизатор с более высоким ID указывает себя в качестве DR во пакетах Hello. Остальные маршрутизаторы, приняв такой пакет, сравнивают свои ID c ID “самопровозглашенного” DR. Если их ID меньше, то они с этим соглашаются и также передают его ID в своих пакетах Hello.

Аналогичным способом выбирается и BDR.


Что будет, если после выбора DR/BDR в сети появится маршрутизатор с большим ID?

Ничего. Процесс выбора DR/BDR запускается лишь раз. Если DR отключится, то его место займет BDR, а вместо BDR может стать новый маршрутизатор с более высоким ID.

Если тип сети Point-to-Point, то данный процесс пропускается.

5. Затем начинается процесс обмена топологическими данными. Для этого маршрутизаторы рассылают друг другу пакеты DBD ( Database Description ). Маршрутизаторы переходят в состоянии Exchange. На основе данных, полученных от DBD строится топологическая таблица. Для подтверждения приема пакета DBD маршрутизатор отправляет пакет LSAck ( Link State Acknowledgment ), в котором говорится: “Я все принял.” На данной стадии маршрутизаторы используют одноадресатные пакеты (unicast), то есть не используют групповой адрес 224.0.0.5.

6. Если у маршрутизатора отсутствует часть информации о структуре сети либо его база данных устарела и он хочет ее обновить, то отправит запрос LSR ( Link State Request ), в котором говорится: “Моя база данных неполная либо устарела. Отправьте мне актуальную информацию.” Ответом на запрос LSR будет пакет LSU ( Link State Update ). Получив LSU маршрутизатор подтвердит его получение пакетом LSAck. Во время данного процесса маршрутизатор пребывает в состоянии Loading .

7. Когда у маршрутизаторов больше нет вопросов друг к другу и их базы данных актуальны и равны они переходят в состоянии FULL .

Итак, подведем итоги.

Для своей работы OSPF использует следующие типы пакетов:

Hello - keep-alive пакет, которые рассылается каждые 10 с. Предназначен для установления “добрососедских” отношений между маршрутизаторами, которые непосредственно подключены друг к другу. А также для объявления соседям, что канал/маршрутизатор все еще “жив”. С ним связан Dead интервал, который ждет 40с (всегда в 4 раза больше, чем Hello интервал). Если маршрутизатор не примет Hello от соседа в течении 40 c, то вся таблица пересчитывается снова. А соседям сразу высылается новый анонс.

Database Description , DBD - передает топологическую информацию сети.

Link State Request , LSR - запрос соседям на передачу части данных о состоянии каналов для обновления топологической базы данных.

Link State Update , LSU - ответ маршрутизатора на запрос LSR

Link State Acknowledgment , LSAck - подтверждение в получении LSU.

В процессе работы протокола маршрутизатор проходит через следующие состояния:

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

В данной статье попытаемся разобраться с теорией работы протокола 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.

Здесь описывается базовая конфигурация OSFP для одной и нескольких зон и его проверка.

Содержание

Планирование и настройка OSPF

Здесь описывается как спланировать и настроить базовую конфигурацию OSPF.

Планирование внедрения OSPF маршрутизации

Когда вы готовитесь к развёртыванию в сети OSPF маршрутизации, необходимо собрать информацию о текущем состоянии сети и необходимых требованиях.

  • План адресации - как развернуть OSPF и сделать решение масштабируемым. Детальный план адресации с использованием иерархической структуры подсетей для суммирования, чтобы решение было более простым для масштабирования и оптимизации.
  • Сетевая топология - устройства (коммутаторы, маршрутизаторы и т.п.) и линки между ними. Должен быть получен детальный план для того, чтобы понять какие фичи (например, multiple зоны, суммирование, stub-зоны, пеерраспределение и т.п.) могут потребоваться.
  • Зоны OSPF - разделение сети на зоны сокращает размер LSDB баз и ограничивает объём обновлений при изменении топологии сети. Маршрутизаторы ABR и ASBR должны быть выбраны в качестве тех, кто выполняет суммирование или перераспределение.

После этого можно делать план по внедрению, который будет включать следующие шаги:

  • Определить сетевые требования;
  • Собрать требуемые параметры;
  • Определить параметры OSPF маршрутизации;
  • Настроить OSPF;
  • Проверить конфигурацию.

Информация, необходимая для внедрения OSPF:

  • IP адреса интерфейсов маршрутизаторов;
  • Список маршрутизаторов, на которых будет запущен OSPF, с номерами процессов OSPF и подключёнными сетями, которые будут использоваться и анонсироваться;
  • Зоны на интерфейсах;
  • Метрики для определённых интерфейсов, для влияния на выбор маршрута. Необходимо определить метрики и интерфейсы на которых они будут применяться.

Список задач, которые надо выполнить на каждом маршрутизаторе из списка:

  • Вкл OSPF с корректной командой network (т..е указать нужные сети)
  • Присвоить корректный ID зоны на интерфейс (через режим настройки OSPF на интерфейсе или через режим настройки OSPF)
  • Опционально настроить нужным интерфейсам метрики.

После внедрения необходимо проверить корректность настроек. Задачи по проверки включают следующие шаги:

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

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

Базовая настройка OSPF

  1. Включить процесс OSPF на маршрутизаторе командой router ospf process-id ['vrfvpn-name]. Описание параметров дано ниже.
  2. Определить, какие интерфейсы на маршрутизаторе будут участвовать в маршрутизации OSPF, и определить зоны, используя команду networkip-address wildcard-maskareaarea-id. Описание параметров дано ниже.

Альтернативным вариантом запуска OSPF является запуск на интерфейсе командой ip ospf process-id area area-id [secondaries none]. Этот вариант упрощает настройку unnumbered интерфейсов. Так как команда конфигурируется прямо на интерфейсе, то она имеет приоритет над командой network area.

Параметры команды router ospf:

  • process-id - Локально используемое значение, идентифицирующее процесс OSPF. Нет никакой необходимости соблюдать единую нумерацию процессов OSPF на разных маршрутизаторах. Не рекомендуется на одном маршрутизаторе запускать несколько процессов OSPF, так как это приведет к созданию нескольких копий базы данных и, соответственно, повышенной нагрузке. Может быть от 1 до 65535.
  • vrf vrf-name Необязательный параметр, указывающий имя процесса VRF (VPN Routing and Forwarding).
  • ip-address - Адрес сети, подсети или интерфейса. Указывает, по каким линиям (links) OSPF будет генерировать и анализировать объявления. Так же указывает, какие сети участвуют в процессе.
  • wildcard-mask - Битовая маска, влияющая на то, как интерпретировать значение адреса. Бит 0 —проверять, 1 — игнорировать. Для примера: 0.0.255.255 — должны совпасть два первых байта. 0.0.0.0 — должны совпасть все байты (обычно, адрес интерфейса). Адрес 0.0.0.0 с маской 255.255.255.255 — все интерфейсы маршрутизатора.
  • area-id - Идентификатор области OSPF . Может быть указан в десятичном виде, или в виде, похожем на IP-адрес (A.B.C.D). Принимает значения от 0 до 4294967295.

ip ospf area

  • process-id - Локально используемое значение, идентифицирующее процесс OSPF. Может быть от 1 до 65535.
  • area-id - Идентификатор области OSPF . Может быть указан в десятичном виде, или в виде, похожем на IP-адрес (A.B.C.D). Принимает значения от 0 до 4294967295.
  • second-aries none - (Опционально) Препятствует анонсированию вторичного (secondary IP) адреса на интерфейсе.

Пример однозоной конфигурации OSPF

Пример мультизонной конфигурации OSPF

ИЛИ АЛЬТЕРНАТИВНЫЙ ВАРИАНТ

Настройка Router ID

A router is known to OSPF by the OSPF router ID number.
LSDBs use the OSPF router ID to differentiate one router from the next.
By default, the router ID is the highest IP address on an active interface at the moment of OSPF process startup.
However, for stability reason, it is recommended that the router-id command or a loopback interface be configured.

Router ID это номер маршрутизатора, необходимый для успешного запуска OSPF. Если OSPF не может определить Router ID – запуск процесса не состоится, так как OSPF использует Router ID для идентификации маршрутизатора в базе данных. Таким образом, у каждого маршрутизатора должен быть уникальный в пределах сети Router ID. Процесс OSPF пытается определить Router ID при запуске. Это 32- битное значение, обычно записываемое в виде ip-адреса. OSPF назначает Router ID из ip-адресов интерфейсов маршрутизатора.

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

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

Назначить Router ID можно двумя способами: задав адрес для loopback-интерфейса или воспользовавшись командой router-id.

Первый способ более традиционен. Так как loopback-интерфейс является чисто виртуальным, его функционирование не зависит от внешних условий и он никогда не отключится сам по себе. Маршрутизатор предпочтет loopback-интерфейс для получения Router Id даже если адрес указанный на нем будет меньше какого-либо из физических. Если loopback-интерфейсов несколько, будет выбран наибольший адрес. Еще одно преимущество loopback-метода заключается в возможности опубликовать адрес в сеть при помощи OSPF, таким образом, обеспечивая возможность проверки работоспособности маршрутизатора без привязки к одному из физических интерфейсов, которые могут отключиться вследствие неполадок в сети. Естественно, для этого необходимо каждому loopback-интерфейсу назначать адрес из уникальной подсети.

Второй способ появился сравнительно недавно, и присутствует не во всех версиях IOS, но, тем не менее, является предпочтительным по сравнению с остальными, так как позволяет четко, ясно и однозначно задать Router ID маршрутизатору вне зависимости от каких-либо иных факторов. Для настройки Router ID командой router-id нужно сначала перейти в режим конфигурации OSPF при помощи команды router ospf [process-id], и так можно задать любое значение, главное, чтобы оно было уникально в сети.

После выбора router ID оно не меняется, даже если интерфейс, который маршрутизатор использовал в качестве ID ушёл в DOWN. Новое значение Router ID применится после перезапуска OSPF, который либо произойдет сам, при перезагрузке маршрутизатора, либо может быть инициирован командой clear ip ospf process запущенной из режима привилегированного исполнения.

Если физический интерфейс, адрес которого использовался в качестве router ID, отказал, а маршрутизатор после отказа перезагрузили (или перезапустили процесс OSPF),то router ID изменится. Всё это может доставить много хлопот администратору. Поэтому следует использовать loopback интерфейсы или статически указывать router-id.

Loopback интерфейсы и команда router-id

Общий алгоритм выбора ID маршрутизатора.

Для того, чтобы маршрутизатор выбрал в качестве ID адрес loopback интерфейса, необходимо задать его. Настроенный адрес loopback интерфейса имеет приоритет выше, чем любой адрес на физических интерфейсах. К плюсам такого решения можно отнести тот факт, что loopback интерфейс всегда остаётся активным и не может отказать. Поэтому на всех ключевых маршрутизаторах следует использовать такой тип указания ID. Если loopback интерфейс анонсируется в команде network, то он может быть пинганут, что позволяет использовать его для управления маршрутизатором.

Использование команды router-id гарантирует, что OSPF выберет определённый запланированный для этого маршрутизатор. В качестве параметра 32 битное значение в формате ip адреса.

После настройки команды router-id используйте clear ip ospf process команду для перезапуска процесса маршрутизации OSPF.

Проверка Router ID

Для проверки Router ID можно воспользоваться командой show ip ospf. Эта команда также полезна тем, что позволяет быстро просмотреть тайминги OSPF и статистику, в том числе – количество запусков алгоритма SPF. Необязательные параметры данной команды позволяют легкостью указать, какую конкретно часть информации вы хотели бы получить.

Проверка работоспособности OSPF

Для проверки корректности настройки OSPF и корректности его работы можно и нужно пользоваться следующими командами из подмножества show-команд:

  • show ip ospf - Просмотр ID маршрутизатора, статистики, таймеров, количества запусков SPF, информацию об LSA (Link State Advertisement – Объявление состояния связи).
  • show ip ospf interface - Позволяет посмотреть параметры OSPF применительно к интерфейсам маршрутизатора. В частности, очень удобна для проверки принадлежности интерфейса к определенной области OSPF. Кроме этого, можно просмотреть интервалы, включая интервал отсылки приветствия (hello-interval), и количество установленных соседских отношений.

(Опционально) Тип и номер интерфейса – например FastEthernet 0/0 – позволяют просмотреть параметры только для указанного интерфейса. Brief – (Опционально) краткий вывод информации.

  • show ip protocols - Показывает процессы динамической маршрутизации, их параметры, такие как таймеры, фильтры, метрики, сети, протоколы, и прочую информацию, включая статистику.
  • show ip route ospf - Показывает маршруты, полученные от процесса OSPF. Наиболее полезная и часто используемая команда, позволяющая проверить результативность работы OSPF. Необязательные параметры можно использовать для уточнения отображаемой информации, например можно указать номер процесса маршрутизации OSPF.
  • show ip ospf neighbor - Еще одна, чрезвычайно полезная команда, позволяющая просмотреть список соседних маршрутизаторов, включая из Router ID, состояние соседства, dead-timer (время до признания соседа мертвым, восстанавливается при получении hello-пакета).

Тип и номер интерфейса – (Опционально)например FastEthernet 0/0 – позволяют просмотреть параметры только для указанного интерфейса. Neighbor-id – (Опционально) Router ID соседнего маршрутизатора. Detail – (Опционально)подробная информация о соседях.

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