# Enhanced Interior Gateway Routing Protocol

Enhanced Interior Gateway Routing Protocol (EIGRP) è un protocollo di routing, introdotto dall'azienda statunitense Cisco, usato dai router per scambiarsi informazioni di routing all'interno di un Autonomous System basato su IGRP. Si tratta di un protocollo di routing Distance vector ottimizzato sia per minimizzare l'instabilità dei percorsi dopo un cambiamento della topologia della rete che l'uso della banda e del processore dei router. Le specifiche riguardanti gli aspetti fondamentali del protocollo sono state rese pubbliche da Cisco nel 2013 ed attualmente sono descritte in RFC 7868.
Alcune ottimizzazioni del protocollo sono basate sull'algoritmo Diffusing Update (DUAL) di SRI, che garantisce l'operatività senza la creazione di anelli di routing. In particolare, si basa su DUAL il comportamento di conteggio all'infinito di RIP quando una rete di arrivo diventa completamente irraggiungibile. Il massimo numero di hop (passi) di un pacchetto EIGRP è di 224.

## Operazioni basilari

I dati che EIGRP raccoglie sono archiviati in tre tabelle:
* Tabella dei vicini (Neighbor Table): archivia le informazioni sui router adiacenti, cioè quelli direttamente raggiungibili perché collegati direttamente alle interfacce di ciascun router;
* Tabella della topologia (Topology Table): contrariamente al nome, questa tabella non contiene la topologia completa della rete ma solo un'aggregazione delle tabelle di routing ricevute dai router adiacenti; questi percorsi sono inseriti solo se non introducono anelli nel routing. Nella terminologia EIGRP sono "Successori Possibili" (Feasible Successors);
* Tabella di routing (Routing table): contiene i percorsi per tutte le destinazioni conosciute. Possono essere marcate come:
** "Passive", lo stato normale di funzionamento;
** "Active", quando la topologia è cambiata e il processo di routing sta aggiornando il percorso verso la destinazione.

## Metriche multiple

EIGRP utilizza una metrica che associa cinque differenti variabili a ogni percorso:
* Ritardo (Delay)
* Larghezza di banda (Bandwidth)
* Affidabilità (Reliability)
* Maximum Transmission Unit (MTU)(I testi ufficiali Cisco Press CCNA-CCNP citano esplicitamente che questo parametro benché citato in testi non ufficiali non viene utilizzato nella metrica, tanto è vero che a parità di altri fattori il variare dell'MTU per overload già inciderebbe con un maggior carico di linea)
* Carico (Load)
Per poter comparare i percorsi fra loro, queste variabili sono aggregate con una formula per produrre una metrica singola:
    [256*(K1*Bandwidth) + ((K2*Bandwidth)/(256-Load)) + (K3*Delay)] * [(K5/(Reliability + K4))]
dove le varie costanti, da K1 a K5, possono essere configurate per produrre differenti comportamenti. Di default sono impostati da Cisco su tutti i router a K1=K3=1 e K2=K4=K5=0 che riduce la formula a:
    Bandwidth + Delay
La formula base è Metric = 256 * [ 10^7/min(bandwidth) + ∑ delays/10]
In caso di cambiamento dai valori di default, le costanti devono essere configurate alla stessa maniera su tutti i router EIGRP del sistema autonomo. In caso contrario si creeranno degli anelli di routing.

## Vantaggi

EIGRP può funzionare con classless interdomain routing per permettere l'uso di maschere di sottorete a lunghezza variabile (Variable Length Subnet mask - VLSM) che è il relativo vantaggio principale rispetto a IGRP. EIGRP può attivare processi di routing separati per i vari protocolli di rete: IP, IPX e Appletalk.
EIGRP può attuare una condivisione di traffico tra percorsi a costo ineguale (Unequal-Cost Load Sharing), questo permette a diversi collegamenti verso una destinazione di essere utilizzati per trasportare dati verso di essa senza saturare i collegamenti più lenti o limitare quelli più rapidi. Nel fare ciò EIGRP si occupa di ripartire il traffico in maniera proporzionale alle capacità dei singoli link.

## Svantaggi

Essendo stato un protocollo proprietario per molti anni, è implementato quasi esclusivamente in apparecchiature Cisco. Le specifiche contenute in RFC7868 non coprono gli aspetti più avanzati del protocollo e pertanto altri produttori di apparati sono scoraggiati dall'introdurlo nei propri prodotti. Inoltre possono verificarsi perdite di connettività momentanee (black-hole) nei periodi in cui i router ricalcolano i percorsi di rete, a causa, ad esempio, di perdita di connettività su di un collegamento. Questo è dovuto al fatto che i router EIGRP reagiscono alle modifiche topologiche "congelando" la propria tabella di instradamento per evitare che si formino percorsi ciclici. È utile aggiungere che grazie ai "Successori Possibili" (Feasible Successors) le perdite di connettività sono ampiamente attenuate in quanto nel caso di perdita di connettività verso una destinazione qualora nella tabella topologia fosse presente un Successore possibile il router commuterebbe direttamente il traffico verso quest'ultimo.