Курс по сетевым технологиям
A A A

 

Проблемы в работе протокола  OSPF в основном возникают при его неправильном конфигурировании. Ниже приведены основные причины.

 

Неправильно настроена зона

В случае, когда на одном из роутеров по ошибке указали другую зону, состояние смежности не будет установлено.  

Как узнать в чем кроется проблема?  

Обычно после правильной настройки появляется следующее сообщение, указывающее на установление смежности и полную синхронизацию:

Состояние полной синхронизации роутеров OSPF 

 

Если его нет, то это явный признак того, что имеются проблемы на уровне L2 и L3.  

Допустим на L2 все хорошо, как быть дальше?  

Посмотрим на рисунок. На R1 установили по ошибке зону 1 вместо зоны 2:

Сеть OSPF

 

Для начала можно проверить настройки протокола :

Router# show ip protocols

 

 

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

Другой способ заключается в отладчике событий OSPF:

Router# debug ip ospf events

 

Вывод отладчика

 

 

Неправильно настроены таймеры 

Иногда для улучшения скорости сходимости протокола уменьшают интервал таймеров Hello. Однако значения всех таймеров должны быть одинаковы для соседних роутеров, иначе отношения смежности не будут установлены. Следует учитывать тот факт, что изменение Hello таймера автоматически изменяет и таймеры Dead и Wait.  

Как себя поведут маршрутизаторы в данном случае? 

Также, как и с не совпадающим номером зоны - Hello пакеты будут игнорироваться. 

Чтобы проверить таймеры выполни:

Router#  show ip ospf interface

 

Значения таймеров OSPF  

 

А вот как будет выглядеть лог отладчика:

Router# debug ip ospf events

 

Вывод отладчика, указывающий несовпадения таймеров

 

Что будет, если изменить только значение Dead?  

Значение Hello останется прежним, а Wait - станет равным Dead.

 

 

Одинаковое значение Router ID 

В OSPF очень важно иметь уникальный Router ID и дубликаты не допустимы. В качестве ID выбирается IP адрес работающего интерфейса или Loopback, если специально не выполнена команда:

Router(config-router)#router-id значение

 

Если по ошибке сконфигурирован Loopback с одинаковым адресом на соседних роутерах, то будет выведен лог, указывающий на дубликат

Лог, указывающий наличие дубликата 

 

Чтобы увидеть ID выполни:

Router# show ip protocol

 

ID маршрутизатора

 

 

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

Как мы уже знаем из уроков 34 и 35 неверно настроенная аутентификация может стать проблемой при установлении состояния “соседства”. В RIP и EIGRP настройка очень похожа, однако в OSPF имеется небольшой нюанс, так как она может быть настроена локально на интерфейсе либо глобально для всего маршрутизатора. 

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

Router# show ip ospf номер_процесса

 

 

Router# show running-config

 

 

 

MTU 

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

 

Рассмотрим простую сеть:

 

 

На R4 используется стандартное значение MTU = 1500, а на R5 - так называемые Jumbo кадры с MTU = 3000. 

Посмотрим на состояние смежности: 

 

Оба маршрутизатора “застряли” в состоянии Exstart. Как мы знаем на этом этапе роутеры выбирают DR/BDR и начинают обмениваются пакетами DBD, которые содержат топологические данные. Именно пакеты DBD чувствительны к размеру MTU и если соседи имеют разные значения, то сторона с меньшим MTU будет игнорировать пакеты с более высоким значением.

Запускаем отладчик, чтобы в этом убедиться:

Router# debug ip ospf events

 

Лог отладчика, указывающий на несовпадение MTU

 

Решить данную проблему можно 2-мя способами: 

  • Подкорректировать MTU
  • Указать роутеру, чтобы он игнорировал расхождения в значениях MTU

 

Для корректировки применяем команду на интерфейсе:

Router#(config-if)# mtu значение

 

Проверяем:

Router# show ip interface номер_интерфейса

 

Значение MTU на интерфейсе

 

Для игнорирования применяем команду:

Router(config-if)# ip ospf mtu-ignore

 

 

Redistribute connected 

Работая с командой redistribute connected следует учитывать то, что она работает только для классовых сетей. Например, у нас 2 интерфейса, на первом настроен адрес сети 199.1.1.0/24, а на другом - 10.1.1.0/24. Выполнив команду появится следующее предупреждение:

Предупреждающий лог редистрибуции

 

После чего будет анонсирована только сеть 199.1.1.0/24, потому что мы ее не делили на более мелкие подсети. Сеть 10.1.1.0 относится к классу А, однако имеет маску отличную от 255.0.0.0, поэтому и будет проигнорирована.  

Но как заставить маршрутизатор включить подобные подсети в свои анонсы?  

Можно включить OSPF процесс на данных интерфейсах и пометить их как пассивные, то есть применить команду:

Router(config-router)# passive-interface название_интерфейса