Per maggiori informazioni consulta
gli RFC
Gateway e protocolli di
instradamento
Instradamento Type of Service.
L’aggiornamento delle informazioni
di instradamento
I Protocolli IGP ed EGP Gateway
Protocollo Gateway a Gateway (GGP)
External Gateway Protocol (EGP)
Neighbor Reachability Message.
Variabili e timer di stato EGP
Interior Gateway Protocol (IGP)
The Routing Information Protocol (RIP)
The Open Shortest Path First (OSPF)
Protocol
TCP/IP funziona perfettamente in un network locale, ma il suo sviluppo fu spinto dall’internetworking, così sembra logico che TCP/IP abbia un’architettura che lavora meglio con le operazioni di internetworking. Guardiamo ora al modo in cui i gateway trasferiscono informazioni di instradamento tra di loro.
I metodi di instradamento usati per inviare un messaggio dall’origine alla destinazione sono importanti, ma il metodo mediante il quale le informazioni di instradamento sono trasferite dipende dal ruolo dei gateway della rete. Vi sono protocolli speciali sviluppati specificatamente per differenti tipi di gateway, ciascuno dei quali lavora con TCP.
Per trasmettere messaggi attraverso la rete, il software dello strato IP di una macchina confronta l’indirizzo di destinazione del messaggio (contenuto nella Protocol Data unit) all’indirizzo della macchina locale. Se il messaggio non è per la macchina locale, esso viene passato alla prossima macchina. Spostare messaggi lungo una piccola rete locale è piuttosto facile, ma ampie reti e internet aggiungono complessità, richiedendo gateway, bridge e router che tentano di stabilire il miglior metodo per muovere il messaggio verso la sua destinazione,.
Un gateway è un apparato che effettua operazioni di instradamento, usualmente come un apparecchio stand-alone, che inoltre effettua traduzioni di protocollo da una rete all’altra.
Un bridge è un apparecchio che connette due o più reti che usano lo stesso protocollo.
Un router è un nodo che manda in avanti datagrammi lungo la rete.
La capacità di convertire protocolli di gateway è importante (altrimenti il gateway non sarebbe nulla di diverso da un bridge). La conversione di protocolli usualmente ha luogo negli strati più bassi, talvolta includendo il livello di trasporto. La conversione può avvenire in diverse forme, come quando ci si muove dal formato di una LAN a Ethernet (nel qual caso il formato del pacchetto viene cambiato) o da una convenzione proprietaria dei file ad un’altra (nel qual caso vengono modificate le specificazioni del file).
I bridge agiscono come collegamenti tra reti, che hanno spesso un bridge ad ogni capo di una linea di comunicazione dedicata o attraverso un sistema a pacchetti come Internet. Potrebbe esservi una conversione applicata fra bridge per incrementare la velocità di trasmissione. Ciò richiede che entrambi gli estremi della connessione comprendano un protocollo comune.
I router operano a livello di rete , inviando pacchetti verso la loro destinazione. Talvolta un cambiamento di protocollo può essere realizzato da un router che ha diverse opzioni di consegna disponibili come Ethernet o linee seriali.
Occasionalmente si può incontrare il termine brouter, una contrazione di bridge e router. Un brouter unisce le funzioni di entrambi, sebbene talvolta non tutte le funzioni vengono implementate. Il termine brouter è spesso applicato agli apparecchi che effettuano alcune o tutte le funzioni dei bridge e dei router.
Un termine di uso comune quando si ha a che fare con gli instradamenti è la commutazione dei pacchetti. Una rete a commutazione di pacchetti è una rete in cui tutti i trasferimenti sono basati su autonomi pacchetti di dati (come i datagrammi TCP/IP). Vi sono anche sistemi a commutazione di messaggi (completi messaggi autonomi) o a commutazione di linea, ma essi sono raramente utilizzati con TCP/IP. Le reti a commutazione di pacchetto tendono ad essere più veloci rispetto alle reti a commutazione di messaggio, ma sono considerevolmente più complesse.
I protocolli di gateway sono utilizzati per scambiare informazioni con altri gateway in modo veloce ed affidabile. Utilizzando protocolli di gateway si è manifestato un incremento dei tempi di trasmissione su ampie reti, sebbene vi sia un considerevole sostegno all’idea di avere soltanto un protocollo lungo l’intera Internet (che eliminerebbe i protocolli di gateway in favore di TCP/I).
Internet fornisce due tipi di gateway: core e not-core. Tutti i gateway di tipo core sono amministrati dal Internet Network Operations Center (INOC). I gateway not-core non sono amministrati da questa autorità centrale ma da gruppi esterni alla gerarchia internet (che potrebbero essere connessi ad Internet ma amministrano le loro macchine). Tipicamente corporation ed enti educativi usano gateway non core.
L’origine dei gateway core si ebbe con ARPANET, dove ogni nodo era sotto il controllo dell’agenzia governativa. Lo spostamento verso Internet e la conseguente proliferazione di gateway richiese l’implementazione del protocollo GGP (Gateway to gateway Protocol), usato fra gateway di tipo core. Il GGP era fondamentalmente utilizzato per diffondere informazioni circa i gateway non core collegati ad ogni gateway di tipo core, permettendo la realizzazione di tabelle di routing.
Con la crescita di Internet, divenne impossibile per ogni gateway tenere una mappa dell’intera rete. Ciò venne risolto facendo in modo che ogni gateway trattasse soltanto una specifica sezione dell’internet, facendo affidamento su gateway vicini per saperne di più sulle reti collegate ad essi. Un problema che si aveva frequentemente era la mancanza di informazioni per decisioni complete di instradamento, così venivano utilizzati instradamenti di default.
Precedentemente abbiamo introdotto il concetto di sistema autonomo. Un sistema autonomo è un sistema in cui la struttura della rete cui esso è collegato è invisibile al resto dell’internet. Usualmente un gateway porta alla rete, cosicché tutto il traffico per quella rete passa attraverso il gateway, che nasconde la struttura interna della rete locale al resto di internet.
Se la rete locale ha più di un gateway ed essi possono dialogare fra di loro, essi sono considerati vicini interni (il termine vicini interni è spesso utilizzato per tutte le macchine della rete locale, non solo per i gateway). Se i gateway appartengono a sistemi autonomi differenti, essi sono detti vicini esterni . così quando sono richiesti instradamenti di default è compito dei gateway esterni di instradare messaggi fra sistemi autonomi. I gateway interni sono utilizzati per trasferire messaggi all’interno di un sistema autonomo.
All’interno di una rete, il metodo di trasferire informazioni di instradamento tra gateway interni è usualmente il Routing Information Protocol (RIP) o il meno comune protocollo Hello, i quali sono entrambi Interior Gateway Protocol (IGP). Questi protocolli sono stati disegnati specificamente per gateway interni. Su Internet, messaggi tra due gateway esterni avvengono attraverso Exterior Gateway Protocol (EGP). I protocolli RIP, HELLO e EGP si fondano su frequenti scambi di informazioni tra gateway per aggiornare tabelle di instradamento.
Perché non usare un protocollo GGP per tutte le comunicazioni di internetwork abbandonando gli EGP? La risposta consiste nel fatto che i core gateway che usano protocolli GGP sono a conoscenza di tutti gli altri core gateway che vi sono nell’internetwork. Ciò semplifica la loro attività e fornisce tabelle di instradamento complete. Comunque, i core gateway usualmente portano in molti network complessi costituiti a più reti autonome. , la maggior parte dei quali non sono note ai core gateway. Comunque un gateway esterno deve conoscere tutto delle reti direttamente collegate ad esso ma non di tutte le reti dell’intero internetwork, cosicché le tabelle di instradamento e gli algoritmi di instradamento per gateway di tipo core e di tipo non core sono differenti. Ciò significa inoltre che i messaggi possono avere formati differenti, poiché le informazioni di routing per un gateway non core hanno alcune connessioni che sono nascoste agli altri gateway.
E’ possibile per un sistema autonomo ampio di essere composto da diverse sottoreti o aree, ciascuna delle quali comunica con le altre attraverso un IGP. Ciascuna sottorete o area ha un gateway designato, chiamato gateway di confine [border gateway] o instradatore di confine [border router] per indicare che esso è interno ad un’area. I gateway border comunicano fra di loro usando protocolli IGP. Un termine comunemente usato è boundary gateway , che è equivalente a gateway esterno o ad un percorso verso un altro network autonomo. Ciò è illustrato nella figura seguente, che mostra tre sottoreti o aree che comunicano fra di loro attraverso boundary gateway o router che usano IGP, e due gateway esterni (anch0essi chiamati boundary gateway ) che comunicano con il resto dell’internet usando EGP.
Per gestire le tabelle di instradamento, la maggior parte dei sistemi Unix usa un daemon chiamato router. Alcuni sistemi usano un daemon detto gated. Entrambi possono scambiare messaggi RIP con altre macchine, aggiornando le loro tabelle di instradamento se necessario. I programmi di tipo gated possono anche gestire messaggi di tipo EGP o HELLO, aggiornando le tabelle per l’internetwork. Sia i router che i gated possono essere gestiti dall’amministratore di sistema per selezionare instradamenti favorevoli , o per etichettare un instradamento come non affidabile.
Le informazioni di configurazione per i gate e i router sono normalmente immagazzinate come file chiamati gated.cfg, gated.conf,o gated.cf. Alcuni sistemi specificano i file di informazione gated per ogni protocollo, risultanti nei file gated.egp, gated.hello,e gated.rip. Un file di configurazione di esempio per EGP usato dal processo gated è mostrato qui di seguito.
# @(#)gated.egp 4.1 Lachman System V STREAMS TCP source
# sample EGP config file
traceoptions general kernel icmp egp protocol ;
autonomoussystem 519 ;
rip no;
egp yes {
group ASin 519 {
neighbor 128.212.64.1 ;
} ;
} ;
static {
default gateway 128.212.64.1 pref 100 ;
} ;
propagate proto egp as 519 {
proto rip gateway 128.212.64.1 {
announce 128.212 metric 2 ;
} ;
proto direct {
announce 128.212 metric 2 ;
} ;
} ;
propagate proto rip {
proto default {
announce 0.0.0.0 metric 1 ;
} ;
proto rip {
noannounce all ;
} ;
} ;
il codice precedente mostra un certo numero di dettagli di configurazione. Esso inizia con un certo numero di opzioni e lo switch che attiva l’EGP e setta l’indirizzo IP. Ciò è seguito a codice che definisce il modo in cui si comporta l’EGP. La maggior parte dei dettagli sono di scarso interesse e sono raramente modificati da un utente. Invece le routine di configurazione gestiscono i contenuti di questo file.
L’amministratore di sistema UNIX ha inoltre un programma chiamato route che abilita registrazioni dirette delle informazioni delle tabelle di routing.
E’ diventata pratica comune consentire un indirizzo di default 0.0.0.0 che fa riferimento ad un gateway sulla rete che dovrebbe essere capace di risolvere un indirizzo sconosciuto. (ciò è incluso nel precedente esempio di file di configurazione come proto default). L’instradamento di default è usato quando la macchina locale non può risolvere l’indirizzo in maniera appropriata. Poiché le tabelle di instradamento su un gateway sono usualmente più complete di quelle su una macchina locale , ciò aiuta a mandare pacchetti verso la destinazione prevista. Se il gateway di indirizzamento di default non può risolvere l’indirizzo, un messaggio di errore Internet Message Control Protocol (IMCP) è restituito al mittente.
L’instradamento fa riferimento al trasferimento di pacchetti da una macchina all’altra. Ogni macchina cui giunge il pacchetto analizza il contenuto dell’header del pacchetto e decide la sua azione basata sulle informazioni contenute nell’header. Se l’indirizzo di destinazione del pacchetto coincide con l’indirizzo della macchina, il pacchetto dovrebbe essere trattenuto ed elaborato dai protocolli di livello superiore. Se l’indirizzo di destinazione non coincide con l’indirizzo della macchina , il pacchetto è inviato lungo la rete. Potrebbe essere instradato verso la macchina di destinazione o verso un gateway o un bridge se il pacchetto deve lasciare la rete locale.
L’instradamento da un contributo primario alla complessità delle reti a commutazione di pacchetto. E’ necessario per avere un percorso ottimale fra macchina sorgente e macchina destinazione, così come per gestire problemi come sovraccarichi o la perdita di una connessione. I dettagli di instradamento sono contenuti nelle tabelle di instradamento, e diversi algoritmi di instradamento lavorano con queste tabelle per sviluppare un percorso ottimale.
La creazione di una tabella di instradamento e la sua gestione con registrazioni valide sono aspetti importanti di un protocollo. Di seguito abbiamo alcuni metodi comuni per costruire una tabella di instradamento:
Viene creata una tabella fissa con una
mappa della rete, che deve essere modificata ogni volta che vi è un cambiamento
fisico nella rete
Si usa una tabella dinamica che valuta
i carichi di traffico e messaggi da altri nodi per raffinare una tabella
interna
Una tabella centrale di instradamento
fissa viene caricata da un deposito centrale dai nodi della rete ad intervalli
regolari o quando richiesto.
Ogni metodo ha vantaggi e svantaggi. L’approccio con tabella fissa , sia localizzato su ogni nodo della rete sia scaricato ad intervalli regolari da una tabella gestita a livello centrale, non è flessibile e non può reagire velocemente a cambiamenti della topologia della rete. La tabella centrale è un’opzione migliore a quella di avere tabelle in ogni nodo poiché rende possibile per un amministratore gestire la singola tabella molto più facilmente.
La tabella dinamica è il meglio per reagire a cambiamenti, sebbene richieda un migliore controllo, sofware più complesso, e maggior traffico sulla rete. Comunque i vantaggi sono superiori agli svantaggi e una tabella dinamica è il metodo più usato su Internet.
La maggior parte delle reti e dei gateway lavorano sull’assunto che la via più corta (in termini di macchine attraversate) sia il metodo migliore per instradare messaggi. Ogni macchina che viene attraversata da un messaggio è chiamata hop, cosicché questo metodo viene detto a minor numero di hop. Sebbene esperimenti abbiano dimostrato che questo metodo non sia necessariamente il più veloce (poiché non tiene conto della velocità di trasmissione fra le varie macchine ), è uno dei metodi più semplici da implementare.
Per fornire questo tipo di instradamento, viene sviluppata una tabella delle distanze fra ogni coppia di macchine, o è disponibile un algoritmo per permettere di calcolare il numero di hop richiesti per raggiungere una macchina. Ciò viene mostrato usando l’esempio di rete di gateway mostrato in figura
e la corrispondente tabella delle distanze fra i vari gateway.
|
A |
B |
C |
D |
E |
F |
G |
H |
I |
A |
|
1 |
2 |
1 |
2 |
3 |
4 |
3 |
4 |
B |
1 |
|
1 |
2 |
3 |
4 |
5 |
4 |
5 |
C |
2 |
1 |
|
1 |
2 |
3 |
4 |
3 |
4 |
D |
1 |
2 |
1 |
|
1 |
2 |
3 |
2 |
3 |
E |
2 |
3 |
2 |
1 |
|
1 |
2 |
1 |
2 |
F |
3 |
4 |
3 |
2 |
1 |
|
1 |
2 |
1 |
G |
4 |
5 |
4 |
3 |
2 |
1 |
|
2 |
1 |
H |
3 |
4 |
3 |
2 |
1 |
2 |
2 |
|
1 |
I |
4 |
5 |
4 |
3 |
2 |
1 |
1 |
1 |
|
Quando un messaggio deve essere instradato usando l’approccio a minimo numero di hop, viene consultata la tabella delle distanze, e viene selezionato il percorso con il più basso numero di hop. Il messaggio è poi instradato al gateway più vicino al network di destinazione. Quando gateway intermedi ricevono il messaggio, eseguono lo stesso tipo di lookup è instradano il messaggi verso il prossimo gateway sul percorso.
Vi sono diversi problemi con l’approccio a minor numero di hop. Se le tabelle dei gateway attraverso i quali viaggia verso la sua destinazione il messaggio hanno informazioni di instradamento diverse, è concepibile che un messaggio che abbia lasciato la macchina sorgente possa finire per seguire un percorso più complicato a causa di tabelle differenti sui gateway intermedi. Il metodo a minor numero di hop inoltre non tiene in conto la velocità di trasmissione, avarie sulle linee, o altri fattori che potrebbero influenzare il tempo complessivo del viaggio verso la destinazione; esso è semplicemente legato alla più piccola distanza apparente, assumendo che tutte le connessioni siano identiche. Per tener conto di questi fattori occorre un altro metodo.
Il tipo di instradamento dipende dai tipi di servizio di instradamento disponibili da gateway a gateway. Questo è chiamato instradamento type of service (Type of Service Routing o TOS). Esso è anche chiamato più formalmente Qualità of service dal modello OSI. Il TOS include considerazioni sulla velocità ed affidabilità delle connessioni, così come sulla sicurezza e su fattori specifici del percorso di instradamento.
Per effettuare un instradamento di tipo TOS, la maggior parte dei sistemi utilizza l’aggiornamento dinamico di tabelle che riflettono le condizioni di traffico e collegamento. Essi tengono in considerazione la lunghezza delle code ad ogni gateway, poiché il più veloce percorso teorico potrebbe non importare se il messaggio è bloccato in una coda. Questa informazione è ottenuta attraverso il frequente trasferimento di messaggi di stato tra gateway.
L’aggiornamento dinamico delle tabelle può avere uno svantaggio in quanto se esse sono aggiornate troppo frequentemente, un messaggio potrebbe circolare attraverso una sezione dell’internet senza un appropriato instradamento verso la sua destinazione, o procedere attraverso un percorso lungo e convoluto. Per questa ragione l’aggiornamento dinamico avviene ad intervalli regolari ma non troppo frequenti. La natura dinamica del TOS può talvolta fare in modo che frammenti dello stesso messaggio vengano instradati in modi diversi verso la destinazione. Ciò non importa, naturalmente, poiché la macchine ricevente riassembla i messaggi nell’ordine appropriato.
Un utile esempio dell’aggiornamento dinamico è utile a questo punto. Assumiamo che due reti autonome siano connesse l’un l’altra a due locazioni, come mostrato nella figura seguente, con connessioni ad altre reti in differenti locazioni.
La connessione A-C e la connessione B-D possono essere usate entrambe per l’instradamento fra le due reti, in dipendenza di quale sia il percorso ottimale. Il gateway C ha una copia delle tabelle del gateway A e viceversa. Anche i gateway B e D hanno copie delle reciproche tabelle di instradamento. Queste copie son0 trasmesse ad intervalli cosicché i gateway possono mantenere una visione aggiornata delle connessioni disponibili attraverso l’altro gateway.
Supponiamo ora che un collegamento in uno dei network si interrompa per un guasto su una macchina o su una connessione, ad esempio quello fra il gateway C e il gateway X. Il gateway C verrebbe a conoscenza del problema ed aggi0ornerebbe le sue tabelle di instradamento per tener conto della rottura del collegamento, usualmente inserendo il più grande valore possibile per la lunghezza del percorso in corrispondenza di quel collegamento. Il gateway C trasferisce una copia della tabella di instradamento al gateway A.
Instradare un messaggio alla macchina Y sarebbe ora impossibile attraverso la connessione C-X. Comunque, poiché il gateway A riceve le informazioni di instradamento da C, e scambia le sue informazioni di instradamento dal gateway B, il quale effettua inoltre scambi di informazioni con il gateway D, ogni messaggio che passa attraverso sia D che B e diretto verso Y potrebbe essere reinstradato attraverso il gateway A, poi C e finalmente a Y. Un messaggio EGP tra B e D e A e C indicherebbe che il nuovo percorso costa meno del massimo valore assegnato al percorso che va attraverso il collegamento C-X (che è rotto) .
Messaggi EGP tra gateway sono inviati usualmente quando un problema di connessione esiste e l’informazione di instradamento è settata al suo valore massimo , o quando una connessione migliore alternativa è stata scoperta per una qualche ragione. Ciò può accadere per un aggiornamento da una tabella di instradamento di un gateway remoto , o per l’aggiunta di nuove connessioni, macchine o reti al sistema. Qualunque cosa accada, un messaggio EGP informa tutti i gateway connessi dei cambiamenti.
I gateway hanno bisogno di sapere cosa accade al resto della rete per instradare i datagrammi in maniera appropriata ed efficiente. Ciò include non solo informazioni di instradamento ma anche le caratteristiche d3lle sotto reti. Per esempio se un gateway è particolarmente lento ma è l’unico sistema per accedere ad una sotto rete altri gateway possono adattare il traffico su misura per questa situazione.
Un messaggio GCP è usato per scambiare informazioni di instradamento fra apparecchiature. E’ importante non confondere informazioni di instradamento , che contengono indirizzi , topologia, e dettagli su ritardi nell’instradamento, con gli algoritmi usati per produrre le informazioni di instradamento. Usualmente gli algoritmi di instradamento sono fissati all’interno di un gateway e non vengono modificati. Naturalmente, se le informazioni di instradamento cambiano, l’algoritmo adatta i percorsi scelti per riflettere le nuove informazioni.
I GCP servono principalmente per le reti autonome ed autosufficienti. Un sistema autonomo usa gateway che sono collegati in un’unica ampia rete , come si potrebbe avere in una grande società. Due tipi di gateway debbono essere considerati in una rete autonoma. I gateway tra sottoreti più piccole aiutano a collegare i piccoli sistemi nella più ampia rete aziendale, ma i gateway all’interno di ogni sottorete sono usualmente sotto il controllo di un sistema. Questi gateway sono considerati autonomi perché le connessioni tra gateway sono costanti e raramente cambiano. Questi gateway comunicano attraverso un IGP.
Ampie reti d’interconnessione come Internet non sono statiche come una rete aziendale. I gateway possono cambiare costantemente mentre le sottoreti sussidiarie fanno cambiamenti, e i percorsi di collegamento fra i gateway sono anch’esse più soggette a cambiamenti. Per aziende ad ampia diffusione, potrebbero esservi gateway diffusi in una nazione o nel mondo intero che sono tutti parte della stessa rete aziendale ma comunicano attraverso Internet. Le comunicazioni tra questi gateway sono leggermente differenti rispetto al caso in cui essi sono fisicamente connessi fra loro. Questi gateway comunicano attraverso gli EGP.
Vi sono meno regole che governano gli IGP rispetto agli EGP semplicemente perché l’IGP può gestire applicazioni e protocolli personalizzate all’interno della sua rete locale. Quando l’Internet viene utilizzata per comunicazioni fra gateway, i messaggi devono conformarsi allo standard Internet. Inoltre, quando si connettono due sottoreti, è possibile mandare soltanto un messaggio al gateway della sottorete attraverso l’EGP, che può essere duplicato, modificato e propagato a tutti i gateway del sistema di internetworking utilizzando IGP.
IL protocollo GGP è usato per comunicazioni fra gateway di tipo core. Un recente miglioramento del protocollo, chiamato SPREAD, incomincia ad essere utilizzato ma non è ancora comune come il GGP.
Il GGP è un protocollo vettore-distanza, cioè i messaggi tendono a specificare una destinazione (vettore) e la distanza da quella destinazione. I protocolli vettore-distanza sono chiamati inoltre protocolli Bellman- Ford, dal nome dei ricercatori che per primi ne pubblicarono l’idea di fondo. Perché un protocollo vettore-distanza sia efficace un gateway deve avere informazioni complete su tutti i gateway della rete.
Un gateway stabilisce le sue connessioni ad altri gateway inviando messaggi, aspettando risposte, e poi costruendo una tabella. Questo è realizzato inizialmente quando un gateway viene installato e manca del tutto di informazioni di instradamento. Questo aspetto delle comunicazioni non è definito all’interno del GGP ma si appoggia su messaggi specifici della rete. Una volta che è stata definita la tabella iniziale, GGP viene utilizzato per tutti i messaggi.
La connettività con un altro gateway di Internet è determinata con il metodo detto K out of N. In questa procedura, un gateway manda un m3essaggio eco ad un altro gateway e attende una replica. Esso ripete questo messaggio ogni 15 secondi. In accordo con gli standard Internet, se il gateway non riceve tre (K) repliche su quattro (N) richieste, l’altro gateway è considerato in avaria ed i messaggi di instradamento non gli vengono inviati. Questo processo può essere ripetuto ad intervalli regolari.
Se un gateway diviene di nuovo attivo, gli standard internet richiedono che vengano riconosciuti due su quattro messaggi eco. Questo è chiamato metodo J su M, dove J è 2 e M è 4.I valori assegnati per J, K, M ed N possono essere cambiati su reti auton0me, ma lo standard definisce i valori per l’uso su Internet.
Ogni messaggio tra gateway ha un numero di sequenza che si incrementa con ogni messaggio trasmesso. Ogni gateway traccia il suo proprio numero di sequenza per gli invii ad ogni altro gateway cui è connesso, così come i numeri di sequenza in ingresso provenienti da quel gateway. Essi sono non necessariamente gli stessi, poiché si potrebbero avere più messaggi in una direzione che in un’altra, sebbene ogni messaggio dovrebbe avere un riconoscimento o una replica di un qualche tipo.
I numeri di sequenza hanno un significato importante per i messaggi e non soltanto per il desiderio di mantenere un contatore incrementale del volume di traffico.
Quando un gateway riceve un messaggio da un altro gateway , esso confronta il numero di sequenza in quel messaggio con l’ultimo numero di sequenza ricevuto nella sua tabella interna. Se l’ultimo messaggio ha un numero di sequenza più alto rispetto a quello precedente, il gateway accetta il messaggio e aggiorna il suo numero di sequenza. Se il numero risulta più piccolo , il messaggio è considerato vecchio ed ignorato, e un messaggio di errore contenente il messaggio ricevuto viene rimandato indietro. Il processo è mostrato nella figura seguente.
Il gateway ricevente riscontra il messaggio ricevuto inviando un messaggio di ritorno che contiene il numero di sequenza del messaggio appena ricevuto. L’altro gateway confronta quel numero con il numero dell’ultimo messaggio che ha inviato , e se i numeri coincidono, il gateway riceve conferma che il messaggio è stato ricevuto in maniera corretta. Se i due numeri non coincidono, il gateway sa che vi è stato un errore e trasmette il messaggio di nuovo. Quando un messaggio viene ignorato dal gateway recipiente, il gateway trasmittente riceve un messaggio con il numero di sequenza del messaggio ignorato. Può determinare in tal modo quali messaggi sono stati saltati e rinviare i messaggi che necessitano di essere trasmessi.
Il formato del messaggio GGP è mostrato nella figura seguente.
dopo che esso è stato costruito viene incapsulato n un datagramma IP che include gli indirizzi del trasmettitore e del ricevitore. Il primo campo è il tipo del messaggio, che è settato al valore 12 corrispondente alle informazioni di routing. Il numero di sequenza è stato appena discusso e fornisce un contatore incrementale per ogni messaggio. Il campo Update è settato ad un valore 0 a meno che il gateway trasmittente voglia un aggiornamento dell’instradamento per l’indirizzo di destinazione fornito, nel qual caso il campo è settato al valore 1. il campo Number of Distances contiene il numero di gruppi di indirizzi contenuti nel messaggio corrente.
Per ogni gruppo di distanza nel messaggio , sono forniti un valore di distanza e il numero di reti che possono essere raggiunte a quella distanza, seguiti da tutte le identificazioni dell'indirizzo di rete. In accordo con lo standard GGP, non tutte le distanze necessitano di essere riportate, ma maggiore è il numero di informazioni riportato nel messaggio, e maggiore è l’utilità del messaggio per i gateway.
GGP non tratta con gli indirizzi IP specificatamente, cosicché la porzione dell’indirizzo relativa all’host non deve necessariamente essere inclusa nell’indirizzo, mentre l’indirizzo del network è sempre fornito. Ciò porta ad indirizzi di lunghezza diversa nel campo identificazione (8, 16, o 24 bit a seconda del tipo di indirizzo) .
Sono usati altri tre tipi di formati con i messaggi GGP, come mostra la figura seguente
il messaggio di riscontro usa il campo tipo per indicare se il messaggio è un risconto positivo (il campo tipo è settato a 2) o un riscontro negativo (il campo è settato a 10). Il numero di sequenza è usato per identificare il messaggio cui si riferisce il riscontro.
I formati echo request e echo reply sono scambiati fra gateway per informare di cambiamenti di stato e per assicurare che un gateway sia attivo. Un messaggio echo request ha il campo tipo settato al valore 8, mentre una echo reply ha il campo tipo settato a 0. poiché l’indirizzo del gateway mittente è incastonato nell’header IP, non viene duplicato nel messaggio GGP. I restanti 24 bit del messaggio non vengono utilizzati.
Il messaggio network interface status viene utilizzato da un gateway per assicurare che esso è capace di inviare e ricevere messaggi in maniera appropriata. Questo tipo di messaggi può essere inviato al gateway originante stesso, con il campo tipo settato a 9 e l’indirizzo IP nell’header settato all’indirizzo dell’interfaccia del network.
Un EGP è utilizzato per trasferire informazioni fra gateway vicini di tipo non core . i gateway non core contengono dettagli completi circa i loro vicini immediati e le macchine ad essi collegate., ma mancano di informazioni circa il resto della rete. I gateway di tipo core sanno tutto di tutti gli altri gateway ma mancano informazioni circa le macchine che stanno dietro ad ogni gateway.
L’uso di EGP è normalmente ristretto ad informazioni all’interno del sistema autonomo del gateway. Ciò previene il passaggio di troppe informazioni attraverso la rete, specialmente quando la maggior parte delle informazioni che si riferiscono a sistemi esterni ed autonomi sono inutilizzabili da una altro gateway.
Poiché l’EGP fu sviluppato per permettere a sistemi remoti di scambiare informazioni di instradamento e messaggi di stato , il protocollo è pesantemente basato su richieste e comandi seguiti da risposte. I quattro comandi EGP e le possibili risposte sono mostrati nella tabella seguente
Command
Name |
Command
Description |
Response
Name |
Response
Description |
Request
|
Request
that a neighbor become a gateway |
Confirm/Refuse
|
Agree or
refuse the request |
Cease
|
Request
the termination of a neighbor |
Cease-Ack
|
Agree to
termination |
Hello
|
Request
confirmation of routing to neighbor (neighbor reachability) |
IHU |
Confirms
the routing |
Poll
|
Request
that the neighbor provide network information (network reachability) |
Update |
Provides network information |
Per comprendere la tabella in maniera appropriata , occorre comprendere il concetto di vicino in una rete di interconnessione. Dei gateway sono vicini se condividono la stessa sottorete. Essi possono essere gateway verso la stessa rete (come Internet)o lavorare con diverse reti esterne. Quando due di essi vogliono scambiarsi informazioni, essi devono prima stabilire comunicazioni tra di loro; i due gateway stano stanzialmente accettando di scambiarsi informazioni di instradamento. Questo processo viene chiamato neighbor acquisition.
Il concetto di vicino non significa che le due reti debbano essere necessariamente fisicamente prossime l’una all’altra. Esse sono connesse mediante gateway ma possono essere collocate in continenti diversi. Il termine vicino si riferisce alle connessioni esistenti non alla collocazione geografica.
Il processo con cui ridiventa vicini è formale, poiché un gateway potrebbe non volere diventare un vicino in quel particolare momento (per diverse ragioni ma sostanzialmente quando il gateway occupato). Esso comincia con una Request , che è seguito o da un’accettazione (Confirm) o da un rifiuto (Refuse) dalla seconda macchina. Se i due gateway sono vicini, ciascuno dei due può rompere la relazione mediante il messaggio Cease.
Dopo che due gateway diventano vicini, essi assicurano l’un l’altro di essere ancora in contatto inviando sporadicamente un messaggio di Hello, al quale il secondo gateway risponde con un messaggio IHU (I Heard You: ti ho sentito) appena possibile. Questi messaggi possono essere inviati in ogni momento. Con diversi gateway impegnati su una rete , il numero di messaggi di Hello può diventare apprezzabile . Questo processo prende il nome di raggiungibilità dei vicini (neighbor reachability).
L’altra coppia di messaggi EGP è la raggiungibilità della rete (network reachability), nel qual caso un gateway invia un messaggio di Poll e aspetta un messaggio Update in risposta. La risposta contiene una lista di reti che possono essere raggiunte attraverso quel gateway, con un numero rappresentante il numero di hop necessari per raggiungere quelle reti. Assemblando i messaggi Update dai differenti vicini, un gateway può decidere il miglior percorso per inviare un datagramma.
Infine, un messaggio di errore è restituito quando il gateway non può comprendere un messaggio EGP in ingresso.
Il layout dei diversi messaggi usati da EGP è mostrato nella figura seguente
I campi hanno il seguente significato
Il campo Versione contiene il numero
della versione del protocollo EGP della macchina mittente (la versione corrente
è la 2)
Il campo tipo (Type field) identifica
il tipo di messaggio. Vi sono dieci tipi di messaggi nel protocollo EGP.
IL campo Code contiene un valore che
identifica il sottotipo di messaggio
Il campo stato (Status Field) è usato
con i campi Type e Code per riflettere lo stato corrente del gateway.
Il Checksum è calcolato per il
messaggio EGP come negli altri header TCP/IP
Il System Number è un’identificazione
del sistema autonomo cui appartiene il gateway.
Il campo Sequence Number del messaggio
è un contatore che si incrementa per ogni messaggio, usato inoltre per
identificare la riposta ad un precedente messaggio.
Il campo Reason di un messaggio di errore può contenere uno dei seguenti valori interi
0. errore non specificato
1. Header EGP errato
2. campo dati EGP errato
3. Informazioni di raggiungibilità non disponibili
4. Polling eccessivo
5. nessuna risposta ricevuta per un Poll
attraverso una combinazione dei campi Tipo, Code e Status possono essere determinati in maniera più accurata scopo e significato di un un messaggio EGP: la tabella seguente mostra tutti i valori .
Type |
Description |
Code |
Description |
Status |
Description |
1 |
Update |
0 |
|
0 |
Indeterminate
|
|
|
|
|
1 |
Up |
|
|
|
|
2 |
Down |
|
|
|
|
128 |
Unsolicited
|
2 |
Poll |
0 |
|
0 |
Indeterminate
|
|
|
|
|
1 |
Up |
|
|
|
|
2 |
Down |
3 |
Neighbor
Acquisition |
0 |
Request |
0 |
Not
specified |
|
|
1 |
Confirm |
1 |
Active mode |
|
|
2 |
Refuse |
2 |
Passive mode |
|
|
3 |
Cease |
3 |
Insufficient
Resources |
|
|
4 |
Cease-Ack |
4 |
Prohibited
|
|
|
|
|
5 |
Shutting
Down |
|
|
|
|
6 |
Parameter Problem |
|
|
|
|
7 |
Protocol Violation |
5 |
Neighbor
Reachability |
0 |
Hello |
0 |
Indeterminate
|
|
|
1 |
I Heard
You |
1 |
Up |
|
|
|
|
2 |
Down |
8 |
Error |
0 |
|
0 |
Indeterminate
|
|
|
|
|
1 |
Up |
|
|
|
|
2 |
Down |
|
|
|
|
128 |
Unsolicited |
Il campo Status può indicare se un gateway è attivo o spento. Nello stato down, il gateway non effettua alcun instradamento. L’indicatore Neighbor Acquisition status può mostrare se la macchina è attiva o passiva. Se passivo il gateway non genera alcun messaggio Hello, ma risponde ad essi. Almeno un vicino deve essere attivo per rilasciare i messaggi di Hello.
Quando una lista di reti e delle loro distanze deve essere aggiunta ad un header EGP, ciò viene fatto nel formato seguente
Il numero di distanze nella lista è specificato, seguito da registrazioni con lo stesso formato che danno la distanza in numerosi hops dal gateway , il numero di reti che possono essere raggiunte attraverso quel gateway , e gli indirizzi di rete. Il numero di gateway interni ed esterni nell’header EGP dice al gateway quante registrazioni vi sono nella lista.
Usando EGP, i gateway possono aggiornarsi l’un l’altro e tenere al passo le loro tabelle di instradamento. Uno schema simile è usato per IGP , sebbene il messaggio possa essere particolarizzato dal manager del network poiché non viene trasmesso su Internet.
Un messaggio Neighbor Acquisition (Request, Confirm, Refuse Acquisition) è inviato quando un vicino viene controllato per effettuare l’acquisizione. È usato lo stesso formato qualunque sia il tipo di messaggio.
Il tipo è settato al valore 3 per indicare che si tratta di un’acquisizione di vicino, e il campo Code fornisce i dettagli sul tipo di messaggio di acquisizione , come mostrato nella tabella seguente
Code |
Description |
0 |
Request
Acquisition |
1 |
Confirm
Acquisition |
2 |
Refuse
Acquisition |
3 |
Cease |
4 |
Cease
Acknowledgment |
Il campo Status nel header del messaggio di acquisizione è settato ad uno di 8 possibili valori e viene utilizzato per fornire ulteriori informazioni circa la richiesta . i valori validi per il campo sono mostrati nella tabella seguente.
Status |
Description
|
0 |
Unspecified;
used when no other code is applicable |
1 |
Active;
indicates an active status mode |
2 |
Passive;
indicates a passive status mode |
3 |
Insufficient
resources available |
4 |
Administratively
prohibited |
5 |
Going
down either because of operator intervention or expiration of the t3 timer |
6 |
Parameter
error with incoming message |
7 |
Protocol
violation in incoming message or response message is incompatible with
current machine state |
Status |
Description
|
0 |
Indeterminate;
used when no other code is applicable |
1 |
Neighbor
is in an up state |
2 |
Neighbor
is in a down state |
Status |
Description
|
0 |
Indeterminate;
used when no other code is applicable |
1 |
Neighbor
is in an up state |
2 |
Neighbor
is in a down state |
128 |
Unsolicited message |
State |
Description |
0 |
Idle |
1 |
Acquisition |
2 |
Down |
3 |
Up |
4 |
Cease |
Command |
Response |
Request
|
Confirm |
Refuse
|
none |
Error
|
none |
Cease
|
Cease
Ack |
Error
|
none |
Hello
|
IHU (I
Heard You) |
Error
|
none |
Poll
|
Update |
Error |
none |
Name |
Description
|
M |
Hello
polling mode. |
P1
|
Minimum
interval acceptable between successive received Hello commands. Default is 30
seconds. |
P2
|
Minimum
interval acceptable between successive received Poll commands. Default is 120
seconds. |
P3
|
Interval
between Request or Cease command retransmissions. Default is 30 seconds. |
P4
|
Interval
during which the state variables are maintained without receiving an incoming
message when in the up or down state. Default is one hour. |
P5
|
Interval
during which the state variables are maintained without receiving an incoming
message when in the cease or acquisition state. Default is 2 minutes. |
R |
Receive
sequence number. |
S |
Send
sequence number. |
T1
|
Interval
between Hello command retransmissions. |
T2
|
Interval
between Poll command retransmissions. |
T3
|
Interval
during which reachability attempts are counted. |
t1
|
Retransmission
timer for Request, Hello, and Cease messages. |
t2 |
Retransmission timer for Poll messages. |
t3 |
Abort timer. |
Type |
Description
|
1 |
Hello |
2 |
Database
description |
3 |
Link
state request |
4 |
Link
state update |
5 |
Link
state acknowledgment |
Value |
Description
|
1 |
Router
links (router to area) |
2 |
Network
links (router to network) |
3 |
Summary
link (information on the IP network) |
4 |
Summary
link (information on autonomous system border router) |
5 |
AS
external link (external to autonomous system) |