tp2 ns
-
Upload
mohamed-aymen-badri -
Category
Documents
-
view
218 -
download
0
Transcript of tp2 ns
-
8/12/2019 tp2 ns
1/12
-
8/12/2019 tp2 ns
2/12
-
8/12/2019 tp2 ns
3/12
-
8/12/2019 tp2 ns
4/12
Code :
# cration d'un simulateur
set ns [new Simulator]
# cration du fichier de trace utilis par lafficheur et indication ns de l'utiliser
set tracefd [open trace.tr w]
set namtrace [open a.nam w]
$ns trace-all $tracefd
$ns namtrace-all-wireless $namtrace 500 400
#Dfinition de la topologie
set topo [new Topography]
$topo load_flatgrid 500 400
#procedure stop
proc stop {} {
global ns tracefd nf namtrace
$ns flush-trace
close $tracefd
close $namtrace
exec nam a.nam &
exit 0
}
#Dfinition des options dun lien sans fil
set val(chan) Channel/WirelessChannel
set val(prop) Propagation/TwoRayGround
set val(netif) Phy/WirelessPhy
set val(mac) Mac/802_11
set val(ifq) Queue/DropTail/PriQueue
set val(ll) LL
set val(ant) Antenna/OmniAntenna
set val(ifqlen) 50
set val(nn) 3
set val(rp) AODV
set val(stop) 150
set val(x) 500
set val(y) 400
#creation de god
create-god $val(nn)
#Configuration des noeuds
set chann [new $val(chan)]
$ns node-config -adhocRouting $val(rp) \
-
8/12/2019 tp2 ns
5/12
$ns node-config -llType $val(ll) \
$ns node-config -macType $val(mac) \
$ns node-config \
-ifqType $val(ifq) \
$ns node-config \$ns node-config -ifqLen $val(ifqlen) \
$ns node-config -antType $val(ant) \
$ns node-config -propType $val(prop) \
$ns node-config -phyType $val(netif) \
$ns node-config -channel $chann
$ns node-config -topoInstance $topo \
$ns node-config -agentTrace ON \
$ns node-config -routerTrace ON \
$ns node-config -macTrace ON \
$ns node-config -movementTrace OFF
#creation des noeuds
for {set i 0} {$i < $val(nn) } {incr i} {
set node($i) [$ns node ]
$node($i) random-motion 0 ;
}
#positionnement des noeuds
$node(0) set X_ 5.0$node(0) set Y_ 5.0
$node(0) set Z_ 0.0
$node(1) set X_ 490.0
$node(1) set Y_ 285.0
$node(1) set Z_ 0.0
$node(2) set X_ 150.0
$node(2) set Y_ 240.0
$node(2) set Z_ 0.0
$ns at 10.0 "$node(0) setdest 250.0 250.0 3.0"
$ns at 20.0 "$node(1) setdest 45.0 285.0 5.0"
$ns at 10.0 "$node(2) setdest 480.0 300.0 2.0"
#creation des agents TCP et FTP
set tcp0 [new Agent/TCP]
set tcp1 [new Agent/TCPSink]
$ns attach-agent $node(0) $tcp0
$ns attach-agent $node(1) $tcp1
$ns connect $tcp0 $tcp1
-
8/12/2019 tp2 ns
6/12
set ftp [new Application/FTP]
$ftp attach-agent $tcp0
#Simulation
$ns at 10.0 "$ftp start"$ns at 150.0 "stop"
$ns run
Exemple de fichier de trace :
-Le 1erchamp s : send ou r :recieve
-Le 2eme champ correspond linstant dmission ou de rception
-Le 3eme champ au numro du nud
-Le 4eme champ au niveau du paquet : AGT, MAC, RTR..
-Le 5eme : au numro de squence du paquet
-Le 6eme : au protocole
-Le 7eme : la taille du paquet
Question n2 :
a)
tracage de debit moyen en fonction de temps du simulation :
#!/bin/bash
grep tcp trace.tr | grep MAC > fichier1
grep "^s" fichier1 | grep _0_ | cut -d" "fichier1,2,7,9 | head -n 6612 > fichier2
grep "^r" fichier1 | grep _1_ | cut -d" " -fichier1,2,7,9 > fichier3
join -13 -23 fichier2 fichier3 | cut -d" " -fichier1,3,6,7 | awk '{print echo ($3-$2),$4,$3}' |
awk '{print echo ($2/$1),$3}' > valeurs
Explication :
grep tcp trace: slction des lignes contenant "tcp"
-
8/12/2019 tp2 ns
7/12
grep MAC : slction des lignes contenant "MAC"
> fichier1:mise des lignes selectionnes dans le fichier fichier1
2eme commande:
grep "^s" fichier1| grep _0_ : On slcitonne les lignes de f1 contenant "s" et "_0_"
| cut -d" "fichier1,2,7,9 | : on extrait les champs suivants: s temps_emission num_sequence taille
head -n 6612 > fichier2 : , puis on garde les 6612 premires lignes pour avoir le
meme nombre de ligne que le dossier fichier3
tracacge :
gnuplot
>plot valeurs using 2 :1 with lines
b) la probabilit de perte = nombre de paquets perdus / nombre total de paquets
nombre de paquets perdus = taille totale des paquets perdus/ taille totale des paquets emis
-
8/12/2019 tp2 ns
8/12
grep "^D" trace.tr > traced.tr
grep tcp traced.tr > tracedd.tr
On execute ce script:
#! /bin/bash
somme=0;
while IFS=" " read a b c d e f g h i j
do
let somme=$somme+$h;
echo -e "$somme";
done < tracedd.tr
Explications:
Ona un dbit important puis il diminue
Pour TCP, lorsque un paquet est perdu, le mcanisme de contrle de congestion est initi,qui
diminue la vitesse denvoi des paquets.
Question n4:
set ns [new Simulator]
#number of nodes
set num_wired_nodes 2
set num_mobile_nodes 7
set num_bs_nodes 1 ;# number of base stations
set num_nodes [expr $num_wired_nodes + $num_mobile_nodes + $num_bs_nodes]
set bs_id $num_wired_nodes
# Parameter for wireless nodes
set opt(chan) Channel/WirelessChannel ;# channel type
set opt(prop) Propagation/TwoRayGround ;# radio-propagation model
set opt(netif) Phy/WirelessPhy ;# network interface type
set opt(mac) Mac/802_11e ;# MAC type
set opt(ifq) Queue/DTail/PriQ ;# interface queue type
set opt(ifqlen) 50
set opt(ll) LL ;# link layer type
set opt(ant) Antenna/OmniAntenna ;# antenna model
set opt(ifqlen) 50 ;# max packet in ifq
set opt(adhocRouting) NOAH ;# routing protocol
-
8/12/2019 tp2 ns
9/12
set opt(x) 670 ;# X dimension of the topography
set opt(y) 670 ;# Y dimension of the topography
set opt(seed) 0.0 ;# seed for random number gen.
set opt(stop) 250 ;# time to stop simulation
#set up for hierarchical routing#(needed for routing over a basestation)
$ns node-config -addressType hierarchical
AddrParams set domain_num_ 2 ;# domain number
lappend cluster_num 2 2 ;# cluster number for each domain
AddrParams set cluster_num_ $cluster_num
lappend eilastlevel 1 1 4 4;# number of nodes for each cluster
AddrParams set nodes_num_ $eilastlevel
#Open the nam trace file
set nf [open out.nam w]
$ns namtrace-all-wireless $nf $opt(x) $opt(y)set ntr [open out.tr w]
$ns trace-all $ntr
set chan [new $opt(chan)]
set topo [new Topography]
$topo load_flatgrid $opt(x) $opt(y)
# Create God
create-god [expr $num_mobile_nodes + $num_bs_nodes]
# creating wired nodesset temp {0.0.0 0.1.0} ;# hierarchical addresses to be used
for {set i 0} {$i < $num_wired_nodes} {incr i} {
set W($i) [$ns node [lindex $temp $i]]
puts "wired node $i created"
$W($i) set X_ [expr $i * 200 + 10]
$W($i) set Y_ [expr $i * 100 + 10]
$W($i) set Z_ 0.0
}
# creating base station
#$ns node-config -adhocRouting $opt(adhocRouting) \
$ns node-config -adhocRouting DSDV \
$ns node-config -llType $opt(ll) \
-macType $opt(mac) \
-ifqType $opt(ifq) \
-ifqLen $opt(ifqlen) \
-antType $opt(ant) \
-
8/12/2019 tp2 ns
10/12
-propType $opt(prop) \
-phyType $opt(netif) \
-channel $chan \
-topoInstance $topo \
-wiredRouting ON \
-agentTrace ON \-routerTrace ON \
-macTrace ON \
set temp {1.0.0 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 1.1.2 1.1.3} ;# hier address to be used for
;# wireless domain -movementTrace OFF
set BS(0) [$ns node 1.0.0]
#$BS(0) random-motion 0 ;# disable random motion
puts "Base-Station node $bs_id created"#provide some co-ord (fixed) to base station node
$BS(0) set X_ 500.0
$BS(0) set Y_ 150.0
$BS(0) set Z_ 0.0
# creating mobile nodes
$ns node-config -wiredRouting OFF
for {set i 0} {$i < $num_mobile_nodes} {incr i} {
set wl_node_($i) [$ns node [lindex $temp [expr $i+1]] ]
#$wl_node_($i) random-motion 0 ;# disable random motion
puts "wireless node $i created ..."
#$wl_node_($i) base-station [AddrParams addr2id [$BS(0) node-addr]]
$wl_node_($i) set X_ [expr $i * 100 + 75]
$wl_node_($i) set Y_ [expr $i * 150 + 80]
$wl_node_($i) set Z_ 0.0
}
#create links between wired and BS nodes
$ns duplex-link $W(0) $BS(0) 5Mb 2ms DropTail
$ns duplex-link $W(1) $BS(0) 5Mb 2ms DropTail
$ns duplex-link-op $W(0) $BS(0) orient down
-
8/12/2019 tp2 ns
11/12
$ns duplex-link-op $W(1) $BS(0) orient left-down
set tcp1 [new Agent/TCP]
$tcp1 set class_ 2set sink1 [new Agent/TCPSink]
$ns attach-agent $wl_node_(0) $tcp1
$ns attach-agent $W(0) $sink1
$ns connect $tcp1 $sink1
set ftp1 [new Application/FTP]
$ftp1 attach-agent $tcp1
$ns at 170.0 "$ftp1 start"
set tcp2 [new Agent/TCP]
$tcp2 set class_ 2set sink2 [new Agent/TCPSink]
$ns attach-agent $W(1) $tcp2
$ns attach-agent $wl_node_(2) $sink2
$ns connect $tcp2 $sink2
set ftp2 [new Application/FTP]
$ftp2 attach-agent $tcp2
$ns at 170.0 "$ftp2 start"
# Define node initial position in nam
for {set i 0} {$i < $num_mobile_nodes} {incr i} {$ns initial_node_pos $wl_node_($i) 20
}
#Tell nodes when the simulation ends
for {set i 0} {$i < $num_mobile_nodes } {incr i} {
$ns at 10.0 "$wl_node_($i) reset";
}
$ns at $opt(stop).0 "$BS(0) reset";
$ns at $opt(stop).0002 "puts \"NS EXITING...\" ; $ns halt"
$ns at $opt(stop).0001 "stop"
proc stop {} {
global ns ntr nf
$ns flush-trace
close $ntr
close $nf
exec nam out.nam &
exit 0
-
8/12/2019 tp2 ns
12/12
}
$ns run