Введение

Алгоритм диффузионного обновления (DUAL) — это алгоритм, используемый протоколом маршрутизации EIGRP компании Cisco для обеспечения глобального пересчета маршрута, если существует вероятность возникновения петли маршрутизации. Он был разработан Дж. Дж. Гарсией Луна Асевесом в SRI International. Полное название алгоритма — конечный автомат диффузионного обновления (DUAL FSM). EIGRP отвечает за маршрутизацию внутри автономной системы, а DUAL реагирует на изменения в топологии маршрутизации и динамически корректирует таблицы маршрутизации маршрутизатора автоматически. EIGRP использует условие допустимости (feasibility condition) для гарантии выбора только маршрутов, свободных от петель. Условие допустимости является консервативным: при его выполнении исключаются любые петли, однако в некоторых случаях оно может отклонить все маршруты к заданному пункту назначения, даже если некоторые из них не содержат петель. Если не существует допустимого маршрута к пункту назначения, алгоритм DUAL запускает диффузионный расчет для устранения всех следов проблемного маршрута из сети. После этого используется стандартный алгоритм Беллмана — Форда для поиска нового маршрута.

Операция

DUAL использует три отдельные таблицы для вычисления маршрутов. Эти таблицы создаются на основе информации, обмениваемой между маршрутизаторами EIGRP. Эта информация отличается от той, что обменивается протоколами маршрутизации с полной информацией о состоянии сети. В EIGRP обмен информацией включает в себя маршруты, "метрику" или стоимость каждого маршрута, а также информацию, необходимую для установления соседства (такую как номер AS, таймеры и значения K). Три таблицы и их функции подробно описаны ниже:

Соседняя таблица содержит информацию обо всех непосредственно подключенных маршрутизаторах. Для каждого поддерживаемого протокола (IP, IPX и т. д.) существует отдельная таблица. Каждая запись соответствует соседу с описанием сетевого интерфейса и адреса. Кроме того, инициализируется таймер для периодической проверки доступности соединения. Это осуществляется посредством "Hello"-пакетов. Если "Hello"-пакет не получен от соседа в течение заданного периода времени, маршрутизатор считается недоступным и удаляется из соседней таблицы. Топологическая таблица содержит метрику (информацию о стоимости) всех маршрутов к любому пункту назначения в пределах автономной системы. Эта информация поступает от соседних маршрутизаторов, содержащихся в соседней таблице. На основе информации в топологической таблице определяются основной (преемник) и резервный (возможный преемник) маршруты к месту назначения. Каждый элемент в топологической таблице содержит, в частности, следующее:

"FD (Feasible Distance)": вычисленная метрика маршрута до пункта назначения в пределах автономной системы.
"RD (Reported Distance)": метрика до пункта назначения, объявленная соседним маршрутизатором. RD используется для вычисления FD и определения соответствия маршрута "условию осуществимости".
Статус маршрута: маршрут помечается как "активный" или "пассивный". "Пассивные" маршруты стабильны и могут использоваться для передачи данных. "Активные" маршруты пересчитываются и/или недоступны.

Таблица маршрутизации содержит наилучшие маршруты (с наименьшей "метрикой") к месту назначения. Эти маршруты являются преемниками из топологической таблицы. DUAL анализирует данные, полученные от других маршрутизаторов в топологической таблице, и вычисляет основной (преемник) и резервный (возможный преемник) маршруты. Основной путь обычно представляет собой путь с наименьшей метрикой для достижения пункта назначения, а резервный путь – путь со второй наименьшей стоимостью (если он соответствует условию осуществимости). Может быть несколько преемников и несколько возможных преемников. И преемники, и возможные преемники хранятся в топологической таблице, но в таблицу маршрутизации добавляются и используются для маршрутизации пакетов только преемники. Чтобы маршрут стал возможным преемником, его RD должно быть меньше FD преемника. Если это условие осуществимости выполнено, добавление этого маршрута в таблицу маршрутизации не может привести к образованию петли. Если все маршруты-преемники к месту назначения становятся недоступными, возможный преемник становится преемником и немедленно добавляется в таблицу маршрутизации. Если в топологической таблице нет возможного преемника, запускается процесс запроса для поиска нового маршрута.