本人NS2萌新一枚写了一个DCF100节点有AP的仿真例子代码后面附上。
请问NS2.35上是否已经实现了802.11的PCF接入方式,若已经实现了请大佬们给个简单的例子。
若没有请大佬们告诉我该怎么做,已自闭。。。。。。。。。。。。
set val(chan) Channel/WirelessChannel ;# 信道类型:无线
set val(prop) Propagation/TwoRayGround ;# 传输模型(两径模型:1.点到点间的直线。2.地面的反射)
set val(netif) Phy/WirelessPhy ;# 物理接口类型:无线
set val(mac) Mac/802_11 ;# MAC层类型802.11
set val(ifq) Queue/DropTail/PriQueue ;# 网卡队列丢失类型:尾部丢弃(远距离衰落)
set val(ll) LL ;# 逻辑链路层类型
set val(ant) Antenna/OmniAntenna ;# 天线类型:全向
set val(ifqlen) 50 ;# 网卡队列容量
set val(nn) 100 ;# 节点数量
set val(rp) AODV ;# 路由协议
set val(x) 500
set val(y) 500
Mac/802_11 set Beacon 40
Mac/802_11 set CF-Poll 60
Mac/802_11 set CF-end 20
Mac/802_11 set CF-Null 34
#=========================545米通信范围其余均为默认========================================
#Phy/WirelessPhy set CPThresh_ 10.0 ;# 碰撞后功率强于另一个10倍的包被接收
Phy/WirelessPhy set CSThresh_ 1.55924e-11 ;# 550m侦听范围
Phy/WirelessPhy set RXThresh_ 1.61726e-11 ;# 545米通信范围值
#Phy/WirelessPhy set bandwidth_ 2e6 ;# 带宽2Mb
#Phy/WirelessPhy set Pt_ 0.28183815 ;# 传输功率
#Phy/WirelessPhy set freq_ 914e+6 ;# 射频频率
#Phy/WirelessPhy set L_ 1.0 ;# 系统损耗系数
#================================end=====================================================
#=============================NS2默认的802.11参数设定(802.11b)=====================================
#
#
#Mac/802_11 set CWMin_ 31 ;# 退避随机数最小值
#Mac/802_11 set CWMax_ 1023 ;# 退避随机数最大值
#Mac/802_11 set SlotTime_ 0.000020 ;# SlotTime=20us
#Mac/802_11 set SIFS_ 0.000010 ;# 最小帧间间隔 :10us; SIFS = 10us
#Mac/802_11 set PreambleLength_ 144 ;# 144 bit
#Mac/802_11 set PLCPHeaderLength_ 48 ;# 48 bits
#Mac/802_11 set PLCPDataRate_ 1.0e6 ;# 1Mbps
#Mac/802_11 set RTSThreshold_ 0 ;# 启用RTS/CTS机制的包大小0 bytes
#Mac/802_11 set ShortRetryLimit_ 7 ;# 短帧最大重传尝试次数,包大小 #Mac/802_11 set LongRetryLimit_ 4 ;# 长帧最大重传尝试次数,包大小>RTS/CTS阈值 = 长帧
#====================================end==========================================================
set ns_ [new Simulator]
set f [open PCF_100.tr w]
$ns_ trace-all $f
$ns_ eventtrace-all
set nf [open PCF_100.nam w]
$ns_ namtrace-all-wireless $nf val(x) val(y) ;# nam动画跟踪范围: 500 x 500
set topo [new Topography]
$topo load_flatgrid $val(x) $val(y)
create-god $val(nn)
set chan [new $val(chan)] ;# 创建无线信道
$ns_ node-config -adhocRouting $val(rp) \
-llType $val(ll) \
-macType $val(mac) \
-ifqType $val(ifq) \
-ifqLen $val(ifqlen) \
-antType $val(ant) \
-propType $val(prop) \
-phyType $val(netif) \
-channel $chan \
-topoInstance $topo \
-agentTrace ON \
-routerTrace OFF \
-macTrace ON \
-movementTrace OFF
#===========================信标帧间隔和接入点模式说明==========================================
#
#=====================================end======================================================
for {set i 0} {$i < 10} {incr i} {
for {set j 0} {$j < 10} {incr j} {
set k [expr $i*10+$j]
set node_($k) [$ns_ node]
$node_($k) random-motion 0 ;#不移动
$node_($k) set X_ [expr $j*50]
$node_($k) set Y_ [expr $i*50]
$node_($k) set Z_ 0.0
set mac_($k) [$node_($k) getMac 0]
if {$k != 44} { ;# 其余节点为ACTIVE模式下的STA
$ns_ at 0.1 "$mac_($k) ScanType ACTIVE"
} else { ;# 设置node44为AP(PC)
set AP_ADDR1 [$mac_($k) id]
$mac_($k) ap $AP_ADDR1
$ns_ at 0.01 "$node_($k) color \"red\""
}
}
}
$mac_(44) set BeaconInterval_ 0.5
set tcp [new Agent/TCP]
$ns_ attach-agent $node_(0) $tcp
set null [new Agent/TCPSink]
$ns_ attach-agent $node_(99) $null
$ns_ connect $tcp $null
set cbr [new Application/Traffic/CBR]
$cbr attach-agent $tcp
$cbr set type_ CBR ;# 数据源类型恒定速率
$cbr set packet_size_ 1000 ;# 包大小 1000Byte
$cbr set rate_ 1Mb ;# 速率: 1 Mbit/s
$cbr set random_ false ;# 速率不变
$ns_ at 0.5 "$cbr start" ;# 0.5秒时产生数据
$ns_ at 26.0 "$cbr stop" ;# 26秒时结束数据的产生
for {set i 0} {$i < 100} {incr i} {
$ns_ initial_node_pos $node_($i) 30
$ns_ at 28.0 "$node_($i) reset" ;# 28sec时将节点设置恢复为默认
}
$ns_ at 30.0 "finish"
$ns_ at 30.1 "puts \"NS EXITING...\"; $ns_ halt"
proc finish {} {
global ns_ f nf val
$ns_ flush-trace
close $f
close $nf
exec nam PCF_100.nam &
exit 0
}
$ns_ run ;#执行仿真