1、 计算机学院专业实习报告目 录摘 要1关键词1第一章网络问题的理解21.1 隐藏节点和暴露节点21.1.1 隐藏节点21.1.2 暴露节点31.1.3 暴露节点和隐藏节点产生的原因及影响31.1.4 解决办法41.2 RTS/CTS握手机制51.2.1 浅析RTS/CTS51.2.2 RTS/CTS如何降低冲突51.2.3 RTS/CTS的退避算法61.3 NS2中相关问题分析61.3.1 NS2模拟的基本过程61.3.2 无线传输模型81.3.3 门限81.3.4 无线节点通信范围的设置8第二章 网络环境的建立与配置92.1 NS2软件的安装与配置92.1.1 软件安装92.1.2 相关配置
2、102.1.3 出现的错误分析112.2 隐藏节点仿真场景122.2.1 网络拓扑结构122.2.2 模拟仿真Tcl脚本122.2.3 参数的设置142.3 暴露节点仿真场景162.2.1 网络拓扑结构162.3.2 模拟仿真Tcl脚本162.3.3 参数设置18第三章 网络模拟运行203.1 隐藏节点的模拟203.1.1 Trace文件203.1.2 Nam文件223.2 暴露节点的模拟243.2.1 Trace文件243.2.2 Nam文件25第四章 网络性能仿真与分析264.1 Gawk语言简介264.1.1 gawk处理文档的过程264.2 gnuplot绘图274.3 性能参数分析模
3、型284.3.1 传输延时284.3.2 时延抖动284.3.3 丢包率284.3.4 吞吐量284.4 丢包率计算294.4.1 NS2中网络丢包因素简介294.4.2 隐藏节点304.4.3 暴露节点334.5 吞吐率计算354.5.1 隐藏节点354.5.2 暴露节点37结语39摘 要 网络协议的开发和完善需要进行许多验证和与性能相关的测试,在很多情况下这些工作是不可能都在实际的硬件系统上完成的,往往受限于资源、经费、技术条件和场地等因素的影响,使得我们难以在实际的网络系统中完成验证和测试工作,这时需要在虚拟的环境中进行模拟仿真。本次实习是基于网络模拟软件NS2(Network Simu
4、lator)的无线自组织网络协议的仿真,针对在无线自组织网络(Ad-Hoc)中存在的的隐藏节点与暴露节点问题,我们利用NS2在虚拟的环境中进行模拟仿真,加深对于CSMA/CA(载波侦听多路访问冲突避免)中RTS/CTS的机制解决无线网络传输中的冲突问题的理解。 在NS2模拟环境下,我们学习了NS2中无线传输模型和门限的观念,在此基础上,通过分别编写无线网络环境中的隐藏节点、暴露节点有无RTS/CTS机制的的Tcl脚本语言,利用NS命令生成相应的Trace(跟踪文件)与Nam(动画演示文件),并通过Gawk程序语言对所有的trace文件进行有关吞吐量、丢包率、时延、抖动等性能参数的分析与研究,为
5、了简化数据的分析,综合利用交互式绘图软件Gnuplot,将庞杂的数据资料转换成直观的图形,从而得出加入RTS/CTS对于解决无线网络传输中的数据包冲突问题的优势。关键词NS2 网络仿真 隐藏/暴露节点 传输模型 RTS/CTS 吞吐率 丢包率第一章 网络问题的理解 针对题目要求,我们做了以下几个方面的知识的学习,设计无线网路的结构、参数设置、策略等方面。1.1 隐藏节点和暴露节点1.1.1 隐藏节点 隐藏节点(如图1.1)是指在接收接点的覆盖范围内而在发送节点的覆盖范围外的节点。具体来说即在无线网络中,A节点可以被B节点看到,但是却不能被与B节点通信的C节点看到,那么A节点对于C节点来说就是一
6、个隐藏节点。隐藏终端由于听不到发送节点的发送而可能向相同的接收节点发送分组,导致分组在接收节点处冲突。冲突后发送节点要重传冲突的分组,这降低了信道的利用率。 图1.1 隐藏节点图示隐藏终端又可以分为隐发送终端和隐接收终端两种。在单信道条件下,隐发送终端通在发送数据报文前的控制报文握手来解决。但是隐接收终端问题在单信道条件下无法解决。当A要向B发送数据时,先发送一个控制报文RTS;B接收到RTS后,以CTS控制报文回应;A收到CTS后才开始向B发送报文,如果A没有收到 CTS,A认为发生了冲突,重发RTS,这样隐发送终端C能够听到B发送的CTS,知道A要向B发送报文,C延迟发送,解决了隐发送终端
7、问题。 对于隐接收终端,当C听到B发送的CTS控制报文而延迟发送时,若D向C发送RTS控制报文请求发送数据,因C不能发送任何信息,所以D无法判断时RTS 控制报文发生冲突,还是C没有开机,还是C时隐终端,D只能认为RTS报文冲突,就重新向C发送RTS。因此,当系统只有一个信道时,因C不能发送任何信息,隐接收终端问题在单信道条件下无法解决。1.1.2 暴露节点暴露节点(如图1.2)是指在发送接点的覆盖范围内而在接收节点的覆盖范围外的节点。暴露终端因听到发送节点的发送而可能延迟发送。但是,它其实是在接收节点的通信范围之外,它的发送不会造成冲突。这就引入了不必要的时延。图1.2 暴露节点图示暴露终端
8、又可以分为暴露发送终端和暴露接收终端两种。在单信道条件下,暴露接收终端问题是不能解决的,因为所有发送给暴露接收终端的报文都会产生冲突;暴露发送终端问题也无法解决,因为暴露发送终端无法与目的节点成功握手。1.1.3 暴露节点和隐藏节点产生的原因及影响由于ad hoc网络具有动态变化的网络拓扑结构,且工作在无线环境中,采用异步通信技术,各个移动节点共享同一个通信信道,存在信道分配和竞争问题;为了提高信道 利用率,移动节点电台的频率和发射功率都比较低;并且信号受无线信道中的噪声、信道衰落和障碍物的影响,因此移动节点的通信距离受到限制,一个节点发出的信号,网络中的其它节点不一定都能收到,从而会出现“隐
9、藏终端”和“暴露终端”问题。隐藏终端和暴露终端问题对ad hoc网络的影响: “隐藏终端”和“暴露终端”的存在,会造成Ad Hoc网络时隙资源的无序争用和浪费,增加数据碰撞的概率,严重影响网络的吞吐量、容量和数据传输时延。在ad hoc网络中,当终端在某一时隙内传送信息时,若其隐藏终端在此时隙发生的同时传送信息,就会产生时隙争用冲突。受隐藏终端的影响,接收端将因为数据碰撞 而不能正确接收信息,造成发送端的有效信息的丢失和大量时间的浪费(数据帧较长时尤为严重),从而降低了系统的吞吐量和量。当某个终端成为暴露终端后,由于它侦听到另外的终端对某一时隙的占用信息,而放弃了预约该时隙进行信息传送。其实,
10、因为源终端节点和目的终端节点都不一样,暴露终端是可以占用这个时隙来传送信息的。这样,就造成了时隙资源的浪费。1.1.4 解决办法 解决隐藏终端问题的思路是使接收节点周围的邻居节点都能了解到它正在进行接收,目前实现的方法有两种:一种是接收节点在接收的同时发送忙音来通知邻居节 点,即BTMA系列;另一种方法是发送节点在数据发送前与接收节点进行一次短控制消息握手交换,以短消息的方式通知邻居节点它即将进行接收,即 RTS/CTS方式。这种方式是目前解决这个问题的主要趋势,如已经提出来的CSMA/CA、MACA、MACAW等。还有将两种方法结合起来使用的多址协议,如DBTMA。对于隐藏发送终端问题,可以
11、使用控制分组进行握手的方法加以解决。一个终端发送数据之前,首先要发送请求发送分组,只有听到对应该请求分组的应答信号后才能发送数据,而是收到此应答信号的其他终端必须延迟发送。对于图1.1中所示的隐藏节点问题。当A要向B发送数据时,先发送一个控制报文RTS;B接收到RTS后,以CTS控制报文回应;A收到CTS后才开始向B发送报文,如果A没有收到 CTS,A认为发生了冲突,重发RTS,这样隐发送终端C能够听到B发送的CTS,知道A要向B发送报文,C延迟发送,解决了隐发送终端问题。 对于图1.2所示的暴露节点的延时问题,当B向A发送数据时,C只听到RTS控制报文,知道自己是暴露终端,认为自己可以向D发
12、送数据。C向D发送RTS控制报文。如果是单信道,来自D的CTS 会与B发送的数据报文冲突,C无法和D成功握手,它不能向D发送报文。1.2 RTS/CTS握手机制1.2.1 浅析RTS/CTS RTS(Request to Send)即请求发送,CTS(Clear to Send)即清除发送。RTS/CTS协议(Request To Send/Clear To Send)即请求发送/清除发送协议是被802.11无线网络协议采用的一种用来减少由隐藏节点问题所造成的冲突的机制。相当于一种握手协议,主要用来解决“隐藏终端”问题。“隐藏终端”(Hidden Stations)是指,基站A向基站B发送信息
13、,基站C未侦测到A也向B发送,故A和C同时将信号发送至B,引起信号冲突,最终导致发送至B的信号都丢失了。“隐藏终端”多发生在大型单元中(一般在室外环境),这将带来效率损失,并且需要错误恢复机制。1.2.2 RTS/CTS如何降低冲突对于RTS/CTS握手机制,IEEE802.11提供了如下解决方案。在参数配置中,若使用RTS/CTS协议,同时设置传送上限字节数-一旦待传送的数据大于此上限值时,即启动RTS/CTS握手协议。如图1.3所示:图1.3 RTS/CTS具体做法是:当发送节点有分组要传时,检测信道是否空闲,如果空闲,则发送RTS帧,接收节点收到RTS后,发CTS帧应答,发送节点收到CT
14、S后,开始发送数 据,接收节点在接收完数据帧后,发ACK确认,一次传输成功完成。如下图所示。如果发出RTS后,在一定的时限内没有收到CTS应答,发送节点执行退避算 法重发RTS。RTS/CTS交互完成后,发送和接收节点的邻居收到RTS/CTS后,在以后的一段时间内抑制自己的传输。延时时间取决于将要进行传输的 数据帧的长度,所以由隐藏终端造成的碰撞就大大减少了。采用链路级的应答(ACK)机制就可以在发生其它碰撞或干扰的时候,提供快速和可靠的恢复。 即使有冲突发生,也只是在发送 RTS时,这种情况下,由于收不到接收站点的CTS消息,大家再回头用DCF提供的竞争机制,分配一个随机退守定时值,等待下一
15、次介质空闲DIFS后竞争 发送RTS,直到成功为止。1.2.3 RTS/CTS的退避算法 在CSMA系列的接入技术中,当报文产生冲突时,发送者要执行退避算法,延迟一段随机时间后再次尝试发送。实行退避的目的是为了减小重发时在此发生冲突的 可能性。在ADHOC网络中,为了解决隐藏终端和暴露终端问题,引入了RTS-CTS握手机制。RTS和CTS控制报文之间可能会发生冲突。发生冲突时,发送者超时,等不到CTS,要执行退避算法,延迟一段随机时间后重发RTS。 二进制指数退避算法(BEB,Binary Exponential Backoff)BEB算法的Finc 和Fdec函数如下: 其中,COUNTER
16、是退避计数器的值, MAX 和MIN分别指退避计数器的最大和最小取值,每次发生冲突时,退避计数器的值加倍;每次交互成功时,退避计数器降至最小值MIN。 倍数增线性减算法(MILD)。在MILD 中,退避计数器的值是线性递减的,一次交互成功后,计数器的值减小,如果取值合理,COUNTER并不会像BEB 算法一样急剧减小,在后续的竞争信道中,所有节点获胜的机会几乎均等,实现了公平接入。发生冲突时,退避计数器增加 倍, 如果取值合理, COUNTER 也不会急剧增加。1.3 NS2中相关问题分析1.3.1 NS2模拟的基本过程 利用NS进行网络模拟是有一定的步骤的,进行一次仿真的步骤大致如下: 编写
17、Tcl脚本。Tcl脚本应该包含的内容有:配置模拟网络拓扑结构,确定链路的基本特性,如延迟、带宽和丢失策略;建立协议代理,包括端设备的协议绑定和通信业务量模型的建立;配置业务量模型的参数,从而确定网络上的业务量的分布;设置Trace对象,Trace对象能够把模拟过程中发生的特定类型的事件记录在Trace文件中。NS通过Trace文件来保存整个模拟过程中每个步骤的数据,待仿真完成后对所得到的数据进行分析研究。 编写其他的辅助过程,设定模拟结束时间,至此脚本编写完成。 用NS解释执行完成编写后的Tcl脚本。 对Trace文件进行分析,得出有用的数据。 对分析过的数据进行绘图处理,得出网络的性能。 调
18、整配置网络的拓扑结构和业务量模型,重新进行上述模拟过程。基本的过程如图1.4NS用户分析任务需要完善C+?代添加或修改C+模块重新编译NS完善?运行NS 进行模拟编写Tcl脚本代码分析模拟结果满足要求?仿真结束只需修改tcl修改Tcl脚本否否是否是否是 图1.4 使用NS 模拟仿真的基本过程1.3.2 无线传输模型无线网络模型主要有3种: 自由空间(Free Space):最理想的传输模型,只单纯地考虑从传送端到接收端直线距离的路径损耗(Path Loss) 双径地面反射(Two Ray Ground):除了考虑传送端到接收端直线距离的路径损耗外,也考虑了地面反射(Reflection of
19、Ground)的因素 阴影(Shadowing):用来仿真当传输端和接收端之间有障碍物时对传送信号的影响,此模型常用在仿真室内(in-door)的环境)模型这些模型是用来预知每个数据包到达接收端时的接收功率的(即预测在接收端所收到的信号强度,这个强度可以用来判断传送的数据能否成功地被接收)。每一个无线节点的物理层都有一个接收阈值,当接收功率低于接收阈值时,就会被标记错误并被 MAC层丢弃。三种模型主要就是一个计算Pr的公式,其中自由空间适用于距离比较短的时候,双径适用于长距离,同时双径 是自由空间的一个增强版,所以即使距离短 时,也可以使用双径模型来算,和自由空间是一样的。1.3.3 门限NS
20、2主要是用信号强度门限(Threshold)的方式来判断传送的封包是否能够成功地收到,NS2会设置一个信号检测(Carrier Sense)的门限CSThresh_来决定传送的封包是否能够被接收端所检测出来,当一个信号的强度小于CSThresh_时,则此封包会被实体层模块 (PHY Module)所丢弃,且MAC层不知道有这样的事情发生,意思就是说MAC层会认为现在的Channel没有数据在传送(Clear Channel)。另外,NS2会设置另一个RXThresh_,用来判断是否能成功地被接收端所接收,若是接收的封包强度大于RxThresh_,则此 封包能被成功地接收,处理过后往上层传送,但
21、若是信号小于RxThresh_,则此封包会被认为接收不完全或者有错误发生,在此,MAC层会把此封包所丢弃。1.3.4 无线节点通信范围的设置使用NS仿真无线的网络环境,需要设定无线节点的通信范围、NS的物理层定义了如下几个与无线节点通信范围相关的参数。 Pt_ -发送端参数,节点的发射功率,单位:W。 RXThresh_-接收端参数,信号接收门限,如果节点接收到的信号强度高于这个门限值,分组才可以被正确的接收,单位:W。 CPThresh_-接收端参数,载波侦听门限,当接收到的信号强度高于这个值时,才可以被天线所感知,但即使信号强度高于此值,仍需高于CPThresh才可以被正确解码,一般要求是
22、RTXhresh_大于两倍的CPThresh_,单位:W。 CSThresh_-接收端参数,信号感应门限,当两个信号发生碰撞,被某个节点同时接收时,若其中一个信号的强度是另一个的CSThresh倍以上时,虽然受到另一信号的干扰,但它仍能被解调,假如不满足这一条件,两个信号都不能被接收端感应。在这几个参数中,与无线节点通信范围直接相关的参数是Pt_和RXThresh_,无线信号在传输过程中会衰减,衰减的幅度与天气、传输距离和穿透介质有关,通过上述门限参数的设置,达到不同的模拟仿真目的。第二章 网络环境的建立与配置2.1 NS2软件的安装与配置2.1.1 软件安装NS必须在UNIX/Linux平台
23、下运行,因此一般需要安装UNIX/Linux操作系统。也可以采用Windows+虚拟机(VMware,Virtual PC)+NS组合的方式。若要在Ubuntu上运行NS,下面的软件是在安装和使用NS中需要用到的,必须先行安装。(1)编译器gcc、make:sudo apt_get install build-essential. (2) tk、tcl的库文件:sudo apt-get install tcl8.4. (3)与nam相关的库文件:sudo apt-get install libxmu-dev.NS安装步骤:(1)下载NS安装压缩包ns2-allione-2.34.tar.gz,
24、并放在安装路径的目录文件夹下。(2)进入该目录并解压ns2-allione-2.34.tar.gz包到当前目录: tar-vxzf ns2-allione-2.34.tar.gz. (3) 进入解压后的文件夹,然后开始安装NS:./install (4) 配置环境变量.(5)测试:在终端输入ns.如果输出%,表明安装成功。如图2.1: 图2.1 安装成功2.1.2 相关配置 安装成功后,还要设置环境变量:修改用户目录(包括个人用户和root用户,个人用户目录一般在/home 下面,root用户目录就是/root)下的.bashrc(该文件是隐藏文件),必须在该文件末尾追加以代码:验证时,可以运
25、行软件自带的例子,或者如图2.2所示:图2.2 验证代码2.1.3 出现的错误分析在安装时出现的一些问题,大致和网上汇总的问题一样,借鉴别人的方法:(1)安装时出现以下错误:这个问题是由于GCC版本提高后对于内部函数调用的简化造成的不兼容,解决办法如下:(2)安装成功后运行样例程序发现ns模拟没有问题就是不能自动调用nam!显示错误为:解决办法:2.2 隐藏节点仿真场景2.2.1 网络拓扑结构隐藏节点仿真场景设置:节点A、B 、C 之间的距离为100m, 节点之间的监听范围为150 m, 分组有效传送距离为120m, 仿真环境为500 m *500 m 正方形区域, 节点A 和B 之间建立一条
26、udp连接, 节点A 从0. 020 s以1MB 的速率向B 发送分组大小为1 000 Byte的CBR 流, 节点B 和C 之间也建立一条udp 连接, 节点C 从10.0 30s以1MB的速率向B 发送分组大小为1000 Byte的CBR 流。建立的网络拓扑结构如图2.3所示:N0N2N1UDPUDPCBRCBR其中N1处于N0,N2的侦听和传输范围内 图2.3 简单的网络拓扑结构其中N0、N1、N2表示节点, 表示链路, 表示节点应用层的代理代理,表示数据流,CBR流即等速率的数据流。 在这个拓扑中,节点N0和节点N2为发送节点,节点N1为接收节点,其中N0、N2在不同的时间段内向节点N
27、1 发送等速率、等大小的CBR数据流,数据流的参数及数据包的各项参数采用题目中所要求的。RTS/CTS机制的选用通过设置Mac/802_11 set RTSThreshold_ 的数值来体现。2.2.2 模拟仿真Tcl脚本通过分析题目,根据网络模拟的过程步骤,编写代码如下,其中路由协议选用DSDV协议,除了数据包发送范围、侦听范围、时间等参数外,其它参数均认为保持默认值。代码中设计了有无RTS/CTS机制的选项,通过Mac/802_11 set RTSThreshold_的值来体现,可以模仿隐藏节点有无RTS/CTS的情况。2.2.3 参数的设置 本次模拟仿真采用地面反射(TwoRayGrou
28、nd)模型,如果不指定参数,将会使用默认值,这些默认值在源码文件threshold.cc文件中定义。针对题目要求,我们修改了接收门限RXThresh_和载波侦听门限CPThresh_参数的值。参数修改过程如图2.4图2.4 Threshold 修改无线网络参数对于RTS/CTS机制的选取,代码如下: 当数据包大小小于3000时,系统取消握手机制,默认值为0,即设有握手机制。对于上述环境,设置步骤为: 在节点0、1之间建立一条UDP联机; 在UDP联机之上分别建立CBR应用程序; 在节点1、2之间建立一条UDP联机; 在UDP联机之上分别建立CBR应用程序; 在仿真环境中,设定相应的启动与结束时
29、间;2.3 暴露节点仿真场景2.2.1 网络拓扑结构暴露节点仿真场景设置:节点A、B、C、D 之间的距离均为100m, 节点之间的监听范围为120 m, 分组有效传送距离为100m, 仿真环境为500 m *500 m 正方形区域, 节点A 和B 之间建立一条udp连接, 节点A从0. 0 20 s以1MB 的速率向B 发送分组大小为1 000 Byte的CBR 流, 节点D 和C 之间也建立一条udp 连接, 节点C 从10.0 30s以1MB的速率向D 发送分组大小为1000 Byte的CBR 流。根据题目要求,建立的网络拓扑结构如图2.5所示:N0N1N2N3UDPUDPCBRCBRN1
30、和N2 分别处于彼此的侦听和传输范围内图2.5 暴露节点的网络拓扑图其中N0、N1、N2、N3表示节点, 表示链路, 表示节点应用层的代理代理, 表示数据流,CBR流即等速率的数据流。在这个拓扑中,节点N0和节点N2为发送节点,节点N1、N3为接收节点,其中N0、N2在不同的时间段内分别向节点N1 、N3发送等速率、等大小的CBR数据流,数据流的参数及数据包的各项参数采用题目中所要求的。RTS/CTS机制的选用通过设置Mac/802_11 set RTSThreshold_ 的数值来体现。2.3.2 模拟仿真Tcl脚本 针对上述要求,编写的tcl脚本代码如下: 与隐藏节点的脚本代码对比,暴露节
31、点的脚本代码主要是结点个数、时间以及载波侦听、数据传输范围发生变化,其它代码不变。2.3.3 参数设置模拟仿真依然采用地面反射(TwoRayGround)模型, 针对题目要求,我们需要对接收门限RXThresh_和载波侦听门限CPThresh_参数的值进行一定的修改。经过仿真,当节点之间的距离设为100,而数据包的传输范围也为100时,相当于在分界线上,仿真效果太差,即几乎收不到数据,所以对于数据包的传输范围稍微做了调整,变为105进行仿真模拟。修改接收门限RXThresh_和载波侦听门限CPThresh_参数的值。参数修改过程如图2.6: 图2.6 Threshold修改暴露节点场景参数对于
32、RTS/CTS机制的选取,代码如下: 当数据包大小小于3000时,系统取消握手机制,默认值为0,即设有握手机制。对于上述环境,设置步骤为: 在节点0、1之间建立一条UDP联机; 在UDP联机之上分别建立CBR应用程序; 在节点2、3之间建立一条UDP联机; 在UDP联机之上分别建立CBR应用程序; 在仿真环境中,设定相应的启动与结束时间;第三章 网络模拟运行执行上述Tcl脚本进行网络仿真,就可以得到网络运行过程的全部数据。为了能够分析网络运行的效能,仿真结果的数据必须能够完整收集。NS2 提供了两种基本数据追踪能力:跟踪和监控。跟踪能够将每个数据包在任何时刻的状态记录到指定的trace 文件中
33、,当链路或者队列中的每一个单个的数据包到达、离开或者丢弃时会记录下来。而监控则可有选择记录自己需要的数据,例如统计发送包、接收包、丢弃包的总数量。同时监控也可用来对所有包或指定单一数据流的监测。同时,NS2 还提供了动态显示仿真过程的nam观察器,输入指令,程序会自动调用nam动画演示模拟的过程。3.1 隐藏节点的模拟3.1.1 Trace文件运行第二章中的隐藏节点的tcl脚本代码后,自动生成跟踪文件即.tr文件无线网络的整个模拟过程有Trace文件记录。无线Trace支持使用cmu-trace对象,有3种类型:CMUTrace/Drop、CMUTrace/Recv、CMUTrace/Send
34、。模拟无线网络时,该三类对象用以记录由代理、路由层、MAC层或接口队列所产生的丢失、接收和发送分组的事件信息。NS的发展对于无线Trace文件的格式做了一定的修改,但主要的信息没有变化,具体的格式图3.1:图3.1 无线Trace文件的格式从左到右各项依次为: Event(事件):有四种类型,分别为s、r、d、f,分别表示分组的发送、接收、丢失和转发事件。 Time(时间):事件发生的时间。 Node(节点):事件发生的节点ID。 Layer(层次):发生时间所在的层。 Flags(标识项):虚线表示的标识。 Pkt id(分组UID):分组的id号。 Pkt type(分组的类型):分组类型
35、,有CBR(固定码率),VBR(可变)等。 Pkt size(大小):分组的大小。 MAC Layer info(MAC层的信息):包含4项内容:第1项是发送节点在无线信道上发送该分组所期望的时间,其值用十六进制表示,单位为秒;第2项内容是接收节点的MAC层地址;第3项内容是发送节点的MAC地址;第4项内容表示封装的分组类型,例如0X800表示IP分组,0X806表示ARP分组。 -:分隔符。 IP info(IP层信息):包含4项内容:第1项是发送节点的源节点地址,格式为“节点号:端口号”;第2项是接收分组的目的节点的地址,格式为“节点号:端口号”;第3项是分组的TTL(IP协议中的值,判断
36、网络数据传输时间是否太长而丢弃);第4项是源节点到目的节点的跳数。对于隐藏节点有无RTS/CTS机制我们生成以下两个trace文件,分别如图3.2,,3.3所示:图3.2 有RTS/CTS的trace文件图3.3 无RTS/CTS的trace文件从图中可以清楚的看到,有无握手机制的跟踪文件的区别,同时在1.5s时启动代理后,0节点的AGT层都发射了数据包。具体的数据分析见第四章。3.1.2 Nam文件 运行第二章中的Tcl脚本,可以生成对应的nam动画演示文件,tcl中可以对节点、链路、队列和Agent等对象进行动画显示方面的属性控制,NAM动画显示的命令如下: 节点: 链路和队列:可以显示链
37、路的方向、颜色等。 Agent: 在某一个节点上绑定代理。 针对题目要求,做出的NAM动画如图3.4,3.5所示:图3.4 有RS/CTS的NAM文件图3.5 无RTS/CTS的NAM文件3.2 暴露节点的模拟3.2.1 Trace文件有关Trace文件格式等详细信息见3.1节隐藏节点的Trace文件分析,这里主要展示暴露节点tcl文件生成的数据文件,如图3.6,3.7所示:图3.6 有RTS/CTS的暴露节点的Trace文件图3.7 无RTS/CTS的暴露节点的Trace文件Trace文件的各项名称及表示的意义详见上一节。3.2.2 Nam文件 暴露节点tcl生成的NAM文件如图3.8,3.
38、9所示:图3.8 暴露节点有RTS/CTS机制的NAM图3.9 暴露节点无RTS/CTS机制的NAM第四章 网络性能仿真与分析4.1 Gawk语言简介4.1.1 gawk处理文档的过程Gawk是一种对文档资料具有很强处理能力的程序语言,简短的几句代码就可以完成对数据的修改、对比、抽象等操作。Gawk 语言将所要处理的文档分解为一条条的记录(一般是数据文件中的一行),每条记录默认以空格或TAB键分割为一个个字段。在对记录的处理过程中,一般都要对记录中的字段进行操作。对记录中字段提取可以采用字段变量“$1,$2,$3”等,gawk读入记录后已自动把字段值存入相应的变量中。具体例子如下:EventT
39、imeNodeLayerPkt idPkt typePkt sizeSend id$1$2$3$4$6$7$8$14Gawk处理文档的过程是针对档案的每一条记录搜寻指定的模式(pattern),当记录中有符合指定的模式时,gawk就会在此记录执行被指定的动作(Action),按照这种模式直到文档的结束。执行Gawk程序指令如下:即gawk f program inputfilename savefilename在实习中利用awk主要处理吞吐量和丢包率。4.2 gnuplot绘图 在LINUX终端运行命令gnuplot绘图环境,输入quit或exit或q退出。进入gnuplot绘图环境以后有两种
40、工作方式: 交互式:直接在绘图环境中编写绘图命令; 批处理方式:将绘图命令写入一个文件中,使用load命令载入文件。Gnuplot中的命令和函数名是区分大小写的,在gnuplot中二维图形采用plot命令绘制,三维图形采用splot命令绘制,还有一个replot命令,用来重复最近一次使用到的plot或splot命令。Plot绘图命令可以从文件中读取数据绘制数据曲线,非常方便实验结果的描绘。也可以设置图形的显示属性,比如坐标轴、网格(grid)、Label(线条、文字注解)、图的大小和位置等参数。具体如下:set xtics 1.0 ;#设置X轴的主刻度的宽度set grid ;#画图添加网格p
41、lot sin(x) with lines(points);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 时延抖动
42、网络的状态随时在变化,网络的流量也是不稳定,当流量较大的时候,许多分组就在节点的队列中排队等候,因此各个分组在传输过程中的时延并不一致。时延抖动描述的是网络传输延时的变化情况。如果时延抖动大,说明网络不稳定,反之网络较稳定。计算公式:J(i) = D(i) - D(i-1)在实际网络中,常以分组的最小延时和最大延时与平均延时作比较。4.3.3 丢包率 丢包率定义了传输期间网络丢失的分组的数量,通常是在特定时间段内丢失的分组占传输的数据总量的比例。丢包率是反映网络质量的一个重要参数。在分析Trace文件时,以丢失分组的数量与发送分组的数量的比值来衡量丢包率的大小。 L=(NSPNRP)/NSP其
43、中:NSP表示节点发送的分组数目,NRP表示节点接收的分组数目。4.3.4 吞吐量 网络吞吐量是网络性能的一个重要参数,指在不丢包的情况下单位时间内节点可以接收的数据量,单位是字节每秒或比特每秒, 在分析Trace文件时,使用以下公式: TH(i) = (TB(i)TB(m)/(RT(i)RT(m)其中:TB(i)是指到第i个分组被目的节点接收时已经传输的数据总量,RT(i)是指第i个包的接收时间。im,表示计算从第m个分组到第i个分组的吞吐量。4.4 丢包率计算 4.4.1 NS2中网络丢包因素简介ns-2 仿真器能模拟无线网络中的报文丢弃事件。报文丢弃包括数据报文丢弃和控制报文丢弃,以下统
44、称为丢包。无线网络中,丢包主要发生在网络协议栈的路由层和MAC 层,主要的丢包因素和其对应的协议层如表4.1 所示。标识协议层丢包因素 NRTERTRNo route availableTTLRTRTTL reached zeroCBKRTRMAC callbackIFQIFQNo bufferARPIFQARP fullCOLMACCollisionRETMACRetry count execeedDUPMACDuplication表4.1 NS2中网络丢包因素简介其中,COL 是因为隐藏节点带来的报文冲突,即节点在接收报文时有其它报文到达;RET 是达到了报文重传次数的极限;DUP 是接收
45、到重复的报文而导致的丢包;ARP 是因为达到了发送ARP请求的最大次数;NRTE 是找不到可用的路由;TTL 是达到了报文的最大生存周期;CBK是节点无法与下一跳邻居节点通信使得路由断链且局部修复失败时导致的丢包;IFQ 是在报文发送队列队满时引起的丢包。上述因素之间也存在一定的关联,比如 a.CBK 丢包是由RET 丢包引起的。若发送给邻居节点的报文次数超过重传极限,始终不可达,则认为邻居节点已不在自己的覆盖范围内,向上层报告错误后,上层启动路由局部修复,若失败则丢弃发包队列里路由链路与该邻居节点相关的所有数据报文,导致CBK 丢包产生。b. 重复性报文接收DUP 也建立在RET 的基础之上。在RTS/CTS/ DATA/ACK 握手过程中,若接收节点成功接收了数报DATA,但