计算机学院网络工程实习报告
图3.9 暴露节点无RTS/CTS机制的NAM
第四章 网络性能仿真与分析
4.1 Gawk语言简介
4.1.1 gawk处理文档的过程
Gawk是一种对文档资料具有很强处理能力的程序语言,简短的几句代码就可以完成对数据的修改、对比、抽象等操作。
Gawk 语言将所要处理的文档分解为一条条的记录(一般是数据文件中的一行),每条记录默认以空格或TAB键分割为一个个字段。在对记录的处理过程中,
28
计算机学院网络工程实习报告
一般都要对记录中的字段进行操作。对记录中字段提取可以采用字段变量“$1,$2,$3?”等,gawk读入记录后已自动把字段值存入相应的变量中。具体例子如下: Event $1 Time Node $2 $3 Layer $4 Pkt id $6 Pkt type Pkt size Send id $7 $8 $14 Gawk处理文档的过程是针对档案的每一条记录搜寻指定的模式(pattern),当记录中有符合指定的模式时,gawk就会在此记录执行被指定的动作(Action),按照这种模式直到文档的结束。 执行Gawk程序指令如下:
即gawk –f program inputfilename > savefilename 在实习中利用awk主要处理吞吐量和丢包率。
4.2 gnuplot绘图
在LINUX终端运行命令gnuplot绘图环境,输入quit或exit或q退出。进
入gnuplot绘图环境以后有两种工作方式: ? 交互式:直接在绘图环境中编写绘图命令;
? 批处理方式:将绘图命令写入一个文件中,使用load命令载入文件。 Gnuplot中的命令和函数名是区分大小写的,在gnuplot中二维图形采用plot命令绘制,三维图形采用splot命令绘制,还有一个replot命令,用来重复最近一次使用到的plot或splot命令。Plot绘图命令可以从文件中读取数据绘制数据曲线,非常方便实验结果的描绘。
也可以设置图形的显示属性,比如坐标轴、网格(grid)、Label(线条、文字注解)、图的大小和位置等参数。具体如下: set xtics 1.0 ;#设置X轴的主刻度的宽度 set grid ;#画图添加网格 plot sin(x) with lines(points);
29
计算机学院网络工程实习报告
plot “filename”with lines;
4.3 性能参数分析模型
4.3.1 传输延时
网络的传输延时D定义为源节点发出的一个分组到目的节点接收到该分组之间
的时间差,包括电(光)信号在物理介质中的传播延时和数据在网络中的延时处理。结合NS的Trace文件,实习中以分组发送和到达之间的时间间隔来计算,计算公式如下:
D(i) = RT(i) –ST(i)
其中,D(i)表示第i个分组的传播时延,RT(i)表示第i个分组的接收时间,ST(i)表示第i个分组的发送时间。在分析网络的传输延时,一般计算平均传输时延。 4.3.2 时延抖动
网络的状态随时在变化,网络的流量也是不稳定,当流量较大的时候,许多分组就在节点的队列中排队等候,因此各个分组在传输过程中的时延并不一致。时延抖动描述的是网络传输延时的变化情况。如果时延抖动大,说明网络不稳定,反之网络较稳定。
计算公式:J(i) = D(i) - D(i-1)
在实际网络中,常以分组的最小延时和最大延时与平均延时作比较。 4.3.3 丢包率
丢包率定义了传输期间网络丢失的分组的数量,通常是在特定时间段内丢失的
分组占传输的数据总量的比例。丢包率是反映网络质量的一个重要参数。
在分析Trace文件时,以丢失分组的数量与发送分组的数量的比值来衡量丢包率的大小。
L=(NSP—NRP)/NSP
其中:NSP表示节点发送的分组数目,NRP表示节点接收的分组数目。 4.3.4 吞吐量
网络吞吐量是网络性能的一个重要参数,指在不丢包的情况下单位时间内节点
可以接收的数据量,单位是字节每秒或比特每秒, 在分析Trace文件时,使用以下公式:
30
计算机学院网络工程实习报告
TH(i) = (TB(i)—TB(m))/(RT(i)—RT(m))
其中:TB(i)是指到第i个分组被目的节点接收时已经传输的数据总量,RT(i)是指第i个包的接收时间。i>m,表示计算从第m个分组到第i个分组的吞吐量。
4.4 丢包率计算
4.4.1 NS2中网络丢包因素简介
ns-2 仿真器能模拟无线网络中的报文丢弃事件。报文丢弃包括数据报文丢弃和控制报文丢弃,以下统称为丢包。无线网络中,丢包主要发生在网络协议栈的路由层和MAC 层,主要的丢包因素和其对应的协议层如表4.1 所示。 标识 NRTE TTL CBK IFQ ARP COL RET DUP 协议层 RTR RTR RTR IFQ IFQ MAC MAC MAC 丢包因素 No route available TTL reached zero MAC callback No buffer ARP full Collision Retry count execeed Duplication 表4.1 NS2中网络丢包因素简介
其中,COL 是因为隐藏节点带来的报文冲突,即节点在接收报文时有其它报文到达;RET 是达到了报文重传次数的极限;DUP 是接收到重复的报文而导致的丢包;ARP 是因为达到了发送ARP请求的最大次数;NRTE 是找不到可用的路由;TTL 是达到了报文的最大生存周期;CBK是节点无法与下一跳邻居节点通信使得路由断链且局部修复失败时导致的丢包;IFQ 是在报文发送队列队满时引起的丢包。
上述因素之间也存在一定的关联,比如 a.CBK 丢包是由RET 丢包引起的。若发送给邻居节点的报文次数超过重传极限,始终不可达,则认为邻居节点已不在自己的覆盖范围内,向上层报告错误后,上层启动路由局部修复,若失败则丢弃发包队列里路由链路与该邻居节点相关的所有数据报文,导致CBK 丢包产生。b. 重复
31
计算机学院网络工程实习报告
性报文接收DUP 也建立在RET 的基础之上。在RTS/CTS/ DATA/ACK 握手过程中,若接收节点成功接收了数报DATA,但它回复的ACK 没被发送节点收到时,发送节点则会重传DATA,接收节点收到第二次传送的DATA 后直接丢弃,导致DUP 丢包产生。c. 由于MAC层总是用重传来保证对报文的成功发送,而用于握手的控制报文随节点密度的增大冲突增多,导致报文发送的时延增大,在应用层发包速率不变的情况下,由于报文发送队列队满引起的IFQ 丢包产生。
4.4.2 隐藏节点
1.隐藏节点丢包率的awk思想:我们采用一定的时间间隔,在这个时间间隔内统计发送节点的发送包数和接收节点的接收包数,再根据丢包率的定义来计算。由于场景模拟中是节点0、1分别作为发送节点,而节点1为共同的接收节点,所以分开分别统计。
核心代码如图4.1所示:
32