EIGRP


 

Aprile 2004 Ultimo aggiornamento - Aggiornamenti successivi vai a libro routing -

 


L'algoritmo

    Gli algoritmi distance-vector come RIP e IGRP prendono la loro denominazione dal fatto che ogni scelta di routing  e’ basata su un valore di distanza (che prende il nome di metrica) e dal fatto che  il next-hop e’ dato da  un vettore. Tali algoritmi prendono le loro decisioni esclusivamente in base a quanto presente nella tabella di routing in quanto non conservano informazioni aggiuntive. Tutto cio' che proviene dai vicini e che non viene inserito nella tabella di routing non viene utilizzato (ad eccezione di RIPV2 dalla 12.0).

     EIGRP si basa proprio su queste informazioni aggiuntive per migliorare il proprio tempo di convergenza. RIP e IGRP non possono evitare routing loop se non con hold-down e flush timers. Ricordiamo che cio’ porta, di default, ad un tempo di convergenza di circa 10,5 minuti per IGRP e un po’ meno per RIP. EIGRP conserva informazioni sulla topologia della rete fino ai router direttamente connessi. Questo vedremo che consente di evitare routing loops senza l’uso di hold-down e flush-timers. EIGRP si basa su un algoritmo chiamato DUAL.

     Gli algoritmi link-state come EIGRP e OSPF non propagano l’intera tabella di routing ai loro vicini ma soltanto le sue variazioni. Pertanto e’ necessario un nuovo metodo per poter stabilire quando un vicino non e’ piu’ raggiungibile (con RIP e IGRP basta verificare l'arrivo periodico la tabella di routing dai vicini). La soluzione consiste nell’utilizzo di speciali pacchetti, detti di HELLO, periodicamente inviati per segnalare il proprio stato di on-line (e altre informazioni aggiuntive).

     EIGRP invia i pacchetti di HELO ogni 5 secondi sui collegamenti piu’ affidabili e a velocita’ maggiori (come ethernet, token ring, NBMA superiori a T1), ogni 60 secondi per reti meno affidabili o a velocita’ minore (ISDN, NBMA minori o uguali a T1). I pacchetti di HELLO sono inviati al multicast 224.0.0.10. Questo tempo si chiama “hello-interval” ed e’ modificabile col comando “ip hello-interval eigrp NN”. Dopo tre volte questo tempo, valore di hold-time, se non si ricevono HELLO il vicino sara’ considerato DOWN. Questo valore e’ modificabile con il comando “ip hold-time eigrp NN”.

     Una volta che la sessione tra due router e’ attiva ognuno dei due conservera’ tutte le informazioni inviate dal vicino. Queste gli consentono di determinare un valore di metrica, chiamato “REPORTED-DISTANCE”, che indica la metrica con cui il router mittente raggiunge una certa destinazione. A questa il router affianca sempre la “FEASIBLE-DISTANCE” ovvero la metrica che lui adotta per raggiungere una determinata destinazione. Al momento in cui una destinazione non e’ piu’ raggiungibile un router RTA determinera' il nuovo percorso dal confronto tra REPORTED e FEASIBLE. Se  FEASIBLE < REPORTED allora utilizza il percorso in suo possesso. Altrimenti RTA entra nello stato di  ACTIVE e interroga i router adiacenti con una QUERY chiedendo per percorsi alternativi che gli consentano di soddisfare la regola di cui sopra. Il router vicino, diciamo RTB, dara' una risposta se possiede tale percorso altrimenti girera’ la QUERY a monte. Si inviano percio' una serie di richieste di QUERY in cascata che, se senza risposta affermativa, fara’ si che RTA dichiarera’ la rete remota come irraggiungile. Se per qualche ragione RTA non riceve risposta alla sua QUERY entrera' nello stato di SIA (Stuck in Active). Per sbloccare la situazione, dopo un certo tempo, 3 minuti di default, (modificabile col comando “timers active-time NN”) si considerera’ la rete remota irraggiungibile.

 
   Grazie a questo meccanismo EIGRP evita routing loops ed ha un basso tempo di convergenza. Poiche’ gestisce la VLSM e' l’alternativa naturale a RIP e IGRP.

   Quando EIGRP ha piu’ path per una medesima destinazione fa bilanciamento di carico di default. E’ possibile fare bilanciamento di carico anche tra path con metriche differenti. Dati ad esempio tre percorsi A, B, C per la medesima destinazione e con metrica 100, 200, 300, col comando “variance 3” io affermo che i path con metrica da quella piu’ bassa alla stessa moltiplicata per tre devono partecipare ad un load-balancing. In questo caso con  “variance 3” i tre path 100, 200, 300 parteciperanno. La distribuzione dei pacchetti tra i tre link sara’ calcolata dividendo la metrica piu' alta, che si indica con MAXMET, per i valori di metrica dei singoli path. Questa forma di bilanciamento quindi NON consiste nel mandare a ruota un pacchetto su ogni link (non e' round-robin). 

   Nel caso di collegamenti punto-multipunto EIGRP considera come metrica del singolo VC la metrica sull' interfaccia divisa per il numero di virtual-link nella stessa. Si consiglia allora di dare col comando “bandwidth”  il valore pari al CIR (nel caso di FR) piu’ basso tra quelli forniti dall'operatore TELCO per i VC. Questo evita un uso eccessivo di banda da parte di  EIGRP che utilizza fino ad un max del 50% della banda disponibile per  i suoi pacchetti di protocollo. Tale valore e’ settabile col comando “ip bandwidth-percent eigrp ASNUMBER VALORE”.

Tabella di routing

Nella tabella di routing entra solo il next-hop selezionato dall'algoritmo di routing tra tutti quelli disponibili. Come si vede nell'esempio per consultare tutte le destinazioni possibili per raggiungere la rete 192.168.66.0 e' necessario consultare il database dell'eigrp con il comando "show ip eigrp topology" altrimenti si vedra' solo da destinazione migliore inserita in tabella di routing

itesys#show ip route 192.168.66.0
Routing entry for 192.168.66.0/24
Known via "eigrp 100", distance 90, metric 14082560, type internal
Redistributing via eigrp 100
Last update from 192.168.38.9 on Tunnel3, 00:13:12 ago
Routing Descriptor Blocks:
* 192.168.38.9, from 192.168.38.9, 00:13:12 ago, via Tunnel3
Route metric is 14082560, traffic share count is 1
Total delay is 500100 microseconds, minimum bandwidth is 2000 Kbit
Reliability 255/255, minimum MTU 1476 bytes
Loading 1/255, Hops 1


itesys# show ip route eigrp
...
D 192.168.66.0/24 [90/14082560] via 192.168.38.9, 00:13:53, Tunnel3
...

itesys#show ip eigrp topology
IP-EIGRP Topology Table for AS(100)/ID()

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

...
P 192.168.66.0/24, 1 successors, FD is 14082560
via 192.168.38.9 (14082560/28160), Tunnel3
via 192.168.37.6 (17922560/28160), Tunnel2  <-- solo qui si vede la 2a opzione
...
 

 

Timers

 

Supponiamo una rete in cui un router sia collegato tramite 4 tunnel ad altri router. I tunnel dell'esempio sono su connettivita' differenti. Se la connettivita' cade giu' anche il tunnel va down e quindi si puo' utilizzare un collegamento di backup.

Di default "hold-time" e' 15 secondi, "hello-time" e' 5 secondi.

itesys#show ip eigrp neighbo
IP-EIGRP neighbors for process 100
H   Address    Interface Hold Uptime      SRTT RTO   Q  Seq
                            (sec)         (ms)     Cnt Num
2 192.168.38.2    Tu1    13   00:11:02    128  768   0 2818
1 192.168.37.5    Tu0    14   00:11:15    106  5000  0 19754
3 192.168.38.6    Tu2    10   1w2d        90   540   0 1307
0 192.168.38.10   Tu3    10   1w4d        80   480   0 18251
 

La colonna "hold" e' un contatore che parte da 15 e decresce. Se raggiunge lo zero succede quanto segue:

*May 14 09:14:34.391: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 192.168.37.5 (Tunnel0) is down: holding time expired
*May 14 09:14:37.419: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 192.168.38.2 (Tunnel1) is down: holding time expired
*May 14 09:14:37.491: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 192.168.37.5 (Tunnel0) is up: new adjacency
*May 14 09:14:41.943: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 192.168.38.2 (Tunnel1) is up: new adjacency

In alcuni casi, e questo dipende dalla bonta' dei collegamenti WAN, questo "up" e "down" potrebbe essere troppo frequente e con falsi positivi. In questi casi vanno cambiati i timers. Nell'esempio di cui sopra ad esempio nelle interfacce TU1 e TU0 la sessione e' up da 11 minuti mentre TU2 e TU3 da 1 settimana e oltre. Se questa condizione si ripete puo' essere un sintomo di falso positivo indotto da qualche errore sul collegamento dati che non necessariamente ne pregiudica l'efficienza.
In particolare aumentiamo l'Hold time da 15 a 30 secondi, dando piu' possibilita' alla WAN di recapitare i pacchetti HELLO, ma ritardando anche il detect di un collegamento in fault.


ip hold-time eigrp 100 30   <--- ovvero as 100 e hold-time 30 (*)

(*) Attenzione! il comando va messo dentro le interfacce e non nella configurazione specifica eigrp

itesys#show ip eigrp 100 neig
IP-EIGRP neighbors for process 100
H    Address    Interface Hold Uptime     SRTT RTO  Q   Seq
                             (sec)        (ms)     Cnt Num
2 192.168.37.5     Tu0     22  00:14:58   103  5000 0 19780
1 192.168.38.2     Tu1     28  00:24:48   104  624  0 2844
3 192.168.38.6     Tu2     26  1w2d       90   540  0 1307
0 192.168.38.10    Tu3     26  1w4d       80   480  0 18251
 

Come potete vedere adesso i contatori partono da 30 secondi

 

 

Redistribuzione 

   Per quanto riguarda la redistribuzione qualsiasi routing proveniente da altri algoritmi (RIP, IGRP etc.) per default entra in EIGRP con una metrica pari a  -1. Cio’ rende obbligatorio l’uso del comando “default-metric  BANDWIDTH(in k) DELAY  RELIABILITY  LOAD  MTU” . La distanza amministrativa e’ posta invece a 170 per le redistribuzioni.

  

Compattamento delle route

    EIGRP fa summarization in automatico. E’ possibile disabilitare la summarization con il comando “no auto-summary”. E’ possibile fare manual summarization con “ip summary-address eigrp AS  NETWORK NETMASK”. Nell’ipotesi in cui questa feature non sia voluta, come quando vi e’ discontinuita’ nell’uso delle subnet in una rete, basta inserire il comando ‘no auto-summary’ nella propria configurazione di EIGRP.

Interfacce passive

     Questo argomento vale per RIP, IGRP e EIGRP. Se in una interfaccia non fanno capo altri router coinvolti nel routing dinamico non ha senso che da quella interfaccia vi siano annunci o si ricevano.
Per evitare che da una interfaccia, in cui e' attivo il protocollo di routing, vi siano annunci si utilizza il comando 'passive-interface nome' nella configurazione EIGRP.

Il comando passive-interface ha anche importanza per la sicurezza della rete. Se le sessioni EIGRP tra neighbor non sono autenticate chiunque potrebbe inserire un router con EIGRP nella LAN e annunciare reti. Quindi le interfacce di un router devono essere passive a meno di non 'vedere' altri neighbor.
 

IP secondari

EIGRP usa l'ip primario di una interfaccia per fare gli annunci. Interfacce con l'ip secondario possono generare l'errore:

*May 12 12:25:48.602: IP-EIGRP(Default-IP-Routing-Table:100): Neighbor 192.168.184.1 not on common subnet for FastEthernet0/1

Se ne siamo consapevoli e vogliamo evitare che la segnalazione arrivi in console dentro la configurazione di EIGRP usiamo il comando 'no eigrp log-neighbor-warnings'

 

Configurazione

La configurazione di base e come RIP e IGRP:

router eigrp 10
network 116.0.0.0
network 151.99.0.0

 Si faccia attenzione al fatto che affinche’ EIGRP sia operativo su un’interfaccia questa deve avere un indirizzo IP che ricade dentro un comando “network”. In caso contrario non si accetteranno route in ingresso su una interfaccia e non si propaghera’ nulla attraverso quell’interfaccia.

Con "show runn" vediamo:

router eigrp 10
network 116.0.0.0
network 151.99.0.0
auto-summary
no eigrp log-neighbor-changes

poiche' l'auto summary e configurato per default. Cosi' la tabella di routing originaria:

Router#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route

Gateway of last resort is not set

116.0.0.0/24 is subnetted, 1 subnets
C 116.30.40.0 is directly connected, ATM0
151.99.0.0/24 is subnetted, 2 subnets
C 151.99.100.0 is directly connected, Ethernet0
S 151.99.105.0 is directly connected, ATM0

diventa, dopo l'introduzione di EIGRP:

Router#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route

Gateway of last resort is not set

116.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C 116.30.40.0/24 is directly connected, ATM0
D 116.0.0.0/8 is a summary, 00:00:03, Null0
151.99.0.0/16 is variably subnetted, 3 subnets, 2 masks
C 151.99.100.0/24 is directly connected, Ethernet0
S 151.99.105.0/24 is directly connected, ATM0
D 151.99.0.0/16 is a summary, 00:00:03, Null0

Route di default

   Il tipico comando utilizzato per la route di default e' il seguente:

ip route 0.0.0.0 0.0.0.0 A.B.C.D

  EIGRP propaga in automatico la route di default  0.0.0.0 con la redistribution. Se si vuole propagare una rete di defalt differente bisogna specificarla col comando “ip default-network  NETWORK”. Questo a differenza di  IGRP che vuole sempre “ip default-network ...”. Per capirne la configurazione vedete questo esempio

 

Conclusione

Per concludere una serie di brevi su EIGRP: 

-         EIGRP funziona solo per gli ip primari di un collegamento. Se ci sono indirizzi secondari su un’interfaccia non saranno usati per identificare un vicino;

-         EIGRP usa il numero di protocollo IP 88;

-         Per default l’hop-count massimo di EIGRP e’ posto a 100, e’ settabile a max 255;

-         EIGRP ha distanza amministrativa pari a 90;

-         La metrica di EIGRP e 256 volte quella di IGRP. Se in un router girano entrambi gli algoritmi la redistribuzione tra loro si ha di default.


Altre letture

    Consiglio di consultare l’enorme documentazione disponibile on-line nel sito della cisco http://www.cisco.com/. E’ possibile trovare sempre tutto cio’ che si cerca.

 

6bone

Copyright 2002-2004 Gianrico Fichera - ITESYS srl –

Il materiale di questa pagina non e’ sponsorizzato o sottoscritto da Cisco Systems, Inc. Ciscoâ e’ un trademark di Cisco Systems, Inc. negli Stati Uniti e in altri stati. L’autore di questa pagina non si assume nessuna responsabilita’ e non da nessuna garanzia riguardante l’accuratezza e la completezza delle informazioni presenti nonche’ da conseguenze sull’uso delle informazioni presenti in questa pagina.
Il sito web ufficiale della Cisco e’ http://www.cisco.com. Nel caso si volesse utilizzare il contenuto di questa pagina nella forma in cui e’ presentato rivolgersi all’autore scrivendo a gianrico.fichera itesys.it.

This material is not sponsored by, endorsed by, or affiliated with Cisco Systems, Inc., Cisco, Cisco Systems, and the Cisco Systems logo are trademarks or registered trade marks of Cisco Systems, Inc. or its affiliates. All other trademarks are trademarks of their respective owners.