Для характеристики маршрутов протокол IGRP использует набор параметров (метрик), что обеспечивает значительную гибкость при математическом описании линии связи. На базе этих параметров вычисляется так называемая составная метрика, которая и определяет, насколько хорош тот или иной маршрут. Для вычисления составной метрики используется следующая формула:
[(K1/Be) + (K2*D)]*R,
где K1 и K2 - константы; Bе - эффективная ширина полосы пропускания канала связи (Be = Bu (1-N), где
Bu - ширина полосы пропускания незагруженного канала, а N - степень его загруженности); D - топологическая задержка; R - величина, характеризующая надежность канала.
K1 и K2 фактически являются весовыми коэффициентами, определяющими важность величин ширины полосы пропускания и задержки. Значения этих коэффициентов зависят от типа обслуживания, запрашиваемого для пакета.
На самом деле вычисление составной метрики гораздо проще, чем это может показаться, глядя на приведенную выше формулу. Если два маршрутизатора соединены через свои последовательные порты, то при вычислении метрики ширина полосы пропускания по умолчанию принимается равной 1,544 Мбит/с (скорость линии T1). Для линии T1 алгоритм IGRP использует величину общего времени задержки, равную 21 мс. По умолчанию значения K1, K2 и R считаются равными 10 000 000, 100 000 и 1 соответственно. При этом независимо от реальной пропускной способности линии, мы получаем метрику, равную 8576 для каждого соединения через последовательный порт. Значение метрики можно узнать, используя команду "show ip route A.B.C.D", где A.B.C.D - IP-адрес устройства на другом конце последовательной линии связи. Чтобы отразить реальную полосу пропускания, доступную для соединения, значение метрики можно изменить с помощью соответствующей команды.
Лучшим считается путь с наименьшей метрикой. Если же несколько путей имеют одинаковую метрику, то трафик распределяется равномерно между ними. Эта функциональная возможность протокола IGRP требует некоторой осторожности при проектировании сети. Если протоколы канального или транспортного уровней сохраняют порядок следования пакетов, то все хорошо. Но, например, при наличии нескольких маршрутов для пересылки пакетов User Datagram Protocol (UDP) с помощью протокола Frame Relay упомянутое свойство IGRP может вызвать проблему, поскольку ни Frame Relay, ни UDP не гарантируют сохранение порядка следования пакетов. В этом случае решить возникшую проблему можно перейдя на использование транспортного протокола Transmission Control Protocol (TCP).
Протокол EIGRP состоит из четырех основных компонентов:
· Обнаружение/Восстановление соседа (Neighbor Discovery/Recovery)
· Надежный транспортный протокол (Reliable Transport Protocol)
· Блок конечных состояний алгоритма DUAL (DUAL Finite State Machine)
· Модули, зависимые от протоколов (Protocol Dependent Modules)
Обнаружение/Восстановление соседа - это процесс, используемый маршрутизатором для динамического распознавания других маршрутизаторов в сетях, к которым они непосредственно подключены. Маршрутизаторы должны также распознавать отсутствие доступа к соседу или прекращение его работы. Этот процесс обеспечивается с помощью посылки маленьких пакетов приветствий (Hello), при этом непроизводительные издержки весьма незначительны. Пока маршрутизатор получает пакеты Hello, он может определять, что его сосед функционирует нормально. Как только это определено, сосед может осуществлять обмен маршрутизируемой информацией.
Надежный транспортный протокол отвечает за гарантированную, упорядоченную доставку пакетов EIGRP всем соседям. Он поддерживает разнотипную передачу пакетов как в режиме мультиотправки, так и одиночной отправки. Одни пакеты EIGRP должны передаваться с большой степенью надежности, а для других это совсем необязательно. Для повышения эффективности надежность предоставляется только в случае необходимости. Например, в сети с мультидоступом и возможностями мультиотправки, такой как Ethernet, нет нужды посылать повышающие надежность пакеты Hello всем соседям индивидуально. Поэтому EIGRP посылает в режиме мультиотправки один пакет Hello с указанием (записанным в пакете), информирующим получателей, что прием этого пакета не нужно подтверждать. Другие типы пакетов, например Update (Обновление), требуют подтверждения получения, что и указывается в пакете. Надежный транспортный протокол обеспечен средствами быстрой передачи пакетов в режиме мультиотправки в том случае, если неподтвержденные пакеты ожидают отправки. Такие средства помогают не увеличивать время конвергенции при наличии каналов связи, работающих с различной скоростью.
Блок конечных состояний алгоритма DUAL реализует процесс принятия решений для расчетов всех маршрутов. Блок отслеживает все маршруты, объявленные всеми соседями. Дистанционная информация - это показатель, который используется алгоритмом DUAL для выбора эффективных путей, не содержащих циклов. Алгоритм DUAL выбирает маршруты, которые включаются в таблицу маршрутизации, основанную на принципе вероятных последующих элементов. Последующий элемент - это соседний маршрутизатор, используемый для передачи пакетов и имеющий самый дешевый путь к пункту назначения, при гарантии, что такой путь не является частью цикла маршрутизации. Когда нет вероятных последующих элементов, но есть соседи, объявляющие пункт назначения, необходимо производить пересчет. При этом определяется новый последующий элемент. Время пересчета влияет на общее время конвергенции. И хотя пересчет не требует интенсивного использования процессора, старайтесь избегать их без необходимости. При изменении топологии алгоритм DUAL проверяет наличие вероятных последующих элементов. Если они присутствуют, алгоритм использует все, которые обнаруживает, чтобы предотвратить лишние пересчеты. Более подробно вероятные последующие элементы будут рассмотрены ниже.
Модули, зависимые от протоколов, - отвечают за сетевой уровень и обрабатывают требования специфических протоколов. Например, модуль IP-EIGRP отвечает за отправку и получение пакетов EIGRP, инкапсулированных в протокол IP. Модуль IP-EIGRP отвечает за анализ (разбиение на компоненты) пакетов EIGRP и уведомление алгоритма DUAL о получении новой информации. IP-EIGRP обращается к алгоритму DUAL за принятием решений о маршрутизации, результаты которых хранятся в IP-таблице маршрутизации. IP-EIGRP отвечает за перераспределение маршрутов, обнаруженных другими IP-протоколами маршрутизации.
Каждый маршрутизатор хранит сведения о смежных соседях. При обнаружении нового соседа записывается его адрес и интерфейс. Эта информация хранится в структуре данных этого соседа.
Таблица соседей содержит элементы этой структуры. Для каждого модуля, зависимого от протокола, ведется одна Таблица соседей. Когда маршрутизатор посылает пакет Hello, он объявляет HoldTime - время, в течение которого маршрутизатор ждет отклика соседа. Если пакет Hello не принимается в течение отведенного времени, то это свидетельствует о том, что сосед или недоступен, или не работает. Истечение времени HoldTime является признаком, по которому алгоритм DUAL определяет изменение топологии сети.
Элемент Таблицы соседей также включает в себя информацию, необходимую для механизма работы Надежного транспортного протокола. Для согласования подтверждения приема пакетов данных используются последовательные номера. Записывается последний последовательный номер, полученный от соседа, таким образом можно обнаружить несогласованные пакеты. Для постановки пакетов в очередь на случай повторной передачи применяется список передачи (transmission list), который составляется для каждого соседа. Для оценки оптимальных интервалов повторной передачи в структуре данных соседа хранятся Таймеры полного обхода маршрута.
Таблица топологии пополняется модулями, зависимыми от протоколов, а работает с ней блок конечных состояний алгоритма DUAL. Таблица содержит все пункты назначения, объявленные соседними маршрутизаторами. К каждому элементу привязан адрес пункта назначения и список соседей, объявивших данный пункт назначения. Для каждого соседа записывается объявленный показатель, который сосед хранит в таблице маршрутизации. Если сосед объявляет этот пункт назначения, то для передачи пакета должен использоваться маршрут, соответствующий данному показателю. Это важное правило, которого должны придерживаться дистанционные векторные протоколы.
Также к каждому пункту привязан показатель, который маршрутизатор использует для передачи к пункту назначения. Этот показатель представляет собой сумму лучших объявленных показателей всех соседей и стоимость связи к лучшему соседу. Этот суммарный показатель маршрутизатор использует в таблице маршрутизации и для объявления других маршрутизаторов.
Элемент пункта назначения переносится из таблицы топологии в таблицу маршрутизации, когда в ней есть вероятный последующий элемент. Все самые дешевые пути к пункту назначения формируют группу, в которой соседи с объявленными показателями, меньшими, чем текущий показатель таблицы маршрутизации, считаются вероятными последующими элементами.