Тема протокола динамической маршрутизации OSPF уже не раз поднималась на хабре. Однако вопрос о том что такое LSA и какие они бывают, как мне кажется, недостаточно прозрачен. И я хотел бы рассказать об этом без привязки к конкретному производителю и консольным командам.
Коротко напомню, что при использовании протокола OSPF маршрутизаторы обмениваются информацией о топологии сети. Потом, на основании этой информации с помощью алгоритма Дейкстры расчитывают таблицу маршрутизации. Так вот LSA1 и есть кусочки той информации из которой маршрутизатор складывает схему сети. Традиционно, при их описании можно увидеть таблицы формата сообщения, я же предлагаю рассмотреть LSA как кусочеки пазла, из которых маршрутизатор и собирает полный граф сети2.
Итак:
каждый маршрутизатор сообщает свой уникальный “router-id”, и подробный список интерфейсов.
для каждого интерфейса указывается:
IP адрес (если есть3)
тип интерфейса
“router-id” с которым установлено состояние смежности на это интерфейсе.
Если смежность(adjacencies) на интерфейсе не установлена, то в поле для “router-id” записывается маска сети для IP адреса и эту сторону кусочка можно считать “плоской” (дольше роутеров нет).
Если тип линка — точка-точка или виртуальное соединение, то теперь нужно найти другой кусочек, с известным “router-id” посредине и совместить соответствующие соединения.
Если тип интерфейса — Broadcast или NBMA (сеть множественного доступа), то на другом конце может быть много разных маршрутизаторов и тут нам становится необходимы
В сетях с множественным доступом (а обычный ethernet как раз к таким и относится, маршрутизаторы выбирают из своего числа “управляющего” (DR), с которым и устанавливают отношения смежности4. Так вот, каждый такой “управляющий” рассылает сообщения которые можно нарисовать так:
в середине IP адрес DR в этой сети с маской, и полный список подключённых маршрутизаторов. Заполняем пробелы:
Вот и всё, теперь повторяя шаги из рисунков 2 и 4, маршрутизатор собирает из кусочков полную топологию сети и может запустить SPF алгоритм. После завершения расчётов ему известны оптимальные пути ко всем маршрутизаторам и сетям.
Пазл с топологией Area мы уже сложили. Но т.к. IP сеть не всегда ограничивается только одной Area и протоколом OSPF, то LSA ещё не закончились.
эту составляющую нарисуем как зелёный квадратик прицепленый к маршрутизатору, с информацией о сети из другой Area и стоимости соединения. Маршрутизатор к которому мы их подсоединяем — называется ABR. Интерфейсы к которым цепляем “рамочку” не указываются, т.к. они принадлежат другой области.
аналогично предыдущей можно представить как оранжевый квадратик прицепленый к маршрутизатору, с информацией о том в какие сети он может посылать пакеты независимо от протокола OSPF. Маршрутизатор который рассылает такие LSA — называется ASBR.
что делать если маршрутизатор к которому надо прицепить сети из предыдущего пункта находится в другой Area? Специально для этого, устройства находящиеся на границе 2х Area передают не только “LSA type 3” но и “LSA type 4” в которых анонасируют, обо всех известных маршрутах к ASBR из других Area, и их стоимость. Нарисуем такой ASBR зелёным цветом. Особо интересный случай рассмотреный в этой статье, можно изобразить как оранжевый квадратик прицепленый к зелёному.
Получается, что на последнем рисунке:
синие маршрутизаторы с интерфейсами это LSA type 1
облачко с префиксом — LSA type 2
зелёные квадратики — LSA type 3
оранжевые квадратики это LSA type 5
зелёный роутер — LSA type 4
зелёные и оранжевые соеденительные линии несут информацию о стоимости соответвующего соединения.
маршрутизаторы y.y.y.y и z.z.z.z — ABR (в них входят зелёные линии)
маршрутизаторы k.k.k.k и w.w.w.w — ASBR (в них входят оранжевые линии)
LSA type 6 — на самом деле нигде и никем не используется, и основными вендорами не реализована. Поэтому пропускаем.
LSA type 7 — фактически полный аналог LSA type 5 для NSSA типов Area. При пересечении границы Area, в них и превращаются.
Остальные LSA с ИП маршрутами вобщем-то не связаны, поэтому их рассматривать не буду.
SFP процес который производит расчёт стоимости маршрутов алгоритмом Дейкстры — запускается только при изменениях в LSA 1 или 2 (обязательно при любых их изменениях).
Стоимость к маршрутам анонсируемым в других LSA получается простым сложением стоимости до ABR/ASBR и метрик зелёных и/или оранжевых “линков”.
Маршрутизатор может быть ABR и ASBR одновременно.
Достаточно часто бывает ситуация, когда из всех имеющихся кусочков — целостной картины не сложить. Это связано с тем что в Link State протоколах нет способа моментально отбросить “исчезнувший” ЛСА.
Рассмотрим последний рисунок.
Например, на роутере y.y.y.y упал интерфейс в сторону b.b.b.d (серого облака). Тогда y.y.y.y генерирует новый LSA типа1 (с тем же самым ID, но бо’льшим порядковым номером), где отключившегося интерфейса уже нет. z.z.z.z устанавливает в LSDB новый LSA, пересчитывает таблицу маршрутизации… Но всё ещё хранит в памяти все LSA полученые от g.g.g.g, m.m.m.m и k.k.k.k, связь с которыми уже потеряна. т.е. остались лишние кусочки. Аналогично, если вдруг у маршрутизатора поменяется “router-id”, то все остальные некоторое время хранят 2 копии LSA: со старым и с новым ID.
У каждого маршрутизатора имеется “router-id” и он обязательно должен быть уникальный. Что произойдёт если будут дубликаты — зависит от вендора и настроек, но одно можно утверждать уверенно — будут проблемы. Как самый простой пример: 2 маршрутизатора транслируют взаимоисключающие LSA; остальные будут устанавливать LSA с большим порядковым номером, а сети подключённые к другому устройству будут потеряны и недоступны. Это можно сравнить с потерей кусочка пазла.
Аналогично, не должно быть DR c одинаковыми IP адресами.
Смею надеяться, что сообщество найдёт такой стиль изложения интересным.
Коротко напомню, что при использовании протокола OSPF маршрутизаторы обмениваются информацией о топологии сети. Потом, на основании этой информации с помощью алгоритма Дейкстры расчитывают таблицу маршрутизации. Так вот LSA1 и есть кусочки той информации из которой маршрутизатор складывает схему сети. Традиционно, при их описании можно увидеть таблицы формата сообщения, я же предлагаю рассмотреть LSA как кусочеки пазла, из которых маршрутизатор и собирает полный граф сети2.
Итак:
LSA type 1 — “кусочки с маршрутизаторами”
каждый маршрутизатор сообщает свой уникальный “router-id”, и подробный список интерфейсов.
для каждого интерфейса указывается:
IP адрес (если есть3)
тип интерфейса
“router-id” с которым установлено состояние смежности на это интерфейсе.
Если смежность(adjacencies) на интерфейсе не установлена, то в поле для “router-id” записывается маска сети для IP адреса и эту сторону кусочка можно считать “плоской” (дольше роутеров нет).
Если тип линка — точка-точка или виртуальное соединение, то теперь нужно найти другой кусочек, с известным “router-id” посредине и совместить соответствующие соединения.
Если тип интерфейса — Broadcast или NBMA (сеть множественного доступа), то на другом конце может быть много разных маршрутизаторов и тут нам становится необходимы
LSA type 2 — “кусочки с сетями”
В сетях с множественным доступом (а обычный ethernet как раз к таким и относится, маршрутизаторы выбирают из своего числа “управляющего” (DR), с которым и устанавливают отношения смежности4. Так вот, каждый такой “управляющий” рассылает сообщения которые можно нарисовать так:
в середине IP адрес DR в этой сети с маской, и полный список подключённых маршрутизаторов. Заполняем пробелы:
Вот и всё, теперь повторяя шаги из рисунков 2 и 4, маршрутизатор собирает из кусочков полную топологию сети и может запустить SPF алгоритм. После завершения расчётов ему известны оптимальные пути ко всем маршрутизаторам и сетям.
Пазл с топологией Area мы уже сложили. Но т.к. IP сеть не всегда ограничивается только одной Area и протоколом OSPF, то LSA ещё не закончились.
LSA type 3 — “маршруты в другую область"5
эту составляющую нарисуем как зелёный квадратик прицепленый к маршрутизатору, с информацией о сети из другой Area и стоимости соединения. Маршрутизатор к которому мы их подсоединяем — называется ABR. Интерфейсы к которым цепляем “рамочку” не указываются, т.к. они принадлежат другой области.
LSA type 5 — “маршруты других доменов маршрутизации”
аналогично предыдущей можно представить как оранжевый квадратик прицепленый к маршрутизатору, с информацией о том в какие сети он может посылать пакеты независимо от протокола OSPF. Маршрутизатор который рассылает такие LSA — называется ASBR.
LSA type 4 — длинный хвост.
что делать если маршрутизатор к которому надо прицепить сети из предыдущего пункта находится в другой Area? Специально для этого, устройства находящиеся на границе 2х Area передают не только “LSA type 3” но и “LSA type 4” в которых анонасируют, обо всех известных маршрутах к ASBR из других Area, и их стоимость. Нарисуем такой ASBR зелёным цветом. Особо интересный случай рассмотреный в этой статье, можно изобразить как оранжевый квадратик прицепленый к зелёному.
Получается, что на последнем рисунке:
синие маршрутизаторы с интерфейсами это LSA type 1
облачко с префиксом — LSA type 2
зелёные квадратики — LSA type 3
оранжевые квадратики это LSA type 5
зелёный роутер — LSA type 4
зелёные и оранжевые соеденительные линии несут информацию о стоимости соответвующего соединения.
маршрутизаторы y.y.y.y и z.z.z.z — ABR (в них входят зелёные линии)
маршрутизаторы k.k.k.k и w.w.w.w — ASBR (в них входят оранжевые линии)
LSA type 6 — на самом деле нигде и никем не используется, и основными вендорами не реализована. Поэтому пропускаем.
LSA type 7 — фактически полный аналог LSA type 5 для NSSA типов Area. При пересечении границы Area, в них и превращаются.
Остальные LSA с ИП маршрутами вобщем-то не связаны, поэтому их рассматривать не буду.
Маленький итог:
SFP процес который производит расчёт стоимости маршрутов алгоритмом Дейкстры — запускается только при изменениях в LSA 1 или 2 (обязательно при любых их изменениях).
Стоимость к маршрутам анонсируемым в других LSA получается простым сложением стоимости до ABR/ASBR и метрик зелёных и/или оранжевых “линков”.
Маршрутизатор может быть ABR и ASBR одновременно.
Когда “пазл” не складывается?
Достаточно часто бывает ситуация, когда из всех имеющихся кусочков — целостной картины не сложить. Это связано с тем что в Link State протоколах нет способа моментально отбросить “исчезнувший” ЛСА.
Рассмотрим последний рисунок.
Например, на роутере y.y.y.y упал интерфейс в сторону b.b.b.d (серого облака). Тогда y.y.y.y генерирует новый LSA типа1 (с тем же самым ID, но бо’льшим порядковым номером), где отключившегося интерфейса уже нет. z.z.z.z устанавливает в LSDB новый LSA, пересчитывает таблицу маршрутизации… Но всё ещё хранит в памяти все LSA полученые от g.g.g.g, m.m.m.m и k.k.k.k, связь с которыми уже потеряна. т.е. остались лишние кусочки. Аналогично, если вдруг у маршрутизатора поменяется “router-id”, то все остальные некоторое время хранят 2 копии LSA: со старым и с новым ID.
У каждого маршрутизатора имеется “router-id” и он обязательно должен быть уникальный. Что произойдёт если будут дубликаты — зависит от вендора и настроек, но одно можно утверждать уверенно — будут проблемы. Как самый простой пример: 2 маршрутизатора транслируют взаимоисключающие LSA; остальные будут устанавливать LSA с большим порядковым номером, а сети подключённые к другому устройству будут потеряны и недоступны. Это можно сравнить с потерей кусочка пазла.
Аналогично, не должно быть DR c одинаковыми IP адресами.
Смею надеяться, что сообщество найдёт такой стиль изложения интересным.
- ↑ — Link State Advertisement. LSA это элементы списка смежности для графа сети, сам этот список называется LSDB (Link State Database)
- ↑ — на самом деле, только тех Area к которым принадлежит
- ↑ — если интерфейс “Unnambered” или “Virtual Link” то передаётся просто его номер.
- ↑ — получается как будто все маршрутизаторы сегмента напрямую подключены к DR, а стоимость линков у DR нулевая.
- ↑ -Область=Area — это кусочек нашего OSPF домена маршрутизации, в каждом таком кусочке топология расчитывается независимо.