Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Acknowledgement
! Credits
– Part of the material is based on slides provided by the following
authors
• Douglas Comer, Computer Networks and Internets, 5th edition,
Prentice Hall
• Behrouz A. Forouzan, Sophia Chung Fegan, “TCP/IP Protocol Suite,”
McGraw-Hill, January 2005
2
Argomenti trattati
3
3
5
5
6
6
Internet Control Message Protocol
7
7
8
8
ICMP: formato dei messaggi e trasporto
9
9
11
11
12
12
Dynamic Host Configuration Protocol (DHCP)
! Quando un host si accende
– invia in broadcast una richiesta DHCP
– il server invia una risposta DHCP
• DHCP usa il termine offerta per indicare il messaggio inviato dal server
• Si dice che il server sta offrendo un indirizzo al client
13
13
15
15
16
16
DHCP: Formato dei messaggi
17
17
18
18
Scenario client-server DHCP
DHCP server: 223.1.2.5 arriving
DHCP discover
client
src : 0.0.0.0, 68 dest.: 255.255.255.255,67
DHCPDISCOVER
yiaddr: 0.0.0.0
transaction ID: 654
DHCP offer
src: 223.1.2.5, 67 dest: 255.255.255.255, 68
DHCPOFFER
yiaddrr: 223.1.2.4
transaction ID: 654 DHCP request
DHCP server ID: 223.1.2.5 src: 0.0.0.0, 68 dest:: 255.255.255.255, 67
Lifetime: 3600 secs DHCPREQUEST
yiaddrr: 223.1.2.4
transaction ID: 655
DHCP server ID: 223.1.2.5
time DHCP ACK Lifetime: 3600 secs
src: 223.1.2.5, 67 dest: 255.255.255.255, 68
DHCPACK
yiaddrr: 223.1.2.4
transaction ID: 655
DHCP server ID: 223.1.2.5
Lifetime: 3600 secs
19
Riassunto
Cosa accade quando un host…
21
Reti di Calcolatori
2
Consegna diretta / indiretta
HostB L host A ha 2 pacchetti da inviare:
HostA
NtwA - Uno all indirizzo 165.5.1.12
165.5.1.0/24 - L altro all indirizzo 201.12.82.4
165.5.1.12
165.5.1.5
NtwB
98.23.0.0/16
NtwC
Consegna diretta 201.12.82.0/24
Consegna indiretta HostC
201.12.82.4
3
NtwD
NtwB
201.12.83.0/24
98.23.0.0/16
Nozioni di base
! Un protocollo di
routing gestisce una
tabella di routing nei
router
– la tabella indica, per
ogni destinazione,
qual e l output su cui
inviare il pacchetto
Requisiti
8
Molti gradi di liberta
! Routing centralizzato vs distribuito
– centralizzato e semplice, ma propenso a guasti e congestioni
! Scambio di informazioni globale vs locale
– trasmettere informazioni globali e costoso
! Statico vs dinamico
– statico puo andare bene ai bordi della rete, non nel core
! Stocastico vs deterministico
– stocastico favorisce il load balancing , evita oscillazioni, ma aumenta la
probabilita di pacchetti fuori sequenza
10
Interazione tra Routing e Forwarding
Algoritmi di routing
Tabella di forwarding
header value output link
0100 3
0101 2
0111 2
1001 1
3 2
11
5
3
v w 5
2
u 2 1 z
3
1 2
x 1
y
Grafo: G = (N,E)
E = insieme dei collegamenti (edges) ={ (u,v), (u,x), (v,x), (v,w), (x,w), (x,y), (w,y), (w,z), (y,z) }
12
Astrazione con grafi: costi
5
• c(x,x ) = costo del collegamento (x,x )
3
v w 5
2 - ad es., c(w,z) = 5
u 2 1 z
3 • il costo puo essere impostato a 1, o
1 2 inversamente proporzionale alla banda,
x 1
y
o inversamente proporzionale al livello
di congestione
Costo del cammino (x1, x2, x3,…, xp) = c(x1,x2) + c(x2,x3) + … + c(xp-1,xp)
13
i c(i,k D(k,j)
)
k j
15
! L insieme dei valori D(i,*) e il vettore delle distanze del nodo i
! L algoritmo mantiene anche il valore del next-hop (tabella di
forwarding) per ogni destinazione j, inizializzato con:
– next-hop(i) = i;
– next-hop(k) = k se k e un vicino diretto
– next-hop(j) = UNKNOWN altrimenti
16
Algoritmi Distance Vector (DV)
17
Riassunto
Idea di base:
! Periodicamente ogni nodo invia ai propri vicini il vettore delle
distanze (distance vector, DV)
Asincrono
! Quando un nodo x riceve il DV da un vicino, aggiorna il priprio
DV usando l equazione di Bellman-Ford:
D(x,y) minv{c(x,v) + D(v,y)} per ciacun nodo y N
! Sotto poche, naturali ipotesi, la stima di D(x,y) converge al
valore minimo reale
18
Riassunto
! Distribuito:
se il DV e cambiato, lo
ciascun nodo manda il notifica ai vicini
proprio DV solo se cambia
– quindi solo se necessario
19
#A 7 A
#B 0 - 1
#C 1 C B C C dist thr.
#D - -
#E 5 E 7 #A - -
#B 1 B
#C 0 -
A 5 2 #D 2 D
#E - -
A dist thr.
1 2
#A 0 - E D
#B 7 B
- E dist thr. D dist thr.
#C -
#D - -
#A 1 A #A - -
#E 1 E
#B 5 B #B - -
#C - - #C 2 C
#D 2 D #D 0 -
#E 0 - #E 2 E
20
Distance Vector: esempio (scambio di messaggi)
1
B C C dist thr.
7 #A - -
#B 1 B
#C 0 -
A 5 2 #D 2 D
#E - -
1 2
E D
E dist thr. D dist thr.
#A 1 A #A - -
#B 5 B #B - -
#C - - #C 2 C
#D 2 D #D 0 -
#E 0 - #E 2 E
21
1
B C C dist thr.
7 #A - -
#B 1 B
#C 0 -
A 5 2 #D 2 D
#E 4 D
1 2
E D
E dist thr. D dist thr.
#A 1 A #A - -
#B 5 B #B - -
#C 4 D #C 2 C
#D 2 D #D 0 -
#E 0 - #E 2 E
22
Distance Vector: esempio (scambio di messaggi)
B dist thr.
#A 7 A
#B 0 - 1
#C 1 C B C
#D - -
#E 5 E 7
A 5 2
A dist thr.
1 2
#A 0 - E D
#B 7 B
- E dist thr. D dist thr.
#C -
#D - -
#A 1 A #A - -
#E 1 E
#B 5 B #B - -
#C 4 D #C 2 C
#D 2 D #D 0 -
#E 0 - #E 2 E
23
#A 6 E
#B 0 - 1
#C 1 C B C
#D 7 E
#E 5 E 7
A 5 2
A dist thr.
1 2
#A 0 - E D
#B 6 E
5 E dist thr. D dist thr.
#C E
#D 3 E
#A 1 A #A 3 E
#E 1 E
#B 5 B #B 7 E
#C 4 D #C 2 C
#D 2 D #D 0 -
#E 0 - #E 2 E
24
Distance Vector: esempio (a regime)
B dist thr.
#A 6 E
#B 0 - 1
#C 1 C B C C dist thr.
#D 3 C
#E 5 E 7 #A 5 D
#B 1 B
#C 0 -
A 5 2 #D 2 D
#E 4 D
A dist thr.
1 2
#A 0 - E D
#B 6 E
5 E dist thr. D dist thr.
#C E
#D 3 E
#A 1 A #A 3 E
#E 1 E
#B 5 B #B 3 C
#C 4 D #C 2 C
#D 2 D #D 0 -
#E 0 - #E 2 E
25
26
Problema: counting to infinity
time
B
Router A Router A Router A
Dest Next Metric Dest Next Metric Dest Next Metric
C A
Router B Router B Router B
1 Dest Next Metric Dest Next Metric Dest Next Metric
NTW_1 A 3 NTW_1 C 4 NTW_1 C 5
10 1
D
Router C Router C Router C
Dest Next Metric Dest Next Metric Dest Next Metric
NTW_1 A 3 NTW_1 B 4 NTW_1 B 5
NTW_1
Router D Router D Router D
Dest Next Metric Dest Next Metric Dest Next Metric
NTW_1 dir 1 NTW_1 dir 1 NTW_1 dir 1
Il collegamento
tra B e D si
guasta
27
1 1 NTW_1 C 11 NTW_1 C 12
C A
Router B Router B
1 Dest Next Metric Dest Next Metric
10 … NTW_1 C 11 NTW_1 C 12
D
Router C Router C
Dest Next Metric Dest Next Metric
NTW_1 B 11 NTW_1 D 11
NTW_1
Router D Router D
Dest Next Metric Dest Next Metric
NTW_1 dir 1 NTW_1 dir 1
28
Soluzione al counting to infinity
! Split Horizon
– semplice
• ciascun nodo, quando invia il DV ad un vicino k, omette le destinazioni che
hanno k come next hop
– con poisoned reverse
• ciascun nodo, quando invia il DV ad un vicino k, imposta la distanza a
infinito per le destinazioni che hanno k come next hop
29
30
Routing Information Protocol (RIP)
32
RIP: Introduzione
! Punti di forza
– semplice da implementare
– semplice da gestire
– uso diffuso
33
RIP: Introduzione
(20 bytes)
immediatamente
0...0
! Version: 1 0...0
! Address family: 2 per IP metric
! IP address: la parte di HostID e address family 0…0
sempre posta a zero
IP address (32-bit)
! Metric 0...0
– Distanza dal router alla rete
specificata nell indirizzo IP 0...0
RIP: procedure
! Le tabelle di routing di RIP sono gestite da processi di
livello applicativo
– ad es., routed sulle macchine UNIX route
! Messaggi di Request
– generati da router appena avviati
– azione: il router risponde direttamente a chi ha fatto la richiesta
! Messaggi di Response
– possono arrivare da router che inviano messaggi di aggiornamento, o in
risposta ad una query specifica
– azione: il router aggiorna la sua tabella di routing
37
38
RIPv2: Formato dei messaggi
! Version: 2 IP UDP RIPv2 Message
(20 bytes)
dell autonomous system Subnet mask
Next hop
! Maschera di subnet della rete
identificata dall indirizzo IP metric
address family Route Tag
! Next hop IP address (32-bit)
– identifica un indirizzo di next- Subnet mask
hop migliore rispetto a quello Next hop
pubblicizzato dal router (se
metric
esiste, altrimenti impostato a
zero) …
(fino a 25 entry in totale)
39
RIPv2: autenticazione
! Qualsiasi host che invia IP UDP RIPv2 Message
pacchetti UDP sulla porta 520
potrebbe essere considerato un 32 bits
router Command Version 0…0
informazioni false
entry
! Multicast
– invece di inviare i messaggi di RIP in broadcast, RIPv2 usa l indirizzo di
multicast 224.0.0.9
41
42
Reti di Calcolatori
44
Algoritmi Link State: Approccio
! Approccio iterativo, ma prendendo come riferimento la destinazione j e i
predecessori di j, ovvero k = p(j)
– altrimenti noto come algoritmo di Dijkstra
– si osservi che vale una versione alternativa della condizione di consistenza:
D(i,j) = D(i,k) + c(k,j)
j
i D(i,k)
k
46
Dijkstra: inizializzazione
! Inizializzazione:
– D(i,i) = 0 e p(i) = i;
– D(i,k) = c(i,k) e p(k) = i se k e un vicino di i
– D(i,k) = INFINITO e p(k) = UNKNOWN se k non e vicino di i
– Insieme N = { i }, e next-hop (i) = i
– Insieme M = { j | j diverso da i}
Dijkstra: iterazione
1 A A A A
1+e 2+e 0 0 2+e 2+e 0
D 0 0 B D B D B D B
1+e 1 0 0 1+e 1
0 e 0 0 1 1+e 0 e
1
C C C C
1
e
… ricalcolo del … ricalcolo … ricalcolo
inizialmente
routing
50
Come assegnare il costo?
! La scelta del costo dei collegamenti ha un impatto sul traffico
– Costo basso = probabilita alta di appartenere all albero dei cammini minimi e
quindi di gestire piu traffico
! Tradeoff: convergenza vs distribuzione del traffico
– Si dovrebbero evitare oscillazioni…
– … ottenendo contemporaneamente un equa utilizzazione della rete
! Metriche statiche (ad es., numero degli hop)
– non considerano il traffico
! Metriche dinamiche (ad es., costo basato sull occupazione delle code o sul
ritardo)
– Molte oscillazioni, difficili da gestire
! Metriche quasi-statiche:
– si ricalcolano periodicamente le metriche statiche valutando il traffico generale
(su una finestra ampia di misura)
51
52
Confronto tra algoritmi LS e DV
Complessita relativa ai messaggi Robustezza: cosa succede in caso di
! LS: guasti?
– con n nodi e E link, O(nE) messaggi ! LS:
inviati
! DV: – i nodi possono inviare informazioni
non corrette sul costo dei link
– scambio solo tra vicini diretti
– ciascun nodo calcola solamente la
propria tabella di routing
Velocita di convergenza
! DV:
! LS:
– O(nlogn)
– i nodi possono inviare informazioni
non corrette sul costo dei cammini
– potrebbe avere oscillazioni
– tabelle dei nodi usate da altri nodi
! DV:
• gli errori si propagano sulla rete
– variabile
– possibili routing loops
– problema del count-to-infinity
53
OSPF
Open Shortest Path First
Open Shortest Path First
! Nel 1988 IETF ha avviato la standardizzazione di un nuovo protocollo di
routing
! IETF ha elencato in fase di avvio della standardizzazione un insieme di
requisiti che il nuovo protocollo avrebbe dovuto rispettare:
– soluzione NON proprietaria – aperta
– parametri di distanza multipli
– algoritmo dinamico
– routing basato su Type of Service
– load balancing
– supporto di sistemi gerarchici
– funzionalità di sicurezza
! Open Shortest Path First (1990, RFC 1247)
55
Criteri di progettazione
– reti broadcast
56
Distinzione host/router (1)
57
Configurazione
fisica
58
Reti broadcast (1)
Ethernet
C D C D
N ⋅ (N − 1)
2
adiacenze
59
A B
C D
60
Reti broadcast (3)
61
A B
C D
62
Reti broadcast (5)
A B
0
0
0
0
C D
63
Link
rnal
Exte
65
backbone
Area A Area B
Backbone Area
66
Aree multiple (4)
! Ogni border router sommarizza le informazioni di instradamento relative
alla propria area
195.14.32.5 195.14.32.6
195.14.32.4
44.0.0.0 195.14.32.2 195.14.32.8
Network
44.0.0.0 195.14.32.1 195.14.32.0/28
195.14.32.3 195.14.32.11
195.14.32.10
67
Area B
Area A
Virtual Link
Backbone Area
68
Type of Service
69
Il protocollo OSPF
– Hello Protocol
– Exchange Protocol
– Flooding Protocol
70
Messaggi OSPF (1)
! I messaggi OSPF sono trasportati direttamente all interno dei pacchetti IP
– non viene utilizzato il livello di trasporto
! Tutti i messaggi OSPF condividono lo stesso header
71
72
Messaggi OSPF (3)
! Area ID: identificativo dell area
– 0 per la Bacvbone area
! Auth Type: tipo di autenticazione
– 0 no autenticazione, 1 autenticazione con passwd
! Authentication: password
73
Il protocollo Hello
! Funzioni:
– verificare l operatività dei link
– elezione del designated router (e relativo elemento di backup)
! Messaggi:
– Hello
75
76
Hello Protocol: formato pacchetto (3)
77
78
Il protocollo Exchange
! Funzioni:
– sincronizzazione dei database link state (bring up adjacencies) tra due
router che hanno appena verificato l operatività bidirezionale del link
che li connette
– protocollo client-server
– messaggi:
• Database Description Packets
• Link State Request
• Link State Update
79
! Database Description
80
Exchange Protocol: messaggi (2)
! Link State Request
Common header (type = 3, link state request)
Link State Type
Link State ID
Advertising router
81
Il protocollo di Flooding
! Funzioni:
– aggiornare il database link state dell autonomous system a seguito del
cambiamento di stato di un link
! Messaggi:
– Link State Update
82
Reti di Calcolatori
Esercizi su routing
Convenzioni utilizzate
! Ogni nodo invia gli update periodicamente ogni T secondi
! Tutti i nodi sono sincronizzati e iniziano a scambiarsi i distance vector (DV)
a partire dal tempo t=0;
– i successivi update vengono inviati dai diversi nodi esattamente nello stesso
istante;
! Se il costo di un link cambia (ad es. se un link si guasta), il nodo aspetta il
successivo invio degli update
– non notifica immediatamente il cambiamento ai vicini
– esempio: se il link si guasta al tempo t = 3T + T/2, l’update viene inviato al
tempo t = 4T;
• semplificazione rispetto al caso generale, dove invece si invia subito un update;
! Se un update ricevuto dai vicini fa cambiare la tabella di routing di un
nodo, il nodo aspetta il successivo invio degli update per notificare tale
cambiamento
– non notifica immediatamente il cambiamento ai vicini)
– semplificazione rispetto al caso generale, dove invece si invia subito un update;
84
Convenzioni utilizzate
85
! Convenzione
– c(i,j) e’ il costo del link diretto tra il nodo “i” e il suo vicino “j”
– D(i,k) e’ il costo del cammino tra il nodo “i” e il nodo “k”
86
Aggiornamento delle tabelle di routing
87
Notazione utilizzata
raggiungibile
da altri nodi
88
Esercizio 1
89
Esercizio 1 - Soluzione
A 0 A A 0 A
Tabelle a B 1
2
B
B
B inf
inf
-
-
C C
regime D 2 B
Tabelle subito D inf -
da B dist next
dopo il guasto del da B dist next
A 1 A A inf -
B 0 B link A-B B 0 B
C 1 C C 1 C
dopo il guasto D 1 D D 1 D
" nessun A
B
2
1
B
B
cambiamento C
D
0
1
C
D
da D dist next
A 2 B
B 1 B
C 1 C
D 0 D
90
Tabelle Distance Vector Tabelle dopo
dopo il ricevuti dai vicini l iterazione
guasto
A 0 A A 2
A 0 A
1
A B inf - B
C 1
B 5 D
C inf - C 5 D
inf - D 0 4 D
D D
A 2 B
A 0 A inf A 2 A 3 C
D B 1 B
B inf B 0 B 1 B 1 B
C 1 C inf 1 0 C 1 C
C C C
D 0 D inf 1 1 D 0 D
D D D
91
A 0 A A 3
A 0 A
1
A B 5 D B
C 1
B 5 D
C 5 D C 5 D
4 D D 0 4 D
D D
A 0 A A 4
A 0 A
1
A B 5 D B
C 1
B 5 D
C 5 D C 5 D
4 D D 0 4 D
D D
A 4 A
A 0 A 4 A 4 A 4 A
D B 1 B
B 5 B 0 B 1 B 1 B
C 1 C 5 1 0 C 1 C
C C C
D 0 D 4 1 1 D 0 D
D D D
93
A 0 A A 4
A 0 A
1
A B 5 D B
C 1
B 5 D
C 5 D C 5 D
4 D D 0 4 D
D D
A 4 A
A 0 A 5 A 5 A 4 A
D B 1 B
B 5 B 0 B 1 B 1 B
C 1 C 5 1 0 C 1 C
C C C
D 0 D 4 1 1 D 0 D
D D D
94
Split horizon con poison reverse
A 2 B A inf
B 1 B B inf
C 0 C C 0
D 1 D D 1
95
A 0 A A 2
A 0 A
1
A B inf - B
C 1
B 5 D
C inf - C 5 D
inf - D 0 4 D
D D
A 2 B
A 0 A inf A 2 A 3 C
D B 1 B
B inf B 0 B 1 B 1 B
C 1 C inf 1 0 C 1 C
C C C
D 0 D inf inf inf D 0 D
D D D
96
Distance Vector ricevuti Tabelle dopo
dai vicini l iterazione
alla successiva iterazione
A 0 A A 2
A 0 A
1
A B 5 - B
C 1
B 5 D
C 5 - C 5 D
4 - D 0 4 D
D D
A 3 C
A 0 A inf A inf A 4 A
D B 1 B
B inf B 0 B 1 B 1 B
C 1 C inf 1 0 C 1 C
C C C
D 0 D inf inf inf D 0 D
D D D
97
A 0 A A 2
A 0 A
1
A B 5 D B
C 1
B 5 D
C 5 D C 5 D
4 D D 0 4 D
D D
A 4 A
A 0 A 4 A inf A 4 A
D B 1 B
B inf B 0 B 1 B 1 B
C 1 C inf 1 0 C 1 C
C C C
D 0 D inf inf inf D 0 D
D D D
98
Esercizio 2
! Con riferimento alla rete in figura, ove e’
utilizzato l’algoritmo Distributed Bellman-Ford A
(DBF) classico senza alcun meccanismo
aggiuntivo
4 1
– Si indichi quale sarà la tabella di routing dei C B
diversi nodi a regime
1
– Si mostrino i messaggi scambiati nel caso in cui il
link tra A e C cambi costo, da 4 a 1 1
– Si mostrino i messaggi scambiati nel caso in cui il D
link tra C e D si guasti (evento successivo al
cambio del costo del link A-C da 4 a 1)
– Nel caso in cui l’algoritmo implementi split-
horizon con poison-reverse, si mostrino i
messaggi scambiati nel caso in cui il link tra C e D
si guasti (evento successivo al cambio del costo
del link A-C da 4 a 1)
99
Esercizio 2 - Soluzione
da A dist next
da A dist next
A 0 A
Tabelle a B 1
2
B
B A 0 A
C
regime D 3 B
Tabelle subito
B
C
1
1
B
C
D 3 B
da B dist next
dopo il cambio di
A 1 A
B 0 B costo del link A-C da C dist next
C 1 C
A 1 A
D 2 C 1 B
B
C 0 C
da C dist next
D 1 D
A 2 B
B 1 B
C 0 C
D 1 D
da D dist next
A 3 C
B 2 C
C 1 C
D 0 D
100
Tabelle dopo
il guasto Distance Vector Tabelle dopo
ricevuti dai vicini l iterazione
da B dist da C dist
da A dist next da A dist next
Dopo un iterazione
A 1 A 1
A 0 A
0 1
A 0 A siamo gia a regime!
A B 1 B B
C 1
B
C 0
B 1 B
(le tabelle sono stabili)
C 1 C C 1 C
3 B D 2 D 1 2 C
D D
Tabelle dopo
il guasto Distance Vector Tabelle dopo Distance Vector Tabelle dopo
ricevuti dai vicini l iterazione ricevuti dai vicini l iterazione
da B dist next da A dist da C dist da B dist next da A dist da C dist da B dist next
A 1 A A 0 A 1 A 1 A A 0 A 1 A 1 A
B B 0
1
B
C
B 1 B 1 B 0
1
B
C
B 1 B 1 B 0
1
B
C
C C 1 C 0 C C 1 C 0 C
D 2 C D 2 D inf D 3 A D 3 D 3 D 4 A
da C dist next da A dist da B dist da C dist next da A dist da B dist da C dist next
C A 1 A A 0 A 1 A 1 A A 0 A 1 A 1 A
B 1 B B 1 B 0 B 1 B B 1 B 0 B 1 B
C 0 C C 1 C 1 C 0 C C 1 C 1 C 0 C
D inf - D 2 D 2 D 3 A D 3 D 3 D 4 A
poteva
scegliere
anche B
102
Distance Vector Tabelle dopo Distance Vector Tabelle dopo
ricevuti dai vicini l iterazione ricevuti dai vicini l iterazione
da B dist next da A dist da C dist da B dist next da A dist da C dist da B dist next
A 1 A A 0 A 1 A 1 A A 0 A 1 A 1 A
B B 0
1
B
C
B 1 B 1 B 0
1
B
C
B 1 B 1 B 0
1
B
C
C C 1 C 0 C C 1 C 0 C
D 4 A D 4 D 4 D 5 A D 5 D 4 D 6 A
da C dist next da A dist da B dist da C dist next da A dist da B dist da C dist next
C A 1 A A 0 A 1 A 1 A A 0 A 1 A 1 A
B 1 B B 1 B 0 B 1 B B 1 B 0 B 1 B
C 0 C C 1 C 1 C 0 C C 1 C 1 C 0 C
D 4 A D 4 D 4 D 5 A D 5 D 5 D 6 A
103
…all infinito
da B dist next da A dist da C dist da B dist next da A dist da C dist da B dist next
A 1 A A 0 A 1 A 1 A A 0 A 1 A 1 A
B B 0
1
B
C
B inf B inf B 0
1
B
C
B inf B 1 B 0
1
B
C
C C 1 C 0 C C 1 C 0 C
D 2 C D 2 D inf D 3 A D inf D inf D inf -
da C dist next da A dist da B dist da C dist next da A dist da B dist da C dist next
C A 1 A A 0 A 1 A 1 A A 0 A 1 A 1 A
B 1 B B 1 B 0 B 1 B B 1 B 0 B 1 B
C 0 C C inf C inf C 0 C C 1 C 1 C 0 C
D inf - D inf D inf D inf - D 3 D 3 D 4 A
104
Soluzione con Split Horizon (+ poison reverse)
Distance Vector Tabelle dopo
ricevuti dai vicini l iterazione
da B dist da C dist
da A dist next da A dist next
A inf A inf
A 0 A 0 1 A 0 A
A 1 B
B B
B 1 B
B
C 1 C
C
D
1
inf
C
D
0
4 C 1 C Siamo tornati al
D inf - D 5 C punto di partenza,
da B dist next da A dist da C dist da B dist next con la distanza verso
A 1 A A 1 A 1 A D uguale a 5 invece
A 0
B B 0 B B inf B inf B 0
1
B
C
che uguale a 2!
C 1 C 1 C 0 C
D inf -
C
D inf D 4 D 5 C Anche qui
l iterazione procede
da C dist next da A dist da B dist da C dist next all infinito
C A 1 A A 0 A 1 A 1 A
B 1 B B 1 B 0 B 1 B
C 0 C C inf C inf C 0 C
D 4 A D inf D inf D inf -
105
Esercizio 3
! Si consideri la rete rappresentata in figura a
lato,
LAN1 Internet
– i quattro router (RA, RB, RC e RD) sono
connessi tra loro da canali punto-punto;
– sulla rete è in funzione un protocollo di
routing di tipo Distance Vector che
implementa split-horizon con poison-reverse,
LAN2 LAN3
– La metrica utilizzata e’ il numero di hop;
– i distance-vector inviati dai router RA/B/C/D
su ciascuna delle loro interfacce sono
Router A Router B Router C Router D
Interf-1 Interf-2 Interf-1 Interf-2 Interf-3 Interf-1 Interf-2 Interf-1 Interf-2 Interf-3
# LAN 1 inf 1 2 inf 2 4 inf 3 3 inf
# LAN 2 2 inf inf 1 1 3 inf 2 2 inf
# LAN 3 4 inf 3 3 inf inf 1 2 inf 2
# Internet 3 inf 2 2 inf 2 inf inf 1 1
106
Esercizio 3 (cnt d)
! Domande:
– Si disegni la topologia del backbone.
– Si scrivano le tabelle di routing dei router RA/B/C/D.
– Si dica se in caso di guasti ad uno qualsiasi dei canali punto-punto si
possano verificare dei routing loop. Se si, se ne specifichi la natura
(permanenti, transitori, ...). Si motivi la risposta.
107
Esercizio 3: soluzione
da A dist next da D dist next
! Router A
LAN1 1 dir LAN1 3 B
– Interf.1: da A a LAN1 LAN2 2 B LAN2 2 B
– Interf.2: da A a B LAN3 4 B LAN3 2 C
Internet 3 B Internet 1 dir
! Router B
– Interf.1: da B a LAN2
– Interf.2: da B a A Internet
LAN1
– Interf.3: da B a D
A D
! Router C
– Interf.1: da C a LAN3
– Interf.2: da C a D B C
! Router D LAN2
– Interf.1: da D a Internet LAN3
– Interf.2: da D a B
– Interf.3: da D a C
da B dist next da C dist next
! In caso di guasti ai link, la rete viene
partizionata, per cui ci saranno LAN1 2 A LAN1 4 D
sicuramente dei routing loop permanenti LAN2 1 dir LAN2 3 D
LAN3 3 D
(vedi esercizio precedente) Internet 2 D
LAN3 1 dir
Internet 2 D
108
Routing: considerazioni finali
Routing gerarchico
– Autonomia amministrativa
• Internet = rete delle reti
• ciascun amministratore di rete ha il controllo del routing nella
2 propria rete
Routing gerarchico
AS interconnessi
3c
3a 2c
3b 2a
AS3 2b
1c
AS2
1a 1b
1d AS1
! Le tabelle di forwarding
sono configurate sia dagli
Intra-AS
algoritmi di routing intra-
Inter-AS
Routing
algorithm
Routing
algorithm
AS che da quelli inter-AS
– intra-AS per le destinazioni
Forwarding
table interne
– inter-AS & intra-AS per le
destinazioni esterne
4
Compiti dei protocolli inter-AS
3c
3a 2c
3b 2a
AS3 2b
1c
AS2
1a 1b
1d AS1
3c
… x
3a 2c
3b 2a
AS3 2b
1c AS2
1a 1b AS1
6 1d
Esempio: scelta tra piu’ AS
! Si supponga che AS1 sappia (attraverso un protocollo inter-AS) che la
subnet x e’ raggiungibile attraverso AS3 (gateway 1c) e attraverso AS2
(gateway 1b)
! Per configurare la tabella di routing, il router 1d dovrebbe determinare
verso quale gateway inoltrare il pacchetto destinato alla rete “x”
! Hot potato routing: inviare il pacchetto al gateway piu’ vicino
– verra’ impostata una nuova entry con destinazione “x” e next hop il router verso il
gateway piu’ vicino
3c
3a
… x
2c
3b 2a
AS3 2b
1c
AS2
1a 1b
1d AS1
7
Routing intra-AS
8
Routing inter-AS: BGP
! Scalabilita’:
– routing gerarchico riduce la dimensione delle tabelle e il traffico di
update
! Policy:
– Intra-AS: singolo dominio ammistrativo, policy uniforme
– Inter-AS: l’amministratore puo’ controllare come il traffico viene
instradato attraverso la propria rete
! Prestazioni:
– Intra-AS: puo’ essere focalizzato sulle prestazioni (cammini minimi)
– Inter-AS: le policy possono essere piu’ importanti delle prestazioni
10
Indirizzamento gerarchico: aggregazione
Send me anything
with addresses
Organization 2 beginning
200.23.20.0/23 . Fly-By-Night-ISP 200.23.16.0/20
.
. . Internet
.
Organization 7 .
200.23.30.0/23
Send me anything
ISPs-R-Us
with addresses
Organization 1 beginning 199.31.0.0/16
or 200.23.18.0/23
200.23.18.0/23
11
Reti di Calcolatori
! Credits
– Part of the material is based on slides provided by the following
authors
• Douglas Comer, Computer Networks and Internets, 5th edition,
Prentice Hall
• Behrouz A. Forouzan, Sophia Chung Fegan, “TCP/IP Protocol Suite,”
McGraw-Hill, January 2005
13
Argmenti trattati
! NAT
! IPv6
14
14
Indirizzamento privato: NAT
Indirizzi privati
! IETF ha definito alcuni range di indirizzi all interno dello spazio di
indirizzamento IP da utilizzare solamente in ambito privato
– private addresses o non-routable addresses
– ogni volta che un router pubblico riceve un pacchetto destinato ad un indirizzo
IP privato, viene segnalato un errore
16
Indirizzi privati: ambito di impiego
Indirizzamento privato
17
(IP_privA,IP_pubbB) (IP_privA,IP_pubbB)
(IP_privA,IP_pubbB)
IP_pubbB
Indirizzamento privato
18
Indirizzi privati: instradamento (2)
(IP_pubbB,IP_privA)
X IP_pubbB
Indirizzamento privato
19
Indirizzamento pubblico
20
Network Address Translation (2)
21
(S=192.168.0.221
D=198.13.14.145) (S=195.32.22.30
D=198.13.14.145)
22
Network Address Translation (5)
! NAT traduce l indirizzo IP dei datagrammi uscenti ed entranti sostituendo
– l indirzzo destinazione di ogni pacchetto entrante con l indirizzo privato
dell host corretto
(S=198.13.14.145
D= 192.168.0.221) (S=198.13.14.145
D=195.32.22.30)
23
! Il router NAT mantiene al suo interno una tabella di record con
il mapping tra indirizzo privato sorgente della comunicazione
ed indirizzo pubblico destinazione della comunicazione
192.168.0.221 198.13.14.145
24
Network Address Translation Table (2)
– Datagrammi uscenti
• i record vengono creati in modo dinamico ogni volta che un pacchetto verso
una data destinazione attraversa il NAT
• cancellati con meccanismo di timeout
25
Configurazione manuale
Vantaggi Svantaggi
Datagrammi uscenti
Vantaggi Svantaggi
26
Limitazioni
! Il NAT basato unicamente sull indirizzo non permette a differenti host
privati di connettersi contemporaneamente allo stesso host pubblico
(S=198.13.14.145
D=195.32.22.30)
192.168.0.222
?
192.168.0.221 198.13.14.145
192.168.0.222 198.13.14.145
27
192.168.0.222
Priv. Addr Priv. Port Ext. Addr Ext. Port NATport Prot. 4
28
Port mapped NAT (3)
! Datagrammi uscenti
(S=192.168.0.222,13444 (S=195.32.22.30,14002
192.168.0.222 D=198.13.14.145,80) D=198.13.14.145,80)
Priv. Addr Priv. Port Ext. Addr Ext. Port NATport Prot. 4
29
! Datagrammi entranti
(S= 198.13.14.145,80
D=195.32.22.30,14002)
(S= 198.13.14.145,80
D=192.168.0.222,13444)
192.168.0.222
Priv. Addr Priv. Port Ext. Addr Ext. Port NATport Prot. 4
30
IPv6
32
32
Le ragioni del cambiamento
33
33
35
35
Nomi e Versioni
36
36
IPv6: Caratteristiche
37
37
IPv6: Caratteristiche
38
38
IPv6: Caratteristiche
! Protocollo estensibile
– IPv6 permette alla sorgente di aggiungere informazioni addizionali al
datagramma
– Lo schema di estensione rende IPv6 piu flessibile di IPv4
• e permette di aggiungere funzionalita se necessario
39
39
41
41
! VERS ( Versione: 6)
! TRAFFIC CLASS
– specifica la classe di traffico in base al tipo di traffico
– rientra nel framework differentiated services per specificare i
requisiti che la rete dovrebbe soddisfare
– Esempi
• in caso di traffico interattivo (movimenti del mouse) " la sorgente
potrebbe specificare una classe con basso ritardo
• in caso di audio real-time " la sorgente potrebbe specificare un cammino
con un jitter basso
! PAYLOAD LENGTH
– specifica la dimensione del payload (dati trasportati dopo l header)
– in IPv4 c era un campo total length che invece includeva l header
42
42
IPv6: Formato dell header di base
! HOP LIMIT
– corrisponde al campo TIME-TO-LIVE di IPv4
! FLOW LABEL
– usato per associare un datagramma con un cammino specifico
! NEXT HEADER
– campo con un doppio significato: specifica il tipo di informazione
che segue l header corrente
– Se il datagramma include un extension header
• il campo NEXT HEADER indica il tipo di extension header
– Se non ci sono extension header
• il campo NEXT HEADER specifica il tipo di dati trasportato nel
payload 43
43
45
45
! Come in IPv4
– il prefisso in ciascun datagramma viene copiato in ciascun frammento
– la dimensione del payload viene modificato in base alla dalla Maximum
Transmission Unit (MTU) della rete da attraversare
! Diversamente da IPv4
– non esistono campi predeterminati nell header di base per la
frammentazione
– bisogna aggiungere un extension header con le informazioni sulla
frammentazione
• la presenza stessa di un extension header di tipo frammentazione indica
che si tratta di un frammento
46
46
Frammentazione, Riassemblaggio e Path MTU
! Motivazioni Economiche:
– si risparmia spazio
– un datagramma di solito usa solo un sottoinsieme limitato delle
funzionalita e quindi degli extension header
! Motivazioni di estensibilita
– e possibile definire e aggiungere un insieme ampio di funzionalita
• senza imporre che tutti gli header abbiano un campo predeterminato
– IPv4 richiede il cambio dello standard per introdurre nuove
funzionalita
– In IPv6, invece, basta aggiungere un nuovo extension header
48
48
IPv6: indirizzamento
49
49
Tipologia Scopo
L indirizzo corrisponde ad un singolo host. Un
unicast datagramma inviato a tale indirizzo viene instradato
sul cammino minimo
L indirizzo corrisponde ad un insieme di host e i
membri dell insieme possono cambiare in qualsiasi
multicast
momento. Viene consegnata una copia del
datagramma a ciascun membro dell insieme
L indirizzo corrisponde ad un insieme di host che
condividono un prefisso. Il datagramma viene
anycast
consegnato ad uno qualsiasi dei memberi dell insieme
(ad es., all host piu vicino)
50
50
IPv6: notazione esadecimale
! L indirizzo IPv6 e composto da 128 bit
– difficile da gestire su carta
! Se venisse usata la notazione decimale puntata, si otterrebbero indirizzi
del tipo:
– 105.220.136.100.255.255.255.255.0.0.18.128.140.10.255.255
! Per ridurre il numero di caratteri da scrivere per indicare un indirizzo
– e stata introdotta una notazione esadecimale
• in inglese: colon hexadecimal notation o colon hex
51
51
52
52