-n:nodes指定了场景中总节点数目。
-p:pause_time指定了节点在运动到一个目的点后停留的时间,如果设置为0则节点不停留。
-s:speed_type为uniform/normal。 -m:min_speed指定节点移动的最小速率。 -M:max_speed指定节点移动的最大速率。 -P:pause_type为constant/uniform。
-t:simulation_time指定了模拟场景的持续时间,单位为s. -x:max_X指定了节点运动区域的长度,单位为m。 -y:max_Y指定了节点运动区域的宽度,单位为m。 1.3.4 数据流生成工具cbrgen
数据流生成工具cbrgen用来生成传输负载,可以产生TCP流和CBR流。 使用方法如下:
ns cbrgen.tcl [-type cbr|tcp] [-nn nodes] [-seed seed] [-mc connections] [-rate rate]
其中各个参数的含义如下:
其
-type:选择tcp表示生成TCP流,选择cbr表示生成CBR流。 -nn:nodes表示节点数目。 -seed:seed表示随机数种子。
-mc:connections表示节点间的最大连接数。 -rate:rate表示每个连接间的数据流的速率。 1.3.5 跟踪文件格式
跟踪(Trace)文件是在模拟过程中生成的记录模拟每一个分组调度事件的
文件,一次模拟生成的信息基本上全体现在Trace文件中。Trace文件包含了很多有用的可供分析的数据,我们需要从中筛选出我们关注的数据进行分析。
默认的Trace格式包含了大部分的跟踪信息,我们需要的信息可能基本上都
已包含于其中,也包含了一些我们用不到的信息。假如在NS中添加自己的协议时,一些新信息的获取是现有的Trace格式所不支持的,只是我们可以根据自己的需求自定义Trace文件的格式,让其按需求进行打印输出。
无线网络的整个模式过程也有Trace文件记录。无线trace支持使用cmu-
6
trace对象,有3种类型:CMUTrace/Drop、CMUTrace/Recv、CMUTrace/Send。模拟无线网络时,该三类对象用以记录由代理、路由层、MAC层或接口队列所产生的丢失、接收和发送分组的事件信息。
NS的发展过程中对无线Trace的格式做过修订,修订版的Trace格式还未
全部完成,目前的NS兼容修订之前的无线Trace格式,我们称修订之前的格式为无线网络的Trace的旧格式。无线网络的Trace的旧格式如下:
Event /Time/Node/Layer/Flags/Pkt id/Pkt type/Pkt size/[MAC Layer Info]/---/[IP Info] 动作/时间/节点/层次/——/分组UID/分组类型/分组大小/[MAC层信息]/---/[IP层信息]
(1)Event:事件的类型,有4种类型s、r、d和f,分别表示分组的发送、接收、丢失和转发事件。 (2)Time:事件发生的时间。 (3)Node:事件发生的节点id。 (4)Layer:发生事件所在的层。 (5)Flags:标志项。 (6)Pkt id:分组的id。 (7)Pkt type:分组的类型。 (8)Pkt size:分组的大小。
(9)[MAC Layer Info]:MAC层的信息,包含4项内容:第1项是发送节点在无线信道上发送该分组所期望的时间,其值用十六进制表示,单位为秒;第2项内容是接受节点的MAC地址;第3项内容是发送节点的MAC地址;第4项内容表示MAC层封装的分组类型。 (10)---:分隔符。
(11)[IP Info]:IP层的信息,包含4项内容:第1项发送分组的源节点地址,格式为“节点号:端口号”;第2项发送分组的目的节点地址,格式为“节点号:端口号”;第3项是分组的TTL值;第4项是源节点到目的节点的跳数。 1.3.6 Awk文件格式
Awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义
7
函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk的处理文本和数据的方式是这样的,它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作。如果没有指定处理动作,则把匹配的行显示到标准输出(屏幕),如果没有指定模式,则所有被操作所指定的行都被处理。
Awk脚本文件的一般格式为: BEGIN{
? }
pattern1 { action1 } pattern2 { action2 } … END{ … }
这也说明了AWK的编程模型:程序开始处理BEGIN流程(一般是设置分隔符、定义变量以及输出信息行等),然后进入主循环,读入数据每一行,本行数据设为$0, 行数为NR(某一文件的行数为FNR),同时根据FS变量将$0切分为NF个字段,分别用$1,$2,?,$NF标识。程序对每一行用pattern进行匹配,若匹配上则运行action。在所有行处理完后,程序将处理END流程(一般是进行后期处理,输出综合结果等)。
与其他语言不同的是,Awk的变量不需要声明,也不需要初始化,直接使
用。每一个变量同时有一个字符值和数值,Awk根据上下文环境决定作为数值或字符串处理,这是Awk极其独特之处。 1.3.7 gnuplot绘图
gnuplot是一款命令驱动的交互式绘图软件,一个强有力的科学绘图工具。
其功能是把数据资料和数学函数转换成直观的二维或三维图形,易于进行数据分析,因此适合于科学研究过程中的数据曲线绘制和理论模型对比的曲线化、图形化工作。
在linux终端运行gnuplot命令启动gnuplot绘图环境,输入quit或q或exit
退出。进入gnuplot绘图环境以后有两种工作方式:一是交互式,直接在绘图环境编写绘图命令;二是批处理方式,将绘图命令写入一个文件中,使用load命
8
令载入文件。简单的命令就可以完成的绘图任务或者不常使用的绘图代码可以采用交互式绘图;复杂的绘图任务通常需要经常重复使用的绘图代码,可采用批处理方式完成绘图。
在gnuplot中二维图形采用plot命令绘制,此外还有一个replot命令,用来
重复最近一次使用到的plot命令。
Plot命令常用格式:
plot {range} {
语法格式中,由逗号分开的是绘制在一张图形上的多个函数或数据曲线。
由plot指令的基本语法,其参数设定可以大致分为以下4类。 (1)ranges:设定本次绘制图形所显示的区域。
在设定绘图环境属性时有相似功能的xrange、yrange、zrange、rrange、trange、urange、vrange等参数可以设定,不过设定这些属性后会影响以后所有的绘图状态。设定ranges的语法为:
[{< dummy_var>=} {
参数dummy_var为变量名,默认设定为X,Y,可由“set dummy varname‖更改。min和max是设定的显示范围,均为常数表示式。
(2)Function or datafile:设定绘制的函数或者数据资料的档案。
函数为一数学表达式,可以使gnuplot提供的基本数学函数或由基本数学函
数复合的函数式,也可以是自定义的函数。如果使用数据文件绘制数据曲线,需要using指明所用文件的哪两列。 (3)title:设定标题的内容。
title选项用于设定标题的内容,标题名称是字符串需要用双引号括起来,设
定标题的格式如: title ―
(4)style:设定显示图形的颜色、图案等。
Style选项可以设定绘图时所用的颜色和图案。Gnuplot提供了9种绘图的图
案,分别如下:
lines——将相邻的点用线条连接。
9