Open Shortest Path First [сначала открыть кратчайший путь] (OSPF) — это протокол маршрутизации для сетей Internet Protocol (IP). Он использует алгоритм маршрутизации по состоянию соединения и относится к группе внутренних протоколов маршрутизации, работающих в пределах одной автономной системы (AS). Он определен как OSPF версии 2 в RFC 2328 (1998) для IPv4. Обновления для IPv6 определены как OSPF версии 3 в RFC 5340 (2008).
OSPF, возможно, является наиболее широко используемым протоколом внутреннего шлюза (IGP) в сетях крупных предприятий. IS‑IS, другой протокол динамической маршрутизации по состоянию связи, распространен в крупных сетях провайдеров услуг. В качестве протокола внешнего шлюза обычно применяется протокол Border Gateway Protocol (BGP), основной протокол маршрутизации между автономными системами в Интернете.
OSPF — это протокол внутреннего шлюза (IGP) для маршрутизации пакетов веб‑протокола (IP) только между одной маршрутной областью, например, ассоциированной автономной системой. Он собирает информацию о состоянии связи, поступающую от маршрутизаторов на рынке, и строит топологическую карту сети. Топология передается в виде таблицы маршрутизации на сетевой уровень, который выполняет маршрутизацию дейтаграмм, исходя только из адреса назначения, содержащегося в информационных пакетах. OSPF поддерживает сети с веб‑протоколом версии 4 (IPv4) и веб‑протоколом версии 6 (IPv6), а также модели адресации с маскированием подсети переменной длины (VLSM) и эгалитарной междоменной маршрутизации (CIDR).
OSPF обнаруживает изменения в топологии, например, сбои соединений, и в течение нескольких секунд конвергируется в совершенно новую структуру маршрутизации без зацикливаний. Он вычисляет дерево кратчайшего пути для каждого маршрута, используя методику, поддерживаемую формулой Дейкстры, исходной формулы кратчайшего пути.
Политики маршрутизации OSPF для построения таблицы маршрутов определяются ценностными факторами соединения (внешними метриками), связанными с каждым интерфейсом маршрутизации. Ценностные факторы — это также промежуток между маршрутизаторами (время приема‑передачи), скорость передачи сведений по соединению, удобство и надежность соединения, выраженные в виде простых чисел, меньших единицы. Это обеспечивает динамический метод для выравнивания нагрузки на трафик между маршрутами равной ценности.
Сеть OSPF также структурирована или разделена на области маршрутизации для изменения управления и оптимизации использования трафика и ресурсов. Области обозначаются 32-битными числами, выраженными в десятичной или, как правило, в октетной точечно‑десятичной нотации, знакомой по нотации адресов IPv4.
34 вещи, которые вы должны запомнить:
-
Номер протокола OSPF в IP‑заголовке пакета — 89.
-
Для установления отношений соседства в OSPF, таймеры hello/dead, MTU [Maximum transmission unit — это максимальный объём данных, который может быть передан протоколом за одну итерацию] (в противном случае необходимо применить команду
ip ospf mtu-ignore
, чтобы отключить проверку значения MTU в пакетах OSPF) должны совпадать. Также требуется уникальный router‑id. -
Маршрутизаторы в stub area (тупиковой области) могут быть соседними только с маршрутизаторами в тупиковой или полностью тупиковой области (totally stubby area). Маршрутизаторы в NSSA [Not‑so‑stubby‑areas — не такая уж и тупиковая область] могут быть соседними только с маршрутизаторами в NSSA или полностью (totally) NSSA.
-
OSPF рассматривает вторичные сети как тупиковые и не может создавать отношения соседства через вторичные адреса. OSPF будет анонсировать вторичную сеть или подсеть, только если она также запущена в первичной сети или подсети. Для анонсирования маршруты OSPF вторичных адресов должны находиться в той же области, что и первичный адрес. Чтобы узнать маршруты от соседа, подключенного к вторичной сети, должен быть запущен другой протокол маршрутизации, например RIP, который перераспределяется в OSPF. Другим решением для подобной проблемы является создание суб‑интерфейсов dot1q.
-
Единственный случай, когда OSPF будет формировать отношения смежности между соседями, не находящимися в одной подсети, это когда они подключены через соединения «точка‑точка» с использованием «ip unnumbered» (ip‑адрес без номера).
-
Основной интерфейс и интерфейс «IP unnumbered» будут иметь включенный OSPF, если сетевой оператор соответствует IP‑адресу основного интерфейса.
-
Внешний маршрут OSPF не может использовать другой внешний маршрут OSPF в качестве следующего хопа.
-
Внутри области OSPF использует логику Link State [состояние канала], но между областями OSPF в чем‑то действует подобно протоколу Distance Vector (DV) [дистанционно‑векторный протокол]. Например, анонс LSA типа 3 из одной области в другую скрывает топологию исходной области от второй области, просто перечисляя подсеть назначения, метрику (стоимость) и ABR [Area Border Router — пограничный маршрутизатор], через который можно подключиться к подсети — все это концепции DV.
-
Только широковещательные и сети без широкого вещания выбирают DR/BDR [Designated Router — выделенный маршрутизатор/Backup Designated Router — резервный выделенный маршрутизатор] на основе приоритета или router‑id (в случае равенства приоритетов).
-
В сети без широкого вещания DR/BDR должен иметь второй уровень связи со всеми другими маршрутизаторами в той же области.
-
В сетях OSPF широковещательного и нешироковещательного типов значения следующего хопа не изменяются при передаче обновлений через среду NBMA [Non Broadcast MultiAccess — нешироковещательные сети множественного доступа]. Оба типа сети точка‑многоточка и точка‑многоточка без широкого вещания обновляют значение следующего хопа маршрутов, полученных в частично объединенных (meshed) сетях, до непосредственно подключенного соседа и объявляют сеть как набор эндпоинтов, а не транзитную.
-
Сеть OSPF точка‑точка является опцией по умолчанию для интерфейсов точка‑точка, таких как HDLC [High‑Level Data Link Control — протокол высокоуровнего управления каналом передачи данных], PPP [Point‑to‑Point Protocol — двухточечный протокол] или NBMA субинтерфейсов точка‑точка.
-
Поскольку только сети широковещательного и нешироковещательного типов выбирают DR/BDR, они совместимы друг с другом, но при этом не совместимы с любыми другими типами сетей.
-
Стоимость OSPF может быть изменена с помощью (i) команды interface
bandwidth ...
, (ii) команды interfaceip ospf cost ...
, (iii) команды processauto-cost reference-bandwidth ...
или (iv) командыneighbor ... cost ...
в сети точка‑многоточка без широкого вещания. -
Только типы сетей OSPF точка‑многоточка и точка‑многоточка без широкого вещания поддерживают значение стоимости OSPF для каждого соседа. В широковещательных сетях точка‑многоточка, если используется команда
neighbor...
, необходимо указать стоимость для каждого соседа. Но в сетях без широкого вещания точка‑многоточка командаneighbor ...
должна использоваться для идентификации соседей, назначение стоимости для соседа необязательно. -
Внутренние маршруты OSPF могут быть суммированы только на ABR, в то время как внешние (перераспределенные) маршруты могут быть суммированы только на ASBR [Autonomous System Boundary Router — пограничный маршрутизатор автономной системы].
-
Команда
area default-cost ...
используется для указания стоимости дефолтного суммарного маршрута (стоимость по умолчанию равна 1), который отправляется в тупиковую область или NSSA. -
В NSSA ABR с самым высоким router‑id выполняет преобразование LSA [Link‑State Advertisement — объявление о состоянии канала] 7 в 5.
-
В NSSA нельзя использовать команду
default-information originate
[исходная информация по умолчанию], так как она генерирует LSA типа 5. Это запрещено в области NSSA. -
NSSA ASBR может генерировать дефолтный маршрут только при наличии маршрута по умолчанию в своей таблице маршрутизации, в то время как NSSA ABR может генерировать такой маршрут как при наличии, так и при его отсутствии в своей таблице.
-
Виртуальные каналы не разрешены в тупиковой области или NSSA. В этом случае OSPF может быть туннелирован через тупиковую область с помощью туннеля GRE [Generic Routing Encapsulation — общая инкапсуляция маршрутов] (туннель должен быть подключен к области 0).
-
Если аутентификация на виртуальном канале неверна, то его интерфейс сразу не отвалится. Так как виртуальный канал не поддерживает периодические hello‑сообщения, следует выполнить команду
clear ip ospf process
[очистить процесс ip ospf], если на виртуальном канале включена аутентификация. -
Виртуальный канал не появится, если единственный интерфейс доступа к другому концу виртуального канала имеет максимальную стоимость (65 535).
-
Чтобы BGP перераспределял маршруты в OSPF, router‑id должен быть идентичным в OSPF и BGP.
-
Фильтрация OSPF с помощью команд
distribute-list ...
,route-map ...
(match route‑type, match ip route‑source, match ip next‑hop [сопоставить тип маршрута, сопоставить ip источника маршрута, сопоставить ip следующего хопа]) иdistance ...
может только блокировать маршрут от попадания в локальную RIB [Routing Information Base — маршрутная база данных], но не может остановить распространение LSA в базу данных OSPF. -
Фильтрация OSPF с помощью команд
area ... filter-list prefix ...
[область… префикс списка фильтров…],area ... range ... not-adv
[область… диапазон…не аносировать],summary-address ... not-adv
[суммаризация (скрытие) подсетей…не аносировать],ip ospf database-filter all out
[ip ospf база данных‑фильтр все исходящие] илиneighbor ... database-filter all out
[сосед… база данных‑фильтр все исходящие] может фильтровать LSA из базы данных OSPF. -
Если обе команды настроены для области
area ... range ...
[область… диапазон…] иarea ... filter-list prefix ... out
[область… префикс списка фильтров… отсутствует], то всем остальным областям рассылаются LSA типа 3, соответствующие диапазону области, только если хотя бы один префикс в диапазоне областей соответствует записи в списке префиксов. -
OSPF по умолчанию устанавливает стоимость 20 при перераспределении из IGP и 1 при перераспределении из BGP.
-
neighbor ... database-filter all out
[сосед… база данных‑фильтр все исходящие] работает только для сетей типа точка‑многоточка. -
Если команда
distribute-list out
настроена на ASBR, то он генерирует внешние LSA типа 5 только для тех сетей, которые явно разрешены в списке распределения (distribute list). -
OSPF соединение, устанавливаемое по требованию (demand circuits) ставит флаг » do not age» [не стареть] на всех изученных LSA и будет посылать обновления только при изменении топологии OSPF. Команда должна быть настроена в соединении точка‑точка и необходима только с одной стороны. Если маршрутизатор является частью топологии «точка‑многоточка», эта команда должна быть настроена только с многоточечной стороны.
-
Основное различие между командами по уменьшением флуда (
ip ospf flood-reduction
) и соединениями, устанавливаемыми по требованию (ip ospf demand-circuit
) заключается в том, что первая препятствует только периодическому обновлению LSA; она не блокирует регулярные пакеты hello‑сообщений. Таким образом, фича по уменьшению флуда не влияет на обнаружение отказа соседнего маршрутизатора. -
OSPF stub router [функция, которая позволяет указать, что маршрутизатор, временно или постоянно, не будет транзитным маршрутизатором] (
max-metric router-lsa
) анонсирует все не свои (self‑originated) маршруты/LSA с максимальной метрикой. -
Когда настроена команда
redistribute maximum-prefix ...
, ограничение перераспределения не применяется к маршрутам по умолчанию или префиксам, которые генерируются в результате преобразования Type-7 в Type-5.
Приглашаем всех желающих на открытое занятие «Оптимизация BGP: как сделать BGP чувствительным к трафику». На вебинаре рассмотрим основные проблемы BGP на границах сети. А также рассмотрим инструменты, с помощью которых можно влиять на маршрутизацию BGP с учетом загруженности и производительности каналов. Записаться можно на странице курса «Network engineer».
ссылка на оригинал статьи https://habr.com/ru/company/otus/blog/719512/
Добавить комментарий