Пакеты OSPF — различия между версиями

Материал из Cisco CCNP
Перейти к навигации Перейти к поиску
imported>Artem
imported>Artem
(→‎Exchange Process and OSPF Neighbor Adjacency States)
Строка 73: Строка 73:
 
  Если маршрутизатор подключили к сети, в которой уже определены DR и BDR, то он будет в two-way состоянии со всеми
 
  Если маршрутизатор подключили к сети, в которой уже определены DR и BDR, то он будет в two-way состоянии со всеми
 
  маршрутизаторами (и с DR, BDR и DROTHER). Полную двухстороннюю связь (full) сформирует только с DR и  BDR.
 
  маршрутизаторами (и с DR, BDR и DROTHER). Полную двухстороннюю связь (full) сформирует только с DR и  BDR.
 +
 +
После выбора DR и BDR
 +
 +
*Down — начальное состояние процесса обнаружения соседей. Это состояние указывает на то, что от соседей не была получена свежая информация. В NBMA сетях Hello-пакеты могут отправляться и соседям в состоянии Down, однако с меньшей частотой (PollInterval).
 +
*Attempt — это состояние имеет смысл только для соседей, которые присоединены к NBMA сетям. Оно указывает на то, что от соседа не была получена свежая информация и что нужно сделать попытку связаться с соседом. Это делается путём отправки соседу сообщений Hello с промежутком времени HelloInterval (в Cisco в этом состоянии сообщения Hello отправляются каждый PollInterval. Имеет смысл для соседей в NBMA сетях, которые заданы командой neighbor).
 +
*Init — состояние, в котором находится маршрутизатор, отправивший своему соседу hello и ожидающий от него ответного hello.
 +
*Two-way — при получении ответных hello маршрутизатор должен увидеть в них свой RID в списке соседей. Если это так, то он устанавливает отношения и переходит в состояние two-way. 
 +
*Exstart — на этой фазе маршрутизаторы определяют, кто из них master/slave
 +
*Exchange — маршрутизаторы посылают друг другу database description пакеты (DDPs) с информацией о сетях, содержащихся в их собственной базе каналов (database).
 +
*Loading — Если маршрутизатор видит, что части маршрутов нет в его topology table, он посылает сообщение типа LSR с перечислением тех сетей, по которым он хочет получить дополнительную информацию.  Пока маршрутизатор находится в ожидании ответа в виде LSU сообщений, он пребывает в состоянии Loading.
 +
*Full — Когда маршрутизатор получил всю информацию и database на обоих маршрутизаторах синхронизирована, оба маршрутизатора переходят в состояние fully adjacent.
  
 
===OSPF Neighbor States===
 
===OSPF Neighbor States===

Версия 10:48, 5 марта 2012

OSPF выполняет несколько функций:

  • Обнаружение соседей для формирования отношений;
  • Рассылка link-state информации для формирования на каждом маршрутизаторе LSDB;
  • Запуск SPF для расчёта наилучших маршрутов ко всем получателям;
  • Наполнение таблицы маршрутизации наилучшими маршрутами ко всем получателям.

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

Типы пакетов:

  • Hello - используется для обнаружения соседей и установления соседства между ними.
  • Database description (DBD) - Проверяет синхронизацию баз данных между маршрутизаторами.
  • Link-State Request (LSR) — запрашивает определенные записи о состоянии каналов от маршрутизатора к маршрутизатору.
  • Link-State Update (LSU) — отправляет определенные записи о состоянии каналов в ответ на запрос.
  • Link-State Acknowledgment (LSAck) — подтверждает получение других типов пакетов.
Файл:OSPF packet header format.png
Рис. 5. Формат заголовка пакета OSPF.

Все пять типов пакетов OSPF инкапсулированы в заголовок сетевого уровня, как показано на рисунке 5. Как показано на рисунке, для идентификации пакета используется номер 89. Каждый пакет начинается с заголовка, содержащего:

  • Номер версии - 2 для OSPFv2, 3 для OSPFv3 (поддержка IPv6 );
  • Тип - 5 типов пакетов (см. выше);
  • Длина пакета - длина пакета в байтах;
  • Router ID - определяет отправителя пакета
  • Area ID - определяет область в которой возник пакет;
  • Checksum - для проверки целостности пакета;
  • Тип аутентификации (Authentication type) - no, plain или md5;
  • Autentication - используется с типом аутентификации;
  • Data - содержит различную информацию, зависящую от типа пакета OSPF:
    • Hello — список известных соседей
    • DBD — содержит суммарную информацию базы данных состояний каналов, которая включает в себя все известные идентификаторы маршрутизаторов и их последние номера последовательностей (sequence number) и другую информацию.
    • LSR — содержит тип необходимого LSU и идентификатор маршрутизатора, у которого есть этот LSU.
    • LSU — содержит полные записи объявления о состоянии канала. Несколько LSA могут передаваться в одном пакете обновлений.
    • LSAck — поле пустое


Формирование соседских отношений между соседними узлами OSPF: Hello

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

Каждый интерфейс, участвующий в OSPF, использует мультикаст адрес 224.0.0.5 для рассылки hello-пакетов. Hello-пакеты содержат следующую информацию:

Файл:OSPF hello adj.png
Формирование соседства
  • Идентификатор маршрутизатора (Router ID). Идентификатор маршрутизатора — это 32-битный номер, уникальный для маршрутизатора. По умолчанию выбирается самый большой IP-адрес активного интерфейса, если не настроен интерфейс loopback или идентификатор маршрутизатора, например IP)адресу 172.16.12.1 будет отдано предпочтение над 172.16.1.1. Эта идентификация важна для установления соседских отношений и устранения неполадок в них, а также для координации обмена данными маршрутизации.
  • Hello и Dead интервалы - Интервалы приветствия и простоя (Hello and dead intervals). Интервал приветствия определяет период отправки пакетов приветствия маршрутизатором. Интервал приветствия по умолчанию составляет 10 секунд. Интервал простоя — это время в секундах, в течение которого маршрутизатор ожидает пакета приветствия ососеднего маршрутизатора, прежде чем объявить его неисправным. По умолчанию интервал простоя в 4 раза превышает интервал приветствия. Эти таймеры должны быть одинаковы на соседних маршрутизаторах, в противном случае соседские отношения не будут сформированы;
  • Neighbors - В поле соседей перечисляются соседние маршрутизаторы, с которыми установлено двусторонне соединение. Это двустороннее соединение устанавливается, когда маршрутизатор опознает себя в поле пакета приветствия, полученного от соседнего маршрутизатора;
  • Area ID - Для успешного взаимодействия маршрутизаторы должны находиться в одном сегменте и их интерфейсы должны принадлежать к одной области OSPF в этом сегменте. Кроме того, соседние узлы должны использовать одинаковую подсеть и маску. Все эти маршрутизаторы будут иметь одинаковые данные о состоянии каналов.
  • Router priority - 8-битовый номер, приоритет маршрутизатора. Используется для выбора DR и BDR.
  • DR и BDR ip адреса - если известны;
  • Authentication password - если аутентификация вкл, пароль должен совпадать на всех пирах.
  • Флаг тупиковой области (Stub area flag). Тупиковая область — особая область среды OSPF. Два маршрутизатора должны согласовать флаг тупиковой области в пакетах приветствия. Назначение тупиковой области позволяет уменьшить число обновлений маршрутизации, заменив их на маршрут по умолчанию.

Для формирования соседства следующие поля пакета hello должны совпадать:

  • Hello interval;
  • Dead interval;
  • Area ID;
  • Authentication Password;
  • Stub Area Flag.
Внимание!
Для формирования соседства первичные адреса на интерфейсах маршрутизаторов должны быть в одной подсети, маска и MTU
должны совпадать.

Exchange Process and OSPF Neighbor Adjacency States

Первым дело после запуска инициализации OSPF, маршрутизаторы должны пройти этап обмена hello-пакетами.

  1. Маршрутизатор А подключается к сети; OSPF на интерфейсе в статусе DOWN, т.к. обмена инфой ещё не было. Она начинается с рассылки hello-пакета через все интерфейсы, участвующие в OSPF, даже если маршрутизатор не в курсе о других маршрутизаторах и DR. Hello-пакеты рассылаются на мультикаст 224.0.0.5.
  2. Всё подключённые маршрутизаторы с запущенным OSPF получают hello-пакет от А и добавляют А в свои списки соседей. Такие маршрутизаторы сейчас находятся в neighbor init-state.
  3. Все маршрутизаторы, которые получили hello-пакет, отправляют юникаст пакет-ответ с соответствующей информацией маршрутизатору А. Поле Neighbor в пакете hello содержит всех других соседей, включая А.
  4. Когда А получает все эти hello-пакеты, он добавляет все маршрутизаторы, имеющие свои router ID в их hello-пакетах в свою собственную бд соседей (When router A recieves these hello packets, it adds all the routers that have its router ID in their hello packets to its own neighbor relation database). Маршрутизатор А теперь находится в two-way состоянии с этими маршрутизаторами. Все маршрутизаторы, которые имеют друг друга в таблицах соседей, установили двунаправленное соединение.

Маршрутизаторы периодически (по умолчанию, раз в 10 сек в широковещательных сетях) обмениваются hello-пакетами, чтобы отслеживать работоспособность связи.

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

Если маршрутизатор подключили к сети, в которой уже определены DR и BDR, то он будет в two-way состоянии со всеми
маршрутизаторами (и с DR, BDR и DROTHER). Полную двухстороннюю связь (full) сформирует только с DR и  BDR.

После выбора DR и BDR

  • Down — начальное состояние процесса обнаружения соседей. Это состояние указывает на то, что от соседей не была получена свежая информация. В NBMA сетях Hello-пакеты могут отправляться и соседям в состоянии Down, однако с меньшей частотой (PollInterval).
  • Attempt — это состояние имеет смысл только для соседей, которые присоединены к NBMA сетям. Оно указывает на то, что от соседа не была получена свежая информация и что нужно сделать попытку связаться с соседом. Это делается путём отправки соседу сообщений Hello с промежутком времени HelloInterval (в Cisco в этом состоянии сообщения Hello отправляются каждый PollInterval. Имеет смысл для соседей в NBMA сетях, которые заданы командой neighbor).
  • Init — состояние, в котором находится маршрутизатор, отправивший своему соседу hello и ожидающий от него ответного hello.
  • Two-way — при получении ответных hello маршрутизатор должен увидеть в них свой RID в списке соседей. Если это так, то он устанавливает отношения и переходит в состояние two-way.
  • Exstart — на этой фазе маршрутизаторы определяют, кто из них master/slave
  • Exchange — маршрутизаторы посылают друг другу database description пакеты (DDPs) с информацией о сетях, содержащихся в их собственной базе каналов (database).
  • Loading — Если маршрутизатор видит, что части маршрутов нет в его topology table, он посылает сообщение типа LSR с перечислением тех сетей, по которым он хочет получить дополнительную информацию. Пока маршрутизатор находится в ожидании ответа в виде LSU сообщений, он пребывает в состоянии Loading.
  • Full — Когда маршрутизатор получил всю информацию и database на обоих маршрутизаторах синхронизирована, оба маршрутизатора переходят в состояние fully adjacent.

OSPF Neighbor States

Maintaining Routing Information

OSPF Link-State Sequence Numbers

Verifying Packet Flow