1 / 21

Reti di Telecomunicazione Lezione 16

Reti di Telecomunicazione Lezione 16. Corso di reti per le telecomunicazioni. Programma della lezione. Algoritmo di instradamento distance vector algoritmo di base variazioni nei costi e guasti poisoned reverse Confronto tra gli algoritmi di instradamento complessità

Télécharger la présentation

Reti di Telecomunicazione Lezione 16

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Reti di TelecomunicazioneLezione 16 Corso di reti per le telecomunicazioni

  2. Programma della lezione • Algoritmo di instradamento distance vector • algoritmo di base • variazioni nei costi e guasti • poisoned reverse • Confronto tra gli algoritmi di instradamento • complessità • velocità di convergenza • robustezza • Instradamento gerarchico • autonomous system

  3. Algoritmo distance vector • L’algoritmo distance vector è iterativo, asincrono e distribuito • ogni nodo è provvisto di una tabella delle distanze • una riga per ogni destinazione di rete • una colonna per ciascuno dei vicini direttamente collegati al nodo • l’algoritmo riempie la tabella di ogni nodo con le distanze minime per raggiungere dal nodo la destinazione in riga passando per il nodo in colonna • ogni nodo esegue una computazione, usando le informazioni provenienti dai vicini, e le varie esecuzioni cooperano (algoritmo distribuito) • le esecuzioni delle computazioni da parte dei vari nodi non avvengono tutte contemporaneamente, ma concorrentemente (algoritmo asincrono) • il processo complessivo converge, terminando nel momento in cui tutti i nodi hanno una corretta tabella delle distanze (algoritmo iterativo) • l’arresto dell’algoritmo è automatico: quando nessuno è più in grado di aggiornare la propria tabella, l’algoritmo è concluso

  4. B C 1 7 8 2 A 1 2 E D DE() A B D A1 14 5 B 7 8 5 C 6 9 4 D 4 11 2 Algoritmo distance vector • L’elemento alla riga X e colonna Y della tabella delle distanze del nodo E, DE(X,Y), denota la distanza da E a X, passando per Y • Inizialmente, ogni nodo E conosce la distanza dai propri vicini ed assume che gli altri nodi siano inaccessibili • DE(X,X) = c(E,X) • tutti gli altri elementi sono  • Successivamente, la tabella viene aggiornata come DE(X,Y) = c(E,Y) + + min{DZ(X,w) | w vicino di X}

  5. B C 1 7 8 2 A 1 2 E D DE() A B D A1 14 5 B 7 8 5 C 6 9 4 D 4 11 2 Algoritmo distance vector • Quando l’algoritmo raggiunge la stabilità, il percorso minimo da E a C si ottiene cercando il valore minimo nella riga C della tabella DE(C,x) • a stabilità raggiunta, ogni tabella contiene la lunghezza del percorso minimo da E a C passando per x • A tale valore corrisponde la colonna D • Il datagram verrà indirizzato al router D, il quale procederà nello stesso modo di E • il percorso è individuato in modo distribuito: ogni router contiene il miglior prossimo passo

  6. Algoritmo distance vector // Al nodo X for ( V adiacente ad X ) { DX(V,V) = c(X,V); for (Y diverso da V) DX(Y,V) = ; } for ( Y possibile destinazione ) for ( V adiacente a X ) send “D(X,Y) = min{DX(Y,w) | w vicino di X}” a V; while( true ) { wait( messaggio da un vicino V ); if ( messaggio == “c(X,V) = c(X,V) + d” ) // variazione costo link DX(Y,V) = DX(Y,V) + d; else // messaggio == “D(V,Y) = newval” DX(Y,V) = c(X,V) + newval; if (il valore di min{DX(Y,w) | w vicino di X} è cambiato ) for ( V adiacente a X ) send “D(X,Y) = min{DX(Y,w) | w vicino di X}” a V; }

  7. Y X Z DX Y Z Y 2  Z  7 Dy Y Z X 2  Z  1 Dz Y Z X 7  Y  1 Esempio 2 1 7

  8. Y X Z DX Y Z Y2 Z  7 Dy Y Z X2 Z  1 Dz Y Z X7 Y  1 DX Y Z Y 2 8 Z 3 7 Dy Y Z X 2 8 Z 9 1 Dz Y Z X 7 3 Y 9 1 Esempio 2 1 7

  9. Y X Z DX Y Z Y 2  Z  7 Dy Y Z X 2  Z  1 Dz Y Z X 7  Y  1 DX Y Z Y28 Z 3 7 Dy Y Z X28 Z 9 1 Dz Y Z X 7 3 Y 9 1 DX Y Z Y28 Z 3 7 Dy Y Z X28 Z 9 1 Dz Y Z X 7 3 Y 9 1 Esempio 2 1 7

  10. Variazione di costo dei link • Quando avviene una variazione di costo in un link, l’algoritmo distance vector • aggiorna la propria tabella delle distanze • se questa variazione è significativa, ovvero se modifica una qualche distanza minima, invia un messaggio ai vicini • per l’asincronia dell’algoritmo, esso inizierà a convergere verso un nuovo insieme di percorsi minimo • Se un link si guasta, si può usare un trucco: • basta segnalare un cambiamento nel costo del link guasto: dal valore precedente a infinito

  11. Poisoned reverse • Studiando il tempo di propagazione di una variazione di costo di un link, si scopre che: • le buone notizie (riduzioni dei costi) viaggiano velocemente • le cattive notizie (aumento dei costi) viaggiano lentamente • il problema nasce dal fatto che l’algoritmo considera anche percorsi ciclici, ovviamente inutili; tuttavia, si può dimostrare che, solo quando i dati sono stabili, i percorsi ciclici vengono sicuramente eliminati • Per evitare il problema di propagazione lenta, si usa una tecnica nota come poisoned reverse: • se Z instrada i datagram attraverso Y per raggiungere X, allora Z informerà Y che la distanza da Z a X è infinita • questa tecnica previene i percorsi ciclici tra due nodi, ma non i cicli che coinvolgono più di due nodi

  12. Confronto • I parametri di confronto tra gli algoritmi di instradamento visti sono: • efficienza (in termini di scambio di messaggi): • l’algoritmo di Dijkstra richiede O(n·E) messaggi, con n numero di nodi ed E numero di link, in modo che ciascun nodo della rete conosca il costo di ciascun link • in Distance Vector, ogni nodo invia messaggi solo ai propri vicini, quindi il costo di comunicazione dipende dal numero di iterazioni dell’algoritmo e dalla topologia della rete • tuttavia, in pratica, Distance Vector, su reti ragionevoli come topologia e con un range di costi piccolo, tende a non scambiare molti messaggi • quindi, nessuno dei due algoritmi è definitivamente migliore dell’altro, in questo senso

  13. Confronto • I parametri di confronto tra gli algoritmi di instradamento visti sono: • efficienza (in termini di velocità di convergenza) • nel caso dell’algoritmo di Dijkstra, si può mostrare che, con una opportuna codifica, esso richiede O(n2) passi di computazione, con n numero di nodi • nel caso dell’algoritmo Distance Vector, il costo in termini di passi di calcolo è difficile da valutare, dipendendo dal valore dei costi dei link • tuttavia, in pratica, Distance Vector, su reti ragionevoli come topologia e con un range di costi piccolo, tende a convergere abbastanza in fretta • quindi, ancora una volta, nessuno dei due algoritmi è certamente superiore all’altro

  14. Confronto • I parametri di confronto tra gli algoritmi di instradamento visti sono: • robustezza • in caso di guasti a nodi o a link, l’algoritmo di Dijkstra, essenzialmente, richiede di ricomputare tutti i percorsi minimi • invece, l’algoritmo Distance Vector può gestire la situazione, a patto di considerare il problema dei percorsi ciclici • nel caso di informazioni errate sul costo di un link, per entrambi gli algoritmi, queste influenzeranno solo i percorsi ottimi che contengono quel link • nel caso dell’algoritmo di Dijkstra, questa informazione tenderà a restare confinata nei nodi più vicini al link sbagliato, risparmiando gli altri • nel caso di Distance Vector, invece, questa informazione verrà propagata, in un certo qual senso, per tutta la rete

  15. Confronto • Complessivamente, possiamo dire che nessuno dei due algoritmi è vincente sull’altro • l’algoritmo di Dijkstra è più controllabile, più robusto rispetto alle informazioni mantenute • l’algoritmo di Distance Vector è più flessibile, spesso più efficiente e genera spesso meno traffico • Quindi la scelta tra i due algoritmi dipende dal tipo di instradamento che stiamo cercando • se vogliamo un instradamento su una rete con molta variabilità sulla topologia, ma in cui le informazioni sono date correttamente, la scelta è Distance Vector, che sopporta variazioni di topologia e di costi • se vogliamo un routing efficiente su una rete abbastanza stabile, allora l’algoritmo di Dijkstra è superiore, dal momento che effettua tutto il lavoro una volta sola

  16. Instradamento gerarchico • Se una rete è formata da molte sottoreti, gli algoritmi di instradamento visti sono inesorabilmente inefficienti • essi computano la distanza minima tra due router della rete, per ogni coppia di router • quindi ogni router deve mantenere una tabella che ha un grande numero di percorsi • per entrambi gli algoritmi, la tabella finale contiene tante righe quanti sono i percorsi • Tuttavia, se la destinazione fosse una intera sottorete, allora avrei un instradamento tra reti • posso definire un router come interno o di frontiera • i router di frontiera definiscono la rete, mentre i router interni fanno parte delle sottoreti

  17. Instradamento gerarchico • La divisione in router interni e di frontiera rende scalabile il problema dell’instradamento • ogni sottorete risolve il problema dell’instradamento al suo interno, considerando i propri router di frontiera come tutte le altre destinazioni • la rete delle reti risolve il problema di instradamento solo tra i router di frontiera, considerando questi come la somma delle destinazioni della sottorete • La divisione in sottoreti è comoda per definire i confini amministrativi delle organizzazioni router interno router di frontiera

  18. Autonomous System • Su Internet, una sottorete che sia visibile all’esterno come una singola entità dal punto di vista dell’instradamento, è detta Autonomous System (AS) • In effetti, Internet è una rete di Autonomous System, almeno per quanto riguarda i problemi di instradamento • Esistono quindi protocolli di routing • intra-autonomous system: si occupano di instradare i datagram tra nodi dello stesso sistema, eventualmente delegando ai router di frontiera il problema dell’instradamento se la destinazione è esterna • inter-autonomous system: si occupano di instradare i datagram tra sistemi, ovvero tra i loro router di frontiera

  19. rotta inter-AS rotta intra-AS Autonomous System • L’instradamento di un datagram avviene per parti: • all’interno dell’autonomous system di origine • tra autonomous system intermedi • all’interno dell’autonomous system di destinazione • La rotta seguita può non essere ottimale • anzi, non è nemmeno garantito che funzioni, potrebbe risultare ciclica! • L’architettura risultante è estremamente complessa, ma il procedimento è scalabile

  20. Autonomous System • I protocolli di instradamento usati su Internet sono • RIP (Routing Internet Protocol) • intra-AS, basato su Distance Vector • OSPF • intra-AS, basato su Dijkstra • BGP • inter-AS, basato su Distance Vector • Un protocollo di instradamento è un ibrido: • agisce sul livello di rete • le tabelle usate per l’instradamento sono strutture dati di questo livello • computa sul livello applicazione • i messaggi atti al suo funzionamento sono trasportati da UDP o TCP

  21. Conclusione • Questa lezione è tratta da: • Kurose, cap. 4.2 e 4.3 • Esercizi: • Provate l’algoritmo distance vector sulla rete a cinque elementi di queste slide • Provate a costruire un esempio che mostri come la propagazione di cattive notizie in distance vector sia lenta • Provate a costruire un esempio in cui la tecnica di poisoned reverse non funzioni • Discutete cosa si intende per destinazione in una rete con sottoreti. Come è possibile indirizzare un insieme di nodi?

More Related