820 likes | 1.02k Views
RETI DI CALCOLATORI. Quinta Esercitazione. I router. Applicazione. Applicazione. Presentazione. Presentazione. Sessione. Sessione. Trasporto. ROUTER. Trasporto. Rete. Rete. Rete. Data Link. Data Link. Data Link. Data Link. Fisico. Fisico. Fisico. Fisico. I router.
E N D
RETI DI CALCOLATORI Quinta Esercitazione
I router Applicazione Applicazione Presentazione Presentazione Sessione Sessione Trasporto ROUTER Trasporto Rete Rete Rete Data Link Data Link Data Link Data Link Fisico Fisico Fisico Fisico
I router I router sono dei dispositivi che lavorano a livello network (e pertanto utilizzano tutte le informazioni contenute nella busta di livello 3) del modello OSI e risultano essere, in teoria, gli elementi più adeguati per l'interconnessione di LAN.
I router Il loro operato è di norma limitato ad un solo o pochi protocolli e ben si caratterizza per la gestione di topologie complesse. Sfruttano tutte le linee a disposizione della rete, comprese quelle più lente, e consentono inoltre di suddividere la rete stessa in più aree in modo da avere un routing di tipo gerarchico.
I router I router possono essere indicati tramite terminologie alternative quali IS (Intermediate System) in ambito ISO, gateway in ambito IP (anche se in questo caso tale termine è usato impropriamente) e ICMP (Interface Message Processor) in ambito Arpanet.
Multiprotocol Router Di notevole importanza risultano essere i router multiprotocollo, in grado di trattare più architetture di rete. Analizzando la loro struttura si può notare che il modulo di instradamento è replicato per ogni protocollo trattato.
DECNET TCP/IP OSI Algoritmo di calcolo della tabella di instradamento Algoritmo di calcolo della tabella di instradamento Algoritmo di calcolo della tabella di instradamento Tabella di instradamento Tabella di instradamento Tabella di instradamento Processo di forwarding Processo di forwarding Processo di forwarding LAN #1 LAN #2 WAN #1 WAN #2 Multiprotocol Router FDDI
I brouter Il problema dell'esistenza di protocolli privi del terzo livello è stato risolto mediante utilizzo di moduli di bridging; se un router realizza tale funzione viene chiamato brouter.
Router vs. Bridge Una prima distinzione può essere fatta nella modalità di utilizzo delle buste: i router manipolano buste di livello tre adattando, se è il caso, la lunghezza dei messaggi in base alle reti di destinazione mediante frammentazione o divisione degli stessi. I bridge non hanno invece la facoltà di manipolare il contenuto del campo dati.
Router vs. Bridge Per quanto riguarda l'indirizzamento, per i router è esplicito mentre i bridge vengono totalmente ignorati dai nodi, ad eccezione dei source routing bridge. In relazione all'instradamento, i bridge utilizzano esclusivamente indirizzi di mittente e destinatario di livello due mentre i router hanno una più ampia gamma di informazioni su cui basare l'instradamento.
Router vs. Bridge In ambito di forwarding e anche per quanto detto prima, i bridge non modificano assolutamente gli indirizzi, operazione che però è consentita ai router che possono inoltre differenziare i messaggi in base alla loro priorità.
Tecniche di instradamento Le tre principali tecniche di instradamento, che variano in funzione dell'architettura di rete adottata, sono il routing by network address, il label swapping e il source routing.
Routing by network address Secondo questa tecnica di instradamento un sistema è indirizzato scrivendo nel pacchetto il suo indirizzo di livello tre, univoco per tutta la rete. I router utilizzano tale indirizzo come chiave di accesso alla tabella di instradamento per determinare su quale percorso deve essere ritrasmesso il pacchetto.
Label swapping Utilizzato soprattutto nei protocolli connessi, l'instradamento dei pacchetti viene deciso nella fase di connessione; per ciascuno di essi viene definita una label, univoca all'interno dei data link, che viene usata dai router come chiave di accesso alla tabella di instradamento. Ogni router, prima di ritrasmettere il pacchetto, sostituisce la vecchia label con una nuova.
Source routing Con il source routing l'intero instradamento viene deciso dalla stazione mittente. Questa tecnica è utilizzata dai bridge token ring.
Il livello Network Il livello network è incaricato di muovere i pacchetti dalla sorgente fino alla destinazione finale, attraversando tanti sistemi intermedi (i router appunto) della subnet di comunicazione quanti è necessario. Ciò è molto diverso dal compito del livello data link, che è di muovere informazioni solo da un capo all'altro di un singolo canale di comunicazione wire-like.
Il livello Network Le incombenze principali di questo livello sono: • conoscere la topologia della rete; • scegliere di volta in volta il cammino migliore (routing); • gestire il flusso dei dati e le congestioni (flow control e congestion control); • gestire le problematiche derivanti dalla presenza di più reti diverse (internetworking).
Il livello Network Nel progetto e nella realizzazione del livello network di una architettura di rete si devono prendere decisioni importanti in merito a: • servizi offerti al livello transport; • organizzazione interna della subnet di comunicazione.
Servizi offerti In merito ai servizi offerti al livello superiore, ci sono due tipologie fondamentali di servizi: • servizi connection-oriented; • servizi connectionless. In proposito, esistono due scuole di pensiero: • fautori dei servizi connection-oriented (compagnie telefoniche); • fautori dei servizi connectionless (Internet Community).
Servizi offerti La prima scuola di pensiero afferma che il livello network deve fornire un servizio sostanzialmente affidabile e orientato alla connessione. In questa visione, succede che: • le peer entitiy stabiliscono una connessione, negoziandone i parametri (di qualità, di costo, ecc.), alla quale viene associato un identificatore; • tale identificatore viene inserito in ogni pacchetto che verrà inviato;
Servizi offerti • la comunicazione è bidirezionale e i pacchetti viaggiano, in sequenza, lungo il cammino assegnato alla connessione; • il controllo di flusso è fornito automaticamente.
Servizi offerti La seconda scuola di pensiero ritiene invece che la sottorete debba solo muovere dati e nient'altro: • la sottorete è giudicata inerentemente inaffidabile, per cui gli host devono provvedere per conto proprio alla correzione degli errori e al controllo di flusso; • una ovvia conseguenza è che il servizio offerto dal livello network dev'essere datagram, visto che è inutile inserire le funzioni di controllo degli errori e del flusso in due diversi livelli; • i pacchetti viaggiano indipendentemente, e dunque devono tutti contenere un identificatore (ossia l'indirizzo) della destinazione.
Servizi offerti Di fatto, il problema è dove mettere la complessità della realizzazione: • la prima scuola la mette nei nodi della subnet, che si devono occupare del setup delle connessioni e di fornire la necessaria affidabilità; • la seconda scuola la mette negli host, i cui livelli transport forniscono l'affidabilità e l'orientamento alla connessione.
Servizi offerti In realtà le decisioni sono due, separate: • offrire o no un servizio affidabile; • offrire o no un servizio orientato alla connessione. Le scelte più comuni sono di offrire servizi connection oriented affidabili oppure servizi connectionless non affidabili, mentre le altre due combinazioni, anche se tecnicamente possibili, non sono diffuse.
Organizzazione interna della subnet Questo è un problema separato ed indipendente da quello dei servizi offerti, anche se spesso c'è una relazione fra i due. Una subnet può essere organizzata con un funzionamento interno basato su connessioni oppure connectionless.
Funzionamento interno basato su connessioni La subnet stabilisce un circuito virtuale (sul quale verrà tipicamente veicolato il traffico di un servizio connection oriented), cioé crea un cammino fra la sorgente e la destinazione. Tutti i router lungo tale cammino ricordano, in una apposita struttura dati, la parte di loro competenza di tale cammino (e cioé quale linea in entrata e quale in uscita sono assegnate al cammino). Quando arrivano pacchetti che contengono l' ID di tale circuito virtuale, essi vengono instradati di conseguenza (tutti nello stesso modo).
Funzionamento interno connectionless I router si limitano a instradare ogni pacchetto che arriva sulla base del suo indirizzo di destinazione, decidendo di volta in volta come farlo proseguire. I router hanno delle tabelle di instradamento (routing table) che indicano, per ogni possibile destinazione, quale linea in uscita utilizzare; si noti che queste tabelle esistono anche nelle subnet del tipo precedente, dove però servono solamente nella fase di setup della connessione (per decidere come instradare i pacchetti di setup).
Funzionamento interno connectionless Quando offre un servizio connection-oriented, questo livello fa credere al livello superiore che esista una connessione, ma poi i pacchetti viaggiano indipendentemente (e quindi hanno tutti l'indirizzo del destinatario) e vengono rimessi in ordine dal livello network solo a destinazione, prima di essere consegnati al livello superiore.
Combinazioni di servizio offerto È possibile avere tutte le quattro combinazioni di servizio offerto e implementazione della subnet: • servizi connection oriented su circuiti virtuali; • servizi connectionless su subnet datagram; • servizi connection oriented su subnet datagram (si cerca di fornire comunque un servizio robusto); • servizi connectionless su circuito virtuale (esempio: IP su subnet ATM).
Algoritmi di routing La funzione principale del livello network è di instradare i pacchetti sulla subnet. Un algoritmo di routing è quella parte del software di livello network che decide su quale linea di uscita instradare un pacchetto che è arrivato: • in una subnet datagram l'algoritmo viene applicato ex novo ad ogni pacchetto; • in una subnet basata su circuiti virtuali l'algoritmo viene applicato solo nella fase di setup del circuito; in tale contesto si usa spesso il termine session routing.
Algoritmi di routing Da un algoritmo di routing si desidera: • correttezza (deve inviare il pacchetto nella giusta direzione); • semplicità (l'implementazione non deve essere troppo complicata); • robustezza (deve funzionare anche in caso di cadute di linee e/o router e di riconfigurazioni della topologia); • stabilità (deve convergere, e possibilmente in fretta); • equità (non deve favorire nessuno); • ottimalità (deve scegliere la soluzione globalmente migliore).
Algoritmi di routing Purtroppo, gli ultimi due requisiti sono spesso in conflitto fra loro; inoltre, a proposito dell'ottimalità, non sempre è chiaro cosa si voglia ottimizzare. Infatti, supponiamo che si vogliano: • minimizzare il ritardo medio pacchetti; • massimizzare il throughput totale dei pacchetti. Si scopre facilmente che questi due obiettivi sono in conflitto fra loro, perché di solito aumentare il throughput allunga le code sui router e quindi aumenta il ritardo: questo è vero per qualunque sistema basato su code gestito in prossimità della sua capacità massima.
Algoritmi di routing Gli algoritmi di routing si dividono in due classi principali: • algoritmi non adattativi (statici, deterministici) in cui le decisioni di routing sono prese in anticipo, all'avvio della rete, e sono comunicate ai router che poi si attengono sempre a quelle; • algoritmi adattativi (dinamici, non deterministici) in cui le decisioni di routing sono riformulate molto spesso (sulla base del traffico, della topologia della rete, ecc.).
Algoritmi di routing Gli algoritmi adattivi differiscono fra loro per: • come ricevono le informazioni: • localmente; • dai router adiacenti; • da tutti i router; • quanto spesso rivedono le decisioni: • a intervalli di tempo prefissati; • quando il carico cambia; • quando la topologia cambia; • quale metrica di valutazione adottano: • distanza; • numero di hop; • tempo di transito stimato.
Il principio di ottimalità È possibile fare una considerazione generale sull'ottimalità dei cammini, indipendentemente dallo specifico algoritmo adottato per selezionarli. Il principio di ottimalità afferma che se il router j è nel cammino ottimo fra i e k, allora anche il cammino ottimo fra j e k è sulla stessa strada: j k i Cammino ottimo fra i e k
Il principio di ottimalità Se così non fosse, ci sarebbe un altro cammino fra j e k migliore di quello che è parte del cammino ottimo fra i e k, ma allora ci sarebbe anche un cammino fra i e k migliore di quello ottimo. Una diretta conseguenza è che l'insieme dei cammini ottimi da tutti i router a uno specifico router di destinazione costituiscono un albero, detto sink tree per quel router. In sostanza, gli algoritmi di routing cercano e trovano i sink tree relativi a tutti i possibili router di destinazione, e quindi instradano i pacchetti esclusivamente lungo tali sink tree.
Algoritmi statici Questi algoritmi sono eseguiti solamente all'avvio della rete, e le decisioni di routing a cui essi pervengono sono poi applicate senza più essere modificate. In sostanza utilizzano criteri fissi di instradamento. I principali algoritmi statici risultano essere: • il Fixed Directory Routing; • Il Flooding.
Fixed Directory Routing Ogni nodo ha una tabella di instradamento, scritta manualmente dal gestore della rete, che mette in corrispondenza il nodo da raggiungere con la linea da utilizzare. In questo modo il gestore ha il totale controllo del traffico, ma deve obbligatoriamente intervenire ogni volta che si verifica un guasto. Sono state comunque introdotte delle tabelle con più alternative di scelta e che ben si adattano al variare dello stato della rete.
Fixed Directory Routing L8 Indirizzo L7 L1 Prima scelta Seconda scelta IS L6 L2 pol88a L2 L4 vaxrom L4 L3 vaxto L2 L5 infngw L1 L7 poldid L6 - vaxlnf L2 L4 L5 L3 L4
Flooding In questo tipo di algoritmo ciascun pacchetto in arrivo viene ritrasmesso su tutte le linee ad eccezione di quella su cui è stato ricevuto. Induce ad un carico elevato sulla rete e per questo si è pensato di introdurre il selective flooding secondo cui i pacchetti vengono ritrasmessi solamente a linee selezionate.
Flooding L'algoritmo può inoltre essere migliorato scartando pacchetti troppo vecchi (nell'header del pacchetto viene inserito un age-counter che indica il numero di router attraversati) o quelli che attraversano per una seconda volta un nodo (ogni nodo deve però mantenere in memoria tutti i pacchetti che lo attraversano).
Algoritmi dinamici Nelle moderne reti si usano algoritmi dinamici, che si adattano automaticamente ai cambiamenti della rete. Questi algoritmi non sono eseguiti solo all'avvio della rete, ma rimangono in esecuzione sui router durante il normale funzionamento della rete. È importante notare che le tabelle dipendono dalle informazioni che sopraggiungono dalla rete (topologia, costi dei cammini, stato dei dispositivi).
Algoritmi dinamici Possono classificarsi in: • Routing centralizzato; • Routing isolato; • Routing distribuito.
Routing centralizzato Si avvicina molto al fixed directory routing. In questo tipo di algoritmo viene definito il Routing Control Center (RCC) che riceve dai nodi le informazioni della rete. Queste informazioni vengono utilizzate dall'RCC per calcolare le nuove tabelle di instradamento che vengono poi distribuite ai router.
Routing centralizzato Il routing centralizzato sicuramente ottimizza le prestazioni, ma induce ad un notevole carico sulla rete (specie in prossimità dei nodi). Inoltre è poco robusto in quanto aggiornamenti parziali delle tabelle dovuti a guasti sulla rete possono generare dei loop.
Routing isolato Ogni nodo si calcola indipendentemente le tabelle di instradamento senza che avvenga uno scambio di informazioni con gli altri router. Esistono due tipi di algoritmi di routing isolato: con l'hot potato il router cerca di liberarsi del pacchetto nel minor tempo possibile, ritrasmettendolo sulla linea con la coda di trasmissione più corta; con il backward learning i pacchetti aggiornano un campo in cui vengono sommati i costi delle linee attraversate.
Routing isolato Analizzando questo campo, i router "imparano" quanto è distante il mittente tramite la linea in cui è avvenuta la ricezione. Questa tecnica non è però in grado di rilevare la non disponibilità di un cammino e pertanto occorre limitare la validità temporale delle informazioni acquisite.
Routing distribuito È una scelta intermedia a quelle precedenti. Ogni router calcola le sue tabelle di instradamento scambiando informazioni (tramite protocolli ausiliari di livello tre) con gli altri router e con gli end-node. Il routing distribuito viene implementato mediante algoritmi Distance Vector o Link State Packet.
Distance Vector L'algoritmo adattativo Distance Vector, noto anche come algoritmo di Bellman-Ford, è caratterizzato dal fatto che ogni router mantiene contemporaneamente una tabella di instradamento ed una struttura dati per ogni linea (denominata distance vector). Le informazioni contenute in tale struttura sono ricavabili dalla tabella di instradamento del router collegato all'altro capo della linea.
Distance Vector Ogni nodo infatti, quando modifica le proprie tabelle di instradamento, invia ai nodi adiacenti una tripla [indirizzo - hops - costo] che rappresenta il distance vector.