• Non ci sono risultati.

algoritmi di instradamentoalgoritmi di instradamento

N/A
N/A
Protected

Academic year: 2021

Condividi "algoritmi di instradamentoalgoritmi di instradamento"

Copied!
39
0
0

Testo completo

(1)

Seminario di Reti e Sicurezza Seminario di Reti e Sicurezza

algoritmi di instradamento algoritmi di instradamento

Star: Davide Ferrone

Prof. Stefano bistarelli

(2)

Premessa(1) Premessa(1)

 Lo strato di rete ha lo scopo di trasportare un pacchetto da un host che spedisce ad uno che riceve

in particolare, il livello di trasporto fornisce allo strato di rete un segmento, indicando il mittente ed il

destinatario

il livello di rete deve decidere come fare a far giungere

tale pacchetto a destinazione, sapendo che il livello di

collegamento garantisce che ogni singolo passo (hop)

possa essere compiuto

(3)

Premessa(2) Premessa(2)

Obiettivi dello strato di rete

Determinazione del percorso:

lo strato di rete deve determinare il tragitto seguito dai pacchetti che fluiscono da un sender ad un receiver

algoritmi di instradamento: algoritmi per il calcolo del percorso

Commutazione:

quando un pacchetto arriva all’ingresso di un router, questo deve trasferirlo all’appropriato link di uscita Impostazione della chiamata (call setup):

impostazione dello stato dei nodi di rete prima dell’inizio della trasmissione dei dati non viene effettuata in

Internet

(4)

•Nelle reti datagram, come Internet, ogni pacchetto è contrassegnato dall’indirizzo del mittente e del

destinatario

–incidentalmente, un protocollo di livello rete deve fornire un modo di rappresentare questi indirizzi in modo da

identificare univocamente ogni host della rete

•I commutatori di pacchetto (router) basano la propria azione su una tabella di instradamento

(routing table) che, in base alla destinazione di un datagram, permette di scegliere il link di uscita

–la tabella di routing può variare nel tempo, in risposta alle politiche di instradamento della rete

–per questo motivo, i datagram possono seguire percorsi differenti nella rete e, eventualmente, arrivare fuori

sequenza

Instradamento

(5)

L’idea di fondo è fare in modo che ogni datagram fluisca da – sorgente a destinazione, se sulla medesima rete

– da sorgente a router, e da router a destinazione altrimenti...

– … in mezzo, i router indirizzano il pacchetto ad un router più prossimo alla destinazione

G1 G3

W1

network 1 network 3

W2

G2

W1 G1 data G1 G3 data G3 W2 data

network 2

Instradamento

(6)

•E’ necessario stabilire un percorso quando l’host

sorgente e l’host destinazione non appartengono alla stessa rete

–in tal caso, il livello di collegamento non permette lo scambio diretto di informazione

•Un terminale è solitamente connesso ad un router che si occupa di gestire il traffico destinato

all’esterno della rete

–questo router è detto router di default

–indicheremo d’ora in poi, come router sorgente il default router dell’host sorgente e come router destinazione il default router dell’host destinazione

•queste definizioni hanno senso in quanto il router sorgente non ha bisogno di un percorso per ricevere datagram dalla sorgente e, parimenti, il router destinazione non ha bisogno di percorsi per fornire datagram alla destinazione

Instradamento

(7)

•Un algoritmo di instradamento ha lo scopo di

disegnare un percorso tra un router sorgente ed un

router destinazione, dato un insieme di router collegati da link

–un buon algoritmo di instradamento non si limita a trovare un percorso, ma trova un buon percorso, secondo una

qualche metrica

–la descrizione data del problema lo porta nel dominio della teoria dei grafi: la rete di router è un grafo e si tratta di

trovare al suo interno, se esiste, un percorso tra due nodi dati –spesso gli archi del grafo sono pesati, ovvero ai vari link della rete viene associata una qualche misura della loro

desiderabilità

–quello che si richiede di trovare è solitamente il percorso che minimizza la somma dei costi dei vari link che ne fanno parte

•se assumiamo che ogni link abbia costo 1, allora stiamo

chiedendo di trovare il cammino più breve tra router sorgente e router destinazione

Instradamento

(8)

Instradamento nelle reti di dati Instradamento nelle reti di dati

Effetti Effetti

• L’algoritmo di instradamento influenza:

– Direttamente: il ritardo medio per pacchetto (average packet delay)

– Indirettamente: il throughput della rete, definito come:

Throughput=Traffico offerto – Traffico rifiutato

• I due parametri sono regolati dall’algoritmo di controllo di flusso: se il ritardo medio per pacchetto cresce

eccessivamente (cioè il routing è inefficace) il controllo di

flusso interviene riducendo il traffico ammesso nella rete

e quindi il throughput complessivo della rete.

(9)

Instradamento nelle reti di Instradamento nelle reti di

dati dati Effetti Effetti

• Un buon algoritmo di routing riesce ad aumentare il throughput a parità di

delay (per alti valori di traffico offerto) ed a diminuire il delay a parità di

throughput (per bassi valori di traffico offerto):

(10)

– Distribuito:

• Tutti i nodi si scambiano informazione tra loro (utilizzando protocolli di instradamento)

• Calcolano i percorsi (indipendentemente o in base a quanto fatto dai nodi adiacenti)

 Vantaggi: Robusto ai guasti Scambio informazione uniforme su tutta la rete

 Svantaggi: • Richiede intelligenza nei nodi • Scambio informazione parziale/errata porta a incongruenze nell’instradamento

Tipologie di instradamento (1)

•Esistono vari criteri per classificare gli algoritmi di routing

Calcolo percorso – Centralizzato:

• Un nodo si occupa di raccogliere l’informazione da tutti gli altri nodi

• Calcola i percorsi

• Ridistribuisce il risultato del calcolo a tutti gli altri nodi

 Vantaggi: • Possibile usare di calcolo percorsi algoritmi e metriche complesse • Tutti i nodi usano piano di instradamento coerente

 Svantaggi: • Sensibile al guasto nodo centrale • Scambio informazione da/verso nodo centralizzato genera congestione

(11)

–statico: i percorsi migliori sono calcolati o calcolabili a priori

–dinamico: i percorsi mutano nel corso del tempo in

funzione della variazione di topologia della rete o del costo dei link

Tipologie di Instradamento (2)

–globale: calcola il percorso di costo minimo supponendo di conoscere completamente la struttura della rete

•esempio: algoritmi basati sullo stato dei link

–decentralizzato (locale): il calcolo del miglior percorso viene eseguito localmente e parzialmente su ogni router;

solitamente, ogni router ha una conoscenza solo dei link e dei router cui è direttamente connesso

•esempio: algoritmi di tipo distance vector

–sensibile al carico: viene assunto che i costi dei link variano anche a seconda del traffico che viene immesso su di essi

–insensibile al carico: non viene considerato il traffico sui link come un parametro per stabilire i percorsi

(12)

•Il protocollo di rete usato su Internet è IP (Internet Protocol)

–in un certo senso, IP utilizza un instradamento locale statico insensibile al carico

•Esistono numerosi protocolli di instradamento, che rendono dinamico l’instradamento di IP:

–RIP, OSPF e BGP sono i principali

Instradamento in Internet

•Su Internet vengono impiegati essenzialmente due tipi di algoritmi di instradamento:

–un algoritmo dinamico basato sullo stato globale dei link –un algoritmo dinamico decentralizzato a vettore delle distanze

• • I pesi attribuiti ai links possono essere: I pesi attribuiti ai links possono essere:

– Unitari: si giunge al

– Unitari: si giunge al min-hop path min-hop path

– – Legati alla capacità del link ed al traffico Legati alla capacità del link ed al traffico previsto;

previsto;

– – Variabili nel tempo in seguito al traffico Variabili nel tempo in seguito al traffico misurato sui links stessi

misurato sui links stessi . .

(13)

•L’idea è quella che ogni router propaghi a tutti i suoi vicini le informazioni relative ai link cui è

direttamente connesso

–dopo un tempo opportuno, tutti i router di tutta la rete avranno una mappa della rete, contenente tutte le

informazioni

–a questo punto ogni router può calcolare il percorso ottimo tra se stesso e la destinazione

–se la rete è stabile, allora tutti i router calcoleranno sempre lo stesso percorso ottimo, ed è quindi garantito che un datagram percorra la strada migliore per giungere a destinazione

Shortest Path Algorithm

•L’algoritmo di instradamento globale maggiormente impiegato è basato sull’algoritmo di Dijkstra noto

come Shortest Path

–lo scopo dell’algoritmo di Dijkstra è trovare il cammino minimo tra due nodi di un grafo pesato dato

(14)

•L’algoritmo di Dijkstra usa le seguenti notazioni:

–c(i, j): costo del link dal nodo i al nodo j, se i nodi non sono collegati, allora si assume che c(i, j) = ;

–D(v): costo del percorso dal nodo sorgente al nodo di

destinazione v con costo minimo, a fine esecuzione;

–N: l’insieme dei nodi di cui è noto il percorso ottimo

•L’algoritmo calcola i percorsi di costo minimo dalla sorgente (data) a tutti gli altri nodi della rete:

-

in ingresso, l’algoritmo prende la matrice c, che descrive completamente la struttura della rete

-in ingresso, l’algoritmo prende il nodo A, corrispondente al nodo sorgente

•assumiamo che V sia l’insieme di tutti i nodi (desumibile da c)

Shortest Path Algorithm

(15)

N = { A }; // Inizializzazione for ( x in V )

D(x) = c(A,x);

do // ciclo principale

m = ; // cerca il percorso a costo minimo noto for ( x in V \ N )

if (D(x) < m) { w = x;

m = D(w);

}

N = N  {w}; // aggiorna l’insieme dei nodi di cui è noto il percorso ottimo

for ( x in V \ N )// aggiorna gli altri percorsi D(x) = min{ D(x), D(w) + c(w,x) };

until ( N == V );

Shortest Path Algorithm

(16)

1 Inizializzazione (nodo A):

2 N = {A}

3 per tutti i nodi x . N 4 if n adiacente ad A

5 then D(n) = c(A,x), p(x) = A 6 else D(n) = infinito

8 repeat

9 trova nodo w . N tale per cui D(w) è minimo 10 aggiungi w ad N

11 aggiorna D(x) per tutti gli n adiacenti a w, n . N:

12 if ( D(x) > D(w) + c(w,x))

13 then D(x) = D(w) + c(w,x), p(x) = w

13 /* il nuovo costo verso x è o il vecchio costo verso x o il 14 cammino a minimo costo verso w più costo da w a x*/

15 until tutti i nodi in N

Ovvero……….

(17)

N W A

C

B

E

D

F

2 1

3 2

6 6

3 4 7

7

A  B: 2 A  C: 1 A  D:  A  E:  A  F: 

scegli C

C 1

A,C

L’insieme W rappresenta i nodi immediatamente raggiungibile da un nodo in N

Esempio

(18)

W N A

C

B

E

D

F

2 1

3 2

6 6

3 4 7

7

scegli B

C 1 B 2

A,C A,B

A  B: 2 A  D: 4 A  E: 7 A  F: 8

Esempio

(19)

W N

scegli D

C 1 B 2 D 4

A,C A,B A,C,

D

A

C

B

E

D

F

2 1

3 2

6 6

3 4 7

7

A  D da C: 4 A  D da B: 5 A  E da B: 6 A  E da C: 7 A  F da C: 8 A  F da B: 9

Esempio

(20)

Esempio

N

W A

C

B

E

D

F

2 1

3 2

6 6

3 4 7

7

scegli E

C 1 B 2 D 4 E 6

A,C

A,C, D A,B

A,B, E

(21)

Esempio

N

W A

C

B

E

D

F

2 1

3 2

6 6

3 4 7

7

scegli F

C 1 B 2 D 4 E 6 F 6

A,C

A,C, D

A,C, D,F A,B

A,B, E

(22)

• Complessità con M nodi

• Ogni iterazione:

– Controllo tutti i nodi w .N

– Aggiungo w a distanza minima

• M*(M+1)/2 confronti: O(M**2)

• L’implementazione più efficiente possibile: O(nlogn)

Algoritmo di Dijkstra: proprietà

(23)

• Vantaggi dell’algoritmo Link-State:

– Elevata accuratezza nell’individuazione del percorso migliore

– Assenza di loops di lunga durata

• Svantaggi:

– Informazione di segnalazione elevata e proporzionale alla frequenza di variazioni topologiche

OVERHEAD INACCETTABILE IN CONDIZIONI DI ELEVATA MOBILITA’ DEI NODI

Pro e Contro dell’algoritmo Link State

(24)

Algoritmi Distance Vector

• Il router tiene in una tabella tutti i percorsi di instradamento noti

• Ogni voce identifica una rete di destinazione e la relativa distanza, di solito misurata in salti o

hop.Ogni hop si riferisce al numero di router che un datagram attraversa dalla propria sorgente alla destinazione

• All’avvio, il router inizializza la sua tabella di

routing per contenere una voce per ciascuna rete

con cui è connesso direttamente.

(25)

Algoritmi Distance Vector (2)

• Quando dal router J arriva un resoconto al router K, questo esamina l’insieme di destinazioni riportate e le relative distanze

• Periodicamente ogni router invia una copia della propria tabella di routing agli altri router che può raggiungere direttamente

• Se J conosce un percorso più breve per raggiungere una destinazione, o se elenca una destinazione che K non ha nella sua tabella, o se K al momento sta

inviando ad una destinazione tramite J e la distanza

di J a quella destinazione è cambiata, K sostituisce la

voce nella sua tabella

(26)

Algoritmi Distance Vector (3)

• Notare che se J riporta la distanza N, una voce

aggiornata in K avrà la distanza N+1 (la distanza per raggiungere la destinazione da J più la distanza per raggiungere J)

• La tabella di routing contiene una terza colonna che specifica il salto successivo

• Quando il router K aggiunge o modifica una voce in

risposta ad un messaggio proveniente da J,assegna il

router J come il salto successivo per quella voce

(27)

Algoritmi Distance Vector Algoritmi Distance Vector

Ogni nodo scambia periodicamente con i vicini diretti un vettore contenente:

– le destinazioni che può raggiungere

– la distanza dalle destinazioni misurata in costo (ad esempio: numero nodi da attraversare compreso se stesso)

• Il nodo che riceve il vettore lo confronta con le proprie RT ed effettua modifiche:

– aggiunge nuove destinazioni

– cambia instradamenti se nuovi sono più brevi

– modifica costi se usa nodo adiacente come miglior

scelta

(28)

Implementazione

• Struttura dati: tabella distanze

• Ogni nodo possiede la propria

– Una riga per ogni possibile destinazione

– Una colonna per ogni nodo adiacente

• Esempio: nel nodo X, per la destinazione Y

attraverso nodo adiacente Z:

Sorgente

D

X

(Y,Z) = c(X,Z) + min {D

z

(Y,w)}

Destinazione

Next hop

Distance Vector

(29)

Instradamento Distance Instradamento Distance

Vector Vector

• Distribuito:

– ogni nodo avvisa i vicini solo quando il suo cammino migliore verso una certa

destinazione è cambiato

– i vicini avviseranno a loro volta nodi vicini se necessario

• Iterativo, asincrono: una iterazione (locale al nodo) causata da:

– modifica costo canale a cui nodo collegato

– messaggio ricevuto da nodo adiacente, che causa

modifica del cammino ottimo

(30)

Algoritmo Distance Vector Algoritmo Distance Vector

Ad ogni nodo X:

1 Inizializzazione:

2 per tutti i nodi adiacenti v:

3 D X(*,v) = infinito /* l’operatore * significa ”per ogni riga" */

4 D X(v,v) = c(X,v)

5 per tutte le destinazioni, y

6 invia min D X(y,w) verso ogni nodo adiacente /* w sono tutti i vicini di X*/

w

7 7

(31)

Algoritmo Distance Vector Algoritmo Distance Vector

8 loop

9 wait (until I see a link cost change to neighbor V 10 or until I receive update from neighbor V)

11

12 if (c(X,V) changes by d)

13 /* change cost to all dest's via neighbor V by d */

14 /* note: d could be positive or negative */

15 for all destinations y: DX (y,V) = DX (y,V) + d 16

17 else if (update received from V wrt destination Y) 18 /* shortest path from V to some Y has changed */

19 /* V has sent a new value for its minW DV(Y,w) */

20 /* call this received new value is "newval" */

21 for the single destination y: DX (Y,V) = c(X,V) + newval 22

23 if we have a new minW DX(Y,w) for any destination Y 24 send new value of minW DX (Y,w) to all neighbors 25

26 forever

(32)

Algoritmo Distance Vector Algoritmo Distance Vector

• Algoritmo di Bellman-Ford

 Ogni nodo invia ai nodi adiacenti un distance vector

 insieme di coppie [indirizzo - distanza], dove la distanza è espressa tramite metriche classiche, quali numero di hop e costo.

 Memorizza per ogni linea l’ultimo distance vector ricevuto.

 Calcola le proprie tabelle di instradamento.

 Se le tabelle risultano diverse da quelle precedenti,

invia ai nodi adiacenti un nuovo distance vector.

(33)
(34)
(35)
(36)
(37)

Distance Vector

• Problemi:

– lento a convergere

– propaga errori di routing

– non molto scalabile (le dimensioni dei messaggi scambiati dai nodo crescono al crescere

della rete)

• Vantaggi

– facile da implementare

(38)

Confronto tra algoritmi LS e DV Confronto tra algoritmi LS e DV

• Complessità messaggi: con M nodi, E canali per nodo

– LS: ogni nodo invia O(M) messaggi, ciascuno lungo O(E) – DV: ogni messaggio contiene tutte le destinazioni O(M),

ed èmandato a O(E) vicini O(E M)

• Velocità di convergenza

– LS: ogni volta che un link state è propagato, ho nuova topologia: convergenza immediata

– DV: scelte nodo dipendono da scelte nodi vicini; si richiedono più scambi di messaggi: tempo di

convergenza variabile

(39)

Confronto tra algoritmi LS e DV Confronto tra algoritmi LS e DV

• Affidabilità: cosa succede se un nodo funziona non correttamente?

• LS: i nodi possono annunciare costi dei canali scorretti

– Ogni nodo calcola la propria tabella: tutti sbagliano

• Non si possono creare anelli

– Al prossimo annuncio tutto si corregge

• DV: i nodi possono annunciare costi dei cammini scorretti

– Ogni annuncio è usata da tutti i nodi (indirettamente) – Gli errori si propagano nella rete

• Errori di routing creano anelli

Riferimenti

Documenti correlati

La configurazione tramite la CLI di un router Cisco è sempre fatta nella modalità global configuration mode Altre modalità di configurazione (non globali) sono. accessibili a

Assolutamente interdetto il transito ad ogni ora e giorno, anche per i clienti dell’hotel, della ZONA T (Via Indipendenza, Via Rizzoli, Via Ugo Bassi), della Via Archiginnasio,

Villa Greco, sede dell'Osservatorio per la Biodiversità del Lazio e della Rete Regionale di Monitoraggio (Focal Point), si trova nel cuore del Parco Regionale dell'Appia Antica, in

Per chi arriva da OVEST: in corrispondenza della svolta per Strada Cappuccini (a sinistra rispetto all’auto), svoltare a destra e percorrere Corso Padre Lorenzo fino

o CONOSCENZE: Conoscere le potenzialità del movimento del corpo, le posture corrette e le funzioni fisiologiche. o ABILITÀ : Elaborare risposte motorie adeguate e

Assolutamente interdetto il transito ad ogni ora e giorno, anche per i clienti dell’hotel, della ZONA T (Via Indipendenza, Via Rizzoli, Via Ugo Bassi), della Via Archiginnasio,

Qualora arrivaste dall'Aeroporto di Orio al Serio per raggiungere il centro città è consigliabile prendere la linea 1 dell’autobus ATB (da Aeroporto di Orio al Serio - Città Alta),

(iv)  modificare il Software o creare materiale derivato dal Software; (v) se l'utente esegue una copia del Software o della documentazione, è tenuto a riprodurre anche