{toc}
h2. Теория
h3. Соседи OSPF
* *Соседи* (neighbours) --- два маршрутизатора, интерфейсы которых находятся в одном широковещательном сегменте (и на которых включен OSPF на этих интерфейсах)
* *Отношения* *соседства* (adjacency) --- взаимосвязь между соседними маршрутизаторами, установленная с целью синхронизации информации
* *Hello-протокол* (hello protocol) --- протокол, использующийся для установки и поддержания соседских отношений
* *База данных соседей* (neighbours database) --- список всех соседей (также используется термин neighbour table)
h3. Пакеты OSPF
* *Hello* --- пакеты, которые используются для обнаружения соседей, установки отношений соседства и мониторинга их доступности (keepalive)
* *DBD* --- пакеты, которые описывают содержание LSDB
* *LSR* --- пакеты, с помощью которых запрашивается полная информация об LSA, которых недостает в LSDB локального маршрутизатора
* *LSU* --- пакеты, которые передают полную информацию, которая содержится в LSA
* *LSAck* --- пакеты, с помощью которых подтверждается получение других пакетов
h3. Соседи и установка отношений соседства
Обнаружение соседей начинается после того как:
# Протокол был включен глобально
# Выбран Router ID
# OSPF включен на интерфейсах
Для обнаружения и мониторинга соседей используются сообщения *Hello*.
Для того чтобы маршрутизаторы стали соседями, необходимо чтобы в hello-пакетах совпали значения таких полей:
* *Hello Interval* --- частота отправки сообщений Hello.
* *Router Dead Interval* --- период времени, по прохождению которого, сосед считается недоступным, если не было Hello.
* *Area ID* --- так как в OSPF граница зоны проходит через маршрутизатор, то маршрутизаторы в одном широковещательном сегменте, должны быть в одной зоне. Подробнее про зоны ниже.
* *Authentication* --- пароль использующийся для аутентификации и тип аутентификации. Маршрутизаторы не обязательно должны использовать аутентификацию, но если она используется, то пароли и тип должны совпадать.
* *Stub area flag* --- не обязательный флаг, который устанавливается на всех маршрутизаторах, которые принадлежат тупиковой зоне (stub area).
У маршрутизаторов должны совпадать сеть и маска сети.
Для того чтобы маршрутизаторы установили отношения соседства у них, кроме уже перечисленных критериев, должны совпадать значения *IP MTU* на интерфейсах. Информация о значении *IP MTU* передается в DD-пакетах и сравнивается в начале обмена DD-пакетами.
h2. Поиск и устранение неисправностей
Все приведённые ниже команды можно вполнить только внутри контейнера BGP Blackhole, то есть после выполнения команды
{code}
chroot /app/bgp_blackhole
{code}
h3. 1. Настройте OSPF
Как это сделать подробно описано в [статье|REDUCTOR9:Настройка OSPF для получения маршрутов до абонентов].
h3. 2. Проверьте наличие соседей
{code}
sh ip ospf neighbor
{code}
Если соседи есть, то OSPF работает.
h3. 3. Проверьте сгенерированный конфигурационный файл
Конфигурационный файл сервера OSPF можно просмотреть командой:
{code}
cat /etc/frr/ospfd.conf
{code}
он генерируется на основе введённых в меню настройки параметров из шаблона:
{code}
/usr/local/share/frr5/ospfd.conf.j2
{code}
При несоответствии нужно исправить необходимые параметры.
Особое внимание обратите на параметры:
* Hello Interval
* Router Dead Interval
* Area ID
* Authentication
h3. 4. Проверьте наличие OSPF трафика
Пусть eth1 - интерфейс, на котором должны быть доступны соседи.
{code}
tcpdump -nvvvi eth1 proto ospf
{code}
Если используется VLAN, например трафик должен быть на интерфейсе eth1.15, но его нет - попробуйте исключить путаницу с номером тега - проверьте наличие трафика на eth1.
Если трафика нет, возможно, соседи доступны на другом интерфейсе. Проверьте все интерфейсы сразу:
{code}
tcpdump -nvvvi any proto ospf
{code}
Должны присутствовать данные LSDB
h3. 5. Воспользуйтесь режимом отладки
Варианты:
{code}
# vtysh -d ospfd
debug ospf packet hello
debug ospf lsa
debug ospf event
{code}
Результаты будут отображаться в /var/log/frr/ospfd.log
Если пользовались режимом отладки, то после завершения работ его нужно отключить. Перезапустите контейнер командой:
{code}
/app/bgp_blackhole/service restart
{code}
h2. Теория
h3. Соседи OSPF
* *Соседи* (neighbours) --- два маршрутизатора, интерфейсы которых находятся в одном широковещательном сегменте (и на которых включен OSPF на этих интерфейсах)
* *Отношения* *соседства* (adjacency) --- взаимосвязь между соседними маршрутизаторами, установленная с целью синхронизации информации
* *Hello-протокол* (hello protocol) --- протокол, использующийся для установки и поддержания соседских отношений
* *База данных соседей* (neighbours database) --- список всех соседей (также используется термин neighbour table)
h3. Пакеты OSPF
* *Hello* --- пакеты, которые используются для обнаружения соседей, установки отношений соседства и мониторинга их доступности (keepalive)
* *DBD* --- пакеты, которые описывают содержание LSDB
* *LSR* --- пакеты, с помощью которых запрашивается полная информация об LSA, которых недостает в LSDB локального маршрутизатора
* *LSU* --- пакеты, которые передают полную информацию, которая содержится в LSA
* *LSAck* --- пакеты, с помощью которых подтверждается получение других пакетов
h3. Соседи и установка отношений соседства
Обнаружение соседей начинается после того как:
# Протокол был включен глобально
# Выбран Router ID
# OSPF включен на интерфейсах
Для обнаружения и мониторинга соседей используются сообщения *Hello*.
Для того чтобы маршрутизаторы стали соседями, необходимо чтобы в hello-пакетах совпали значения таких полей:
* *Hello Interval* --- частота отправки сообщений Hello.
* *Router Dead Interval* --- период времени, по прохождению которого, сосед считается недоступным, если не было Hello.
* *Area ID* --- так как в OSPF граница зоны проходит через маршрутизатор, то маршрутизаторы в одном широковещательном сегменте, должны быть в одной зоне. Подробнее про зоны ниже.
* *Authentication* --- пароль использующийся для аутентификации и тип аутентификации. Маршрутизаторы не обязательно должны использовать аутентификацию, но если она используется, то пароли и тип должны совпадать.
* *Stub area flag* --- не обязательный флаг, который устанавливается на всех маршрутизаторах, которые принадлежат тупиковой зоне (stub area).
У маршрутизаторов должны совпадать сеть и маска сети.
Для того чтобы маршрутизаторы установили отношения соседства у них, кроме уже перечисленных критериев, должны совпадать значения *IP MTU* на интерфейсах. Информация о значении *IP MTU* передается в DD-пакетах и сравнивается в начале обмена DD-пакетами.
h2. Поиск и устранение неисправностей
Все приведённые ниже команды можно вполнить только внутри контейнера BGP Blackhole, то есть после выполнения команды
{code}
chroot /app/bgp_blackhole
{code}
h3. 1. Настройте OSPF
Как это сделать подробно описано в [статье|REDUCTOR9:Настройка OSPF для получения маршрутов до абонентов].
h3. 2. Проверьте наличие соседей
{code}
sh ip ospf neighbor
{code}
Если соседи есть, то OSPF работает.
h3. 3. Проверьте сгенерированный конфигурационный файл
Конфигурационный файл сервера OSPF можно просмотреть командой:
{code}
cat /etc/frr/ospfd.conf
{code}
он генерируется на основе введённых в меню настройки параметров из шаблона:
{code}
/usr/local/share/frr5/ospfd.conf.j2
{code}
При несоответствии нужно исправить необходимые параметры.
Особое внимание обратите на параметры:
* Hello Interval
* Router Dead Interval
* Area ID
* Authentication
h3. 4. Проверьте наличие OSPF трафика
Пусть eth1 - интерфейс, на котором должны быть доступны соседи.
{code}
tcpdump -nvvvi eth1 proto ospf
{code}
Если используется VLAN, например трафик должен быть на интерфейсе eth1.15, но его нет - попробуйте исключить путаницу с номером тега - проверьте наличие трафика на eth1.
Если трафика нет, возможно, соседи доступны на другом интерфейсе. Проверьте все интерфейсы сразу:
{code}
tcpdump -nvvvi any proto ospf
{code}
Должны присутствовать данные LSDB
h3. 5. Воспользуйтесь режимом отладки
Варианты:
{code}
# vtysh -d ospfd
debug ospf packet hello
debug ospf lsa
debug ospf event
{code}
Результаты будут отображаться в /var/log/frr/ospfd.log
Если пользовались режимом отладки, то после завершения работ его нужно отключить. Перезапустите контейнер командой:
{code}
/app/bgp_blackhole/service restart
{code}