IS-IS: различия между версиями

Материал из Juniper Exam Wiki
Перейти к навигации Перейти к поиску
м
 
(не показано 65 промежуточных версий этого же участника)
Строка 1: Строка 1:
{{#description2:Отличия ISIS и OSPF. ISIS Areas. NET. L2 network. L1 network. Leaking routes. Summarization. TLV. Выборы DIS в бродкаст сети. Аутентификация. Mesh-groups. Распространение маршрутов. Wide metric. Формат LSP. Hello PDU. Информация для подготовки к экзаменам Juniper.}}
=Основы=
'''[http://bradhedlund.com/notes/is-is/ Краткое содержание, в пересказе Brad Hedlund]'''
'''[http://bradhedlund.com/notes/is-is/ Краткое содержание, в пересказе Brad Hedlund]'''


Строка 9: Строка 12:
dual IS-IS поддерживают M, MX, T series. Чистый ISIS работает только на J, SRX series.
dual IS-IS поддерживают M, MX, T series. Чистый ISIS работает только на J, SRX series.


Составляющие:
Основные термины:
 
*ESs - end system = hosts.
ESs - end system = hosts.
*ISs - intermediate systems = routers.
 
*PDU - protocol data unit = packet.
ISs - intermediate systems = routers.
*Level 1 (L1) - маршрутизация внутри area.
 
*Level 2 (L2)- маршрутизация между area и к другим AS.
PDU - protocol data unit = packet.
*L1/L2 - совмещают 1 и 2 level на разных интерфейсах.
 
Level 1 - маршрутизация внутри area.
 
Level 2 - маршрутизация между area и к другим AS.
 
Level1/Level2 - совмещают 1 и 2 level на разных интерфейсах.


В Level 1/2 системах роутер помечает PDU в сторону Level1 attached bit'ом, который обозначает, что роутер присоединен к Level2 и что его можно использовать для достижения префиксов, находящихся за Level 1 area.
В L1/L2 системах роутер помечает PDU в сторону Level1 attached bit'ом, который обозначает, что роутер присоединен к L2 и что его можно использовать для достижения префиксов, находящихся за L1 area.


=NET=
=Network entity title (NET)=
Network entity title (NET) - обозначения роутеров.
Network entity title (NET) - обозначения роутеров.
49.001.1921.6803.6001.00
49.0001.1921.6803.6001.00


49.0001 - area - число 1-13 байт.
49.0001 - area - число 1-13 байт.


1921.6803.6001 - system ID - обычно это просто ip loopback.
1921.6803.6001 - SYSTEM ID - обычно это просто ip loopback.


00 - selector
00 - selector


=ISIS and OSPF=
NET - можно назначить на любой интерфейс, на lo назначают для удобства.
 
SYSTEM ID должен быть уникален в рамках AREA.
 
=Отличия ISIS и OSPF=
В чем одинаковы:
В чем одинаковы:
*Поддерживают link-state database и находят кратчайший путь, используя алгоритм [https://youtu.be/0ZPuGE0aNKU Дейкстры]
*Поддерживают link-state database и находят кратчайший путь, используя алгоритм [https://youtu.be/0ZPuGE0aNKU Дейкстры]
Строка 41: Строка 42:
*Имеют функцию аутентификации
*Имеют функцию аутентификации
*Выбирают designated router
*Выбирают designated router
*Производит address summarization между area
*Производят address summarization между area
*Используют двухуровневую иерархию
*Используют двухуровневую иерархию


Строка 56: Строка 57:


; Два роутера с '''одинаковой''' AREA:
; Два роутера с '''одинаковой''' AREA:
:  Могут сформировать '''Level 1''' adjacency
:  Могут сформировать '''L1''' adjacency
:  Могут сформировать '''Level 2''' adjacency
:  Могут сформировать '''L2''' adjacency
:  Сформируют и '''Level 1''' и '''Level 2''' adjacency по-умолчанию
; Два роутера с '''разной''' AREA:
; Два роутера с '''разной''' AREA:
:  Не могут сформировать '''Level 1''' Adjacency
:  Не могут сформировать '''L1''' Adjacency
:  Сформируют '''Level 2''' Adjacency
:  Сформируют '''L2''' Adjacency


=Multilevel operations=
=Multilevel operations=
==Level 2 network==
==L2 network==
[[Файл:Isis_l2_l2_network.jpg]]
[[Файл:Isis_l2_network.jpg]]


При использовании L2 на всех роутерах будет сеть, аналогичная OSPF area 0. То есть все роутеры будут получать полные сведения о всей сети.
При использовании L2 на всех роутерах будет сеть, аналогичная OSPF area 0. То есть все роутеры будут получать полные сведения о всей сети.
Строка 71: Строка 71:
Тип LSP будет напрямую зависеть от Level соседства. Если установлено L1 соседство, то передаются LSP level1, если соседство L2, то и LSP будут L2.
Тип LSP будет напрямую зависеть от Level соседства. Если установлено L1 соседство, то передаются LSP level1, если соседство L2, то и LSP будут L2.
L1 соседство может установиться только внутри одной area. Если требуется соседство с другой area, то будет установлено соседство L2.
L2 флудятся между всеми area.
L2 флудятся между всему area.


==Level 1 network==
==L1 network==


[[Файл:Isis_l1_network.jpg]]
[[Файл:Isis_l1_network.jpg]]
Строка 90: Строка 88:
  '''macduff.00-00'''                    0xc  0xfc02      859 L1 L2 '''Attached'''
  '''macduff.00-00'''                    0xc  0xfc02      859 L1 L2 '''Attached'''
  macduff.02-00                    0x5  0xa7cc      859 L1 L2
  macduff.02-00                    0x5  0xa7cc      859 L1 L2
В таблице появляется маршрут:
В таблице появляется маршрут (0/0 генерируется L1 роутером, а не анонсируется с L2):
  talisker> show route protocol isis  
  talisker> show route protocol isis  
  inet.0: 13 destinations, 13 routes (13 active, 0 holddown, 0 hidden)
  inet.0: 13 destinations, 13 routes (13 active, 0 holddown, 0 hidden)
Строка 97: Строка 95:
                     > to 192.168.86.14 via ge-0/0/0.70
                     > to 192.168.86.14 via ge-0/0/0.70


Attached-bit можно отключить следующим образом:
Attached-bit можно отключить на L1 роутере следующим образом:
  [edit protocols isis]
  [edit protocols isis]
  +  ignore-attached-bit;
  +  ignore-attached-bit;
Строка 106: Строка 104:
L1/L2 сеть работает как NSSA в OSPF.
L1/L2 сеть работает как NSSA в OSPF.
На L1/L2 роутерах происходит суммирование маршрутов L1 и суммированный маршрут флудится внутри L2 area.
На L1/L2 роутерах происходит "суммирование" маршрутов L1 и "суммированный" маршрут флудится внутри L2 area. (по факту суммирования не происходит, просто передаются префиксы L1 в L2. Про суммирование/аггрегирование будет ниже). Почему это везде называется суммирование - не ясно.  
 
Внутри каждой L1 area у всех L1 роутеров содержится одинаковая LSDB.
Внутри каждой L1 area у всех L1 роутеров содержится одинаковая LSDB.
L2 маршруты не передаются в L1  
L2 маршруты не передаются в L1.
External L1 по дефолту не передаются в L2, можно разрешить с помощью policy.
External L1 по дефолту не передаются в L2, можно разрешить с помощью policy.
Строка 116: Строка 114:
L1 роутеры изолированы от изменений топологии в других area.
L1 роутеры изолированы от изменений топологии в других area.


#L1 роутеры используют attached-bit, который передается в L1 PDU от L1/L2 роутера. При этом локальный L1/L2 роутер генерирует default route для остальных L1 роутеров.
#L1 роутеры используют attached-bit, который генерируется L1/L2 роутером. Default route генерируется на L1 роутере в сторону L1/L2 роутера (который подсунул attached-bit).
#L1 роутеры используют кратчайший путь (по метрике) к attached роутеру.
#L1 роутеры используют кратчайший путь (по метрике) к attached роутеру.


При разделении роутеров на разные уровни повышается мастабируемость, т.к.:
При разделении роутеров на разные уровни повышается мастабируемость, т.к.:
#L1 изолированы от общей топологии сети, вне своей aera.
#L1 изолированы от общей топологии сети, вне своей area.
#Суммирование L1 маршрутов позволяет L2 роутрам производить SPF не всей сети, а исключая L1.
#Суммирование L1 маршрутов позволяет L2 роутерам производить SPF не всей сети, а исключая L1.


=Действия внутри multilevel networks=
=Действия внутри multilevel networks=
*L1 internal в L2 уходит без ограничений.
*L1 external в L2 уходит только через export-policy.
*L2 в L1 по умолчанию не уходит, только через export-policy.
L1 роутеры имеют только локальную маршрутную информацию, внутри своей area. Чтобы достичь назначения вне своей area, L1 роутеры используют default route.  
L1 роутеры имеют только локальную маршрутную информацию, внутри своей area. Чтобы достичь назначения вне своей area, L1 роутеры используют default route.  
В L1 PDU можно впихнуть и externel routes. Но по умолчанию такие маршруты не будут передаваться L2. Чтобы избежать подобных утечек, потребуется policy.


L2 PDU attached роутров передают внутренние L1 маршруты своим L2 соседям в других area. L2-r не передает от своих L2-r соседей никаких маршрутов в сторону L1, поэтому L1 роутеры и нуждаются в default route.
В L1 PDU можно впихнуть и external routes (потребуется export policy). Но по умолчанию такие маршруты не будут передаваться L2.


Использование wide metrics убирает обозначение internal/external routes. Все становятся просто internal. Вследствие чего все L1 перетекают L2.
Использование wide metrics убирает обозначение internal/external routes. Все становятся просто internal => все ext-L1 перетекают L2.
 
L2 PDU attached роутеров передают внутренние L1 маршруты своим L2 соседям в других area. L2-r не передает от своих L2-r соседей никаких маршрутов в сторону L1, поэтому L1 роутеры и нуждаются в default route.


Можно отключить функцию генерирования default-route на L1 роутрах:
Можно отключить функцию генерирования default-route на L1 роутрах:
  set protocols isis ignore-attached-bit
  set protocols isis ignore-attached-bit
'''БОЛЬШОЕ НО''': если у L1/L2 роутера есть соседство L2 в ДРУГОЙ area, то он будет вставлять attcahed-bit. Если такого соседства нет, то ему и не за чем добавлять attached к L1 link-state PDU.


Использование '''ignore-attached-bit'''. Когда применяется:
Использование '''ignore-attached-bit'''. Когда применяется:
Строка 138: Строка 143:
*Если сгенерированный def route с next-hop в сторону attached роутера не является оптимальным, то его можно просто отключить.
*Если сгенерированный def route с next-hop в сторону attached роутера не является оптимальным, то его можно просто отключить.


=Policy for leaking routes=
=Leaking routes=
  set policy-options policy-statement route-leak term L2-to_l1 from protocol isis
Настраивается на L1/L2 роутере:
  set policy-options policy-statement route-leak term L2-to_l1 from level 2
  set policy-options policy-statement route-leak term L2-to-L1 from protocol isis
  set policy-options policy-statement route-leak term L2-to_l1 from roite-filter 192.168.16.0/20 orlonger
  set policy-options policy-statement route-leak term L2-to-L1 from level 2
  set policy-options policy-statement route-leak term L2-to_l1 to level 1
  set policy-options policy-statement route-leak term L2-to-L1 from route-filter 192.168.16.0/20 orlonger
  set policy-options policy-statement route-leak term L2-to_l1 then accept
  set policy-options policy-statement route-leak term L2-to-L1 to level 1
  set policy-options policy-statement route-leak term L2-to-L1 then accept


При настройке подобного policy в 2 стороны (L2->L1, L1->L2), вполне себе может образоваться петля. Чтобы ее избежать, в LSP передается up/down bit.
При настройке подобного policy в 2 стороны (L2-to-L1, L1-to-L2), вполне себе может образоваться петля. Чтобы ее избежать, в LSP передается up/down bit.  
up = можно передавать маршрут. down = уже есть утечка этого маршрута из другого level, поэтому его передача запрещена.


Настраивается на роутере, граничащим с L1 роутером.
На границе L2-to-L1 up/down bit = down, чтобы он точно не утек обратно/ниже из L1.
:- up = можно передавать маршрут.
:- down = уже есть утечка этого маршрута из другого level, поэтому его передача запрещена.


=Summarization=
=ISIS соседство=
На L1/L2 роутреах происходит суммирование маршуртов. Суммируются external L1 routes + L2 routes от других ISIS area (+ можно просуммировать internal L1 routes (хотя они итак по дефолту передаются L2)).
IIH = ISIS Hello packet. Используются для установления соседства.


Также суммирование можно произвести с помощью policy:
Hold timer тоже передается в IIH.
*'''для non-DIS''': hello = 9 sec, hold = 3*9 = 27 sec. 
*'''для DIS''': hello = 3sec, hold = 3*3 sec = 9 sec
 
Что проверяется при установление соседства:
*MTU checking = TLV 8. ISIS max mtg = 1492 bytes. Поэтому линка должен быть с mtu никак не меньше!
*The subnet checking = TLV 132. На p2p линке должны быть адреса из одной подсети.
*Protocol checking = TLV 129. CLNP ; IPv4 ; IPv6 … Тоже должны совпадать.
*Area checking = TLV 1. Area num используется только для L1 роутеров. Должна совпадать.
 
Состояния соседства:
 
[[Файл:Isis-adjacency.png]]
 
*New - момент загрузки или при настройке начальной конфигурации IS-IS.
*One-Way - после Hello PDU. Роутер ждет Hello PDU пакет, содержащий свой адрес в качестве соседа.
*Initializing - Роутер получил Hello PDU со своим локальным адресом в качестве соседа.
*Up - соседство установлено, LSDB синхронизированы.
*Down - неверная area, истек таймаут или ошибка аутентификации.
*Reject - состояние маршрутизатора после сбоя проверки подлинности. IS-IS маршрутизатор будет постоянно менять свое состояние между этим и состоянием Down.
 
Для более быстрого распознавания потери соседа настраивается BFD. Например, для времени детектирования менее 450 мс
set groups isis protocols isis interface <ge-*> bfd-liveness-detection minimum-interval 150
set groups isis protocols isis interface <ge-*> bfd-liveness-detection multiplier 3
 
=Cуммирование маршрутов (Summarization)=
На L1/L2 роутерах настраивается суммирование/агрегирование маршрутов. Суммируются external L1 routes + L2 routes от других ISIS area (+ можно просуммировать internal L1 routes (хотя они итак по дефолту передаются L2)).
 
Пример, на роутере L1 есть локальные маршруты, их нужно агрегировать в 1 большой маршрут и переслать в сторону L2. Агрегирование и перенаправление в L2 будем делать на L1/L2 роутере.
 
Настраиваем policy:
set routing-options aggregate route 172.16.20.0/22
  set policy-options policy-statement term on-the-L1L2 from protocol aggregate
  set policy-options policy-statement term on-the-L1L2 from protocol aggregate
  set policy-options policy-statement term on-the-L1L2 from route-filter 172.16.20.0/22 exact
  set policy-options policy-statement term on-the-L1L2 from route-filter 172.16.20.0/22 exact
Строка 159: Строка 197:
  set policy-options policy-statement term on-the-L1L2 then accept
  set policy-options policy-statement term on-the-L1L2 then accept
  set protocols isis level 1 export on-the-L1L2
  set protocols isis level 1 export on-the-L1L2
 
Можно применять несколько policy. В таком случае они будут обрабатываться слева направо. Пока нужный префикс не поппадет под условие с последующим терминирующим действием (accept, reject).
Пример, на роутере L1 есть локальные маршруты, их нужно агрегировать в 1 большой маршрут и переслать в сторону L2. Агрегирование и перенаправление в L2 будем делать на L1/L2 роутере.
set routing-options aggregate route 10.0.4.0/22
  set policy-options policy-statement internal-L1-summary term local-summary from protocols aggregate
  set policy-options policy-statement internal-L1-summary term local-summary from protocols aggregate
  set policy-options policy-statement internal-L1-summary term local-summary from route-filter 10.0.4.0/22 exact
  set policy-options policy-statement internal-L1-summary term local-summary from route-filter 10.0.4.0/22 exact
Строка 169: Строка 207:
  set policy-options policy-statement internal-L1-summary term suppress-specifics then reject
  set policy-options policy-statement internal-L1-summary term suppress-specifics then reject
  set protocols isis export internal-L1-summary
  set protocols isis export internal-L1-summary
Можно применять несколько policy. В таком случае они будут обрабатываться слева направо. Пока нужный префикс не поппадет под условие с последующим терминирующим действием (accept, reject).
Пометка к конфигу:
*по умолчанию на интерфейсе включены оба L1 и L2. В конфиге нужно отключить ненужный level. Также можно глобально отключить работу одного из уровней <set protocols isis level 1 disable>.
*советуют все-таки добавлять lo в protocols isis, даже если NET сконфигурирован не на нем.
*конфиг lo: isis работает на lo в пассивном режиме: соседства с него не строит, но роутер передает о нем инфо, как о локальном линке. LSP генерируется автоматом и в L1 и в L2. (можно это действо запретить для одного из уровней).


=Dejkstra algorithm=
=Алгоритм Дейкстры=
Shortest-path-first (SPF) рассчитывается отдельно для разных уровней, т.к. LSDB тоже заводятся для разных уровней.
Shortest-path-first (SPF) рассчитывается отдельно для разных уровней, т.к. LSDB тоже заводятся для разных уровней.


Строка 196: Строка 228:


SPF делается в 2 шага:
SPF делается в 2 шага:
#строится дерево, где указаны все IS сети.  
#строится DB, где указаны все IS сети.  
#нанесение анонсируемых префиксов на tree, и рассчет кратчайших путей до них, на каждом роутере.  
#нанесение анонсируемых префиксов на tree, и рассчет кратчайших путей до них, на каждом роутере.  


Строка 203: Строка 235:
Если какой-то роутер начинает аннонсить новый префикс или перестает анонсить старый, то нет смысла делать полный пересчет SPF. В таких случаях производится пересчет только ip reachability (только для конкретных префиксов). Каждый роутер сам решает какой пересчет (IS reachability или IP reachability) ему делать, на основании полученного lsp.
Если какой-то роутер начинает аннонсить новый префикс или перестает анонсить старый, то нет смысла делать полный пересчет SPF. В таких случаях производится пересчет только ip reachability (только для конкретных префиксов). Каждый роутер сам решает какой пересчет (IS reachability или IP reachability) ему делать, на основании полученного lsp.


Маршруты полученные от ISIS приходят на роутер в виде LSP, потом производится рассчет spf и только после этого заносятся в таблицу маршрутизации. Поэтому, чтобы зафильтровать определенные маршруты с помощью policy, требуется делать это на роутере, генерирующем маршруты, с помощью export-policy. Import-policy - не работает в случае с ISIS.
Маршруты приходят на роутер в виде LSP, потом производится расчет SPF и только после этого заносятся в таблицу маршрутизации. Поэтому, чтобы зафильтровать определенные маршруты с помощью policy, требуется делать это на роутере, генерирующем маршруты, с помощью export-policy. Import-policy - не работает в случае с ISIS.


=LSP format=
=Метрики=
При расчете SPF используется cost на исходящих интерфейсах.


LSP (link-state PDU ) описывает состояния соседства с другими роутерами в сети. Периодически флудится. Содержит TLV сегменты.
На одном линке разными роутерами могут быть назначены разные метрики. В этом случает ISIS ругаться не будет, но SPF будет рассчитвывать кратчайший путь в разных направлениях с разными стоимостями. Это только может усложнить админам работу, но ISIS будет работать.
 
Также в отличие от ospf, в isis по умолчанию используются только static metrics. Нет метрик, рассчитанных от interface bandwidth rate.
 
Но это дефолтное поведение можно поправить.
set protocols isis reference-bandwidth 10g
 
Для протоколов: direct, BGP, aggregate, generate метрика = '''10'''.
 
На passive интерфейсах metric = '''0'''.
 
Для static, OSFP и RIP маршрутов метрика = стоимости маршрута протокола.
 
==Wide metric==
Обычно в TLV типов 2, 128, 130 поле под метрику =  6 бит. Напомним, что эти TLV используются, чтобы передавать инфо о своих линках и external routes.
Т.е. максимальное значение метрики = '''63''' (0-63). Любое бОльшее значение метрики, настроенное на интерфейсе передается как 63.
 
Как я поняла, для рассчета spf это нифига не правильно и он добавляет несколько значений по 64, чтобы достичь нужного значения.
 
При внедрении функционала TE, появились 22 и 35 TLV, в них стали использовать 24-битные metrics (то есть значение метрики '''16,777,215''') и поле под total cost было расширено до 32 бит. При этом wide metrics не могут отличать internal маршруты от external.
 
По умолчанию в ISIS роутер передает и small и wide metrics. Так что значения метрик можно задавать в диапазоне: [0-16,777,215].
 
Можно настроить, чтобы роутер работал только с wide (рекомендуется), но стоит учесть, что тогда это автоматически уберет возможность различать internal/external routes. И в сети будут просачиваться external маршруты Level 1 в Level 2.
set protocols isis level 1 wide-metrics-only
set protocols isis level 2 wide-metrics-only
 
=Формат LSP=
 
LSP (link-state PDU ) описывает состояния соседства с другими роутерами в сети. Периодически флудится в рамках Level. Не пересекает границы уровня. Содержит TLV сегменты.
 
LSP флудится при изменениях в сети или по таймеру, чтобы содержать обновленную информацию.  


LSP флудится при изменениях в сети или по таймеру, чтобы содержать обновленную информацию. PDU имеет поле remaining lifetime (2 байт), при создании PDU по дефолту таймер = 1200 sec = 20 min. Роутер, кот получил PDU, начинает отсчет до 0. До того как таймер истечет (~ 317 sec), исходная система (роутер) пересоздает PDU и флудит его.
PDU имеет поле remaining lifetime (2 байт), при создании PDU по дефолту таймер = 1200 sec = '''20 min'''.  


| Protocol ID | Header length | Version | ID Length | PDU Type | Version | Reserved | Max area address | PDU headers and TLVs |
Роутер, который получил PDU, начинает отсчет до 0. До того как таймер истечет (~ 317 sec), исходная система (роутер) пересоздает PDU и флудит его.
 
{| class="wikitable"
|-
| Protocol ID || Header length || Version || ID Length || PDU Type || Version || Reserved || Max area address || PDU
|}


''ID Length (6 байт), Max area address (3 байт)'' - иногда = 0х00 - это показывает, использует значения по умолчанию и что LSP совмещен с более старыми версиями протокола.  
''ID Length (6 байт), Max area address (3 байт)'' - иногда = 0х00 - это показывает, использует значения по умолчанию и что LSP совмещен с более старыми версиями протокола.  
''PDU type'' - L1 (18) / L2 (20) PDU


''Version (1)'' - ранее использовалось как расширение под protocol ID, но в сейчас не используется вообще и значение = 0х01 (реально версия протокола).
''Version (1)'' - ранее использовалось как расширение под protocol ID, но в сейчас не используется вообще и значение = 0х01 (реально версия протокола).
Строка 220: Строка 291:


'''Формат PDU headers and TLVs'''
'''Формат PDU headers and TLVs'''
 
{| class="wikitable"
| PDU length | Remaining lifetime | LSP ID | Sequence number | Checksum | ATT, OL, IS Type bits | TLVs |
|-
 
| PDU length || Remaining lifetime || LSP ID || Sequence number || Checksum || ATT, OL, IS Type bits || TLVs  
''PDU type'' - L1 (18) / L2 (20) PDU
|}


''LSP ID'' - 8 байт: 6 - router's system ID, 1 - circuit ID, 1 - LSP number. Придает уникальность внутри домена.
''LSP ID'' - 8 байт: 6 - router's system ID, 1 - circuit ID, 1 - LSP number. Придает уникальность внутри домена.


System ID = NET
Circuit ID -  0x01 - for loopback или p2p interface, [0x02 - 0xff] - broadcast segment.  
 
LSP number = изначальный PDU имеет значение 0x00, каждый следующий фрагмент + 1.


Circuit ID -  0x01 - for loopback или p2p interface, [0x02 - 0xff] - broadcast segment.  
Sequence number = изначальный PDU имеет значение 0x01, каждый следующий фрагмент + 1.


''Attached bit (ATT)'' - ставится в L1 PDU, ISIS роутером, кот имеет соседство с L2. L1 роутер после этого передает пакеты к этому attached роутеру, если нужно выйти за пределы area.
''Attached bit (ATT)'' - ставится в L1 PDU, ISIS роутером, кот имеет соседство с L2. L1 роутер после этого передает пакеты к этому attached роутеру, если нужно выйти за пределы area.
Строка 244: Строка 313:
Используется для поиска, установления и поддержания соседства.
Используется для поиска, установления и поддержания соседства.


Разные hello для broadcast(LAN) и p2p сетей.  
Разные hello для LAN (broadcast) и p2p сетей.
LAN делится на L1 и L2, имеют одинаковый формат.
Broadcast netw: L1 (01-80-c2-00-00-14) / L2 (01-80-c2-00-00-15)
*P2P Hello для L1 и L2 имеют одинаковый формат [PDU17]
*LAN (broadcast) Hello
:*L1 (01-80-c2-00-00-14) [PDU15]
:*L2 (01-80-c2-00-00-15) [PDU16]


Передаются с интервалом DIS (designated IS) 3 sec, non-DIS 9 sec.
Передаются с интервалом 3 sec = DIS (designated IS), 9 sec = non-DIS .


Суть:
Суть:
Строка 256: Строка 328:


PDU filelds:
PDU filelds:
- circuit type: L1, L2, L1/L2 router.
:- circuit type: L1, L2, L1/L2 router.
 
:- source ID: system ID of originated router.
- source ID: system ID of originated router.
:- hold timer: сколько ждать hello от соседа.
 
:- PDU length: в октетах (байтах).
- hold timer: сколько ждать hello от соседа.
:- Priority: 0-127 для DIS роутеров.
 
:- LAN ID: system ID или DIS + 1 октет.
- PDU length: в октетах (байтах).
 
- Priority: 0-127 для DIS роутеров.
 
- LAN ID: system ID или DIS + 1 октет.


=Link-state PDU=
=Link-state PDU=
Строка 360: Строка 427:
| 236 || IPv6 reachability: инфо о линке, где работает IPv6 протокол.
| 236 || IPv6 reachability: инфо о линке, где работает IPv6 протокол.
|}
|}
=Metrics=
При расчете spf используется cost на исходящих интерфейсах.
На одном линке разными роутерами могут быть назначены разные метрики. В этом случает ISIS ругаться не будет, но SPF будет рассчитвывать кратчайший путь в разных направлениях с разными стоимостями. Это только может усложнить админам работу, но ISIS будет работать.
==Wide metric==
Обычно в TLV типов 2, 128, 130 поле под метрику =  6 бит. Напомним, что эти TLV используются, чтобы передавать инфо о своих линках и external routes.
Т.е. максимальное значение метрики = 63 (0-63). Любое бОльшее значение метрики, настроенное на интерфейсе передается как 63.
Как я поняла, для рассчета spf это нифига не правильно и он добавляет несколько значений по 64, чтобы достичь нужного значения.
При внедрении функционала TE, появились 22 и 35 TLV, в них стали использовать 24-битные metrics и поле под total cost было расширено до 32 бит. При этом wide metrics не могут отличать internal маршруты от external.
По умолчанию в ISIS роутер передает и small и wide metrics. Можно настроить, чтобы роутер работал только с wide, но тогда это автоматически уберет возможность различать internal/external routes. И в сети будут просачиваться external маршруты Level 1 в Level 2.
[edit protocols isis level 1]
    wide-metrics-only;
[edit protocols isis level 2]
    wide-metrics-only;


=Пример LSP на роутере=
=Пример LSP на роутере=
Строка 436: Строка 484:
</tt>
</tt>


=DIS=
=Designated Intermedia System (DIS)=
Designated Intermedia System
Не выбирается на p2p линках. Выборы производятся только между роутрерами, подключенными через один ethernet сегмент.
 
DIS отвечает за передачу link-state сообщений. 
 
Как проверить, что на нашей сети не появился DIS:
show isis database
LSP ID                      Sequence Checksum Lifetime Attributes
sun-r1.'''00-00'''                    0x81  0x7a6e    1153 L1
sirius-r2.'''00-00'''                  0xd    0x292      616 L1
canopus-r3.'''00-00'''                0xa4  0x16cf      699 L1
arcturus-r4.'''00-00'''              0xc0  0xbe94      773 L1
... и т.д.
 
00-00 - первая пара 00 - это как раз pseudonode-id. Раз он равен 0, то DIS в данном сегменте нет. Если значение первой пары отличается (03-00, 05-00), значит выбран DIS.
==Выборы DIS в бродкаст сети / multi-access сети==
#приоритет: (0-127) для L1 и L2 назначаются разные, по умолчанию = 64. Передаются в hello PDU. Приоритет = 0 - роутер не участвует в выборах. На не бродкастных линках приоритет = 0.
#наибольший mac / SNPA.
#для L1 и L2 DIS выбирается отдельно.


Выборы DIS в бродкаст сети / multi access сети:
set protocols isis interface ge-0/0/1.212 level 1 priority 105
*1 - приоритет: (0-127) для L1 и L2 назначаются разные, по умолчанию = 64. Передаются в hello PDU. Приоритет = 0 - роутер не участвует в выборах. На не бродкастных линках приоритет = 0.
*2 - наибольший mac / SNPA.
*Для L1 и L2 DIS выбирается отдельно.


ISIS сеть считается роутером, называемым pseudo-node: по факту просто создается некая сущность, типа виртуального роутрера, с которым все роутеры в бродкаст сети устанавливают соседство (в том числе и сам DIS).
ISIS сеть считается роутером, называемым pseudo-node: по факту просто создается некая сущность, типа виртуального роутрера, с которым все роутеры в бродкаст сети устанавливают соседство (в том числе и сам DIS).
Строка 448: Строка 511:
*Каждый роутер формирует соседство с каждым роутером в бродкаст/мультиакцесс сети (в отличие от OSPF).
*Каждый роутер формирует соседство с каждым роутером в бродкаст/мультиакцесс сети (в отличие от OSPF).


Поведение DIS:
==Поведение DIS==
*Каждый роутер флудит свои link-state PDU каждому соседу, а не только DIS. DIS таким образом использует систему из PDU (sequence number PDU).
*Каждый роутер флудит свои link-state PDU каждому соседу, а не только DIS. DIS таким образом использует систему из PDU (sequence number PDU).
*DIS является представителем pseudo-node и пересылает pseudo-node всем присоединенным роутерам.
*DIS является представителем pseudo-node и пересылает pseudo-node всем присоединенным роутерам.
Строка 457: Строка 520:
  set protocols isis interface ge-0/0/0.0 csnp-interval (1-65535)
  set protocols isis interface ge-0/0/0.0 csnp-interval (1-65535)


=Authentification=
Пример Isis database с DIS на сети (вывод с canopus-r3, DIS=arcturus-r4):
IS-IS level 1 link-state database:
sun-r1.00-00 Sequence: 0x81, Checksum: 0x7a6e, Lifetime: 120 secs
  IS neighbor: sirius-r2.00                  Metric:      10
  IS neighbor: procyon-r8.00                Metric:      10
  IP prefix: 172.30.0.0/30                  Metric:      10 Internal Up
  IP prefix: 172.30.0.8/30                  Metric:      10 Internal Up
  IP prefix: 172.30.5.1/32                  Metric:        0 Internal Up
sirius-r2.00-00 Sequence: 0xf, Checksum: 0x8b15, Lifetime: 808 secs
  IS neighbor: sun-r1.00                    Metric:      10
  IS neighbor: rigel-r7.00                  Metric:      10
  IP prefix: 172.30.0.0/30                  Metric:      10 Internal Up
  IP prefix: 172.30.0.12/30                  Metric:      10 Internal Up
  IP prefix: 172.30.0.16/30                  Metric:      10 Internal Up
  IP prefix: 172.30.5.2/32                  Metric:        0 Internal Up
canopus-r3.00-00 Sequence: 0xa9, Checksum: 0x8a8c, Lifetime: 1155 secs
  IS neighbor: arcturus-r4.02                Metric:      10
  IP prefix: 172.30.0.12/30                  Metric:      10 Internal Up
  IP prefix: 172.30.0.20/30                  Metric:      10 Internal Up
  IP prefix: 172.30.0.24/30                  Metric:      10 Internal Up
  IP prefix: 172.30.1.0/24                  Metric:      10 Internal Up
  IP prefix: 172.30.2.0/24                  Metric:      10 Internal Up
  IP prefix: 172.30.5.3/32                  Metric:        0 Internal Up
a-centauri-r5.00-00 Sequence: 0x96, Checksum: 0x7374, Lifetime: 1161 secs
  IS neighbor: arcturus-r4.03                Metric:      10
  IP prefix: 172.30.0.28/30                  Metric:      10 Internal Up
  IP prefix: 172.30.0.32/30                  Metric:      10 Internal Up
  IP prefix: 172.30.5.5/32                  Metric:        0 Internal Up
vegan-r6.00-00 Sequence: 0x92, Checksum: 0x7aca, Lifetime: 813 secs
  IS neighbor: a-centauri-r5.00              Metric:      10
  IS neighbor: rigel-r7.00                  Metric:      10
  IP prefix: 172.30.0.24/30                  Metric:      10 Internal Up
  IP prefix: 172.30.0.32/30                  Metric:      10 Internal Up
  IP prefix: 172.30.0.40/30                  Metric:      10 Internal Up
  IP prefix: 172.30.5.6/32                  Metric:        0 Internal Up
rigel-r7.00-00 Sequence: 0x9, Checksum: 0x82f5, Lifetime: 275 secs
  IS neighbor: sirius-r2.00                  Metric:      10
  IS neighbor: vegan-r6.00                  Metric:      10
  IS neighbor: procyon-r8.00                Metric:      10
  IP prefix: 172.30.0.16/30                  Metric:      10 Internal Up
  IP prefix: 172.30.0.40/30                  Metric:      10 Internal Up
  IP prefix: 172.30.0.44/30                  Metric:      10 Internal Up
  IP prefix: 172.30.5.7/32                  Metric:        0 Internal Up
procyon-r8.00-00 Sequence: 0x81, Checksum: 0xd174, Lifetime: 817 secs
  IS neighbor: sun-r1.00                    Metric:      10
  IS neighbor: rigel-r7.00                  Metric:      10
  IP prefix: 172.30.0.8/30                  Metric:      10 Internal Up
  IP prefix: 172.30.0.44/30                  Metric:      10 Internal Up
  IP prefix: 172.30.5.8/32                  Metric:        0 Internal Up
'''arcturus-r4.00-00''' Sequence: 0x4, Checksum: 0xb668, Lifetime: 1157 secs
  IS neighbor: '''arcturus-r4.02'''                Metric:      10
  IS neighbor: '''arcturus-r4.03'''                Metric:      10
  IP prefix: 172.30.0.20/30                  Metric:      10 Internal Up
  IP prefix: 172.30.0.28/30                  Metric:      10 Internal Up
  IP prefix: 172.30.1.0/24                  Metric:      10 Internal Up
  IP prefix: 172.30.2.0/24                  Metric:      10 Internal Up
  IP prefix: 172.30.5.90/32                  Metric:        0 Internal Up
'''arcturus-r4.02-00''' Sequence: 0x3, Checksum: 0xf44, Lifetime: 1158 secs
  IS neighbor: canopus-r3.00                Metric:        0
  IS neighbor: arcturus-r4.00                Metric:        0
'''arcturus-r4.03-00''' Sequence: 0x1, Checksum: 0x1495, Lifetime: 1157 secs
  IS neighbor: a-centauri-r5.00              Metric:        0
  IS neighbor: arcturus-r4.00                Metric:        0
 
= Аутентификация=
Можно настраивать в разных местах: L1, L2, на интерфейсах.
Можно настраивать в разных местах: L1, L2, на интерфейсах.


L1, L2 защищает только hello PDU, LSP, порядковый номер pdu, отправленных в рамках определнного уровня.
L1, L2 защищает hello PDU, LSP, порядковый номер pdu, отправленных в рамках определнного уровня.


Auth на интерфейсах охраняет только hello PDUs.
Auth на интерфейсах шифрует только hello PDUs.


Типы:
Типы:
Строка 476: Строка 603:
Все роутеры флудят LSP всем своим соседям. В итоге один роутер может получать несколько одинаковых копий LSP.
Все роутеры флудят LSP всем своим соседям. В итоге один роутер может получать несколько одинаковых копий LSP.


Чтобы этого избежать, можно использовать mesh-groups. Члены группы не пересылают LSP внутри группы. Пересылаются только LSP, полученных извне группы.
Mesh-groups вводятся, чтобы в full-mesh сети сократить чрезмерный и избыточный флуд LSP.
Чтобы этого избежать, можно использовать mesh-groups. Члены группы не пересылают LSP внутри группы. Пересылаются только LSP, полученные извне группы.


  set protocols isis interface ge-0/0/0.0 mesh-group 1
  set protocols isis interface ge-0/0/0.0 mesh-group 1
Строка 482: Строка 611:
  set protocols isis interface ge-0/0/2.0 mesh-group blocked    | икслючает флуд любых LSP от себя, но принимает LSP от соседей.
  set protocols isis interface ge-0/0/2.0 mesh-group blocked    | икслючает флуд любых LSP от себя, но принимает LSP от соседей.


=Default Policies=
=Политики распространения маршрутов по умолчанию=
Как и OSPF, ISIS - link-state протокол. Таблица маршрутизации заполняется префиксами, прошедшими SPF алгоритм.  
Как и OSPF, ISIS - link-state протокол. Таблица маршрутизации заполняется префиксами, прошедшими SPF алгоритм.  


LSP заполняются не из inet.0, а из того, что сконфигурировано внутри <protocols isis>. В ISIS можно полисить internal subnets и external subnets с помощью export policy. (в ospf можно фильтровать таким образом только external routes).
LSP заполняются не из inet.0, а из того, что сконфигурировано внутри <protocols isis>. В ISIS можно ограничивать internal routes и external routes с помощью export policy.  


=Redistribution =
(в ospf можно фильтровать таким образом только external routes).
 
=Распространение маршрутов =
Чтобы в ISIS передать маршруты, полученные из других протоколов, требуется export-policy.
Чтобы в ISIS передать маршруты, полученные из других протоколов, требуется export-policy.
Также export работает и для ISIS маршрутов.


В policy как действие можно не только делать accept, но и устанавливать метрику и добавлять теги. Теги полезны для выборочной редистрибьюции. На принимающей стороне можно с помощью тегов разруливать маршруты.
В policy как действие можно не только делать accept, но и устанавливать метрику и добавлять теги. Теги полезны для выборочной редистрибьюции. На принимающей стороне можно с помощью тегов разруливать маршруты.


=Prefix limit (for external routes)=
Работает и import-policy на ISIS маршруты.
 
=Prefix limit (для external routes)=
JunOS + ISIS = это достаточно надежная система, которая позволяет стабильно работать и с большим числом префиксов, но лучше этого не допускать.
JunOS + ISIS = это достаточно надежная система, которая позволяет стабильно работать и с большим числом префиксов, но лучше этого не допускать.


Желательно выставлять все-таки какое-то ограничение по количеству внешних маршрутов (1-4,294,967,295). При достижении лимита ISIS перестает принимать external routes + обозначает себя (через LSP) как overload. В таких случаях только ручное вмешательство спасает ситуацию.
Желательно выставлять все-таки какое-то ограничение по количеству внешних маршрутов (1-4,294,967,295). При достижении лимита ISIS перестает принимать external routes + обозначает себя (через LSP) как overload. В таких случаях только ручное вмешательство спасает ситуацию.
То есть настраивается на ASBR, вероятно:
set protocols isis level 2 prefix-export-limit 2000
или
set protocols isis level 1 prefix-export-limit 2000
=Overload=
Настраиваем, если нужно вывести ненадолго роутер из эксплуатации.
timeout = (60..1800 seconds).
Если на роутере настроили overload, то при запуске протокола (rpd), overload bit = установленному интервалу.
НЕ с момента установления сосества, а именно со времени запуска протокола.
Механизм взаимодействия с другими роутерами отличается от OSPF.
*другие роутеры игнорят PDU от роутера в расчете SPF и через роутер никакой трафик не пойдет.
*если роутер является border router (L1/L2), то он перестает слать attached-bit к L1.
=Стоимость маршрутов (Junos Preference)=
*L1 internal = 15
*L2 internal = 18
*L1 external = 160
*L2 external = 165
т.к. best-practice - использовать wide-metrics, то в обычной жизни будем оперировать только internal preference. external - для старого формата метрик.
Preference можно менять внутри isis level:
set protocols isis level 1 preference 13          [internal]
set protocols isis level 1 external-preference 16 [external]


=Troubleshoting ISIS adjacencies=
= Таймеры =
Что проверить:
Соберем все цифры в кучу:
*физика между роутерами
*hello: DIS = 3 sec, non-DIS = 9 sec
*несовпадение level
*hold (dead) = DIS = 9sec, non-DIS = 27 sec
*mtu не должно быть меньше 1492
*retransmit LSP = 5 sec (роутер ждет LSP ACK от роутера, которому отправлен LSP)
*отсутствие ip конфига на интерфейсах
*DIS отправляет CSNP message каждые 10 sec в LAN сегмент.  [Complete Sequence Number PDU]
*отсутствие/либо неверный конфиг ISO-NET: ошибочно включен iso на loopback
*LSP Lifetime = 20 min (1200 sec) (maximum). Запускается обратный отсчет для чистки. Если lifetime = 0, то LSP удаляется.
*LSP refresh = ~317 sec
*ISIS database purge: R1 имеет LSP c lifetime = 0, удаляет из LSDB у себя и отправляет соседям эту LSP с lifetime = 0. Сосед получил. Сразу из LSDB не удалил, подождал 60 sec обновлений для LSP. Если обновление не пришло - удалил из LSDB.


на p2p линках не обязательно использовать адреса из одной сети, линк может быть unnumberd или иметь /32 сеть.
=Использование IPv6=
Если в ISIS используются разные топологии для IPv4 и IPv6, то следует указать в конфиге, чтобы для ipv6 строилась своя топология:
set protocols isis topologies ipv6-unicast


=Config=
=Конфигурация ISIS протокола=
Что обязательно:
Что обязательно:
*family iso на интерфейсах
*family iso на интерфейсах
*NET на одном из интерфейсов (обычно это lo)
*NET на одном из интерфейсов (обычно это lo). best practice: добавлять lo в protocols isis, даже если NET сконфигурирован не на нем. Конфиг Lo: isis работает на Lo в пассивном режиме: соседства с него не поднимает, но роутер передает о нём инфо, как о локальном линке. LSP генерируется автоматом и в L1 и в L2. (можно это действо запретить для одного из уровней).
*по умолчанию интерфейсы L1/L2, если интерфейс должен быть только в L2, нужно выключить L1. И наоборот.
*по умолчанию интерфейсы работают как L1/L2, если интерфейс должен быть только в L2, нужно выключить L1. И наоборот. Также можно глобально отключить работу одного из уровней <set protocols isis level 1 disable>.


Побочное:
Побочное:
Строка 517: Строка 684:
  set protocols isis interface ge-0/0/0.10 level 1 metric 50
  set protocols isis interface ge-0/0/0.10 level 1 metric 50
  set protocols isis interface ge-0/0/0.10 level 2 metric 20
  set protocols isis interface ge-0/0/0.10 level 2 metric 20
*reference bandwidth: автоматический расчет cost. cost = reference bandwidth / bandwidth. При этом на всем роутере для разных линков остается одинаковый коэфициент. Говорят в больших сетях помогает админам, вместо ручного метода.
*reference bandwidth: автоматический расчет cost. cost = reference bandwidth / bandwidth. При этом на всём роутере для разных линков остаётся одинаковый коэффициент. Говорят, в больших сетях помогает инженерам, вместо ручного метода.
  set protocols isis reference-bandwidth
  set protocols isis reference-bandwidth
*остальные фичи, которые описаны в главе ISIS...


L1/L2 router:
L1/L2 router:
  oban# show protocols  
  set protocols isis traceoptions file isis-log size 10m files 10 world-readable
isis {
set protocols isis traceoptions flag state detail
    traceoptions {
set protocols isis traceoptions flag error detail
        file isis-log size 10m files 10 world-readable;
set protocols isis export L2-to-L1  
        flag state detail;
set protocols isis export export-external
        flag error detail;}
set protocols isis interface ge-0/0/0.110 level 1 disable
    export [ L2-to-L1 export-external ];
set protocols isis interface ge-0/0/0.130 level 2 disable
    interface ge-0/0/0.110 {
set protocols isis interface lo0.0 passive
        level 1 disable;}
 
    interface ge-0/0/0.130 {
set interfaces ge-0/0/0.110 family iso
        level 2 disable;}
set interfaces ge-0/0/0.130 family iso
    interface lo0.0 {
set interfaces lo0.0 family inet address 192.168.13.4/32
        passive;}}
set interfaces lo0.0 family iso address 49.0001.1921.6801.3004.00


L1 router:
L1 router:
  isis {
  set protocols isis traceoptions file isis-log size 10m files 10 world-readable
    traceoptions {
set protocols isis traceoptions flag state detail
        file isis-log size 10m files 10 world-readable;
set protocols isis traceoptions flag error detail
        flag state detail;
set protocols isis export export-to-L2
        flag error detail;}
set protocols isis level 2 disable
    export export-to-L2;
set protocols isis interface ge-0/0/0.130
    level 2 disable;
set protocols isis interface lo0.0 passive
    interface ge-0/0/0.130;
 
    interface lo0.0 {
set interfaces ge-0/0/0.130 family iso
        passive;}}
set interfaces lo0 unit 0 family inet address 192.168.15.5/32
set interfaces lo0 unit 0 family iso address 49.0002.1921.6801.5005.00
 
=Траблшутинг соседства ISIS=
Что проверить:
*физика между роутерами
*несовпадение level
*mtu не должно быть меньше 1492
*отсутствие ip конфига на интерфейсах
*отсутствие/либо неверный конфиг ISO-NET: ошибочно включен iso на loopback


=Monitoring=
на p2p линках не обязательно использовать адреса из одной сети, линк может быть unnumberd или иметь /32 сеть.
 
=Мониторинг ISIS=
  show isis interface            | L = 3 = L1 / L2 router
  show isis interface            | L = 3 = L1 / L2 router
  show isis adjacency
  show isis adjacency
Строка 554: Строка 733:
  show isis route
  show isis route
  show isis database extensive
  show isis database extensive
=Дополнительная информация=
*[[OSPF]]
*[[BGP]]

Текущая версия на 18:44, 15 июля 2021


Основы

Краткое содержание, в пересказе Brad Hedlund

Был разработан для работы с CLNP/CLNS. Потом добавили возможность работать с IP (добавили tlv) - dual IS-IS.

CLNS (Connectionless network service).

CLNP (Connectionless network protocol).

dual IS-IS поддерживают M, MX, T series. Чистый ISIS работает только на J, SRX series.

Основные термины:

  • ESs - end system = hosts.
  • ISs - intermediate systems = routers.
  • PDU - protocol data unit = packet.
  • Level 1 (L1) - маршрутизация внутри area.
  • Level 2 (L2)- маршрутизация между area и к другим AS.
  • L1/L2 - совмещают 1 и 2 level на разных интерфейсах.

В L1/L2 системах роутер помечает PDU в сторону Level1 attached bit'ом, который обозначает, что роутер присоединен к L2 и что его можно использовать для достижения префиксов, находящихся за L1 area.

Network entity title (NET)

Network entity title (NET) - обозначения роутеров. 49.0001.1921.6803.6001.00

49.0001 - area - число 1-13 байт.

1921.6803.6001 - SYSTEM ID - обычно это просто ip loopback.

00 - selector

NET - можно назначить на любой интерфейс, на lo назначают для удобства.

SYSTEM ID должен быть уникален в рамках AREA.

Отличия ISIS и OSPF

В чем одинаковы:

  • Поддерживают link-state database и находят кратчайший путь, используя алгоритм Дейкстры
  • Используют hello пакеты для поддержания соседства
  • Имеют функцию аутентификации
  • Выбирают designated router
  • Производят address summarization между area
  • Используют двухуровневую иерархию

Areas

В ISIS линки делят сеть на area, а не роутеры, как в ospf.

По аналогии с OSPF есть backbone area: в ISIS это кучка роутеров L2. L2 роутеры могут соединять разные area.

Ротуеры, которые не имеют соединений с другими area - L1.

В area, которая не backbone и имеет связь с другой area - будет находиться роутер, имеющий линки, смотрящие в разные area, поэтому он будет называться L1/L2 роутером (как ABR в OSPF).

И еще:

Два роутера с одинаковой AREA
Могут сформировать L1 adjacency
Могут сформировать L2 adjacency
Два роутера с разной AREA
Не могут сформировать L1 Adjacency
Сформируют L2 Adjacency

Multilevel operations

L2 network

Isis l2 network.jpg

При использовании L2 на всех роутерах будет сеть, аналогичная OSPF area 0. То есть все роутеры будут получать полные сведения о всей сети.

Тип LSP будет напрямую зависеть от Level соседства. Если установлено L1 соседство, то передаются LSP level1, если соседство L2, то и LSP будут L2.

L2 флудятся между всеми area.

L1 network

Isis l1 network.jpg

Между всеми роутерами установлено соседство L1 и между собой роутеры обмениваются только LSP L1. Также все роутеры имеют одинаковую LSDB.

Выход во внешнюю сеть в подобных сетях обеспечивается засчет предоставления 0/0 маршрута Attached роутером.

Пример вывода с роутера, имеющего только L1 соседство:

talisker> show isis database     
IS-IS level 1 link-state database: 
LSP ID                      Sequence Checksum Lifetime Attributes
talisker.00-00                   0xe   0x85d1      861 L1 L2 
macduff.00-00                    0xc   0xfc02      859 L1 L2 Attached
macduff.02-00                    0x5   0xa7cc      859 L1 L2

В таблице появляется маршрут (0/0 генерируется L1 роутером, а не анонсируется с L2):

talisker> show route protocol isis 
inet.0: 13 destinations, 13 routes (13 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
0.0.0.0/0          *[IS-IS/15] 00:08:07, metric 10
                   > to 192.168.86.14 via ge-0/0/0.70

Attached-bit можно отключить на L1 роутере следующим образом:

[edit protocols isis]
+   ignore-attached-bit;

L1/L2 network

Isis l1 l2 network.jpg

L1/L2 сеть работает как NSSA в OSPF.

На L1/L2 роутерах происходит "суммирование" маршрутов L1 и "суммированный" маршрут флудится внутри L2 area. (по факту суммирования не происходит, просто передаются префиксы L1 в L2. Про суммирование/аггрегирование будет ниже). Почему это везде называется суммирование - не ясно.

Внутри каждой L1 area у всех L1 роутеров содержится одинаковая LSDB.

L2 маршруты не передаются в L1.

External L1 по дефолту не передаются в L2, можно разрешить с помощью policy.

L1 роутеры изолированы от изменений топологии в других area.

  1. L1 роутеры используют attached-bit, который генерируется L1/L2 роутером. Default route генерируется на L1 роутере в сторону L1/L2 роутера (который подсунул attached-bit).
  2. L1 роутеры используют кратчайший путь (по метрике) к attached роутеру.

При разделении роутеров на разные уровни повышается мастабируемость, т.к.:

  1. L1 изолированы от общей топологии сети, вне своей area.
  2. Суммирование L1 маршрутов позволяет L2 роутерам производить SPF не всей сети, а исключая L1.

Действия внутри multilevel networks

  • L1 internal в L2 уходит без ограничений.
  • L1 external в L2 уходит только через export-policy.
  • L2 в L1 по умолчанию не уходит, только через export-policy.

L1 роутеры имеют только локальную маршрутную информацию, внутри своей area. Чтобы достичь назначения вне своей area, L1 роутеры используют default route.

В L1 PDU можно впихнуть и external routes (потребуется export policy). Но по умолчанию такие маршруты не будут передаваться L2.

Использование wide metrics убирает обозначение internal/external routes. Все становятся просто internal => все ext-L1 перетекают L2.

L2 PDU attached роутеров передают внутренние L1 маршруты своим L2 соседям в других area. L2-r не передает от своих L2-r соседей никаких маршрутов в сторону L1, поэтому L1 роутеры и нуждаются в default route.

Можно отключить функцию генерирования default-route на L1 роутрах:

set protocols isis ignore-attached-bit

БОЛЬШОЕ НО: если у L1/L2 роутера есть соседство L2 в ДРУГОЙ area, то он будет вставлять attcahed-bit. Если такого соседства нет, то ему и не за чем добавлять attached к L1 link-state PDU.

Использование ignore-attached-bit. Когда применяется:

  • Иногда админу требуется, чтобы L2 routes просочились к L1 => L1 больше не нуждается в default-route. Бывает, что появились криво сгенерированные (неподходящие) L1 LSP, L2 роутер будет их упаковывать в L2 LSP, чтобы передать своим L2 соседям. При этом сами L1 LSP, как таковые, флудиться не будут.
  • Если сгенерированный def route с next-hop в сторону attached роутера не является оптимальным, то его можно просто отключить.

Leaking routes

Настраивается на L1/L2 роутере:

set policy-options policy-statement route-leak term L2-to-L1 from protocol isis
set policy-options policy-statement route-leak term L2-to-L1 from level 2
set policy-options policy-statement route-leak term L2-to-L1 from route-filter 192.168.16.0/20 orlonger
set policy-options policy-statement route-leak term L2-to-L1 to level 1
set policy-options policy-statement route-leak term L2-to-L1 then accept

При настройке подобного policy в 2 стороны (L2-to-L1, L1-to-L2), вполне себе может образоваться петля. Чтобы ее избежать, в LSP передается up/down bit.

На границе L2-to-L1 up/down bit = down, чтобы он точно не утек обратно/ниже из L1.

- up = можно передавать маршрут.
- down = уже есть утечка этого маршрута из другого level, поэтому его передача запрещена.

ISIS соседство

IIH = ISIS Hello packet. Используются для установления соседства.

Hold timer тоже передается в IIH.

  • для non-DIS: hello = 9 sec, hold = 3*9 = 27 sec.
  • для DIS: hello = 3sec, hold = 3*3 sec = 9 sec

Что проверяется при установление соседства:

  • MTU checking = TLV 8. ISIS max mtg = 1492 bytes. Поэтому линка должен быть с mtu никак не меньше!
  • The subnet checking = TLV 132. На p2p линке должны быть адреса из одной подсети.
  • Protocol checking = TLV 129. CLNP ; IPv4 ; IPv6 … Тоже должны совпадать.
  • Area checking = TLV 1. Area num используется только для L1 роутеров. Должна совпадать.

Состояния соседства:

Isis-adjacency.png

  • New - момент загрузки или при настройке начальной конфигурации IS-IS.
  • One-Way - после Hello PDU. Роутер ждет Hello PDU пакет, содержащий свой адрес в качестве соседа.
  • Initializing - Роутер получил Hello PDU со своим локальным адресом в качестве соседа.
  • Up - соседство установлено, LSDB синхронизированы.
  • Down - неверная area, истек таймаут или ошибка аутентификации.
  • Reject - состояние маршрутизатора после сбоя проверки подлинности. IS-IS маршрутизатор будет постоянно менять свое состояние между этим и состоянием Down.

Для более быстрого распознавания потери соседа настраивается BFD. Например, для времени детектирования менее 450 мс

set groups isis protocols isis interface <ge-*> bfd-liveness-detection minimum-interval 150
set groups isis protocols isis interface <ge-*> bfd-liveness-detection multiplier 3

Cуммирование маршрутов (Summarization)

На L1/L2 роутерах настраивается суммирование/агрегирование маршрутов. Суммируются external L1 routes + L2 routes от других ISIS area (+ можно просуммировать internal L1 routes (хотя они итак по дефолту передаются L2)).

Пример, на роутере L1 есть локальные маршруты, их нужно агрегировать в 1 большой маршрут и переслать в сторону L2. Агрегирование и перенаправление в L2 будем делать на L1/L2 роутере.

Настраиваем policy:

set routing-options aggregate route 172.16.20.0/22
set policy-options policy-statement term on-the-L1L2 from protocol aggregate
set policy-options policy-statement term on-the-L1L2 from route-filter 172.16.20.0/22 exact
set policy-options policy-statement term on-the-L1L2 to level 2
set policy-options policy-statement term on-the-L1L2 then accept
set protocols isis level 1 export on-the-L1L2

Можно применять несколько policy. В таком случае они будут обрабатываться слева направо. Пока нужный префикс не поппадет под условие с последующим терминирующим действием (accept, reject).

set routing-options aggregate route 10.0.4.0/22
set policy-options policy-statement internal-L1-summary term local-summary from protocols aggregate
set policy-options policy-statement internal-L1-summary term local-summary from route-filter 10.0.4.0/22 exact
set policy-options policy-statement internal-L1-summary term local-summary to level 2
set policy-options policy-statement internal-L1-summary term local-summary then accept
set policy-options policy-statement internal-L1-summary term suppress-specifics from route-filter 10.0.4.0/22 longer
set policy-options policy-statement internal-L1-summary term suppress-specifics to level 2
set policy-options policy-statement internal-L1-summary term suppress-specifics then reject
set protocols isis export internal-L1-summary

Алгоритм Дейкстры

Shortest-path-first (SPF) рассчитывается отдельно для разных уровней, т.к. LSDB тоже заводятся для разных уровней.

Существуют:

  • link-state database
  • candidate database
  • tree database.

LSDB - это данные на основании которых рассчитывается sortest-path-first. LSDB = router ID + neighbor ID + cost.

Движение по таблицам: lsdb -> candidate > tree.

Чтобы повысить сходимость, JunOS делает рассчет spf 3 раза, до того, как истечет hold-timer в 5 сек. Этот тамймер установлен железно в JunOS и не конфигурируется.

Таймер гарантирует, что во время изменения топологии пакеты будут маршрутизироваться (несмотря не неправильность маршрутной информации).

Таймер spf-delay - конфигурируемый таймер, немного откладывает процесс spf. По дефолту 200 мс. Может быть от 50мс, до 1000 мс. Рекомендуется устанавливать чуть больше, чем самое высокое время прохождения пакета в сети, чтобы до роутеров успевали доходить lsp.

SPF делается в 2 шага:

  1. строится DB, где указаны все IS сети.
  2. нанесение анонсируемых префиксов на tree, и рассчет кратчайших путей до них, на каждом роутере.

Partial route calculation

Если какой-то роутер начинает аннонсить новый префикс или перестает анонсить старый, то нет смысла делать полный пересчет SPF. В таких случаях производится пересчет только ip reachability (только для конкретных префиксов). Каждый роутер сам решает какой пересчет (IS reachability или IP reachability) ему делать, на основании полученного lsp.

Маршруты приходят на роутер в виде LSP, потом производится расчет SPF и только после этого заносятся в таблицу маршрутизации. Поэтому, чтобы зафильтровать определенные маршруты с помощью policy, требуется делать это на роутере, генерирующем маршруты, с помощью export-policy. Import-policy - не работает в случае с ISIS.

Метрики

При расчете SPF используется cost на исходящих интерфейсах.

На одном линке разными роутерами могут быть назначены разные метрики. В этом случает ISIS ругаться не будет, но SPF будет рассчитвывать кратчайший путь в разных направлениях с разными стоимостями. Это только может усложнить админам работу, но ISIS будет работать.

Также в отличие от ospf, в isis по умолчанию используются только static metrics. Нет метрик, рассчитанных от interface bandwidth rate.

Но это дефолтное поведение можно поправить.

set protocols isis reference-bandwidth 10g

Для протоколов: direct, BGP, aggregate, generate метрика = 10.

На passive интерфейсах metric = 0.

Для static, OSFP и RIP маршрутов метрика = стоимости маршрута протокола.

Wide metric

Обычно в TLV типов 2, 128, 130 поле под метрику = 6 бит. Напомним, что эти TLV используются, чтобы передавать инфо о своих линках и external routes. Т.е. максимальное значение метрики = 63 (0-63). Любое бОльшее значение метрики, настроенное на интерфейсе передается как 63.

Как я поняла, для рассчета spf это нифига не правильно и он добавляет несколько значений по 64, чтобы достичь нужного значения.

При внедрении функционала TE, появились 22 и 35 TLV, в них стали использовать 24-битные metrics (то есть значение метрики 16,777,215) и поле под total cost было расширено до 32 бит. При этом wide metrics не могут отличать internal маршруты от external.

По умолчанию в ISIS роутер передает и small и wide metrics. Так что значения метрик можно задавать в диапазоне: [0-16,777,215].

Можно настроить, чтобы роутер работал только с wide (рекомендуется), но стоит учесть, что тогда это автоматически уберет возможность различать internal/external routes. И в сети будут просачиваться external маршруты Level 1 в Level 2.

set protocols isis level 1 wide-metrics-only
set protocols isis level 2 wide-metrics-only

Формат LSP

LSP (link-state PDU ) описывает состояния соседства с другими роутерами в сети. Периодически флудится в рамках Level. Не пересекает границы уровня. Содержит TLV сегменты.

LSP флудится при изменениях в сети или по таймеру, чтобы содержать обновленную информацию.

PDU имеет поле remaining lifetime (2 байт), при создании PDU по дефолту таймер = 1200 sec = 20 min.

Роутер, который получил PDU, начинает отсчет до 0. До того как таймер истечет (~ 317 sec), исходная система (роутер) пересоздает PDU и флудит его.

Protocol ID Header length Version ID Length PDU Type Version Reserved Max area address PDU

ID Length (6 байт), Max area address (3 байт) - иногда = 0х00 - это показывает, использует значения по умолчанию и что LSP совмещен с более старыми версиями протокола.

PDU type - L1 (18) / L2 (20) PDU

Version (1) - ранее использовалось как расширение под protocol ID, но в сейчас не используется вообще и значение = 0х01 (реально версия протокола).

Version (2) - текущая версия протокола = 0х01.

Формат PDU headers and TLVs

PDU length Remaining lifetime LSP ID Sequence number Checksum ATT, OL, IS Type bits TLVs

LSP ID - 8 байт: 6 - router's system ID, 1 - circuit ID, 1 - LSP number. Придает уникальность внутри домена.

Circuit ID - 0x01 - for loopback или p2p interface, [0x02 - 0xff] - broadcast segment.

Sequence number = изначальный PDU имеет значение 0x01, каждый следующий фрагмент + 1.

Attached bit (ATT) - ставится в L1 PDU, ISIS роутером, кот имеет соседство с L2. L1 роутер после этого передает пакеты к этому attached роутеру, если нужно выйти за пределы area.

Overload (OL) - ставится, когда роутер хочет оповестить остальных, что он перегружен (скорее не хватает памяти) и не сможет надежно передать transit пакет. Сейчас крайне редко используется, так как роутеры мощные. При этом роутер будет продолжать генерировать LSP от себя, но транзитный трафик через него не должен проходить. Можно использовать, когда: 1. роутер должен быть выведен из сети на время работ. 2. роутер имеет большое кол-во bgp peers.

Можно включить или выключить overload bit на постоянной основе, а можно включить для него таймер (60-1800 сек). Таймер начинает тикать, когда ты закоммитишь конфиг + условие: должен работать rpd.

IS type - определяет уровень роутера (L1 (0x01)/ L1 + L2(0x03))

Hello PDU

Используется для поиска, установления и поддержания соседства.

Разные hello для LAN (broadcast) и p2p сетей.

  • P2P Hello для L1 и L2 имеют одинаковый формат [PDU17]
  • LAN (broadcast) Hello
  • L1 (01-80-c2-00-00-14) [PDU15]
  • L2 (01-80-c2-00-00-15) [PDU16]

Передаются с интервалом 3 sec = DIS (designated IS), 9 sec = non-DIS .

Суть:

  • Идентифицировать устр-во
  • Описать его возможности
  • Описать параметры интерфейса.

PDU filelds:

- circuit type: L1, L2, L1/L2 router.
- source ID: system ID of originated router.
- hold timer: сколько ждать hello от соседа.
- PDU length: в октетах (байтах).
- Priority: 0-127 для DIS роутеров.
- LAN ID: system ID или DIS + 1 октет.

Link-state PDU

Служат для:

  • Идентификации IS соседств
  • Описывает состояния своих соседств
  • Описывает достижимые через него адреса.

Для построения LSDB.

Разные LSP для L1 и L2.

Отправляются в результате изменений в сети, во время формирования соседства и в ответ на sequence number PDU.

Отсылаются

  1. периодически
  2. когда упал линк к соседу
  3. когда появляется новый сосед
  4. изменилась стоимость линка.

Sequence number PDUs

Partial sequence number PDU: Используется для:

  • Поддержания LSDB синзронизации
  • Подтверждения LSPs от соседей на p2p сетях
  • Запрашивает копию пропущенных LSP в broadcast сетях

Разный для L1 и L2 систем. Содержит спец информацию в заголовке для определенных LSP, кот подтверждены либо запрошены.

Complete sequence number PDU:

Используется для поддержания LSDB синхронизации. Отправляется периодически всеми IS на p2p сетях, только DIS на broadcast сетях.

Разные типы для L2 и L1 систем.

Содержат инфо заголовка со всех LSP.

TLV

Type/Length/Value

Каждый кусочек информации в ISIS определяется как объект с атрибутами:

  • Type: предопределенный код для типа информации, кот содержит объект.
  • Length: размер информации
  • Value: информация определенного типа

TLV это блоки для ISIS PDU, кот используются для обмена информации. Некоторые TLV могут быть использованы несколькими PDU, некоторые только конкретным PDU.

ISIS использует только известные TLV.

Известные IS-IS типы TLV
TLV Number Описание
1 Area address: area address, закодированный внутри ISIS NET на loopback.
2 IS neighbor metrics: соседи локального роутера + метрики для достижения этих соседей (0-64).
6 Neighbor LAN ID
8 Padding
9 LSP entries
10 Authentication: содержит тип аутентификации и пароль.
22 Extended IS reachability:
  • IS соседи (system ID + wide metrics) и роутеры, которые поддерживают TE.
  • sub-TLV описывают ограничения, заданные админом (определены также типы для каждого такого ограничения).
  • Также эти TLV заполняют TE database.
128 IP internal reachability, prefix, mask, metrics: ip и mask для каждого интерфейса маршрутизатора, кот поддерживает IPv4.
129 Protocols supported: какие L3 протоколы поддерживает локальный роутер (IPv4, IPv6, CLNS - для SRX, J-series).
130 IP external information: netw+mask всех маршрутов, присланных в ISIS, используя policy.
132 IP interface addresses: host ip address для всех интерфейсов роутера.
134 TE IP router ID: router-ID локального роутера.
135 Extended IP reachability: ip+mask всех интерфейсов, пожжерживающих TE.
137 dynamic hostname resolution: ASCII hostname локального роутера.
222 Multiple topologies IS reachability: соседи локального роутера + роутеры, поддерживающие несколько топологий ISIS.
229 Multiple topologies supported: какие топологии ISIS поддерживает роутер. Каждая топология определена 12-битным полем с ID.
232 IPv6 interface address: IPv6 интерфейсов.
235 Multiple topologies (rout instances) IP reachability: ip интерфейсов, кот поддерживает несколько топологий.
236 IPv6 reachability: инфо о линке, где работает IPv6 протокол.

Пример LSP на роутере

vSRX2> show isis database extensive 
IS-IS level 1 link-state database:

vSRX2.00-00 Sequence: 0x11f, Checksum: 0xb7a0, Lifetime: 1169 secs
   IS neighbor: vSRX3.02                      Metric:       10
     Two-way fragment: vSRX3.02-00, Two-way first fragment: vSRX3.02-00
   IP prefix: 2.2.2.2/32                      Metric:        0 Internal Up
   IP prefix: 10.0.0.0/30                     Metric:       10 Internal Up
   IP prefix: 10.0.0.4/30                     Metric:       10 Internal Up

  Header: LSP ID: vSRX2.00-00, Length: 218 bytes
    Allocated length: 1492 bytes, Router ID: 2.2.2.2
    Remaining lifetime: 1169 secs, Level: 1, Interface: 0
    Estimated free bytes: 1187, Actual free bytes: 1274
    Aging timer expires in: 1169 secs
    Protocols: IP, IPv6

  Packet: LSP ID: vSRX2.00-00, Length: 218 bytes, Lifetime : 1198 secs
    Checksum: 0xb7a0, Sequence: 0x11f, Attributes: 0xb <L1 L2 Attached>
    NLPID: 0x83, Fixed length: 27 bytes, Version: 1, Sysid length: 0 bytes
    Packet type: 18, Packet version: 1, Max area: 0

  TLVs:
    Area address: 49.1111 (3)
    Speaks: IP
    Speaks: IPV6
    IP router id: 2.2.2.2
    IP address: 2.2.2.2
    Hostname: vSRX2
    IS neighbor: vSRX3.02, Internal, Metric: default 10
    IS extended neighbor: vSRX3.02, Metric: default 10
      IP address: 10.0.0.5
      Local interface index: 74, Remote interface index: 0
      Current reservable bandwidth:
        Priority 0 : 980Mbps
        Priority 1 : 980Mbps
        Priority 2 : 980Mbps
        Priority 3 : 980Mbps
        Priority 4 : 980Mbps
        Priority 5 : 980Mbps
        Priority 6 : 980Mbps
        Priority 7 : 980Mbps
      Maximum reservable bandwidth: 1000Mbps
      Maximum bandwidth: 1000Mbps
      Administrative groups:  0 <none>
    IP prefix: 10.0.0.0/30, Internal, Metric: default 10, Up
    IP prefix: 10.0.0.4/30, Internal, Metric: default 10, Up
    IP prefix: 2.2.2.2/32, Internal, Metric: default 0, Up
    IP extended prefix: 10.0.0.0/30 metric 10 up
    IP extended prefix: 10.0.0.4/30 metric 10 up
    IP extended prefix: 2.2.2.2/32 metric 0 up
  No queued transmissions

Designated Intermedia System (DIS)

Не выбирается на p2p линках. Выборы производятся только между роутрерами, подключенными через один ethernet сегмент.

DIS отвечает за передачу link-state сообщений.

Как проверить, что на нашей сети не появился DIS:

show isis database
LSP ID                      Sequence Checksum Lifetime Attributes
sun-r1.00-00                    0x81   0x7a6e     1153 L1
sirius-r2.00-00                  0xd    0x292      616 L1
canopus-r3.00-00                0xa4   0x16cf      699 L1
arcturus-r4.00-00               0xc0   0xbe94      773 L1
... и т.д.

00-00 - первая пара 00 - это как раз pseudonode-id. Раз он равен 0, то DIS в данном сегменте нет. Если значение первой пары отличается (03-00, 05-00), значит выбран DIS.

Выборы DIS в бродкаст сети / multi-access сети

  1. приоритет: (0-127) для L1 и L2 назначаются разные, по умолчанию = 64. Передаются в hello PDU. Приоритет = 0 - роутер не участвует в выборах. На не бродкастных линках приоритет = 0.
  2. наибольший mac / SNPA.
  3. для L1 и L2 DIS выбирается отдельно.
set protocols isis interface ge-0/0/1.212 level 1 priority 105

ISIS сеть считается роутером, называемым pseudo-node: по факту просто создается некая сущность, типа виртуального роутрера, с которым все роутеры в бродкаст сети устанавливают соседство (в том числе и сам DIS).

  • Каждый роутер анонсирует линк к pseudo-node, включая DIS.
  • Каждый роутер формирует соседство с каждым роутером в бродкаст/мультиакцесс сети (в отличие от OSPF).

Поведение DIS

  • Каждый роутер флудит свои link-state PDU каждому соседу, а не только DIS. DIS таким образом использует систему из PDU (sequence number PDU).
  • DIS является представителем pseudo-node и пересылает pseudo-node всем присоединенным роутерам.
  • Не существует backup DIS. при падении существующего DIS просто производятся новые выборы, и новый флуд link-state PDU.

Каждый DIS по дефолту каждые 10 сек отправляет CSNP (complete sequence number PDU) в LAN интерфейс. Также эти CSNP позволяют другим роутерам знать, когда DIS становится недоступным. Можно настроить таймер csnp (csnp-interval). Обычно для broadcast линка, где подключены только 2 роутера, этот интервал делают не очень коротким, т.к. в этом нет необходимости.

set protocols isis interface ge-0/0/0.0 csnp-interval (1-65535)

Пример Isis database с DIS на сети (вывод с canopus-r3, DIS=arcturus-r4):

IS-IS level 1 link-state database:
sun-r1.00-00 Sequence: 0x81, Checksum: 0x7a6e, Lifetime: 120 secs
  IS neighbor: sirius-r2.00                  Metric:       10
  IS neighbor: procyon-r8.00                 Metric:       10
  IP prefix: 172.30.0.0/30                   Metric:       10 Internal Up
  IP prefix: 172.30.0.8/30                   Metric:       10 Internal Up
  IP prefix: 172.30.5.1/32                   Metric:        0 Internal Up
sirius-r2.00-00 Sequence: 0xf, Checksum: 0x8b15, Lifetime: 808 secs
  IS neighbor: sun-r1.00                     Metric:       10
  IS neighbor: rigel-r7.00                   Metric:       10
  IP prefix: 172.30.0.0/30                   Metric:       10 Internal Up
  IP prefix: 172.30.0.12/30                  Metric:       10 Internal Up
  IP prefix: 172.30.0.16/30                  Metric:       10 Internal Up
  IP prefix: 172.30.5.2/32                   Metric:        0 Internal Up
canopus-r3.00-00 Sequence: 0xa9, Checksum: 0x8a8c, Lifetime: 1155 secs
  IS neighbor: arcturus-r4.02                Metric:       10
  IP prefix: 172.30.0.12/30                  Metric:       10 Internal Up
  IP prefix: 172.30.0.20/30                  Metric:       10 Internal Up
  IP prefix: 172.30.0.24/30                  Metric:       10 Internal Up
  IP prefix: 172.30.1.0/24                   Metric:       10 Internal Up
  IP prefix: 172.30.2.0/24                   Metric:       10 Internal Up
  IP prefix: 172.30.5.3/32                   Metric:        0 Internal Up
a-centauri-r5.00-00 Sequence: 0x96, Checksum: 0x7374, Lifetime: 1161 secs
  IS neighbor: arcturus-r4.03                Metric:       10
  IP prefix: 172.30.0.28/30                  Metric:       10 Internal Up
  IP prefix: 172.30.0.32/30                  Metric:       10 Internal Up
  IP prefix: 172.30.5.5/32                   Metric:        0 Internal Up
vegan-r6.00-00 Sequence: 0x92, Checksum: 0x7aca, Lifetime: 813 secs
  IS neighbor: a-centauri-r5.00              Metric:       10
  IS neighbor: rigel-r7.00                   Metric:       10
  IP prefix: 172.30.0.24/30                  Metric:       10 Internal Up
  IP prefix: 172.30.0.32/30                  Metric:       10 Internal Up
  IP prefix: 172.30.0.40/30                  Metric:       10 Internal Up
  IP prefix: 172.30.5.6/32                   Metric:        0 Internal Up
rigel-r7.00-00 Sequence: 0x9, Checksum: 0x82f5, Lifetime: 275 secs
  IS neighbor: sirius-r2.00                  Metric:       10
  IS neighbor: vegan-r6.00                   Metric:       10
  IS neighbor: procyon-r8.00                 Metric:       10
  IP prefix: 172.30.0.16/30                  Metric:       10 Internal Up
  IP prefix: 172.30.0.40/30                  Metric:       10 Internal Up
  IP prefix: 172.30.0.44/30                  Metric:       10 Internal Up
  IP prefix: 172.30.5.7/32                   Metric:        0 Internal Up
procyon-r8.00-00 Sequence: 0x81, Checksum: 0xd174, Lifetime: 817 secs
  IS neighbor: sun-r1.00                     Metric:       10
  IS neighbor: rigel-r7.00                   Metric:       10
  IP prefix: 172.30.0.8/30                   Metric:       10 Internal Up
  IP prefix: 172.30.0.44/30                  Metric:       10 Internal Up
  IP prefix: 172.30.5.8/32                   Metric:        0 Internal Up
arcturus-r4.00-00 Sequence: 0x4, Checksum: 0xb668, Lifetime: 1157 secs
  IS neighbor: arcturus-r4.02                Metric:       10
  IS neighbor: arcturus-r4.03                Metric:       10
  IP prefix: 172.30.0.20/30                  Metric:       10 Internal Up
  IP prefix: 172.30.0.28/30                  Metric:       10 Internal Up
  IP prefix: 172.30.1.0/24                   Metric:       10 Internal Up
  IP prefix: 172.30.2.0/24                   Metric:       10 Internal Up
  IP prefix: 172.30.5.90/32                  Metric:        0 Internal Up
arcturus-r4.02-00 Sequence: 0x3, Checksum: 0xf44, Lifetime: 1158 secs
  IS neighbor: canopus-r3.00                 Metric:        0
  IS neighbor: arcturus-r4.00                Metric:        0
arcturus-r4.03-00 Sequence: 0x1, Checksum: 0x1495, Lifetime: 1157 secs
  IS neighbor: a-centauri-r5.00              Metric:        0
  IS neighbor: arcturus-r4.00                Metric:        0

Аутентификация

Можно настраивать в разных местах: L1, L2, на интерфейсах.

L1, L2 защищает hello PDU, LSP, порядковый номер pdu, отправленных в рамках определнного уровня.

Auth на интерфейсах шифрует только hello PDUs.

Типы:

  • MD5 (включает checksumm ко всем пакетам)
  • plain-text
  • none

Можно выборочно отключить authen для конкретных типов PDU. Опция позволяет как не защищать конкретные PDU, так и не проверять пришедшие конкретные PDU.

no authentification-check    | позволяет защищать исходящие пакеты, PDU, но при получении принимать все PDU, вне зависимости от того подходят ли они или нет.

Mesh-groups

Все роутеры флудят LSP всем своим соседям. В итоге один роутер может получать несколько одинаковых копий LSP.

Mesh-groups вводятся, чтобы в full-mesh сети сократить чрезмерный и избыточный флуд LSP.

Чтобы этого избежать, можно использовать mesh-groups. Члены группы не пересылают LSP внутри группы. Пересылаются только LSP, полученные извне группы.

set protocols isis interface ge-0/0/0.0 mesh-group 1
set protocols isis interface ge-0/0/1.0 mesh-group 2
set protocols isis interface ge-0/0/2.0 mesh-group blocked    | икслючает флуд любых LSP от себя, но принимает LSP от соседей.

Политики распространения маршрутов по умолчанию

Как и OSPF, ISIS - link-state протокол. Таблица маршрутизации заполняется префиксами, прошедшими SPF алгоритм.

LSP заполняются не из inet.0, а из того, что сконфигурировано внутри <protocols isis>. В ISIS можно ограничивать internal routes и external routes с помощью export policy.

(в ospf можно фильтровать таким образом только external routes).

Распространение маршрутов

Чтобы в ISIS передать маршруты, полученные из других протоколов, требуется export-policy.

Также export работает и для ISIS маршрутов.

В policy как действие можно не только делать accept, но и устанавливать метрику и добавлять теги. Теги полезны для выборочной редистрибьюции. На принимающей стороне можно с помощью тегов разруливать маршруты.

Работает и import-policy на ISIS маршруты.

Prefix limit (для external routes)

JunOS + ISIS = это достаточно надежная система, которая позволяет стабильно работать и с большим числом префиксов, но лучше этого не допускать.

Желательно выставлять все-таки какое-то ограничение по количеству внешних маршрутов (1-4,294,967,295). При достижении лимита ISIS перестает принимать external routes + обозначает себя (через LSP) как overload. В таких случаях только ручное вмешательство спасает ситуацию.

То есть настраивается на ASBR, вероятно:

set protocols isis level 2 prefix-export-limit 2000
или
set protocols isis level 1 prefix-export-limit 2000

Overload

Настраиваем, если нужно вывести ненадолго роутер из эксплуатации.

timeout = (60..1800 seconds).

Если на роутере настроили overload, то при запуске протокола (rpd), overload bit = установленному интервалу. НЕ с момента установления сосества, а именно со времени запуска протокола.

Механизм взаимодействия с другими роутерами отличается от OSPF.

  • другие роутеры игнорят PDU от роутера в расчете SPF и через роутер никакой трафик не пойдет.
  • если роутер является border router (L1/L2), то он перестает слать attached-bit к L1.

Стоимость маршрутов (Junos Preference)

  • L1 internal = 15
  • L2 internal = 18
  • L1 external = 160
  • L2 external = 165

т.к. best-practice - использовать wide-metrics, то в обычной жизни будем оперировать только internal preference. external - для старого формата метрик.

Preference можно менять внутри isis level:

set protocols isis level 1 preference 13          [internal]
set protocols isis level 1 external-preference 16 [external]

Таймеры

Соберем все цифры в кучу:

  • hello: DIS = 3 sec, non-DIS = 9 sec
  • hold (dead) = DIS = 9sec, non-DIS = 27 sec
  • retransmit LSP = 5 sec (роутер ждет LSP ACK от роутера, которому отправлен LSP)
  • DIS отправляет CSNP message каждые 10 sec в LAN сегмент. [Complete Sequence Number PDU]
  • LSP Lifetime = 20 min (1200 sec) (maximum). Запускается обратный отсчет для чистки. Если lifetime = 0, то LSP удаляется.
  • LSP refresh = ~317 sec
  • ISIS database purge: R1 имеет LSP c lifetime = 0, удаляет из LSDB у себя и отправляет соседям эту LSP с lifetime = 0. Сосед получил. Сразу из LSDB не удалил, подождал 60 sec обновлений для LSP. Если обновление не пришло - удалил из LSDB.

Использование IPv6

Если в ISIS используются разные топологии для IPv4 и IPv6, то следует указать в конфиге, чтобы для ipv6 строилась своя топология:

set protocols isis topologies ipv6-unicast

Конфигурация ISIS протокола

Что обязательно:

  • family iso на интерфейсах
  • NET на одном из интерфейсов (обычно это lo). best practice: добавлять lo в protocols isis, даже если NET сконфигурирован не на нем. Конфиг Lo: isis работает на Lo в пассивном режиме: соседства с него не поднимает, но роутер передает о нём инфо, как о локальном линке. LSP генерируется автоматом и в L1 и в L2. (можно это действо запретить для одного из уровней).
  • по умолчанию интерфейсы работают как L1/L2, если интерфейс должен быть только в L2, нужно выключить L1. И наоборот. Также можно глобально отключить работу одного из уровней <set protocols isis level 1 disable>.

Побочное:

  • metric/cost: по дефолту = 10 (даже для passive), для loopback = 0. Каждый level на интерфейсе может иметь свою метрику.
set protocols isis interface ge-0/0/0.10 level 1 metric 50
set protocols isis interface ge-0/0/0.10 level 2 metric 20
  • reference bandwidth: автоматический расчет cost. cost = reference bandwidth / bandwidth. При этом на всём роутере для разных линков остаётся одинаковый коэффициент. Говорят, в больших сетях помогает инженерам, вместо ручного метода.
set protocols isis reference-bandwidth
  • остальные фичи, которые описаны в главе ISIS...

L1/L2 router:

set protocols isis traceoptions file isis-log size 10m files 10 world-readable
set protocols isis traceoptions flag state detail
set protocols isis traceoptions flag error detail
set protocols isis export L2-to-L1 
set protocols isis export export-external
set protocols isis interface ge-0/0/0.110 level 1 disable
set protocols isis interface ge-0/0/0.130 level 2 disable
set protocols isis interface lo0.0 passive
set interfaces ge-0/0/0.110 family iso
set interfaces ge-0/0/0.130 family iso
set interfaces lo0.0 family inet address 192.168.13.4/32
set interfaces lo0.0 family iso address 49.0001.1921.6801.3004.00

L1 router:

set protocols isis traceoptions file isis-log size 10m files 10 world-readable
set protocols isis traceoptions flag state detail
set protocols isis traceoptions flag error detail
set protocols isis export export-to-L2
set protocols isis level 2 disable
set protocols isis interface ge-0/0/0.130
set protocols isis interface lo0.0 passive
set interfaces ge-0/0/0.130 family iso
set interfaces lo0 unit 0 family inet address 192.168.15.5/32
set interfaces lo0 unit 0 family iso address 49.0002.1921.6801.5005.00

Траблшутинг соседства ISIS

Что проверить:

  • физика между роутерами
  • несовпадение level
  • mtu не должно быть меньше 1492
  • отсутствие ip конфига на интерфейсах
  • отсутствие/либо неверный конфиг ISO-NET: ошибочно включен iso на loopback

на p2p линках не обязательно использовать адреса из одной сети, линк может быть unnumberd или иметь /32 сеть.

Мониторинг ISIS

show isis interface            | L = 3 = L1 / L2 router
show isis adjacency
show isis spf log
show isis statistics
show isis route
show isis database extensive

Дополнительная информация