⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 l2handover.tcl

📁 Ns2下Wimax的代码
💻 TCL
字号:
# Script showing a layer 2 handover in 802.16# @author rouil# Scenario: Communication between MN and Sink Node with MN attached to BS.# Notes:- In order to perform layer 2 handover, the BSs must share the same channel#       - Additional mechanisms are required in order to continue a communication after a layer 2 handover#         This is achieved by updating the MN address to simulate layer 3 handovers and traffic redirection.#         We will provide the code as part of our implementation of IEEE 802.21.## @version 1.1 12-26-06 : added support for handover on link going down## Topology scenario:###	        |-----|          #	        | MN0 |                 ; 1.0.1 #	        |-----|        ###		  (^)                         (^)#		   |                           |#	    |--------------|            |--------------|#           | Base Station | ; 1.0.0    | Base Station |#           |--------------|            |--------------|#	    	   |                           |#	    	   |                           |#	     |-----------|                     |#            | Sink node |---------------------| 		#            |-----------|  ; 0.0.0### Explanations of scenario/information to follow the code:# 1- Upon link going down (i.e power level decreased and crossed a# threshold), the MS sends a scan request to its serving BS # 2- when the WimaxCtrlAgent located in the BS receives the scan# request, it needs to respond to the SS. In case of no association or# association without coordination, the BS handles the request locally# and can respond right away. When there is coordination with other# neighboring BSs, it cannot do that since it has to consult these# BSs. That's why the code is commented in case 2, but you will see# that it is sending synchronization request to the neighbor BSs. Case# 3 as not been implemented.# 3- When the MS receives the response, there is a delay as defined in the# standard (note that the scanning does not start but it is set to# PENDING). Also it checks for Association with coordination. If there# is coordination, there are rendez-vous time that were defined by the# serving BS (in the WimaxCtrlAgent) and we need to schedule timers so# that we switch to the right channel at the right time.  # After few frames the scanning will start then a serie of# start/pause/resume/stop scanning depending on the number of scan# iterations.# 4- Handover: SS will send MSHO-REQ message to the serving BS:# message type = MAC_MOB_MSHO_REQ. The data includes, id and mean RSSI# of current serving BS; id and mean RSSI of neighbor BSs that where# detected during scanning. The serving BS will response with MSHO-RSP# to the SS: message type =MAC_MOB_BSHO_RSP, with a recommended target# BS (the one with the strongest RSSI).# 5- SS receives the response from serving BS and starts to HO# with the recommended BS. If the recommended BS is# different from the current serving BS, it will send a message to# serving BS. #check input parametersif {$argc != 0} {	puts ""	puts "Wrong Number of Arguments! No arguments in this topology"	puts ""	exit }# set global variablesset output_dir .set traffic_start 5set traffic_stop  15set simulation_stop 60#define debug valuesMac/802_16 set debug_ 1Mac/802_16 set print_stats_ 1Mac/802_16 set t21_timeout_          20 #Fix: instead of using the send-scan manually, use a link going down triggerMac/802_16 set lgd_factor_        1.8 ;#note: the higher the value the earlier the trigger Mac/802_16 set client_timeout_ 60 ;#to avoid BS disconnecting the SSAgent/WimaxCtrl set adv_interval_ 1.0Agent/WimaxCtrl set default_association_level_ 0Agent/WimaxCtrl set synch_frame_delay_ 0.5Agent/WimaxCtrl set debug_ 1#define coverage area for base station: 20m coverage Phy/WirelessPhy set Pt_ 0.025Phy/WirelessPhy set RXThresh_ 2.90781e-09Phy/WirelessPhy set CSThresh_ [expr 0.9 *[Phy/WirelessPhy set RXThresh_]]# Parameter for wireless nodesset opt(chan)           Channel/WirelessChannel    ;# channel typeset opt(prop)           Propagation/TwoRayGround   ;# radio-propagation modelset opt(netif)          Phy/WirelessPhy/OFDM       ;# network interface typeset opt(mac)            Mac/802_16                 ;# MAC typeset opt(ifq)            Queue/DropTail/PriQueue    ;# interface queue typeset opt(ll)             LL                         ;# link layer typeset opt(ant)            Antenna/OmniAntenna        ;# antenna modelset opt(ifqlen)         50              	   ;# max packet in ifqset opt(adhocRouting)   DSDV                       ;# routing protocolset opt(x)		670			   ;# X dimension of the topographyset opt(y)		670			   ;# Y dimension of the topography#defines function for flushing and closing filesproc finish {} {        global ns tf output_dir nb_mn        $ns flush-trace        close $tf	exit 0}#create the simulatorset ns [new Simulator]$ns use-newtrace#create the topographyset topo [new Topography]$topo load_flatgrid $opt(x) $opt(y)#open file for traceset tf [open $output_dir/out.res w]$ns trace-all $tf# set up for hierarchical routing (needed for routing over a basestation)$ns node-config -addressType hierarchicalAddrParams set domain_num_ 3          			;# domain numberlappend cluster_num 1 1 1           			;# cluster number for each domain AddrParams set cluster_num_ $cluster_numlappend eilastlevel 1 2 2 ;# number of nodes for each cluster AddrParams set nodes_num_ $eilastlevelputs "Configuration of hierarchical addressing done"# Create Godcreate-god 3				;# 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"#create common channelset channel [new $opt(chan)]#creates the Access Point (Base station)$ns node-config -adhocRouting $opt(adhocRouting) \                 -llType $opt(ll) \                 -macType Mac/802_16/BS \                 -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#puts "Configuration of base station"set bstation [$ns node 1.0.0]  $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[$bstation set mac_(0)] set-channel 0#Fix: add MOB_SCN handlerset wimaxctrl [new Agent/WimaxCtrl]$wimaxctrl set-mac [$bstation set mac_(0)]$ns attach-agent $bstation $wimaxctrlputs "Base Station 1 created"set bstation2 [$ns node 2.0.0]  $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[$bstation2 set mac_(0)] set-channel 1#Fix: add MOB_SCN handlerset wimaxctrl2 [new Agent/WimaxCtrl]$wimaxctrl2 set-mac [$bstation2 set mac_(0)]$ns attach-agent $bstation2 $wimaxctrl2puts "Base Station 2 created"#Fix: 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 -macType Mac/802_16/SS \                -wiredRouting OFF \                -macTrace ON  				;# Mobile nodes cannot do routing.set wl_node [$ns node 1.0.1] 	;# create the node with given @.	$wl_node random-motion 0			;# disable random motion$wl_node base-station [AddrParams addr2id [$bstation node-addr]] ;#attach mn to basestation$wl_node set X_ 45.0$wl_node set Y_ 50.0$wl_node set Z_ 0.0$ns at 0.0 "$wl_node setdest 70.0 50.0 2.0"[$wl_node set mac_(0)] set-channel 0puts "wireless node created ..."			;# debug info#create source traffic#Create a UDP agent and attach it to node n0set udp [new Agent/UDP]$udp set packetSize_ 1500$ns attach-agent $wl_node $udp# Create a CBR traffic source and attach it to udp0set cbr [new Application/Traffic/CBR]$cbr set packetSize_ 1000$cbr set interval_ 0.1$cbr attach-agent $udp#create an sink into the sink node# Create the Null agent to sink trafficset null [new Agent/Null] $ns attach-agent $sinkNode $null# Attach the 2 agents$ns connect $udp $null# create the link between sink node and base station$ns duplex-link $sinkNode $bstation 100Mb 1ms DropTail#Fix: add missing link $ns duplex-link $sinkNode $bstation2 100Mb 1ms DropTail# Traffic scenario: here the all start talking at the same time$ns at $traffic_start "$cbr start"$ns at $traffic_stop "$cbr stop"$ns at $simulation_stop "finish"puts "Running simulation"$ns runputs "Simulation done."

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -