Пакеты OSPF — различия между версиями
imported>Artem (→Exchange Process and OSPF Neighbor Adjacency States) |
imported>Artem (→Exchange Process and OSPF Neighbor Adjacency States) |
||
| Строка 74: | Строка 74: | ||
маршрутизаторами (и с DR, BDR и DROTHER). Полную двухстороннюю связь (full) сформирует только с DR и BDR. | маршрутизаторами (и с DR, BDR и DROTHER). Полную двухстороннюю связь (full) сформирует только с DR и BDR. | ||
| − | После выбора DR и BDR | + | После выбора DR и BDR, маршрутизаторы переходят в состояние '''exstart''' - они готовы к обнаружению link-state информации о сети и созданию своих LSDB. Процесс, используемы для обнаружения сетевых маршрутов, называется протоколом обмена - соседи в full-state состоянии. |
| + | |||
| + | Хотя в hello-протоколе используются hello-пакеты (OSPF packet type 1), другие 4 типа пакетов используются в течении процесса обмена и синхронизации LSDB: | ||
| + | *OSPF packet type 2 DBD - используется для описания LSA, находящихся в LSDB (Elects master/slave for database exchange process). | ||
| + | *OSPF packet type 3 LSR - используется для запроса недостающей LSA информации (After DBD packets exchange process, the router may find it does not have an up-to-date database. The LSR packet is used to request pieces of neighbor database that is more up-to-date.) | ||
| + | *OSPF packet type 4 LSU - используется для отправки полных LSA (These packets implement the flooding of LSAs. Each LSA contains routing, metric and topology information to describe a portion of OSPF network. The local router advertises LSA within an LSU packet to its neighboring routers. In addition, the local router advertises the LSU packet with information in response to an LSR packet.) | ||
| + | *OSPF packet type 5 LSAck - используется для подтверждения LSU, для гарантированной доставки и информационного обмена (OSPF requires acknowledgment for the receipt of each LSA. Multiple LSAs can be acknowledged in a single LSAck packet.). | ||
| + | |||
*Down — начальное состояние процесса обнаружения соседей. Это состояние указывает на то, что от соседей не была получена свежая информация. В NBMA сетях Hello-пакеты могут отправляться и соседям в состоянии Down, однако с меньшей частотой (PollInterval). | *Down — начальное состояние процесса обнаружения соседей. Это состояние указывает на то, что от соседей не была получена свежая информация. В NBMA сетях Hello-пакеты могут отправляться и соседям в состоянии Down, однако с меньшей частотой (PollInterval). | ||
| Строка 80: | Строка 87: | ||
*Init — состояние, в котором находится маршрутизатор, отправивший своему соседу hello и ожидающий от него ответного hello. | *Init — состояние, в котором находится маршрутизатор, отправивший своему соседу hello и ожидающий от него ответного hello. | ||
*Two-way — при получении ответных hello маршрутизатор должен увидеть в них свой RID в списке соседей. Если это так, то он устанавливает отношения и переходит в состояние two-way. | *Two-way — при получении ответных hello маршрутизатор должен увидеть в них свой RID в списке соседей. Если это так, то он устанавливает отношения и переходит в состояние two-way. | ||
| − | *Exstart — | + | *Exstart — После выборов DR и BDR, между роутерами и DR, BDR начинается процесс обмена пакетами DBD (Database Descriptor) c информацией о состоянии каналов. В этом состоянии, роутеры и их DR и BDR устанавливают отношения master-slave . Роутер с самым большим Router ID (RID) становиться master и начинает обмен. |
*Exchange — маршрутизаторы посылают друг другу database description пакеты (DDPs) с информацией о сетях, содержащихся в их собственной базе каналов (database). | *Exchange — маршрутизаторы посылают друг другу database description пакеты (DDPs) с информацией о сетях, содержащихся в их собственной базе каналов (database). | ||
*Loading — Если маршрутизатор видит, что части маршрутов нет в его topology table, он посылает сообщение типа LSR с перечислением тех сетей, по которым он хочет получить дополнительную информацию. Пока маршрутизатор находится в ожидании ответа в виде LSU сообщений, он пребывает в состоянии Loading. | *Loading — Если маршрутизатор видит, что части маршрутов нет в его topology table, он посылает сообщение типа LSR с перечислением тех сетей, по которым он хочет получить дополнительную информацию. Пока маршрутизатор находится в ожидании ответа в виде LSU сообщений, он пребывает в состоянии Loading. | ||
Версия 11:09, 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 инкапсулированы в заголовок сетевого уровня, как показано на рисунке 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-пакеты содержат следующую информацию:
- Идентификатор маршрутизатора (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-пакетами.
- Маршрутизатор А подключается к сети; OSPF на интерфейсе в статусе DOWN, т.к. обмена инфой ещё не было. Она начинается с рассылки hello-пакета через все интерфейсы, участвующие в OSPF, даже если маршрутизатор не в курсе о других маршрутизаторах и DR. Hello-пакеты рассылаются на мультикаст 224.0.0.5.
- Всё подключённые маршрутизаторы с запущенным OSPF получают hello-пакет от А и добавляют А в свои списки соседей. Такие маршрутизаторы сейчас находятся в neighbor init-state.
- Все маршрутизаторы, которые получили hello-пакет, отправляют юникаст пакет-ответ с соответствующей информацией маршрутизатору А. Поле Neighbor в пакете hello содержит всех других соседей, включая А.
- Когда А получает все эти 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, маршрутизаторы переходят в состояние exstart - они готовы к обнаружению link-state информации о сети и созданию своих LSDB. Процесс, используемы для обнаружения сетевых маршрутов, называется протоколом обмена - соседи в full-state состоянии.
Хотя в hello-протоколе используются hello-пакеты (OSPF packet type 1), другие 4 типа пакетов используются в течении процесса обмена и синхронизации LSDB:
- OSPF packet type 2 DBD - используется для описания LSA, находящихся в LSDB (Elects master/slave for database exchange process).
- OSPF packet type 3 LSR - используется для запроса недостающей LSA информации (After DBD packets exchange process, the router may find it does not have an up-to-date database. The LSR packet is used to request pieces of neighbor database that is more up-to-date.)
- OSPF packet type 4 LSU - используется для отправки полных LSA (These packets implement the flooding of LSAs. Each LSA contains routing, metric and topology information to describe a portion of OSPF network. The local router advertises LSA within an LSU packet to its neighboring routers. In addition, the local router advertises the LSU packet with information in response to an LSR packet.)
- OSPF packet type 5 LSAck - используется для подтверждения LSU, для гарантированной доставки и информационного обмена (OSPF requires acknowledgment for the receipt of each LSA. Multiple LSAs can be acknowledged in a single LSAck packet.).
- Down — начальное состояние процесса обнаружения соседей. Это состояние указывает на то, что от соседей не была получена свежая информация. В NBMA сетях Hello-пакеты могут отправляться и соседям в состоянии Down, однако с меньшей частотой (PollInterval).
- Attempt — это состояние имеет смысл только для соседей, которые присоединены к NBMA сетям. Оно указывает на то, что от соседа не была получена свежая информация и что нужно сделать попытку связаться с соседом. Это делается путём отправки соседу сообщений Hello с промежутком времени HelloInterval (в Cisco в этом состоянии сообщения Hello отправляются каждый PollInterval. Имеет смысл для соседей в NBMA сетях, которые заданы командой neighbor).
- Init — состояние, в котором находится маршрутизатор, отправивший своему соседу hello и ожидающий от него ответного hello.
- Two-way — при получении ответных hello маршрутизатор должен увидеть в них свой RID в списке соседей. Если это так, то он устанавливает отношения и переходит в состояние two-way.
- Exstart — После выборов DR и BDR, между роутерами и DR, BDR начинается процесс обмена пакетами DBD (Database Descriptor) c информацией о состоянии каналов. В этом состоянии, роутеры и их DR и BDR устанавливают отношения master-slave . Роутер с самым большим Router ID (RID) становиться master и начинает обмен.
- Exchange — маршрутизаторы посылают друг другу database description пакеты (DDPs) с информацией о сетях, содержащихся в их собственной базе каналов (database).
- Loading — Если маршрутизатор видит, что части маршрутов нет в его topology table, он посылает сообщение типа LSR с перечислением тех сетей, по которым он хочет получить дополнительную информацию. Пока маршрутизатор находится в ожидании ответа в виде LSU сообщений, он пребывает в состоянии Loading.
- Full — Когда маршрутизатор получил всю информацию и database на обоих маршрутизаторах синхронизирована, оба маршрутизатора переходят в состояние fully adjacent.