Основы и возможности

Материал из Cisco CCNP
Версия от 11:31, 30 апреля 2014; imported>Artem (→‎Ссылки)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску


EIGRP (Enhanced Interior Gateway Routing Protocol) является собственным протоколом маршрутизации Cisco. Его называют гибридным, т.к. он объединяет в себе лучшее из дистанционно-векторных (distance-vector) протоколов с алгоритмами протоколов состояния канала (link-state).

EIGRP имеет преимущества по сравнению с устаревшими дистанционно-векторными протоколами, такими как RIPv1 и IGRP, предлагая быструю сходимость, низкое использование полосы пропускания, поддержку IP, IPX и AppleTalk, поддержку бесклассовой маршрутизации CIDR и масок подсетей переменной длины VLSM. Для достижения некоторых из этих преимуществ, EIGRP использует особенности link-state протоколов, например частичные обновления (partial update) и обнаружение соседей (neighbor discovery).


1. Особенности EIGRP

EIGRP имеет следующие ключевые особенности:

  • Быстрая сходимость - Используется DUAL. Маршрутизатор EIGRP сохраняет всех своих соседей в таблице, что позволяет быстро находить альтернативные маршруты в случае пропадания основных. Если соответствующий маршрут не найден в локальной таблице маршрутизации, и нет запасного маршрута, то маршрутизатор опрашивает соседей о наличии альтернативных маршрутов. Запросы будут рассылаться маршрутизатором до тех пор, пока не будет получен маршрут или обнаружится, что маршрута не существует.
  • Поддержка VLSM - EIGRP является протоколом бесклассовой маршрутизации. Это означает, что маршрутизатор включает в объявления маску подсети. EIGRP автоматически суммирует маршруты до границы класса, однако предусматривает настройку суммаризации до любой границы на любом интерфейсе.
  • Частичные обновления - EIGRP посылает частичные тригерные обновления, а не периодические. Обновления посылаются только при изменениях пути или метрики маршрута и содержат информацию только об этих изменениях линка, а не полные таблицы маршрутизации. Частичные обновления рассылаются только тем маршрутизаторам, которые в них нуждаются.
  • Поддержка нескольких протоколов сетевого уровня - EIGRP поддерживает IPv4, IPv6, AppleTalk и Novell NetWare IPX используя PDM (protocol-dependent modules), отвечающие за требования протокола, которые специфичны для сетевого уровня. Быстрая сходимость EIGRP и сложная структура метрик предлагает большую производительность и стабильность при внедрении IP, IPv6 IPX и AppleTalk в сети.
  • Независимость от протоколов канального уровня и топологии - EIGRP не нуждается в дополнительной конфигурации для работы через Layer 2 протоколы. Другие протоколы, такие как OSPF, используют различные настройки для различных канальных протоколов (например, Ethernet и Frame Relay). EIGRP эффективно функционирцет как в LAN, так и в WAN окружении, приспосабливается к различным скоростям и средам.
Файл:EIGRP autosummary.png
По-умолчанию EIGRP выполняет суммирование маршрутов.
  • Сложная метрика - Используется тот же алгоритм для расчёта метрики, что и в IGRP, но представляет значения в 32-битном формате, а не 24-битном. Метрика EIGRP рассчитывается на основе полосы пропускания и задержки. Однако, существует возможность вовлечь в процесс расчета метрики надежность, загрузку и MTU. Для балансировки может использовать маршруты с разными метриками.
  • Использование мультикаста и юникаста - Обновления используют многоадресные (multicast) и одноадресные (unicast) пакеты вместо широковещательных. EIGRP multicast-адрес - 224.0.0.10. В результате, EIGRP потребляет значительно меньшую часть полосы пропускания канала по сравнению с IGRP.

Все сообщения EIGRP инкапсулируются в IP-пакеты, номер EIGRP в поле protocol IP-пакета — 88. (TCP - 6, UDP - 17).

2. Процессы и технологии в основе EIGRP

EIGRP содержит четыре модуля, которые отличают его от других протоколов маршрутизации:

  • PDM
  • RTP
  • Обнаружение соседей и восстановление (Neighbor discovery/recovery mechanism)
  • DUAL


2.1. PDM. Протокол-зависимые модули

PDM (Protocol-depended modules) удовлетворяют запросы протоколов сетевого уровня. Каждый из поддерживаемых протоколов сетевого уровня (IP, IPX или AppleTalk) имеет свой модуль, функционирующий отдельно от остальных.


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

2.2. RTP. Надежный транспортный протокол

RTP (Reliable Transport Protocol) отвечает за доставку EIGRP-пакетов всем соседям. RTP поддерживает multicast и unicast адресацию. Для эффективности только некоторые EIGRP-пакеты передаются надежным способом.

Например, в рамках Ethernet сети или другой сети с множественным доступом нет необходимости надежно передавать hello-пакеты каждому соседу в отдельности. Вместо этого, EIGRP посылает один multicast hello-пакет, содержащий индикатор, который информирует получателя, что данный пакет не нуждается в подтверждении. Другие виды пакетов, такие как пакет обновления, помечаются как нуждающиеся в подтверждении о получении.

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

2.3. Обнаружение соседей и восстановление

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

2.4. DUAL

Читать

3. Терминология EIGRP

  • Таблица соседей (neighbor table) - EIGRP-маршрутизаторы используют пакеты hello для обнаружения соседей. Когда роутер обнаруживает и формирует отношение соседства (adjacency) с новым соседом, он включает адрес соседа и интерфейс, через который сосед доступен, в таблицу соседей. Всё это напоминает протоколы, учитывающие состояние канала: цель одна - убедиться в двухсторонней коммуникации между двумя смежными маршрутизаторами. Для каждого сетевого протокола своя таблица соседей!
  • Таблица топологии (topology table) — При обнаружении соседа, маршрутизатор отправляет анонс с известными ему маршрутами и получает анонс с маршрутами, известными соседу. Эти обновления и составляют таблицу топологии. Топологическая таблица содержит все сети и подсети, анонсированные соседями. Другими словами, каждый маршрутизатор хранит таблицы маршрутизации соседей в собственной топологической таблице EIGRP. Если сосед сообщает локальному маршрутизатору о маршруте, то сосед должен использовать этот маршрут для передачи трафика. Это правило обязательно должно соблюдаться для всех дистанционно-векторных протоколов.
  • Advertised distance and feasible distance - DUAL использует для расчёта наилучшего пути информацию о расстоянии (метрика или стоимость)
    • Advertised distance (AD) — стоимость расстояния между соседним маршрутизатором, который анонсирует маршрут и сетью назначения.
    • Feasible distance (FD) — стоимость расстояния от локального маршрутизатора до сети назначения = AD, которое анонсирует соседний маршрутизатор + стоимость расстояния между локальным маршрутизатором и соседним маршрутизатором.
  • Successor — соседний маршрутизатор (или current successor) с путем без петель и с наименьшей стоимостью пути к сети назначения (FD). Может быть несколько Successor, если они имеют одинаковую FD. Маршуты Successor используются для перенаправления пакетов (?).
  • Таблица маршрутизации (routing table) — таблица содержит наилучшие маршруты к всем получателям и используется для перенаправления пакетов. Маршруты EIGRP successor предлагаются в таблицу маршрутизации. По-умолчанию, каждый протокол маршрутизации может добавлять в таблицу маршрутизации до 4 маршрутов к одному получателю с одинаковой метрикой. Для каждого маршрутизируемого протокола своя таблица маршрутизации.
  • Feasible Successor (резервный маршрутизатор) — Наряду с хранением путей с наименьшей стоимостью, DUAL так же хранит и резервные маршруты к каждому получателю. Next-hop маршрутизатор с путем без петель (AD feasible successor должно быть меньше чем FD текущего маршрута successor). FS-это сосед, который ближе всего к получателю, но не относится к промежуточным устройствам оптимального, маршрута с наименьшей метрикой, пути, и не используется для передачи трафика. FS - next-hop маршрутизатор должен иметь AD меньше, чем FD маршрута соседнего маршрутизатора (требуется для исключения петель). FD выбираются в одновременно с Successor, но находится в таблице топологии, которая может содержать несколько FS для адресата.

EIGRP использует DUAL для вычисления наилучшего пути к получателю. DUAL выбирает соседних (successor) маршрутизаторов и FS маршруты на основе композитной метрики и цели выбрать маршруты без петель.

4. Работа протокола EIGRP

Объясняются механизмы создания разных таблиц EIGRP и описываются 5 типов пакетов. Также тут объясняется, как EIGRP маршрутизаторы становятся соседями, начальные процессы при поиска маршрутов, как выбираются маршруты. Как работает DUAL.

4.1. заполнение таблицы

Файл:EIGRP tables.png
Таблица соседей, топологическая таблица и таблица маршрутизации протокола EIGRP

Процесс выбора маршрутов в EIGRP наиболее сильно отличается от других протоколов маршрутизации. EIGRP выбирает основные [primary] (successor) и запасные (feasible successor) маршруты. Они помечены в качестве таковых в топологической таблице. Основные маршруты затем перемещаются в таблицу маршрутизации.

  • internal -- внутренние маршруты AS (автономной системы) EIGRP. AD -- 90,
  • external -- маршруты, перераспределенные в процесс EIGRP из других источников (других протоколов или другой AS EIGRP). AD -- 170,
  • summary -- суммарные маршруты EIGRP. AD -- 5 (по умолчанию, может быть любое - задается администратором при написании команды суммирования).

  1. Таблица соседей - содержит список маршрутизаторов, с которыми установлено соседство.
  2. Топологическая таблица - содержит все полученные маршруты ко всем адресатам.
  3. Таблица маршрутизации - содержит лучший маршрут к каждому получателю.


4.1.1 Таблица соседей

Включает адрес каждого соседа и интерфейс, к которому он сосед подключён (can be reached). А так же запись (из таблицы) содержит информацию, требуемую протоколу RTP:

  • Sequence number - используется для сохранения порядка пакетов;
  • Transmission list - содержит очередь пакетов, нуждающихся в повторной пересылки, если не было получено ACK;
  • Round trip timer — используется для расчёта оптимального интервала для повторной передачи.
 Структура таблицы
 ---------------------------------
 | Next Hop Router |  Interface  | 
 ---------------------------------
 |                 |             |   
 |                 |             |   
 |                 |             |

4.1.2 Топологическая таблица

Каждый маршрутизатор пересылает копию таблицы маршрутизации соседям из таблицы соседей. Каждый маршрутизатор затем сохраняет таблицы маршрутов соседей в БД, называемой топологической таблицей. Он содержит метрики, которые соседи анонсируют для каждого получателя (AD) и метрики, которые этот маршрутизатор будет использовать для достижения адресата через этого соседа (FD).

show ip eigrp topology all-links - покажет все IP записи в топологической таблице.
show ip eigrp topology - покажет только successor'ов (соседей) и feasible successor'ов для IP-маршрутов. 

Пример топологической таблицы

R0#show ip eigrp topology
IP-EIGRP Topology Table for AS(1)/ID(192.168.100.1)

Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
       r - reply Status, s - sia Status

P 10.0.0.0/8, 1 successors, FD is 332800
        via 192.168.0.2 (332800/307200), FastEthernet0/0
        via 192.168.100.2 (2195456/281600), Serial1/0
P 192.168.100.0/24, 1 successors, FD is 2169856
        via Connected, Serial1/0
P 192.168.0.0/24, 1 successors, FD is 281600
        via Connected, FastEthernet0/0
P 172.16.0.0/16, 1 successors, FD is 307200
        via 192.168.0.2 (307200/281600), FastEthernet0/0

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

 Структура
 ----------------------------------------------------------------------------------------
 | Network |   Feasible Distance (EIGRP Metric)  | Advertised Distance | EIGRP Neighbor |
 ----------------------------------------------------------------------------------------
 |         |                                     |                     |                |
 |         |                                     |                     |                |
 |         |                                     |                     |                |


Запись в топологической таблице может иметь два состояния

  • Passive - маршрутизатор не выполняет перерасчёт для маршрута (не ищет нового successor). Стабильное состояние.
  • Active - для данной записи выполняется перерасчёт маршрутов (ищется новый successor).

Если маршрут через successor становится неверным (например, топология изменилась) или если потерялся сосед, или изменилась метрика, DUAL проверяет fisible successor на destination. Если FS находится, DUAL использует его, и перерасчёта не происходит. Как результат - быстрая конвергенция. Если FS всегда доступен, destination никогда не переходил в статус "активный", перерасчёта не происходит.

Перерасчёт происходит когда текущий маршрут к получетелю (т.е. другими словами - соседний маршрутизатор) падает, и у нашего роутера нет FS для destination. Хотя процесс перерасчёта не особо требователен к ресурсам процессора, всё-таки следует его избегать, т.к. он влияет на время конвергенции.

Маршрутизатор инициирует пересчет отправляя запрос (отправляет query packet) каждому соседнему маршрутизатору. Если у соседа есть маршрут к destination, то он отвечает (отправляет reply packet), если маршрута нет — сосед отправляет запрос своим соседям. В это случае маршрут на соседе переходит в состояние "активный" и маршрутизатор не может обмениваться с другими маршрутизаторами этим маршрутом.

Маршрутизаторы, которые не имеют других соседей и маршрутизаторы, которые знают, что маршрут недоступен (не знаю о нём?) отвечают за запросы сразу, сообщая, что маршрут недоступен. Когда маршрутизатор получает ответы (reply) на все запросы (query), он отвечает на запросы соседа и так далее (один соседа, тот запрашивает своих, те своих и т.д.). Маршрут переходит в стабильное состояние "Passive", и маршрутизатор выбирает successor, когда в топологической таблице появляется хотя бы одна запись для получателя. Если записи нет, значит получатель больше не доступен для этого маршрутизатора.

4.1.3 Таблица маршрутизации

Таблица маршрутизации заполняется маршрутами из таблицы топологии. Каждый маршрутизатор изучает свою топологическую таблицу и определяет лучший и feasible маршрут ко всем получателям в сети. Маршрутизатор сравнивает все FD'ы для относящиеся к одному получателю и затем выбирает маршрут с наименьшим FD и помещает его в таблицу маршрутизации. Это successor маршрут. FD для выбранного successor маршрута становится метрикой в таблице маршрутизации EIGRP для достижения этой сети.

Структура таблицы
 -----------------------------------------------------------------------------------------
 | Network |  Metric (Feasible Distance)  | Outband Interface | Next Hop (EIGRP Neighbor) |
 -----------------------------------------------------------------------------------------
 |         |                              |                   |                          |
 |         |                              |                   |                          |
 |         |                              |                   |                          |

4.2. Типы пакетов в EIGRP

EIGRP использует 5 типов сообщений для установления отношений с соседями и поддержки топологической и маршрутной таблиц в актуальном состоянии:

  • Hello — маршрутизаторы используют hello-пакеты для обнаружения соседей. Пакеты отправляются multicast и не требуют подтверждения о получении.
  • Update — содержится информация об изменении маршрутов. Они отправляются только маршрутизаторам, которых касается обновление. После того как сосед найден, update-пакеты посылаются ему одноадресно, и тот использует их для заполнения своей таблицы топологии. Update-пакеты также используются, если маршрутизатор обнаруживает изменение топологии. В этом случае EIGRP многоадресно, мультикастом, рассылает пакет всем соседям, извещая их об изменениях. Все update-пакеты требуют подтверждения о получении ACK.
  • Query — когда маршрутизатор выполняет подсчет маршрута и у него нет feasible successor, он отправляет query-пакет своим соседям для того чтобы определить нет ли feasible successor для этого destination у них. Обычно query-пакеты отправляются multicast, но могут быть и unicast в некоторых случаях. Получение query-пакета подтверждается отправкой ACK получателем пакета.
  • Reply — маршрутизатор отправляет reply-пакет в ответ на query-пакет. Reply-пакеты отправляются unicast тому, кто отправил query-пакет. Получение reply-пакета подтверждается отправкой ACK.
  • ACK — пакет, который подтверждает получение пакетов update, query, reply. ACK-пакеты отправляются unicast и содержат в себе acknowledgment number. Фактически это hello-пакеты, которые не передают данных. Используется негарантированная доставка.

Hello-пакет - первое, чем обмениваются EIGRP маршрутизаторы.

4.3. EIGRP Hello пакеты

hello-пакетами EIGRP-маршрутизаторы обнаруживают соседей - других EIGRP маршрутизаторов, подключённых к ним. Маршрутизатор шлёт hello-пакеты через интерфейсы, сконфигурированные для работы EIGRP, на мультикаст адрес 224.0.0.10. Когда маршрутизатор получает hello-пакет от маршрутизатора, принадлежащего той же самой автономной системе, он устанавливает с ним соседство (adjacency).

 Внимание!
 Автономная система в EIGRP не тоже самое, что AS  в BGP! В EIGRP - это группа маршрутизаторов, на которых 
запущен одинаковый протокол.

Интервал рассылки hello-пакетов зависит от среды:

  • На ethernet-интерфейсах и point-to-point интерфейсах hello-пакеты по умолчанию отправляются каждые 5 секунд, но с небольшим случайным отклонением, которое используется для того, чтобы между маршрутизаторами не было синхронизации в отправке hello-пакетов.
  • На multipoint X.25, Frame Relay, и ATM интерфейсах hello-пакеты отправляются unicast по умолчанию каждые 60 секунд.
  • Если сосед не присылает hello-сообщение в течении hold time (по умолчанию 15 секунд, 3 hello-интервала), то он считается недоступным.
Внимание!
The default of 60 seconds applies only to low-speed, NBMA media. Low speed is considered to be a rate of T1 
or slower, as specified with thebandwidth interface configuration command. For the purposes of EIGRP, 
Frame Relay and Switched Multimegabit Data Service (SMDS) networks may be considered to be NBMA if the 
interface has not been configured to use physical multicasting. Otherwise, they are considered not to be 
NBMA.

Можно регулировать интервал рассылки hello-пакетов, изменением параметра hello-interval

 ip hello-interval eigrp  as-number seconds //на интерфейсе

Hello-пакеты содержат hold-time - максимальное время, в секундах, которое маршрутизатор будет ждать каких-либо сообщений (hello или некоторых других) от соседа, прежде чем он сочтет соседа недоступным. По умолчанию hold-time равно трем hello-интервалам, но может быть изменено администратором. Т.е. для LAN - 15 сек., а для WAN или более медленных интерфейсов - 180 сек.

Настрийка hold-time

 ip hold-time eigrp  as-number seconds //на интерфейсе

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

 Внимание!
 При изменении hello-таймера, hold-time НЕ изменяется автоматически. Вы должны изменить его вручную!

Если пакет не получен до истечения hold-таймера, сосед удаляется, как и все, относящиеся к нему, записи топологической таблицы (или если сосед отправил анонс, что все маршуты к подсетям unreachable). Если сосед - successor для любых сетей получателей, эти сети удаляют из таблицы маршрутизации, и альтернативные пути, если доступны, пересчитываются. Таким образом, если альтернативный feasible маршрут доступен, то конвергенция проходит быстро.

4.4. Соседи

Два маршрутизатора могут стать соседями даже если их hello и hold-таймеры не совпадают, т.е. эти таймеры могут быть установлены назависимо на разных маршрутизаторах. EIGRP не будет устанавливать соседство с маршрутизатором, используя его вторичный адрес. Используется только первичный, основной адрес (указан в пакетах как адрес источника)! Соседство между маршрутизаторами устанавливается только если первичный адрес каждого маршрутизатора относится к одной подсети. Если разные автономные системы или K-значения, используемые в подсчёте метрики, разные на этом линке - соседство не устанавливается.

4.4.1. Содержание таблицы соседей

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


R0#show ip eigrp neighbors
IP-EIGRP neighbors for process 1
H   Address                 Interface       Hold Uptime   SRTT   RTO  Q   Seq
                                            (sec)         (ms)       Cnt Num
1   192.168.100.2           Se1/0           10 00:02:26   25   200   0   12
0   192.168.0.2             Fa0/0           11 00:03:48   26   200   0   13

Таблица содержит следующие элементы:

  • H (handle) — номер, который используется маршрутизатором локально для идентификации соседей. Указывает на порядок в котором соседи были обнаружены;
  • Address — IP-адрес соседа;
  • Interface — интерфейс локального маршрутизатора, через который доступен сосед (получено hello-сообщение);
  • Hold Time — максимальное время, в секундах, которое маршрутизатор будет ждать каких-либо сообщений от соседа, прежде чем он сочтет соседа недоступным. Изначально "каких-либо" был hello-пакет, но в новых релизах IOS может быть любой пакет, после первого hello от соседа;
  • Uptime — время прошедшее с тех пор как локальный маршрутизатор первый раз получил сообщение от соседа;
  • SRTT (smoothed round trip time) — среднее время между отправкой пакета соседу и получением подтверждения от него. Используется для определения retransmit interval (RTO);
  • RTO (retransmission timeout) — интервал в мс между отправкой unicast-пакетов, которые отправляются после того как от соседа не было получено подтверждение о получении multicast-пакета;
  • Queue count — количество пакетов (number of enqueued packet) update, query и reply в очереди, ожидающих отправку. Если значение больше 0, предположительно, существуют проблемы. 0 - нет пакетов в очереди;
  • Seq Num — номер последнего пакета (update, query и reply) полученного от соседа. Используется для отслеживания порядка пакетов.

4.5. Надёжность в EIGRP

Механизм надёжности в EIGRP гарантирует доставку критически(?) важной маршрутной информации соседним маршрутизаторам. Информация требуется EIGRP чтобы поддерживать топологию без маршрутных петель.
Для эффективности только некоторые пакеты EIGRP передаются с помощью RTP.

Все пакеты, несущие маршрутную информацию (update, query и reply), так как они не рассылаются постоянно. У каждого пакета RTP есть seq number => требуется подтверждение о получение такого пакета.

RTP отвечает за гарантированную, в правильной последовательности, доставку пакетов соседям. Поддерживает смешанную передачу мультикаст и юникаст пакетов.

RTP обеспечивает поддержку постоянной связи между соседями. Такие фичи как retransmission list есть для каждого соседа. Данный список содержит пакеты, для которых (в пределах RTO) ещё не были получены подтверждения от соседей. Служит для отслеживания всех "надёжных" (reliable) пакетов, которые были отправлены, но не подтверждены.

Если RTP истекает раньше, чем получен ACK, запускается процесс повторной передачи reliable пакета. Повторная передача максимум до 16 раз или до истечения hold-time.

Эффективно использовать reliable для мультикаста. Однако, возможны потенциальные задержки в среде с несколькими соседями, связанные с тем, что пока все эти соседи не подтвердят текущий мультикаст, новый multicast не передать. Если один или несколько пиров медленно отвечают, это неблагоприятно отразится на следующей передаче. RTP разработан с целью поддержки таких исключений: соседям, которые медленно отвечают на мультикаст, имеют unacknowledged multicast пакеты, повторно передаваемые как юникаст (RTP is designed to handle such exception: Neighbors that are slow to respond to multicasts have the unacknowledged multicast packets retransmitted as unicast). Это позволяет процессу reliable мультикаста продолжить работу без задержек связи с другими пирами, гарантируя низкое время конвергенции в таких variable-speed соединениях.

Таймер multicast flow (смотреть вывод show ip eigrp interfaces) - максимальное значение интервала в секундах, в течение которого маршрутизатор будет ждать ACK пакета после отправки EIGRP-пакета на multicast адрес, прежде чем переключиться на unicast отправку. Вычисляется на основании SRTT, сама формула вычисления проприетарная.. RTO показывает сколько ждать между последующими юникастами (повторная передача происходит при истечении RTO). EIGRP вычисляет для каждого соседа и flow таймер и RTO, опираясь на SRTT.

В сети в устойчивом состоянии (steady-state), где нет нестабильных маршрутов (flapping route), EIGRP ожидает определённый интервал hold-time прежде, чем считает, что связь с соседом потеряна. Поэтому, по-умолчанию, EIGRP ожидает до 15 секунд на быстрых линках и до 180 на медленных WAN каналах. Когда EIGRP определяет, что сосед в дауне и маршрутизатор не может переустановить соединение, из таблицы маршрутизации удаляются все маршруты к подсетям, которые можно достигнуть через этого соседа (т.е. все маршруты, где сосед - next hop). Маршрутизатор пытается найти альтернативные маршруты к этим подсетям, происходит конвергенция.

4.6. Initial Route Discovery

EIGRP сочетает процесс поиска соседей и learning маршрутов.

  1. Новый маршрутизатор (Роутер А на рисунке) подключается к линку и отправляет hello-пакет через сконфигурированный для работы EIGRP интерфейс.
  2. Маршрутизаторы, получившие hello-пакет на интерфейсе (Роутер В), отвечают (reply) пакетами-обновлениями, которые содержат все маршруты из их таблиц маршрутизации, кроме тех, что получены через этот интерфейс (правило split horizon). Маршрутизатор В отправляет update пакет маршрутизатору А, но соседство не устанавливается до тех пор, пока оба не обменяются hello-пакетами. Пакет-обновление от роутера В имеет первичный набор битов (initial bit set), указывающий, что это процесс инициализации. Пакет-обновление содержит так же информацию о маршрутах, известных соседу В, включая метрики, которые сосед анонсирует для каждого destination.
  3. После того, как оба маршрутизатора обменялись hello-пакетами и установилось соседство, маршрутизатор А отвечает маршрутизатору B ACK-пакетом, показывающим, что он получил информацию в обновлении (update information).
  4. Маршрутизатор А вставляет информацию из пакета-обновления в свою топологическую таблицу. Топологическая таблица содержит все destination, анонсируемыми соседями (adjacent routers) и метрики.
  5. Маршрутизатор А затем посылает update пакет маршрутизатору В.
  6. После получения update пакета, маршрутизатор В посылает АСК маршрутизатору А.
Split Horizon
Использование метода расщепления горизонта основано на том, что , как правило, нет необходимости в отправке 
информации о маршруте в обратном направлении, точнее в том направлении, по которому этот маршрут поступил. Контролирует отправку update и query пакетов. Когда активирован на интерфейсе, никаких update или query
пакетов для destination, для которого этот интерфейс указан как выходной, не рассылается. Сделано для
избежания маршрутных петель. По-умолчанию включён на большинстве интерфейсов. Правило запрещает анонсировать
маршрутизатору информацию о destination через любые интерфейсы, которые он использует для достижения этого
destination.

5. DUAL

Diffusing Update Algorithm (DUAL) — логика которую использует EIGRP для вычисления новых маршрутов.

  • Advertised distance (AD) - стоимость расстояния между соседним маршрутизатором, который анонсирует маршрут и сетью назначения.
Файл:EIGRP FD.png
EIGRP выбирает маршрут с наименьшим FD
  • Feasible distance (FD) — стоимость расстояния от локального маршрутизатора до сети назначения = AD, которое анонсирует соседний маршрутизатор + стоимость расстояния между локальным маршрутизатором и соседним маршрутизатором.
  • Successor (current successor) — соседний маршрутизатор с путем без петель и с наименьшей стоимостью пути к сети назначения, используемый для перенаправления пакетов получателю.
  • Feasible successor — резервный маршрутизатор с путем без петель (AD feasible successor должно быть меньше чем FD текущего маршрута successor).
  • Feasible condition — AD feasible successor должно быть меньше чем FD текущего маршрута successor.

Маршрутизатор сравнивает все FD для определённой подсети (хранятся в топологической таблице) и выбирает маршрут с наименьшим FD, который заносит в свою таблицу маршрутизации - successor route. Здесь FD - метрика EIGRP до подсети.

  FD = AD + расстояние до соседа

Преемником (successor), также называемый текущим преемником (current successor), является соседний маршрутизатор, маршрут через который имеет наименьшую стоимость до места назначения (наименьший FD). Successor используется для доставки пакетов к данному месту назначения. Каждое место назначения, для которого определены один или более преемников, записан в таблице топологии. Для каждого места назначения в таблице топологии выбирается маршрут с наименьшей метрикой и помещается в таблицу маршрутизации.

Для места назначения может существовать и более одного преемника, если они имеют одинаковый FD. По умолчанию в таблицу маршрутизации могут быть помещены не более четырех перемников. Однако, это число может быть увеличено до шести при помощи настроек. В таблице маршрутизации хранятся только next-hop'ы, маршрутизатор не обладает информацией о других промежуточных маршрутизаторах на пути к destination. Маршрутизаторы доверяют соседям, когда отправляют им трафик.

DUAL сохраняет также резервные маршруты. Соседний маршрутизатор, через который проходит резервный маршрут, называется возможным преемником (feasible successor). Чтобы стать возможным преемником, маршрут через соседний маршрутизатор должен иметь AD меньше чем FD. Другими словами, соседний маршрутизатор должен быть ближе к месту назначения, чем локальный.

При пропадании маршрута, проходящего через преемника, или при изменении его метрики, DUAL проверяет маршруты возможных преемников (FS'ов) и выбирает из них наилучший для передачи пакетов. Если альтернативных маршрутов нет - переходит в состояние active, и для данной записи выполняет пересчёт маршрута (ищется новый successor). В случае отсутствия возможных преемников, маршрут должен быть заново пересчитан для определения преемника.

Пример выбора FD и FS

Для изображенной топологии расписаны три маршрута от R1 через маршрутизаторы R2, R3 и R4 к сети хоста H2.

Возле каждого соединения подписана его стоимость.


Соседний маршрутизатор Роль соседнего маршрутизатора Статус маршрута FD AD Feasible condition
R2 Не выбран Не выбран R1R2+R2R5 = 70 R2R5 = 60 Не выполняется
R3 Feasible successor Резервный маршрут R1R3+R3R5 = 60 R3R5 = 30 Выполняется AD < FD (R3R5 < R1R4R5)
R4 Successor Лучший маршрут R1R4+R4R5 = 50 R4R5 = 30 Лучший маршрут

Пример работы DUAL с запросами и ответами

В случае потери маршрута через successor и отсутствии в топологической таблице FS, запускается процесс поиска альтернативного пути до потерянной сети, с использованием query и reply. Данный пример даст возможность лучше понять поведение протокола EIGRP. Сеть в стабильном состоянии! Часть топологических таблиц показана на рисунке.

  • AD - анонсируемая дистанция, равная стоимости маршрута к подсети 10.1.1.0/24, анонсированная соседями. Для E: маршрутизатор D имеет AD=2, C-3 (для подсети 10.1.1.0/24)
  • FD - AD+стоимость до соседа. Например, для E: D - AD=2 + метрика от E до D (1) ==3. Через C = 1+2+1 = 4.
  • Successor - сосед, через которого достижима сеть. Например, маршрутизатор E выбирает путь до 10.1.1.0/24 с наименьшей FD, через D. Этот маршрут занесёт E в свою таблицу маршрутизации.
  • FS - альтернативный маршрут без петель к подсети 10.1.1.0/24. Например, для маршрутизатора С маршрут через D будет FS (AD=2<3=FD)
 Как говорилось, EIGRP использует правило расщепления горизонат (split horizon). Например, E не анонсирует 
свой маршрут до 10.1.1.0/24 маршрутизатору D, так как E использует D как next hop для этой подсети.

На втором рисунке показано, что маршрутизаторы B и D обнаруживают ошибку на линке. В маршрутизаторе D DUAL помечает путь до 10.1.1.0/24 через В как неприменимый.

  1. На маршрутизаторе D нет FS до подсети 10.1.1.0/24, так как AD через маршрутизатор C больше, чем FD через B. Поэтому DUAL делает следующее:
    1. Устанавливает метрику для подсети 10.1.1.0/24 равную -1 (-1 - недостижим).
    2. Так как в топологической таблице FS не находится, маршрут меняет состояние с passive на active. В активном состоянии маршрутизатор рассылает запросы (queries) соседям в поиске нового successor.
    3. Посылает запрос маршрутизатору C и E в поиске альтернативного маршрута к 10.1.1.0/24.
    4. Помечает их как имеющих query pending (q) - запрос в ожидании. В таблице имеют метки что от них ожидается ответ.
  2. На маршрутизаторе Е DUAL помечает маршрут к 10.1.1.0/24 через D как непригодный (unusable).

3. На маршрутизаторе С DUAL помечает маршрут к 10.1.1.0/24 через D как непригодный (unusable). Дальнейшие шаги показаны на следующем рисунке.

  1. На маршрутизаторе D:
    1. DUAL получает ответ от маршрутизатора C, который сообщает, что изменений в маршруте к 10.1.1.0/24 нет.
    2. DUAL удаляет флаг запроса (query flag) с маршрутизатора C.
    3. DUAL остаётся активным для сети (stays active on network) 10.1.1.0/24, ожидая ответа на свой запрос от маршрутизатора Е.
  2. На маршрутиазаторе E нет FS для сети 10.1.1.0/24, так как AD от С не меньше, чем оригинальный FD(тоже 3).
    1. DUAL генерирует запрос к С.
    2. DUAL помечает маршрутизатор С как имеющих query pending (q) - запрос в ожидании.
  3. На маршрутизаторе C DUAL помечает маршрут к 10.1.1.0/24 как непригодный.

Далее происходит как показано на рисунке ниже.

  1. На маршрутизаторе D DUAL остаётся активным для сети 10.1.1.0/24, ожидая ответа от маршрутизатора Е(q).
  2. На маршрутизаторе Е:
    1. DUAL получает ответ от С, показывающий что изменений нет.
    2. Он удаляет query flag с маршрутизатора С.
    3. Расчитывает новый FD и помещает новый successor маршрут в топологическую таблицу.
    4. Меняет статус маршрута к 10.1.1.0/24 с active на passive (converged).

Далее на D происходит как показано на рисунке ниже.

  1. DUAL получает ответ от маршрутизатора Е.
  2. Он удаляет query flag с маршрутизатора E.
  3. Расчитывает новый FD.
  4. Устанавливает новые successor маршруты в топологические маршруты. Два маршрута (через С и Е) имеет одинаковые FD и оба помечаются как successor.
  5. Он меняет статус маршрута к сети 10.1.1.0/24 с активного на массивный.

Далее происходит как показано на рисунке ниже.

  1. На маршрутизаторе D два successor маршрута в топологической таблице для 10.1.1.0/24. Оба successor маршруты перечислины в таблице маршрутизации и выполняется балансировка.
  2. Сеть стабильна.
 Заметка
 В памяти не хранятся сами пакет, которые нужно передать соседу. Очереди не занимают много памяти. Если маршрут 
меняется несколько раз, только последнее состояние передаётся в пакете, таким образом сокращая link utelization.

6.Вычисление метрики

Метрика EIGRP основана на таких 5 компонентах (по умолчанию используются только первые два):

  • Bandwidth — наименьшая bandwidth между source и destination (используется по умолчанию);
  • Delay — cumulative interface delay всего пути;
  • Reliability — наихудший показатель надежности на всем пути, на основании keepalive;
  • Loading — наихудший показатель загрузки линка на всем пути, на основании packet rate и настроенной bandwidth на интерфейсе;
  • MTU — наименьшее MTU на всем пути. MTU включается в обновления EIGRP, но фактически не используется для подсчета метрики.

По умолчанию для подсчета метрики используются bandwidth и delay. Остальные критерии не рекомендуется использовать, так как это приведет к частым пересчетам маршрутов.

Вычисление метрики маршрута

Для вычисления метрики EIGRP использует весовые коэффициенты. Значения этих коэффициентов передаются с помощью hello-пакетов. Вычисляет метрики путем сложения взвешенных значений различных переменных пути к подсети

По умолчанию значения коэффициентов такие: K1 = K3 = 1, K2 = K4 = K5 = 0. При расчёте K5=0 (по умолчанию), переменные (полоса пропускания, bandwidth devided by load и задержка) умножены на константы К1, К2 и К3. Используется следующая формула:

Metric = (K1 * bandwidth) + [(K2 * bandwidth) / (256 - load)] + (K3 * delay)

Если значения коэффициентов K1, K2, K3 равны значениям по умолчанию, то формула превращается в такую:

Metric = (1 * bandwidth) + [(0 * bandwidth) / (256 - load)] + (1 * delay)
Metric = bandwidth + delay

Если K5 не равно 0, то дополнительно выполняется такая операция:

Metric = metric * [K5 / (reliability + K4)]
Важно знать, что формат значений задержки и bandwidth отличается от того, что присуствует в выводе show interfaces

Общая метрика вычисляется при помощи значений bandwidth (пропускной способности) и delay (задержки). Используется следующая формула для вычисления значения bandwidth :

bandwidth = (10000000/bandwidth(i)) * 256  

Где bandwidth(i) является наименьшей пропускной способностью (bandwidth) из всех исходящих интерфейсов по пути в сеть назначения представленная в килобитах (min.полоса[кб/с]).

Формула для вычисления значения delay:

delay = (суммарная задержка по маршруту [в десятках мкс]) * 256

где delay(i) является суммой всех задержек (delays) сконфигурированных на исходящих интерфейсах по пути в сеть назначения в десятках микросекунд (microseconds). Задержка (delay) показываемая командой ip eigrp topology или show interface указана в микросекундах, соответственно это значение нужно поделить на 10 перед использованием в этой формуле.

EIGRP использует полученные значения при подсчете общей метрики.


Примечание: 
значения K следует использовать только после тщательного планирования. Неверные значения K приводят к невозможности построения связей между соседними узлами, в результате чего в вашей сети будет невозможно выполнить сходимость. Несовпадение в значениях К (притом, даже если используются только К1 и К3 в значениях по умолчанию) может привести к тому,
что соседство не установится (it can cause a neighbor to be reset)

Диапазон значений метрики от 1 до 4,294,967,297 представленный в 32-битном формате (IGRP использует 24-битный), что позволяет протоколу быть обратно совместимым со своим предшественником:

(EIGRP метрика)/256 = IGRP
Пример вычисления метрики

Рисунок демонстрирует сеть, в которой маршрутизатор A имеет два маршрута до D. Значения полосы пропускания и задержки для соединений указаны между маршрутизаторами.

Рассмотрим маршрут A-B-C-D. Наименьшее значение полосы пропускания в этом маршруте составляет 64кбит/с:

BW = 256 * 10^7 / 64 = 40000000

Значение delay вычисляется как сумма задержек [в десятках микросекунд] на протяжении всего маршрута, умноженная на 256:

delay = 256 * (2000 + 2000 + 2000) = 1536000

В итоге получаем метрику маршрута A-B-C-D как сумму BW и delay:

Metric = BW + delay = 40000000 + 1536000 = 41536000 Аналогично для маршрута A-X-Y-Z-D имеем:

BW = 256 * 10^7 / 256 = 10000000 delay = 256 * (2000 + 2000 + 2000 + 2000) = 2048000 Metric = 10000000 + 1075200 = 12048000

Маршрутизатор A выбирает маршрут с наименьшей метрикой 12048000 и заносит его в таблицу маршрутизации. Как видно из примера, 64 кбит это бутылочное горлышко верхнего маршрута.

Ссылки