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

📄 multi_udpflows_802_11e.tcl

📁 在网络仿真模拟工具下实现支持QoS的MAC层EDCF协议
💻 TCL
字号:
# globals and flagsset ns [new Simulator]#number of nodesset num_wired_nodes  1set num_mobile_nodes 1set num_bs_nodes     1 ;# number of base stationsset num_nodes [expr $num_wired_nodes + $num_mobile_nodes + $num_bs_nodes]set bs_id $num_wired_nodes# Parameter for wireless nodesset opt(chan)           Channel/WirelessChannel    ;# channel typeset opt(prop)           Propagation/TwoRayGround   ;# radio-propagation modelset opt(netif)          Phy/WirelessPhy            ;# network interface typeset opt(mac)            Mac/802_11e                ;# MAC typeset opt(ifq)            Queue/DTail/PriQ    	   ;# interface queue typeset opt(ifqlen)         50set opt(ll)             LL                         ;# link layer typeset opt(ant)            Antenna/OmniAntenna        ;# antenna modelset opt(ifqlen)         50                        ;# max packet in ifqset opt(adhocRouting)   NOAH                      ;# routing protocolset opt(x)		670	;# X dimension of the topographyset opt(y)		670		;# Y dimension of the topography#smallko add the following two linesMac/802_11e set dataRate_  1MbMac/802_11e set basicRate_ 1Mb Mac/802_11e set rst_cw_mode_ 0#set up for hierarchical routing#(needed for routing over a basestation)$ns node-config -addressType hierarchicalAddrParams set domain_num_ 2          ;# domain numberlappend cluster_num 1 1               ;# cluster number for each domain AddrParams set cluster_num_ $cluster_numlappend eilastlevel $num_wired_nodes [expr $num_mobile_nodes + $num_bs_nodes] ;# number of nodes for each cluster             AddrParams set nodes_num_ $eilastlevel#Open the nam trace fileset nf [open out.nam w]$ns namtrace-all-wireless $nf $opt(x) $opt(y)set ntr [open out.tr w]$ns trace-all $ntrset chan	[new $opt(chan)]set topo	[new Topography]$topo load_flatgrid $opt(x) $opt(y)# Create Godcreate-god [expr $num_mobile_nodes + $num_bs_nodes]# creating wired nodesfor {set i 0} {$i < $num_wired_nodes} {incr i} {	set W($i) [$ns node 0.0.$i]    puts "wired node $i created"}# creating base station$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 $chan      \                 -topoInstance $topo \                 -wiredRouting ON \                 -agentTrace OFF \                 -routerTrace OFF \                 -macTrace OFF    \                 -movementTrace OFFset BS(0) [$ns node 1.0.0]$BS(0) random-motion 0puts "Base-Station node $bs_id created"#provide some co-ord (fixed) to base station node$BS(0) set X_ 1.0$BS(0) set Y_ 2.0$BS(0) set Z_ 0.0 # creating mobile nodes$ns node-config -wiredRouting OFFfor {set i 0} {$i < $num_mobile_nodes} {incr i} {                set wl_node_($i) [$ns node 1.0.[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 * 10]    $wl_node_($i) set Y_ [expr $i * 10]    $wl_node_($i) set Z_ 0.0}# linking of root to base-station node$ns duplex-link $W(0) $BS(0) 10Mb 2ms DropTail# linking of wired nodes to root node#for {set i 1} {$i < $num_wired_nodes} {incr i} {#    $ns duplex-link $W($i) $W(0) 10Mb 2ms DropTail#} set src_udp0 [new Agent/UDP]$src_udp0 set class_ 0$src_udp0 set prio_ 0set dst_udp0 [new Agent/Null]$ns attach-agent $wl_node_(0) $src_udp0$ns attach-agent $W(0) $dst_udp0set app0 [new Application/Traffic/CBR]$app0 attach-agent $src_udp0$ns connect $src_udp0 $dst_udp0$ns at 0.0 "$app0 start" set src_udp1 [new Agent/UDP]$src_udp1 set class_ 1$src_udp1 set prio_ 1set dst_udp1 [new Agent/Null]$ns attach-agent $wl_node_(0) $src_udp1$ns attach-agent $W(0) $dst_udp1set app1 [new Application/Traffic/CBR]$app1 attach-agent $src_udp1$ns connect $src_udp1 $dst_udp1$ns at 0.3 "$app1 start"set src_udp2 [new Agent/UDP]$src_udp2 set class_ 2$src_udp2 set prio_ 2set dst_udp2 [new Agent/Null]$ns attach-agent $wl_node_(0) $src_udp2$ns attach-agent $W(0) $dst_udp2set app2 [new Application/Traffic/CBR]$app2 attach-agent $src_udp2$ns connect $src_udp2 $dst_udp2$ns at 0.1 "$app2 start" set src_udp3 [new Agent/UDP]$src_udp3 set class_ 3$src_udp3 set prio_ 3set dst_udp3 [new Agent/Null]$ns attach-agent $wl_node_(0) $src_udp3$ns attach-agent $W(0) $dst_udp3set app3 [new Application/Traffic/CBR]$app3 attach-agent $src_udp3$ns connect $src_udp3 $dst_udp3$ns at 0.2 "$app3 start" # Define node initial position in namfor {set i 0} {$i < $num_mobile_nodes} {incr i} {    $ns initial_node_pos $wl_node_($i) 20   }# Tell nodes when the simulation endsfor {set i 0} {$i < $num_mobile_nodes } {incr i} {    $ns at 10.0 "$wl_node_($i) reset";}$ns at 100.0 "$BS(0) reset";$ns at 100.0 "$app0 stop"$ns at 100.0 "$app1 stop"$ns at 100.0 "$app2 stop"$ns at 100.0 "$app3 stop"$ns at 110.0 "puts \"NS EXITING...\" ; $ns halt"proc stop {} {    global ns ntr nf    close $ntr    close $nf}# run the simulation$ns run

⌨️ 快捷键说明

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