OSPF Fundamentals
OSPF отправляет соседним маршрутизаторам link-state advertisements (LSA), которые содержат состояние канала и метрику канала. Полученные LSA хранятся в локальной базе данных, называемой link-state database (LSDB). LSA лавинно рассылаются по всему домену OSPF. Все маршрутизаторы OSPF поддерживают синхронизированную идентичную копию LSDB для одной area.
LSDB обеспечивает топологию сети, по сути предоставляя маршрутизатору полную карту сети. Все маршрутизаторы OSPF запускают алгоритм Dijkstra shortest path first (SPF) для построения топологии кратчайших путей без петель. OSPF динамически обнаруживает изменения топологии в сети и вычисляет пути без петель за короткое время с минимальным трафиком протокола маршрутизации.
Каждый маршрутизатор считает себя корнем или вершиной SPF дерева (SPT), а SPT содержит все сетевые назначения в домене OSPF. SPT отличается для каждого маршрутизатора OSPF, но LSDB, используемый для расчета SPT, идентичен для всех маршрутизаторов OSPF.
На рисунке ниже показана простая топология OSPF и SPT с точки зрения R1 и R4. Обратите внимание, что с точки зрения локального роутера он (т.е. локальный роутер) всегда будет корнем (вершиной дерева). Существует разница в подключении к сети 10.3.3.0/24 от SPT R1 или SPT R4. С точки зрения R1, serial link между R3 и R4 отсутствует; с точки зрения R4, Ethernet link между R1 и R3 отсутствует.
SPT создают иллюзию отсутствия избыточности в сетях, но помните, что SPT показывает кратчайший путь для достижения сети и построен из LSDB, который содержит все линки для area. Во время изменения топологии идет перестроение дерева (SPT) и оно может измениться.
OSPF обеспечивает масштабируемость таблицы маршрутизации за счет использования нескольких OSPF areas в домене маршрутизации. Каждая область OSPF предоставляет набор подключенных сетей и узлов, сгруппированных вместе. OSPF использует двухуровневую иерархическую архитектуру, где area 0 - это особая область, известная как backbone, к которой должны подключаться все остальные области. Другими словами, area 0 обеспечивает транзитное соединение между nonbackbone areas. Nonbackbone areas анонсируют маршруты в backbone, а backbone затем объявляет маршруты в другие не nonbackbone areas.
На рисунке ниже показано объявление маршрута в другие области. Маршруты area12 объявляются в area0, а затем в area34. Маршруты area34 объявляются в area0, а затем в area12. Маршруты area0 объявляются во все другие области OSPF.
Маршрутизаторы за пределами area не имеют полной топологической карты для этой area, что снижает трафик OSPF в этой area. Когда вы сегментируете домен маршрутизации OSPF на несколько областей, LSDB перестанет быть одинаковой для всех маршрутизаторов OSPF; однако все маршрутизаторы в одной и той же area будут иметь одинаковые LSDB.
Уменьшение трафика маршрутизации позволяет роутеру использовать меньше памяти и ресурсов и, следовательно, делает масштабируемость более предпочтительной. Далее это будет объясняться более подробно; сейчас основное внимание уделим основным концепциям OSPF.
Маршрутизатор может запускать несколько процессов OSPF. Каждый процесс поддерживает свою собственную уникальную базу данных, и маршруты, полученные в одном процессе OSPF, недоступны для другого процесса OSPF без редистрибьюции маршрутов между процессами. Номера процессов OSPF имеют локальное значение и не обязательно должны совпадать между маршрутизаторами. Запуск процесса OSPF номер 1 на одном маршрутизаторе и запуск процесса OSPF номер 1234 по-прежнему позволит двум маршрутизаторам стать соседями (neighbors).
Inter-Router Communication
OSPF работает непосредственно через IPv4, используя собственный протокол 89, который зарезервирован для OSPF Internet Assigned Numbers Authority (IANA). OSPF по возможности использует многоадресную рассылку, чтобы уменьшить ненужный трафик. Два многоадресных адреса OSPF :
- AllSPFRouters: IPv4-адрес 224.0.0.5 или MAC-адрес 01:00:5E:00:00:05.
- AllDRouters: IPv4-адрес 224.0.0.6 или MAC-адрес 01:00:5E:00:00:06. Этот адрес используется для связи с designated routers (DRs).
В рамках протокола OSPF передаются пакеты пяти типов. Кратко рассмотрим 'эти типы:
- Hello - Эти пакеты предназначены для обнаружения и обслуживания соседей. Пакеты периодически отправляются на все интерфейсы OSPF для обнаружения новых соседей, гарантируя, что другие adjacent neighbors все еще находятся в сети.
- Database description (DBD) or (DDP) - Эти пакеты предназначены для обобщения содержимого базы данных. Обмен пакетами происходит при первом формировании смежности (adjacent) OSPF. Эти пакеты используются для описания содержимого LSDB.
- Link-state request (LSR) - Эти пакеты предназначены для загрузки базы данных. Когда маршрутизатор считает, что часть его LSDB устарела, он может запросить часть базы данных соседа, используя этот тип пакета.
- Link-state update (LSU) - Эти пакеты предназначены для обновлений базы данных. Это LSA для определенного сетевого линка, который обычно отправляется в качестве прямого ответа на LSR.
- Link-state ack - Эти пакеты предназначены для лавинных подтверждений (flooding acknowledgments). Эти пакеты отправляются в ответ на лавинную рассылку LSA (flooding of LSAs), что делает лавинную рассылку надежной транспортной функцией.
OSPF Hello Packets
Пакеты приветствия OSPF отвечают за обнаружение и обслуживание соседей. В большинстве случаев маршрутизатор отправляет hello пакеты на адрес AllSPFRouters (224.0.0.5). Ниже перечислены некоторые поля для данных, содержащиеся в hello пакете OSPF.
- Router ID (RID) - Уникальный 32-bit ID в OSPF домене.
- Authentication options - Поле, которое обеспечивает безопасную связь между маршрутизаторами OSPF для предотвращения злонамеренных действий. Возможные варианты: нет, открытый текст или Message Digest 5 (MD5) аутентификация.
- Area ID - OSPF area, к которой принадлежит OSPF интерфейс. Это 32-bit число, которое может быть записано в десятичном формате с точками (0.0.1.0) или просто десятичном (256).
- Interface address mask - Сетевая маска для primary IP-адреса интерфейса, на который отправляется hello приветствие.
- Interface priority - Приоритет интерфейса маршрутизатора для выбора DR.
- Hello interval - Интервал времени в секундах, в течение которого маршрутизатор отправляет hello пакеты на интерфейс.
- Dead interval - Промежуток времени в секундах, в течение которого маршрутизатор ожидает получения hello от соседнего маршрутизатора, прежде чем он объявит, что этот маршрутизатор отвалился.
- Designated router and backup designated router - IP-адрес DR и резервного DR (BDR) для сетевого линка.
- Active neighbor - Список соседей OSPF, видимых в сегменте сети. От них роутер должен получать hello пока не наступил dead interval.
Router ID
OSPF router ID (RID) - это 32-битное число, которое однозначно идентифицирует маршрутизатор OSPF. В некоторых OSPF выводах команд show, neighbor ID показывается как RID; термины синонимичны. RID должен быть уникальным для каждого процесса OSPF в домене OSPF и должен быть уникальным для процессов OSPF на маршрутизаторе.
Neighbors
OSPF neighbor - это это маршрутизатор, который использует общий сетевой канал с поддержкой OSPF. Маршрутизаторы OSPF обнаруживают других соседей с помощью hello пакетов OSPF. Adjacent OSPF neighbor - это сосед OSPF, который совместно использует синхронизированную базу данных OSPF между двумя соседями.
Каждый процесс OSPF поддерживает таблицу adjacent OSPF neighbors и состояние каждого маршрутизатора. Рассмотрим возможные состояния соседей OSPF.
- Down - Это начальное состояние соседских отношений. Это означает, что маршрутизатор не получил hello пакетов OSPF.
- Attempt - Это состояние актуально для сетей NBMA, которые не поддерживают широковещательную передачу и требуют явной конфигурации соседей. Это состояние указывает на то, что в последнее время информация не поступала, но маршрутизатор все еще пытается установить связь.
- Init - Это состояние указывает на то, что hello пакет был получен от другого маршрутизатора, но двунаправленная связь не была установлена.
- 2-Way - Установлена двунаправленная связь. Если требуется DR или BDR, выбор происходит в этом состоянии.
- ExStart - Это первое состояние при формировании смежности. Маршрутизаторы определяют, какой маршрутизатор будет ведущим или ведомым для синхронизации LSDB.
- Exchange - В этом состоянии маршрутизаторы обмениваются состояниями каналов с помощью пакетов DBD.
- Loading - Пакеты LSR отправляются соседу с запросом о более поздних LSA, которые были обнаружены (но не получены) в состоянии Exchange.
- Full - Соседние маршрутизаторы полностью смежны.
Designated Router and Backup Designated Router
Сети с множественным доступом, такие как Ethernet (LAN) и Frame Relay, позволяют использовать более двух маршрутизаторов в сегменте сети. Такая топология может вызвать проблемы с масштабируемостью OSPF по мере увеличения количества маршрутизаторов в сегменте. Дополнительные маршрутизаторы рассылают больше LSA в сегменте, и трафик OSPF становится чрезмерным по мере увеличения количества смежностей соседей OSPF. Если четыре маршрутизатора совместно используют одну и ту же сеть образуются шесть смежностей OSPF, а также шесть случаев database flooding в сети. На рисунке ниже показана простая физическая топология с четырьмя маршрутизаторами и установленной смежностью.
Формула количества ребер, n(n - 1)/2, где n представляет количество маршрутизаторов, используется для определения количества сессий в full mesh топологии. Если бы в сегменте присутствовало 5 маршрутизаторов, 5 (5 - 1)/2=10, то для этого сегмента было бы 10 смежностей OSPF. А если продолжить, добавление 1 дополнительного маршрутизатора приведет к 15 смежностям OSPF в сегменте сети. Наличие такого большого количества смежностей на сегмент увеличивает полосы пропускания, загрузку ЦП и требует больше памяти для поддержания каждого из состояний соседей.
На рисунке ниже показана экспоненциальный рост смежностей OSPF, необходимых по мере увеличения количества маршрутизаторов в сегменте сети.
OSPF преодолевает эту неэффективность, создавая псевдоузел (виртуальный маршрутизатор) для управления состоянием смежности со всеми другими маршрутизаторами в этом сегменте широковещательной сети. Маршрутизатор в сегменте широковещательной передачи, известный как designated router (DR), берет на себя роль псевдоузла. DR уменьшает количество смежностей OSPF в сегменте сети с множественным доступом, поскольку маршрутизаторы формируют полную смежность OSPF только с DR, а не друг с другом. DR отвечает за лавинную рассылку обновлений для всех маршрутизаторов OSPF в этом сегменте по мере их появления. На рисунке ниже показано, как использование DR упрощает четырех-роутерную топологию только с тремя neighbor adjacencies.
В случае отказа DR OSPF потребуется сформировать новые смежности, вызывая все новые LSA, что потенциально может вызвать временную потерю маршрутов. В случае отказа DR backup designated router (BDR) становится новым DR; затем происходит выбор на замену BDR. Чтобы минимизировать время перехода, BDR также формирует полные смежности OSPF со всеми маршрутизаторами OSPF в этом сегменте.
Процесс DR/BDR распределяет LSA следующим образом:
- Все маршрутизаторы OSPF (DR, BDR и DROTHER) в сегменте образуют полную смежность OSPF с DR и BDR.
- Когда маршрутизатор OSPF узнает о новом маршруте, он отправляет обновленный LSA на адрес AllDRouters (224.0.0.6), который получают и обрабатывают только DR и BDR, как показано на шаге 1 на рисунке ниже.
- DR отправляет unicast подтверждение маршрутизатору, который отправил начальное обновление LSA, как показано на шаге 2 рисунка.
- DR рассылает LSA всем маршрутизаторам в сегменте через адрес AllSPFRouters (224.0.0.5), как показано на шаге 3 рисунка.
OSPF Configuration
Настройки OSPF в основном находится в режиме конфигурации OSPF, но некоторые параметры OSPF относятся непосредственно к режиму конфигурации интерфейса. Команда router ospf process-id определяет и инициализирует процесс OSPF. Идентификатор процесса OSPF имеет значение локально, но обычно остается неизменным для обеспечения согласованности работы. OSPF включается на интерфейсе двумя способами:
- Заявление о сети в OSPF с помощью команды network
- Команды настройки на интерфейсе
Рассмотрим эти методы в следующем разделе.
OSPF Network Statement
Оператор network в OSPF идентифицирует интерфейсы, которые будет использовать OSPF процесс и area, к которой будет принадлежать интерфейс. В команде network используется primary IPv4 address и netmask, настроенные на сетевом интерфейсе.
Существует распространенное заблуждение , что оператор network анонсирует сети в OSPF; на самом деле, это стоит рассматривать, что оператор network выбирает и включает OSPF на интерфейсе. Затем интерфейс анонсируется в OSPF через LSA. Оператор network использует wildcard mask. Это позволяет конфигурации быть настолько конкретной или расплывчатой, насколько это необходимо. Выбор интерфейсов в OSPF процессе выполняется с помощью команды network ip-address wildcard-mask area area-id.
Эта концепция аналогична конфигурации протокола EIGRP, за исключением того, что указывается OSPF area. Если IP-адрес интерфейса совпадает с двумя операторами network в разных area, наиболее явный оператор network (то есть самое длинное совпадение) вытесняет другие операторы network для выделенной области. Сonnected сеть, настроенная на интерфейсе с включенным OSPF, добавляется в LSDB OSPF в ту area, в которой находится интерфейс. Secondary connected сети добавляются в LSDB только в том случае, если secondary IP address совпадает с анонсом сети, в той же area. Чтобы помочь проиллюстрировать концепцию, следующие примеры объяснят возможные варианты использования оператора network для маршрутизатора с четырьмя интерфейсами. В таблице ниже представлены IP-адреса и интерфейсы.
Конфигурация в следующем примере включает OSPF для area 0 только на интерфейсах, которые явно соответствуют IP-адресам в таблице.
В примере 2 показана конфигурация OSPF для area 0 с использованием команды network, для подсетей, указанных в таблице. Установите последний октет IP-адреса на 0 и измените последний октет wildcard mask на 255 и тогда команда network будут соответствовать всем IP-адресам в сети /24.
В примере 3 показана конфигурация OSPF для area 0 с использованием команды network для интерфейсов, ip адреса которые находятся в пределах сетевых диапазонов 10.0.0.0/8 или 192.0.0.0/8, и в результате OSPF будет включен на всех четырех интерфейсах, как и в предыдущих двух примерах.
В примере 4 показана еще одна конфигурация OSPF для area 0, которая включит OSPF на всех интерфейсах.
Пока для простоты рассматриваем настройки OSPF в одной area 0. Далее будет подробно объясняется поведение OSPF в нескольких area.
Interface-Specific Configuration
Второй метод включения OSPF на интерфейсе для IOS - это настроить его специально на интерфейсе с помощью команды ip ospf process-id area area-id [secondaries none]. Этот метод также добавляет secondary connected сети к LSDB, если не используется опция [secondaries none].
Этот метод явно включает OSPF; однако конфигурация не централизована и усложняется по мере увеличения количества интерфейсов на маршрутизаторах. Если на маршрутизаторе существует гибридная конфигурация, параметры интерфейса имеют приоритет над командой network с назначением area.
В примере 5 показан пример конфигурации интерфейса.
Statically Setting the Router ID
По умолчанию RID назначается динамически с использованием наивысшего IP-адреса из всех loopback интерфейсов. Если нет loopback интерфейсов обратной, наивысший IP-адрес любого активного физического интерфейса становится RID при инициализации процесса OSPF.
Процесс OSPF выбирает RID при инициализации процесса OSPF, и он не изменяется до перезапуска процесса. Изменения интерфейса (например, добавление/удаление IP-адресов) на маршрутизаторе обнаруживаются при перезапуске процесса OSPF, и RID изменяется соответственно.
Топология OSPF построена на RID. Установка статического RID помогает при устранении неполадок и сокращает количество LSA, когда RID изменяется в среде OSPF. RID составляет четыре октета в длину, но обычно представляет собой IPv4-адрес, который находится на маршрутизаторе для простоты эксплуатации; однако это не является обязательным требованием. Команда router-id router-id статически назначает RID OSPF для процесса OSPF.
Команда clear ip ospf process перезапускает процесс OSPF на маршрутизаторе, чтобы OSPF мог использовать новый RID.
Passive Interfaces
Включение OSPF на интерфейсе - это самый быстрый способ анонсировать сегмент сети другим маршрутизаторам OSPF. Однако кто-нибудь может подключить неавторизованный маршрутизатор OSPF к сегменту сети с поддержкой OSPF и ввести ложные маршруты, что приведет к разрушению сети. Если сделать сетевой интерфейс пассивным, сегмент сети будет добавлен в LSDB, но интерфейс не сможет формировать смежности OSPF. Рassive interface не отправляет hello сообщения OSPF и не обрабатывает полученные пакеты OSPF.
Командный passive interface-id в режиме настройки OSPF делает интерфейс пассивным, а команда passive interface default делает все интерфейсы пассивными. Чтобы интерфейс мог обрабатывать пакеты OSPF, используется команда no passive interface-id.
Requirements for Neighbor Adjacency
Для формирования соседства OSPF должен быть соблюден следующий список требований:
- RID должны быть уникальными для двух устройств. Они должны быть уникальными для всего домена маршрутизации OSPF, чтобы предотвратить ошибки.
- Интерфейсы должны иметь общую подсеть. OSPF использует primary IP-адрес интерфейса при отправке hello OSPF. Сетевая маска (netmask) в hello пакете используется для извлечения network ID hello пакета.
- MTU на интерфейсах должны совпадать. Протокол OSPF не поддерживает фрагментацию, поэтому значения MTU на интерфейсах должны совпадать.
- Area ID должен соответствовать сегменту.
- Разрешение DR должно соответствовать сегменту.
- OSPF hello и dead таймеры должны совпадать для сегмента.
- Тип аутентификации и credentials (если есть) должны совпадать для сегмента.
- Флаги типа area должны соответствовать сегменту (например, Stub, NSSA). (Это не обсуждается в этой книге.)
Sample Topology and Configuration
На рисунке ниже показан пример топологии базовой конфигурации OSPF. Все четыре маршрутизатора имеют IP-адреса loopback интерфейсов, соответствующие их идентификаторам RID (R1 равен 192.168.1.1, R2 равен 192.168.2.2 и т. д.).
На R1 и R2 OSPF включается на всех интерфейсах с помощью одной команды, R3 использует определенные настройки с помощью команды network, а R4 использует OSPF команды настройки интерфейса. R1 и R2 устанавливают интерфейс Gi0/2 как пассивный, а R3 и R4 делают все интерфейсы пассивными по умолчанию, но делают Gi0/1 активным. В примере ниже представлен образец конфигурации для всех четырех маршрутизаторов:
- R1. OSPF включается одной командой, пассивный интерфейс выбирается индивидуально
- R2. OSPF включается одной командой, пассивный интерфейс выбирается индивидуально
- R3. OSPF включается командой network для каждого интерфейса, пассивный интерфейс включено глобально, Gi0/1 в активном состоянии.
- R4. OSPF включается в режиме конфигурации каждого интерфейса одной командой, пассивный интерфейс включено глобально, Gi0/1 в активном состоянии.
Confirmation of Interfaces (проверка настроек).
После внесения изменений в конфигурацию OSPF рекомендуется убедиться правильно ли сделаны настройки, те ли интерфейсы выбраны для включения на них OSPF. Команда show ip ospf interface [brief | interface-id] покажет интерфейсы с включенным OSPF.
В примере ниже показан фрагмент вывода данных R1. В выходных данных перечислены все интерфейсы с поддержкой OSPF, IP-адрес, связанный с каждым интерфейсом, RID для DR и BDR (и связанные с ними IP-адреса интерфейсов для этого сегмента) и таймеры OSPF для этого интерфейса.
В следующем примере показана команда show ip ospf interface с ключевым словом keyword.
Рассмотрим поподробней поля в выходных данных этого примера.
- Interface - интерфейс с включенным OSPF
- PID - OSPF process ID, связанный с этим интерфейсом.
- Area - area, с которой связан этот интерфейс\
- IP Address/Mask - IP-адрес и маска подсети для интерфейса.
- Cost - метрика стоимости, назначенная интерфейсу, который используется для расчета метрики пути.
- State - Текущее состояние интерфейса, которое может быть DR, BDR, DROTHER, LOOP или Down.
- Nbrs F - Количество полностью смежных роутеров-OSPF соседей для сегмента.
- Nbrs C - Количество роутеров-OSPF соседей для сегмента, которые на данный момент находятся в состоянии 2-Way
DROTHER - это маршрутизатор в сегменте с поддержкой DR, который не является DR или BDR; это просто другой маршрутизатор. DROTHER не устанавливают полную смежность с другими DROTHER.
Verification of OSPF Neighbor Adjacencies
Команда show ip ospf neighbour [detail] предоставляет таблицу соседей OSPF. В примере ниже показан пример вывода на R1, R2, R3 и R4.
Рассмотрим используемые поля в этом примере. Состояние соседства на R1 идентифицируют R3 как BDR и R4 как DR. R3 и R4 идентифицируют R1 и R2 как DROTHER в выводе.
- Neighbor ID - Router ID (RID) соседнего маршрутизатора, OSPF соседа.
- PRI - Приоритет интерфейса соседа, который используется для выбора DR / BDR.
- State - Это мы уже обсуждали в предыдущем объяснении полей, но повторимся. Второе поле - это роль DR, BDR или DROTHER, если интерфейсу требуется DR. Для сетевых линков без DR во втором поле отображается только дефис (-).
- Dead Time - Время, оставшееся до объявления маршрутизатора недоступным.
- Address - Primary IP-адрес OSPF соседа
- Interface - Локальный интерфейс, к которому подключен OSPF сосед.
Verification of OSPF Routes
Следующим шагом является проверка маршрутов OSPF, установленных в таблице маршрутизации. Маршруты OSPF, которые устанавливаются в базу маршрутной информации (RIB), отображаются с помощью команды show ip route ospf.
В следующем примере представлен пример вывода таблицы маршрутизации OSPF для маршрутизатора R1. В выходных данных, где в скобках указаны два набора чисел (например, [110/2] , первое число - это административная дистанция (AD), которое по умолчанию для OSPF равно 110, а второе число - это метрика пути, используемого для этой сети. Выходные данные для R2, R3 и R4 будут аналогичны этому примеру.
Термины "стоимость пути" и "метрика пути" являются синонимами с точки зрения OSPF.
Default Route Advertisement
(Объявление маршрута по умолчанию)
OSPF поддерживает объявление маршрута по умолчанию в домене OSPF. Маршрут по умолчанию объявляется с помощью команды default-information originate [always][metric metricvalue][metric-type type-value] в режиме настройки OSPF.
Необязательное ключевое слово always объявляет маршрут по умолчанию, даже если маршрут по умолчанию не существует в RIB. Кроме того, метрику маршрута можно изменить с помощью параметра metric metric-value, а также можно изменить тип метрики параметром metric-type type-value.
На рисунке ниже показан пример, в котором R1 имеет статический маршрут по умолчанию к межсетевому экрану, подключенному к Интернету. Чтобы обеспечить возможность подключения к Интернет другим частям сети (например, R2 и R3), R1 объявляет маршрут по умолчанию в OSPF.
В следующем примере представлена соответствующая этой схеме конфигурация R1. Обратите внимание, что R1 имеет статический маршрут по умолчанию к брандмауэру (100.64.1.2), чтобы удовлетворить требование наличия маршрута по умолчанию в RIB.
В примере ниже представлены таблицы маршрутизации R2 и R3. Обратите внимание, что OSPF объявляет маршрут по умолчанию как внешний маршрут OSPF.
Common OSPF Optimizations
Практически каждая сеть требует настройки в зависимости от оборудования, технических требований и множества других факторов. В следующих разделах объясняются общие концепции, связанные с настройкой сети OSPF.
Link Costs
Стоимость интерфейса является важным компонентом расчета SPF Дейкстры, поскольку метрика кратчайшего пути основана на совокупной стоимости интерфейса (то есть метрике) от маршрутизатора до пункта назначения. OSPF назначает стоимость канала OSPF (то есть метрику) для интерфейса, используя формулу на картинке ниже.
Эталонная полоса пропускания по умолчанию составляет 100 Мбит/с. Таблица ниже содержит OSPF cost для общих типов сетевых интерфейсов с использованием эталонной полосы пропускания по умолчанию.
Обратите внимание, что в этой таблице нет различий в стоимости канала связи, связанной с интерфейсом FastEthernet и интерфейсом 10 GigabitEthernet. Изменение эталонной полосы пропускания на более высокое значение позволяет дифференцировать стоимость между высокоскоростными интерфейсами. Установка слишком большого значения может вызвать проблемы, поскольку интерфейсы с низкой пропускной способностью не будут различимы. Поле метрики OSPF LSA составляет 16 бит, а стоимость интерфейса не может превышать 65 535.
В режиме настройки OSPF команда auto-cost reference-bandwidth bandwidth-in-mbps изменяет эталонную полосу пропускания для всех интерфейсов OSPF, связанных с этим процессом. Если эталонная полоса пропускания изменяется на одном маршрутизаторе, она должна быть изменена на всех маршрутизаторах OSPF, чтобы гарантировать, что SPF использует одну и ту же логику для предотвращения петель маршрутизации. Рекомендуется установить одинаковую эталонную полосу пропускания для всех маршрутизаторов OSPF.
Стоимость OSPF может быть установлена вручную с помощью команды ip ospf cost 1–65535 в режиме настройки интерфейса.
Failure Detection
Вторичной функцией hello пакетов OSPF является обеспечение работоспособности и доступности OSPF соседей. OSPF отправляет hello пакеты с заданными интервалами на основе hello таймера. OSPF использует второй таймер, называемый dead interval таймером OSPF, который по умолчанию в четыре раза превышает hello таймер. После получения hello пакета от соседнего маршрутизатора dead interval таймер OSPF сбрасывается до начального значения, а затем снова начинает уменьшаться.
Если маршрутизатор не получает hello до того, как OSPF dead interval timer достигает 0, состояние соседнего узла изменяется на DOWN. Маршрутизатор OSPF немедленно отправляет соответствующий LSA, отражающий изменение топологии, и алгоритм SPF отрабатывает на всех маршрутизаторах в пределах области.
Hello Timer
Интервал hello таймера OSPF по умолчанию зависит от типа сети OSPF. OSPF позволяет изменять интервал hello таймера со значениями от 1 до 65 535 секунд. Изменение интервала hello таймера также изменяет dead interval по умолчанию. Hello таймер OSPF изменяется с помощью команды режима конфигурации интерфейса ip ospf hello-interval 1–65535.
Dead Interval Timer
Dead interval таймер можно изменить на значение от 1 до 65 535 секунд. OSPF dead interval timer можно изменить с помощью команды ip ospf dead-interval 1–65535 в режиме конфигурации интерфейса.
Всегда проверяйте, что значение dead interval таймера больше, чем значение hello таймера, чтобы dead interval таймер не достиг 0 между hello пакетами.
Verifying OSPF Timers
Таймеры для OSPF интерфейсов показаны с помощью команды show ip ospf interface, как показано в примере ниже. Обратите внимание на выделенные hello и dead таймеры.
Таймеры hellо и dead интервалов должны совпадать, чтобы между OSPF соседями образовалась смежность.
DR Placement
DR и BDR роли для широковещательной сети потребляют ЦП и память на маршрутизаторах чтобы поддерживать отношения с остальными маршрутизаторами в сегменте. Рекомендуется размещать роли DR и BDR на маршрутизаторах с соответствующими ресурсами.
В следующих разделах объясняется процесс выбора DR и то, как роль DR может быть назначена конкретному оборудованию.
Designated Router Elections
Выбор DR/BDR происходит во время образования соседства OSPF - конкретнее, во время последней фазы 2-Way состояния и непосредственно перед состоянием ExStart. Когда маршрутизатор переходит в 2-Way состояние, он уже получил hello от соседа. Если hello пакет включает в себя RID, отличный от 0.0.0.0 для DR или BDR, новый маршрутизатор предполагает, что эти маршрутизаторы являются фактическими DR и BDR.
Любой маршрутизатор с приоритетом OSPF от 1 до 255 на своем OSPF интерфейсе пытается стать DR. По умолчанию все OSPF интерфейсы используют приоритет 1. Маршрутизаторы помещают свои RID и OSPF приоритеты в свои hello сообщения OSPF для сегмента.
Затем маршрутизаторы получают и проверяют OSPF hello от соседних маршрутизаторов. Если маршрутизатор идентифицирует себя как более подходящий маршрутизатор, чем маршрутизаторы, от которых он получил hello OSPF сообщения, он продолжает посылать приветствия с указанием своего RID и приоритета. Если полученное hello более предпочтительно, маршрутизатор обновляет свой hello OSPF пакет, чтобы использовать более предпочтительный RID в поле DR. OSPF считает маршрутизатор более предпочтительным, если приоритет интерфейса самый высокий для этого сегмента. Если приоритет OSPF такой же, более высокий RID будет более предпочтительным.
Как только все маршрутизаторы согласовали одно и то же DR, все маршрутизаторы для этого сегмента становятся смежными с DR. Затем происходят выборы в BDR. Выборы следуют той же логике, что и выборы DR, за исключением того, что DR не добавляет свой RID в поле BDR пакета приветствия.
Роли OSPF DR и BDR не могут быть изменены после выбора DR/BDR. Только после сбоя DR или BDR (или перезапуска OSPF процесса) начинается выбор для замены отсутствующей роли.
Самый простой способ определить роль интерфейса - просмотреть OSPF интерфейс с помощью команды show ip ospf interface brief. В примере ниже показана эта команда, выполняемая на R1 и R3. Обратите внимание, что интерфейс Gi0/2 маршрутизатора R1 является DR для сети 10.1.1.0/24 (поскольку другого маршрутизатора нет), а интерфейс Gi0/1 маршрутизатора R1 является DROTHER для сегмента 10.123.4.0/24. Интерфейс Gi0/1 маршрутизатора R3 является BDR для сегмента сети 10.123.4.0/24.
Поле neighbor’s full adjacency (NbrsF) отражает количество маршрутизаторов, которые стали смежными в этом сегменте сети; поле neighbors count (NbrsС) - это количество других маршрутизаторов OSPF в этом сегменте. Вы можете предположить, что все маршрутизаторы станут смежными друг с другом, но это нарушит цель использования DR. Только DR и BDR становятся смежными с маршрутизаторами в сегменте сети.
DR and BDR Placement
В схеме где все OSPF маршрутизаторы имеют одинаковый OSPF приоритет равный 1, следующей точкой принятия решения будет более высокий RID. Идентификаторы RID совпадают с IP-адресами интерфейса Loopback. Т.е. имеем
R1 Lo0 192.168.1.1 DROTHER
R2 Lo0 192.168.2.2 DROTHER
R3 Lo0 192.168.3.3 BDR
R4 Lo0 192.168.4.4 DR
Изменение RID маршрутизатора для размещения DR - плохая стратегия проектирования. Более эффективный метод включает изменение приоритета интерфейса на более высокое значение, чем у существующего DR. В нашем случае необходимо назначить OSPF приоритет больше чем 1 (существующий приоритет DR) на предпочитаемом узле. Помните, что OSPF не отбирает роли DR или BDR, и, возможно, потребуется перезапустить процесс OSPF на текущем DR/BDR, чтобы изменения вступили в силу.
Приоритет можно установить вручную в конфигурации интерфейса с помощью команды ip ospf priority 0–255 для IOS узлов. Установка приоритета интерфейса на 0 немедленно удаляет этот интерфейс из выбора DR/BDR. Повышение приоритета выше значения по умолчанию (1) делает этот интерфейс более предпочтительным по сравнению с интерфейсами со значением по умолчанию.
На рисунке ниже представлен пример топологии, иллюстрирующий изменение размещения DR/BDR в сегменте сети. R4 никогда не должен становиться DR/BDR для сегмента 10.123.4.0/24, а R1 всегда должен быть DR для сегмента 10.123.4.0/24.
Чтобы предотвратить участие R4 в выборах DR / BDR, приоритет OSPF изменяется на 0. Приоритет интерфейса R1 изменится на значение выше 1, чтобы гарантировать, что он всегда побеждает в выборах DR.
В следующем примере представлена соответствующая конфигурация для R1 и R4. На R2 и R3 никаких изменений конфигурации не произошло.
Обратите внимание, что при настройке приоритета интерфейса на 0 на R4 состояние соседства с R1 изменилось. Когда приоритет интерфейса DR изменился на ноль, R4 удалился как DR, R3 был переведен из BDR в DR, а затем R1 был выбран в BDR. Поскольку R1 теперь является BDR, любым полуоткрытым соседствам было разрешено установить полное соседство с другими маршрутизаторами.
В примере ниже проверяется состояние топологии. R1 показывает приоритет 100, а R4 показывает приоритет 0. Однако R1 находится в позиции BDR, а не в роли DR, как предполагалось.
В этом примере показана нормальная работа, поскольку роль DR/BDR нельзя отобрать. Если бы все маршрутизаторы были запущены вместе, R1 был бы DR из-за wait timer в начальном процессе выбора DR OSPF. Чтобы завершить миграцию DR на R1, процесс OSPF должен быть перезапущен на R3, как показано в дальше. После перезапуска процесса соседство OSPF проверяется снова, и теперь R1 является DR для сегмента сети 10.123.4.0/24.
OSPF Network Types
Тип сети OSPF по умолчанию устанавливается на основе интерфейса, используемого для подключения, и может быть изменен независимо от фактического используемого типа интерфейса. Реализация Cisco OSPF учитывает различные носители и предоставляет пять типов сети OSPF, как указано в следующей таблице.
Non-broadcast или point-to-multipoint типы сетей выходят за рамки компетенции Enterprise Core exam, а другие типы сетей OSPF объясняются в следующих разделах.
Broadcast
Broadcast сети, такие как Ethernet, лучше определить как broadcast multi-access в отличии от non-broadcast multi-access (NBMA) сетей. Broadcast сети имеют множественный доступ в том смысле, что они способны подключать более двух устройств и широковещательные рассылки с одного интерфейса будет доступна всем интерфейсам, подключенным к сегменту.
Ethernet интерфейсу OSPF по умолчанию назначает тип сети broadcast. Для этого типа сети OSPF требуется DR из-за возможности существования нескольких узлов в сегменте и необходимости управления лавинной рассылкой LSA. Hello timer по умолчанию равен 10 секундам, как определено в RFC 2328.
Команда режима интерфейса ip ospf network broadcast переопределяет автоматически настроенный параметр и статически назначает на интерфейсе тип сети OSPF broadcast.
Point-to-Point Networks
Сеть, которая позволяет взаимодействовать только двум устройствам, считается сетью point-to-point(P2P). Из-за природы среды в сетях точка-точка не используется ARP протокол, и широковещательный трафик не становится ограничивающим фактором.
Тип сети OSPF по умолчанию установлен как point-to-point для serial интерфейсов (инкапсуляция HDLC или PPP), GRE туннелей и point-to-point Frame Relay subinterfaces. На этом типе сети могут существовать только два узла, поэтому OSPF не тратит ЦП на DR функциональность. Hello timer установлен на 10 секунд на OSPF point-to-point типе сети.
На рисунке ниже показано serial соединение между R1 и R2.
В примере ниже показан соответствующий serial интерфейс и конфигурация OSPF для R1 и R2. Обратите внимание, что в конфигурации нет никаких специальных команд.
В следующем примере посмотрим, что для OSPF network type установлено значение POINT_TO_POINT, что указывает на тип сети OSPF point-to-point.
Пример ниже показывает, что типы сетей OSPF point-to-point не используют DR. Обратите внимание на дефис (-) в поле «State».
Интерфейсы, использующие тип сети OSPF P2P, быстрее формируют смежность OSPF, потому что выбор DR игнорируется и wait timer нет. Интерфейсы Ethernet, которые напрямую связаны только с двумя спикерами OSPF в подсети, можно изменить на тип сети OSPF point-to- poin, чтобы быстрее формировать смежности и упростить вычисление SPF. Команда уровня интерфейса ip ospf network point-to-point устанавливает интерфейс как OSPF point-to-point тип сети.
Loopback Networks
OSPF network type loopback включен по умолчанию на loopback интерфейсов и может использоваться только на них. Тип сети loopback утверждает, что IP-адрес всегда объявляется с длиной префикса /32, даже если это не так. Это поведение можно продемонстрировать, используя рисунок выше и анонсируя интерфейс Loopback 0. В следующем примере представлена обновленная конфигурация. Обратите внимание, что тип сети для R2 loopback интерфейса настроен на тип сети OSPF point-to-point.
Проверим типы сети R1 and R2 loopback интерфейсов. На примере ниже показано что они отличаются из-за внесенного изменения.
В следующем примере показаны таблицы маршрутизации R1 и R2. Обратите внимание, что адрес loopback интерфейса R1 - это сеть /32, а loopback интерфейса R2 - сеть /24. Оба loopback интерфейса настроены для сети /24; однако, поскольку Lo0 маршрутизатора R1 имеет тип сети OSPF loopback, он анонсируется как сеть /32.