> For the complete documentation index, see [llms.txt](https://netlabs.gitbook.io/juniper/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://netlabs.gitbook.io/juniper/9-is-is.md).

# 9) IS-IS

## Краткое введение и терминология

IS-IS изначально был разработан для стека протоколов OSI. Соответственно, у него есть свой протокол на 3 уровне этой модели:

**End System** - Конечная система. Конечный хост.

**Itermediate System** - Промежуточная система. Маршрутизатор.

**CLNS (Connectionless Network Service)** - Этот сетевой сервис, который обслуживает **CLNP (Connection-Less Network Protocol)**. **CLNP** передаёт данные на 3 уровне без установления соединения. Адресация в **CLNS**-пакетах называется **NSAP (Network Service Access Point)**. Частью **NSAP**-адресации являются **NET**-адреса **(Network Entity Title)**, котороые идентифицируют устройство (т.е. являются аналогами LoopBack-адресов) и выглядят они так:

```
49.0001.00a0.c96b.c490.00
```

* 49 — **AFI** **(Authority And Format Identifier)**. Всегда 49, аналог индикатора приватной адресации
* 0001 — **IDI** **(Initial Domain Identifier)**. Идентификатор домена (зоны). Аналог области в OSPF
* 00a0.c96b.c490 — **System Identifier**. Аналог IP-адреса
* 00 — **Selector**. Аналог поля Protocol ID в заголовке IP-пакета (указывает что мы переносим. Например, 1 - ICMP, 89 - OSPF). Всегда равен 00, это говорит о том, что мы будем работать с NET (network entity title). Т.е. 00 указыывает на то, что это идентификатор устройства (аналог LoopBack-адреса).

В качестве System ID можно использовать MAC-адрес или преобразовать IP. Делается это так:

1. У нас есть IP-адрес 192.80.2.55. Добавляем в начало наших октетов 0 так, чтобы каждый октет состоял из 3-ёх цифр
2. Получилось: 192.080.002.055. Удаляем точки из адреса
3. Получилось: 192080002055. Теперь делим адрес на 3 части и получаем System ID:
4. 1920.8000.2055

### IS-IS PDU

* **IS-IS hello (IIH)** - Рассылается Broadcast'ом. Есть Level 1(L1) IIH, Level 2 (L2) IIH (Для обнаружения соседа в том или ином Level на определённом широковещательном домене). Также есть P2P IIH для P2P-линков. Level 1 маршрутизаторы для формирования смежности должны иметь один и тот же IDI. Тогда как для Level 2 маршрутизаторов это не обязательно. Также такой кадр имеет довольно большой размер: 1492 bytes. Это нужно для проверки MTU. Иными словами IIH раздуваются до максимального значения MTU, которое поддерживает IS-IS.
* **Link-state PDUs (LSP)** - Аналог LSA в OSPF. Важные поля:&#x20;
  * &#x20;**ATT - Attached** **Bit** - Устанавливается L1/L2 маршрутизатором для cообщения о том, что через него можно передать данные в другие зоны
  * **OL - LSDB Overload Bit** - Установка такого бита сигнализирует о том, что на устройстве идёт просчёт SFP-алгоритма, поэтому транзитный трафик через него пускать не нужно - не пройдёт. Но если трафик адресован сетям, которые подключены к нашему маршрутизатору напрямую, то мы его примем и отправим по назначению, так как запущенный SFP-алгоритм на это никак не повлияет.
  * **IS Type** - поле, обозначающее Level и прочие состояния
    * L1 - 01
    * L2 - 11
  * **TLV (Type-Length-Value)** - Название говорит само за себя. Это поле позволяет переносить по IS-IS информацию об IP. Т.е. IS-IS vожет передавать любую адресацию. Всё что нужно, это указать тип информации, длину и данные которые мы хотим передать. Именно поэтому поддержка IPv6 в IS-IS появилась раньше, чем в OSPF, для которого пришлось разрабатывать отдельную версию протокола.
* **Complete sequence number PDUs (CSNPs)** - Аналог DBD в OSPF. Содержит краткий список всех LSP. Также периодически происходит обмен этими PDU для поддержания LSDB в актуальном состоянии. Делится на L1 и L2 для каждой LSDB. Также отсылается при установлении смежности между маршрутизаторами. Если маршрутизатор получает CSNP и видит в своей LSDB отсутствующую информацию, то он отправляет PSNP.
* **Partial sequence number PDUs (PSNPs)** - Отсылается маршрутизатором для запроса отсутствующих LSP в его LSDB в ответ на CSNP. Отсылается на адрес отправителя CSNP. Также служит для подтверждения о получении запрошенных LSPs.

### IS-IS State Machine

![](https://1953625668-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MFMJhMiVjTLWfbfC-S4%2F-MYMumXtVN-Lq30eAMbY%2F-MYMw-Hy4NJO6yo1q52N%2F%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5.png?alt=media\&token=2f8ba583-2c42-4fef-8730-829fee2d5531)

[Xgu - Этапы установления соседства](http://xgu.ru/wiki/IS-IS#.D0.AD.D1.82.D0.B0.D0.BF.D1.8B_.D1.83.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BB.D0.B5.D0.BD.D0.B8.D1.8F_.D1.81.D0.BE.D1.81.D0.B5.D0.B4.D1.81.D1.82.D0.B2.D0.B0_.28adjacency.29):

1. **New** - состояние когда процесс установления соседства только начинается. Маршрутизатор переходит в это состояние в момент загрузки или при настройке начальной конфигурации IS-IS.
2. **One-Way** - IS-IS маршрутизатор переходит в это состояние после Hello PDU. Машрутизатор находится в этом состоянии пока не будет получен Hello PDU пакет содержащий адрес локального маршрутизатора в качестве соседа.
3. **Initializing** - состояние в которое переходит маршрутизатор при получении Hello PDU пакета в котром указан его собственный локальный адрес в качестве соседа. Это состояние означает, что была установлена двунаправленная связь.
4. **Up** - состояние полного функционирования отношений IS-IS. Это состояние означает, что были сформированы отношения соседства и произошла синхронизация баз данных маршрутизаторов.
5. **Down** - состояние утерянного соседства. IS-IS маршрутизатор переходит в это состояние по одной из нескольких причин: несоответствие зоны (area), окончание таймаута удержания или ошибка аутентификации.
6. **Reject** - состояние маршрутизатора после сбоя проверки подлинности. IS-IS маршрутизатор будет постоянно менять свое состояние между этим и состоянием **Down**.

## Уровни маршрутизации и протоколы модели OSI

0\. ES-IS - Протокол взаимодействия конечной системы с промежуточной системой. Маршрутизация 0 уровня.

1\. IS-IS L1 - Маршрутизация первого уровня необходима для связи внутри зоны

2\. IS-IS L2 - Маршрутизация второго уровня позволяет устанавливать связь между зонами

3\. IDRP (InterDomain Routing Protocol) - Аналог BGP в OSI-cетях. Маршрутизация уровня 3.

## Типы маршрутизаторов в IS-IS

Промежуточные системы всегда принадлежат одной зоне, а границей является линк между ними. Типы промежуточных систем:

1. L1 - Хранит LSDB только своей зоны, если нужо отправить данные  в другую зону, то обращается к L1/L2 промежуточной системе
2. L1/L2 - Хранит две LSDB: L1 LSDB - База данных своей зоны, L2 LSDB - база данных для маршрутизации между зонами. Обычно стоит на границе зоны и к нему приходит трафик от промежуточных систем первого уровня для отправки трафика в другие зоны
3. L2 - хранит LSDB второго уровня. L2 LSDB позволяет пропускать трафик между зонами. При этом L2 промежуточные системы могут находится и в одной зоне. Просто L2 LSDB строится вне зависимости от номеров зон.

Основной смысл состоит в том, что L1 при изменении топологии в L2 не начинает запускать SFP и наоборот. L1, если проводить аналогию с OSPF, является Totally-Stub Area. На L1/L2 роутере можно просуммировать маршруты, которые утекают с L1 в L2, а внутри зоны, для L1 роутеров, L1/L2 роутер будет шлюзом из-за ATT бита который он устанавливает в своих LSP.

### DIS

Designated IS - Назначенная промежуточная система - аналог DR в OSPF. Процесс выбора DIS:

1. Приоритет на линке
2. Самый большой MAC-адрес

DIS вместо широковещательного линка создаёт псевдоузел (Pseudonode), к которому каждый маршрутизатор подключен как P2P (DIS в том числе) и через него делает рассылку LSPs.  Т.е. на логическом уровне, вместо коммутатора мы будто бы добавляем ещё один маршрутизатор с **Subnetwork Point of Attachment (SNPA)**. По факту, это метрика на основе которой выбирается DIS. Больше - лучше. В Ethernet-сетях SNPA = наибольшему MAC-адресу в широковещательном домене. Также можно настроить приоритет (от 0 до 127), при этом маршрутизатор с 0 приоритетом всё равно будет учавствовать в выборах DIS (в OSPF маршрутизатор с 0 приоритетом в выборах DR и BDR не учавствует). Также стоит отметить, что если в сети появляется маршрутизатор с большим приоритетом, то происходит перевыбор DIS (в OSPF DR и BDR перевыбираются только после падения текущего DR/BDR).
