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
---------------------------------------------------------------------------

Reply via email to