ns无线网络仿真节点设置及说明.docx
《ns无线网络仿真节点设置及说明.docx》由会员分享,可在线阅读,更多相关《ns无线网络仿真节点设置及说明.docx(8页珍藏版)》请在冰豆网上搜索。
ns无线网络仿真节点设置及说明
ns无线网络仿真节点设置及说明
要做一个4个节点的Adhoc网络仿真,实验环境和要求是:
采用的无线网拓扑结构,主机节点数共有4个;节点1到4的初始位置坐标分别为(0,1000、(0,800、(0,600和(400,600,节点1和2在仿真中
保持静止不动,节点3和4则以60m/s速度分别向坐标(0,0和(400,0位置方向垂直移动。
系统带宽为2Mbps,系统节点缺省无线传输半径约为500m
。
仿真使用的业务流量为FTP,每包发送512字节,发送速度10包/s。
采用静态路由方式,节点1在1.5s发包给节点2,节点3在3.5s发包给节点4。
仿真时间一共10s,选取节点2处的估计可用带宽进行分析。
下面是基本环境仿真的adhoc.tcl源码:
#Thisscriptiscreatedbyemile.Y.SXiang
#===================================
#定义模拟变量
#===================================
setval(chanChannel/WirelessChannel;#channeltype
setval(propPropagation/TwoRayGround;#radio-propagationmodel
setval(netif
Phy/WirelessPhy;#networkinterfacetype
set
val(macMac/802_11
;#MACtype
setval(ifqQueue/DropTail/PriQueue;#interfacequeuetype
set
val(llLL
;#linklayertype
set
val(antAntenna/OmniAntenna;#antennamodel
set
val(x1000
;#Xdimensionoftopology
set
val(y1000
;#Ydimensionoftopology
set
val(cp""
;#nodemovementmodelfile
set
val(sc""
;#trafficmodelfile
setval(ifqlen
50;#maxpacketinifq
set
val(nn4
;#numberofmobilenodes
setval(seed0.0
set
val(stop10.0
;#timeofsimulationend
set
val(tradhoc.tr
;#tracefilename
set
val(rpDSDV
;#routingprotocol
setAgentTraceON
setRouterTraceON
setMacTraceOFF
#===================================
#建立相关档案
#===================================
#InitializeGlobalVariables
setns_[new
Simulator];#产生
nssimulator实例
$ns_color1Blue
$ns_color2Red
#设定tracefile
$ns_
use-newtrace
;#使用新的traceformat
setnamfd[openadhoc.nam
w];#产生namtracefile$ns_namtrace-all-wireless$namfd$val(x$val(y;#模拟时产生需要的结果文件
settracefd[open$val(tr
w];#产生tracefile
$ns_trace-all
$tracefd;#模拟时产生需要的结果文件
#建立topology对象,以记录mobilenodes在拓扑內移动的情况
settopo[newTopography]
#拓扑的范围为1000mx1000m
$topoload_flatgrid$val(x$val(y
#建立channel
setchan[new$val(chan]
#创建god
setgod_[create-god$val(nn]
#===================================
#无线节点配置
#===================================
#Createthespecifiednumberofmobilenodes[$val(nn]and"attach"themto
#thechannel.Fournodesarecreated:
node(0,node(1,node(2andnode(3
#设定MobileNode的参数
$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\
-agentTraceON\
-routerTraceOFF\
-macTraceOFF\
-movementTraceOFF
#===================================
#新建Node
#===================================
for{seti0}{$i<$val(nn}{incri}{
setnode_($i[$ns_node]
$node_($irandom-motion0;#使各节点非随机移动
}
#Provideinitial(X,Y,fornowZ=0co-ordinatesformobilenodes#建立第0个Node,开始时,位置在(0.0,1000.0
$node_(0setX_0.0
$node_(0setY_1000.0
$node_(0setZ_0.0
#建立第1个Node,开始时,位置在(0.0,800.0
$node_(1setX_0.0
$node_(1setY_800.0
$node_(1setZ_0.0
#建立第2个Node,开始时,位置在(0.0,600.0
$node_(2setX_0.0
$node_(2setY_600.0
$node_(2setZ_0.0
#建立第3个Node,开始时,位置在(400.0,600.0
$node_(3setX_400.0
$node_(3setY_600.0
$node_(3setZ_0.0
#Loadthegodobjectwithshortesthopinformation
#在节点0和节点1之间最短的hop数为1
$god_set-dist011
#在节点1和节点2之间最短的hop数为1
$god_set-dist121
#在节点0和节点2之间最短的hop数为2
$god_set-dist022
#在节点2和节点3之间最短的hop数为1
$god_set-dist231
#在节点0和节点3之间最短的hop数为1
$god_set-dist031
#在节点1和节点3之间最短的hop数为1
$god_set-dist131
#===================================
#产生Movement
#===================================
#Nowproducesomesimplenodemovements
#Node_(2andNode_(3startstomovedownward
setgod_[Godinstance]
#node移动不能到边界,否则会报错
#从0秒开始,节点2开始从位置(0,600移動到(0,0,速度為60.0m/s$ns_at0.0"$node_(2setdest0.10.160.0"
#从0秒开始,节点3开始从位置(400,600移動到(400,0,速度為60.0m/s$ns_at0.0"$node_(3setdest400.00.160.0"
#===================================
#建立FTP业务,基于TCP来承载
#===================================
#在节点0和节点1间设定第0个连线(FTP-TCP,且在时间为1.5秒开始发送settcp0[newAgent/TCP/Newreno]
$tcp0setfid_1
setsink0[newAgent/TCPSink]
$ns_attach-agent$node_(0$tcp0
$ns_attach-agent$node_(1$sink0
$ns_connect$tcp0$sink0
setftp0[newApplication/FTP]
$ftp0attach-agent$tcp0
$ns_at1.5"$ftp0start"
$ns_at10.0"$ftp0stop"
#在节点2和节点3间设定第1个连线(FTP-TCP,且在时间为3.5秒开始发送settcp1[newAgent/TCP/Newreno]
$tcp1setfid_2
setsink1[newAgent/TCPSink]
$ns_attach-agent$node_(2$tcp1
$ns_attach-agent$node_(3$sink1
$ns_connect$tcp1$sink1
setftp1[newApplication/FTP]
$ftp1attach-agent$tcp1
$ns_at3.5"$ftp1start"
$ns_at10.0"$ftp1stop"
#在nam中定义节点初始所在位置
for{seti0}{$i<$val(nn}{incri}{
#Thefunctionmustbecalledaftermobilitymodelisdefined.
$ns_initial_node_pos$node_($i60
}
#告诉MobileNode模拟已结束for{seti0}{$i<$val(nn}{incri}{$ns_at$val(stop"$node_($ireset";}#===================================#结束模拟#===================================#结束nam与模拟器$ns_at$val(stop"$ns_nam-end-wireless$val(stop"$ns_at$val(stop"stop"$ns_at$val(stop"puts\"NSEXITING...\";$ns_halt"#设定模拟器用的stopfunctionprocstop{}{globalns_tracefdnamfd$ns_flush-traceclose$tracefdclose$namfdexecnamadhoc.nam&exit0}putsputsputsputs$ns_$tracefd"M0.0nn$val(nnx$val(xy$val(yrp$val(rp"$tracefd"M0.0sc$val(sccp$val(cpseed$val(seed"$tracefd"M0.0prop$val(propant$val(ant""StartingSimulation..."run