По материалам
кафедры
ИСиКТ ВГУЭС
Максим Мамаев На главную
Предмет работы: конфигурирование протокола 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
Конфигурирование протокола OSPF выполняется в контексте, попасть в который можно командой
router(config)#router ospf N router(config-router)#где N - номер OSPF-процесса, произвольное число (на маршрутизаторе может работать несколько независимых OSPF-процессов, но это встречается крайне редко). В лабораторных работах следует использовать N=1.
Кроме того, ряд параметров OSPF относятся к интерфейсам и, соответственно, конфигурируются в контексте интерфейсов.
Единственной обязательной командой конфигурации OSPF является команда (или несколько команд) network:
router(config-router)#network префикс шаблон area номерПолучив такую команду, маршрутизатор выполняет следующие действия:
Например, если у маршрутизатора есть интерфейсы с адресами 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.
В обычной практике для отбора интерфейсов используют три метода:
Только основной IP-адрес интерфейса (не secondary) участвует в процессе отбора.
Следует четко понимать, что префикс и шаблон, указанные в команде 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 целесообразно использовать в качестве доноров).
Метрики интерфейсов вычисляются автоматически исходя из пропускной способности интерфейса (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 метрика
Подчеркнем, что речь идет о метрике связей, исходящих из интерфейса.
Каждый OSPF-маршрутизатор идентифицируется некоторым IP-адресом, который помещается во все OSPF-пакеты, сгенерированные маршрутизатором. Поскольку у маршрутизатора есть несколько IP-адресов, то выбор идентификатора производится в следующей последовательности:
router(config-router)#router-id IP-адрес
Следует иметь в виду, что идентификатор должен быть стабильным, поскольку при изменении индентификатора OSPF разрывает отношения смежности и устанавливает их заново с новым идентификатором. В частности, если идентификатор берется от обычного интерфейса, то при отключении интерфейса идентификатор меняется.
Кроме того, при установлении виртуальных связей (virtual link) в соответствующей конфигурационной команде (area N virtual-link router-ID) указывается идентификатор маршрутизатора, с которым устанавливается виртуальная связь. Если после перезагрузки данного маршрутизатора выяснится, что идентификатор удаленного маршрутизатора по какой-то причине изменился, то вирутальная связь установлена не будет.
Поэтому обычная практика состоит в создании интерфейса loopback с целью привязки идентификатора к IP-адресу этого интерфейса (поскольку loopback никогда не отключается). Обратите внимание, что при наличии нескольких интерфейсов loopback, выбирается наибольший IP-адрес, и повлиять на процесс выбора (явно указать, какой из интерфейсов loopback вы хотели бы использовать) нельзя.
Отметим, что идентификатор маршрутизатора может быть произвольным. В частности, он не обязательно должен принадлежать адресному пространству OSPF-системы. OSPF не генерирует никаких дейтаграмм, направленных с этого адреса или на него. Единственное требование к идентификатору - уникальность в пределах OSPF-системы.
Чтобы в 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.
Вопросы редистрибуции маршрутов между различными протоколами маршрутизации рассматриваются в отдельной теме.
Суммирование маршрутов на границе области производится командой
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".
Просмотр текущей информации об 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