Динамические протоколы маршрутизации. Протокол динамической маршрутизации OSPF

Крупные сети, такие как Internet, организованы как множество автономных систем (autonomous system – AS). Каждая из них обычно администрируется как отдельная сетевая структура, поэтому использование одного протокола маршрутизации в таких сетях маловероятно. Как мы уже знаем маршрутизатор, исходя из IP-адреса, указанного в заголовке пакета, в соответствии с своей таблицей маршрутизации определяет путь для передаваемых данных.
Таблицы маршрутизации задаются как вручную (статическая маршрутизация), так и динамически (динамическая маршрутизация).

Статическая маршрутизация

Так как статические маршруты настраиваются вручную, то любые изменения сетевой топологии требуют участия администратора для корректировки таблиц маршрутизации. В рамках маленькой сети такие изменения незначительны и происходят крайне редко. И наоборот, в крупных сетях корректировка таблиц маршрутизации может потребовать огромных затрат времени.
Если доступ к сети может быть получен только по одному направлению, то указание статического маршрута может оказаться вполне достаточным. Такой тип сети носит название тупиковой сети (stub network). Для настройки статической маршрутизации на роутере необходимо внести запись о сети, которую может достигнуть пакет, отправленный в определенный интерфейс.
Для этого необходимо в конфигурационном режиме ввести команду ip route, в которой указываем IP-адрес и маску сети назначения, тип и номер интерфейса, через который эта сеть может быть достигнута

R1(config)# ip route

Пример: Для сети, изображенной на рисунке необходимо настроить маршрутизацию таким образом, чтобы роутер (R1) пересылал пакеты в сети 92.154.228.0/22 и 92.154.232.0/22

Решением будет указанием 2 команд:

R1(config)# ip route 92.154.228.0 255.255.252.0 Se 1/0
R1(config)# ip route 92.154.232.0 255.255.252.0 Se 1/0

Для проверки конфигурации набираем команду show ip route

R1# show ip route
Codes: C — connected, S — static, I — IGRP, R — RIP, M — mobile,
D — EIGRP, EX — EIGRP external, O — OSPF,

C 92.154.224.0/22 is directly connected, FastEthernet0/0
S 92.154.228.0/22 is directly connected, Serial1/0
S 92.154.232.0/22 is directly connected, Serial1/0
C 92.154.252.0/30 is directly connected, Serial1/0

Как видно из вывода команды кроме подсоединенных сетей появились 2 записи по которым роутер будет все пришедшие к нему пакеты для сетей 92.154.228.0/22 и 92.154.232.0/22 маршрутизировать на интерфейс Serial1/0.

Для того чтобы пакеты из этих сетей уходили обратно необходимо подобным образом настроить роутеры R2 и R3

R2(config)# ip route 92.154.224.0 255.255.252.0 serial 1/0
R2(config)# ip route 92.154.232.0 255.255.252.0 serial 1/1

R3(config)# ip route 92.154.224.0 255.255.252.0 serial 1/0
R3(config)# ip route 92.154.228.0 255.255.252.0 serial 1/0

Еще настроить статическую маршрутизацию можно указав в команде ip route IP-адрес интерфейса следующего транзитного маршрутизатора вместо типа и номера интерфейса роутера, через который может быть достигнута сеть назначения. Например конфигурация роутера R1 для нашего примера будет:

R1(config)# ip route 92.154.228.0 255.255.252.0 92.154.252.2

R1(config)# ip route 92.154.232.0 255.255.252.0 92.154.252.2

R1# show ip route static
92.0.0.0/8 is variably subnetted, 4 subnets, 2 masks
S 92.154.228.0/22 via 92.154.252.2
S 92.154.232.0/22 via 92.154.252.2

Для отмены статического маршрута используется команда no ip route

Динамическая маршрутизация

При динамической маршрутизации происходит обмен маршрутной информацией между соседними маршрутизаторами, в ходе которого они сообщают друг другу, какие сети в данный момент доступны через них. Информация обрабатывается и помещается в таблицу маршрутизации. К наиболее распространенным внутренним протоколам маршрутизации относятся:
RIP (Routing Information Protocol) — протокол маршрутной информации
OSPF (Open Shortest Path First) — протокол выбора кратчайшего маршрута
EIGRP (Enhanced Interior Gateway Routing Protocol) — усовершенствованный протокол маршрутизации внутреннего шлюза
IGRP (Interior Gateway Routing Protocol) — протокол маршрутизации внутреннего шлюза

Протокол динамической маршрутизации выбирается исходя из множества предпосылок (скорость конвергенции, размер сети, задействование ресурсов, внедрение и сопровождение и др.) поэтому прежде всего, во внимание принимаются такие характеристики, как размер сети, доступная полоса пропускания, аппаратные возможности процессоров маршрутизирующих устройств, модели и типы маршрутизаторов.
Большинство алгоритмов маршрутизации может быть отнесено к одной из двух категорий: дистанционно-векторные протоколы (RIPv1, RIPv2, RIPng, IGRP, EIGRP, EIGRP for IPv6) и протоколы с учетом состояния канала (OSPFv2, OSPFv3, IS-IS, IS-IS for IPv6).

Routing Information Protocol (RIP)

Протокол RIP является дистанционно-векторным протоколом маршрутизации. Протоколы динамической маршрутизации определяют оптимальный путь к необходимой сети на основании значения, которое называется метрикой. В качестве метрики в протоколе RIP используется количество транзитных устройств или переходов (hop count – прыжок пакета) из одной сетевой структуры в другую. Максимальное число таких переходов равно 15. А все сети, число переходов до которых превышает 15, считаются недостижимыми. Маршрутизаторы, на которых настроен протокол RIP, периодически (по умолчанию каждые 30 с) пересылают полные анонсы маршрутов, в которых содержится информация обо всех известных им сетях.

Работа протокола RIP

Рассмотрим процесс обработки маршрутизатором R1 маршрута к сети 172.30.22.0 Протокол RIP настроен на обоих роутерах R1 и R2 во все непосредственно подсоединенные сети.

Сеть 172.30.22.0 напрямую подключена к маршрутизатору R2, поэтому счетчик переходов для нее равен 0
Когда R2 пересылает анонс маршрута к такой сети, он устанавливает значение счетчика равным 1. Получив анонс от R2, маршрутизатор R1 заносит маршрут к сети 172.30.22.0 в свою таблицу маршрутизации и считает этот маршрут оптимальным, поскольку других маршрутов у него нет.
В качестве исходящего интерфейса для нового маршрута R1 использует S0/0, поскольку анонс был получен через него.
В качестве адреса следующего транзитного устройства на маршруте использует 172.30.1.2, поскольку анонс маршрутизации был получен от отправителя с этим IP-адресом.

Из анонсов маршрутов исключаются некоторые маршруты для того чтобы исключить кольцевые маршруты и зацикливание пакетов. Кольцевой маршрут образуется когда два или более маршрутизаторов пересылают друг другу пакеты по замкнутому пути при котором пакеты не достигают нужного получателя. Кольцевой маршрут будет действовать до тех пор, пока маршрутизаторы в сети не обновят свои таблицы маршрутизации. Для избежания кольцевых маршрутов, маршрутизаторы рассылают информацию об отказавшем маршруте со специальной метрикой, равной бесконечности (для протокола RIP это значение равно 16). Такая рассылка называется корректировкой маршрута.
Еще один механизм предотвращения кольцевых маршрутов – таймер хранения информации. Когда устройство получает откорректированный маршрут (с максимальной метрикой), свидетельствующий о том, что этот маршрут недоступен, запускается таймер для такого маршрута. Стандартное значение таймера хранения информации равно 180 с. До тех пор пока не истечет таймер, новая информация о маршруте не принимается устройством, но информация от соседнего маршрутизатора, который ранее анонсировал исчезнувший маршрут, принимается и обрабатывается до истечения таймера хранения информации.

Пример сети и ее настройки с использованием протокола RIP

Для настройки на маршрутизаторе протокола RIP необходимо ввести команду router rip. Далее в режиме конфигурирования протокола маршрутизации нужно ввести команду network, содержащую номер сети, подключенной непосредственно к роутеру, информацию о которой следует разглашать в рассылках. Если используется бесклассовая адресация, необходимо включить 2 версию протокола RIP командой version 2

Router1(config)# router rip
Router1(config-router)# network 92.154.224.0
Router1(config-router)# network 92.154.252.0
Router1(config-router)# version 2

Router2(config)# router rip
Router2(config-router)# network 92.154.252.0
Router2(config-router)# network 92.154.252.4
Router2(config-router)# network 92.154.228.0
Router2(config-router)# version 2

Router3(config)# router rip
Router3(config-router)# network 92.154.252.4
Router3(config-router)# network 92.154.232.0
Router3(config-router)# version 2

Проверяем таблицу маршрутизации командой

Router1# show ip route rip


R 92.154.228.0/22 via 92.154.252.2, 00:00:20, Serial1/0
R 92.154.232.0/22 via 92.154.252.2, 00:00:20, Serial1/0
R 92.154.252.4/30 via 92.154.252.2, 00:00:20, Serial1/0

Следует заметить, что соседние роутеры будут обмениваться таблицами маршрутизации RIP только в том случае, если протокол RIP настроен с обеих сторон.

OSPF

Протокол OSPF является протоколом маршрутизации с учетом состояния каналов. В этом классе протоколов в качестве метрики используется стоимость маршрута, которая рассчитывается на основе пропускной способности каждого канала на пути от маршрутизатора до необходимой сети. Поэтому процесс работы протокола OSPF условно можно разделить на три этапа: обнаружение соседних маршрутизаторов, обмен базами маршрутов и расчет оптимальных маршрутов.
Устройства, подключенные к одному каналу и участвующие в процессе обмена информацией протокола OSPF называются соседними маршрутизаторами. Для обнаружения OSPF-устройств маршрутизаторы рассылают многоадресатные Hello-пакеты через все интерфейсы, на которых настроен протокол OSPF. В запросе содержится следующая информация:
идентификатор маршрутизатора-отправителя Router ID – RID,
идентификатор зоны OSPF Area ID,
Hello-интервал,
интервал обнаружения неработоспособности устройства (dead interval),
приоритет маршрутизатора (router priority),
идентификатор RID выделенного маршрутизатора (designated router DR),
идентификатор RID резервного выделенного маршрутизатора (backup designated router BDR)
список соседних устройств, обнаруженных маршрутизатором-отправителем.

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

Например, маршрутизатор «А» получает Hello-сообщение от маршрутизатора «Б». Устройству «А» нужно уведомить маршрутизатор «Б» о том, что сообщение было получено, поэтому маршрутизатор «А» добавляет идентификатор RID маршрутизатора «Б» в свое следующее (и все последующие) Hello-сообщение. Аналогично, когда маршрутизатор «Б» получит Hello-сообщение, он добавит идентификатор RID устройства «А» в свои последующие Hello-сообщения.
Когда маршрутизатор обнаруживает свой идентификатор RID во входящем Hello-сообщении, он считает, что со смежным устройством был установлен двусторонний канал. После этого маршрутизаторы проверяют базовые настройки протокола друг у друга, содержащиеся в Hello-сообщениях: IP-адрес, маску подсети, интервал рассылки Hello-сообщений, интервал обнаружения неработоспособности соседнего устройства (dead interval), идентификатор зоны OSPF (area ID) и др. Настройки должны совпадать, иначе протокол работать не будет.
После проверки, если настройки совпадают, маршрутизаторы могут обмениваться анонсами состояния каналов (Link-State Advertisements – LSA).
После установления двустороннего канала маршрутизаторы продолжают периодически обмениваться Hello-сообщениями. Если связь отсутствуют в течение времени, которое определяется dead-интервалом, то считается, что связь с соседним устройством потеряна. Стандартно в протоколе OSPF интервал рассылки Hello-сообщений равен 10 с, dead-интервал – 40 с.
В анонсах LSA содержится подробная информация о топологии сети. Процесс рассылки этих анонсов называется лавинной рассылкой (flooding), при которой маршрутизаторы пересылают анонсы LSA своим соседям, которые, в свою очередь, рассылают их своим соседям, и так до тех пор, пока все устройства в сети не получат информацию из анонса. Анонсы LSA рассылаются периодически (по умолчанию один раз в 30 мин). По окончании процесса рассылки у всех маршрутизаторов в домене маршрутизации появится общая одинаковая информация о сети. Информация хранится в виде структуры, называемой базой данных состояния каналов link-state database – LSDB.
Когда у каждого маршрутизатора в домене маршрутизации есть идентичная копия базы LSDB, то используется технология протоколов маршрутизации с учетом состояния каналов. Устанавливаются маршруты в таблицу IP-маршрутизации: создаются записи, содержащие адрес подсети, маску, выходной интерфейс и адрес следующего транзитного устройства (next-hop). Для выполнения данной задачи используется алгоритм поиска первого кратчайшего пути Дейкстры.
Протокол OSPF выбирает маршрут между маршрутизатором и какой-либо сетью с наименьшей стоимостью. С каждым интерфейсом на маршруте связано некоторое значение стоимости. Стоимость всех интерфейсов (каналов), через которые пролегает путь к сети, суммируется и выбирается путь, стоимость которого минимальна. Таким образом, каждый маршрутизатор строит маршруты подобно древовидной структуре, в корне которой ставит себя.
Для настройки протокола OSPF используются команда router ospf, которая содержит 16-битный идентификатор процесса от 1 до 65535 и команда network, содержащая номер сети, инверсную маску (wildcard mask) и идентификатор зоны.

Рассмотрим пример настройки протокола OSPF для сети, изображенной выше.

Router1(config)# route ospf 1
Router1(config-router)# network 92.154.252.0 0.0.0.3 area 0
Router1(config-router)# network 92.154.224.0 0.0.3.255 area 0

Router2(config)# router ospf 1
Router2(config-router)# network 92.154.252.0 0.0.0.3 area 0
Router2(config-router)# network 92.154.252.4 0.0.0.3 area 0
Router2(config-router)# network 92.154.228.0 0.0.3.255 area 0

Router3(config)# router ospf 1
Router3(config-router)# network 92.154.252.4 0.0.0.3 area 0
Router3(config-router)# network 92.154.232.0 0.0.3.255 area 0

Проверяем результаты командой Router1# show ip route ospf

92.0.0.0/8 is variably subnetted, 5 subnets, 2 masks
O 92.154.228.0/22 via 92.154.252.2, 00:00:26, Serial1/0
O 92.154.232.0/22 via 92.154.252.2, 00:00:26, Serial1/0
O 92.154.252.4/30 via 92.154.252.2, 00:00:26, Serial1/0

Для просмотра списка соседних маршрутизаторов на которых настроен протокол OSPF, и информации о них используется команда show ip ospf neighbor

Router1#show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
92.154.252.5 0 FULL/ — 00:00:37 92.154.252.2 Serial1/0

Для функционирования протокола OSPF важно чтобы хотя бы один интерфейс маршрутизатора, включенный в таблицу маршрутизации протокола OSPF, должен находиться в поднятом (up) состоянии. В противном случае OSPF отключится и последующее включение возможно будет только вручную. Для избежания такой проблемы в сети необходимо настроить и включить в протокол OSPF виртуальный интерфейс loopback.
Для настройки интерфейса loopback используется команда interface loopback, после указывается номер виртуального интерфейса, например:

Router(config)# interface loopback 0
Router(config-if)# ip add 1.1.1.1 255.255.255.255

Типы маршрутизаторов OSPF

Четыре различных типа маршрутизаторов OSPF соответствуют иерархической структуре маршрутизации, применяемой в OSPF. Каждый маршрутизатор в этой иерархии выполняет уникальную роль и обладает набором свойственных только ему характеристик. На схеме показана типичная сеть OSPF, в которой несколько областей содержат маршрутизаторы OSPF разных типов.

Общее описание маршрутизаторов OSPF

Граничные маршрутизаторы области

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

Граничные маршрутизаторы автономной системы

Маршрутизаторы ASBR соединены с несколькими автономными системами и обмениваются маршрутной информацией с маршрутизаторами, находящимися в другой автономной системе. В маршрутизаторах ASBR одновременно эксплуатируются протокол OSPF и другой маршрутизирующий протокол, такой как RIP или ВGР. Маршрутизаторы ASBR обрабатывают информацию о внешних маршрутах.

Маршрутизаторы опорной области

Маршрутизаторами опорной области (Backbone Router - BR) называются маршрутизаторы, интерфейсы которых соединяют их только с опорной областью. Они не имеют интерфейсов, подключенных к другим областям OSPF.

О чем эта статья

В статье описываются протоколы динамической маршрутизации, использующие для определения оптимальности того или иного маршрута различные алгоритмы – дистанционно-векторный и состояния связи. Приведен пример настройки конфигурации протокола OSPF для пакета Quagga. Описаны особенности демонов маршрутизации routed и gated.

Преимущества и недостатки динамической маршрутизации

Динамическая маршрутизация используется преимущественно в средних и крупных сетях со сложной, часто меняющейся инфраструктурой, где прежде всего важна оперативность отслеживания и устранения проблем связи. Это достигается за счет программного управления таблицами маршрутизации при помощи демонов (в unix-подобных системах для этих целей используются процессы routed и gated). Периодический обмен информацией между маршрутизаторами осуществляется с помощью соответствующих протоколов - на основании полученных данных корректируются записи в таблицах маршрутизации.

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

Внутри- и междоменные протоколы динамической маршрутизации

По мере разрастания локальной сети вопрос эффективной организации динамической маршрутизации становится более актуальным из-за ограничения объема памяти маршрутизаторов и, как следствия, снижения быстродействия в результате увеличения нагрузки на сеть. Для его решения используется понятие «автономная система» (AS), которое представляет собой совокупность локальных сетей, объединенных единой маршрутной политикой. Протоколы, осуществляющие маршрутизацию внутри автономных систем в пределах домена, - RIP/RIPv2, IS-IS, IGRP, OSPF - входят в соответствующую группу «Interior Routing Protocols». В свою очередь, протоколы, выполняющие функцию организации маршрутизации между AS и являющиеся, своего рода, пограничными, или междоменными, - EGP, BGP - объединяются в группу Exterior Routing Protocols.

RIP (Routing Information Protocol) относится к протоколам дистанционного-векторного типа, использующим узел назначения и число хопов (переходов между транзитными узлами) до него в качестве простейшей метрики маршрутизации. В маршрутные таблицы RIP записывается информация об IP-адресах узла назначения и ближайшего шлюза, а также таймерах маршрута. Каждые 30 секунд маршрутизаторы отправляют широковещательные RIP-сообщения с текущими данными своей маршрутной таблицы, обновляя, таким образом, информацию о сети. В Unix и GNU/Linux поддержку протокола RIP первой версии (RIPv1) осуществляет демон маршрутизации routed.

Одним из недостатков протокола RIP является слабая проработка механизма обнаружения неработающих транзитных узлов, в частности, в самом формате RIP-сообщения не предусмотрено какого-либо флага, который бы фиксировал данное изменение сети. Для выявления проблемы для каждого транзитного узла существует период TTL (Time-to-Live), равный шестикратному периоду рассылки векторов по сети. Маршрут считается недоступным, если по истечении указанного времени он не смог отправить соответствующий RIP-сообщение. На практике обновление маршрутных таблиц подобным образом происходит достаточно медленно и не синхронизировано. Нередко это приводит к появлению маршрутных петель, когда из-за образовавшихся некорректных записей в маршрутных таблицах пакеты начинают циркулировать между узлами вплоть до истечения их собственного TTL.

RIP является одним из старейших протоколов динамической маршрутизации, в силу чего его возможности зачастую уступают более современным аналогам. Он прост в настройке, однако имеет ограничение на число хопов (всего 15). Это делает невозможным его использование в крупных сетях, несмотря на доработку протокола до версии RIPv2, в которой была добавлена поддержка VLSM-адресации (масок подсетей переменной длины), multicast-рассылки и возможность агрегации маршрутов. Тем не менее, RIPv2 может использоваться в малых и средних сетях как альтернатива статической маршрутизации.

Более эффективным способом организации динамической маршрутизации внутри AS является использование протоколов состояния связи (link-state protocols). При этом метрикой маршрутизации служит не узел назначения и его удаленность от источника, а коэффициент качества обслуживания канала ближайших маршрутизаторов, или «соседей». Решение об оптимизации маршрута принимается на основании данных о пропускной способности, периоде задержки, надежности и общей загрузке канала, что позволяет обслуживать средние и крупные сети со сложной инфраструктурой.

К протоколам состояния связи относится OSPF (Open Shortest Part First) , являющийся усовершенствованной версией протокола IS-IS и получивший широкое распространение в TCP/IP-сетях. Помимо стандартной поддержки VLSM-адресации, multicast-рассылки, возможности агрегации маршрутов и использования аутентификации, OSPF учитывает в формате рассылаемых сообщений данные поля TOS (Type-of-Service) для вычисления альтернативных маршрутов согласно текущему состоянию каналов связи. В Unix и Gnu/Linux OSPF входит в список протоколов, поддерживаемых демоном маршрутизации gated и пакетом GNU Zebra 1 или его усовершенствованной версией Quagga 2 .

Каждый маршрутизатор хранит информацию о состоянии соседних транзитных узлов, а также общую базу данных о топологии сети, представленную в виде графа. Актуальность состояния связей между соседними маршрутизаторами поддерживается за счет частого (от 10 до 30 секунд) обмена короткими hello-сообщениями. Информация об изменениях топологии всей сети передается с периодичностью раз в 30 минут отдельными пакетами «router links advertisment». Важной особенностью OSPF является поддержка разделения AS на несколько сегментов сети, каждый из которых имеет выделенный маршрутизатор (DR – Designated Router) и резервный (BDR – Backup Designated Router). Узлы, входящие в отдельный сегмент сети, получают информацию только от DR, который, в свою очередь, обменивается данными с другими выделенными маршрутизаторами. Такой метод позволяет поддерживать актуальность маршрутных таблиц и более эффективно распределять сетевую нагрузку.

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

BGP (Border Gateway protocol) , или BGP4, является на сегодняшний день единственным междоменным протоколом, способным передавать информацию между отдельными AS. Он обеспечивает функционирование сети Интернет, используя для передачи данных маршруты, проходящие через наименьшее число AS. При этом каждые 30 секунд для проверки работоспособности узла происходит широковещательная рассылка TCP-пакетов (KEEPALIVE). Полученная информация добавляется в маршрутные таблицы только после инкрементного обновления. В дальнейшем AS обмениваются текущими изменениями.

Алгоритм работы BGP4 похож на векторно-дистанционный, с той разницей, что вектор пути ориентируется на номер сети и набор атрибутов, позволяющих принимать решение о выборе оптимального маршрута. В их число входят обязательные атрибуты AS_PATH (список AS, через которые должен проходить пакет) и NEXT_HOP (адрес следующего BGP-маршрутизатора), а также дополнительные параметры, отвечающие за агрегацию маршрутов, приоритет AS и маршрутизаторов и т. д.

BGP4 также поддерживает CIDR – бесклассовую маршрутизацию. В Unix и GNU/Linux BGP4, как и OSPF, настраивается при помощи gated или Quagga.

Демоны маршрутизации routed и gated

Routed 3 – стандартный демон маршрутизации, поддерживающий только протокол RIPv1. Он прост в использовании, так как не требует дополнительной настройки и самостоятельно вносит изменения в маршрутную таблицу при обнаружении более оптимальных маршрутов. Тем не менее, он обладает рядом недостатков, в частности, отсутствием поддержки других протоколов, неудобством при одновременном использовании статических и динамических маршрутов. В этом плане предпочтение отдается демону gated 4 , который обладает более широкими возможностями. В число поддерживаемых им протоколов входят RIPv2, OSPF, BGP4 и некоторые другие. Вместе с тем настройка конфигурационного файла /etc/gated.conf, в котором прописываются не только опции самого демона, но и настройки протоколов и маршрутов, и чей синтаксис схож с языками программирования, может показать достаточно сложной тем, кто впервые сталкивается с настройкой маршрутизации при помощи данной утилиты.

Настройка протокола OSPF при помощи Quagga

Пакет Quagga , разработанный как ответвление GNU Zebra, представляет собой набор утилит, предназначенных для настройки протоколов динамической маршрутизации в unix-подобных системах. Он входит в стандартную сборку большинства дистрибутивов, поддерживает все распространенные версии протоколов (OSPFv2, OSPFv3, RIPv1, RIPv2, RIPng, BGP4) и достаточно прост в настройке и использовании. При использовании Quagga под GNU/LInux рекомендуется проверять наличие выставленных параметров ядра CONFIG_NETLINK, CONFIG_RTNETLINK и CONFIG_IP_MULTICAST – они обеспечивают взаимодействие ядра и демона zebra, а также поддержку multicast-рассылки, используемой демонами ripd и osfpd.

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

# vim /etc/quagga/daemons zebra=yes ospfd=yes

Демоны, активация которые не нужна, по умолчанию выставлены с параметром no. Zebra активируется всегда, так как является управляющим и отвечает за внесение изменений в маршрутную таблицу ядра, а также координирует работу остальных демонов.

Для каждой установленной службы существует возможность редактирования конфигурационных файлов через отдельный интерфейс vty, подключение к которому реализуется при помощи telnet. Для этого автоматически выделяется номер порта, информацию о котором необходимо добавить в /etc/services:

zebra 2601/tcp # zebra vty ospfd 2604/tcp # ospfd vty

Для настройки демонов создается одноименный файл в /etc/quagga/ вида *.conf, при этом его владельцем должен быть пользователь quagga.

Запуск демонов осуществляется при помощи следующих команд:

# /usr/sbin/zebra –dk # запуск демона с сохранением уже сконфигурированных маршрутов # /usr/sbin/ospfd –d

Автономная система состоит из нескольких подсетей, объединенных тремя маршрутизаторами, которые также образуют отдельную подсеть (см. рис. 1) 5 . Один из маршрутизаторов является шлюзом по умолчанию для доступа в Интернет. Необходимо настроить динамическую маршрутизацию по протоколу OSPF между подсетями 192.168.10.0/24 и 192.168.12.0/24.


Для настройки OSPF необходимо установить пакет Quagga на каждом маршрутизаторе, а также отредактировать файл zebra.conf:

# vim /etc/quagga/zebra.conf !Имя хоста hostname Router1 !пароль для доступа в vty-интерфейс password zebra !пароль для административного доступа и настройки enable password zebra !путь к лог-файлу log file /var/log/quagga/zebra.log !интерфейс в подсеть 192.168.0.0/24 interface eth0 ip address 192.168.0.1./24 !шлюз в Интернет по умолчанию interface eth1 ip route 0.0.0.0./0 213.190.94.6 hostname Router2 password zebra enable password zebra log file /var/log/quagga/zebra.log interface eth0 ip address 192.168.0.2./24 interface eth1 ip address 192.168.12.1./24 hostname Router3 password zebra enable password zebra log file /var/log/quagga/zebra.log interface eth0 ip address 192.168.0.3./24 interface eth1 ip address 192.168.10.1./24

Таким же образом настраиваются конфигурационные файлы ospfd.conf:

# vim /etc/quagga/ospfd.conf hostname Router1 password zebra enable password zebra router ospf ospf router-id 192.168.0.1 #ID роутера network 192.168.0.0/24 area 0 #указание на подсеть и номер области, #которой она принадлежит default-information originate #анонсирование маршрута по умолчанию #происходит с данного шлюза log file /var/log/quagga/ospfd.log hostname Router2 password zebra enable password zebra router ospf ospf router-id 192.168.0.2 network 192.168.0.0/24 area 0 network 192.168.12.0/24 area 1 redistribute connected #все сети, подключенные к данным #интерфейсам, необходимо анонсировать #по ospf log file /var/log/quagga/ospfd.log hostname Router3 password zebra enable password zebra router ospf ospf router-id 192.168.0.3 network 192.168.0.0/24 area 0 network 192.168.10.0/24 area 2 redistribute connected log file /var/log/quagga/ospfd.log

После того как настройка закончена, необходимо запустить демоны и подключиться через telnet к tvy-интерфейсу ospfd:

# /usr/sbin/zebra –dk # /usr/sbin/ospfd –d # telnet localhost ospfd

Проверить работоспособность протокола можно, запустив в консоли Quagga команду show ip ospf neighbor, которая выводит список активных «соседних» маршрутизаторов. Команда show ip ospf route выводит список маршрутов, которые были получены по протоколу OSPF.

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

В большинстве случаев стандартные утилиты, при помощи которых конфигурируются протоколы динамической маршрутизации, уже содержат встроенные средства для ее мониторинга и анализа. Так, команда ospf_monitor, используемая в gated, позволяет увидеть подробную статистику по сконфигурированным маршрутным таблицам OSPF, а также информацию о соседних маршрутизаторах. Кроме того, поддержка логирования как в gated, так и в Quagga, позволяет системному администратору при создании соответствующего скрипта перенаправлять сообщения о критических ошибках на e-mail или другое средство оповещения.

Заключение

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

Прежде чем вникать в подробности и особенности динамической маршрутизации обратим внимание на двухуровневую модель, в рамках которой рассматривается все множество машин Internet. В рамках этой модели весь Internet рассматривают как множество автономных систем (autonomous system - AS). Автономная система - это множество компьютеров, которые образуют довольно плотное сообщество, где существует множество маршрутов между двумя компьютерами, принадлежащими этому сообществу. В рамках этого сообщества можно говорить об оптимизации маршрутов с целью достижения максимальной скорости передачи информации. В противоположность этому плотному конгломерату, автономные системы связаны между собой не так тесно как компьютеры внутри автономной системы. При этом и выбор маршрута из одной автономной системы может основываться не на скорости обмена информацией, а надежности, безотказности и т.п.

Рис. 2.24

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

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

Обсуждение этой модели Internet необходимо только для того, чтобы объяснить наличие двух типов протоколов динамической маршрутизации: внешних и внутренних.

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

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

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

К внешним протоколам относятся Exterior Gateway Protocol (EGP) и < Protocol Gateway>.

EGP предназначен для анонсирования сетей, которые доступны для автономных систем за пределами данной автономной системы. По данному протоколу шлюз одной AS передает шлюзу другой AS информацию о сетях из которых состоит его AS. EGP не используется для оптимизации маршрутов. Считается, что этим должны заниматься протоколы внутренней маршрутизации.

BGP - это другой протокол внешней маршрутизации, который появился позже EGP. В своих сообщениях он уже позволяет указать различные веса для маршрутов, и, таким образом, способствовать выбору наилучшего маршрута. Однако, назначение этих весов не определяется какими-то независимыми факторами типа времени доступа к ресурсу или числом шлюзов на пути к ресурсу. Предпочтения устанавливаются администратором и потому иногда такую маршрутизацию называют политической маршрутизацией, подразумевая, что она отражает техническую политику администрации данной автономной системы при доступе из других автономных систем к ее информационным ресурсам. Протокол BGP используют практически все российские крупные IP-провайдеры, например крупные узлы сети Relcom.

К внутренним протоколам относятся протоколы Routing Information Protocol (RIP), HELLO, Intermediate System to Intermediate System (ISIS), Shortest Path First (SPF) и Open Shortest Path First (OSPF).

Протокол RIP (Routing Information Protocol) предназначен для автоматического обновления таблицы маршрутов. При этом используется информация о состоянии сети, которая рассылается маршрутизаторами (routers). В соответствии с протоколом RIP любая машина может быть маршрутизатором. При этом, все маршрутизаторы делятся на активные и пассивные. Активные маршрутизаторы сообщают о маршрутах, которые они поддерживают в сети. Пассивные маршрутизаторы читают эти широковещательные сообщения и исправляют свои таблицы маршрутов, но сами при этом информации в сеть не предоставляют. Обычно в качестве активных маршрутизаторов выступают шлюзы, а в качестве пассивных - обычные машины (hosts).

В основу алгоритма маршрутизации по протоколу RIP положена простая идея: чем больше шлюзов надо пройти пакету, тем больше времени требуется для прохождения маршрута. При обмене сообщениями маршрутизаторы сообщают в сеть IP-номер сети и число "прыжков" (hops), которое надо совершить, пользуясь данным маршрутом. Надо сразу заметить, что такой алгоритм справедлив только для сетей, которые имеют одинаковую скорость передачи по любому сегменту сети. Часто в реальной жизни оказывается, что гораздо выгоднее воспользоваться оптоволокном с 3-мя шлюзами, чем одним медленным коммутируемым телефонным каналом.

Другая идея, которая призвана решить проблемы RIP, - это учет не числа hop"ов, а учет времени отклика. На этом принципе построен, например, протокол OSPF. Кроме этого OSPF реализует еще и идею лавинной маршрутизации. В RIP каждый маршрутизатор обменивается информацией только с соседями. В результате, информации о потере маршрута в сети, отстоящей на несколько hop"ов от локальной сети, будет получена с опозданием. Лавинная маршрутизация позволяет решить эту проблему за счет оповещения всех известных шлюзов об изменениях локального участка сети.

К сожалению, многовариантную маршрутизацию поддерживает не очень много систем. Различные клоны Unix и NT, главным образом ориентированы на протокол RIP. Достаточно посмотреть на программное обеспечение динамической маршрутизации, чтобы убедится в этом. Программа routed поддерживает только RIP, программа gated поддерживает RIP, HELLO, OSPF, EGP и BGP, в Windows NT поддерживается только RIP.

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

Итак, приступим.

Статей и видео о том, как настроить OSPF горы. Гораздо меньше описаний принципов работы. Вообще, тут такое дело, что OSPF можно просто настроить согласно мануалам, даже не зная про алгоритмы SPF и непонятные LSA. И всё будет работать и даже, скорее всего, прекрасно работать - на то он и рассчитан. То есть тут не как с вланами, где приходилось знать теорию вплоть до формата заголовка.
Но инженера от эникейщика отличает то, что он понимает, почему его сеть функционирует так, а не иначе, и не хуже самогo OSPF знает, какой маршрут будет выбран протоколом.
В рамках статьи, которая уже на этот момент составляет 8 000 символов, мы не сможем погрузиться в глубины теории, но рассмотрим принципиальные моменты.
Очень просто и понятно, кстати, написано про OSPF на xgu.ru или в английской википедии .
Итак, OSPFv2 работает поверх IP, а конкретно, он заточен только под IPv4 (OSPFv3 не зависит от протоколов 3-го уровня и потому может работать с IPv6).

Рассмотрим его работу на примере вот такой упрощённой сети:

Для начала надо сказать, что для того, чтобы между маршрутизаторами завязалась дружба (отношения смежности) должны выполниться следующие условия:

1) в OSPF должны быть настроены одинаковые Hello Interval на тех маршрутизаторах, что подключены друг к другу. По умолчанию это 10 секунд в Broadcast сетях, типа Ethernet. Это своего рода KeepAlive сообщения. То есть каждые 10 секунд каждый маршрутизатор отправляет Hello пакет своему соседу, чтобы сказать: “Хей, я жив”,
2) Одинаковыми должны быть и Dead Interval на них. Обычно это 4 интервала Hello - 40 секунд. Если в течение этого времени от соседа не получено Hello, то он считается недоступным и начинается ПАНИКА процесс перестроения локальной базы данных и рассылка обновлений всем соседям,
3) Интерфейсы, подключенные друг к другу, должны быть в одной подсети ,
4) OSPF позволяет снизить нагрузку на CPU маршрутизаторов, разделив Автономную Систему на зоны. Так вот номера зон тоже должны совпадать,
5) У каждого маршрутизатора, участвующего в процессе OSPF есть свой уникальный индентификатор - Router ID . Если вы о нём не позаботитесь, то маршрутизатор выберет его автоматически на основе информации о подключенных интерфейсах (выбирается высший адрес из интерфейсов, активных на момент запуска процесса OSPF). Но опять же у хорошего инженера всё под контролем, поэтому обычно создаётся Loopback интерфейс, которому присваивается адрес с маской /32 и именно он назначается Router ID. Это бывает удобно при обслуживании и траблшутинге.
6) Должен совпадать размер MTU

1) Штиль. Состояние OSPF - DOWN
В это короткое мгновение в сети ничего не происходит - все молчат.

2) Поднимается ветер: маршрутизатор рассылает Hello-пакеты на мультикастный адрес 224.0.0.5 со всех интерфейсов, где запущен OSPF. TTL таких сообщений равен одному, поэтому их получат только маршрутизаторы, находящиеся в том же сегменте сети. R1 переходит в состояние INIT .

В пакеты вкладывается следующая информация:

  • Router ID
  • Hello Interval
  • Dead Interval
  • Neighbors
  • Subnet mask
  • Area ID
  • Router Priority
  • Адреса DR и BDR маршрутизаторов
  • Пароль аутентификации
Нас интересуют пока первые четыре или точнее вообще только Router ID и Neighbors.
Сообщение Hello от маршрутизатора R1 несёт в себе его Router ID и не содержит Neighbors, потому что у него их пока нет.
После получения этого мультикастного сообщения маршрутизатор R2 добавляет R1 в свою таблицу соседей (если совпали все необходимые параметры).

И отправляет на R1 уже юникастом новое сообщение Hello, где содержится Router ID этого маршрутизатора, а в списке Neigbors перечислены все его соседи. В числе прочих соседей в этом списке есть Router ID R1, то есть R2 уже считает его соседом.

3) Дружба. Когда R1 получает это сообщение Hello от R2, он пролистывает список соседей и находит в нём свой собственный Router ID, он добавляет R2 в свой список соседей.

Теперь R1 и R2 друг у друга во взаимных соседях - это означает, что между ними установлены отношения смежности и маршрутизатор R1 переходит в состояние TWO WAY .

Общий совет по всем задачам:

Даже если Вы сразу не знаете ответа и решения, постарайтесь подумать к чему относится условие задачи:
- К каким особенностям, настройкам протокола?
- Глобальные эти настройки или привязаны к конкретному интерфейсу?
Если Вы не знаете или забыли команду, такие размышления, скорее всего, приведут Вас к правильному контексту, где Вы просто, с помощью подсказки в командной строке, можете догадаться или вспомнить как настроить то, что требуется в задании.
Постарайтесь поразмышлять в таком ключе прежде чем пойдете в гугл или на какой-то сайт в поиске команд.

На реальной сети при выборе диапазона анонсируемых подсетей нужно руководствоваться регламентом и насущными потребностями.

Прежде чем мы перейдём к тестированию резервных линков и скорости, сделаем ещё одну полезную вещь.
Если бы у нас была возможность отловить трафик на интерфейсе FE0/0.2 msk-arbat-gw1, который смотрит в сторону серверов, то мы бы увидели, что каждые 10 секунд в неизвестность улетают сообщения Hello. Ответить на Hello некому, отношения смежности устанавливать не с кем, поэтому и пытаться рассылать отсюда сообщения смысла нет.
Выключается это очень просто:

msk-arbat-gw1(config)#router OSPF 1
msk-arbat-gw1(config-router)#passive-interface fastEthernet 0/0.2

Такую команду нужно дать для всех интерфейсов, на которых точно нет соседей OSPF (в том числе в сторону интернета).
В итоге картина у вас будет такая:


*Не представляю, как вы до сих пор не запутались*

Кроме того, эта команда повышает безопасность - никто из этой сети не прикинется маршрутизатором и не будет пытаться поломать нас полностью.

Теперь займёмся самым интересным - тестированием.
Ничего сложного нет в настройке OSPF на всех маршрутизаторах в Сибирском кольце - сделаете сами.
И после этого картина должна быть следующей:

msk-arbat-gw1#sh ip OSPF neighbor


172.16.255.32 1 FULL/DR 00:00:31 172.16.2.2 FastEthernet0/1.4
172.16.255.48 1 FULL/DR 00:00:31 172.16.2.18 FastEthernet0/1.5
172.16.255.80 1 FULL/BDR 00:00:36 172.16.2.130 FastEthernet0/1.8
172.16.255.112 1 FULL/BDR 00:00:37 172.16.2.197 FastEthernet1/0.911


Питер, Кемерово, Красноярск и Владивосток - непосредственно подключенные.
msk-arbat-gw1#sh ip route

172.16.0.0/16 is variably subnetted, 25 subnets, 6 masks



S 172.16.2.4/30 via 172.16.2.2



O 172.16.2.160/30 via 172.16.2.130, 00:05:53, FastEthernet0/1.8
O 172.16.2.192/30 via 172.16.2.197, 00:04:18, FastEthernet1/0.911





S 172.16.16.0/21 via 172.16.2.2
S 172.16.24.0/22 via 172.16.2.18
O 172.16.24.0/24 via 172.16.2.18, 00:24:03, FastEthernet0/1.5
O 172.16.128.0/24 via 172.16.2.130, 00:07:18, FastEthernet0/1.8
O 172.16.129.0/26 via 172.16.2.130, 00:07:18, FastEthernet0/1.8

O 172.16.255.32/32 via 172.16.2.2, 00:24:03, FastEthernet0/1.4
O 172.16.255.48/32 via 172.16.2.18, 00:24:03, FastEthernet0/1.5
O 172.16.255.80/32 via 172.16.2.130, 00:07:18, FastEthernet0/1.8
O 172.16.255.96/32 via 172.16.2.130, 00:04:18, FastEthernet0/1.8
via 172.16.2.197, 00:04:18, FastEthernet1/0.911
O 172.16.255.112/32 via 172.16.2.197, 00:04:28, FastEthernet1/0.911




Все обо всех всё знают.
Каким маршрутом трафик доставляется из Москвы в Красноярск? Из таблицы видно, что krs-stolbi-gw1 подключен напрямую и это же видно из трассировки:



1 172.16.2.130 35 msec 8 msec 5 msec


Теперь рвём интерфейс между Москвой и Красноярском и смотрим, через сколько линк восстановится.
Не проходит и 5 секунд, как все маршрутизаторы узнали о происшествии и пересчитали свои таблицы маршрутизации:
msk-arbat-gw1(config-subif)#do sh ip ro 172.16.128.0

Known via «OSPF 1», distance 110, metric 4, type intra area
Last update from 172.16.2.197 on FastEthernet1/0.911, 00:00:53 ago
Routing Descriptor Blocks:
* 172.16.2.197, from 172.16.255.80, 00:00:53 ago, via FastEthernet1/0.911
Route metric is 4, traffic share count is 1

Vld-gw1#sh ip route 172.16.128.0
Routing entry for 172.16.128.0/24
Known via «OSPF 1», distance 110, metric 3, type intra area
Last update from 172.16.2.193 on FastEthernet1/0, 00:01:57 ago
Routing Descriptor Blocks:
* 172.16.2.193, from 172.16.255.80, 00:01:57 ago, via FastEthernet1/0
Route metric is 3, traffic share count is 1

Msk-arbat-gw1#traceroute 172.16.128.1
Type escape sequence to abort.
Tracing the route to 172.16.128.1

1 172.16.2.197 4 msec 10 msec 10 msec
2 172.16.2.193 8 msec 11 msec 15 msec
3 172.16.2.161 15 msec 13 msec 6 msec

То есть теперь Красноярска трафик достигает таким путём:

Как только вы поднимете линк, маршрутизаторы снова вступают в связь, обмениваются своими базами, пересчитываются кратчайшие пути и заносятся в таблицу маршрутизации.
На видео всё это более наглядно. Рекомендую ознакомиться .

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

EIGRP

Теперь займёмся другим очень важным протоколом

Итак, чем хорош EIGRP?
- прост в конфигурации
- быстрое переключение на заранее просчитанный запасной маршрут
- требует меньше ресурсов роутера (по сравнению с OSPF)
- суммирование маршрутов на любом роутере (в OSPF только на ABR\ASBR)
- балансировка трафика на неравноценных маршрутах (OSPF только на равноценных)

Мы решили перевести одну из записей блога Ивана Пепельняка, в которой разбирается ряд популярных мифов про EIGRP:
- “EIGRP это гибридный протокол маршрутизации”. Если я правильно помню, это началось с первой презентации EIGRP много лет назад и обычно понимается как «EIGRP взял лучшее от link-state и distance-vector протоколов». Это совершенно не так. У EIGRP нет никаких отличительных особенностей link-state. Правильно будет говорить «EIGRP это продвинутый distance-vector- протокол маршрутизации».

- “EIGRP это distance-vector протокол”. Неплохо, но не до конца верно тоже. EIGRP отличается от других DV способом, которым обрабатывает потерянные маршруты (или маршруты с возрастающей метрикой). Все остальные протоколы пассивно ждут обновления информации от соседа (некоторые, например, RIP, даже блокируют маршрут для предотвращения петель маршрутизации), в то время как EIGRP ведет себя активнее и запрашивает информацию сам.

- “EIGRP сложен во внедрении и обслуживании”. Неправда. В свое время, EIGRP в больших сетях с низкоскоростными линками было сложновато правильно внедрить, но ровно до того момента, как были введены stub routers. С ними (а также несколькими исправлениями работы DUAL-алгоритма), он не чуть не хуже, чем OSPF.

- “Как и LS протоколы, EIGRP хранит таблицу топологии маршрутов, которыми обменивается”. Просто удивительно, насколько это неверно. EIGRP не имеет вообще никакого понятия о том, что находится дальше ближайших соседей, в то время как LS протоколы точно знают топологию всей области, к которой они подключены.

- “EIGRP это DV протокол, который действует, как LS”. Неплохая попытка, но по-прежнему, абсолютно неверно. LS протоколы строят таблицу маршрутизации, проходя через следующие шаги:
- каждый маршрутизатор описывает сеть, исходя из информации, доступной ему локально (его линки, подсети, в которых он находится, соседи, которых он видит) посредством пакета (или нескольких), называемого LSA (в OSPF) или LSP (IS-IS)
- LSA распространяются по сети. Каждый маршрутизатор должен получить каждую LSA, созданную в его сети. Информация, полученная из LSA, заносится в таблицу топологии.
- каждый маршрутизатор независимо анализирует свою таблицу топологии и запускает SPF алгоритм для подсчета лучших маршрутов к каждому из других маршрутизаторов
Поведение EIGRP даже близко не напоминает эти шаги, поэтому непонятно, с какой стати он «действует, как LS»

Единственное, что делает EIGRP - это хранит информацию, полученную от соседа (RIP сразу же забывает то, что не может быть использовано в данный момент). В этом смысле, он похож на BGP, который тоже хранит все в таблице BGP и выбирает лучший маршрут оттуда. Таблица топологии (содержащая всю информацию, полученную от соседей), дает EIGRP преимущество перед RIP – она может содержать информацию о запасном (не используемом в данный момент) маршруте.

Теперь чуть ближе к теории работы:

Каждый процесс EIGRP обслуживает 3 таблицы:
- Таблицу соседей (neighbor table), в которой содержится информация о “соседях”, т.е. других маршрутизаторах, непосредственно подключенных к текущему и участвующих в обмене маршрутами. Можно посмотреть с помощью команды show ip eigrp neighbors
- Таблицу топологии сети (topology table), в которой содержится информация о маршрутах, полученная от соседей. Смотрим командой show ip eigrp topology
- Таблицу маршрутизации (routing table), на основе которой роутер принимает решения о перенаправлении пакетов. Просмотр через show ip route

Метрика.
Для оценки качества определенного маршрута, в протоколах маршрутизации используется некое число, отражающее различные его характеристики или совокупность характеристик- метрика. Характеристики, принимаемые в расчет, могут быть разными- начиная от количества роутеров на данном маршруте и заканчивая средним арифметическим загрузки всех интерфейсов по ходу маршрута. Что касается метрики EIGRP, процитируем Jeremy Cioara: “у меня создалось впечатление, что создатели EIGRP, окинув критическим взглядом свое творение, решили, что все слишком просто и хорошо работает. И тогда они придумали формулу метрики, что бы все сказали “ВАУ, это действительно сложно и профессионально выглядит”. Узрите же полную формулу подсчета метрики EIGRP: (K1 * bw + (K2 * bw) / (256 - load) + K3 * delay) * (K5 / (reliability + K4)), в которой:
- bw это не просто пропускная способность, а (10000000/самая маленькая пропускная способность по дороге маршрута в килобитах) * 256
- delay это не просто задержка, а сумма всех задержек по дороге в десятках микросекунд * 256 (delay в командах show interface, show ip eigrp topology и прочих показывается в микросекундах!)
- K1-K5 это коэффициенты, которые служат для того, чтобы в формулу “включился” тот или иной параметр.

Страшно? было бы, если бы все это работало, как написано. На деле же из всех 4 возможных слагаемых формулы, по умолчанию используются только два: bw и delay (коэффициенты K1 и K3=1, остальные нулю), что сильно ее упрощает - мы просто складываем эти два числа (не забывая при этом, что они все равно считаются по своим формулам). Важно помнить следующее: метрика считается по худшему показателю пропускной способности по всей длине маршрута .

Интересная штука получилась с MTU: довольно часто можно встретить сведения о том, что MTU имеет отношение к метрике EIGRP. И действительно, значения MTU передаются при обмене маршрутами. Но, как мы можем видеть из полной формулы, никакого упоминания об MTU там нет. Дело в том, что этот показатель принимается в расчет в довольно специфических случаях: например, если роутер должен отбросить один из равнозначных по остальным характеристикам маршрутов, он выберет тот, у которого меньший MTU. Хотя, не все так просто (см. комментарии).

Определимся с терминами, применяемыми внутри EIGRP. Каждый маршрут в EIGRP характеризуется двумя числами: Feasible Distance и Advertised Distance (вместо Advertised Distance иногда можно встретить Reported Distance, это одно и то же). Каждое из этих чисел представляет собой метрику, или стоимость (чем больше-тем хуже) данного маршрута с разных точек измерения: FD это “от меня до места назначения”, а AD- “от соседа, который мне рассказал об этом маршруте, до места назначения”. Ответ на закономерный вопрос “Зачем нам надо знать стоимость от соседа, если она и так включена в FD?”- чуть ниже (пока можете остановиться и поломать голову сами, если хотите).

У каждой подсети, о которой знает EIGRP, на каждом роутере существует Successor- роутер из числа соседей, через который идет лучший (с меньшей метрикой), по мнению протокола, маршрут к этой подсети. Кроме того, у подсети может также существовать один или несколько запасных маршрутов (роутер-сосед, через которого идет такой маршрут, называется Feasible Successor). EIGRP- единственный протокол маршрутизации, запоминающий запасные маршруты (в OSPF они есть, но содержатся, так сказать, в “сыром виде” в таблице топологии- их еще надо обработать алгоритмом SPF), что дает ему плюс в быстродействии: как только протокол определяет, что основной маршрут (через successor) недоступен, он сразу переключается на запасной. Для того, чтобы роутер мог стать feasible successor для маршрута, его AD должно быть меньше FD successor’а этого маршрута (вот зачем нам нужно знать AD). Это правило применяется для того, чтобы избежать колец маршрутизации.

Предыдущий абзац взорвал мозг? Материал трудный, поэтому еще раз на примере. У нас есть вот такая сеть:

С точки зрения R1, R2 является Successor’ом для подсети 192.168.2.0/24. Чтобы стать FS для этой подсети, R4 требуется, чтобы его AD была меньше FD для этого маршрута. FD у нас ((10000000/1544)*256)+(2100*256) =2195456, AD у R4 (с его точки зрения это FD, т.е. сколько ему стоит добраться до этой сети) = ((10000000/100000)*256)+(100*256)=51200. Все сходится, AD у R4 меньше, чем FD маршрута, он становится FS. *тут мозг такой и говорит: “БДЫЩЬ”*. Теперь смотрим на R3- он анонсирует свою сеть 192.168.1.0/24 соседу R1, который, в свою очередь, рассказывает о ней своим соседям R2 и R4. R4 не в курсе, что R2 знает об этой подсети, и решает ему рассказать. R2 передает информацию о том, что он имеет доступ через R4 к подсети 192.168.1.0/24 дальше, на R1. R1 строго смотрит на FD маршрута и AD, которой хвастается R2 (которая, как легко понять по схеме, будет явно больше FD, так как включает и его тоже) и прогоняет его, чтобы не лез со всякими глупостями. Такая ситуация довольно маловероятна, но может иметь место при определенном стечении обстоятельств, например, при отключении механизма “расщепления горизонта” (split-horizon). А теперь к более вероятной ситуации: представим, что R4 подключен к сети 192.168.2.0/24 не через FastEthernet, а через модем на 56k (задержка для dialup составляет 20000 usec), соответственно, добраться ему стоит ((10000000/56)*256)+(2000*256)= 46226176. Это больше, чем FD для этого маршрута, поэтому R4 не станет Feasible Successor’ом. Но это не значит, что EIGRP вообще не будет использовать данный маршрут. Просто переключение на него займет больше времени (подробнее об этом дальше).

соседство
Роутеры не разговаривают о маршрутах с кем попало - прежде чем начать обмениваться информацией, они должны установить отношения соседства. После включения процесса командой router eigrp с указанием номера автономной системы, мы, командой network говорим, какие интерфейсы будут участвовать и одновременно, информацию о каких сетях мы желаем распространять. Незамедлительно, через эти интерфейсы начинают рассылаться hello-пакеты на мультикаст- адрес 224.0.0.10 (по умолчанию каждые 5 секунд для ethernet). Все маршрутизаторы с включенным EIGRP получают эти пакеты, далее каждый маршрутизатор-получатель делает следующее:
- сверяет адрес отправителя hello-пакета, с адресом интерфейса, из которого получен пакет, и удостоверяется, что они из одной подсети
- сверяет значения полученных из пакета K-коэффициентов (проще говоря, какие переменные используются в подсчете метрики) со своими. Понятно, что если они различаются, то метрики для маршрутов будут считаться по разным правилам, что недопустимо
- проверяет номер автономной системы
- опционально: если настроена аутентификация, проверяет соответствие ее типа и ключей.

Если получателя все устраивает, он добавляет отправителя в список своих соседей, и посылает ему (уже юникастом) update-пакет, в котором содержится список всех известных ему маршрутов (aka full-update). Отправитель, получив такой пакет, в свою очередь, делает то же самое. Для обмена маршрутами EIGRP использует Reliable Transport Protocol (RTP, не путать с Real-time Transport Protocol, который используется в ip-телефонии), который подразумевает подтверждение о доставке, поэтому каждый из роутеров, получив update- пакет, отвечает ack -пакетом (сокращение от acknowledgement- подтверждение). Итак, отношение соседства установлены, роутеры узнали друг у друга исчерпывающую информацию о маршрутах, что дальше? Дальше они будут продолжать посылать мультикаст hello-пакеты в подтверждение того, что они на связи, а в случае изменения топологии- update-пакеты, содержащие сведения только об изменениях (partial update).

Теперь вернемся к предыдущей схеме с модемом.

R2 по каким-то причинам потерял связь с 192.168.2.0/24. До этой подсети у него нет запасных маршрутов (т.е. отсутствует FS). Как всякий ответственный роутер с EIGRP, он хочет восстановить связь. Для этого он начинает рассылать специальные сообщения (query- пакеты) всем своим соседям, которые, в свою очередь, не находя нужного маршрута у себя, расспрашивают всех своих соседей, и так далее. Когда волна запросов докатывается до R4, он говорит “погодите-ка, у меня есть маршрут к этой подсети! Плохонький, но хоть что-то. Все про него забыли, а я-то помню”. Все это он упаковывает в reply-пакет и отправляет соседу, от которого получил запрос (query), и дальше по цепочке. Понятное дело, это все занимает больше времени, чем просто переключение на Feasible Successor, но, в итоге, мы получаем связь с подсетью.

А сейчас опасный момент: может, вы уже обратили внимание и насторожились, прочитав момент про эту веерную рассылку. Падение одного интерфейса вызывает нечто похожее на широковещательный шторм в сети (не в таких масштабах, конечно, но все-таки), причем чем больше в ней роутеров, тем больше ресурсов потратится на все эти запросы-ответы. Но это еще пол-беды. Возможна ситуация и похуже: представим, что роутеры, изображенные на картинке- это только часть большой и распределенной сети, т.е. некоторые могут находится за много тысяч километров от нашего R2, на плохих каналах и прочее. Так вот, беда в том, что, послав query соседу, роутер обязан дождаться от него reply. Неважно, что в ответе- но он должен прийти. Даже если роутер уже получил положительный ответ, как в нашем случае, он не может поставить этот маршрут в работу, пока не дождется ответа на все свои запросы. А запросы-то, может, еще где-нибудь на Аляске бродят. Такое состояние маршрута называется stuck-in-active. Тут нам нужно познакомится с терминами, отражающими состояние маршрута в EIGRP: active\passive route. Обычно они вводят в заблуждение. Здравый смысл подсказывает, что active значит маршрут “активен”, включен, работает. Однако тут все наоборот: passive это “все хорошо”, а состояние active означает, что данная подсеть недоступна, и маршрутизатор находится в активном поиске другого маршрута, рассылая query и ожидая reply. Так вот, состояние stuck-in-active (застрял в активном состоянии) может продолжатся до 3 минут! По истечение этого срока, роутер обрывает отношения соседства с тем соседом, от которого он не может дождаться ответа, и может использовать новый маршрут через R4.

История, леденящая кровь сетевого инженера. 3 минуты даунтайма это не шутки. Как мы можем избежать инфаркта этой ситуации? Выхода два: суммирование маршрутов и так называемая stub-конфигурация.

Вообще говоря, есть еще один выход, и он называется фильтрация маршрутов (route filtering). Но это настолько объемная тема, что впроу отдельную статью под нее писать, а у нас и так уже пол-книги получилось в этот раз. Поэтому на ваше усмотрение.

Как мы уже упоминали, в EIGRP суммирование маршрутов можно проводить на любом роутере. Для иллюстрации, представим, что к нашему многострадальному R2 подключены подсети от 192.168.0.0/24 до 192.168.7.0/24, что очень удобненько суммируется в 192.168.0.0/21 (вспоминаем binary math). Роутер анонсирует этот суммарный маршрут, и все остальные знают: если адрес назначения начинается на 192.168.0-7, то это к нему. Что будет происходить, если одна из подсетей пропадет? Роутер будет рассылать query-пакеты с адресом этой сети (конкретным, например, 192.168.5.0/24), но соседи, вместо того, чтобы уже от своего имени продолжить порочную рассылку, будут сразу в ответ слать отрезвляющие реплаи, мол, это твоя подсеть, ты и разбирайся.

Второй вариант- stub- конфигурация. Образно говоря, stub означает “конец пути”, “тупик” в EIGRP, т.е., чтобы попасть в какую-то подсеть, не подключенную напрямую к такому роутеру, придется идти назад. Роутер, сконфигурированный, как stub, не будет пересылать трафик между подсетями, которые ему стали известны от EIGRP (проще говоря, которые в show ip route помечены буквой D). Кроме того, его соседи не будут отправлять ему query-пакеты. Самый распространенный случай применения- hub-and-spoke топологии, особенно с избыточными линками. Возьмем такую сеть: слева- филиалы, справа- основной сайт, главный офис и т.п. Для отказоустойчивости избыточные линки. Запущен EIGRP с дефолтными настройками.

А теперь “внимание, вопрос”: что будет, если R1 потеряет связь с R4, а R5 потеряет LAN? Трафик из подсети R1 в подсеть главного офиса будет идти по маршруту R1->R5->R2(или R3)->R4. Будет это эффективно? Нет. Будет страдать не только подсеть за R1, но и подсеть за R2 (или R3), из-за увеличения объемов трафика и его последствий. Вот для таких-то ситуаций и придуман stub. За роутерами в филиалах нет других роутеров, которые вели бы в другие подсети, это “конец дороги”, дальше только назад. Поэтому мы с легким сердцем можем сконфигурировать их как stub’ы, что, во-первых, избавит нас от проблемы с “кривым маршрутом”, изложенной чуть выше, а во-вторых, от флуда query-пакетов в случае потери маршрута.

Существуют различные режимы работы stub-роутера, задаются они командой eigrp stub:

R1(config)#router eigrp 1
R1(config-router)#eigrp stub?
connected Do advertise connected routes
leak-map Allow dynamic prefixes based on the leak-map
receive-only Set IP-EIGRP as receive only neighbor
redistributed Do advertise redistributed routes
static Do advertise static routes
summary Do advertise summary routes

По умолчанию, если просто дать команду eigrp stub, включаются режимы сonnected и summary. Интерес представляет режим receive-only, в котором роутер не анонсирует никаких сетей, только слушает, что ему говорят соседи (в RIP есть команда passive interface, которая делает то же самое, но в EIGRP она полностью отключает протокол на выбранном интерфейсе, что не позволяет установить соседство).

Важные моменты в теории EIGRP, не попавшие в статью:

  • В EIGRP можно настроить аутентификацию соседей
  • Концепция graceful shutdown
Практика EIGRP

“Лифт ми Ап” купили фабрику в Калининграде. Там производят мозги лифтов: микросхемы, ПО. Фабрика очень крупная - три точки по городу - три маршрутизатора соединены в кольцо.

Но вот незадача - на них уже запущен EIGRP в качестве протокола динамической маршрутизации. Причём адресация конечных узлов совсем из другой подсети - 10.0.0.0/8. Все другие параметры (линковые адреса, адреса лупбэк интерфейсов) мы поменяли, но несколько тысяч адресов локальной сети с серверами, принтерами, точками доступа - работа не на пару часов - отложили на потом, а в IP-плане зарезервировали на будущее для Калининграда подсеть 172.16.32.0/20.

Сейчас у нас используются такие сети:


Как настраивается это чудо? Незамысловато, на первый взгляд:

router eigrp 1
network 172.16.0.0 0.0.255.255
network 10.0.0.0

В EIGRP обратную маску можно задавать, указывая тем самым более узкие рамки, либо не задавать, тогда будет выбрана стандартная маска для этого класса (16 для класса B - 172.16.0.0 и 8 для класса 8 - 10.0.0.0)

Такие команды даются на всех маршрутизаторах Автономной Системы. АС определяется цифрой в команде router eigrp, то есть в нашем случае имеем АС №1. Эта цифра должна быть одинаковой на всех маршрутизаторах (в отличии от OSPF).

Но есть в EIGRP серьёзный подвох: по умолчанию включено автоматическое суммирование маршрутов в классовом виде (в версиях IOS до 15).
Сравним таблицы маршрутизации на трёх калининградских маршрутизаторах:

Сеть 10.0.0.1/24 подключена у нас к klgr-center-gw1 и он о ней знает:

klgr-center-gw1:
10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
D 10.0.0.0/8 is a summary, 00:35:23, Null0
C 10.0.0.0/24 is directly connected, FastEthernet1/0

Но не знает о 10.0.1.0/24 и 10.0.2.0/24/

Klgr-balt-gw1 знает о своих двух сетях 10.0.1.0/24 и 10.0.2.0/24, но вот сеть 10.0.0.0/24 он куда-то спрятал.

10.0.0.0/8 is variably subnetted, 3 subnets, 2 masks
D 10.0.0.0/8 is a summary, 00:42:05, Null0
C 10.0.1.0/24 is directly connected, FastEthernet1/1.2
C 10.0.2.0/24 is directly connected, FastEthernet1/1.3

Они оба создали маршрут 10.0.0.0/8 с адресом next hop Null0.

А вот klgr-center-gw2 знает, что подсети 10.0.0.0/8 находятся за обоими его WAN интерфейсами.

D 10.0.0.0/8 via 172.16.2.41, 00:42:49, FastEthernet0/1
via 172.16.2.45, 00:38:05, FastEthernet0/0

Что-то очень странное творится.
Но, если вы проверите конфигурацию этого маршрутизатора, то, вероятно, заметите:
router eigrp 1
network 172.16.0.0
network 10.0.0.0
auto-summary

Во всём виновато автоматическое суммирование. Это самое большое зло EIGRP. Рассмотрим более подробно, что происходит. klgr-center-gw1 и klgr-balt-gw1 имеют подсети из 10.0.0.0/8, они их суммируют по умолчанию, когда передают соседям.
То есть, например, msk-balt-gw1 передаёт не две сети 10.0.1.0/24 и 10.0.2.0/24, а одну обобщённую: 10.0.0.0/8. То есть его сосед будет думать, что за msk-balt-gw1 находится вся эта сеть.
Но, что произойдёт, если вдруг на balt-gw1 попадёт пакет с адресатом 10.0.50.243, о котором тот ничего не знает? На этот случай и создаётся так называетмый Blackhole-маршрут:
10.0.0.0/8 is a summary, 00:42:05, Null0
Полученный пакет будет выброшен в эту чёрную дыру. Это делается во избежание петель маршрутизации.
Так вот оба эти маршрутизатора создали свои blackhole-маршруты и игнорируют чужие анонсы. Реально на такой сети эти три девайса друг друга так и не смогут пинговать, пока… пока вы не отключите auto-summary.

Первое, что вы должны сделать при настройке EIGRP:

router eigrp 1
no auto-summary

На всех устройствах. И всем будет хорошо:

Klgr-center-gw1:


C 10.0.0.0 is directly connected, FastEthernet1/0
D 10.0.1.0 via 172.16.2.37, 00:03:11, FastEthernet0/0
D 10.0.2.0 via 172.16.2.37, 00:03:11, FastEthernet0/0

klgr-balt-gw1
10.0.0.0/24 is subnetted, 3 subnets
D 10.0.0.0 via 172.16.2.38, 00:08:16, FastEthernet0/1
C 10.0.1.0 is directly connected, FastEthernet1/1.2
C 10.0.2.0 is directly connected, FastEthernet1/1.3

klgr-center-gw2:
10.0.0.0/24 is subnetted, 3 subnets
D 10.0.0.0 via 172.16.2.45, 00:11:50, FastEthernet0/0
D 10.0.1.0 via 172.16.2.41, 00:11:48, FastEthernet0/1
D 10.0.2.0 via 172.16.2.41, 00:11:48, FastEthernet0/1

Настройка передачи маршрутов между различными протоколами

Наша задача организовать передачу маршрутов между этими протоколами: из OSPF в EIGRP и наоборот, чтобы все знали маршрут до любой подсети.
Это называется редистрибуцией (перераспределением) маршрутов.

Для её осуществления нам нужна хотя бы одна точка стыка, где будут запущены одновременно два протокола. Это может быть msk-arbat-gw1 или klgr-balt-gw1. Выберем второй.

Из EIGRP в OSPF:

klgr-gw1(config)#router ospf 1
klgr-gw1(config-router)#redistribute eigrp 1 subnets

Смотрим маршруты на msk-arbat-gw1:
msk-arbat-gw1#sh ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route

Gateway of last resort is 198.51.100.1 to network 0.0.0.0

10.0.0.0/8 is variably subnetted, 3 subnets, 2 masks
O E2 10.0.0.0/8 via 172.16.2.34, 00:25:11, FastEthernet0/1.7
O E2 10.0.1.0/24 via 172.16.2.34, 00:25:11, FastEthernet0/1.7
O E2 10.0.2.0/24 via 172.16.2.34, 00:24:50, FastEthernet0/1.7
172.16.0.0/16 is variably subnetted, 30 subnets, 5 masks
O E2 172.16.0.0/16 via 172.16.2.34, 00:25:11, FastEthernet0/1.7
C 172.16.0.0/24 is directly connected, FastEthernet0/0.3
C 172.16.1.0/24 is directly connected, FastEthernet0/0.2
C 172.16.2.0/30 is directly connected, FastEthernet0/1.4
C 172.16.2.16/30 is directly connected, FastEthernet0/1.5
C 172.16.2.32/30 is directly connected, FastEthernet0/1.7
O E2 172.16.2.36/30 via 172.16.2.34, 01:00:55, FastEthernet0/1.7
O E2 172.16.2.40/30 via 172.16.2.34, 01:00:55, FastEthernet0/1.7
O E2 172.16.2.44/30 via 172.16.2.34, 01:00:55, FastEthernet0/1.7
C 172.16.2.128/30 is directly connected, FastEthernet0/1.8
O 172.16.2.160/30 via 172.16.2.130, 01:00:55, FastEthernet0/1.8
O 172.16.2.192/30 via 172.16.2.197, 00:13:21, FastEthernet1/0.911
C 172.16.2.196/30 is directly connected, FastEthernet1/0.911
C 172.16.3.0/24 is directly connected, FastEthernet0/0.101
C 172.16.4.0/24 is directly connected, FastEthernet0/0.102
C 172.16.5.0/24 is directly connected, FastEthernet0/0.103
C 172.16.6.0/24 is directly connected, FastEthernet0/0.104
O 172.16.24.0/24 via 172.16.2.18, 01:00:55, FastEthernet0/1.5
O 172.16.128.0/24 via 172.16.2.130, 01:00:55, FastEthernet0/1.8
O 172.16.129.0/26 via 172.16.2.130, 01:00:55, FastEthernet0/1.8
O 172.16.144.0/24 via 172.16.2.130, 00:13:21, FastEthernet0/1.8

O 172.16.160.0/24 via 172.16.2.197, 00:13:31, FastEthernet1/0.911
C 172.16.255.1/32 is directly connected, Loopback0
O 172.16.255.48/32 via 172.16.2.18, 01:00:55, FastEthernet0/1.5
O E2 172.16.255.64/32 via 172.16.2.34, 01:00:55, FastEthernet0/1.7
O E2 172.16.255.65/32 via 172.16.2.34, 01:00:55, FastEthernet0/1.7
O E2 172.16.255.66/32 via 172.16.2.34, 01:00:55, FastEthernet0/1.7
O 172.16.255.80/32 via 172.16.2.130, 01:00:55, FastEthernet0/1.8
O 172.16.255.96/32 via 172.16.2.130, 00:13:21, FastEthernet0/1.8
via 172.16.2.197, 00:13:21, FastEthernet1/0.911
O 172.16.255.112/32 via 172.16.2.197, 00:13:31, FastEthernet1/0.911
198.51.100.0/28 is subnetted, 1 subnets
C 198.51.100.0 is directly connected, FastEthernet0/1.6
S* 0.0.0.0/0 via 198.51.100.1

Вот те, что с меткой Е2 - новые импортированные маршруты. Е2 - означает, что это внешние маршруты 2-го типа (), то есть они были введены в процесс OSPF извне

Теперь из OSPF в EIGRP. Это чуточку сложнее:

klgr-gw1(config)#router eigrp 1
klgr-gw1(config-router)#redistribute ospf 1 metric 100000 20 255 1 1500

Без указания метрики (вот этого длинного набора цифр) команда выполнится, но редистрибуции не произойдёт.

Импортированные маршруты получают метку EX в таблице маршрутизации и административную дистанцию 170, вместо 90 для внутренних:

klgr-gw2#sh ip route

Gateway of last resort is not set

172.16.0.0/16 is variably subnetted, 30 subnets, 4 masks
D EX 172.16.0.0/24 [170 /33280] via 172.16.2.37, 00:00:07, FastEthernet0/0
D EX 172.16.1.0/24 via 172.16.2.37, 00:00:07, FastEthernet0/0
D EX 172.16.2.0/30 via 172.16.2.37, 00:00:07, FastEthernet0/0
D EX 172.16.2.4/30 via 172.16.2.37, 00:00:07, FastEthernet0/0
D EX 172.16.2.16/30 via 172.16.2.37, 00:00:07, FastEthernet0/0
D 172.16.2.32/30 [90 /30720] via 172.16.2.37, 00:38:59, FastEthernet0/0
C 172.16.2.36/30 is directly connected, FastEthernet0/0
D 172.16.2.40/30 via 172.16.2.37, 00:38:59, FastEthernet0/0
via 172.16.2.46, 00:38:59, FastEthernet0/1
….

Вот так, казалось бы незамысловато это делается, но простота поверхностная - редистрибуция таит в себе много тонких и неприятных , когда добавляется хотя бы один избыточный линк между двумя разными доменами.
Универсальный совет - старайтесь избегать редистрибуции, если это возможно. Тут работает главное жизненное правило - чем проще, тем лучше.

Маршрут по умолчанию

Теперь самое время проверить доступ в интернет. Из Москвы он прекрасно себе работает, а вот если проверить, например из Петербурга (помним, что мы удалили все статические маршруты):
PC>ping linkmeup.ru

Pinging 192.0.2.2 with 32 bytes of data:


Reply from 172.16.2.5: Destination host unreachable.
Reply from 172.16.2.5: Destination host unreachable.
Reply from 172.16.2.5: Destination host unreachable.

Ping statistics for 192.0.2.2:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),


Это связано с тем, что ни spb-ozerki-gw1, ни spb-vsl-gw1, ни кто-либо другой в нашей сети не знает о маршруте по умолчанию, кроме msk-arbat-gw1, на котором он настроен статически.
Чтобы исправить эту ситуацию, нам достаточно дать одну команду в Москве:
msk-arbat-gw1(config)#router ospf 1
msk-arbat-gw1(config-router)#default-information originate

После этого по сети лавинно распространяется информация о том, где находится шлюз последней надежды.

Интернет теперь доступен:

PC>tracert linkmeup.ru

Tracing route to 192.0.2.2 over a maximum of 30 hops:

1 3 ms 3 ms 3 ms 172.16.17.1
2 4 ms 5 ms 12 ms 172.16.2.5
3 14 ms 20 ms 9 ms 172.16.2.1
4 17 ms 17 ms 19 ms 198.51.100.1
5 22 ms 23 ms 19 ms 192.0.2.2

Полезные команды для траблшутинга

1) Список соседей и состояние связи с ними вызывается командой show ip ospf neighbor

msk-arbat-gw1:

Neighbor ID Pri State Dead Time Address Interface
172.16.255.32 1 FULL/DROTHER 00:00:33 172.16.2.2 FastEthernet0/1.4
172.16.255.48 1 FULL/DR 00:00:34 172.16.2.18 FastEthernet0/1.5
172.16.255.64 1 FULL/DR 00:00:33 172.16.2.34 FastEthernet0/1.7
172.16.255.80 1 FULL/DR 00:00:33 172.16.2.130 FastEthernet0/1.8
172.16.255.112 1 FULL/DR 00:00:33 172.16.2.197 FastEthernet1/0.911


2) Или для EIGRP: show ip eigrp neighbors
IP-EIGRP neighbors for process 1
H Address Interface Hold Uptime SRTT RTO Q Seq
(sec) (ms) Cnt Num
0 172.16.2.38 Fa0/1 12 00:04:51 40 1000 0 54
1 172.16.2.42 Fa0/0 13 00:04:51 40 1000 0 58

3) С помощью команды show ip protocols можно посмотреть информацию о запущенных протоколах динамической маршрутизации и их взаимосвязи.

Klgr-balt-gw1:

Routing Protocol is «EIGRP 1 »

Default networks flagged in outgoing updates
Default networks accepted from incoming updates
EIGRP metric weight K1=1, K2=0, K3=1, K4=0, K5=0
EIGRP maximum hopcount 100
EIGRP maximum metric variance 1
Redistributing: EIGRP 1, OSPF 1
Automatic network summarization is in effect
Automatic address summarization:
Maximum path: 4
Routing for Networks:
172.16.0.0

172.16.2.42 90 4
172.16.2.38 90 4
Distance: internal 90 external 170

Routing Protocol is «OSPF 1»
Outgoing update filter list for all interfaces is not set
Incoming update filter list for all interfaces is not set
Router ID 172.16.255.64
It is an autonomous system boundary router
Redistributing External Routes from,
EIGRP 1
Number of areas in this router is 1. 1 normal 0 stub 0 nssa
Maximum path: 4
Routing for Networks:
172.16.2.32 0.0.0.3 area 0
Routing Information Sources:
Gateway Distance Last Update
172.16.255.64 110 00:00:23
Distance: (default is 110)


4) Для отладки и понимания работы протоколов будет полезно воспользоваться следующими командами:
debug ip OSPF events
debug ip OSPF adj
debug EIGRP packets

Попробуйте подёргать разные интерфейсы и посмотреть, что происходит в дебаге, какие сообщения летят.

Задача №7
На последок комплесная задачка.
На последнем совещании Лифт ми Ап было решено, что сеть Калининграда необходимо также переводить на OSPF.
Переход должен быть совершен без разрывов связи. Было решено, что лучшим вариантом будет параллельно с EIGRP поднять OSPF на трёх маршрутизаторах Калининграда и после того, как будет проверено, что вся информация о маршрутах Калининграда распространилась по остальной сети и наоборот, отключить EIGRP. за логотип сайта.

  • OSPF
  • EIGRP
  • route redistribution
  • packet tracer
  • сети для самых маленьких
  • Добавить метки

    Динамическая маршрутизация

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

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

    Динамическая маршрутизация может быть осуществлена с использованием одного и более протоколов. Эти протоколы часто группируются согласно того, где они используются. Протоколы для работы внутри автономных систем называют внутренними протоколами шлюзов (interior gateway protocols (IGP)), а протоколы для работы между автономными системами называют внешними протоколами шлюзов (exterior gateway protocols (EGP)). К протоколам IGP относятся RIP, RIP v2, IGRP, EIGRP, OSPF и IS-IS. Протоколы EGP3 и BGP4 относятся к EGP. Все эти протоколы могут быть разделены на два класса: дистанционно-векторные протоколы и протоколы состояния связи.

    Маршрутизаторы используют метрики для оценки или измерения маршрутов. Когда от маршрутизатора к сети назначения существует много маршрутов, и все они используют один протокол маршрутизации, то маршрут с наименьшей метрикой рассматривается как лучший. Если используются разные протоколы маршрутизации, то для выбора маршрута используется административные расстояния, которые назначаются маршрутам операционной системой маршрутизатора.

    RIP использует в качестве метрики количество переходов (хопов). EIGRP использует сложную комбинацию факторов, включающую полосу пропускания канала и его надёжность.

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

    R 192.168.14.0/24 via 10.3.0.1 00:00:06 Serial0

    Здесь R определяет протокол маршрутизации. Так R означает RIP, а O – OSPF и т. д. Запись означает, этот маршрут имеет административное расстояние 120 и метрику 3. Эти числа маршрутизатор использует для выбора маршрута. Элемент 00:00:06 определяет время, когда обновилась данная строка. Serial0 это локальный интерфейс, через который маршрутизатор будет направлять пакеты к сети 192.168.14.0/24 через адрес 10.3.0.1.

    Для того чтобы динамические протоколы маршрутизации обменивались информацией о статических маршрутах, следует осуществлять дополнительное конфигурирование.

    Дистанционно-векторная маршрутизация

    Эта маршрутизация базируется на алгоритме Белмана-Форда. Через определённые моменты времени маршрутизатор передаёт соседним маршрутизаторам всю свою таблицу маршрутизации. Такие простые протоколы как RIP и IGRP просто распространяют информацию о таблицах маршрутов через все интерфейсы маршрутизатора в широковещательном режиме без уточнения точного адреса конкретного соседнего маршрутизатора.

    Соседний маршрутизатор, получая широковещание, сравнивает информацию со своей текущей таблицей маршрутов. В неё добавляются маршруты к новым сетям или маршруты к известным сетям с лучшей метрикой. Происходит удаление несуществующих маршрутов. Маршрутизатор добавляет свои собственные значения к метрикам полученных маршрутов. Новая таблица маршрутизации снова распространяется по соседним маршрутизаторам (см. рис.1).

    font-size:12.0pt;line-height:125%">Рис.1. Дистанционно-векторная маршрутизация.

    Протоколы состояния связи

    Эти протоколы предлагают лучшую масштабируемость и сходимость по сравнению с дистанционно-векторными протоколами. Протокол базируется на алгоритме Дейкстры, который часто называют алгоритмом «кратчайший путь – первым» (shortest path first (SPF)). Наиболее типичным представителем является протокол OSPF (Open Shortest Path First).

    Маршрутизатор берёт в рассмотрение состояние связи интерфейсов других маршрутизаторов в сети. Маршрутизатор строит полную базу данных всех состояний связи в своей области, то есть имеет достаточно информации для создания своего отображения сети. Каждый маршрутизатор затем самостоятельно выполняет SPF-алгоритм на своём собственном отображении сети или базе данных состояний связи для определения лучшего пути, который заносится в таблицу маршрутов. Эти пути к другим сетям формируют дерево с вершиной в виде локального маршрутизатора.

    Маршрутизаторы извещают о состоянии своих связей всем маршрутизаторам в области. Такое извещение называют LSA (link-state advertisements).

    В отличие от дистанционно-векторных маршрутизаторов, маршрутизаторы состояния связи могут формировать специальные отношения со своими соседями.

    Имеет место начальный наплыв LSA пакетов для построения базы данных состояний связи. Далее обновление маршрутов производится только при смене состояний связи или, если состояние не изменилось в течение определённого интервала времени. Если состояние связи изменилось, то частичное обновление пересылается немедленно. Оно содержит только состояния связей, которые изменились, а не всю таблицу маршрутов.

    Администратор, заботящийся об использовании линий связи, находит эти частичные и редкие обновления эффективной альтернативой дистанционно-векторной маршрутизации, которая передаёт всю таблицу маршрутов через регулярные промежутки времени.

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

    Сходимость.

    Этот процесс одновременно и совместный , и индивидуальный. Маршрутизаторы разделяют между собой информацию, но самостоятельно пересчитывают свои таблицы маршрутизации. Для того чтобы индивидуальные таблицы маршрутизации были точными, все маршрутизаторы должны иметь одинаковое представление о топологии сети. Если маршрутизаторы договорились о топологии сети, то имеет место их сходимость. Быстрая сходимость означает быстрое восстановление после обрыва связей и других изменений в сети. О протоколах маршрутизации и о качестве проектирования сети судят главным образом по сходимости.

    Когда маршрутизаторы находятся в процессе сходимости, сеть восприимчива к проблемам маршрутизации. Если некоторые маршрутизаторы определили, что некоторая связь отсутствует, то другие ошибочно считают эту связь присутствующей. Если это случится, то отдельная таблица маршрутов будет противоречива, что может привести к отбрасыванию пакетов и петлям маршрутизации.

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

    Расстояние в хопах до точки изменения топологии.

    Число маршрутизаторов, использующих динамические протоколы.

    Эффект некоторых факторов может быть уменьшен при тщательном проектировании сети.



    Понравилась статья? Поделиться с друзьями: