Hello,
I am doing a simulation performance of TCP Handover in a Mobile WiMAX
/ Mobile WiMAX,
I run but I can not find significant results when I use the file AWK
to extract the flow variation and packet loss that I find the result
file containing only zero if the tcp sink is atached to the mibile
node.
by cons that I realize a communication between the Sink node and base
stations have had significant results which means that there is a
problem communicating between the mobile node and the base station or
the configuration of mobile node i tried to search for meaning is
correct but I still can not find a solution
thank you kindly help me.
# Topology scenario:
#
#
# |-----|
# | MN0 | ; 1.0.1
# |-----|
#
#
# (^) (^)
# | |
# |--------------| |--------------|
# | Base Station | ; 1.0.0 | Base Station |
# |--------------| |--------------|
# | |
# | |
# |-----------| |
# | Sink node |---------------------|
# |-----------| ; 0.0.0
#
#Vérification de paramètres d'entrée
if {$argc < 4} {
puts ""
puts "Wrong Number of Arguments! No arguments in this topology"
puts "ns handover2.tcl seed scan_iteration going_down other_nodes"
puts ""
exit 1
}
#Lecture des arguments
set seed [lindex $argv 0]
#nombre servant de pas (saut ) pour générer un nombre aléatoire
Mac/802_16 set scan_iteration_ [lindex $argv 1]
#Le nombre de fois que la station ou le noeud mobile fait un scan
#( recherche de la station mobile ou des noeuds mobiles )
set use_going_down [lindex $argv 2]
#Variable créé juste pour activiier l'option going down: informe le
noeud mobile que le signal
#commence à se dégrade et qu'il est entrain de quitée la zonée de la
portée.Cela permet pour anticiper le handover
set other_node [lindex $argv 3]
#le nombre de noeud
set vitesse [lindex $argv 4]
#le nombre de noeud
######################################################################################
#test sur la variable informant du dégradation du signal
if {$use_going_down == 1} {
Mac/802_16 set lgd_factor_ 1.1
} else {
Mac/802_16 set lgd_factor_ 1.0
}
#################################################################################################################
#Configuration de la couche Mac et l'agent wimax
Mac/802_16 set scan_duration_ 50 ;# durée (en images) de
l'intervalle de balayage
Mac/802_16 set interleaving_interval_ 40 ;# durée de l'entrelacement intervalle
Agent/WimaxCtrl set adv_interval_ 1.0 ;#intervalle entre les
échanges d'informations entre les contrôleurs WiMAX
Agent/WimaxCtrl set default_association_level_ 0 ;#niveau
d'association gérée par le contrôleur WiMAX
Agent/WimaxCtrl set synch_frame_delay_ 0.5 ;#délai utilisé pour
synchroniser avec les voisins avant d'envoyer un
#scan réponse à MS
Agent/WimaxCtrl set debug_ 1 ;# Afficher des informations sur le
contrôleur wimax utiliser pour gérer le balayage
set simulation_time 300 ;#30 temps attribué à la simulation
set nb_mn 5 ;# nombre de noeuds mobile
Mac/802_16 set dcd_interval_ 5 ;# intervalle entre la
diffusion de messages DCD (max 10s)
Mac/802_16 set ucd_interval_ 5 ;# intervalle entre la
diffusion de messages UCD (max 10s)
set default_modulation OFDM_16QAM_3_4 ;#OFDM_BPSK_1_2
Modulation par Défaut
set contention_size 5 ;#for initial ranging and bw
#nombre de demandes pc
occasions (déprécié par code CDMA )
Mac/802_16 set t21_timeout_ 0.02 ;#max 10s, attendre timeout
DL_MAP. Remplacer par 20ms
#pour émuler préambule de
numérisation sur le canal
Mac/802_16 set client_timeout_ 50 ;#valeur de délai pour la
détection des clients
########################################################################################################
#random utiliser dans le mouvement des noeuds mobiles
set move [new RandomVariable/Uniform]
$move set min_ 0
$move set max_ 10
##########################################################
# Définition de variables globales
set packet_size 2500 ;# packet size in bytes at CBR applications
set gap_size 0.01 ;#compute gap size between packets
set output_dir .
set traffic_start 5
set traffic_stop 15
set simulation_stop 60
set simulation_stop $simulation_time
set use_voice 0
set use_video 1
########################################################################################################
#définir les valeurs de débogage
Agent/ND set debug_ 1
Agent/MIH set debug_ 1
Agent/MIHUser/IFMNGMT/MIPV6/Handover/Handover1 set debug_ 1
#Handover
Agent/MIHUser/IFMNGMT/MIPV6/Handover/Handover1 set case_ 3
Agent/MIHUser/IFMNGMT/MIPV6 set debug_ 1
#Mac/802_16 set debug_
Mac/802_16 set debug_ 1
Mac/802_16 set t21_timeout_ 20 ;#max 10s
#########################################################################################################
#Définir la zone de couverture de la station de base: 20m coverage
Phy/WirelessPhy set Pt_ 0.025
Phy/WirelessPhy set RXThresh_ 6.12277e-09
Phy/WirelessPhy set CSThresh_ [expr 0.9 *[Phy/WirelessPhy set RXThresh_]]
########################################################################################################
# Nous commençons notre script handover-wireless.tcl avec les
différents paramètres suivants
# ======================================================================
# Define options for wireless nodes
# ======================================================================
set opt(chan) Channel/WirelessChannel ;# channel type
set opt(prop) Propagation/TwoRayGround ;# radio-propagation model
set opt(netif) Phy/WirelessPhy/OFDM ;# network interface type
set opt(mac) Mac/802_16 ;# MAC type
set opt(ifq) Queue/DropTail/PriQueue ;# interface queue type
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) DSDV ;# routing protocol
set opt(x) 670 ;# X dimension of the topography
set opt(y) 670 ;# Y dimension of the topography
#########################################################################################################
#Procedure de terminaison de la simulation
proc finish {} {
global ns tf output_dir nb_mn
$ns flush-trace
close $tf
exit 0
}
######################################################################################################
#On crée ensuite une instance du simulateur
set ns [new Simulator]
$ns use-newtrace
##############################################
#Ensuite on crée un objet topology
set topo [new Topography]
#Les limites de l'environement avec les coordonnées $val(x) et $val(y)
$topo load_flatgrid $opt(x) $opt(y)
##############################################
#Le fichier de trace
set tf [open $output_dir/out.res w]
$ns trace-all $tf
set f0 [open trac.txt w]
##############################################
#Configuration du fichier de sorite
set nf [open out.nam w]
#$ns namtrace-all $nf
$ns namtrace-all-wireless $nf $opt(x) $opt(y)
##############################################
# set up for hierarchical routing (needed for routing over a basestation)
$ns node-config -addressType hierarchical
AddrParams set domain_num_ 3 ;# domain number
lappend cluster_num 1 1 1 ;# cluster number for
each domain
AddrParams set cluster_num_ $cluster_num
lappend eilastlevel 2 [expr ($nb_mn+2)] [expr ($nb_mn+2)];# number of
nodes for each cluster
#(1 for sink
and one for mobile nodes + base station
#lappend eilastlevel 1 2 2 ;# number of nodes for each cluster
AddrParams set nodes_num_ $eilastlevel
puts "Configuration of hierarchical addressing done"
##############################################
#Ensuite il faut créer un objet God (General Operations Director).
#Il s’agit d’un objet utilisé pour stocker les informations globales à
propos de l’environnement.
#create-god 3
create-god [expr ($nb_mn + 2)] ;# nb_mn + 2 (base station and sink node)
##############################################
#creates the sink node in first addressing space.
set sinkNode [$ns node 0.0.0]
puts "sink node created"
# Interface manager in sink node
$sinkNode install-default-ifmanager
##############################################
# création du routeur
set router [$ns node 0.0.1]
puts "router created"
##############################################
#créer une voie (canal) commune
set channel [new $opt(chan)]
#Ensuite il faut créer et configurer les noeuds. Il s’agira de définir
le type d’adressage,
#le type de protocole de routage ad-hoc, Link Layer, MAC layer, IfQ,
etc. L’API est la suivante:
$ns node-config -adhocRouting $opt(adhocRouting) \
-llType $opt(ll) \
-macType $opt(mac) \
-ifqType $opt(ifq) \
-ifqLen $opt(ifqlen) \
-antType $opt(ant) \
-propType $opt(prop) \
-phyType $opt(netif) \
-channel $channel \
-topoInstance $topo \
-wiredRouting ON \
-agentTrace ON \
-routerTrace ON \
-macTrace ON \
-movementTrace OFF
##############################################
#Configuration des stations de base
puts "Configuration of base station1"
Mac/802_16 set debug_ 1
set bstation [$ns node 1.0.0]
$bstation label "bs1"
$bstation random-motion 0
#provide some co-ord (fixed) to base station node
$bstation set X_ 50.0
$bstation set Y_ 50.0
$bstation set Z_ 0.0
#Le classifier
#Le classifier démultiplexe les paquets,modélise la fonction de
relayage (forwarding)
#retrouver une référence à un autre objet de la simulation à partir
d'une comparaison sur un critère
#dont la valeur est contenue dans le paquet
set clas [new SDUClassifier/Dest]
[$bstation set mac_(0)] add-classifier $clas
#scheduler ou L'ordonnanceur#
# L'ordonnanceur a en charge de choisir l'événement le plus proche en
terme de temps,
#d'exécuter les traitements, de faire progresser le temps simulé et
d'avancer à l'événement suivant etc.
#set the scheduler for the node.
set bs_sched [new WimaxScheduler/BS]
$bs_sched set-default-modulation $default_modulation
$bs_sched set-contention-size 5
[$bstation set mac_(0)] set-scheduler $bs_sched
[$bstation set mac_(0)] set-channel 0
set wimaxctrl [new Agent/WimaxCtrl]
$wimaxctrl set-mac [$bstation set mac_(0)]
$ns attach-agent $bstation $wimaxctrl
puts "Base Station 1 created"
###################################################
set bstation2 [$ns node 2.0.0]
$bstation label "bs2"
$bstation2 random-motion 0
#provide some co-ord (fixed) to base station node
$bstation2 set X_ 65.0
$bstation2 set Y_ 50.0
$bstation2 set Z_ 0.0
#Le classifier#
set clas2 [new SDUClassifier/Dest]
[$bstation2 set mac_(0)] add-classifier $clas2
#scheduler ou L'ordonnanceur#
#set the scheduler for the node.
set bs_sched2 [new WimaxScheduler/BS]
$bs_sched2 set-default-modulation $default_modulation
[$bstation2 set mac_(0)] set-scheduler $bs_sched2
[$bstation2 set mac_(0)] set-channel 1
set wimaxctrl2 [new Agent/WimaxCtrl]
$wimaxctrl2 set-mac [$bstation2 set mac_(0)]
$ns attach-agent $bstation2 $wimaxctrl2
puts "Base Station 2 created"
##################################################
#Add neighbor information to the BSs
$wimaxctrl add-neighbor [$bstation2 set mac_(0)] $bstation2
$wimaxctrl2 add-neighbor [$bstation set mac_(0)] $bstation
################################################################################################
# creation of the mobile nodes
$ns node-config -wiredRouting OFF \
-macTrace ON ;# Mobile nodes cannot do routing.
#creation d'un noeud dans chaque cellule pour l'initialiser
# initialisation de la 1ère cellule#
if {$other_node == 1} {
Mac/802_16 set debug_ 1
set m_node_(0) [$ns node 1.0.1] ;# create the node with given @.
$wl_node_(0) random-motion 0 ;# disable random motion
$wl_node_(0) base-station [AddrParams addr2id [$bstation node-addr]]
;#attach mn to basestation
$wl_node_(0) set X_ [expr 45.0]
$wl_node_(0) set Y_ 50.0
$wl_node_(0) set Z_ 0.0
set clas [new SDUClassifier/Dest]
[$wl_node_(0) set mac_(0)] add-classifier $clas
#set the scheduler for the node. Must be changed to -shed [new $opt(sched)]
set ss_sched [new WimaxScheduler/SS]
[$wl_node_(0) set mac_(0)] set-scheduler $ss_sched
[$wl_node_(0) set mac_(0)] set-channel 0
set nd_mn [$wl_node_(0) install-nd]
# initialisation de la 2ème cellule#
Mac/802_16 set debug_ 1
set m_node_(1) [$ns node 2.0.1] ;# create the node with given @.
$wl_node_(1) random-motion 0 ;# disable random motion
$wl_node_(1) base-station [AddrParams addr2id [$bstation2 node-addr]]
;#attach mn to basestation
$wl_node_(1) set X_ [expr 75.0]
$wl_node_(1) set Y_ 50.0
$wl_node_(1) set Z_ 0.0
set clas [new SDUClassifier/Dest]
[$wl_node_(1) set mac_(0)] add-classifier $clas
#set the scheduler for the node. Must be changed to -shed [new $opt(sched)]
set ss_sched [new WimaxScheduler/SS]
[$wl_node_(1) set mac_(0)] set-scheduler $ss_sched
[$wl_node_(1) set mac_(0)] set-channel 2
set nd_mn [$wl_node_(1) install-nd]
puts "wireless node created ..." ;# debug info
}
#################################################
##########################################################################################
#Boucle pour la création des noeuds avec leurs adresses
puts "coco $nb_mn "
Mac/802_16 set debug_ 1
for {set i 0} {$i < $nb_mn} {incr i} {
set wl_node_($i) [$ns node 1.0.[expr $i + 2]]
;# create the node with given @.
$wl_node_($i) random-motion 0 ;#
disable random motion
$wl_node_($i) base-station [AddrParams addr2id
[$bstation node-addr]] ;#attach mn to basestation
#compute position of the nod
puts "coco $wl_node_($i)"
#if {$i == 0} {
set tmp [$move value]
for {set j 0} {$j < $seed} {incr j} {
set tmp [$move value]
}
#puts "start at $tmp"
# $wl_node_($i) set
X_ [expr 1900.0]
$wl_node_($i)
label "first node"
#$ns at $tmp
"$wl_node_($i) setdest 95.0 50.0 $vitesse" ;#100 to get out of cell 2
# } else {
$wl_node_($i) set X_ [expr
45.0 + [expr ($i)*10]]
$wl_node_($i) label "node"
# }
$wl_node_($i) set Y_ 50.0
$wl_node_($i) set Z_ 0.0
puts "wireless node $i
created ..." ;# debug info
$ns at 2 "$wl_node_($i)
setdest [expr 95.0 + (($i)*10)] 50.0 $vitesse " ;#100 to get out of
cell 2
#puts "coool ==>[expr (($i)*100)]"
set clas [new SDUClassifier/Dest]
[$wl_node_($i) set mac_(0)]
add-classifier $clas
#set the scheduler for the
node. Must be changed to -shed [new $opt(sched)]
set ss_sched [new WimaxScheduler/SS]
[$wl_node_($i) set mac_(0)]
set-scheduler $ss_sched
[$wl_node_($i) set mac_(0)]
set-channel 0
if {$i == 0} {
#$ns at $scan_time
"$ss_sched send-scan"
}
## L'ajout du module de handover et l'interface manager#
set nd_mn [$wl_node_($i) install-nd]
# install interface manager
into multi-interface node and CN """L’ajout du module de handover"""
set handover [new
Agent/MIHUser/IFMNGMT/MIPV6/Handover/Handover1]
$nd_mn set-ifmanager $handover
$wl_node_($i)
install-ifmanager $handover
#$nd_mn set-ifmanager $handover
# install MIH in mobile node
set mih [$wl_node_($i) install-mih]
set nd_mn [$wl_node_($i) install-nd]
$handover connect-mih $mih
;#create connection between MIH and iface management
set tmp2 [$wl_node_($i) set mac_(0)]
$handover nd_mac $nd_mn $tmp2
;#to know how to send RS
$tmp2 mih $mih
$mih add-mac $tmp2
}
#############################################################################################
#=====================================================================
#Configuration du traffic
# ======================================================================
# ######################### création d'une connexion TCP
####################################
# un agent TCP standard :
global ns sinkNode
#Setup a TCP connection
set tcp [new Agent/TCP]
$ns attach-agent $sinkNode $tcp
set tcpsink [new Agent/TCPSink]
$ns attach-agent $bstation $tcpsink
#Ensuite la connexion logicielle entre les 2 agents est établie.
$ns connect $tcp $tcpsink
#$tcp set fid_ $fid
$tcp set packetSize_ 1000
#setup a FTP over TCP connection
set ftp [new Application/FTP]
#Ceci permet d associer la couche transport et l application ftp
$ftp attach-agent $tcp
$ftp set type_ FTP
$ftp set packetSize_ 1000
#
##############################################################################################
#########################################################
puts "cool"
$handover add-flow $tcpsink $tcp $bstation 1 20.
#$handover add-flow $tcpsink $tcp $wl_node_(3) 1 20.
#$handover add-flow $tcpsink $tcp $wl_node_(2) 1 20.
#########################################################
#
#####################################################################################################
#Création des liens entre le sink node et les deux
station de base#
# create the link between sink node and base station
$ns duplex-link $sinkNode $router 100Mb 80ms DropTail
$ns duplex-link-op $sinkNode $router orient down
$ns duplex-link $router $bstation 100Mb 65ms DropTail
$ns duplex-link-op $router $bstation orient left-down
$ns duplex-link $router $bstation2 100Mb 65ms DropTail
$ns duplex-link-op $router $bstation2 orient right-down
######################################################################################################
#Configuration des BS 802.16
# ND in wireless lan
set nd_bs [$bstation install-nd]
$nd_bs set-router TRUE
$nd_bs router-lifetime 1800
$ns at 1 "$nd_bs start-ra"
set nd_bs [$bstation2 install-nd]
$nd_bs set-router TRUE
$nd_bs router-lifetime 1800
$ns at 1 "$nd_bs start-ra"
#####################################################################################################
# installation du MIH dans chaque BS
set mih [$bstation install-mih]
set tmp_bs [$bstation set mac_(0)]
$tmp_bs mih $mih
$mih add-mac $tmp_bs
set mih [$bstation2 install-mih]
set tmp_bs [$bstation2 set mac_(0)]
$tmp_bs mih $mih
$mih add-mac $tmp_bs
#######################################################################################################
##########################################################################################################
# Traffic scenario: here the all start talking at the same time
#for {set i 0} {4 < $nb_mn} {incr i} {
$ns at $traffic_start "$ftp start"
$ns at $traffic_stop "$ftp stop"
#}
############### ## ###############
#uts $f0 "$now $lost [expr $bytes * 0.08] $npkts [$tcpsink set
lastPktTime_] [$tcpsink set expected_]"
#ns at [expr $now+$time] "traceloss"
$ns at $simulation_stop "finish"
puts "Running simulation for $nb_mn mobile nodes..."
$ns run
puts "Simulation done."
--
cordialement
-------------------------------------------------------------------------
BADDI YOUSSEF
Master de Recherche en Génie Informatique
ENSIAS, RABAT
Tel: +212 672 43 54 15
---------------------------------------------------------------------------