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

📄 multi_udpflows_802_11e_ori.tcl

📁 在网络仿真模拟工具下实现支持QoS的MAC层EDCF协议
💻 TCL
字号:
## globals and flags#set ns [new Simulator]set AKAROA 0##number of nodes#set num_wired_nodes  3set num_mobile_nodes 4set 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 nodes#set 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)   DSDV                       ;# 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 ## 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 file##if {$AKAROA==0 } {    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 Godcreate-god [expr $num_mobile_nodes + $num_bs_nodes]## creating wired nodes#for {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 nodefor {set i 1} {$i < $num_wired_nodes} {incr i} {    $ns duplex-link $W($i) $W(0) 10Mb 2ms DropTail}# telling akaroa which macs to observeset observed_queues 4lappend observe_list  2set numconnections [llength $observe_list]if {$AKAROA == 1} {    set ak [new Akaroa]    $ak AkDeclareParameters [expr $numconnections * $observed_queues]    puts "numparams= $numconnections"    #$ak AkObservation 1 $througput    #$ak AkObservation 2 $througput    #$ak AkObservation 3 $througput}#$ns duplex-link $W([expr $num_wired_nodes - 1]) $BS(0) 10Mb 2ms DropTailset 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_(1) $src_udp0$ns attach-agent $W(1) $dst_udp0set app [new Application/Traffic/CBR]$app attach-agent $src_udp0$ns connect $src_udp0 $dst_udp0$ns at 0.0 "$app 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_(1) $src_udp1$ns attach-agent $W(1) $dst_udp1set app1 [new Application/Traffic/CBR]$app1 attach-agent $src_udp1$ns connect $src_udp1 $dst_udp1$ns at 0.0 "$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_(1) $src_udp2$ns attach-agent $W(1) $dst_udp2set app2 [new Application/Traffic/CBR]$app2 attach-agent $src_udp2$ns connect $src_udp2 $dst_udp2$ns at 0.0 "$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_(1) $src_udp3$ns attach-agent $W(1) $dst_udp3set app3 [new Application/Traffic/CBR]$app3 attach-agent $src_udp3$ns connect $src_udp3 $dst_udp3$ns at 0.0 "$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 ends#for {set i 0} {$i < $num_mobile_nodes } {incr i} {    $ns at 10.0 "$wl_node_($i) reset";}if {$AKAROA == 0} {    $ns at 100.0 "$BS(0) reset";    $ns at 100.0 "$app stop"    $ns at 100.0 "$app1 stop"    $ns at 100.0 "$app2 stop"    $ns at 100.0 "$app3 stop"    #$ns at 10.0 "$ftp1 stop"    #$ns at 10.0 "$ftp2 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 + -