мета-данные страницы
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| glossary:net:protocols:ospf [2025/09/15 13:47] – radi0dev | glossary:net:protocols:ospf [2025/11/09 12:07] (текущий) – внешнее изменение A User Not Logged in | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| ====== OSPF ====== | ====== OSPF ====== | ||
| + | |||
| + | основано на http:// | ||
| OSPF (**O**pen **S**hortest **P**ath **F**irst) — протокол (3его уровня) динамической маршрутизации | OSPF (**O**pen **S**hortest **P**ath **F**irst) — протокол (3его уровня) динамической маршрутизации | ||
| Строка 6: | Строка 8: | ||
| OSPFv3 не зависит от протоколов 3-го уровня и потому может работать с IPv6 | OSPFv3 не зависит от протоколов 3-го уровня и потому может работать с IPv6 | ||
| - | |||
| - | Терминология протокола OSPF | ||
| ===== Основы ===== | ===== Основы ===== | ||
| Строка 266: | Строка 266: | ||
| * **Пограничный маршрутизатор автономной системы (AS boundary router, ASBR)** — обменивается информацией с маршрутизаторами, | * **Пограничный маршрутизатор автономной системы (AS boundary router, ASBR)** — обменивается информацией с маршрутизаторами, | ||
| + | ===== Объявления о состоянии канала (LSA) ===== | ||
| + | |||
| + | **Объявление о состоянии канала (Link State Advertisement, | ||
| + | |||
| + | Множество всех LSA, описывающих маршрутизаторы и сети, образуют базу данных состояния каналов (LSDB). | ||
| + | |||
| + | У каждого типа LSA своя функция: | ||
| + | * Router LSA и Network LSA описывают каким образом соединены маршрутизаторы и сети внутри зоны. | ||
| + | * Summary LSA предназначены для сокращения количества передаваемой информации о зонах. Описывают сети других зон для локальной. | ||
| + | * ASBR Summary LSA описывает для других зон, как дойти до локального ASBR. | ||
| + | * AS External LSA позволяет передавать по автономной системе информацию, | ||
| + | |||
| + | Фактически, | ||
| + | * В Database Description передается описание всех LSA, которые хранятся в LSDB маршрутизатора, | ||
| + | * В Link State Request передается запрос с описанием тех LSA, которых не хватает в LSDB, | ||
| + | * В Link State Update передаются полные LSA, | ||
| + | * В Link State Acknowledgment передается подтверждение о получении конкретных LSA, с описанием этих LSA. | ||
| + | |||
| + | ==== Суммарная информация о LSA ==== | ||
| + | ^ Номер LSA ^ Название LSA ^ Link-State ID ^ Кто отправляет ^ Область распространения ^ | ||
| + | | LSA 1 | Router LSA | Router ID отправителя | Все маршрутизаторы | Внутри зоны (IntraArea) | | ||
| + | | LSA 2 | Network LSA | IP-адрес интерфейса DR | DR (в сетях со множественным доступом) | Внутри зоны (IntraArea) | | ||
| + | | LSA 3 | Network Summary LSA | Сети назначения и маска сети | ABR | AS (InterArea) | | ||
| + | | LSA 4 | ASBR Summary LSA | Router ID ASBR | ABR | AS (InterArea) | | ||
| + | | LSA 5 | AS External LSA | Внешняя сеть и маска | ASBR | AS (InterArea) | | ||
| + | | LSA 7 | AS External LSA for NSSA | Внешняя сеть и маска | ASBR в NSSA | NSSA | | ||
| + | |||
| + | ==== Заголовок LSA ==== | ||
| + | Все LSA начинаются с одинакового заголовка размером 20 байт. | ||
| + | |||
| + | < | ||
| + | 0 | ||
| + | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | LS age | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | Link State ID | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | LS sequence number | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | LS checksum | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | </ | ||
| + | |||
| + | Любое LSA уникально идентифицируют 3 поля заголовка: | ||
| + | * LS type | ||
| + | * Link State ID | ||
| + | * Advertising Router | ||
| + | |||
| + | Так как может существовать несколько копий одного и того же LSA, необходимо определять какая из копий актуальна. | ||
| + | Это осуществляется с помощью анализа полей: | ||
| + | * LS age | ||
| + | * LS sequence number | ||
| + | * LS checksum | ||
| + | |||
| + | Описание полей заголовка LSA: | ||
| + | * LS age — время (в секундах) с момента генерации LSA | ||
| + | * Options — дополнительные опции, которые может поддерживать маршрутизатор. Это поле есть в пакетах hello, DBD, LSA. Согласно RFC 2328 могут быть установлены такие 5 битов: | ||
| + | * E-bit — указывает каким образом распространяются AS-external-LSA | ||
| + | * MC-bit — указывает соответствует ли IP multicast датаграмма спецификациям RFC 1584; | ||
| + | * N/P-bit — указывает как обрабатываются Type-7 LSA (RFC 1587); | ||
| + | * EA-bit — указывает желание маршрутизатора получать и отправлять External-Attributes-LSA; | ||
| + | * DC-bit — указывает как маршрутизатор работает с demand circuits (RFC 1793); | ||
| + | * LS type — тип LSA. У каждого типа LSA свой формат, | ||
| + | * Link State ID — о чем сообщает LSA. Содержание этого поля зависит от типа LSA. Значения поля для разных LSA описаны в соответствующих разделах | ||
| + | * Advertising Router — Router ID маршрутизатора, | ||
| + | * LS sequence number — версия LSA. Используется для обнаружения старых и дублирующихся LSA | ||
| + | * LS checksum — контрольная сумма, для проверки целостности. Контрольная сумма берется со всего LSA, кроме поля LS age | ||
| + | * Length — длина всего LSA (включая заголовок) в байтах | ||
| + | |||
| + | ==== Type 1 LSA ==== | ||
| + | **Type 1 LSA — Router LSA** — объявление о состоянии каналов маршрутизатора: | ||
| + | * LSA распространяются всеми маршрутизаторами. | ||
| + | * Распространяются только в пределах одной зоны. | ||
| + | |||
| + | В Router LSA содержится: | ||
| + | * описание всех каналов маршрутизатора | ||
| + | * стоимость (cost) каждого канала | ||
| + | * список соседей на каждом интерфейсе (в зоне маршрутизатора) | ||
| + | * Link-state ID — Router ID маршрутизатора, | ||
| + | |||
| + | LSA Type 1 link types и соответствующие link ID: | ||
| + | * Point-to-point соединение с другим маршрутизатором — Router ID соседа | ||
| + | * Соединение с тупиковой сетью (сеть, к которой присоединен только один маршрутизатор(локальный)) — сеть/ | ||
| + | * Соединение с транзитной сетью (сеть, в которой есть как минимум два непосредственно присоединенных маршрутизатора) — IP-адрес DR | ||
| + | * Virtual link — Router ID соседа | ||
| + | |||
| + | ==== Type 2 LSA ==== | ||
| + | **Type 2 LSA — Network LSA** — объявление о состоянии каналов сети: | ||
| + | * Распространяется DR в сетях со множественным доступом | ||
| + | * Network LSA не создается для сетей в которых не выбирается DR | ||
| + | * Распространяются только в пределах одной зоны | ||
| + | * Link-state ID — IP-адрес интерфейса DR | ||
| + | |||
| + | В LSA содержится описание всех маршрутизаторов присоединенных к сети, включая DR и маска сети, за которую отвечает DR. | ||
| + | |||
| + | |||
| + | < | ||
| + | Зачастую возникает вопрос: | ||
| + | |||
| + | Необходимость и преимущества LSA 2 понятны, | ||
| + | |||
| + | Тогда, если предположить, | ||
| + | |||
| + | LSA 2 позволяет существенно сократить количество каналов в LSDB. | ||
| + | </ | ||
| + | |||
| + | |||
| + | < | ||
| + | В ситуации, | ||
| + | </ | ||
| + | |||
| + | ==== Type 3 LSA ==== | ||
| + | **Type 3 LSA — Network Summary LSA** — суммарное объявление о состоянии каналов сети: | ||
| + | * Объявление распространяется пограничными маршрутизаторами | ||
| + | * Объявление описывает маршруты к сетям вне локальной зоны | ||
| + | * Содержит информацию о сетях и о стоимости пути к этим сетям, но не отправляет информацию о топологии сети | ||
| + | * По умолчанию, | ||
| + | * При необходимости, | ||
| + | * Link-state ID — номер сети назначения. | ||
| + | |||
| + | Когда маршрутизатор получает Network Summary LSA от пограничного маршрутизатора он не запускает алгоритм вычисления кратчайшего пути. Маршрутизатор просто добавляет к стоимости маршрута указанного в LSA стоимость пути к пограничному маршрутизатору. Затем маршрут к сети через пограничный маршрутизатор помещается в таблицу маршрутизации. | ||
| + | |||
| + | ==== Type 4 LSA ==== | ||
| + | **Type 4 LSA — ASBR Summary LSA** — суммарное объявление о состоянии каналов пограничного маршрутизатора автономной системы: | ||
| + | * Объявление распространяется пограничными маршрутизаторами (ABR) | ||
| + | * ASBR Summary LSA отличается от Network Summary LSA тем, что распространяется информация не о сети, а о пограничном маршрутизаторе автономной системы | ||
| + | * Link-state ID — Router ID ASBR, информацию о котором отправляет LSA | ||
| + | |||
| + | Когда в домен OSPF помещаются сторонние маршруты, | ||
| + | |||
| + | Всем маршрутизаторам, | ||
| + | |||
| + | ==== Type 5 LSA ==== | ||
| + | **Type 5 LSA — AS External LSA** — объявления о состоянии внешних каналов автономной системы: | ||
| + | * Объявление распространяется пограничным маршрутизатором автономной системы в пределах всей автономной системы | ||
| + | * Объявление описывает маршруты внешние для автономной системы OSPF или маршруты по умолчанию внешние для автономной системы OSPF | ||
| + | * Link-state ID — номер внешней сети. | ||
| + | |||
| + | ==== Type 7 LSA ==== | ||
| + | **Type 7 LSA — AS External LSA for NSSA** — объявления о состоянии внешних каналов автономной системы в NSSA зоне: | ||
| + | * Это объявление может передаваться только в NSSA зоне | ||
| + | * LSA 7 аналогично по содержанию LSA 5, но используется только в NSSA зоне | ||
| + | * LSA 7 нужно было для того чтобы обойти ограничения, | ||
| + | * На границе зоны пограничный маршрутизатор преобразует type 7 LSA в type 5 LSA. | ||
| + | |||
| + | ===== Типы пакетов OSPF ===== | ||
| + | |||
| + | OSPF использует 5 типов пакетов: | ||
| + | * **Hello** — используется для обнаружения соседей, | ||
| + | * **Database Description (DBD)** — проверяет синхронизацию базы данных между маршрутизаторами. | ||
| + | * **Link-State Request (LSR)** — запрашивает определенные записи о состоянии каналов от маршрутизатора к маршрутизатору. | ||
| + | * **Link-State Update (LSU)** — отправляет определенные записи о состоянии каналов в ответ на запрос. | ||
| + | * **Link-State Acknowledgment (LSAck)** — подтверждает получение других типов пакетов. | ||
| + | |||
| + | ==== Формат заголовка пакета OSPF ==== | ||
| + | Все пять типов пакетов OSPF инкапсулируются непосредственно в IP-пакет. | ||
| + | Номер протокола OSPF в IP-заголовке — 89. | ||
| + | |||
| + | У всех пакетов OSPF одинаковый заголовок. | ||
| + | |||
| + | < | ||
| + | |< | ||
| + | |||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | Router ID | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | Area ID | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | </ | ||
| + | |||
| + | Поля заголовка пакета OSPF: | ||
| + | * Версия протокола (Version number) — версия протокола OSPF. Текущая версия для IPv4 — 2. | ||
| + | * Тип пакета (Type) — указывает какой тип пакета OSPF передается: | ||
| + | * 1 — Hello | ||
| + | * 2 — Database Description | ||
| + | * 3 — Link State Request | ||
| + | * 4 — Link State Update | ||
| + | * 5 — Link State Acknowledgment | ||
| + | * Длина пакета (Packet length) — длина пакета OSPF в байтах. Длина включает в себя и заголовок. | ||
| + | * Идентификатор маршрутизатора (Router ID) — определяет какой маршрутизатор отправил пакет. | ||
| + | * Идентификатор зоны (Area ID) — определяет в какой зоне сгенерирован пакет. | ||
| + | * Контрольная сумма (Checksum) — используется для проверки целостности пакета OSPF, для обнаружения ошибок при передаче. | ||
| + | * Тип аутентификации (Authentication type) — тип аутентификации, | ||
| + | * 0 — аутентификация не используется, | ||
| + | * 1 — аутентификация открытым текстом, | ||
| + | * 2 — MD5-аутентификация. | ||
| + | * Данные аутентификации (Authentication) — используется при аутентификации маршрутизаторов. | ||
| + | |||
| + | Поле " | ||
| + | * Hello — список известных соседей | ||
| + | * DBD — содержит суммарную информацию базы данных состояний каналов, | ||
| + | * LSR — содержит тип необходимого LSU и идентификатор маршрутизатора, | ||
| + | * LSU — содержит полные записи объявления о состоянии канала. Несколько LSA могут передаваться в одном пакете обновлений. | ||
| + | * LSAck — поле пустое | ||
| + | |||
| + | ==== Hello ==== | ||
| + | Hello-пакет используется для таких целей: | ||
| + | * С помощью него каждый маршрутизатор обнаруживает своих соседей; | ||
| + | * Он передает параметры о которых маршрутизаторы должны договориться прежде чем они станут соседями; | ||
| + | * Hello-пакеты выполняют роль keepalive-пакетов между соседями; | ||
| + | * Отвечает за установление двухсторонних коммуникаций между соседними маршрутизаторами (двухсторонняя коммуникация установлена тогда, когда маршрутизатор увидит себя в списке соседей hello-пакета полученного от соседнего маршрутизатора); | ||
| + | * Он выбирает DR и BDR в широковещательных и нешироковещательных сетях со множественным доступом. | ||
| + | |||
| + | Кроме стандартного заголовка пакета OSPF, в hello-пакете содержится такая информация: | ||
| + | |||
| + | < | ||
| + | |< | ||
| + | |||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | Router ID | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | Area ID | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | Network Mask | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | Designated Router | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | Neighbor | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | ... | | ||
| + | </ | ||
| + | |||
| + | * Network mask — сетевая маска назначенная на интерфейсе с которого отправляется hello-пакет; | ||
| + | * HelloInterval — частота отправки hello-пакетов; | ||
| + | * Options — дополнительные опции, которые может поддерживать маршрутизатор. Это поле есть в пакетах hello, DBD, LSA. Согласно RFC 2328 могут быть установлены такие 5 битов: | ||
| + | * E-bit — указывает каким образом распространяются AS-external-LSA | ||
| + | * MC-bit — указывает соответствует ли IP multicast датаграмма спецификациям RFC 1584; | ||
| + | * N/P-bit — указывает как обрабатываются Type-7 LSA (RFC 1587); | ||
| + | * EA-bit — указывает желание маршрутизатора получать и отправлять External-Attributes-LSA; | ||
| + | * DC-bit — указывает как маршрутизатор работает с demand circuits (RFC 1793); | ||
| + | * Rtr Pri — приоритет маршрутизатора. Используется для выбора DR и BDR. Если приоритет установлен в 0, то маршрутизатор не может стать DR или BDR; | ||
| + | * RouterDeadInterval — интервал времени по истечению которого сосед будет считаться " | ||
| + | * Designated Router — IP-адрес DR для сети в которую отправлен hello-пакет, | ||
| + | * Backup Designated Router — IP-адрес BDR для сети в которую отправлен hello-пакет, | ||
| + | * Neighbor — идентификаторы всех маршрутизаторов от который маршрутизатор-отправитель получал hello-пакеты в течение последнего интервала RouterDeadInterval. | ||
| + | |||
| + | ==== Database Description ==== | ||
| + | DBD (Database Description) -- пакет, который описывает содержание LSDB маршрутизатора. Эти пакеты позволяют маршрутизаторам обменяться информацией о том, что они знают и чего недостает в их LSDB. | ||
| + | |||
| + | Кроме стандартного заголовка пакета OSPF, в DBD-пакете содержится такая информация: | ||
| + | |||
| + | < | ||
| + | |< | ||
| + | |||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | Router ID | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | Area ID | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | DD sequence number | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | | | ||
| + | +- -+ | ||
| + | | | | ||
| + | +- An LSA Header | ||
| + | | | | ||
| + | +- -+ | ||
| + | | | | ||
| + | +- -+ | ||
| + | | | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | ... | | ||
| + | </ | ||
| + | |||
| + | * Interface MTU — максимальный размер IP-пакета, | ||
| + | * Options — дополнительные опции, которые может поддерживать маршрутизатор. Это поле есть в пакетах hello, DBD, LSA. Согласно RFC 2328 могут быть установлены такие 5 битов: | ||
| + | * E-bit — указывает каким образом распространяются AS-external-LSA | ||
| + | * MC-bit — указывает соответствует ли IP multicast датаграмма спецификациям RFC 1584; | ||
| + | * N/P-bit — указывает как обрабатываются Type-7 LSA (RFC 1587); | ||
| + | * EA-bit — указывает желание маршрутизатора получать и отправлять External-Attributes-LSA; | ||
| + | * DC-bit — указывает как маршрутизатор работает с demand circuits (RFC 1793); | ||
| + | * I-bit — Init bit. Значение бита равное 1, означает, | ||
| + | * M-bit — More bit. Значение бита равное 1, означает, | ||
| + | * MS-bit — Master/ | ||
| + | * DD sequence number — номер последовательности, | ||
| + | * Начальный номер должен быть уникальным (Init bit оповещает о начальном пакете и номер в этом пакете и есть начальный) | ||
| + | * В процессе обмена DBD-пакетами DD sequence number растет, | ||
| + | * LSA header — в этом поле передаются заголовки тех LSA, которые находятся в LSDB: | ||
| + | * Заголовка LSA достаточно, | ||
| + | |||
| + | ==== Link State Request ==== | ||
| + | Запрос информации о состоянии канала. Этот тип пакетов запрашивает отдельные фрагменты базы данных состояния каналов маршрутизатора. | ||
| + | |||
| + | < | ||
| + | |< | ||
| + | |||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | Router ID | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | Area ID | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | LS type | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | Link State ID | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | ... | | ||
| + | </ | ||
| + | |||
| + | ==== Link State Update ==== | ||
| + | |||
| + | < | ||
| + | |< | ||
| + | |||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | Router ID | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | Area ID | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | # LSAs | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | | | ||
| + | +- +-+ | ||
| + | | | ||
| + | +- +-+ | ||
| + | | ... | | ||
| + | </ | ||
| + | |||
| + | ==== Link State Acknowledgment ==== | ||
| + | |||
| + | < | ||
| + | |< | ||
| + | |||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | Router ID | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | Area ID | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | | | ||
| + | +- -+ | ||
| + | | | | ||
| + | +- An LSA Header | ||
| + | | | | ||
| + | +- -+ | ||
| + | | | | ||
| + | +- -+ | ||
| + | | | | ||
| + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| + | | ... | | ||
| + | </ | ||
| + | |||
| + | ===== Выбор лучшего маршрута ===== | ||
| + | |||
| + | Маршрутизатор выбирает лучший маршрут на основании наименьшего значения метрики. Однако OSPF учитывает и несколько других факторов при выборе маршрута. | ||
| + | |||
| + | ==== Выбор лучшего типа маршрута ==== | ||
| + | Если маршрутизатору известны маршруты к одной и той же сети, но эти маршруты разных типов, то маршрутизатор выбирает наиболее приоритетный тип маршрута и не учитывает стоимость маршрута. | ||
| + | |||
| + | Различные типы маршрутов, | ||
| + | * Внутренние маршруты зоны (intra-area) | ||
| + | * Маршруты между зонами (interarea) | ||
| + | * Внешние маршруты типа 1 (E1) | ||
| + | * Внешние маршруты типа 2 (E2) | ||
| + | |||
| + | Хотя стоимость маршрута E2 не меняется при передаче его по зонам (не добавляется стоимость пути к ASBR), при совпадении стоимости маршрутов E2 сравнивается стоимость пути к ASBR, который анонсирует маршрут. | ||
| + | |||
| + | ==== Метрика OSPF ==== | ||
| + | OSPF использует метрику, | ||
| + | |||
| + | В RFC 2328 не описывается как именно должна рассчитываться стоимость (cost) интерфейса. Определен только диапазон значений: | ||
| + | |||
| + | Пример (Cisco): | ||
| + | <pre> | ||
| + | cost = reference bandwidth / link bandwidth | ||
| + | </ | ||
| + | Reference bandwidth — пропускная способность, | ||
| + | |||
| + | Суммарная стоимость маршрута считается суммированием стоимости исходящих интерфейсов по пути передачи LSA. | ||
| + | |||
| + | Для обозначения недоступной сети OSPF использует метрику 16777215 (2^24 — 1), которая считается недостижимой метрикой. | ||
| + | |||
| + | ==== ABR Loop Prevention ==== | ||
| + | Внутри зон OSPF использует логику link-state протокола, | ||
| + | |||
| + | При анонсировании в зону type 3 LSA передается информация о сети назначения, | ||
| + | |||
| + | OSPF не использует традиционные механизмы дистанционно-векторных протоколов для предотвращения петель. OSPF применяет ряд правил распространения LSA между зонами, | ||
| + | |||
| + | ==== Внешние маршруты ==== | ||
| + | OSPF использует два типа маршрутов для описания сетей вне автономной системы: | ||
| + | * Type 1 external routes (E1) | ||
| + | * Type 2 external routes (E2) | ||
| + | |||
| + | Type 1 external routes — к метрике внешнего маршрута добавляется стоимость пути к ASBR, который анонсирует этот маршрут. Используется, | ||
| + | |||
| + | Маршрутизатор (не ABR), который находится в разных зонах с ASBR, будет вычислять метрику внешнего маршрута E1 суммированием: | ||
| + | * метрики внешнего маршрута из type 5 LSA, | ||
| + | * стоимости пути к ASBR, которая анонсируется в type 4 LSA, | ||
| + | * стоимости пути к ABR, который анонсировал type 4 LSA. | ||
| + | |||
| + | Type 2 external routes (по умолчанию) — используется только стоимость внешнего маршрута и при передаче по сети стоимость не увеличивается. При получении type 5 LSA маршрутизаторы добавляют в таблицу маршрут во внешнюю сеть со стоимостью, | ||
| + | |||
| + | < | ||
| + | |||
| + | === Forwarding address в Type 5 LSA === | ||
| + | В RFC 2328 (раздел 16.4) указано: | ||
| + | |||
| + | Иными словами, | ||
| + | |||
| + | ==== Вычисление таблицы маршрутизации ==== | ||
| + | Маршрутизатор, | ||
| + | |||
| + | Процесс: | ||
| + | 1. Текущая таблица маршрутизации обнуляется — строится заново. Старая таблица сохраняется для обнаружения изменений. | ||
| + | 2. С помощью построения дерева кратчайшего пути для каждой присоединённой зоны вычисляются внутризональные маршруты. Во время вычисления дерева для зоны также вычисляется TransitCapability, | ||
| + | * Сначала дерево строится с учётом только линков между маршрутизаторами и транзитными сетями. | ||
| + | * Затем тупиковые сети включаются в дерево. | ||
| + | 3. Межзональные маршруты вычисляются просмотром summary LSA. Если маршрутизатор пограничный, | ||
| + | 4. На пограничных маршрутизаторах, | ||
| + | 5. Вычисляются маршруты к внешним сетям — просматриваются AS-external-LSA. Местонахождение ASBR было обнаружено на этапах 2–4. | ||
| + | |||
| + | === Вычисление дерева кратчайшего пути для зоны === | ||
| + | |||
| + | {{fixme}} | ||
| + | |||
| + | (раздел для подробного описания алгоритма SPF — оставить заглушку для последующего наполнения) | ||
| + | |||
| + | === Вычисление next hop === | ||
| + | |||
| + | {{fixme}} | ||
| + | |||
| + | (раздел для описания логики определения следующего хопа — оставить заглушку для последующего наполнения) | ||
| + | |||
| + | === Вычисление внешних маршрутов ===== | ||
| + | |||
| + | {{fixme}} | ||
| + | |||
| + | (раздел для подробного описания вычисления E1/E2 и взаимодействия с type4/type5 — оставить заглушку) | ||
| + | |||
| + | === Equal-cost multipath === | ||
| + | |||
| + | {{fixme}} | ||
| + | |||
| + | (раздел для описания ECMP в OSPF — оставить заглушку) | ||