金东方,赵文,苏先海,史建
(中国电子科技集团公司第三十研究所,成都 610041)
对于当前IEEE 802.15.4标准来讲,减少网络节点能量消耗进而提高能量效率的有效方法之一就是利用超帧中定义的休眠模式,从而使节点能够在超帧竞争访问周期(CAP)内进入低功耗的工作模式。本文给出了较为详细仿真的试验流程、网络模拟器的实现及计算网络性能指标所使用的算法,通过选取一个典型的网络场景,对网络活跃时段进入休眠模式、减小竞争窗口长度及原始标准的网络性能进行了分析和比较,验证了相关措施在低速率传输时的良好效果。
图1描述了本文仿真的处理结构,为了生成最终的统计结果,设计了一些脚本和程序,也解释了仿真用到的这些脚本和程序的内部依赖关系。在用NS2运行wpan.tcl脚本进行仿真之前,需要嵌入节点场景文件和数据流文件,这些文件包含的内容也可以直接存在于wpan.tcl脚本中,但为了使TCL脚本更简明和便于阅读,通常会把节点场景文件和数据流文件分别单独放到文件wpan.scn和traffic中保存。
首先,分别用scen_gen和cbrgen_star两个小程序生成节点场景文件wpan.scn和cbr数据流文件traffic,
并在wpan.tcl脚本中用source命令嵌入这两个文件;然后用NS2运行wpan.tcl脚本,生成包含有网络仿真过程中发生的各种事件信息的跟踪文件wpan.tr和作为NAM输入文件的wpan.nam。最后,用awk脚本文件performance.awk并以wpan.tr作为输入生成分析统计结果,每次仿真的性能指标就可由此得出。
图1 仿真分析处理结构
本文仿真的网络场景有以下特点:
(1)拓扑结构为一跳的星型网络,周边节点与无线个域网(WPAN)协调器以无线方式连接,并直接与其通信;
(2)所有节点都相互在其载波监听范围之内,这样就消除了网络内隐藏节点的存在及其造成的数据包冲突;
(3)不使用MAC层对数据包的确认机制;
(4)节点在竞争访问周期(CAP)内无数据传输时进入休眠,而不是只在非竞争访问周期(CFP)内才进行休眠;
(5)使用修改过的AODV路由协议。
结合本文设定的网络场景需求,修改NS2中的网络模拟器,使其支持休眠状态及休眠-空闲和空闲-休眠的过度状态,并具备在没有数据包传输时节点自我关闭的能力。
同时,根据本文研究设定的网络场景,下面的一些修改有助于提高仿真的准确性:
(1)修改./wpan/p802_15_4phy.cc文件中的Phy802_15_4::CarrierSenser()函 数 ,增 加 能 量 接 收 阈 值EDThresh_参数,用来衡量一个信道的状态,并将其设置为大于接收器接收灵敏度10dB的值[1],如果能量检测值大于该值,将认为信道忙。
(2)由于本文中网络场景节点是直接且只与PAN协调器进行通信,并不需要路由协议的路由表查询和路由发现机制功能,所以这里修改了NS2中的AODV路由协议,使它的下一跳的节点地址就是目标本身[2],可通过修改./aodv/aodv.cc文件中的recv()函数和forward()函数实现。
(3)由于修改了路由协议,需要对ARP协议做一些简单改动,即使目标节点的地址映射信息不存在,也不再发送任何请求信息,而是假设地址映射信息总是存在于arp表中,通过修改mac/arp.cc文件中的arplookup()函数实现。
(4)在文献[3]中,作者对ACK机制给网络仿真的影响进行了分析,本文所重点讨论的网络场景不使用ACK确认机制,对IEEE 802.15.4模拟器中的ACK机制进行修改,设定一个较长些的ACK持续时间,根据网络场景频段,将其设定为55个符号周期[4],通过修改./wpan/p802_15_4def.h文件中 macAckWaitDuration的取值来实现。
在对IEEE 802.15.4模拟器进行了上述修改后,仿真流程并没有变化,而网络仿真过程中的内部处理却发生了改变。为了验证对IEEE 802.15.4模拟器修改后的效果,构建了一个简单的网络环境,在40s后开始传输40Bytes大小的cbr数据包。
图2 仿真过程中模拟器的输出信息
图2为在进行网络仿真过程中IEEE 802.15.4模拟器输出的网络事件信息的一段截图,从中可以知道加入休眠机制后,节点在空闲的时候进入了休眠状态,而当有数据到来时,节点又能够被唤醒,例如,节点1在555.411808s进入休眠状态,节点5在555.470080s被唤醒,验证了所做修改的有效性。
在用NS2进行网络分析时,要得到网络模型的性能指标,需要对网络仿真产生的*.tr文件进行分析,对于本文的网络应用模型,采用如下所述的算法来分析各网络指标,用awk脚本求网络性能指标时的算法基于以下对各指标的描述。
吞吐量是指网络传送二进制信息的速率,也称比特率或带宽。本文定义吞吐量为单位时间内源节点到目的节点成功传输有效载荷的速率,考虑到IEEE 802.15.4标准低速率特点及其能支持的最大速率[5],本文用网络内节点每秒钟所成功接收的有效数据比特数来表示吞吐量,而忽略非有效载荷(例如信标及包头)的数据传输。本文计算吞吐量的算法采用先计算网络节点在运行时间内成功接收到的数据包个数(对于本文网络模型来说即为PAN协调器节点在网络运行期间接收到的数据包个数),并计算出相应的接收比特数,然后用这个比特数除以仿真时间,最后算出平均吞吐量[6]。因此,吞吐量可以描述如下:
节点能耗指在全部仿真过程中节点消耗的能量,单位为焦耳。本文关注的节点能耗是指仿真时间内除PAN协调器以外的所有节点的平均能耗。求节点平均能耗的算法为:计算出除PAN协调器外其他节点消耗的能量Ei
endnode_consumed,然后求出这些节点消耗掉的能量总和Esum_consumed,平均能耗Eaverage_consumed即为所有节点消耗的能量与除PAN协调器外的节点个数Nendnode之比[7]。平均能耗用式(2)表示,其中Einitial表示仿真时节点的初始能量,Eifinal表示仿真结束时节点剩余的能量,m为网络中除PAN协调器外的节点个数。
为了更清楚地表达和研究MAC的能量效率,本文引入单位能量成功传输的字节数(单位为Bytes/J)这一性能评估指标[8]。这个指标实际上是网络成功接收的有效字节总数与除PAN协调器外的其他节点消耗的总能量的比值,表示网络每消耗1焦耳能量,协调器成功接收到的字节数,单位能量传输的字节数越少,表明网络的能量效率越低[9]。求能量效率的算法可描述为:首先计算出网络中成功传输的数据包个数,进而求出有效载荷的总字节数REsum_bytes,例如成功传输的数据包个数为100,数据包有效载荷为70 bytes,那么REsum_bytes等于7000 bytes。然后计算出除PAN协调器外的其他节点消耗的总能量Esum_consumed,能量效率Eefficiency即为REsum_bytes与Esum_consumed的比值。能量效率如式(3)所示:
下面对网络在IEEE 802.15.4原标准、超帧活跃周期内无数据传输时进入休眠和在进入休眠的基础上缩短竞争窗口长度三种情况下网络吞吐量、节点能量消耗及与能量效率,以及减小竞争窗口对网络性能的影响进行仿真分析和比较。
图3 与原始IEEE 802.15.4标准吞吐量性能对比
如图3所示,通过对节点在超帧活跃周期内进入休眠状态和不进入休眠状态两种情况下的性能结果进行比对可知,使用IEEE 802.15.4标准竞争窗口默认值CW为2时,吞吐量并没有因为节点进入休眠状态而有较大变化。在相同网络规模情况下,所有仿真负载值时的吞吐量的变化范围在±1%内。这是因为:在允许节点进入休眠状态时,关闭-空闲状态的转变是产生延迟的主要原因[10],但即使是在不进入休眠状态的情况下,从对CSMA/CA机制的讨论可知该过渡时间也是以初始化随机退避延迟的形式存在的,因此,进入休眠状态时过渡期造成的延迟开销与停留在空闲状态的延迟开销基本相同。当网络负载较轻时,CW为1和CW为2两种情况下的网络吞吐量值并没有明显差别,这是由于此时信道多处于空闲状态,包投递率很高。然而,随着负载的增加,CW为1时的吞吐量优势逐渐变得明显。吞吐量之所以有些提高是因为竞争窗口长度为1时在一定程度上缩短了信道访问时所需的时间,即减小了节点在空闲状态所处的时间,单位时间内节点可以发送的数据包个数增加,从而使信道传输数据的效率提高了。由于没有ACK机制,所以即使是在CW为1时,数据包也不会出现“意外”而与ACK帧冲突。当负载较重时,由于CW为1减小了包发送时间,所以能够在一定程度上提高包投递率,从而使网络吞吐量相对于CW为2时有所提高。
图4 与原始IEEE 802.15.4标准节点平均能耗对比
图5 与原始IEEE 802.15.4标准能量效率对比
从图4可以看出,在低数据速率的情况下,若节点在活动周期内不进入休眠状态,在仿真时间内节点平均消耗的能量大于1焦耳;而允许节点在活动周期内进入休眠状态时,节点平均消耗的能量只有0.1焦耳左右,可以推出,低速率的应用中,节点在不活动时进入休眠状态能够巨大地降低能量的消耗。而此时无论射频收发器休眠与否,网络吞吐量都是相当的,所以负载轻时让节点休眠能提高能量效率。当通信速率较高时,节点在休眠状态所花的总时间也较少,所以此时让射频芯片进入休眠状态带来的能耗降低不必低速率时更有优势,例如,cbr包间隔时间为200 s时,进入休眠的节点平均能耗只有不进入休眠能耗的1/25,而在cbr包间隔0.01 s时,这一比例为1/5。而实际上,当网络负载足够重时,由于休眠-空闲状态转换的开销(启动射频芯片增加的时隙数及相关的能量消耗),在活动周期内让芯片进入休眠状态比只停留在空闲状态消耗的能量还要多。
允许射频芯片进入休眠状态时,比较CW为2和CW为1两种情况下的三个指标可知,CW为1时的节点平均能耗比CW为2时要降低5-10%;通信速率高时,CW为1时的吞吐量也会比CW为2时有7-10%的提高;比较图5中CW为1和CW为2两种情况对应的各自曲线可知,低数据率时的低能耗及高数据率时的较大吞吐量,使得CW=1时的能量效率比CW=2时有10-15%的提高。
通过修改相关程序代码,构建本文研究的IEEE 802.15.4网络场景,可以知道,在超帧活动周期内没有数据包传输时让射频芯片进入休眠状态及CW为1两种情况下的信道吞吐量与通常情况(活动周期内没包传输时处于空闲状态)下的吞吐量并没有明显差别。这是由于在设计射频芯片从休眠状态唤醒时,针对IEEE 802.15.4标准的CSMA/CA初始退避延时做了相关修改,使这一退避时间能够用于休眠到射频芯片被激活这一过渡时间,降低能耗的同时并不会吞吐量造成大的消极影响。随着网络负载的增加,由于状态间转换消耗的能量抵消了因进入休眠状态而节省的能量,进入休眠状态带来的能耗优势也跟着降低,所以,本文研究采取的措施只适合于低速率的无线网络应用。