Algoritmi e protocolli di Routing - DEISNet Reti di Telecomunicazione

Transcript

Algoritmi e protocolli di Routing - DEISNet Reti di Telecomunicazione
Algoritmi e protocolli
di Routing
Prof. Franco Callegati
http://deisnet.deis.unibo.it
Compiti dello strato di rete
• Trasportare informazioni lungo dal mittente al destinatario
• In una rete commutata con terminali e nodi di transito
– Scegliere il giusto percorso da sorgente a destinatario
• Se i nodi hanno più interfacce di rete
– Scegliere la corretta interfaccia di uscita verso la destinazione
• Commutazione = funzione di collegamento di una linea di
ingresso con una di uscita opportunamente scelta
• Le due tecniche di commutazione usate tradizionalmente
nelle reti e ora più diffuse sono
– Commutazione di circuito
– Commutazione di messaggio o di pacchetto
2
1
Commutazione di circuito
• La rete crea un canale di comunicazione
dedicato fra due terminali che vogliono
colloquiare
– Circuito di comunicazione
• Il circuito è riservato ad uso esclusivo dei
terminali chiamante e chiamato
• Esiste quindi un ritardo iniziale dovuto al tempo
necessario per instaurare il circuito
– dopo di ciò la rete è trasparente (è garantita la
trasparenza temporale) per l'utente ed equivale ad un
collegamento fisico diretto
3
Fasi della comunicazione
• Instaurazione del circuito
– Prima che i segnali di utente possano essere
trasmessi la rete deve instaurare un circuito fra
terminale chiamante e terminale chiamato (circuito
end-to-end).
– Richiede un’opportuna segnalazione.
• Dialogo
– I due terminali si scambiano informazioni utilizzando il
circuito dedicato.
• Disconnessione del circuito
– Al termine del dialogo il circuito deve essere rilasciato,
al fine di poter essere utilizzato per altre chiamate.
4
2
Pro e contro
• Pro
– il circuito è dedicato e garantisce sicurezza ed
affidabilità
– è garantita la trasparenza temporale
– le procedure di controllo sono limitate ad inizio e fine
chiamata
• Contro
– se le sorgenti hanno un basso tasso di attività il
circuito è sottoutilizzato,
– la capacità del canale è fissata dalla capacità del
circuito e non si può variare.
5
Commutazione di messaggio o pacchetto
• Trasporta informazioni in forma numerica
• Le informazioni di utente sono strutturate in messaggi
unitamente ad opportune informazioni di segnalazione
– indirizzamento,verifica della correttezza delle informazioni, ecc.
• Commutazione di Pacchetto:
– i messaggi vengono suddivisi in sotto-blocchi di lunghezza
massima prefissata detti pacchetti, per motivi
• Di linea: evitare frammenti troppo lunghi in relazione al rumore
• Di rete: limitare i tempi medi di attesa nei nodi
• I messaggi o i pacchetti vengono trasmessi da un nodo di
commutazione all'altro utilizzando in tempi diversi risorse
comuni
6
3
Tecniche di commutazione di pacchetto
• Circuito virtuale (connection oriented)
– scambio delle informazioni preceduto da una procedura di
segnalazione (apertura) durante la quale viene stabilito il
percorso dei pacchetti da origine a destinazione
– a tale percorso viene associato un numero di circuito virtuale
– tutti i pacchetti di dati seguono lo stesso percorso,
– contengono solamente il numero di circuito virtuale.
• Datagramma (connectionless)
– ogni pacchetto viene gestito e instradato in modo indipendente,
senza relazione con pacchetti precedenti o successivi, anche
appartenenti alla stessa connessione
– ogni pacchetto porta tutte le informazioni di indirizzamento
necessarie per raggiungere la destinazione finale
– pacchetti diversi di una stessa connessione possono seguire
percorsi diversi e quindi avere tempi di percorrenza diversi
7
Pro e contro
• Pro
– L'efficienza nell'utilizzazione dei collegamenti è
maggiore, poiché la stessa linea è condivisa in modo
dinamico da più chiamate
– La rete può supportare diverse velocità ed effettuare
anche conversioni tramite memorizzazione.
– È facile implementare meccanismi per il controlo
dell’errore (trasparenza semantica)
• Contro
– È difficile garantire un predeterminato tempo di
transito, quindi è poco adatta per servizi di tipo real
time
8
4
Modello del nodo di commutazione a pacchetto
Funzione
Linee di
ingresso
di instradamento
Linee di
uscita
Tabella di instradamento
9
Store-and-Forward
• La tecnica Store-and-Forward è tipica della
commutazione di pacchetto
• Il pacchetto entrante è verificato e memorizzato nella
relativa memoria di ingresso
• Una volta ricevuto viene trasferito nella memoria
principale, ne viene letta l’intestazione e la funzione di
instradamento decide su quale linea di uscita
ritrasmetterlo
• Il pacchetto è tolto dalla memoria principale e inserito in
quella di uscita, in attesa della effettiva trasmissione
Il pacchetto viene prima memorizzato interamente nel
nodo e quindi ritrasmesso nella direzione opportuna
10
5
Tabelle di routing
• La funzione di routing può richiedere molte
elaborazioni, per processare velocemente i
pacchetti viene costruita la tabella di routing:
– Tabella che deve essere costruita in ogni nodo nella
quale per ogni indirizzo di destinazione è indicata la
porta di uscita che porta a quella destinazione
• Per costruire la tabella di routing gli elaboratori
possono costruire diverse tabelle ausiliarie
11
Instradamento: implementazione
• L’implementazione della funzione di forwarding
dipende dal costruttore del nodo di
commutazione
• La funzione di instradamento deve invece essere
standard al fine di avere coerenza nel
comportamento dei nodi
• La funzione di routing si avvale di:
– algoritmi di routing
• usati per il calcolo delle tabelle di instradamento note le
informazioni sulla topologia della rete
– protocolli di routing
• usati per lo scambio delle informazioni sulla topologia della
rete necessarie per applicare l’algoritmo
12
6
Routing: piano di utente e di controllo
• L’instradamento è una delle funzioni dello strato
di rete
– dal punto di vista dell’utilizzo della rete (piano di
utente) i router implementano le funzionalità fino allo
strato di rete
• I protocolli di routing si basano su uno scambio di
informazioni tra applicazioni
– dal punto di vista del controllo della rete (piano di
controllo) i router implementano anche funzionalità di
livello superiore (sono calcolatori specializzati)
13
Caratteristiche di un algoritmo di routing (RA)
• Gli algoritmi di routing si differenziano per le
modalità con cui le tabelle di instradamento
vengono create ed eventualmente aggiornate nel
tempo.
• Si possono classificare in:
– Statici
– Dinamici
• Centralizzati
• Distribuiti
14
7
Routing statico
• Le tabelle di instradamento sono:
– invarianti nel tempo
– indipendenti dalle condizioni di traffico della rete
• Le tabelle di instradamento sono
– create in fase di configurazione del router
• Grande lavoro di configurazione
– modificate con l’intervento di un operatore solo in caso
di variazioni strutturali o topologiche della rete
• inserimento o caduta di nodi, collegamenti
15
Routing dinamico
• Le tabelle di instradamento vengono create e
periodicamente aggiornate in modo automatico
• Consentono di adattare le decisioni di
instradamento a
– variazioni topologiche della rete
• inserimento di nuovi collegamenti
• caduta di un collegamento per guasto
– condizioni di traffico
• si evita la scelta di percorsi che comprendono collegamenti
congestionati
16
8
Routing centralizzato
• Un unico nodo centrale:
– raccoglie tutte le informazioni sullo stato e la topologia
della rete,
– calcola le tabelle di instradamento per ogni nodo,
– le trasmette a tutti i nodi.
• Pro
– Garantisce massima consistenza delle informazioni
• Contro
– Dipende dal corretto funzionamento di un solo
apparato di rete
– Il nodo centrale è soggetto ad un grande traffico di
overhead
17
Routing distribuito
• Ogni nodo calcola in modo autonomo le sue
tabelle di instradamento
• Il calcolo può essere basato su informazioni :
– locali
• riguardanti il solo nodo in cui sta avvenendo il calcolo,
• senza scambio di informazioni tra i nodi
– distribuite
• si utilizzano informazioni relative agli altri nodi e collegamenti
della rete
• Nel caso di routing basato su informazioni
distribuite deve essere previsto un meccanismo
di scambio delle informazioni fra routers
18
9
Un semplice algoritmo di routing: il flooding
• Flooding: ogni nodo ritrasmette su tutte le porte di
uscita ogni pacchetto ricevuto
• Un generico pacchetto verrà sicuramente ricevuto da
tutti i nodi della rete e quindi anche da quello a cui è
effettivamente destinato
• Dal momento che tutte le strade possibili sono percorse,
il primo pacchetto che arriva a un nodo è quello che ha
fatto la strada più breve possibile
• L’elaborazione associata a questo algoritmo è pressoché
nulla
• Molto adatto quando si desidera inviare una certa
informazione a tutti i nodi della rete (broadcasting)
19
Miglioramenti del flooding
• E’ necessario introdurre ulteriori regole per evitare la
proliferazione dei pacchetti broadcast
• un nodo non ritrasmette il pacchetto nella direzione dalla
quale è giunto
• un nodo ritrasmette un pacchetto una sola volta
– ad ogni pacchetto viene associato un identificativo unico
(l’indirizzo della sorgente e un numero di sequenza) e ciascun
nodo mantiene in memoria una lista con gli identificativi dei
pacchetti già trasmessi
– bisogna evitare che la lista cresca all’infinito  contatore
– quando un pacchetto già trasmesso giunge al nodo, viene
ignorato
• Un instradamento più efficiente per il broadcasting si
basa sull’uso di uno spanning tree
– si trasmette solo lungo lo spanning tree
– miglioramento per l’assenza di cicli
20
10
Deflection routing (hot potato)
• Quando un nodo riceve un pacchetto lo ritrasmette sulla
linea d’uscita avente il minor numero di pacchetti in
attesa di essere trasmessi
• E’ adatto a reti in cui
– i nodi di commutazione dispongono di spazio di memorizzazione
molto limitato
– si desidera minimizzare il tempo di permanenza dei pacchetti nei
nodi
• I pacchetti possono essere ricevuti fuori sequenza
• Alcuni pacchetti potrebbero percorrere all’infinito un certo
ciclo in seno alla rete, semplicemente perché le sue linee
sono poco utilizzate
– Si deve prevedere un meccanismo per limitare il tempo di vita dei
pacchetti
• Non tiene conto della destinazione finale del pacchetto
21
Scelta ibrida (load sharing)
• Si legge su di una tabella la linea d’uscita preferenziale
nella direzione della destinazione finale del pacchetto
• Il pacchetto viene posto nella coda di trasmissione per
tale linea
– se la coda non supera una soglia
– e se non vi sono altri pacchetti richiedenti contemporaneamente
tale linea d’uscita
• Altrimenti viene inviato sulla linea d’uscita avente coda di
trasmissione più breve
• Vantaggio: in condizioni di basso carico della rete,
l’instradamento non viene fatto a caso, ma sulla base
della effettiva destinazione finale
22
11
Shortest path routing
• Si assume che ad ogni collegamento della rete possa
essere attribuita una lunghezza
• La lunghezza
– è un numero che serve a caratterizzare il peso di quel
collegamento nel determinare una certa funzione di costo del
percorso totale di trasmissione
• L’algoritmo cerca la strada di lunghezza minima fra ogni
mittente e ogni destinatario
• Si applicano gli algoritmi di calcolo dello shortest path
(Bellman-Ford e Dijkstra) in modalità
– centralizzata
– distribuita
• Distance Vector
• Link State
23
Tabelle di routing con alternative
• Dall’applicazione degli algoritmi di calcolo dello shortest
path si ottengono anche percorsi alternativi
– di peso minimo
– di peso superiore
• Uso probabilistico della tabella di routing
– Se si instrada sempre sulla linea più breve si creano nella rete
dei cammini ad alto traffico e si lasciano alcune linee scariche
– Si potrebbero instradare i pacchetti su tutte le uscite disponili con
probabilità inversamente proporzionale al peso del cammino
corrispondente
– Questa tecnica rende la distribuzione del traffico più uniforme sui
vari link della rete
– Pericolo di ricezione fuori sequenza
24
12
Routing gerarchico
• Nel caso di reti di grandi dimensioni non è possibile
gestire le tabelle di routing per l’intera rete in tutti i router,
in questo caso il routing deve essere gerarchico:
– la rete viene ripartita in porzioni, chiamate per ora aree di routing
– i router all’interno di un area sono in grado di effettuare
l’instradamento relativamente alla sola area
– per destinazioni al di fuori dell’area si limitano ad inviare i
pacchetti a dei router “di bordo” che sono a conoscenza della
topologia esterna dell’area
– i router “di bordo” si occupano solamente dell’instradamento dei
pacchetti fra aree
• In linea di principio la ripartizione può essere effettuata
tante volte quante si vuole creando più livelli nella
gerarchia di routing
25
Il routing in Internet: cenni
Prof. Franco Callegati
http://deisnet.deis.unibo.it
13
Routing gerarchico in Internet
• In Internet si usa il routing gerarchico e le aree di routing sono
chiamate Autonomous System (AS)
– un AS può essere ulteriormente suddiviso in porzioni dette Routing
Area (RA) interconnesse da un backbone (dorsale)
– ogni network IP è tutta contenuta in un AS o in una RA
• tradizionalmente secondo la classe, oggi secondo il CIDR
– gli AS decidono autonomamente i protocolli e le politiche di routing che
intendono adottare al loro interno
– i vari enti di gestione si devono accordare su quali protocolli utilizzare
per il dialogo tra i router che interconnettono AS diversi
• I protocolli di routing all’interno di un AS sono detti Interior Gateway
Protocol (IGP)
• I protocolli di routing fra AS sono detti Exterior Gateway Protocol
(EGP)
27
Internet = rete di reti
28
14
Internet = insieme di AS interconnessi
AS3
AS5
IGP
AS1
EGP
AS2
AS4
RA
29
Grafo della rete a livello EGP
AS3
AS5
AS1
AS2
AS4
30
15
Ma cos’è un Autonomous System?
• Originariamente definito come un insieme di router gestiti da
un’unica amministrazione (enti, aziende, università,…)
• Nuova definizione (1996 – RFC 1930)
– un AS è un gruppo connesso di una o più reti IP (classless) gestite da
uno o più operatori ma con identiche e ben definite politiche di routing
– politica di routing di un AS: modalità con cui si prendono decisioni di
routing nel resto della rete Internet sulla base delle informazioni
provenienti dall’AS (attraverso un EGP)
– Esempio:
• Università di Bologna  137.204.0.0/16
• Politecnico di Torino  130.192.0.0/16
• entrambi comunicano con il resto del mondo tramite il GARR e le sue scelte
di peering (stesse politiche di routing)
• non c’è bisogno di avere un AS per ogni ateneo
• il GARR (e tutte le reti connesse ad esso) costituiscono un unico AS (AS137)
31
Protocolli di routing per Internet
• Interior Gateway Protocol
– RIP: Routing Information Protocol
– OSPF: Open Shortest Path First
• Exterior Gateway Protocol
– EGP: Exterior Gateway Protocol
– BGP: Border Gateway Protocol
32
16
IGP
• Si usano protocolli dinamici distribuiti
– La rete si evolve continuamente senza un vero controllo
centralizzato
• la configurazione manuale diventa quasi impossibile
– La rete deve reagire automaticamente ai cambiamenti e ai guasti
• Si utilizzano
– Algoritmi per il calcolo dei percorsi di lunghezza minima
• Dijkstra
• Bellman Ford
– Protocolli per lo scambio delle informazioni necessarie per il
calcolo
• Distance Vector
• Link State
33
Distance Vector
• Si basano su di un algoritmo dinamico distribuito
proposto da Bellmann-Ford, poi perfezionato da FordFulkerstone
• Ogni nodo conosce
– i suoi vicini
– la distanza dai suoi vicini
• Ogni nodo invia ai propri vicini (e solo a loro)
– un vettore contenente la stima della sua distanza da tutti i nodi
della rete (il distance vector)
• Utilizzando i distance vector ricevuti ogni nodo
– calcola la propria distanza dagli altri nodi della rete (applicando
l’algoritmo di Bellman-Ford)
– identifica il percorso di lunghezza minima verso ogni destinazione
• Problemi:
– convergenza lenta, “partenza lenta”,
– problemi di stabilità: conto all’infinito
34
17
Link state
Ogni nodo della rete:
• si procura un’immagine della topologia della rete
• Sulla base di tale immagine calcola le tabelle di
routing con un RA
Il protocollo di routing ha come scopo fondamentale
quello di permettere ad ogni nodo di crearsi
l’immagine della rete
• Sono i protocolli più usati nell’Internet moderna
35
Link state (2)
• Ogni router deve comunicare con i propri vicini
ed “imparare” i loro indirizzi
– Hello Packet
• Deve poi misurare la distanza dai vicini
– Echo Packet
• In seguito ogni router costruisce un pacchetto
con lo stato delle linee (Link State Packet o LSP)
che contiene
– la lista dei suoi vicini
– le lunghezze dei collegamenti per raggiungerli
36
18
Link state (3)
• I pacchetti LSP devono essere trasmessi da tutti
i router a tutti gli altri router della rete
– Si usa il protocollo Flooding
– A tal fine nel pacchetto LSP occorre aggiungere
• L’indirizzo del mittente
• Un numero di sequenza
• Una indicazione dell’età del pacchetto
• Avendo ricevuto i LSP da tutti i router, ogni router
è in grado di costruirsi un’immagine della rete
– Tipicamente si usa l’algoritmo di Dijkstra
37
Distance Vector - Link State: confronto
• Distance Vector
– Semplici da implementare
– Richiedono in genere una quantità di memoria inferiore, in
particolare se la connettività della rete è bassa, e minori risorse di
calcolo
• Link State
– Offrono maggiori funzionalità in termini di gestione di rete
• La topologia generale della rete e i percorsi al suo interno
possono essere ricavati da qualunque router
– La velocità di convergenza è solitamente maggiore
• Maggiore velocità di adattamento ai cambi di topologia
– Il flooding di pacchetti LSP può provocare un aumento
significativo di traffico
38
19