Académique Documents
Professionnel Documents
Culture Documents
Routing dinamico in NS
-4-
Reti di Telecomunicazioni II
1
Routing
■ L’instradamento è alla base della funzionalità di rete
implementata dalle entità di livello 3 (OSI) dei nodi
■ consente a due nodi A e B, non collegati direttamente, di
comunicare tra loro mediante la collaborazione di altri nodi
posti su un cammino nella rete che connette A e B
Routing dinamico in NS 2
Routing
■ La politica di routing è quella che definisce i
criteri di scelta del cammino nella rete per i
pacchetti che viaggiano tra un nodo di ingresso
ed uno di uscita
■ e dunque quella che costruisce le tabelle di
routing che vengono usate dai nodi per
effettuare il forwarding
■ il tipo di rete (datagram, circuito virtuale)
determina il tipo di tabelle da utilizzare e i
gradi di libertà della politica di routing nella
scelta dei cammini
Routing dinamico in NS 3
Routing sui cammini minimi
■ Il routing sui cammini minimi è molto semplice ed è
spesso usato nelle reti datagram (IP)
■ Si definisce un peso per ogni link
■ Si calcola il cammino minimo verso la destinazione
■ Proprietà
■ i sottocammini di cammini minimi sono anch’essi
minimi
B
A
Routing dinamico in NS 4
Routing sui cammini minimi
■ Conseguenza:
■ Nelle tabelle di routing basta memorizzare il prossimo
B
A
Routing dinamico in NS 5
Routing nelle reti IP
■ Il principio su cui si basa il routing IP è molto semplice
■ inviare i pacchetti sul cammino minimo verso la
destinazione
■ la metrica su cui si calcolano i cammini minimi è
generale
■ il calcolo avviene in modo distribuito dai router
Routing dinamico in NS 6
Studio del routing con NS
■ Essendo orientato alle reti IP, NS usa un routing basato
sui cammini minimi
■ Se non viene espressamente indicato, NS precalcola i
cammini minimi mediante un modulo che usa
l’algoritmo di Dijkstra (Static)
$ns
$ns rtproto
rtproto Static
Static
$ns
$ns rtproto
rtproto DV
DV
$ns
$ns rtproto
rtproto LS
LS
Routing dinamico in NS 8
Esempio 1
■ Si consideri la rete in figura
2 4
1 6
3 5
tutti i link:
C=10 Mb/s
τ=20 ms
Routing dinamico in NS 9
Esempio 1
■ si attacchino 3 agenti UDP al nodo 1
■ packet size 5000 bytes
esempio1routing.tcl 10
Routing dinamico in NS
Esempio 2
■ Si modifichino i pesi dei link nel seguente modo:
2 4 1
1
1 0.1 6
0.1
0.1
1 1
1 5
3
esempio2routing.tcl 11
Routing dinamico in NS
Esempio 3
■ Si utilizza la stessa rete dell’esempio 2
■ si attiva un protocollo di routing di tipo Distance Vector
■ al tempo 0.3s si manda “down” il link 3-4
2 4 1
1
1 0.1 6
0.1
0.1
1 1
1 5
3
esempio3routing.tcl 12
Routing dinamico in NS
Esempio 4
S ■ Topologia:
ad anello.
■ Protocollo di
routing:
Distance
Vector
■ Trasmissione
pacchetti:
0 3
esempio4routing.tcl
Routing dinamico in NS D 13
Creazione Topologia
■ Creiamo i nodi da 0 a 6 sfruttando gli array:
for
for {set
{set ii 0}
0} {$i
{$i << 7}
7} {incr
{incr i}
i} {{
set
set n($i)
n($i) [$ns
[$ns node]
node]
}}
■ E li connettiamo fra loro con link full-duplex di capacità
pari a 1Mb/s e ritardo 10ms:
for
for {set
{set ii 0}
0} {$i
{$i << 7}
7} {incr
{incr i}
i} {{
$ns
$ns duplex-link
duplex-link $n($i)
$n($i) $n([expr
$n([expr ($i+1)%7])
($i+1)%7])
1Mb
1Mb 10ms
10ms DropTail
DropTail
}}
Routing dinamico in NS 14
Creazione Traffico
#Creo
#Creo un
un agente
agente UDP
UDP ee lo
lo attacco
attacco al
al nodo
nodo n(0)
n(0)
set
set udp0
udp0 [new
[new Agent/UDP]
Agent/UDP]
$ns
$ns attach-agent
attach-agent $n(0)
$n(0) $udp0
$udp0
#Creo
#Creo un
un traffico
traffico CBR
CBR ee lo
lo attacco
attacco aa udp0
udp0
set
set cbr0
cbr0 [new
[new Application/Traffic/CBR]
Application/Traffic/CBR]
$cbr0
$cbr0 set
set packetSize_
packetSize_ 500
500
$cbr0
$cbr0 set
set interval_
interval_ 0.005
0.005
$cbr0
$cbr0 attach-agent
attach-agent $udp0
$udp0
set
set null0
null0 [new
[new Agent/Null]
Agent/Null]
$ns
$ns attach-agent
attach-agent $n(3)
$n(3) $null0
$null0
$ns
$ns connect
connect $udp0
$udp0 $null0
$null0
$ns
$ns at
at 0.5
0.5 "$cbr0
"$cbr0 start"
start"
$ns
$ns at
at 4.5
4.5 "$cbr0
"$cbr0 stop"
stop"
Routing dinamico in NS 15
Inserimento dinamica dei link
■ Aggiungendo le seguenti righe di codice...
$ns
$ns rtmodel-at
rtmodel-at 1.0
1.0 down
down $n(1)
$n(1) $n(2)
$n(2)
$ns
$ns rtmodel-at
rtmodel-at 2.0
2.0 up
up $n(1)
$n(1) $n(2)
$n(2)
Routing dinamico in NS 16
Tecniche di reinstradamento :
■ Basta aggiungere la seguente riga di codice
immediatamente dopo aver creato l’oggetto
simulatore:
set
set ns
ns [new
[new Simulator]
Simulator]
$ns
$ns rtproto
rtproto DV
DV