# Protocolli e architetture di instradamento/IGRP e EIGRP

Protocolli e architetture di instradamento
Copertina Tutti i moduli · Sviluppo
    CopertinaProtocolli e architetture di instradamento/Copertina
* Algoritmi di instradamento
** Inoltro e instradamentoProtocolli e architetture di instradamento/Inoltro e instradamento
** Algoritmi di instradamentoProtocolli e architetture di instradamento/Algoritmi di instradamento
** L'algoritmo Distance VectorProtocolli e architetture di instradamento/L'algoritmo Distance Vector
** L'algoritmo Link StateProtocolli e architetture di instradamento/L'algoritmo Link State
** Instradamento gerarchicoProtocolli e architetture di instradamento/Instradamento gerarchico
** Instradamento inter-dominioProtocolli e architetture di instradamento/Instradamento inter-dominio
** Instradamento multicastProtocolli e architetture di instradamento/Instradamento multicast
* Protocolli di instradamento
** Routing Information ProtocolProtocolli e architetture di instradamento/Routing Information Protocol
** IGRP e EIGRPProtocolli e architetture di instradamento/IGRP e EIGRP
** Open Shortest Path FirstProtocolli e architetture di instradamento/Open Shortest Path First
** Instradamento inter-dominio: peering e transito in InternetProtocolli e architetture di instradamento/Instradamento inter-dominio: peering e transito in Internet
** Border Gateway ProtocolProtocolli e architetture di instradamento/Border Gateway Protocol
** Instradamento IPv6Protocolli e architetture di instradamento/Instradamento IPv6
** Instradamento multicastProtocolli e architetture di instradamento/Instradamento multicast2
** Content Delivery NetworkProtocolli e architetture di instradamento/Content Delivery Network
* Elaborazione di rete
** Cenni sull'architettura degli apparati di reteProtocolli e architetture di instradamento/Cenni sull'architettura degli apparati di rete
** Filtraggio dei pacchetti basato su softwareProtocolli e architetture di instradamento/Filtraggio dei pacchetti basato su software
** Introduzione alle Software-Defined NetworkProtocolli e architetture di instradamento/Introduzione alle Software-Defined Network
Modifica il sommario
L'Interior Gateway Routing Protocol (IGRP) è un protocollo di instradamento intra-dominio, proprietario di Cisco, basato sull'algoritmo Distance Vector (DV).
Anche nell'IGRP è assente il supporto all'indirizzamento classless (netmask), ma rispetto al RIP ha delle funzionalità aggiuntive "orientate al marketing" che tuttavia nascondono degli errori tecnici non previsti:
* metriche più sofisticate: introducono maggiore complessità e minore stabilità delle rotte;
* multipath routing: il multipath routing a costi differenziati può dare origine a cicli;
* supporto per reti eterogenee: un intervallo ampio per i costi dei link può rallentare la convergenza ad infinito;
* meno traffico legato al protocollo di instradamento: l'aggiornamento dei DV avviene ogni 90 secondi;
* maggiore stabilità: i triggered update sono inviati solo se il costo è cambiato più del 10% per evitare la frequente riconfigurazione della rete;
* non più di una frammentazione IP: i messaggi IGRP trasportano anche informazioni sulle MTU supportate dai router lungo il percorso → il pacchetto può essere frammentato subito in base alla minima MTU, evitando che in un secondo tempo venga ri-frammentato con una MTU più piccola.

## Metriche

Il costo $C$ è ottenuto dalla combinazione di 4 metriche:
    ${\begin{cases}\displaystyle C={\frac {10^{7}}{B}}\left(k_{1}+{\frac {k_{2}}{256-L}}\right)+k_{3}D&{\text{se }}k_{5}=0\\\displaystyle C=\left[{\frac {10^{7}}{B}}\left(k_{1}+{\frac {k_{2}}{256-L}}\right)+k_{3}D\right]{\frac {k_{5}}{R+k_{4}}}&{\text{se }}k_{5}\neq 0\end{cases}}$
* $B$ - larghezza di banda: è direttamente proporzionale alla larghezza di banda del link (valori da 1 a 2$^{24}$ con 1 = 1,2 kbit/s);
* $D$ - ritardo: è inversamente proporzionale alla larghezza di banda del link, e considera solo il ritardo di trasmissione ignorando altri componenti come il ritardo di propagazione e il ritardo di accodamento (valori da 1 a 2$^{24}$ con 1 = 10 ms);
* $R$ - affidabilità: può essere piuttosto variabile nel tempo (valori da 1 a 255 con 255 = 100%);
* $L$ - carico: dipende dal traffico istantaneo (valori da 1 a 255 con 255 = 100%).
Con i valori predefiniti dei coefficienti $k_{1\ldots 5}$, il costo tiene conto solo del ritardo $D$ e della larghezza di banda $B$:
    $k_{1}=k_{3}=1,\,k_{2}=k_{4}=k_{5}=0\Rightarrow C={\frac {10^{7}}{B}}+D$
I comandi IGRP richiedono la specificazione di una classe di servizio (TOS), ma in pratica l'instradamento basato sulle classi di servizio non è stato mai implementato in questo protocollo, perché richiederebbe una tabella di instradamento e una funzione di costo differenti per ogni classe di servizio.

### Problemi

Una metrica così sofisticata soffre in realtà di alcuni problemi dal punto di vista tecnico:
* è difficile capire le scelte di instradamento: gli esseri umani guardano la topologia della rete e misurano la distanza in "numero di hop" → non è facile determinare qual è il percorso migliore quando viene adottata una metrica più sofisticata;
* è difficile capire come regolare i coefficienti $k_{1\ldots 5}$: che cosa succede alla rete quando i parametri vengono modificati? quali valori bisogna dare a essi al fine di ottenere il comportamento voluto?
* alcune metriche (ad es. carico), non essendo molto stabili, forzano la rete ad adattare continuamente i percorsi perché questi ultimi cambiano spesso di costo → la necessità di aggiornare frequentemente le rotte porta a più transitori con conseguenti buchi neri e bouncing effect, più traffico di instradamento e più risorse della CPU dedicate ai protocolli di instradamento;
* è difficile definire il giusto valore soglia per l'infinito: IGRP lo definisce a 2$^{24}$, ma è necessario troppo tempo per aumentare i costi fino al valore soglia quando sono coinvolti link a basso costo.

## Multipath routing

L'IGRP supporta il multipath routing a costi differenziati: sono ammesse più rotte per la stessa destinazione, anche se quelle rotte hanno costi differenti ($c_{\text{sec}}\leq V\cdot c_{\text{prim}}$), e il carico è distribuito proporzionalmente al costo della rotta.

### Problema

Il traffico può entrare in un ciclo quando percorsi differenti vengono scelti da due router: uno può scegliere il percorso primario (rotta ottimale) e l'altro il percorso secondario (rotta sub-ottimale) → nell'ultima versione di IGRP è consentito solo il multipath routing a costi equivalenti (il coefficiente $V$ è impostato a 1) al fine di impedire queste problematiche.

## EIGRP

L'Enhanced IGRP introduce diversi miglioramenti all'IGRP, soprattutto dal punto di vista della scalabilità:
* supporta l'indirizzamento classless: le reti sono finalmente annunciate con le coppie indirizzo-netmask corrette;
* implementa il Diffusing Update Algorithm (DUAL): la rete è libera da cicli, anche durante i transitori, e la convergenza è più rapida (nessun fenomeno di count to infinity);
* disaccoppia la funzione di neighbor discovery dal meccanismo di aggiornamento delle rotte: i router si scambiano periodicamente dei piccoli messaggi di Hello, mentre i DV vengono generati solo quando è cambiato qualcosa nella rete:
** i messaggi di Hello possono essere mandati ad alta frequenza, rendendo più veloci il rilevamento dei guasti e quindi la convergenza, perché:
*** consumano meno banda → il traffico di instradamento è ridotto;
*** consumano meno risorse della CPU rispetto all'elaborazione e al calcolo dei DV;
** i DV devono essere inviati tramite un protocollo affidabile: ogni DV deve essere confermato da un messaggio di acknowledgment, e deve essere ritrasmesso se è andato perso.