Каждый знает всю карту
OSPF, Open Shortest Path First, относится к протоколам внутренней маршрутизации: он работает внутри одной автономной системы, например в сети предприятия или провайдера. Принцип у него такой: каждый маршрутизатор получает полное описание топологии и самостоятельно вычисляет лучшие пути. Поэтому его называют протоколом состояния каналов.
От старых протоколов дистанционно-векторного типа, вроде RIP, это отличает суть. RIP лишь узнавал от соседей, на каком расстоянии находится сеть, и опирался на их слова. В OSPF же у каждого узла собственная карта, и решения принимаются на основе её, что даёт быструю сходимость и отсутствие типичных петель.
Соседи, объявления и база данных
Маршрутизаторы, соединённые общим каналом, сначала находят друг друга с помощью пакетов Hello и становятся соседями. Затем они синхронизируют базу данных состояния каналов: набор объявлений LSA, где каждый узел описывает свои интерфейсы и связи. Когда что-либо меняется, например отказывает линк, об этом рассылается новое объявление, и все узлы обновляют карту.
Поверх базы запускается алгоритм Дейкстры, строящий дерево кратчайших путей с текущим узлом в корне. По нему заполняется таблица маршрутизации. Если топология изменилась, расчёт повторяется, поэтому сеть восстанавливается после сбоя обычно за считанные секунды.
Вес каналов и области
Путь выбирается по суммарному весу, который по умолчанию зависит от пропускной способности интерфейса: чем быстрее канал, тем меньше его вес. Администратор может менять значения, чтобы направить трафик по нужному пути.
Чтобы база не разрасталась в больших сетях, узлы объединяют в области. Центральную область называют нулевой, магистральной, остальные подключают к ней. Изменения внутри одной области не заставляют пересчитывать карту остальные, и нагрузка на маршрутизаторы падает. Маршрутизаторы на границе областей суммируют сведения и передают их дальше в сокращённом виде.
Где он встречается
Классическая среда OSPF это сети предприятий, кампусов, дата-центров и провайдеров. Он отлично подходит там, где много маршрутизаторов и нужно, чтобы сеть сама перестраивалась при обрывах. В небольших и домашних сетях его не применяют: хватает статических маршрутов и маршрута по умолчанию.
Есть версии для обоих протоколов IP: OSPFv2 работает с IPv4, OSPFv3 добавляет поддержку IPv6. Часто OSPF комбинируют с BGP: первый связывает маршрутизаторы внутри сети, второй обменивается маршрутами с соседями снаружи.
Ограничения и безопасность
Протокол требует аккуратной настройки и мониторинга. Неверно заданная область или несовпадение параметров на соседях мешает установить связь. Поскольку маршрутизаторы доверяют объявлениям, посторонний, подключившийся к сегменту, может подсунуть ложные данные, поэтому используют аутентификацию сеансов и запрещают OSPF на пользовательских портах.
Обычному пользователю знать детали не нужно. Но если в описании корпоративной сети встречается «динамическая маршрутизация OSPF», это означает, что маршруты в ней не вписывают вручную, а сеть сама обменивается сведениями и подстраивается под сбои.
Как выглядит настройка на практике
На оборудовании администратор включает процесс OSPF, указывает идентификатор маршрутизатора, перечисляет интерфейсы или сети, которые должны участвовать, и номер области. Дальше маршрутизаторы находят друг друга и строят карту. В выводе диагностики можно увидеть соседей и их состояние: полное состояние соседства означает, что базы синхронизированы.
На пользовательских интерфейсах, где нет других маршрутизаторов, участие OSPF отключают, объявляя порт пассивным: сеть будет включена в объявления, но Hello-пакеты наружу не пойдут. Это снижает нагрузку и не даёт постороннему подключиться к протоколу. Когда что-то не работает, проверяют совпадение таймеров Hello и тип области на соседях: расхождения в них частая причина отсутствия соседства.
В сравнении с этим протоколом статические маршруты просты и надёжны, но не реагируют на сбои сами: если канал оборвался, а запись осталась, трафик продолжит уходить в пустоту, пока администратор её не поправит. Поэтому в сетях с резервными путями динамическая маршрутизация почти всегда оправдана.
Для изучения удобно построить учебную сеть из нескольких виртуальных маршрутизаторов и наблюдать, как меняется таблица при отключении линков. Так становится понятно, что пересчёт происходит автоматически и почти мгновенно.