Fondamenti di routing (pag.34) UdA2L1 Il livello di rete (Network layer) è il livello 3 della pila ISO/OSI. Questo livello riceve datagrammi (pacchetti) dal livello di trasporto e forma pacchetti che vengono passati al livello Datalink, è incaricato quindi di muovere i pacchetti dalla sorgente fino alla destinazione finale, attraversando tanti sistemi intermedi (router) della sottorete di comunicazione quanti è necessario. Il compito del livello di rete è quindi la trasmissione di pacchetti tra due host arbitrari, che in generale non sono direttamente connessi (ovvero non hanno un collegamento diretto tra di loro). Nel modello ISO/OSI, il software del livello di rete è presente in tutti i commutatori della rete, mentre quello dei livelli superiori è presenti solo nei nodi terminali. In dettaglio, le funzioni del livello di rete sono: • inoltro, ovvero ricevere un pacchetto su una porta, immagazzinarlo e ritrasmetterlo su un'altra. Questa funzione è presente in tutti i nodi della rete, e può comportare l'utilizzo di protocolli di livello collegamento differenti • frammentazione: se un pacchetto ricevuto ha una dimensione eccessiva per la rete su cui deve essere trasmesso, il livello di rete lo divide in frammenti e si occupa di riassemblare i frammenti ricevuti al momento della consegna. • instradamento (routing), ovvero determinare il percorso per la trasmissione dei dati attraverso la rete. Nella maggior parte dei casi, questa funzione viene svolta dinamicamente tramite appositi algoritmi, che analizzano le condizioni della rete, le tabelle di instradamento, la priorità del servizio e altri elementi secondari. • controllo della congestione Nel modello TCP/IP, il livello 3 viene detto livello internet, in quanto interconnette reti eterogenee, per realizzare un'unica rete in modo trasparente agli utilizzatori. ISO/OSI TCP/IP Applicazione Telnet /FTP / HTTP / SMTP Presentazione Applicazione Sessione UDP / TCP Trasporto Trasporto Rete Rete (o internet) Collegamento Collegamento + Fisico IP / ICMP / ARP / RARP Fisico IEEE 802.3 / 802.5 / 802.6 / 802.11 Il routing Abbiamo visto che le reti geografiche (Wide Area Network, WAN) sono le reti che si estendono a livello di una nazione, di un continente o dell'intero pianeta. L’instradamento è alla base della funzionalità delle reti WAN. 1 In una WAN possiamo distinguere dispositivi di due tipologie: • un insieme di elaboratori (host oppure end system) sui quali girano i programmi usati dagli utenti; • elementi di commutazione: elaboratori specializzati utilizzati per connettere fra loro due o più linee di trasmissione. Quando arrivano dati su una linea, l'elemento di commutazione deve scegliere una linea in uscita sul quale instradarli. L’elemento in questione è il router. (Altri termini usati sono sistemi intermedi (Intermediate System)). I dispositivi sono collegati da linee di trasmissione (dette anche circuiti, canali, trunk) che spostano i bit e possono essere realizzate in fibra ottica, con collegamenti radio, in rame o altro. Una tipica WAN è utilizzata per connettere più LAN fra loro: Figura 1: struttura tipica di una WAN Ogni router, in generale, deve: 1. ricevere un pacchetto da una linea in ingresso; 2. memorizzarlo per intero in un buffer interno; 3. appena la necessaria linea in uscita è libera, instradare il pacchetto su essa. Quando si vogliono connettere fra di loro reti progettualmente diverse (spesso incompatibili fra loro) si ricorre a speciali attrezzature di commutazione, dette gateway (o router multiprotocollo), che oltre ad instradare i pacchetti da una rete all'altra, effettuano le operazioni necessarie per rendere possibili tali trasferimenti. Figura 2: interconnessione di reti Il gateway opera tra i livelli da 4 a 7 del modello ISO/OSI, generalmente si colloca al livello 7: Instradamento dei pacchetti Come abbiamo visto il livello di rete è incaricato di muovere i pacchetti dalla sorgente fino alla destinazione finale, attraversando tanti sistemi intermedi (router). Ovvero: • Acquisito l’indirizzo IP di un pacchetto da inoltrare, il router controlla, attraverso la propria netmask, se è relativo ad un host della propria rete; 2 • • • Se l’indirizzo appartiene alla stessa rete del router, l’IP del router utilizzerà i servizi dello strato inferiore (data-link) per spedire il pacchetto direttamente all’host destinatario. Se l’indirizzo appartiene ad un’altra rete, il router consulterà la propria Routing Table, che associa ad ogni rete l’indirizzo del router di frontiera delle reti connesse. Se il router (che è collegato a più reti) ha una connessione diretta col router dove è collegato l’host destinatario, gli inoltra direttamente il pacchetto, altrimenti lo passa al router più vicino, fino a raggiungere un router in grado di consegnare il pacchetto. 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. Tipi di instradamento (pag 35 in poi) Instradamento diretto ….. Instradamento indiretto ….. Tabella di instradamento … Router di default …. Tabelle di routing con righe a costo diverso … Aggregazione di indirizzi… ESERCIZI… Una volta ricevuto il pacchetto, il router verifica l’indirizzo di destinazione e inizia il processo di forwarding, ovvero l’inoltro del pacchetto verso l’host di destinazione finale, per stabilire su quale linea deve essere instradato il pacchetto. Algoritmi di routing (pag.50) UdA2L2 Dopo avere individuato la topologia della rete, il compito del livello di rete è quello di scegliere di volta in volta il cammino migliore, oltre a gestire il flusso dei dati e le congestioni (flow control e congestion control) e le problematiche derivanti dalla presenza di più reti diverse (internetworking). Per far ciò vengono applicate delle politiche di routing (o algoritmi di routing). Per poter scegliere la linea giusta, l’algoritmo deve valutare alcuni parametri: • • Il numero degli hop (salti), ovvero dei nodi (router) attraversati prima di giungere a destinazione; Il costo, inteso come l’inverso della velocità della linea. Una prima classificazione degli algoritmi di routing riguarda l’organizzazione delle reti in Autonomous System (AS), un’entità costituita da un gruppo di router e reti sotto il controllo di una singola e ben definita autorità amministrativa (esempio di sistema autonomo può essere quello che contraddistingue gli utenti di un unico provider oppure, più in piccolo, quello che costituisce la rete interna di un'azienda). Ogni AS è identificato da un numero univoco a livello internazionale rilasciato dall'autorità che rilascia gli indirizzi Internet. Le funzioni dei router, le modalità d'esecuzione e gli algoritmi utilizzati dipendono dalla dislocazione logica, che può essere internamente ad una rete o sul confine dell'AS. 3 Per questo i protocolli che agiscono su un AS si possono denominare: • • IGP (Interior Gateway Protocol), che identifica i protocolli di routing che agiscono all’interno di un AS (generalmente chi gestisce un AS utilizza gli stessi protocolli di routing per le reti che appartengono allo stesso AS, in caso di protocolli diversi si creeranno altri AS); EGP (Exterior Gateway Protocol), che identifica i protocolli che fanno routing fra diversi AS. Internet non è altro che un insieme di AS interconnessi. Gli algoritmi di routing si dividono in due classi principali: • • I grafi algoritmi statici (o non adattivi): le decisioni di routing sono prese in anticipo, all'avvio della rete, e sono comunicate ai router che poi si attengono sempre a quelle. Le tabelle di routing possono essere compilate manualmente da una persona (l’Amministratore di rete) o in modo automatico all’avvio della rete attraverso un protocollo di routing; algoritmi dinamici (o adattivi): le tabelle vengono continuamente aggiornate in automatico in funzione delle informazioni che pervengono al router sui cambiamenti della rete (sulla base del traffico, della topologia della rete, ecc.). (pag. 58) UdA2L3 Un grafo è un insieme di nodi e archi in cui ogni arco connette due nodi. Effettuare l’instradamento di un pacchetto in una rete significa individuare un percorso tra sorgente e destinatario il cui cammino sia il più corto possibile, il cosiddetto cammino minimo. 4 La distanza è la lunghezza del cammino più breve tra due nodi. Il peso di un cammino è la somma dei pesi associati a tutti gli archi che compongono il cammino. …(Definizioni pag. 58-61) Rappresentazione dei grafi (pag 63-64) Matrice delle adiacenze … Algoritmi di routing statici (pag.72) UdA2L4 Questi algoritmi, come abbiamo già accennato, sono eseguiti solamente all'avvio della rete, e le decisioni di routing a cui essi pervengono sono poi applicate senza più essere modificate. Alcuni algoritmi statici sono: • • • shortest path routing (routing basato sul percorso più breve); flooding flow-based routing Shortest path routing Ogni router della rete ha in memoria un grafo (Sink tree) dove: • i nodi rappresentano i router; • gli archi rappresentano le linee punto-punto. I sink tree sono calcolati all'avvio della rete da un host di gestione che: • • applica al grafo un algoritmo (ad esempio l’algoritmo ideato da Dijkstra nel 1959) per il calcolo del cammino minimo fra ogni coppia di nodi; invia tali informazioni a tutti i router. Quale sia il cammino minimo dipende da qual è la grandezza che si vuole minimizzare (peso). Tipicamente è: • il numero di hop, cioè di archi, da attraversare; • la lunghezza dei collegamenti; • il tempo medio di trasmissione. (Come esempio possiamo considerare un automobilista che può scegliere il suo itinerario in funzione del numero minimo di chilometri da percorrere oppure per arrivare nel minore tempo possibile). Algoritmo di Dijkstra Con questo algoritmo ogni nodo è associato a un’etichetta (racchiusa tra parentesi) che riporta la sua distanza dal nodo d’origine lungo il miglior percorso conosciuto. Inizialmente, ovvero all’avvio della rete, nessun percorso è noto, perciò tutti i nodi sono etichettati con un simbolo che rappresenta l’infinito. Mano a mano che l’algoritmo procede e si trovano i percorsi, le etichette cambiano rispecchiando i percorsi migliori. Inizialmente tutte le etichette sono provvisorie, e quando si scopre che rappresenta il percorso più breve possibile dall’origine a quel nodo viene resa permanente smettendo di modificarla. 5 Lo scopo è quindi trovare il percorso minimo (più corto, più veloce, più economico…) tra due punti, uno di partenza e uno di arrivo. Con questo metodo è possibile ottenere non solo il percorso minimo tra un punto di partenza e uno di arrivo ma il percorso minimo tra un punto di partenza e tutti gli altri punti della rete. Una buona schematizzazione per i problemi di percorso minimo deve includere tutti i possibili collegamenti tra i nodi (ed i relativi costi) e deve essere fissato un nodo di partenza e un peso (la grandezza che si vuole minimizzare). Esempio: Per fare un semplice esempio consideriamo un problema in cui si vuole calcolare il percorso minimo tra casa e il posto di lavoro. Schematizziamo tutti i possibili percorsi ed il relativo tempo di percorrenza (supponendo di voler calcolare il percorso più breve in fatto di tempo di percorrenza). I nodi A, B, C, D, E indicano le città per cui è possibile passare. Ecco una schematizzazione della rete: Dobbiamo ora assegnare ad ogni nodo un valore (etichetta), seguendo alcune regole: • • • • • • • Ogni nodo ha all'inizio etichetta (che indichiamo con “inf”); Il nodo di partenza (in questo caso “casa”) ha etichetta 0 (ovvero dista zero da se stesso); Ogni volta si sceglie il nodo con etichetta minore e lo si rende definitivo si aggiornano i nodi adiacenti; L’etichetta di un nodo è dato dalla somma dell’etichetta del nodo precedente + il costo del collegamento; Non si aggiornano le etichette dei nodi resi definitivi; Le etichette definitive indicano la distanza di quel nodo da quello di partenza; Quando si aggiorna l’etichetta di un nodo si lascia quella minore (essendo un problema di percorso minimo). Vediamo in pratica come si risolve questo esercizio. Questa è la rete in cui sono indicate anche le etichette: Seguendo le regole appena fissate consideriamo il nodo con etichetta minore (“casa”) e lo rendiamo definitivo (colorandolo di rosso) ed aggiorniamo tutti i nodi adiacenti sommando l'attuale valore dell’etichetta (ovvero zero) al costo del percorso. Aggiorniamo le etichette perché avevamo, nel caso di A, etichetta infinito mentre ora abbiamo etichetta 2. Ricordando che l’etichetta minore è sempre preferibile. Vediamo come si è aggiornata la rete: 6 Bisogna ora considerare il nodo non definitivo (ovvero quelli scritti in nero) con etichetta minore (il nodo A). Lo si rende definitivo e si aggiornano le etichette dei nodi adiacenti B e C. Indichiamo con una freccia da dove proviene l’etichetta dei nodi resi definitivi. Il nodo con etichetta minore ora è C, lo si rende definitivo e si aggiornano quelli adiacenti D ed E senza renderli definitivi: Va notato come il nodo D abbia ora etichetta 6 in quanto 6 è minore di 8 e quindi lo si aggiorna. Se avessimo avuto un valore maggiore di quello che già c’era lo avremmo lasciato invariato. Rendiamo definitivo il nodo D e aggiorniamo il grafico (il nodo E diventa 9): Il nodo con etichetta minore restante è B e lo si rende definitivo aggiornando di conseguenza il grafico (Ufficio diventa 13): 7 Resta da considerare il nodo E ed aggiornare “ufficio”. Seguendo all'indietro le frecce si ottiene il percorso minimo che dista casa da ufficio, che dista (come indicato dall’etichetta) “10”. Bisogna notare come questo algoritmo ci dia non solo la distanza minima tra il punto di partenza e quello di arrivo ma la distanza minima di tutti i nodi da quello di partenza. Flooding La tecnica del flooding consiste nell'inviare ogni pacchetto su tutte le linee eccetto quella da cui è arrivato. E’ un metodo per collezionare velocemente informazioni sullo stato attuale della rete. In linea di principio il flooding può essere usato come algoritmo di routing: ogni pacchetto inviato arriva a tutti i router, sempre nel minimo tempo possibile, ma presenta l'inconveniente di generare un numero enorme di pacchetti. Il flooding è utile per l'aggiornamento contemporaneo di informazioni distribuite (database). Flow-based routing Tramite questo algoritmo il percorso migliore viene calcolato in base al traffico medio di ogni linea. Si suppone che il livello di traffico sia abbastanza costante nel tempo. (es: Questo metodo è utilizzato da un automobilista che evita le strade dove sa già che ci sarà parecchio traffico, ma se tutti evitano le strade con traffico il problema si sposta). 8