мета-данные страницы
  •  

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
glossary:net:protocols:ospf [2025/09/15 13:51] radi0devglossary:net:protocols:ospf [2025/11/09 12:07] (текущий) – внешнее изменение A User Not Logged in
Строка 1: Строка 1:
 ====== OSPF ====== ====== OSPF ======
 +
 +основано на http://xgu.ru/wiki/OSPF
  
 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 
  
 ===== Основы ===== ===== Основы =====
Строка 413: Строка 413:
     * LSA 7 нужно было для того чтобы обойти ограничения, которые были заложены в определение Stub зоны     * LSA 7 нужно было для того чтобы обойти ограничения, которые были заложены в определение Stub зоны
   * На границе зоны пограничный маршрутизатор преобразует type 7 LSA в type 5 LSA.   * На границе зоны пограничный маршрутизатор преобразует 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 одинаковый заголовок.
 +
 +<code> 
 +|<-------------------------- 32 бита --------------------------->|
 +
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|   Version #       Type      |         Packet length         |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                          Router ID                            |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                           Area ID                             |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|           Checksum            |             AuType            |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                       Authentication                          |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                       Authentication                          |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +</code>
 +
 +Поля заголовка пакета 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) — используется при аутентификации маршрутизаторов.
 +
 +Поле "Данные" отличается для различных типов пакетов OSPF:
 +  * Hello — список известных соседей
 +  * DBD — содержит суммарную информацию базы данных состояний каналов, которая включает в себя все известные идентификаторы маршрутизаторов и их последние номера последовательностей (sequence number) и другую информацию.
 +  * LSR — содержит тип необходимого LSU и идентификатор маршрутизатора, у которого есть этот LSU.
 +  * LSU — содержит полные записи объявления о состоянии канала. Несколько LSA могут передаваться в одном пакете обновлений.
 +  * LSAck — поле пустое
 +
 +==== Hello ==== 
 +Hello-пакет используется для таких целей:
 +  * С помощью него каждый маршрутизатор обнаруживает своих соседей;
 +  * Он передает параметры о которых маршрутизаторы должны договориться прежде чем они станут соседями;
 +  * Hello-пакеты выполняют роль keepalive-пакетов между соседями;
 +  * Отвечает за установление двухсторонних коммуникаций между соседними маршрутизаторами (двухсторонняя коммуникация установлена тогда, когда маршрутизатор увидит себя в списке соседей hello-пакета полученного от соседнего маршрутизатора);
 +  * Он выбирает DR и BDR в широковещательных и нешироковещательных сетях со множественным доступом.
 +
 +Кроме стандартного заголовка пакета OSPF, в hello-пакете содержится такая информация:
 +
 +<code>
 +|<-------------------------- 32 бита --------------------------->|
 +
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|   Version #                       Packet length         |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                          Router ID                            |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                           Area ID                             |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|           Checksum            |             AuType            |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                       Authentication                          |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                       Authentication                          |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                        Network Mask                           |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|         HelloInterval            Options    |    Rtr Pri    |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                     RouterDeadInterval                        |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                      Designated Router                        |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                   Backup Designated Router                    |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                          Neighbor                             |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                              ...                              |
 +</code>
 +
 +  * 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-пакет, с точки зрения отправляющего маршрутизатора. Поле установлено в значение 0.0.0.0, если в сети нет DR;
 +  * Backup Designated Router — IP-адрес BDR для сети в которую отправлен hello-пакет, с точки зрения отправляющего маршрутизатора. Поле установлено в значение 0.0.0.0, если в сети нет BDR;
 +  * Neighbor — идентификаторы всех маршрутизаторов от который маршрутизатор-отправитель получал hello-пакеты в течение последнего интервала RouterDeadInterval.
 +
 +==== Database Description ==== 
 +DBD (Database Description) -- пакет, который описывает содержание LSDB маршрутизатора. Эти пакеты позволяют маршрутизаторам обменяться информацией о том, что они знают и чего недостает в их LSDB.
 +
 +Кроме стандартного заголовка пакета OSPF, в DBD-пакете содержится такая информация:
 +
 +<code> 
 +|<-------------------------- 32 бита --------------------------->|
 +
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|   Version #                       Packet length         |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                          Router ID                            |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                           Area ID                             |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|           Checksum            |             AuType            |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                       Authentication                          |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                       Authentication                          |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|         Interface MTU            Options    |0|0|0|0|0|I|M|MS
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                     DD sequence number                        |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                                                               |
 ++-                                                             -+
 +|                                                               |
 ++-                      An LSA Header                          -+
 +|                                                               |
 ++-                                                             -+
 +|                                                               |
 ++-                                                             -+
 +|                                                               |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                              ...                              |
 +</code>
 +
 +  * 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, означает, что этот пакет первый в последовательности DBD-пакетов
 +  * M-bit — More bit. Значение бита равное 1, означает, что далее последуют дополнительные DBD-пакеты
 +  * MS-bit — Master/Slave bit. Значение бита равное 1, означает, что маршрутизатор получил роль Master, в процессе обмена информацией в LSDB. Иначе, маршрутизатор Slave.
 +  * DD sequence number — номер последовательности, который используется для нумерации наборов DBD-пакетов.
 +    * Начальный номер должен быть уникальным (Init bit оповещает о начальном пакете и номер в этом пакете и есть начальный)
 +    * В процессе обмена DBD-пакетами DD sequence number растет, пока не завершится описание LSDB
 +  * LSA header — в этом поле передаются заголовки тех LSA, которые находятся в LSDB:
 +    * Заголовка LSA достаточно, так как информации, которая передается в заголовке, достаточно чтобы уникально идентифицировать LSA
 +
 +==== Link State Request ==== 
 +Запрос информации о состоянии канала. Этот тип пакетов запрашивает отдельные фрагменты базы данных состояния каналов маршрутизатора.
 +
 +<code> 
 +|<-------------------------- 32 бита --------------------------->|
 +
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|   Version #                       Packet length         |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                          Router ID                            |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                           Area ID                             |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|           Checksum            |             AuType            |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                       Authentication                          |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                       Authentication                          |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                          LS type                              |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                       Link State ID                           |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                     Advertising Router                        |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                              ...                              |
 +</code>
 +
 +==== Link State Update ==== 
 +
 +<code> 
 +|<-------------------------- 32 бита --------------------------->|
 +
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|   Version #                       Packet length         |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                          Router ID                            |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                           Area ID                             |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|           Checksum            |             AuType            |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                       Authentication                          |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                       Authentication                          |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                            # LSAs                             |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                                                               |
 ++-                                                            +-+
 +|                             LSAs                              |
 ++-                                                            +-+
 +|                              ...                              |
 +</code>
 +
 +==== Link State Acknowledgment ==== 
 +
 +<code>
 +|<-------------------------- 32 бита --------------------------->|
 +
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|   Version #                       Packet length         |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                          Router ID                            |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                           Area ID                             |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|           Checksum            |             AuType            |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                       Authentication                          |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                       Authentication                          |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                                                               |
 ++-                                                             -+
 +|                                                               |
 ++-                         An LSA Header                       -+
 +|                                                               |
 ++-                                                             -+
 +|                                                               |
 ++-                                                             -+
 +|                                                               |
 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +|                              ...                              |
 +</code>
 +
 +===== Выбор лучшего маршрута =====
 +
 +Маршрутизатор выбирает лучший маршрут на основании наименьшего значения метрики. Однако OSPF учитывает и несколько других факторов при выборе маршрута.
 +
 +==== Выбор лучшего типа маршрута ====
 +Если маршрутизатору известны маршруты к одной и той же сети, но эти маршруты разных типов, то маршрутизатор выбирает наиболее приоритетный тип маршрута и не учитывает стоимость маршрута.
 +
 +Различные типы маршрутов, в порядке убывания приоритета:
 +  * Внутренние маршруты зоны (intra-area)
 +  * Маршруты между зонами (interarea)
 +  * Внешние маршруты типа 1 (E1)
 +  * Внешние маршруты типа 2 (E2)
 +
 +Хотя стоимость маршрута E2 не меняется при передаче его по зонам (не добавляется стоимость пути к ASBR), при совпадении стоимости маршрутов E2 сравнивается стоимость пути к ASBR, который анонсирует маршрут.
 +
 +==== Метрика OSPF ====
 +OSPF использует метрику, которая называется стоимость (cost). Стоимость сравнивается у маршрутов одного типа.
 +
 +В RFC 2328 не описывается как именно должна рассчитываться стоимость (cost) интерфейса. Определен только диапазон значений: 1-65535. В мультивендорной среде на это стоит обратить внимание.
 +
 +Пример (Cisco):
 +<pre>
 +cost = reference bandwidth / link bandwidth
 +</pre>
 +Reference bandwidth — пропускная способность, относительно которой вычисляется стоимость; по умолчанию 100Mb, но может быть изменена.
 +
 +Суммарная стоимость маршрута считается суммированием стоимости исходящих интерфейсов по пути передачи LSA.
 +
 +Для обозначения недоступной сети OSPF использует метрику 16777215 (2^24 — 1), которая считается недостижимой метрикой.
 +
 +==== ABR Loop Prevention ====
 +Внутри зон OSPF использует логику link-state протокола, но между зонами он в некотором смысле работает как дистанционно-векторный протокол.
 +
 +При анонсировании в зону type 3 LSA передается информация о сети назначения, стоимости пути и ABR, через которого сеть достижима — параметры аналогичны дистанционно-векторным протоколам.
 +
 +OSPF не использует традиционные механизмы дистанционно-векторных протоколов для предотвращения петель. OSPF применяет ряд правил распространения LSA между зонами, что исключает возможность возникновения петель, но это может привести к тому, что передача данных будет не по лучшему пути.
 +
 +==== Внешние маршруты ====
 +OSPF использует два типа маршрутов для описания сетей вне автономной системы:
 +  * Type 1 external routes (E1)
 +  * Type 2 external routes (E2)
 +
 +Type 1 external routes — к метрике внешнего маршрута добавляется стоимость пути к ASBR, который анонсирует этот маршрут. Используется, когда несколько маршрутизаторов анонсируют внешнюю сеть. Когда ABR передает type 5 LSA в другую зону, он создает type 4 LSA, которое указывает стоимость пути от этого ABR до ASBR, который создал type 5 LSA.
 +
 +Маршрутизатор (не ABR), который находится в разных зонах с ASBR, будет вычислять метрику внешнего маршрута E1 суммированием:
 +  * метрики внешнего маршрута из type 5 LSA,
 +  * стоимости пути к ASBR, которая анонсируется в type 4 LSA,
 +  * стоимости пути к ABR, который анонсировал type 4 LSA.
 +
 +Type 2 external routes (по умолчанию) — используется только стоимость внешнего маршрута и при передаче по сети стоимость не увеличивается. При получении type 5 LSA маршрутизаторы добавляют в таблицу маршрут во внешнюю сеть со стоимостью, указанной в type 5 LSA.
 +
 +<note>Хотя стоимость маршрута E2 не меняется при передаче его по зонам, при совпадении стоимости маршрутов E2 сравнивается стоимость пути к ASBR, который анонсирует маршрут.</note>
 +
 +=== Forwarding address в Type 5 LSA ===
 +В RFC 2328 (раздел 16.4) указано: если forwarding address не нулевой, нужно посмотреть этот forwarding address в таблице маршрутизации. Соответствующая запись должна быть внутризональной или межзональной; если такого пути нет — LSA игнорируется.
 +
 +Иными словами, нельзя использовать внешний маршрут для достижения другого внешнего маршрута — это может привести к петлям, поэтому запрещено.
 +
 +==== Вычисление таблицы маршрутизации ====
 +Маршрутизатор, используя LSDB зон, к которым он подключен, строит таблицу маршрутизации по следующей последовательности. LSA с LS age = MaxAge не учитываются.
 +
 +Процесс:
 +  1. Текущая таблица маршрутизации обнуляется — строится заново. Старая таблица сохраняется для обнаружения изменений.
 +  2. С помощью построения дерева кратчайшего пути для каждой присоединённой зоны вычисляются внутризональные маршруты. Во время вычисления дерева для зоны также вычисляется TransitCapability, используемая позднее. Все записи с Destination Type = area border router вычисляются на этом этапе. Этап состоит из двух частей:
 +     * Сначала дерево строится с учётом только линков между маршрутизаторами и транзитными сетями.
 +     * Затем тупиковые сети включаются в дерево.
 +  3. Межзональные маршруты вычисляются просмотром summary LSA. Если маршрутизатор пограничный, просматриваются summary LSA только магистральной зоны.
 +  4. На пограничных маршрутизаторах, присоединённых к одной или более транзитным зонам (не backbone зоны, где TransitCapability = TRUE), проверяются summary LSA транзитных зон на предмет лучших путей, чем найденные на этапах 2–3.
 +  5. Вычисляются маршруты к внешним сетям — просматриваются AS-external-LSA. Местонахождение ASBR было обнаружено на этапах 2–4.
 +
 +=== Вычисление дерева кратчайшего пути для зоны === 
 +
 +{{fixme}}
 +
 +(раздел для подробного описания алгоритма SPF — оставить заглушку для последующего наполнения)
 +
 +=== Вычисление next hop === 
 +
 +{{fixme}}
 +
 +(раздел для описания логики определения следующего хопа — оставить заглушку для последующего наполнения)
 +
 +=== Вычисление внешних маршрутов =====
 +
 +{{fixme}}
 +
 +(раздел для подробного описания вычисления E1/E2 и взаимодействия с type4/type5 — оставить заглушку)
 +
 +=== Equal-cost multipath === 
 +
 +{{fixme}}
 +
 +(раздел для описания ECMP в OSPF — оставить заглушку)