Vous êtes sur la page 1sur 5

TP2 : PROTOCOLES DES RESEAUX MOBILES RT4: 2015-2016

TP : Simulation NS2

Objectif: créer un réseau et un trafic puis simuler utilisant NS2 le réseau créé.

Travail demandé:
I. Créez un fichier d'extension .tcl dans votre espace de travail contenant les lignes de
codes suivantes pour simuler le trafic échangé entre deux nœuds:

set ns [new Simulator]


#fichiers de trace qui seront utilisés pour visualiser les simulations
set nf [open out.nam w]
set tf [open out.tr w]
$ns namtrace-all $nf
$ns trace-all $tf

#procédure finish pour arrêter la simulation


proc finish {} {

global ns nf tf
$ns flush-trace
close $nf
close $tf
exec nam out.nam &
exit 0

}
#creation des nœuds dans ce cas deux nœuds seulement
set n0 [$ns node]
set n1 [$ns node]

#creation des liens full duplex entre n0 et n1


$ns duplex-link $n0 $n1 1Mb 10ms DropTail

#connexion udp
set udp0 [new Agent/UDP]
$ns attach-agent $n0 $udp0
#cbr sur udp ( génération de type de trafic)
set cbr0 [new Application/Traffic/CBR]
$cbr0 set packetSize_ 500
$cbr0 set interval_ 0.005
$cbr0 attach-agent $udp0
#null
set null0 [new Agent/Null]
$ns attach-agent $n1 $null0

Dr. Maher HENI Page 1


TP2 : PROTOCOLES DES RESEAUX MOBILES RT4: 2015-2016

#connexion udp <->


$ns connect $udp0 $null0

$ns at 0.5 "$cbr0 start"


$ns at 4.5 "$cbr0 stop"

$ns at 5.0 "finish"


$ns run

II. Utilisant le code initialement développer, on vous demande de développer un code


pour simuler un trafic dans un réseau de 4 nœuds avec partage de bande passante
entre UDP et TCP

On considère le scénario de la figure

1- Topologie du réseau :toutes les lignes de transmission sont des liaisons full-duplex de
1Mbps de débit de transmission, 10ms délai de propagation, et où il y a des files d’attente.
2- Agents de transport: l’agent source de la connexion entre les nœuds 2 et 1 est TCP qui peut
être défini de la manière suivante:
set tcp [new Agent/TCP].
Les paquets TCP sont de taille 500 octets.
La connexion entre les noeuds 3 et1 est de type UDP avec des tailles de paquets de 500
octets.
3- Application: L‘application FTP de TCP commence à l’instant 0s. Le générateur de trafic
CBR commence à l’instant 1s et les paquets qui sont de taille 500 octets arrivent toutes les
5ms
4- La durée de simulation est égale à 10s.

#(CBR/UDP) [3]
# \

Dr. Maher HENI Page 2


TP2 : PROTOCOLES DES RESEAUX MOBILES RT4: 2015-2016

# 0--[1]
# /
#(FTP/TCP) [2]
#

set ns [new Simulator]

#definition des couleurs pour nam


$ns color 1 Blue
$ns color 2 Red

#fichiers de trace
set nf [open out.nam w]
set tf [open out.tr w]
set wndt [open windowVsTime w]

$ns namtrace-all $nf


$ns trace-all $tf

#procedure finish
proc finish {} {
#var globales
global ns nf tf wndt tcp
$ns flush-trace
close $nf
close $tf
close $wndt

puts "TCP stats";


puts "total data bytes: [$tcp set ndatabytes_]"; #nbr bytes de donnée envoyés
puts "total data packets: [$tcp set ndatapack_]"; #nbr paquets envoyés

puts "total ack packets: [$tcp set nackpack_]"; #nbr paquets ack recus
puts "total retransmitted packets: [$tcp set nrexmitpack_]";#nbr packets retransmis

puts "Avg throughput: [expr 0.008*[$tcp set ndatabytes_]/[$ns now]] Kbps"; # débit
en kbit/s

puts "Avg goodput: [expr 0.008*([$tcp set ndatabytes_]-[$tcp set nrexmitbytes_])/[$ns


now]] Kbps"

#exec nam out.nam &


exit 0

}
#création des nœuds
set n0 [$ns node]
set n1 [$ns node]

Dr. Maher HENI Page 3


TP2 : PROTOCOLES DES RESEAUX MOBILES RT4: 2015-2016

set n2 [$ns node]


set n3 [$ns node]

#création des liens


$ns duplex-link $n0 $n1 1Mb 10ms DropTail
$ns duplex-link $n0 $n2 1Mb 10ms DropTail
$ns duplex-link $n0 $n3 1Mb 10ms DropTail

#agent udp n3
set udp [new Agent/UDP]
$ns attach-agent $n3 $udp
$udp set packetSize_ 500
$udp set fid_ 2; #rouge

#cbr sur udp


set cbr [new Application/Traffic/CBR]
$cbr set packetSize_ 500
$cbr set interval_ 0.005;
$cbr attach-agent $udp

#agent null n1
set null [new Agent/Null]
$ns attach-agent $n1 $null

#connexion udp n3->n1


$ns connect $udp $null

#agent tcp n2
set tcp [new Agent/TCP]
$ns attach-agent $n2 $tcp
$tcp set packetSize_ 500
$tcp set fid_ 1; #bleu

#ftp sur tcp


set ftp [new Application/FTP]
$ftp attach-agent $tcp

#agent tcpsink n1
set sink [new Agent/TCPSink]
$ns attach-agent $n1 $sink

#connexion tcp n2->n1


$ns connect $tcp $sink

#procédure pour alimenter le fichier windowVsTime


proc throughput {totalbytesent} {
global ns slot wndt tcp #var globales

Dr. Maher HENI Page 4


TP2 : PROTOCOLES DES RESEAUX MOBILES RT4: 2015-2016

set bytesperslot [expr 0.008 * ([$tcp set ndatabytes_]-$totalbytesent)/$slot];


#Kbits/slot

set totalbytesent [$tcp set ndatabytes_];


#ecriture dans le fichier de trace formatté
#<Timestamp> <Window> <KBits/Slot>
puts $wndt "[$ns now] [$tcp set cwnd_] $bytesperslot";
#executer la procedure throughput au slot suivant
$ns at [expr [$ns now]+$slot] "throughput $totalbytesent";
}

set slot 0.2; #définition du slot

#événements pour le trafic ftp et cbr


$ns at 0 "$ftp start"
$ns at 1 "$cbr start"
$ns at 0 "throughput 0";
#fin de la simulation apres 10 secondes
$ns at 10 "finish"
$ns run

Dr. Maher HENI Page 5