отмена
Отображаются результаты для 
Вместо этого искать 
Вы имели в виду: 

IS-IS для тех, кто понимает OSPF (Часть 1)

New Member
   Все, кто имеет представление о динамической маршрутизации трафика в IP сетях, знают, что по принципу работы все существующие протоколы маршрутизации можно разделить на две группы: distance-vector и link state. Особо дотошные люди могут отметить, что есть еще одна группа: path-vector, которой принадлежит протокол BGP, но разговор будет не о нем, поэтому на эту группу мы закроем глаза. В этой статье мы сосредоточим свое внимание на link state протоколах маршрутизации. Как многие из вас знают, таких протоколов всего два: OSPF и IS-IS. Так сложилось, что протокол OSPF является более популярным представителем своего класса. Как иногда говорят, этот протокол лучше изучен, поскольку его реализации встречаются в корпоративных и провайдерских сетях чаще, чем реализации IS-IS, а также потому, что по OSPF написана масса литературы, и логика работы протокола рассматривается во многих официальных тренингах. Когда же речь заходит о втором характерном представителе link state протоколов, многие инженеры и дизайнеры сетей впадают в уныние: действительно, реализаций IS-IS меньше, и неофициально считается, что этот протокол больше подходит для провайдерских инфраструктур, нежели для корпоративных сетей. Однако сказать, что этот протокол не заслуживает внимания, категорически нельзя.
   В этой статье мы рассмотрим принципы работы протокола IS-IS, сравнивая его (там, где возможно) с протоколом OSPF. В целом можно сказать, что эти протоколы настолько же разные, насколько и одинаковые, и их сравнение позволит разобраться с особенностями каждого. Поехали.

 

Основные принципы работы.
   Для начала вспомним, в чем же состоит принцип работы link state протоколов маршрутизации. Здесь все достаточно просто: маршрутизаторы обмениваются друг с другом информацией о топологии. Каждый маршрутизатор сообщает соседним устройствам о том кусочке топологии, о котором знает сам. Соседние маршрутизаторы передают эту информацию другим соседям, и так далее по цепочке возникает распространение данных о топологии между устройствами одного домена маршрутизации. Этот процесс в технической литературе и документации называется flooding (не путать с flooding в широковещательном домене коммутаторами 2 уровня). Благодаря этому самому флудингу каждый маршрутизатор в сети способен понять, как выглядит топология сети: какие другие устройства в топологии есть, как они связаны друг с другом, какие сети к ним подключены. Эта информация хранится на каждом маршрутизаторе в базе данных топологий. В OSPF она называется LSDB, в IS-IS она отдельного названия не имеет, и мы так и будем ее называть "базой данных топологии" (кстати, тоже часто называют LSDB).
   Далее, собрав информацию о топологии, каждый маршрутизатор локально (что немаловажно) запускает некий алгоритм, по которому он просчитывает эту самую базу данных топологии. В результате просчета у маршрутизатора появляется представление о кратчайшем пути от себя самого до каждого другого маршрутизатора (и как следствие до сетей, подключенных к нему). Собственно именно этот результат и попадает в виде записей в таблицу маршрутизации. Сам алгоритм известен нам под названием SPF (Shortest Path First). Общий принцип его работы известен, но не представляет для нас интереса. Важно то, что одним и тем же алгоритмом пользуются оба протокола. То есть просчет данных о топологии с целью определения кратчайших маршрутов и в OSPF, и в IS-IS происходит одинаково. Базы данных топологий этих протоколов имеют разную структуру, но просчет этих баз производится одним и тем же алгоритмом.

Дизайн домена маршрутизации и базовые идентификаторы.
   Те, кто используют протокол OSPF в своих сетях, знают, что OSPF - протокол иерархический. Это значит, что весь домен маршрутизации OSPF можно разделить на отдельные области (area). При этом делать это произвольно нельзя: если топология действительно разбивается на области, в обязательном порядке должна присутствовать область с номером 0 (так называемая backbone area), а все другие области подключаются к нулевой с помощью маршрутизаторов ABR (Area Border Router). В нулевую область обычно выделяют ядро сети (отсюда и название backbone area), в остальные area попадает периферия. При этом граница между областями проходит по маршрутизатору, то есть фактически области принадлежит не маршрутизатор целиком, а какой-нибудь его интерфейс. Например, вот такой дизайн должен быть хорошо знаком любому, кто знает OSPF:


   IS-IS тоже является протоколом иерархическим, с возможностью разделения топологии на area. Но принципы этого разделения совершенно другие. Во-первых, маршрутизаторы IS-IS домена целиком и полностью принадлежат какой-то одной area, то есть граница между областями проходит по линку, а не по маршрутизатору. Во-вторых, в IS-IS нет никакого специального номера area (как area 0 в OSPF). То есть области, на которые разбита топология, могут носить совершенно произвольные номера. Например,


на рисунке выше маршрутизаторы R1, R2 и R3 принадлежат area 49.0123, R4, R5 и R6 - area 49.0589, a R7, R8 и R9 - area 49.4578. Здесь вероятно, стоит пояснить, откуда берутся такие странные номера областей. Area ID является частью так называемого NET (Network Entity Title) адреса, который назначается каждому маршрутизатору после запуска IS-IS процесса. Этот адрес является разновидностью адресов, которые использовались различными протоколами ISO (скажем так) доIPшной эпохи. Сам NET имеет следующий формат:



    • Первая часть NET идентификатора называется AFI (Authority and Format Identifier) и вообще является частью номера области, хотя постоянно изображается отдельно. Подавляющее большинство реализаций IS-IS на маршрутизаторах имеют это поле, равным 49. Дело тут в истории этих самых NET адресов: адреса, у которых AFI был равен 49, относились к классу локальных.

    • Далее NET содержит номер области (Area ID), которой принадлежит маршрутизатор. Это поле переменной длины.

    • За ним следует 6-байтный System ID. Это идентификатор маршрутизатора. У каждого маршрутизатора в топологии он должен быть уникальным, поскольку именно по System ID маршрутизаторы "узнают" друг друга при осознании топологии. В OSPF аналогом System ID является Router ID (однако он имеет другой формат).

    • Последним идет однобайтное поле Selector. Значение Selector, равное 00, обозначало в NET адресах, что адрес принадлежит самому маршрутизатору. Именно поэтому в большинстве конфигураций Selector ставят равным 00.

   При записи этого NET идентификатора используют шестнадцатиричную систему счисления, отдельные части адреса (указанные выше) разделяются точками. Помимо этого точками разделяются 2-байтовые последовательности внутри Area ID и System ID. Например, такой NET адрес:
49.0001.0a45.16df.8700.00
содержит следующие поля:

  1. AFI - 49
  2. Area ID - 0001
  3. System ID - 0a4516df8700
  4. Selector - 00

 На самом деле, как уже упоминалось, AFI маршрутизаторами воспринимается как часть area ID, поэтому в практической реализации при использовании указанного выше NET адреса, можно сказать, что маршрутизатор принадлежит area 49.0001.
   Так вот, возвращаясь к иерархичности протокола. Домен маршрутизации IS-IS можно разделить на области, но в основе иерархичности IS-IS лежат не сами области, а уровни взаимодействия маршрутизаторов друг с другом. Дело в том, что пара IS-IS маршрутизаторов, подключенных друг к другу прямым линком (или через L2 домен), могут сформировать два вида (или два уровня) взаимодействий - Level 1 и Level 2 (L1 и L2 соответственно). Правила для организации соседств разных уровней следующие:

  1. Соседство уровня 1 (L1) формируется только между маршрутизаторами одной area.
  2. Соседство уровня 2 (L2) может быть сформировано как между маршрутизаторами одной area, так и между маршрутизаторами разных area.

   Кстати, такие два уровня взаимодействий позволяют выделить три типа маршрутизаторов в IS-IS домене:
  1. Маршрутизаторы L1 - это те устройства, у которых все взаимодействия с другими маршрутизаторами происходят на 1 уровне.
  2. Маршрутизаторы L2 - это те устройства, у которых все соседства организованы на 2 уровне.
  3. Маршрутизаторы L1/L2 - это устройства, поддерживающие взаимодействия обоих уровней.

   Если в качестве примера взять IS-IS топологию из 9 маршрутизаторов, которую мы показывали выше, то с точки зрения уровней взаимодействия можно построить IS-IS домен двумя способами:

В этом случае все маршрутизаторы выполняют роль L2 устройств, а L2 взаимодействия показаны красным. Либо


   Тут R1, R2, R8 и R9 - это L1 устройства; R3 и R7 - L1/L2; все остальные - L2. Соседства второго уровня показаны красным, первого - зеленым.
Забегая немного вперед, скажу, что эти два варианта будут отличаться объемом топологических данных, которые маршрутизаторы хранят: в первом случае каждый из 9 маршрутизаторов будет владеть полным знанием о всей топологии из 9 устройств; во втором маршрутизаторы area 49.0123 ничего не будут знать о топологии area 49.4578.
   Но вот чего нельзя будет в этой топологии сделать (с точки зрения дизайна протокола), так это следующего:

   Причиной, почему этот дизайн является ошибочным, является требование IS-IS, заключающееся в том, что всё множество L2 взаимодействий между маршрутизаторами должно быть непрерывным. Равно как, например, в OSPF нельзя разрывать area 0 на несколько частей (виртуальные линки не в счет). Собственно тут мы подходим к ответу на один из первых вопросов, который задают те, кто пытается понять IS-IS, зная, как работает OSPF: что в IS-IS является аналогом area 0 в OSPF? Этим аналогом является не какая-то конкретная area с каким-то номером, а все множество соседств второго уровня между отдельными маршрутизаторами. Именно это множество L2 соседств формирует backbone или ядро сети, к которому подключаются остальные части топологии (или остальные area), внутри которых могут быть сформированы соседства уровня 1. В этом контексте маршрутизаторы L1/L2 можно назвать примерным аналогом ABR в OSPF. Примерным потому, что они фактически не находятся на границе между областями (граница все-таки проходит по линку), но тем не менее аналогом, потому что они являются ключевыми устройствами для органичения распространения данных о топологии и, как следствие, инструментом масштабирования доменов маршрутизации IS-IS.

Базовая конфигурация протокола.
  Продолжая наш пример, покажем, как настроить иерархических домен маршрутизации IS-IS. Сделать это совершенно несложно. Для начала стоит отметить, что запуск протокола производится командой router isis [<name>]. Имя IS-IS процесса в IOS не является обязательным, но при запуске протокола надо помнить, задавали вы это имя или нет. От этого будет зависеть синтаксис команды для запуска протокола на интерфейсе. После запуска процесса маршрутизации необходимо в обязательном порядке задать NET идентификатора на каждом маршрутизаторе.
Например, для R1:
router isis 123
net 49.0123.0100.0100.1001.00

Для R4:
router isis
net 49.0589.0100.0100.1004.00

   В примере выше на разных маршрутизаторах протокол IS-IS запущен по-разному (на одном с именем, на другом - без). Это не является ошибкой и не представляет проблему с точки зрения работы протокола.
При этом после запуска маршрутизатор автоматически полагает, что он будет устанавливать соседства обоих уровней. Если вы уверены, что вы настраиваете исключительно L1 или L2 устройство, то командой is-type можно этот факт маршрутизатору обозначить. Например, для R1:
router isis 123
net 49.0123.0100.0100.1001.00
is-type level-1

Для R4:
router isis
net 49.0589.0100.0100.1004.00
is-type level-2

   После запуска протокола глобально, необходимо запустить его на интерфейсе. Например, для R1:
interface FastEthernet0/0
ip address 10.1.2.1 255.255.255.0
ip router isis 123

Для R4:
interface FastEthernet0/0
ip address 10.3.4.4 255.255.255.0
ip router isis

   Вот здесь кроется некая хитрость, благодаря которой часто допускается ошибка в такой простой конфигурации. Если процесс IS-IS был глобально запущен с использованием какого-то имени процесса (как 123 на R1), то и на интерфейсах протокол должен запускаться с указанием этого имени. Если же IS-IS процесс запущен без имени, то команда для старта протокола на интерфейсе будет выглядеть как ip router isis.
   При этом после запуска протокола на интерфейсе маршрутизатор делает допущение, что через этот интерфейс необходимо сформировать соседства обоих уровней (если ранее не использовалась команда is-type, однозначно указывающая уровень взаимодействия глобально на весь маршрутизатор). То есть маршрутизатор может на одном и том же интерфейсе сформировать и соседство уровня 1, и L2 соседство. С точки зрения протокола, это вполне себе штатное поведение. То есть, если тип маршрутизатора не был задан глобально командой is-type, то одна и та же пара маршрутизаторов в результате такой простой конфигурации сформирует между собой соседства обоих уровней. Например, для R8 и R9:
R8#sh run | sec router isis
router isis 456
net 49.4578.0100.0100.1008.00
R8#sh run int f0/1
interface FastEthernet0/1
ip address 10.8.9.8 255.255.255.0
ip router isis 456
end

R9#sh run | sec router isis
router isis
net 49.4578.0100.0100.1009.00
R9#sh run int f0/0
interface FastEthernet0/0
ip address 10.8.9.9 255.255.255.0
ip router isis
end

  Как видно выше, в результате простейшей конфигурации протокола между маршрутизаторами R8 и R9 сформировалось одновременно 2 соседства разных уровней. Для того, чтобы управлять уровнями соседств на per-interface основе можно использовать комаду isis circuit-type:

R8#sh run int f0/1
interface FastEthernet0/1
ip address 10.8.9.8 255.255.255.0
ip router isis 456
isis circuit-type level-1
end

После этого видим, что соседство второго уровня между R8 и R9 пропало:


  Таким образом, манипулируя настройками уровней либо глобально с помощью команды is-type, либо на каждом интерфейсе с помощью isis circuit-type вы можете построить правильный с точки зрения иерархии уровней домен маршрутизации IS-IS.
  В следующей статье мы посмотрим, как выглядит процесс формирования соседств в IS-IS, и чем он отличается от соседств в OSPF. Stay tuned.
---
Андрей Петрунин,
учебный центр Fast Lane
2 Комментарии
New Member
Андрей здравствуйте, видимо у вас ошибка  в листинге конфигурации: оба интерфейса имеют один ip-адрес 10.8.9.9.
R8#sh run | sec router isis
router isis 456
net 49.4578.0100.0100.1008.00
R8#sh run int f0/1
interface FastEthernet0/1
ip address 10.8.9.9 255.255.255.0
ip router isis 456
end

R9#sh run | sec router isis
router isis
net 49.4578.0100.0100.1009.00
R9#sh run int f0/0
interface FastEthernet0/0
ip address 10.8.9.9 255.255.255.0
ip router isis
end
New Member

Спасибо, исправил.

2256
Просмотры
15
Полезный материал
2
Комментарии