Главная » Компьютерные сети » Основы OSPF

Основы OSPF

Протокол динамической маршрутизации Open Shortest Path First (OSPF) является одним из самых лучших изобретений сети, широко используемым в качестве протокола внутреннего шлюза (IGP) для многих сетей. В этой серии статей вы сначала познакомитесь с основными понятиями OSPF и узнаете о различных типах сообщений и формировании соседей.

Обзор OSPF

Откуда же взялось это интересное название- OSPF? Это связано с тем, что он использует алгоритм Дейкстры, также известный как алгоритм первого кратчайшего пути (SPF). OSPF был разработан таким образом, что кратчайший путь по сети рассчитывается на основе стоимости маршрута. Это значение стоимости берется из значений пропускной способности пути. Поэтому OSPF осуществляет расчет стоимости маршрута на основе параметров link-cost, которые можно контролировать, манипулируя формулой расчета стоимости.

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

Интерфейс маршрутизатора, используемый для OSPF, будет объявлять его стоимость пересылая его соседям OSPF. Эта информация о префиксе и стоимости каскадируется через сеть, поскольку маршрутизаторы OSPF объявляют информацию, которую они получают от одного соседа OSPF ко всем другим соседним маршрутизаторам OSPF. Этот процесс заполнения информации о состоянии канала через сеть OSPF называется синхронизацией. На основе этой информации все маршрутизаторы с реализацией OSPF постоянно обновляют свои базы данных состояния канала, информацией о топологии сети и корректируют свои таблицы маршрутизации.

OSPF является иерархическим протоколом маршрутизации. Это потому, что сеть OSPF может быть разделена на области (area) маршрутизации для упрощения администрирования и оптимизации трафика и использования ресурсов. Мы идентифицируем области 32-разрядными числам. Мы можем обозначить их как в обычной десятичной системе счисления, так и в той же десятичной системе счисления, используемой для IPv4-адресов.

По умолчанию, область 0 (Area0) (или 0.0.0.0) представляет собой основную или магистральную область сети OSPF. Любые другие области, которые вы можете создать (область 10, область 20 и т. д.), должны быть подключены к основной области 0. Если ваши области не подключены, как описано выше, вы должны выполнить обходную процедуру, такую как виртуальная ссылка (Virtual Link (будет рассмотрена далее). Вы поддерживаете соединения между вашими областями с помощью маршрутизатора OSPF, известного как area border router (ABR). ABR поддерживает отдельные базы данных состояния канала для каждой области, которую он обслуживает, и поддерживает сводные маршруты для всех областей в сети.

Формирование соседства

Поскольку OSPF является сложным протоколом маршрутизации (в отличие от гораздо более простого протокола, такого как RIP), он использует различные состояния соседства в своей работе. Вы должны знать и понимать эти различные состояния. Знание этих состояний является важным при настройке, поддержке OSPF и устранению неполадок. Например, у вас может быть маршрутизатор, “застрявший” в одном из этих состояний, и эта информация может оказаться критически важной для устранения проблемы.

Важная информация, которую вы должны знать о каждом состоянии соседства:

Down -это первое (или начальное) состояние соседства OSPF. Это означает, что никакой информации (hellos) не было получено от соседа, но приветственные (hello) пакеты все еще могут быть отправлены.

Во время полностью смежного состояния соседства (Full состояния), если маршрутизатор не получает hello packet от соседа в течение времени Router Dead Interval или если настроенный вручную сосед удаляется из конфигурации, то состояние соседства изменяется с Full на Down. Помните, что время RouterDeadInterval по умолчанию для OSPF в 4 раза превышает HelloInterval.

Attempt — это состояние допустимо только для вручную настроенных соседей в среде без Non-BroadcastMultiaccess (NBMA). В этом состоянии маршрутизатор отправляет одноадресные hello пакеты каждый интервал опроса соседу, от которого hello не были получены в течение dead интервала.

Init — Это состояние указывает, что маршрутизатор получил hello пакет от своего соседа, но идентификатор (ID) принимающего маршрутизатора не был включен в приветственный (hello) пакет. Когда маршрутизатор получает приветственный пакет от соседа, он должен перечислить ID маршрутизатора отправителя в своем приветственном пакете в качестве подтверждения того, что он получил действительный приветственный пакет.

2-Way – Это состояние означает, что между двумя маршрутизаторами установлена двунаправленная связь. Двунаправленный означает, что каждый маршрутизатор видел приветственный пакет другого.

Это состояние достигается, когда маршрутизатор, принимающий приветственный пакет, видит свой собственный ID маршрутизатора в соседнем поле полученного приветственного пакета. В этом состоянии маршрутизатор решает, стоит устанавливать соседство с этим соседом. На broadcast media и non-broadcast multiaccess сетях маршрутизатор становится полным только с назначенным маршрутизатором (DR) и резервным назначенным маршрутизатором (BDR); он остается в состоянии 2-way со всеми другими соседями. В сетях типа Point-to-Point и Point-to-Multipoint маршрутизатор становится полностью смежным со всеми подключенными маршрутизаторами.

Примечание: в конце этого состояния выбираются DR и BDR для широковещательных и не широковещательных сетей с множественным доступом.

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

Exchange – В состоянии exchange маршрутизаторы OSPF обмениваются пакетами database descriptor (DBD). Database descriptor содержат только заголовки объявления состояния связи (LSA) и описывают содержимое всей базы данных состояния связи. Маршрутизаторы также отправляют пакеты запросов состояния соединения и пакеты обновления состояния соединения (которые содержат весь LSA) в этом состоянии. Содержимое полученного DBD сравнивается с информацией, содержащейся в базе данных состояния соединения маршрутизаторов, чтобы проверить, доступна ли новая или более текущая информация о состоянии соединения с соседом.

Loading – В этом состоянии происходит фактический обмен информацией о состоянии связи. На основе информации, предоставленной DBD, маршрутизаторы отправляют пакеты запросов состояния канала. Затем сосед предоставляет запрошенную информацию о состоянии канала в пакетах обновления состояния канала. Во время смежности, если маршрутизатор получает устаревший или отсутствующий LSA, он запрашивает этот LSA, отправляя пакет запроса состояния соединения. Все пакеты обновления состояния канала подтверждаются.

Full – В этом состоянии маршрутизаторы полностью взаимодействуют друг с другом. Все LSA маршрутизатора и сети обмениваются и базы данных маршрутизаторов полностью синхронизированы.

Помните, что Full состояние — это нормальное состояние для маршрутизатора OSPF. Если маршрутизатор застрял в другом состоянии, это указывает на то, что существуют проблемы с формированием соседства.

Хотя это гораздо более сложный IGP, чем что-то вроде RIP, но настройка довольно проста. На самом деле, в настоящее время существует два варианта настройки в командной строке. Вы можете настроить OSPF с помощью сетевой инструкции в процессе маршрутизации (как и другие протоколы маршрутизации) или настроить интерфейсы для запуска OSPF в режиме конфигурации интерфейса. Примеры 1 и 2 демонстрируют два подхода к конфигурации с использованием топологии, показанной на Рис.1.

Рисунок 1 Пример топологии OSPF


Пример 1: Настройка OSPF с помощью сетевых инструкций

ATL#confiqure terminal

ATL(config)#interface GiqabitEthernet0/0

ATL (configif)#ip address 10.12.12.1 255.255.255.0

ATL (configif)#duplex auto

ATL (configif)#speed auto

ATL (configif)#router ospf 1

ATL (config-router)#network 10.0.0.0 0.255.255.255 area 0

ATL2#confiqure terminal

ATL2 (config)#interface GiqabitEthernet0/0

ATL2 (configif)#ip address 10.12.12.2 255.255.255.0

ATL2 (configif)#duplex auto1

ATL2 (configif)#speed auto

ATL2 (configif)#interface GiqabitEthernet0/1

ATL2 (configif)#ip address 10.23.23.2 255.255.255.0

ATL2 (configif)#duplex auto

ATL2 (configif)#speed auto

ATL2 (configif)#router ospf 1

ATL2 (configrouter)#network 10.12.12.2 0.0.0.0 area 0

ATL2 (config-router)#network 10.23.23.2 0.0.0.0 area 1

ORL#confiqure terminal

ORL(config)#interface GiqabitEthernet0/0

ORL(configif)#ip address 10.23.23.3 255.255.255.0

ORL (configif)#duplex auto

ORL (configif)#speed auto

ORL (configif)#router ospf 1

ORL (configrouter)#network 10.0.0.0 0.255.255.255 area 1

Обратите внимание, что в этих настройках мы идентифицируем локальный процесс OSPF на маршрутизаторе, используя локально значимое значение ID процесса. В этом примере ID процесса 1 выбирается для всех маршрутизаторов. Также обратите внимание, что оператор network должен содержать обратную маску, которая указывает значимые биты в сетевом значении. На маршрутизаторе границы области ATL2 32-разрядная обратная маска 0.0.0.0 используется для размещения одного интерфейса в области 0, а другого-в области 1.

Пример 2: Настройка OSPF с помощью команд уровня интерфейса

ATL#confiqure terminal

ATL (config)#interface GiqabitEthernet0/0

ATL (config-if)#ip address 10.12.12.1 255.255.255.0

ATL (config-if)#ip ospf 1 area 0

ATL (config-if)#duplex auto

ATL (config-if)#speed auto

ATL2#confiqure terminal

ATL2 (config)#interface GigabitEthernet0/0

ATL2 (config-if)#ip address 10.12.12.2 255.255.255.0

ATL2 (config-if)#ip ospf 1 area 0

ATL2 (config-if)#duplex auto

ATL2 (config-if)#speed auto

ATL2 (config-if)#interface GiqabitEthernet0/1

ATL2 (config-if)#ip address 10.23.23.2 255.255.255.0

ATL2 (config-if)#ip ospf 1 area 1

ATL2 (config-if)#duplex auto

ATL2 (config-if)#speed auto

ORL#confiqure terminal

ORL (config)#interface GiqabitEthernet0/0

ORL (config-if)#ip address 10.23.23.3 255.255.255.0

ORL (config-if)#ip ospf 1 area 1

ORL (config-if)#duplex auto

ORL (config-if)#speed auto

Пример 3: Проверка работы OSPF

Обратите внимание на мощь команды show ip ospf neighbor, чтобы проверить отношения соседства и их состояние. На ORL мы просматриваем таблицу маршрутизации, чтобы убедиться, что мы изучаем маршрут OSPF Inter Area 10.12.12.0/24.

Это заключительная часть статьи №1 нашей серии статей об OSPF. Далее во 2 части  мы рассмотрим процесс Designated Router и Backup Designated Router.