基于Tcl语言配置简单网络环境过程解析

基于Tcl语言配置简单网络环境过程解析,第1张

基于Tcl语言配置简单网络环境过程解析

详细介绍了搭载Tcl语言的简单网络自然环境的流程分析,原文中根据示例代码的详细介绍非常详细,对大家的学习培训或者工作有一定的参考价值,朋友们一定要参考。

1.Tcl脚本文件circle.tcl代码注释

#设置仿真模拟必须的一些特性 setval(chan)Channel/WirelessChannel setval(prop)Propagation/TwoRayGround setval(netif)Phy/WirelessPhy setval(mac)Mac/802_11 #将协议书设定为DSR后,另外将序列设定为CMUPriQueue setval(ifq)CMUPriQueue setval(ll)LL setval(ant)Antenna/OmniAntenna setval(ifqlen)50 #将连接点数量预设为0,待用户输入。该项规定用户一定输入,不然不实行仿真模拟。 setval(nn)0 setval(rp)DSR #情景尺寸初始值为1000*1000 setval(x)1000 setval(y)1000 #圆的半径缺省值为400 setval(r)400 #该过程用以在显示屏上复印在终端设备输入nscircle.tcl后加上参数的文件格式 procusage{}{ globalargv0 puts"\nusage:$argv0\[-nnnodes\]\[-rr\]\[-xx\]\[-yy\]\n" puts"note:\[-nnnodes\]isessential,andtheothersareoptional.\n" } #该过程用于依据用户的输入变更一些预设参数的值 procgetval{argcargv}{ globalval lappendvallistnnrxyz #argc为参数的数量,argv为成条参数组成的字符串数组 for{seti0}{$i<$argc}{incri}{ #自变量arg为argv的第i一部分,以空格符为交界 setarg[lindex$argv$i] #忽略无标识符“-”的字符串数组,一般是用户输入的数据 #stringrange$argmn表明取字符串数组$arg的第m字符到第n字符 if{[stringrange$arg00]!="-"}continue setname[stringrange$arg1end] #变更预设自变量(连接点数量,半经,情景尺寸) setval($name)[lindex$argv[expr$i1]] } } #启用getval过程 getval$argc$argv #用户沒有输入参数,只输入了nscircle.Tcl,则连接点数量觉得0 if{$val(nn)==0}{ #复印使用方法 usage exit } #建立仿真模拟案例 setns[newSimulator] #设定纪录文档 settracefd[opencircle.trw] $nstrace-all$tracefd setnamtracefd[opencircle.namw] $nsnamtrace-all-wireless$namtracefd$val(x)$val(y) #关掉trace文档并启用nam程序流程演试动漫 procfinish{}{ globalnstracefdnamtracefd $nsflush-trace close$tracefd close$namtracefd execnamcircle.nam& exit0 } settopo[newTopography] $topoload_flatgrid$val(x)$val(y) create-god$val(nn) #连接点配备。因为版本号缘故,addressType设成def $nsnode-config-addressTypedef\ -adhocRouting$val(rp)\ -llType$val(ll)\ -macType$val(mac)\ -ifqType$val(ifq)\ -ifqLen$val(ifqlen)\ -antType$val(ant)\ -propType$val(prop)\ -phyType$val(netif)\ -channelType$val(chan)\ -topoInstance$topo\ -agenttraceON\ -routertraceON\ -mactraceOFF\ -movementtraceOFF #复位连接点 for{seti0}{$i<$val(nn)}{incri}{ #建立连接点 setnode_($i)[$nsnode] $node_($i)random-motion0 #测算连接点部位并设定,应用三角函数开展测算 $node_($i)setX_[expr$val(r)*cos($i*2*3.14159/$val(nn))] $node_($i)setY_[expr$val(r)*sin($i*2*3.14159/$val(nn))] $node_($i)setZ_0 #设定在nam移动连接点显示信息尺寸,不然,nam中不显示连接点 $nsinitial_node_pos$node_($i)[expr$val(x)/10] } #在node_(0)连接点上创建一个UDP代理商 settcp[newAgent/UDP] $nsattach-agent$node_(0)$tcp #在node(0)连接点沿直徑正对面的连接点上创建一个数据信息信号接收器 setnull[newAgent/Null] $nsattach-agent$node_([expr$val(nn)/2])$null #新创建CBR总流量产生器,排序尺寸500B,间距0.05s setcbr[newApplication/Traffic/CBR] $cbrsetpacketSize_5000 $cbrsetinterval_0.05 #联接UDP和Null $cbrattach-agent$tcp $nsconnect$tcp$null #在0.1s时传送数据,3.0s时终止传送数据,5.0s时启用finish过程 $nsat0.1"$cbrstart" $nsat3.0"$cbrstop" $nsat5.0"finish" $nsrun

2.gawk脚本制作代码分析.awk注释

BEGIN{ #设定原始自变量 num_D=0;#丢包率数 num_s=0;#推送包数 num_r=0;#接到包数 rate_drop=0;#网络丢包 sum_delay=0;#总时间延迟 average_delay=0;#均值时间延迟 } { #载入trace文档纪录 event=$1;#第一列入包的实际 *** 作(s为推送包,r为接受包) time=$2;#第二列入实际 *** 作時间 node=$3;#第三列入连接点号 trace_type=$4;#第四列入实际 *** 作层 flag=$5;#第五列入标志位 uid=$6;#第六列入连接点标志 pkt_type=$7;#第七列入包种类 pkt_size=$8;#第八列入包的尺寸 #实际 *** 作 if(event=="s"&&trace_type=="AGT"&&pkt_type=="cbr") {send_time[uid]=time;#创建数组纪录分包時间 num_s;#纪录推送包数量 } if(event=="r"&&trace_type=="AGT"&&pkt_type=="cbr") {delay[uid]=time-send_time[uid];#创建数组纪录时间延迟 num_r;#纪录接到包数量 } if(event=="D"&&pkt_type=="cbr") delay[uid]=-1;#-1表明包遗失,该包不容易记到时间延迟 } END{ #测算丢包率数和网络丢包 num_D=num_s-num_r;#丢包率数量 rate_drop=num_D/num_s*100.0;#测算网络丢包 #测算延迟时间 for(i=0;i<num_s;i) {if(delay[i]>=0) sum_delay=delay[i]; }#总时间延迟 average_delay=sum_delay/num_r;#均值时间延迟 #复印結果 printf("numberofpacketsdroped:%d\n",num_D); printf("numberofpacketssent:%d\n",num_s); printf("droprate:%.3f%%\n",rate_drop); printf("averagedelaytime:%.9f\n",average_delay); }

3.试验结果

(1)

设置节点数为12, *** 作结果如下,形成两个记录文档nam文档和trace文档。


此时,的跟踪图像大小为91.9kb,nam图像大小为76.5kb



接下来,根据gawk专用工具,对痕迹文件进行分析。如果没有安装gawk的专用工具,应该使用sudoapt-getinstallgawk指令来安装它们。
结果得到网络仿真过程中的丢包率、包数、网络丢包率和平均时间。


(2)再次将节点数改为8,运算结果如下。但是,此时,其他circle.nam和circle.tr文件不会添加到文件夹名称中。


查询两个文档的特征,发现大小有变化,说明新创建的网络模拟自然环境的记录文档已经被覆盖。



Gawk还可以用来分析跟踪文档。研究发现,随着节点数量的增加,网络丢包率和平均延迟都在增加。

文章里的内容就这些了。期待对大家的学习和培训有所帮助,也期待大家的应用。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/774401.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-03
下一篇 2022-05-03

发表评论

登录后才能评论

评论列表(0条)

保存