无线网络传输问题探讨及效果分析

1、Destination
(1)了解什么是隐藏节点和暴露节点问题
(2)了解RTS/CTS是如何降低隐藏节点问题发生的概率,以提升系统效果
(3)了解NS2中无线传输模型和门限的概念
(4)了解如何在NS2中建立无线自组织网络(Wireless Ad Hoc Networks)
(5)学习分析无线自组织网络路由协议(Ad Hoc Routing Protocol)的效果
(6)了解802.11b DCF和802.11e EDCF机制运作
(7)探讨802.11b DCF和802.11e EDCF机制对多媒体数据流所提供的传输服务质量
(8)了解802.11b所提供的吞吐量上限值
(9)了解哪些因素会影响802.11b的吞吐量
(10)了解什么是效果异常(Performance Anomaly)现象
(11)了解现有改善效果异常的方法及如何提升系统效果

2、Background
(1)隐藏节点(隐终端)
隐藏终端是指在接收接点的覆盖范围内而在发送节点的覆盖范围外的节点。隐藏终端由于听不到发送节点的发送而可能向相同的接收节点发送分组,导致分组在接收 节点处冲突。冲突后发送节点要重传冲突的分组,这降低了信道的利用率。
隐藏终端又可以分为隐发送终端和隐接收终端两种。在单信道条件下,隐发送终端可以通过在发送数据报文前的控制报文握手来解决。但是隐接收终端问题在 单信道条件下无法解决。

当A要向B发送数据时,先发送一个控制报文RTS;B接收到RTS后,以CTS控制报文回应;A收到CTS后才开始向B发送报文,如果A没有收到 CTS,A认为发生了冲突,重发RTS,这样隐发送终端C能够听到B发送的CTS,知道A要向B发送报文,C延迟发送,解决了隐发送终端问题。 

对于隐接收终端,当C听到B发送的CTS控制报文而延迟发送时,若D向C发送RTS控制报文请求发送数据,因C不能发送任何信息,所以D无法判断时RTS 控制报文发生冲突,还是C没有开机,还是C时隐终端,D只能认为RTS报文冲突,就重新向C发送RTS。因此,当系统只有一个信道时,因C不能发送任何信 息,隐接收终端问题在单信道条件下无法解决。

(2)暴露节点(暴露终端)

暴露终端是指在发送接点的覆盖范围内而在接收节点的覆盖范围外的节点。暴露终端因听到发送节点的发送而可能延迟发送。但是,它其实是在接收节点的通信范围之外,它的发送不会造成冲突。这就引入了不必要的时延。

暴露终端又可以分为暴露发送终端和暴露接收终端两种。在单信道条件下,暴露接收终端问题是不能解决的,因为所有发送给暴露接收终端的报文都会产生冲突;暴露发送终端问题也无法解决,因为暴露发送终端无法与目的节点成功握手。

当B向A发送数据时,C只听到RTS控制报文,知道自己是暴露终端,认为自己可以向D发送数据。C向D发送RTS控制报文。如果是单信道,来自D的CTS 会与B发送的数据报文冲突,C无法和D成功握手,它不能向D发送报文。

在单信道下,如果D要向暴露终端C发送数据,来自D的RTS报文会与B发送的数据报文在C处冲突,C收不到来自D的RTS,D也就收不到C回应的CTS报文。 因此,在单信道条件下,暴露终端问题根本无法得到解决!

(3)隐藏终端和暴露终端问题产生的原因 
由于ad hoc网络具有动态变化的网络拓扑结构,且工作在无线环境中,采用异步通信技术,各个移动节点共享同一个通信信道,存在信道分配和竞争问题;为了提高信道 利用率,移动节点电台的频率和发射功率都比较低;并且信号受无线信道中的噪声、信道衰落和障碍物的影响,因此移动节点的通信距离受到限制,一个节点发出的 信号,网络中的其它节点不一定都能收到,从而会出现“隐藏终端”和“暴露终端”问题。

隐藏终端和暴露终端问题对ad hoc网络的影响 
“隐藏终端”和“暴露终端”的存在,会造成ad hoc网络时隙资源的无序争用和浪费,增加数据碰撞的概率,严重影响网络的吞吐量、容量和数据传输时延。在ad hoc网络中,当终端在某一时隙内传送信息时,若其隐藏终端在此时隙发生的同时传送信息,就会产生时隙争用冲突。受隐藏终端的影响,接收端将因为数据碰撞 而不能正确接收信息,造成发送端的有效信息的丢失和大量时间的浪费(数据帧较长时尤为严重),从而降低了系统的吞吐量和量。当某个终端成为暴露终端后,由 于它侦听到另外的终端对某一时隙的占用信息,而放弃了预约该时隙进行信息传送。其实,因为源终端节点和目的终端节点都不一样,暴露终端是可以占用这个时隙 来传送信息的。这样,就造成了时隙资源的浪费

隐藏终端和暴露终端问题的解决方法 
解决隐藏终端问题的思路是使接收节点周围的邻居节点都能了解到它正在进行接收,目前实现的方法有两种:一种是接收节点在接收的同时发送忙音来通知邻居节点,即BTMA系列;另一种方法是发送节点在数据发送前与接收节点进行一次短控制消息握手交换,以短消息的方式通知邻居节点它即将进行接收,即RTS/CTS方式。这种方式是目前解决这个问题的主要趋势,如已经提出来的CSMA/CA、MACA、MACAW等。还有将两种方法结合起来使用的多址协议,如DBTMA。

对于隐藏发送终端问题,可以使用控制分组进行握手的方法加以解决。一个终端发送数据之前,首先要发送请求发送分组,只有听到对应该请求分组的应答信号后才能发送数据,而是收到此应答信号的其他终端必须延迟发送。

在单信道条件下使用控制分组的方法只能解决隐发送终端,无法解决隐藏接收终端和暴露终端问题。为此,必须采用双信道的方法。即利用数据信道收发数据,利用控制信道收发控制信号 

(4)RTS-CTS 握手机制  
RTS(Request to Send,请求发送)、CTS(Clear to Send ,清除发送). 

RTS/CTS机制是对CSMA的一种改进,它可以在一定程度上避免隐藏终端和暴露终端问题。采用基于RTS/CTS的多址协议的基本思想是在数据传输之前,先通过RTS/CTS握手的方式与接收节点达成对数据传输的认可,同时又可以通知发送节点和接收节点的邻居节点即将开始的传输。邻居节点在收到RTS /CTS后,在以后的一段时间内抑制自己的传输,从而避免了对即将进行的数据传输造成碰撞。这种解决问题的方式是以增加附加控制消息为代价的。 

从帧的传输流程来看,基于RTS/CTS的多址方式有几种形式,从复杂性和传输可靠性角度考虑,可采用RTSCTS-Data-ACK的方式。具体做法 是:当发送节点有分组要传时,检测信道是否空闲,如果空闲,则发送RTS帧,接收节点收到RTS后,发CTS帧应答,发送节点收到CTS后,开始发送数 据,接收节点在接收完数据帧后,发ACK确认,一次传输成功完成。如下图所示。如果发出RTS后,在一定的时限内没有收到CTS应答,发送节点执行退避算 法重发RTS。RTS/CTS交互完成后,发送和接收节点的邻居收到RTS/CTS后,在以后的一段时间内抑制自己的传输。延时时间取决于将要进行传输的 数据帧的长度,所以由隐藏终端造成的碰撞就大大减少了。采用链路级的应答(ACK)机制就可以在发生其它碰撞或干扰的时候,提供快速和可靠的恢复。 

RTS-CTS 握手机制的缺陷  
1、不同节点发送的RTS和控制信息发生冲突

2、多个CTS信息被不同的邻居节点收到,从而导致冲突。

RTS-CTS 握手机制中的退避算法 
在CSMA系列的接入技术中,当报文产生冲突时,发送者要执行退避算法,延迟一段随机时间后再次尝试发送。实行退避的目的是为了减小重发时在此发生冲突的 可能性。在ADHOC网络中,为了解决隐藏终端和暴露终端问题,引入了RTS-CTS握手机制。RTS和CTS控制报文之间可能会发生冲突。发生冲突时, 发送者超时,等不到CTS,要执行退避算法,延迟一段随机时间后重发RTS。

产生这个随机时间的“种子”叫做退避计数器。退避计数器的值直接影响着产生的延迟时间的长短。

显然,节点退避计数器的值越短,它抢占信道的能力就越强,反之,它抢占信道的能力就越弱。也就是说,退避计数器的值反映了节点抢占接入信道的能力。所以, 维护退避计数器的值是非常重要的。

通常退避算法包括二进制指数退避算法、倍数增线性减算法。 

退避算法

1.二进制指数退避算法(BEB,Binary Exponential Backoff)BEB 算法的Finc 和Fdec 函数如下: 其中,COUNTER 是退避计数器的值, MAX 和MIN 分别指退避计数器的最大和最小取值, 每次发生冲突时, 退避计数器的值加倍; 每次交互成功时, 退避计数器降至最小值MIN。

BEB 算法:  Finc=min(2×COUNTER,MAX), Fdec=MIN; 

BEB有两个缺点: 1)当一次交互成功时,退避计数器的值就降到最低值, 不能正确反映信道的争用状况; 2)BEB会带来不公平现象,一次交互成功后, 节点的退避计数器值降为最小, 而其他不成功的节点的退避计数器的值较大, 在后续的竞争中, 退避计数器值小的节点在竞争中获胜的可能性大。

2.倍数增线性减算法(MILD) 
倍数增线性减(MILD,Multiplicative Increase Line Decrease) 
算法是对BEB 算法的改进,该算法的Finc 和Fdec 函数如下:

Finc=min(α×COUNTER, MAX) ;

Fdec=max(COUNTER-β, MIN) ;

α和β是两个可调节的参数

在MILD 中, 退避计数器的值是线性递减的, 一次交互成功后,计数器的值减小β,如果β取值合理, COUNTER 并不会像BEB 算法一样急剧减小, 在后续的竞争信道中, 所有节点获胜的机会几乎均等,实现了公平接入。发生冲突时, 退避计数器增加α 倍, 如果α取值合理, COUNTER 也不会急剧增加。但MILD 也没有完全消除不公平现象。 

(5)传输模型与门限

主要是3种模型。自由空间(Free Space,最理想的传输模型,只单纯地考虑从传送端到接收端直线距离的路径损耗(Path Loss)),双径地面反射(Two Ray Ground,除了考虑传送端到接收端直线距离的路径损耗外,也考虑了地面反射(Reflection of Ground)的因素),阴影(Shadowing,用来仿真当传输端和接收端之间有障碍物时对传送信号的影响,此模型常用在仿真室内(in-door)的环境)模型。模型的实现在现在的~ns/mobile中有相应的propogation.cc/h, tworayground.cc/h,shadowing.cc/h

这些模型是用来预知每个数据包到达接收端时的接收功率的(即预测在接收端所收到的信号强度,这个强度可以用来判断传送的数据能否成功地被接收)。每一个无线节点的物理层都有一个接收阈值,当接收功率低于接收阈值时,就会被标记错误并被 MAC层丢弃。

三种模型主要就是一个计算Pr的公式,其中自由空间适用于距离比较短的时候,双径适用于长距离,同时双径是自由空间的一个增强版,所以即使距离短 时,也可以使用双径模型来算,和自由空间是一样的。这个距离界线就是4*PI*ht*hr/波长。

NS2中, 没有设定传播距离的参数,但是可以通过设定发射功率,或者接收阈值来确定,这里有一个换算的公式,其实还是上面的那个公式,如果要用程序,可以使用

$ cd ns/indep-utils/propagation/
$ g++ -lm threshold.cc -o threshold

$./threshold.exe   //使用说明

$ threshold -m TwoRayGround 250  或$ ./threshold.exe -m TwoRayGround 250  //TwoRayGround,有效传输距离250m,由其计算可知设置有效传输距离为250m时,就需要在模拟的tcl中设置传送功率为0.281838,传送频率为9.14e+08,传送天线增益为1,接收天线增益为1,传送天线高度为1.5,接收天线高度为1.5,另外,RxThresh_要设置为3.6426e-10.

这里得到一些参数,就是接收阈值的参数。

NS2主要是用信号强度门限(Threshold)的方式来判断传送的封包是否能够成功地收到,NS2会设置一个信号检测(Carrier Sense)的门限CSThresh_来决定传送的封包是否能够被接收端所检测出来,当一个信号的强度小于CSThresh_时,则此封包会被实体层模块(PHY Module)所丢弃,且MAC层不知道有这样的事情发生,意思就是说MAC层会认为现在的Channel没有数据在传送(Clear Channel)。另外,NS2会设置另一个RxThresh_,用来判断是否能成功地被接收端所接收,若是接收的封包强度大于RxThresh_,则此封包能被成功地接收,处理过后往上层传送,但若是信号小于RxThresh_,则此封包会被认为接收不完全或者有错误发生,在此,MAC层会把此封包所丢弃(可参考~ns/mac/wireless-phy.h和wireless-phy.cc)。

(6)两种无线传输方式 :一种是必须通过基地台,由中央控制的传输模式(Infrastructure),另一种是无线自组织网络(Wireless Ad Hoc Network),此种传输模式的最大特色就是所有节点以对等方式进行无线网络存取,不需要通过无线基地台。

(7)无线自组织网络路由协议
可分成两大类:
a、Proactive Routing Protocol,也称为路由表协议(Table-Driven Protocol)
每个无线节点间隔固定一段时间就会发送一些路径相关信息,各个无线节点就根据收集进来的信息去改变自己的路径表。当网络拓扑改变使得原本的路径无效,或有任何新的路径建立时,所有的节点都会收到路径状态的更新,这种持续地更新所有的节点可随时都有完整的路径用来传送数据。主动路由协议可以让每个送出去的封包立刻得知到达目的地的路径,不会有任何的延迟。但是这种协议必须周期性地去广播信息,所以相当浪费无线网络的频宽与无线节点的能量,但是如果要降低广播所造成大量频宽的消耗,就要拉长每次广播的间隔时间,这又会造成路径表不能正确反映网络拓扑的变化。Wireless Routing Protocol(WRP)、Destination-Sequenced Distance-Vector Protocol(DSDV)就属于这一类,这类协议也称为Table-Driven Protocol。路径表在每次路径联机状态有改变时就会被更新,而且新路径的决定也是利用已存储在路径表中的信息。路由表协议包括有:DSDV、CGSR、WRP等。

序列目的节点距离矢量路由协议(Destination-Sequenced Distance-Vector Routing) ,DSDV是基于经典Bellman-Ford路由选择过程的改进型路由表算法。DSDV以路由信息协议为基础。它仅适用于双向链路,是AD HOC 路由协议发展较早的一种。依据DSDV,网络中的每一个节点都保存有一个记录所有目的节点和到目的节点跳数的路由表(routing table)。表中的每一个条目都有一个由目的节点注明的序列号(sequence number),序列号能帮助节点区分有效和过期的路由信息。标有更大序列号的路由信息总是被接收。如果两个更新分组有相同的序列号,则选择跳数(metric)最小的,而使路由最优(最短)。路由表更新分组在全网内周期性的广播而使路由表保持连贯性。

群首信关切换路由协议(Clusterhead Gateway Switch Routing)
,CGSR和DSDV的不同之处在于寻址方式和网络组织过程。CSGR是有几种路由选择方式的分群的多跳移动无线网络。通过群首控制网络节点,信关隔离 群,信道接入可以分配路由和带宽。群首选择算法用来选择一个节点作为群首并在群内应用分布式算法。信关为那些在两个或多个群首的通信半径之内的节点。节点 发送数据包首先把它传送到群首,通过信关到另一个群首,一直重复此过程直到目的节点所在群的群首收到此数据包。然后,数据被传送到目的节点。用此方式,每 个节点必须保存一个群成员表(cluster member table)和路由选择表(routing table)。群首方式的缺陷在于当群首频繁的变换时,节点忙于选择群首而不是数据转发,这样反而会影响路由协议的实行。因此,当群内成员发生变化时,产 生了最小群变化协议(Least Cluster Change)。利用LCC,只有当一个群内有两个群首或一个节点在所有的群首通信范围之外时,群首才发生变换。

无线路由协议(The Wireless Routing Protocol) ,WRP是以维护网络中所有节点间的路由信息为目的的基于表的协议。依据WRP,每一个节点都需保存距离表、路由表、链路开销表以及信息转发表(Message Retransmission List)。节点通过更新分组告知其它节点链路的变化状况,通过接收相邻节点的确认分组以及其它信息来获知其它节点的情况。在WRP中,节点为网络中的每一个目的 节点交流距离和下一跳到最后一跳的路由信息。WRP属于有特殊例外的路径搜寻算法。它通过强迫每一节点检查所有相邻节点发送的信息记录来避免无穷计 (count-to-infinity)问题。这最终会消除环路现象和当链路断开时提供更快的路由收敛。

b、Reactive Routing Protocol,也称为源始发的按需路由协议(source-initiated on-demand driven protocol)
这种路由选择方式只有当源节点需要时才建立路由。当一个节点需要到目的节点的路由时,它会在全网内开始路由发现过程。一旦检验完所有可能的路由排列方式或找到新的路由后就结束路由发现过程。路由建立后,由路由维护程序来维护这条路由直到它不再被需要或发生链路断开现象。源始发的按需路由协议有:DSR、AODV、LMR、TORA、ABR、SSR等。

自适应源路由协议(Dynamic Source Routing), DSR是基于源路由概念的按需自适应路由协议。移动节点需保留存储节点所知的源路由的路由缓冲器。当新的路由被发现时,缓冲器内的条目随之更新。DSR主要由两部分组成:路由发现和路由维护。当一个节点欲发送数据到目的节点,它首先查询路由缓冲器看是否有到目的节点的路由。如果有,则采用此路由发送数据。另一方面,如果没有,源节点就开始路由发现程序。路由维护通过路由错误分组(route error)和确认分组来实现。当链路层遇到传输问题时,错误分组开始传送。一旦收到错误分组,节点就会把发生错误的那一跳从路由存储缓冲器移走,并会在所有包含那一条的路由里删掉那一跳。除路由错误分组外,确认分组用来验证路由连接的正确运行。

自组织网按需距离矢量路由协议(Ad Hoc On-Demand Distance Vector Routing) ,AODV实质上就是DSR和DSDV的综合,它借用了DSR中路由发现和路由维护的基础程序以及DSDV中跳到跳的路由选择、序列号码及周期性的更新信息的用法。和DSDV保存完整的路由表不同的是,AODV通过建立基于按需的路由来减少路由广播的次数,这是AODV对DSDV的重要改进。和DSR相 比,AODV的好处在于源路由并不需包括在每一个数据包中,这样会使路由协议的开销有所降低。AODV是一个纯粹的按需路由系统,那些不在路径内的节点不 保存路由信息也不参与路由表的交换。

临时排序路由算法(Temporally-Ordered Routing Algorithm) ,TORA是基于‘逆向连接’概念的高度自适应、环路开放、分布式路由算法。TORA主要应用在动态移动网络环境内。它是源始发的路由协议,能向每一对 源-目的节点提供多径路由。TORA的关键思想是把路由信息的传送限制在网络拓扑结构变化处附近较小的范围内。为了实现这一点,节点必需保留一跳之远的节 点的路由信息。TORA主要实现三个基本功能:路由建立、路由维护、路由删除。在路由建立和路由维护的过程中,节点应用‘高度(height)’ metric来建立一个以目的节点为根部的指导性的非循环的图表(Directed Acyclic Graph)。这样链路根据相邻两个节点的高度值来确定向上或向下的方向。

基于联合的路由协议(Associativity-Based Routing) ,ABR协议是环路开放的、分组复用的,它为自组织网定义一个新的度量(metric)。这个metric就是联合稳定性程度(dgree of associativity stability)。在ABR,路由的选择基于节点的联合稳定性程度。节点周期性地发送信标来表明自身的情况。一旦相邻节点收到信标,它们的联合路由表 就会被更新。每接收一个信标,节点就增加一个关于发送信标的节点的联合条目。联合稳定性通过节点和其它节点在时间和空间的连接稳定性来定义。高联合稳定性 也许意味着节点的低移动率,而低稳定性意味着高移动率。当节点的相邻节点或节点本身移动出相邻的范围时,联合条目会被刷新。ABR的基本目标是为自组织网 找出生命时间更长的路由。

信号稳定性路由协议(Signal Stability Routing) ,SSR是基于自适应路由协议的按需路由协议。SSR选择路由是基于节点间信号的强度以及节点位置的稳定性。这种路由选择标准有选择强连接性路由的作用。SSR可分成两部分:DRP(Dynamic Routing Protcol)动态路由协议和SRP静态路由协议(Static Routing Protcol)。DRP主要负责路由表(Routing Table)和信号稳定程度表(Signal Stability Table)的维护。所有的传送过程及接收都在DRP进行。SRP则负责处理节点接收的数据。

评估参数:
1)封包送达比例(Packet Delivery Fraction):由CBR来源端产生的封包传送数目与到成功到达目的地端封包数目的比值。
2)封包平均点到点延迟时间(Average end-to-end Delay of Data Packets):这包含所有可能的延迟时间的总和,如发现路径的缓冲时间、MAC层的重传时间、传递时间等。
3)第一个封包收到的时间:这个参数可以用来评估路由表的收敛时间,若越早收到,则表示收敛速度比较快,这样才能比较早把第一个封包从传送端送到接收端。

(8)CSMA/CA

(9)802.11b分布式协调功能DCF

(10)802.11e增强分布式通道存取EDCA

(11)802.11b的物理层和MAC层

(12)最大吞吐量

(13)效果异常(Performance Anomaly)
针对效果异常的现象,整体而言目标有两点,第一点是改善整体系统的效果,第二点是效果的差异性,不同的传输速度应该有不同的效果,传输速度快的效果应该比传输速度慢的效果好。

以下是两种用来解决效果异常的方法:
1)改变传输的frame大小,原理为——传输速度快的节点使用较大的frame,而较慢的节点使用较小的frame,因此当速度慢的节点竞争到频道的使用权时,并不会占用频道太多的时间,频道很快又可以放给所有的节点竞争,以此提升系统的效果
2)改变各节点初始的竞争窗口大小(CW),让速度快的节点较容易竞争到频道的使用权,较慢的节点越不容易竞争到频道使用权。

3、Analysis
(1)$ ns test_2nodes.tcl
(2)$ ns test_hidden_terminal.tcl
(3)$ ns test_exposed_terminal.tcl
(4)cbrgen和setdest两个小工具的使用 //程序位置在 indep-utils/cmu-scen-gen
ns cbrgen -type cbr -nn 5 -seed 1 -mc 2 -rate 10.0 >cbr_n5_m2_r10
//产生TCP流或CBR流,type指定产生的数据流为cbr,nn指定共有5个节点,seed指定随机数产生器的种子为1,mc指定最大联机数为2,也就是所产生的数据流数目会小于或等于最大联机数,rate指定每秒送出去多少个封包,若使用的是CBR,则封包固定为512B,且rate后必须写10.0,不能写作10,不然会出错,最后将输出结果存放到指定文件。
./setdest -n 2 -p 0.0 -M 20.0 -t 10 -x 300 -y 300 >scen_2n_0p_20M_10t_300_300
//这个工具可用来随机产生无线网络仿真所需要的节点移动场景。一开始,可以在指定的矩形范围内产生指定数量的节点,然后节点会往某随机决定的位置前进,到达目的地后会停留一段时间(或者不停留),再选择另一个随机目的地移动。-n指定场景中有两个节点,-p指定当某节点到达目的地后要停留的时间,0.0表示不停留,-M指定节点随机移动时速度的最大值,单位是m/s,其速度在[0,M]中随机选择,-t指定仿真场景持续地时间,单位是s,-x指定移动区域的长度,x轴方向,单位是m,-y是y轴方向,最后将输出结果存放到指定文件。

(5)ns cbrgen.tcl -type cbr -nn 100 -seed 1 -mc 10 -rate 10.0 >cbr_n100_m1 //产生数据流
./setdest.exe -n 100 -p 100.0 -M 10.0 -t 100 -x 300 -y 300 >scen_100n_10M_100t_300_300 //产生无线网络移动场景
$ ns lab23_1.tcl DSDV 或 $ ns lab23_1.tcl AODV 或 $ ns lab23_1.tcl DSR
$ awk -f parse.awk trace1.tr
从实验结果看,DSDV可以较早收到第一个封包,这是因为DSDV是表驱动路由协议,数据传送前,已经有已知路径,所以不需要再去寻找新的路径,因此较早收到第一个封包

(6) ./setdest.exe -n 100 -p 0.0 -M 10.0 -t 100 -x 500 -y 500 >scen_100n_0p_10M_100t_500_500
$ ns lab23_2.tcl DSDV 或 $ ns lab23_2.tcl AODV 或 $ ns lab23_2.tcl DSR
$ awk -f parse.awk trace1.tr
从实验结果看,若是在节点快速移动时,使用AODV或DSR可以较早收到第一个封包,这是因为DSDV的路径不见得会有可使用的路径,等到更新路由表后,再找到有效地路径时,表驱动路由协议已经花了一段时间,因此收到第一个封包的时间值会比较大。

(7)$ ns lab24.tcl 0
$ ./etmp4.exe sd rd foreman_qcif.st foreman_qcif.mp4 foreman_qcife
$ ./ffmpeg.exe -i foreman_qcife.mp4 foreman_qcife.yuv
$ ./avgpsnr.exe 176 144 420 foreman_qcif.yuv foreman_qcife.yuv
avgerage psnr:34.475589
$ awk -f delay.awk delay_foreman_qcife.txt
average delay:0.780298 sec
max delay:1.222355 sec

(8)$ ns lab24.tcl 1
$ ./etmp4.exe sd rd foreman_qcif.st foreman_qcif.mp4 foreman_qcife
$ ./ffmpeg.exe -i foreman_qcife.mp4 foreman_qcife.yuv
$ ./avgpsnr.exe 176 144 420 foreman_qcif.yuv foreman_qcife.yuv
avgerage psnr:34.887196
$ awk -f delay.awk delay_foreman_qcife.txt
average delay:0.067647 sec
max delay:0.230436 sec

$ ns lab24.tcl 1
invalid command name "Mac/802_11e"
解决办法:
http://www.tkn.tu-berlin.de/research/802.11e_ns2/readme_EDCA.txt
http://sourceforge.net/projects/ieee80211e-ns2/files/IEEE%20802.11e%20EDCA%20for%20ns2.28/Release%20V1.0%20%28Beta%29/EDCA_ns-2_28-v1-0-2.tgz/download

(9)$ ns lab25.tcl 2000 0
$ ns lab25.tcl 2000 1

ns: record: can't read "firstPktTime_": no such variable
解决办法:
http://iamsunpei.blog.163.com/blog/static/28767412007115729118/

invalid command name "ErrorModel80211"
解决办法:~~~~待解决

(10)ns lab26_1.tcl
perl measure-throughput.pl 11m_rd 1.0 >11m
perl measure-throughput.pl 1m_rd 1.0 >1m
startxwin
gnuplot draw_1.gnu

ns lab26_2.tcl
perl measure-throughput.pl 11m_rd 1.0 >11m_frame
perl measure-throughput.pl 1m_rd 1.0 >1m_frame
startxwin
gnuplot draw_2.gnu

ns lab26_3.tcl
perl measure-throughput.pl 11m_rd 1.0 >11m_cwmin
perl measure-throughput.pl 1m_rd 1.0 >1m_cwmin
startxwin
gnuplot draw_3.gnu
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值