Хорошо

IS-IS: установка отношений соседства

Последний ответ фев 01, 2021 13:58:34 530 6 10 0 4

Здравствуйте уважаемые товарищи! Данный пост является попыткой систематизировать отрывочные сведения о первых секундах работы протокола IS-IS и ни в коем случае не претендует на истину в последней инстанции. Также предполагается, что читателю известны основные термины протокола, а также базовые понятия сетей передачи данных. Если в момент прочтения обнаружатся неточности – дополняйте и поправляйте в комментариях.


Итак, начнем!


Сначала обсудим отдельные элементы.


Как известно, в IS-IS есть 2 типа L2-соединений: LAN и P2P. Исторически сложилось так, что LAN использовался по умолчанию для broadcast-сетей (Ethernet), а P2P – для протоколов сетей традиционных телекоммуникаций (например, PPP или Frame Relay). Но на сегодняшний день протокол Ethernet является стандартом де-факто и при установке отношений соседства между устройствами можно указать необходимый тип сети. Важно также знать, что на обоих маршрутизаторах типы сетей должны совпадать, иначе соседства не будет.


Протокол IS-IS не использует IP в качестве транспорта, вместо этого он устанавливает отношения соседства поверх канального уровня. Для того, чтобы сосед распознал, какому протоколу адресуется сообщение, используется подзаголовок SNAP в Ethernet-заголовке. В SNAP есть поле PID длиной 2 байта, в котором указан идентификатор протокола IS-IS. В качестве адреса получателя используется multicast mac-адрес. Для LAN L1/L2 используются mac-адреса 01:80:C2:00:00:14 и 01:80:C2:00:00:15, а для P2P – 09:00:2B:00:00:05.


При установке отношений соседства используются сообщения hello (сокращенно IIH – IS-IS Hello). Есть IIH L1, IIH L2 и IIH P2P. На LAN-сети могут устанавливаться отношения соседства по двум уровням одновременно, механизмы работают независимо друг от друга. В P2P-сети L1 и L2 устанавливают соседство через один и тот же IIH P2P.


В IIH маршрутизатор сообщает о себе всю необходимую информацию, которая проверяется соседом на соответствие его собственным таймерам и настройкам. В далеко не полный перечень входят: AreaID, поддерживаемый протокол адресации, тип сети, префикс сети, поддержка дополнительных capabilities и т.д. Если параметры не совпадают, то отношения соседства не будут установлены.


Для идентификации отдельных устройств IS-IS использует NET (Network Entity Title), который является наследником CLNS (протокол адресации подобный IP, использовался в стеке протоколов OSI, который планировалось внедрить вместо TCP/IP, но что-то пошло не так). Типичный NET-адрес представляется в виде 49.0001.0000.0000.0001.00, где AreaID – 49.001, а интересующий нас SystemID – 0000.0000.0001. Как правило, он назначается администратором вручную, но есть возможность его назначить и автоматически (в последнем случае в поле SystemID подставляется mac-адрес маршрутизатора).


DIS (Designated Intermediate System) – выделенный маршрутизатор сегмента. Выбирается в LAN-сегменте и отправляет в другие части своей area информацию о своих сетях, а также сетях соседа, представляясь всем остальным устройствам так, что как-будто сети его соседа подключены к нему напрямую. DIS выбирается на основе настроенного приоритета. Если приоритет одинаковый, то побеждает маршрутизатор с самым старшим mac-адресом интерфейса, подключенного к текущему LAN-сегменту. Самый близкий аналог – это DR в OSPF и LSA type 2. Но они похожи только на первый взгляд, на самом деле DIS и DR очень сильно отличаются друг от друга.


С отдельными кусочками мы разобрались. Теперь попробуем из них собрать мозаику.


Установка отношений соседства на P2P-сети


Изначально считалось, что P2P-линки являются более надежными, поэтому при установке отношений соседства использовался механизм 2Way-Handshake.


Рис. 1 - 2Way-Handshake

На рисунке изображен механизм обмена IIH-сообщениями. R1 отправляет свой IIH и как только R2 его принимает, он переводит свое состояние в Init. Далее он сверяет все параметры из полученного IIH со своими и если они все совпадают, то переводит состояние в Up, отправляя затем свой IIH. На самом деле обмен происходит в обе стороны, но чтобы не усложнять схему, здесь приводится установка соседства только со стороны R2.


Пока все просто, не так ли?


С течением времени выяснилось, что все-таки P2P-линки не такие надежные, как хотелось бы, поэтому для них был разработан механизм 3Way-Handshake.


Рис. 2 - 3Way-Handshake


R1, отправляя IIH, сообщает R2 свое состояние как Down. R2 проверяет все параметры IIH R1 и убедившись, что они совпадают с его собственными, переводит свое состояние в Init и сообщает R1 в своем IIH о своем состоянии. R1 приняв IIH от R2 тоже проводит сверку параметров и при их совпадении переводит свое состояние в Up. Далее R1 уведомляет в ответном IIH, что его состояние Up, а R2, приняв этот IIH, тоже переходит в состояние Up.


Между прочим, если у двух маршрутизаторов все параметры совпадают, но отношения соседства не устанавливаются, то имеет смысл проверить, а включены ли у них одинаковые механизмы? Если у одного устройства стоит 2Way, а у второго 3Way, то adjacency они не достигнут. Такая ситуация, как правило, возникает при соединении маршрутизаторов разных вендоров, где по умолчанию включены разные механизмы рукопожатий.


Установка отношений соседства на LAN-сети


Для их установки используется все тот же механизм 3Way-Handshake, описанный выше. Поэтому с двумя устройствами, соединенными прямым линком все будет также. И это неинтересно. Добавим щепотку специй в наше блюдо и рассмотрим установку отношений соседства между тремя маршрутизаторами, соединенными через коммутатор (т.е. через единый броадкастовый домен). Особенность заключается в том, что после обмена IIH и отработкой 3Way-Handshake, выбирается DIS для этого сегмента.


Рис. 3. Выбор DIS

Дело в том, что после установки отношений соседства, маршрутизаторы смотрят на приоритеты соседей в IIH, а т.к. на LAN-сети DIS выбирается всегда, то после установки adjacency определяется, кто будет DIS. На рисунке выше схема упрощена в том месте, что не отображается отработка механизма 3Way-Handshake. Да мы и так уже это знаем. Все маршрутизаторы устанавливают adjacency по принципу “каждый с каждым”, т.е. у нас имеется full-mesh топология. Сначала каждый маршрутизатор считает, что он главный и отправляет свой IIH, сообщая всем соседям, что он DIS. Постепенно все соседи узнают, у кого самый высокий приоритет, перестают в своих IIH указывать себя в роли DIS и сообщают, что DIS теперь R3.


Хммм… Что-то мне это сильно напоминает… Ах да! Подобным же образом выбирается Root Bridge в STP.


Ну вот собственно и все, что необходимо знать в базовом варианте об установке отношений соседства. За кадром осталось то, как работает DIS, как происходят его перевыборы, синхронизация LSDB и многое многое другое. Но это, как говорится, совсем другая история…


До встречи на полях виртуальных сражений, дорогие коллеги!


Пост синхронизирован: Huawei ICT Club - лучшее

  • x

vlanbridgeadd
Опубликовано 2021-1-5 14:27:42
Микротест
Развернуть
  • x

user_4097867
Опубликовано 2021-1-11 15:56:12
Отличная статья, просто по полочкам всё разложил, пробелов больше не осталось! Спасибо!
Развернуть
  • x

GD_HNET
Опубликовано 2021-1-11 19:19:50
Отличная статься, надеюсь что будет продолжение.
Развернуть
  • x

vlanbridgeadd
Опубликовано 2021-1-12 11:37:45
Спасибо! В планах есть целый цикл статей по этому замечательному протоколу. Я думаю буду выкладывать их здесь и на Хабре. К сожалению это будет не быстро, т.к. сам протокол нужно хорошенько изучить в деталях.
Развернуть
  • x

user_3973849
Опубликовано 2021-1-29 12:39:19
Ждём новых статей от автора)
Развернуть
  • x

user_3949589
Опубликовано 2021-2-1 13:58:34
Спасибо большое, очень подробно и полезно!
Развернуть
  • x

Комментарий

Выполните вход в систему, чтобы ответить на пост. Вход | Регистрация
Отправить

Внимание! В целях защиты правовых интересов Вас, сообщества и третьих лиц, не публикуйте любой материал, содержащий политические высказывания, порнографию, упоминание азартных игр, употребление наркотиков, а также материал, нарушающий коммерческую тайну или содержащий персональные данные пользователей. Также не предоставляйте данные от вашей учетной записи. Вы будете нести ответственность за все действия, выполняемые под вашим аккаунтом. Подробная информация: “Политика конфиденциальности..”

My Followers

Авторизуйтесь и пользуйтесь всеми преимуществами участника!

Вход

Заблокировать
Вы уверены, что хотите заблокировать этого пользователя?
Пользователи из вашего черного списка не могут комментировать ваши посты, не могут упоминать вас, не могут отправлять личные сообщения.
Напоминание
Пожалуйста, привяжите свой мобильный номер чтобы получить бонус за приглашение.