Security Lab

Что такое EIGRP и как работает выбор маршрута в сети

2151
Что такое EIGRP и как работает выбор маршрута в сети

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

EIGRP, или Enhanced Interior Gateway Routing Protocol, решает такую задачу через динамическую маршрутизацию. Маршрутизаторы обмениваются сведениями о доступных сетях, сравнивают пути по численной оценке, метрике, и пересматривают выбор при изменениях. Алгоритм DUAL отвечает за выбор путей без петель. Я бы сформулировал главный принцип так. EIGRP ищет лучший допустимый путь, но второй по метрике маршрут не обязательно становится готовым резервом.

Зачем нужна динамическая маршрутизация и с чего начать проверку

Маршрутизатор знает подсети своих работающих IP-интерфейсов. Для удалённой сети, например 192.168.50.0/24, требуется дополнительный маршрут. Можно вручную указать следующий узел статической записью, а можно позволить устройствам обмениваться маршрутной информацией.

Что такое EIGRP

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

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

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

Если EIGRP уже настроен для IPv4 на Cisco IOS или IOS XE, знакомство удобно начать с трёх команд в привилегированном режиме.

show ip eigrp neighbors
 show ip eigrp topology
 show ip route eigrp
Таблица Что показывает На какой вопрос отвечает
Соседей Адреса соседей EIGRP, интерфейсы, время существования соседства и параметры обмена С кем маршрутизатор обменивается сведениями?
Топологии Известные EIGRP назначения, пути через соседей, метрики и состояния расчёта Какие варианты известны протоколу?
Маршрутизации Маршруты, установленные из доступных источников. Команда с параметром eigrp показывает соответствующую часть таблицы Какой маршрут устройство выбрало?

Я смотрю таблицы именно в таком порядке. Соседство ещё не означает, что сосед объявил нужную подсеть. Запись в топологии тоже не гарантирует, что маршрут EIGRP установлен в общую таблицу. Например, для того же префикса устройство могло предпочесть статический маршрут.

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

Как маршрутизаторы находят соседей

На интерфейсах, где разрешён обмен EIGRP, устройства отправляют пакеты Hello. В обычной IPv4-сети Ethernet для автоматического обнаружения соседей используется групповой адрес 224.0.0.10. EIGRP работает непосредственно поверх IP с номером протокола 88. Порта TCP или UDP 88 для такого обмена нет.

Для обычного соседства через общую IPv4-подсеть нужны совместимые настройки. Проверяют адреса и маски интерфейсов, номер автономной системы EIGRP, коэффициенты метрики и параметры аутентификации, если включена проверка подлинности сообщений. Номер в команде router eigrp 100 должен совпадать у соседей. Регистрировать публичную автономную систему для такой лаборатории не требуется.

На Ethernet типичные значения по умолчанию составляют 5 секунд для Hello и 15 секунд для Hold Time, времени ожидания пакетов от соседа. Сосед объявляет собственное Hold Time в Hello. Получение подходящего пакета EIGRP от соседа обновляет отсчёт, причём не обязательно именно Hello. Когда срок истекает, соседство разрывается и протокол обрабатывает потерю путей через соседа.

Таймеры на двух концах не обязаны совпадать. Однако слишком редкие Hello относительно объявленного времени ожидания способны сделать соседство нестабильным. Физическое падение интерфейса может сообщить об отказе раньше, чем закончится Hold Time.

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

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

Здесь полезно различать два внешне похожих слова. Команда passive-interface запрещает устанавливать соседство на интерфейсе. Состояние Passive у назначения в таблице топологии означает другое, маршрут не требует согласованного пересчёта. Пассивный интерфейс и устойчивый маршрут вполне могут существовать одновременно.

Как метрика и DUAL выбирают основной путь и резерв

Возьмём четыре маршрутизатора. R1 добирается до серверной сети через R2 или R3, оба направления сходятся на R4. Нас интересует выбор пути от R1 к подсети 192.168.50.0/24.

R1 R2 R3 R4 Серверная сеть 192.168.50.0/24 Основной путь Допустимый резерв

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

Для стандартных коэффициентов K1 = 1, K3 = 1, K2 = K4 = K5 = 0 формула упрощается. B обозначает минимальную пропускную способность в кбит/с, D обозначает суммарную задержку в микросекундах.

M = 256 × (10 000 000 / B + D / 10)

Для учебного примера зададим одинаковую минимальную полосу 100 000 кбит/с. Пусть суммарная задержка через R2 составляет 200 мкс, через R3 составляет 400 мкс. Получим два результата.

Через R2
 256 × (100 + 20) = 30 720
 
 Через R3
 256 × (100 + 40) = 35 840

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

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

Ещё одна ловушка касается сложения. Нельзя в общем случае взять готовую метрику соседа и прибавить отдельную метрику местного канала. Полная задержка действительно складывается, а пропускная способность выбирается по самому узкому участку. Сначала объединяют параметры пути, затем считают результат.

Теперь разберём термины DUAL. Successor обозначает соседа, через которого проходит выбранный лучший путь. Reported Distance, или RD, представляет метрику, которую сосед объявляет до назначения. Значение RD от R3 описывает его путь к серверной сети без участка от R1 до R3.

Feasible Distance, или FD, хранит наименьшую полную метрику, известную данному маршрутизатору с последнего перехода назначения из Active в Passive. В нашем исходном устойчивом состоянии FD равна 30 720. В дальнейшем FD не обязана совпадать с текущей метрикой лучшего пути, поскольку сохраняет исторический минимум за указанный период.

Альтернативный сосед становится Feasible Successor, заранее допустимым резервом, если проходит условие допустимости.

RD соседа < FD маршрутизатора

Пусть R2 объявляет RD 28 160, а R3 объявляет RD 29 440. При выбранной полосе значения соответствуют задержкам от соседей до назначения 100 и 150 мкс. R1 добавляет параметры собственного исходящего участка и получает уже рассчитанные полные метрики.

Сосед R1 Объявленная метрика RD Полная метрика от R1 Роль
R2 28 160 30 720 Основной следующий узел
R3 29 440 35 840 Допустимый резерв, поскольку 29 440 меньше FD 30 720

Полный путь через R3 дороже, но объявленная соседом дистанция проходит проверку. DUAL может гарантировать отсутствие петли при выборе такого направления. Сравнивать нужно RD кандидата с FD у R1, а не две полные метрики.

Теперь предположим, что R3 объявляет RD 32 000. Запасное соединение физически осталось, но условие больше не выполняется. Такой сосед не становится заранее подтверждённым резервом. Даже равенства RD и FD недостаточно, требуется строгое «меньше».

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

В исходном варианте, где R3 проходит условие, потеря соединения R1–R2 оставляет известный безопасный путь через R3. После обнаружения отказа R1 может выбрать его без согласованного поиска, сохранив назначение в Passive. Если подходящего пути нет, назначение переходит в Active, а маршрутизатор отправляет запросы Query. Соседи возвращают Reply и при необходимости продолжают поиск дальше. После завершения обмена выбирается новый путь либо назначение признаётся недоступным.

Поэтому Active не означает «по маршруту активно идёт трафик». Состояние относится к расчёту конкретного назначения. А Passive не обещает, что приложение на сервере исправно, протокол маршрутизации такого не проверяет.

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

Как увидеть результат на Cisco и не перепутать уровни выбора

Для первого опыта достаточно двух лабораторных маршрутизаторов. Соединим интерфейсы GigabitEthernet0/0, назначим R1 адрес 10.0.12.1/30, R2 адрес 10.0.12.2/30. На R2 создадим Loopback0 с адресом 192.168.50.1/24. Виртуальный интерфейс будет изображать сеть назначения.

Ниже приведена классическая настройка IPv4 EIGRP для Cisco IOS. Поддержку команд и названия интерфейсов нужно сверять со своей платформой. На R1 выполним следующие команды.

configure terminal
 interface GigabitEthernet0/0
  ip address 10.0.12.1 255.255.255.252
  no shutdown
 exit
 router eigrp 100
  network 10.0.12.0 0.0.0.3
  passive-interface default
  no passive-interface GigabitEthernet0/0
 end

На R2 добавим интерфейс назначения и включим его сеть в EIGRP.

configure terminal
 interface GigabitEthernet0/0
  ip address 10.0.12.2 255.255.255.252
  no shutdown
 exit
 interface Loopback0
  ip address 192.168.50.1 255.255.255.0
 exit
 router eigrp 100
  network 10.0.12.0 0.0.0.3
  network 192.168.50.0 0.0.0.255
  passive-interface default
  no passive-interface GigabitEthernet0/0
 end

Команда network выбирает локальные интерфейсы по адресу и обратной маске. Произвольный маршрут к удалённой сети команда не создаёт. Настройка passive-interface default закрывает соседство по умолчанию, а следующая строка разрешает его на соединении между маршрутизаторами. Сеть пассивного Loopback0 продолжает объявляться через работающих соседей.

На R1 проверим соседство, запись к назначению и доступность адреса.

show ip eigrp neighbors
 show ip eigrp topology 192.168.50.0 255.255.255.0
 show ip route 192.168.50.0
 ping 192.168.50.1

Ожидаемый сосед имеет адрес 10.0.12.2. В таблице маршрутизации должна появиться сеть назначения через R2 с кодом D, обозначающим EIGRP. Метрика будет зависеть от параметров интерфейсов, включая Loopback0. Числа из предыдущей схемы к этой лаборатории не относятся.

В записи вида [90/30720] первое число обозначает административную дистанцию, второе обозначает метрику. Дистанция задаёт приоритет источника при конкуренции маршрутов к одному и тому же префиксу. На Cisco внутренний EIGRP по умолчанию имеет дистанцию 90, OSPF имеет 110. Метрики разных протоколов напрямую не сравниваются.

При пересылке пакета работает другое правило. Из установленных маршрутов выбирается наиболее конкретный подходящий префикс. Для адреса 192.168.50.10 маршрут 192.168.50.0/24 точнее маршрута 192.168.0.0/16. DUAL заранее готовит маршруты, а не запускается для каждого пользовательского пакета.

Если сосед не появился, сначала проверяйте адреса, состояние интерфейсов, номер EIGRP, коэффициенты метрики, пассивный режим и фильтрацию протокола 88. Если сосед есть, но назначения нет, выясняйте, объявлена ли сеть и не отсекает ли её фильтр. Если маршрут установлен, но ping не отвечает, проверяйте обратный путь и правила обработки трафика.

Затем можно собрать схему из четырёх маршрутизаторов и проверить резерв. До отключения основного соединения посмотрите show ip eigrp topology all-links. Обычный вывод топологии может скрывать альтернативы, которые не проходят условие допустимости. Запишите FD, RD запасного соседа и полный путь, затем отключите основной интерфейс в лаборатории и сравните следующий узел и потери пакетов.

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

Я считаю резервирование проверенным, когда понятны три вещи. Какой отказ обнаружит протокол, какой путь выберет после отказа и выдержит ли запасное направление реальную нагрузку. Начните с соседства и трёх таблиц, затем проверьте условие RD < FD и проведите лабораторную аварию. EIGRP помогает восстановить маршрут, но не добавляет запасному каналу пропускную способность и не устраняет общие точки отказа.

EIGRP маршрутизация маршрутизатор DUAL метрика Cisco резервирование
Alt text
Обращаем внимание, что все материалы в этом блоге представляют личное мнение их авторов. Редакция SecurityLab.ru не несет ответственности за точность, полноту и достоверность опубликованных данных. Вся информация предоставлена «как есть» и может не соответствовать официальной позиции компании.
17.09
11:00
Вебинар SECURITM
Как за 10 шагов превратить формальность в реальное управление рисками?
17 сентября эксперт SECURITM объяснит, где заканчивается модель угроз и начинается риск-менеджмент — и почему выбирать между ними не нужно.
Регистрируйтесь!
Реклама. 18+ ООО «Секъюритм» ИНН 7820074059

Юрий Кочетов

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