Il livello Rete
Transcript
Il livello Rete
Livello rete Lo strato di Rete deve fornire i mezzi per stabilire, mantenere e abbattere una connessione di rete, mascherando ai livelli superiori i problemi legati alla specifica sottorete di comunicazione usata, quali ad esempio quelli di routing. Funzioni principali Instradamento (routing); Controllo di flusso, non per problemi di sincronizzazione fra terminali, bensì per problemi di gestione della rete (evitare congestioni, etc.). Internetworking; Segmentazione e accorpamento: le unità dati ricevute dallo strato superiore possono essere segmentate o raggruppate per facilitarne il trasferimento; il blocco informativo gestito a questo livello è il pacchetto; Rilevamento e recupero degli errori di pacchetto; Controllo della corretta sequenza di consegna dei pacchetti; Servizi connessi e non connessi Nei servizi non connessi il livello rete si limita al trasporto dei pacchetti (datagram) ognuno dei quali, potendo seguire percorsi diversi, deve contenere l’indirizzo di destinazione. Bisogna calcolare il percorso per ogni pacchetto (c’è più lavoro) In caso di guasto di un router si perdono solo i pacchetti della sua coda. (rete più robusta) Servizi connessi e non connessi Nei servizi connessi il livello rete deve stabilire le connessioni (circuiti virtuali) e quindi il percorso che devono seguire tutti i pacchetti. Si evitano le congestioni perché le risorse sono riservate al momento della creazione della connessione In caso di guasto di un router si rovinano le trasmissioni di tutti i circuiti virtuali che lo attraversano. Strato di Rete Mentre i livelli 1 e 2 coinvolgono solo due entità nei due sistemi terminali, quelle dello strato 3 coinvolgono un numero variabile di entità della rete IS (router di rete), che si passano i dati fra sorgente e destinazione. Ogni router realizza la funzione di instradamento per mezzo di una routing table Routing Table Una registrazione per ogni destinazione per ogni registrazione, indirizzo del salto successivo (canale su cui instradare il pacchetto) Costruzione della routing table La routing table può essere costruita come output di un algoritmo di routing Il problema da risolvere è: trovare il cammino minimo tra due nodi Gli archi sono pesati Metrica di prestazione/costo: distanza, lunghezza delle code, ritardo medio di un pacchetto, larghezza di banda del canale Fattori critici: topologia e traffico Algoritmi di routing Sono eseguiti dal router per decidere su quale linea di output trasmettere i dati in ingresso Usano una tabella di routing che indica quale linea di uscita usare per ogni possibile destinazione Sono adattativi (dinamici) se modificano le loro decisioni in base ai cambiamenti della topologia e del traffico Sono non adattativi (statici) se non lo fanno Proprietà Correttezza Semplicità Robustezza = capacità di affrontare i cambiamenti in modo dinamico Stabilità = rapida convergenza all’equilibrio in caso di cambiamento Imparzialità = uso di tutte le linee Ottimalità = uso delle linee migliori per ottimizzare le trasmissioni Algoritmi non adattativi Routing statico: richiedono la configurazione da parte dell’amministratore di rete In caso di guasto o modifica devono essere aggiornate manualmente Adatto a reti piccole o con un unico percorso per ogni destinazione Flooding: Ogni router invia ogni pacchetto su tutte le linee di uscita Per eliminare i pacchetti che continuano a girare per la rete si usa un contatore di salti (es.TTL) che viene decrementato ad ogni salto È sempre garantito il cammino più breve ma aumenta il traffico Il flooding selettivo limita il traffico inviando i pacchetti solo sulle linee che vanno nella direzione giusta. Algoritmi adattativi Di tipo isolato: ogni router decide indipendentemente dagli altri Di tipo centralizzato: prevedono un router di controllo (RCC routing control center) che viene interpellato da tutti gli altri sul percorso da seguire L’algoritmo a patata bollente trasmette ogni pacchetto sulla linea che ha una coda di trasmissione più breve Riceve informazioni sulla rete da tutti i nodi con cui costruisce le tabelle di instradamento È usato in genere nelle reti orientate alla connessione Di tipo distribuito: i router si scambiano informazioni sulla rete e si costruiscono le proprie tabelle di instradamento Algoritmo del vettore distanza Distance vector routing Routing dinamico e decentralizzato Implementato dal protocollo RIP (routing information protocol) Ogni router mantiene una tabella contenente la migliore distanza (costo) conosciuta per ogni destinazione e quale canale utilizzare per raggiungerla (Destination, Cost, NextHop) Distance vector : rete di esempio Distance vector: stato iniziale Ogni nodo conosce i costi dei collegamenti ai nodi adiacenti I collegamenti ai nodi non adiacenti o i collegamenti interrotti hanno costo infinito Distance vector: aggiornamento tabelle Ogni nodo spedisce aggiornamenti ai suoi nodi adiacenti e riceve aggiornamenti dai suoi nodi adiacenti Ogni aggiornamento è il vettore distanza lista di coppie (Destination, Cost) Un nodo aggiorna la tabella locale se riceve un cammino migliore: somma il costo minore al costo del nodo che lo ha proposto es. A propone a B un costo 1 per raggiungere E: B aggiorna il costo per raggiungere E con 2 = 1 + 1 e prende nota (come Next Hop) del nodo che lo ha proposto Dopo aver scambiato diversi aggiornamenti con i nodi adiacenti, tutti i nodi conosceranno i cammini migliori verso tutti gli altri nodi Periodicamente o se la tabella cambia (triggered update) Distance vector: stato finale Che succede se il collegamento tra F e G si interrompe? Il sistema aggiorna le proprie tabelle e ritorna di nuovo stabile F si accorge che il collegamento a G è interrotto F aggiorna a infinito la distanza da G e spedisce l’aggiornamento ad A A aggiorna a infinito la distanza da G perché usa F per raggiungere G A riceve un aggiornamento periodico da C con un percorso verso G di costo 2 A aggiorna a costo 3 via C la distanza da G e spedisce l’aggiornamento a F F aggiorna a costo 4 via A la distanza da G E se il collegamento tra A ed E si interrompe? Problema del conteggio all’infinito: Il sistema non si stabilizza e nessuno riesce a sapere che E è irraggiungibile A si accorge che il collegamento ad E è interrotto A aggiorna a infinito la distanza da E spedisce l’aggiornamento a B e C B aggiorna ad infinito la distanza da E perché usa A per raggiungere E Ma B riceve un aggiornamento da C (spedito prima C ricevesse l’aggiornamento da A) che lo informa che E è raggiungibile a costo 2 B aggiorna a costo 3 via C la distanza da E e spedisce l’aggiornamento ad A A aggiorna a costo 4 via B la distanza da E e spedisce l’aggiornamento a C C (che ora ha un costo infinito per E) aggiorna a costo 5 via A la distanza da E e spedisce l’aggiornamento a B ... Soluzione tagliare i cicli di routing (split horizon): non si rimandano al nodo adiacente la notifica di aggiornamenti effettuati su informazioni provenienti da quel nodo Algoritmo dello stato della connessione Link-state routing Routing dinamico e globale Implementato dal protocollo OSPF (open shortest path first) Funzioni di base Distribuzione affidabile a tutti i nodi delle informazioni sullo stato dei collegamenti (reliable flooding) Ogni nodo sarà in grado di costruire una mappa completa della rete Calcolo presso ciascun nodo del cammino minimo verso una data destinazione Algoritmo dello stato delle connessioni: rete di esempio Routing gerarchico La rete viene suddivisa in regioni: ogni router ha le informazioni per le destinazioni all’interno della sua regione Le destinazioni al di fuori della regione vengono viste come una sola (estero) I percorsi risultano più lunghi, ma si risparmia molto spazio nelle tabelle di routing Diminuisce il traffico di rete Routing broadcast Può essere usato il flooding ma spreca molta banda Un metodo più efficiente usa uno spanning tree (albero di ricoprimento) : un sottoinsieme della rete che include tutti i router ma non contiene cicli. Ogno router copia i pacchetti su tutte le linee dello spanning tree eccetto quella di arrivo. Routing multicast Prevede l’invio del pacchetto ad un gruppo di stazioni Prevede un protocollo per la gestione dei gruppi: creazione, inserimento, uscita, distruzione. Ogni router può duplicare il pacchetto ed inviarlo a tutti i nodi del gruppo. L’uso di uno spanning tree migliora l’efficienza È possibile prevedere uno spanning tree per ogni gruppo Ogni router è visto come radice dell’albero che usa per inviare il messaggio a tutti i nodi del gruppo. Routing per host mobili Prevede l’instradamento verso stazioni che possono cambiare posizione La rete geografica viene divisa in aree Ogni stazione mobile ha una sua base in un area Ogni area ha: Un agente di base che gestisce le stazioni la cui base è nell’area Un agente straniero che gestisce le stazioni che entrano temporaneamente nell’area Quando una stazione mobile entra temporaneamente in un area, deve registrarsi presso l’agente straniero che contatta l’agente base dell’area da cui proviene la stazione e gli fornisce il proprio indirizzo. Controllo della congestione Una congestione è un carico maggiore di quello che può sopportare una zona della rete, causata spesso da picchi improvvisi del traffico. Nelle reti che usano servizi non connessi si può presentare in qualsiasi momento. Nelle reti che usano servizi connessi si può presentare solo al momento della creazione di una nuova connessione. Si può cercare di prevenire la congestione (controllo a ciclo aperto) oppure di risolverle una volta che si sono presentate (controllo a ciclo chiuso) Algoritmi a ciclo aperto Agiscono dal lato del mittente controllando il ritmo della trasmissione L’algoritmo del secchio bucato (leaky bucket) inserisce i pacchetti trasmessi dal mittente in una coda finita e li fa uscire ad un ritmo costante: se la coda è piena il pacchetto viene scartato L’algoritmo del secchio di gettoni (token bucket) genera ad intervalli regolari di tempo dei gettoni che inserisce in una coda: un pacchetto per essere trasmesso deve trovare un gettone disponibile. Non scarta mai i pacchetti e gestisce meglio i picchi di traffico. Entrambi gli algoritmi prevedono una variante per blocchi di byte al posto dei pacchetti. Algoritmi a ciclo chiuso Devono monitorare la rete per individuare le congestioni e poi gestirle. Le congestioni possono essere individuate dal mittente stesso (algoritmi a feedback implicito), oppure essere segnalate da un router (algoritmi a feedback esplicito) In entrambi i casi, per gestire la congestione, il mittente riduce il traffico del 50% e poi prova ad aumentare con piccoli incrementi Algoritmi a ciclo chiuso Con il metodo dei pacchetti regolatori (choke packet), il router tiene sotto controllo le linee di uscita e, quando individua una congestione, invia un pacchetto di avvertimento al mittente per fargli ridurre il traffico verso l’area congestionata. Lo scarto dei pacchetti, invece prevede che il router scarti i pacchetti o in modo casuale oppure rispettando le priorità segnalate dai pacchetti stessi. Internetworking È la comunicazione tra reti che non usano lo stesso protocollo instradato: si realizza con l’uso di tunnel o gateway I tunnel si usano quando mittente e destinatario usano lo stesso protocollo, ma il messaggio deve attraversare zone della rete che usano protocolli diversi: Quando i pacchetti trasmessi arrivano al confine con la regione che usa il protocollo diverso, vengono incapsulati in pacchetti riconosciuti da quella rete. La loro struttura originaria, rimasta all’interno del nuovo blocco, viene ripristinata al confine della regione destinataria. Passaggio da IPv4 a IPv6: tunneling Datagram IPv6 incapsulati in datagram IPv4 I GATEWAY Si usano quando mittente e destinatario sono in regioni che usano protocolli diversi. Può essere un router o un host che converte il formato di un protocollo in un formato diverso. Gateway a livello di rete sono i router multiprotocollo che oltre a tradurre i protocolli, traducono anche gli indirizzi di rete Se la lunghezza massima di un pacchetto, prevista da un protocollo, è maggiore di quella prevista dal nuovo protocollo, il router può spezzarlo in pacchetti più piccoli (frammentazione) ognuno dei quali deve contenere il numero del pacchetto originario ed il numero del frammento per poi permettere la ricomposizione dei frammenti (deframmentazione) Frammentazione L’unità massima di trasmissione (MTU) è la massima quantità di dati che un frame a livello di collegamento può trasportare Differenti tipi di link, differenti MTU I datagram IP possono essere frammentati e poi ricostruiti a Destinazione I GATEWAY • • Se i pacchetti di una rete orientata alla connessione devono attraversare una rete non connessa, i pacchetti in arrivo devono essere riordinati. Gateway a livello di trasporto realizzano una connessione tra due reti nel livello trasporto. Gateway a livello di applicazione connettono due parti di un applicazione. (ad es. il gateway di posta tra la posta internet e la posta ISO Motis, scompone il messaggio in arrivo su una rete, lo converte nell’altro formato e lo inoltra lungo la nuova rete usando i protocolli di rete e di trasporto di questa).