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) \
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 1 er champ 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
Explication : grep tcp trace: slction des lignes contenant "tcp" 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
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 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 nodes set 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 }