OSPF (663887), страница 2
Текст из файла (страница 2)
(config-if)# shutdown ! интерфейс "упал"
Router (config-if)# no shutdown ! интерфейс "ожил"
3.5 Топология OSPF
Пространство адресов в OSPF организуеся по иерархическому принципу, распадаясь на непересекающиеся area (зоны?)
3.6 Классификация OSPF роутеров
Area Border Router (ABR) - имеет интерфейсы, подключенные сразу к нескольким area. Для каждого из таких интерфейсов выполняет свою копию алгоритма роутинга.
Internal router - все интерфейсы подключены к сетям, расположенным в одной и той же area. Исполняет одну копию алгоритма роутинга.
Backbone router - имеет интерфейс к бэкбону.
Autonomous System Boundary router - обменивается информацией с роутерами, принадлежащими разным автономным системам
4. Базовая конфигурация OSPF
4.1 Минимальная конфигурация
Конфигурирование протокола OSPF выполняется в контексте, попасть в который можно командой
router(config)#router ospf N
router(config-router)#
где N - номер OSPF-процесса, произвольное число (на маршрутизаторе может работать несколько независимых OSPF-процессов, но это встречается крайне редко). В лабораторных работах следует использовать N=1.
Кроме того, ряд параметров OSPF относятся к интерфейсам и, соответственно, конфигурируются в контексте интерфейсов.
Единственной обязательной командой конфигурации OSPF является команда (или несколько команд) network:
router(config-router)#network префикс шаблон area номер
Получив такую команду, маршрутизатор выполняет следующие действия:
-
Находит все интерфейсы, чьи 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) участвует в процессе отбора.
-
На интерфейсах, отобранных на предыдущем шаге запускается протокол OSPF. При этом интерфейсы помещаются в ту область OSPF-системы, которая указана в параметре area. Магистраль (backbone) - area 0.
-
В базу данных состояния связей добавляются записи, соответствующие сетям, к которым подключены отобранные интерфейсы.
Следует четко понимать, что префикс и шаблон, указанные в команде 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 целесообразно использовать в качестве доноров).
4.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 метрика
Подчеркнем, что речь идет о метрике связей, исходящих из интерфейса.
4.3 Идентификаторы маршрутизаторов
Каждый OSPF-маршрутизатор идентифицируется некоторым IP-адресом, который помещается во все OSPF-пакеты, сгенерированные маршрутизатором. Поскольку у маршрутизатора есть несколько IP-адресов, то выбор идентификатора производится в следующей последовательности:
-
Индентификатор явно указан командой
router(config-router)#router-id IP-адрес
-
Если идентификатор не указан явно, то в качестве идентификатора выбирается наибольший из IP-адресов интерфейсов Loopback.
-
Иначе если интерфейсы Loopback отсутствуют, то в качестве идентификатора выбирается наибольший из IP-адресов интерфейсов маршрутизатора.
Следует иметь в виду, что идентификатор должен быть стабильным, поскольку при изменении индентификатора OSPF разрывает отношения смежности и устанавливает их заново с новым идентификатором. В частности, если идентификатор берется от обычного интерфейса, то при отключении интерфейса идентификатор меняется.
Кроме того, при установлении виртуальных связей (virtual link) в соответствующей конфигурационной команде (area N virtual-link router-ID) указывается идентификатор маршрутизатора, с которым устанавливается виртуальная связь. Если после перезагрузки данного маршрутизатора выяснится, что идентификатор удаленного маршрутизатора по какой-то причине изменился, то вирутальная связь установлена не будет.
Поэтому обычная практика состоит в создании интерфейса loopback с целью привязки идентификатора к IP-адресу этого интерфейса (поскольку loopback никогда не отключается). Обратите внимание, что при наличии нескольких интерфейсов loopback, выбирается наибольший IP-адрес, и повлиять на процесс выбора (явно указать, какой из интерфейсов loopback вы хотели бы использовать) нельзя.
Отметим, что идентификатор маршрутизатора может быть произвольным. В частности, он не обязательно должен принадлежать адресному пространству OSPF-системы. OSPF не генерирует никаких дейтаграмм, направленных с этого адреса или на него. Единственное требование к идентификатору - уникальность в пределах OSPF-системы.
4.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.
Вопросы редистрибуции маршрутов между различными протоколами маршрутизации рассматриваются в отдельной теме.
4.5 Поддержка вариаций OSPF разных производителей
CISCO-router ----- > non-CISCO-router
Router (config-if)# ip ospf cost cost
При вычислении пути Cisco-роутеры для оценки стоимости интерфейса используют ширину линка (bandwidth). Реализации OSPF других производителе могут использовать для определения цены другие алгоритмы. Для согласования стоимость линка в этом случае придется задавать вручную командой ip osf cost
5. Oбнаружение соседей и выбор выделенных маршрутизаторов
5.1 Фильтрация и суммирование маршрутов между областями
Суммирование маршрутов на границе области производится командой
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.