ns2安装802.11p补丁包

来源:互联网 发布:喜马拉雅英语软件下载 编辑:程序博客网 时间:2024/05/07 03:30
通过NS2对802.11p协议进行仿真,在网上下载802.11p的补丁包后,覆盖原有的包后在终端下make后总是报错,经过大量尝试终于发现原因。主要是gcc和g++版本过高的原因导致。后来在虚拟机下安装Red Hat 企业版5,一次就make成功!
成功make后发现原先能运行的tcl脚本文件,重新运行会报错。通过代码对比软件会发现,作者在ns-2.34\tcl\lib下对两个文件ns-defaul.tcl和ns-lib.tcl中对802.11p协议进行了必要的添加。其中会发现
(1)Queue/DTail/PriQ set Prefer_Routing_Protocols 1
Queue/DTail/PriQ set Max_Levels 4
Queue/DTail/PriQset Levels 4

同时在ns-2.34\mac文件夹下会发现多了好多文件,其中就有d-tail.cc和priq.cc这几个文件

所以原先的脚本文件中的 set val(ifq) Queue/DropTail/PriQueue
改为 set val(ifq) Queue/DTail/PriQ

(2)#Adds support for different queuing models in 802.11p
# FULL = One IFQ per channel.
# ONE_ONE = One IFQ for the CCH and one for the remaining SCHs.
# UNIQUE = A single IFQ. For benchmarking purposes
Simulator instproc queueModel { val } { $self set queueModel_ $val }

而在ns-mobilenode.tcl文件下
if { $mactype == "Mac/802_11p" || $mactype == "Mac/802_11" } {
if { [ lsearch [ $ns info vars ] queueModel_ ] != -1 } {
set qmod [ $ns set queueModel_ ]
} else {
puts "Please declare a queue model for the WAVE node using -queueModel in node- config."
puts "Possible values are: 1 = FULL, 2 = ONE/ONE, 3 = UNIQUE."
return
}
如果[ lsearch [ $ns info vars ] queueModel_ ] =-1,终端则会报错Please declare a queue model for the WAVEnode using -queueModel in node- config.Possible values are: 1 = FULL, 2 = ONE/ONE, 3 = UNIQUE.

所以需要在脚本文件下添加 set val(queMod) 2
在配置无线节点处添加 -queueModel $val(queMod) \

0 0
原创粉丝点击