На главную

По материалам  кафедры ИСиКТ ВГУЭС  

 Максим Мамаев


Протокол OSPF


Общие сведения

Предмет работы: конфигурирование протокола OSPF на модели корпоративной сети. (Взаимодействие с другими протоколами маршрутизации рассматривается отдельно в теме "Redistribution".)

Предварительная подготовка: глава 5 "Протокол OSPF" учебного пособия.


CG: Configuring OSPF
CG: Configuring IP Routing Protocol-Independent Features
CR: OSPF Commands
CR: IP Routing Protocol-Independent Commands
CR: debug ip ospf
TAC: OSPF

Информация к действию

5.1 Базовая конфигурация OSPF

5.1.1 Минимальная конфигурация

Конфигурирование протокола OSPF выполняется в контексте, попасть в который можно командой

router(config)#router ospf N
router(config-router)#
где N - номер OSPF-процесса, произвольное число (на маршрутизаторе может работать несколько независимых OSPF-процессов, но это встречается крайне редко). В лабораторных работах следует использовать N=1.

Кроме того, ряд параметров OSPF относятся к интерфейсам и, соответственно, конфигурируются в контексте интерфейсов.

Единственной обязательной командой конфигурации OSPF является команда (или несколько команд) network:

router(config-router)#network префикс шаблон area номер
Получив такую команду, маршрутизатор выполняет следующие действия:
  1. Находит все интерфейсы, чьи IP-адреса попадают в диапазон, специфицированный в команде network. При этом шаблон функционирует также, как и списках доступа, то есть, IP-адрес интерфейса отбирается, если он побитно совпадает с префиксом в тех битовых позициях, где у шаблона стоят нули.

    Например, если у маршрутизатора есть интерфейсы с адресами 1.2.3.4, 1.2.5.25, 1.2.6.36, а в команде network указаны префикс 1.2.4.0 и шаблон 0.0.3.255, то отбираются интерфейсы 1.2.5.25 и 1.2.6.36, поскольку шаблон требует совпадения первых 22 бит адресов интерфейсов с префиксом 1.2.4.0.

    В обычной практике для отбора интерфейсов используют три метода:

    • В команде network указывается адрес сети и инвертированная маска. Отбирается интерфейс, непосредственно подключенный к указанной сети. (Напомним, что к одной IP-сети маршрутизатор позволяет подключить только один интерфейс.) Если адрес интерфейса будет изменен в пределах той же IP-сети, интерфейс все равно будет отбираться командой network.
    • В команде network указывается некоторый объемлющий префикс и его инвертированная маска. Отбираются все интерфейсы, непосредственно подключенные к сетям в пределах объемлющего префикса. Например, если для корпоративной сети предприятия выделен префикс 1.1.0.0/16, то для того, чтобы отобрать все интерфейсы любого маршрутизатора предприятия (не вдаваясь в подробности того, как именно выделены на предприятии IP-сети), на каждом маршрутизаторе достаточно указать префикс 1.1.0.0, шаблон 0.0.255.255.
    • В команде network указывается адрес интерфейса и шаблон 0.0.0.0 ("строгое соответствие"). Отбирается интерфейс с указанным адресом. Если адрес интерфейса будет изменен, даже в пределах той же IP-сети, то интерфейс уже не будет отбираться командой network.

    Только основной IP-адрес интерфейса (не secondary) участвует в процессе отбора.

  2. На интерфейсах, отобранных на предыдущем шаге запускается протокол OSPF. При этом интерфейсы помещаются в ту область OSPF-системы, которая указана в параметре area. Магистраль (backbone) - area 0.
  3. В базу данных состояния связей добавляются записи, соответствующие сетям, к которым подключены отобранные интерфейсы.

    Следует четко понимать, что префикс и шаблон, указанные в команде network (несмотря на название команды), не устанавливаются в базу данных, а служат только для отбора интерфейсов. После того как интерфейсы отобраны, префикс и шаблон из команды network маршрутизатором не используются и на формирование базы данных влияния не оказывают.

    Например, интерфейс маршрутизатора 1.2.3.4/24 подключен к тупиковой сети Ethernet. Этот интерфейс может быть отобран в область 0 OSPF-системы любой из следующих команд:

          network 1.2.0.0 0.0.255.255 area 0
          network 1.2.3.0 0.0.0.255 area 0
          network 1.2.3.4 0.0.0.0 area 0
    
    Независимо от того, какая команда network была использована, в базу данных будет внесена тупиковая сеть 1.2.3.0/24.

Обратите внимание, что IOS использует именно IP-адреса, а не имена интерфейсов для отбора в OSPF-систему. Эту особенность необходимо учитывать при использовании ненумерованных интерфейсов (ip unnumbered интерфейс-донор): чтобы ненумерованный интерфейс был отобран, необходимо, чтобы был отобран интерфейс-донор. И наоборот: если отобран интерфейс-донор, то в ту же самую область будут отобраны и все ненумерованные интерфейсы, которые используют IP-адрес данного донора. Последнее означает, что если вы предполагаете поместить ненумерованные интерфейсы в различные области, то вы должны иметь на маршрутизаторе интерфейсов-доноров по числу областей. На практике значит, что для каждой области должен быть создан свой Loopback (поскольку именно интерфейсы loopback целесообразно использовать в качестве доноров).

5.1.2 Метрики

Метрики интерфейсов вычисляются автоматически исходя из пропускной способности интерфейса (108/bandwidth). Некоторые значения приведены ниже:
Последовательный интерфейс 56 кбит/с 1785
Последовательный интерфейс 64 кбит/с 1562
Последовательный интерфейс 1544 кбит/с 64
Последовательный интерфейс 2048 кбит/с 48
Ethernet 10 Мбит/с 10
FastEthernet 1
Асинхронный последовательный интерфейс 10000

Напомним, что величину bandwidth интерфейса можно изменить одноименной командой в контексте конфигурации интерфейса. Более того, bandwidth последовательных интерфейсов требует ручной модификации, если реальное значение отличается от значения по умолчанию (1544 кбит/с). Неверное значение bandwidth приведет к различным негативным эффектам (неверное вычисление метрик, некорректное управление пакетными очередями и др.).

OSPF-метрика интерфейса может быть также непосредственно изменена командой

router(config-if)#ip ospf cost метрика

Подчеркнем, что речь идет о метрике связей, исходящих из интерфейса.

5.1.3 Идентификаторы маршрутизаторов

Каждый OSPF-маршрутизатор идентифицируется некоторым IP-адресом, который помещается во все OSPF-пакеты, сгенерированные маршрутизатором. Поскольку у маршрутизатора есть несколько IP-адресов, то выбор идентификатора производится в следующей последовательности:

  1. Индентификатор явно указан командой
    router(config-router)#router-id IP-адрес
  2. Если идентификатор не указан явно, то в качестве идентификатора выбирается наибольший из IP-адресов интерфейсов Loopback.
  3. Иначе если интерфейсы Loopback отсутствуют, то в качестве идентификатора выбирается наибольший из IP-адресов интерфейсов маршрутизатора.

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

Кроме того, при установлении виртуальных связей (virtual link) в соответствующей конфигурационной команде (area N virtual-link router-ID) указывается идентификатор маршрутизатора, с которым устанавливается виртуальная связь. Если после перезагрузки данного маршрутизатора выяснится, что идентификатор удаленного маршрутизатора по какой-то причине изменился, то вирутальная связь установлена не будет.

Поэтому обычная практика состоит в создании интерфейса loopback с целью привязки идентификатора к IP-адресу этого интерфейса (поскольку loopback никогда не отключается). Обратите внимание, что при наличии нескольких интерфейсов loopback, выбирается наибольший IP-адрес, и повлиять на процесс выбора (явно указать, какой из интерфейсов loopback вы хотели бы использовать) нельзя.

Отметим, что идентификатор маршрутизатора может быть произвольным. В частности, он не обязательно должен принадлежать адресному пространству OSPF-системы. OSPF не генерирует никаких дейтаграмм, направленных с этого адреса или на него. Единственное требование к идентификатору - уникальность в пределах OSPF-системы.

5.1.4 Распространение маршрута по умолчанию и внешних статических маршрутов

Чтобы в OSPF-системе появился маршрут по умолчанию, ведущий за пределы системы, на соответствующем пограничном маршрутизаторе подается команда:

router(config-router)#default-information originate [always]

Необязательный параметр always заставляет маршрутизатор объявлять в OSPF-систему маршрут по умолчанию, даже если сам маршутизатор такого маршрута не имеет.

Маршрут по умолчанию объявляется в OSPF-систему как внешний, а маршрутизатор, объявивший этот маршрут автоматически становится ASBR. Разумеется, этот маршрутизатор не может целиком принадлежать тупиковой области.

Статические маршруты добавляются в OSPF-систему командой

router(config-router)#redistribute static subnets

Аналогично маршруты к непосредственно подсоединенным сетям, которые не входят в OSPF-систему, добавляются в OSPF командой

router(config-router)#redistribute connected subnets

Все эти маршруты по отношению к OSPF являются внешними, а объявляющие маршрутизаторы становятся ASBR.

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

5.2 Типы сетей, обнаружение соседей и выбор выделенных маршрутизаторов

5.3 Фильтрация и суммирование маршрутов между областями

Суммирование маршрутов на границе области производится командой

router(config-router)#area N range IP-префикс маска

Эта команда означает, что при объявлении в соседние области маршруты ко всем сетям области N, попадающим в указанный префикс, объявляться не будут, а вместо этого будет объявляться только указанный префикс.

При выполнении суммирования необходимо создать защитный маршрут. Начиная с версии IOS 12.1(6) защитный маршрут создается автоматически. Если его по какой-то причине необходимо не создавать, дается команда

router(config-router)#no discard-route

В ранних версиях IOS защитный маршрут создается вручную:

router(config)#ip route IP-префикс маска Null0

Для объявления области N тупиковой следует подать команду

router(config-router)#area N stub [no-summary]

Необязательный параметр no-summary дополнительно запрещает объявления внутри области маршрутов до других сетей этой же OSPF-системы (без этого параметра запрещаются объявления внутрь области только внешних маршрутов). Тип области, для которой указан параметр no-summary, называется totally stubby.

Область должна быть определена как тупиковая на всех маршрутизаторах, к ней подсоединенных, иначе они не найдут друг с другом общего языка. Однако указание no-summary имеет смысл только на ABR.

Не совсем тупиковые области (NSSA) будут рассмотрены в теме "Redistribution".

5.4 Show & debug

Просмотр текущей информации об OSPF-процессе в контексте администратора:

router#show ip ospf

В субконтексте "show ip ospf" есть дополнительные полезные команды:

router#show ip ospf database
сборная информация о базе данных состояния связей в областях, к которым подсоединен маршрутизатор. Для понимания вывода следует обратиться к пп. 5.5.7 (перечислены типы записей) и 5.5.8 (расшифрованы значения Link ID) учебного пособия.

Для получения полной информации по записям определенного типа подать команду

router#show ip ospf database тип_записи
где тип_записи: router, network, summary, asbr-summary, external для типов соответственно 1-5 (см. п. 5.5.7 учебного пособия).

router#show ip ospf neighbor [detail]
список соседей и их состояния.

router#show ip ospf interface [интерфейс]
информация о параметрах и статусе интерфейсов, имеющая отношение к OSPF.

Отладочные команды:

router#debug ip ospf packet
router#debug ip ospf events
router#debug ip ospf spf statistic



На главную

 


Сайт управляется системой uCoz