2. OSPF: "открыть первым наикратчайший маршрут"
(Open Shortest Path First)
OSPF это альтернативный RIP протокол внутренних маршрутизаторов. В OSPF сняты все ограничения, присущие для RIP. OSPF Version 2 описывается в RFC 1247 [Moy 1991].
OSPF - протокол состояния канала (link-state) , тогда как RIP - протокол вектора расстояний (distance-vector) . Термин вектор расстояний означает, что сообщения, посылаемые RIP, содержат вектор расстояний (счетчик пересылок). Каждый маршрутизатор обновляет свою таблицу маршрутизации на основании векторов расстояний, который он получает от своих соседей.
Когда используется протокол состояния канала, маршрутизатор не обменивается информацией о расстояниях со своими соседями. Вместо этого каждый маршрутизатор активно тестирует статус своих каналов к каждому соседнему маршрутизатору и посылает эту информацию другим своим соседям, которые могут направить поток данных в автономную систему. Каждый маршрутизатор принимает информацию о состоянии канала и уже на ее основании строит полную таблицу маршрутизации.
С практической точки зрения основное отличие заключается в том, что протокол состояния канала работает значительно быстрее, чем протокол вектора расстояний. Нужно отметить, что в случае протокола состояния канала значительно быстрее осуществляется сходимость сети. Под понятием сходимости (converge) мы подразумеваем стабилизацию сети после каких-либо изменений, как, например, поломки маршрутизатора или выхода из строя канала. В разделе 9.3 [Perlman 1992] сравниваются между собой два типа протоколов маршрутизации.
OSPF также отличается от RIP (как и многие другие протоколы маршрутизации) тем, что OSPF использует непосредственно IP. Это означает, что он не использует UDP или TCP. OSPF имеет собственную величину, которая устанавливается в поле протокола (protocol) в IP заголовке (рисунок 3.1).
К тому же, так как OSPF это протокол состояния канала, а не протокол вектора расстояний, он имеет и другие характеристики, которые делают его предпочтительным по отношению к RIP.
OSPF может рассчитать отдельный набор маршрутизаторов для каждого типа сервиса IP (type-of-service) (рисунок 3.2). Это означает, что для любого пункта назначения может быть несколько пунктов в таблице маршрутизации, по одному для каждого типа сервиса IP.
Каждому интерфейсу назначается цена. Она может быть назначена на основании пропускной способности, времени возврата, надежности или по какому-либо другому параметру. Отдельная цена может быть назначена для каждого типа сервиса IP.
Если существует несколько маршрутов к одному пункту назначения с одинаковой ценой, OSPF распределяет траффик (поток данных) поровну между этими маршрутами. Это называется балансом загруженности.
OSPF поддерживает подсети: маска подсети соответствует каждому объявленному маршруту. Это позволяет разбить IP адрес любого класса на несколько подсетей различного размера. (Мы показали это в примере в разделе "Пример подсети" главы 3 и назвали подсетями переменной длины.) Маршруты к хостам объявляются с маской подсети, из всех единичных бит. Маршрут по умолчанию объявляется как IP адрес 0.0.0.0 с маской из всех нулевых битов.
Каналы точка-точка между маршрутизаторами не имеют IP адресов на каждом конце. Это называется сетями без адреса (unnumbered). Такой подход позволяет сэкономить IP адреса - очень ценный ресурс в настоящее время!
Используется простая схема аутентификации. Может быть указан пароль в виде открытого текста, так же как это делается в схеме RIP-2 (раздел "RIP Version 2").
OSPF использует групповую адресацию (глава 12) вместо широковещательной, что уменьшает загруженность систем, которые не распознают OSPF.
Так как большинство поставщиков маршрутизаторов поддерживают OSPF, он начинает постепенно замещать собой RIP в большинстве сетей.
Начало формы
OSPF роутер
ID
LSA -
Link State
Advertisment
Hello
protocol
Распределение
обязанностей
между роутерами
в multicast-сети
Types LSAs
Суммаризация
роутинга
LSM
Диалекты разных
производителей
3.1 OSPF router ID
Порядковый
номер, под которым
роутер известен
в OSPF. Используется
при работе
протокола между
роутерами для
координации.
По умолчанию
- старший IP-адрес
на активном
интерфейсе.
LSA - оповещающее
сообщение,
посылается
роутером на
активный интерфейс.
Содержит всю
информацию
о вызванном
изменении
роутинга.
Если LSA принес
изменения, то
они вносятся
в топологическую
базу, по SFP-алгоритму
перестраивается
таблица роутинга
и LSA рассылается
дальше. Иначе
LSA дальше не
рассылается. Посланный
пакет распространяется
далее всеми
роутерами (если
в этом есть
необходимость).
Посылается
только при
изменении
состояния
линка. А так же
посылается
каждые 30 минут.
(На всякий случай)
Пример:
Router# show ip ospf database OSPF Router with
id(192.168.239.66) (Autonomous system 300)
Displaying Router Link States(Area 0.0.0.0)
Link ID ADV Router Age Seq# Checksum Link
count 172.18.21.6 172.18.21.6 1731 0x80002CFB 0x69BC 8 172.18.21.5
172.18.21.5 1112 0x800009D2 0xA2B8 5 172.18.1.2 172.18.1.2 1662
0x80000A98 0x4CB6 9 172.18.1.1 172.18.1.1 1115 0x800009B6 0x5F2C 1
172.18.1.5 172.18.1.5 1691 0x80002BC 0x2A1A 5
Displaying Net Link States(Area 0.0.0.0)
Link ID ADV Router Age Seq# Checksum 172.18.1.3 192.20.239.66 1245
0x800000EC 0x82E
Displaying Summary Net Link
States(Area 0.0.0.0)
Link ID ADV Router Age
Seq# Checksum 172.18.240.0 172.18.241.5 1152 0x80000077 0x7A05
172.18.241.0 172.18.241.5 1152 0x80000070 0xAEB7 172.18.244.0
172.18.241.5 1152 0x80000071 0x95CB
Выводит
листинг
с временами
последний
обновлений
LSA пакетов
с соседних
роутеров.
Point-to-Point -
сосед
определяется
однозначно
- это "тот-конец"
Multiaccess
- соседи
находятся
по отклику
на Hello protocol (напр.
ethernet, выделяется
Designate Router (за главного)
FDDI)
Nonbroadcast
- соседей
придется
задавать
явно при
Multiaccess
конфигурации
OSPF (напр. Frame
relay, X.25)
Рассылать
в multicast-сети LSA-сообщения
от каждого к
каждому - слишком
дорогое удовольствие.
"Соседи" все
свои LSA шлют только
выделенному
Designed Router'у(DR). DR рассылает
аккумулированные
LSA всем "соседям".
DR выбирается
по протоколу
Hello. Hello использует
сетевые multicast сообщения
по 224.0.0.5.
Выбирается
так же Backup Designate Routera (BDR) -
запасной. Он
автоматически
заменит DR если
от того не придет
ни одного LSA дольше
определенного
времени. Став
DR он проинициирует
выборы нового
BDR.
Вновь включенный
router отдает свой
LSA DR'у (точнее DR+BDR)
посылая multicast по
224.0.0.6
DR рассылает
свои LSA всем "своим"
посылая multicast по
224.0.0.5
Пример:
Router# debug ip osfp events Router ! Листинг этой команды покажет список рассылаемых LSA
(config-if)# shutdown ! интерфейс
"упал"
Router (config-if)# no shutdown ! интерфейс
"ожил"
Пространство
адресов в OSPF
организуеся
по иерархическому
принципу, распадаясь
на непересекающиеся
area (зоны?)
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.
Вопросы редистрибуции маршрутов между различными протоколами маршрутизации рассматриваются в отдельной теме.
CISCO-router ----- > non-CISCO-router
Router (config-if)# ip ospf cost cost
При вычислении пути Cisco-роутеры для оценки стоимости интерфейса используют ширину линка (bandwidth). Реализации OSPF других производителе могут использовать для определения цены другие алгоритмы. Для согласования стоимость линка в этом случае придется задавать вручную командой ip osf cost
Суммирование маршрутов на границе области производится командой
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.2 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
6.КРАТКИЙ СПИСОК OSPF КОМАНД
area authentication
area virtual-link
default-information originate (OSPF)
default-metric (BGP, EGP, OSPF, and RIP)
ip ospf authentication-key
ip ospf cost
ip ospf dead-interval
ip ospf hello-interval
ip ospf message-digest-key
ip ospf network
ip ospf priority
ip ospf retransmit-interval
ip ospf transmit-delay
ip ospf-name-lookup
match route-type
network area
neighbor (OSPF)
ospf auto-cost-determination
router ospf
redistribute
set metric-type
show ip ospf
show ip ospf border-routers
show ip ospf database
show ip ospf interface
show ip ospf neighbor
show ip ospf virtual-links
debug ip ospf packet
debug ip ospf spf statistic
... мощные аппаратные маршрутизаторы, позволяет наилучшим образом организовать обмен информацией между подразделениями фирмы в реальном масштабе времени. 2.Технические возможности маршрутизаторов. 2.1 Принципы работы маршрутизаторов Основные принципы, по которым создаются маршрутизаторы Cisco - это универсальность и масштабируемость как на аппаратном, так и на программном уровне. Большой выбор ...
... (Open Shortest Pass First) Назначение. Протокол OSPF (Open Shortest Pass First, алгоритмы предложены Дейкстрой) является альтернативой RIP в качестве внутреннего протокола маршрутизации. OSPF представляет собой протокол состояния маршрута (в качестве метрики используется – коэффициент качества обслуживания). Каждый маршрутизатор обладает полной информацией о состоянии всех интерфейсов всех ...
... подсети. Другие маршрутизаторы просто объявляют о своей связи с выделенным маршрутизатором. Это делает объявления о связях (которых много) более краткими, размером с объявление о связях отдельной сети. Для начала работы маршрутизатора OSPF нужен минимум информации - IP-конфигурация (IP-адреса и маски подсетей), некоторая информация по умолчанию (default) и команда на включение. Для многих сетей ...
... туннелирования показан на рис. 6. Рис. 6. Туннелирование с использованием GRE Две локальные сети, использующие протокол IPX, разделены некоторой сетью, работающей по протоколу IP. При использовании GRE маршрутизаторы Cisco, находящиеся на краях этой сети (назовем ее IP WAN) могут инкапсулировать дейтаграммы IPX в пакеты IP для передачи первых через сеть IP. Внутри туннелированных сетей сетевые ...
0 комментариев