王 悦,刘灿涛,朱 雷,张书云
(中央财经大学 a.信息管理系;b.计算机科学与技术系,北京 100081)
NS-2是一个分组级别的网络模拟器,它模拟实现了大量网络组件和协议[1]。它的无线模块(WiFi)源自卡耐基梅隆大学的Monarch项目[2],对无线传输做了如下假设和简化:
(1)假设节点在发送或接收一个分组时没有明显移动。当节点处于低速运动或高发送速率时,该假设基本成立。例如,节点的移动速度是10 m/s,发送速率是1 Mb/s,当接收一个1500 Byte的分组时计算得出节点移动0.12 m。周围环境基本不变,不会导致接收失败。
(2)假设节点速度远远小于光速,因此多普勒效应可忽略不计。
节点移动速度较慢的Ad hoc无线网络[3-4]和Mesh无线网络(节点静止)[5]基本满足这2条假设,可以用NS-2较好地仿真。但是NS-2的无线接收模型过于简化,不能完全反映现实[6]。主要有如下2个方面的问题:(1)没有计算干扰信号的累加强度。(2)没有考虑信道衰落(fading)。特别是后者对网络性能的影响显著,由于现实传输环境是复杂的,电磁波经过反射、折射、散射等多条路径传播到达接收节点后,由于节点移动或周围环境变化等原因,信号强度和相位是时变的,这被称为信道衰落[7]。无线网络的早期研究为了简化数学建模一般不考虑衰落效应。但在无线网络研究取得很大进展的当前[8-9],在NS-2中引入信道衰落对准确验证无线算法很有必要。
本文分析NS-2分组收发仿真的实现原理。针对NS-2没有考虑信道衰落效应的问题,给出信道衰落仿真的一般计算步骤,并以瑞利衰落为例,在NS-2中验证无线网络协议性能[10-11]。根据无线网络传输的吞吐量和公平性[12],在引入瑞利衰落后并通过与之前相比,以准确模拟无线传输的不确定性。
NS-2的无线物理层代码分布在Mac目录下channel.cc、wireless-phy.cc和Mac-802_11.cc的C++源文件中。Wireless Channel类实现无线信道传输分组功能(channel.cc源文件);WirelessPhy类实现无线接口收发分组功能(wirelessphy.cc源文件);Mac802_11类除实现了802.11的媒体访问控制功能外,也实现了无线接口卡的SNR计算和分组捕获功能(Mac-802_11.cc源文件)。
无线物理层的实现原理如图1所示。
图1 NS-2无线物理层主要类和方法示意图
用图1场景举例说明无线物理层的实现原理。图中有A,B,C,D 4个节点,B在A的发送半径内;C在A的发送半径外,但在其载波监听半径内;D在A的载波监听半径外。在仿真程序实现上,当A向B“发送”一个分组时,A的上层协议模块调用其Mac对象send方法,该方法调用WirelessPhy对象的sendDown方法,后者进一步调用WirelessChannel对象的sendUp方法。WirelessChannel对象将此分组复制为2份,分别调用B和C(在A的载波监听范围内)的WirelessPhy对象的sendUp方法,再通过调用Mac对象的recv方法,将分组传递给B和C的Mac对象。这就完成了一个分组从“发送”到“接收”的过程。注意:分组在节点之间的收发不是真实发生的网络传输过程,而是通过函数调用的方式来仿真的。发送节点(比如A)将分组发送给载波监听半径内的所有节点(比如B,C)。若接收节点在发送节点的发送半径内且分组的SNR值大于一定阈值,它可正确接收并解码该分组;若接收节点在发送节点的载波监听半径内但不在发送半径内(比如C),它不能正确解码该分组;若接收节点在发送节点的载波监听半径外(比如D),它检测不到该分组。
按照分组从发送到接收的过程给出相关方法的主要步骤并附上重点代码段(步骤编号见图1):
(1)WirelessPhy::sendDown
该方法将分组发送到信道上。
第1步 记录分组p的发送信息txinfo_。
p->txinfo_.stamp((MobileNode*)node(),ant_->copy(),Pt_,lambda_);
其中,node()是发送节点;ant_->copy()是天线参数;Pt_是发送功率;lambda_是无线电波的波长。这些参数被记录在发送分组里,用于在接收节点处计算接收功率。
第2步 发送分组p到信道。
channel_->recv(p,this);
这里通过调用WirelessChannel对象的recv方法来实现。
(2)WirelessChannel::sendUp
该方法将分组传递给发送节点载波监听半径范围内的所有接收节点。
第1步 缺省按照双径传播模型[7]来计算载波监听半径distCST_。
distCST_=wifp->getDist(wifp->getCSThresh(),wifp->get Pt(),1.0,1.0,highestZ,highestZ,wifp->getL(),wifp->getL ambda());
第2步 取得以本节点tnode为圆心以distCST_为半径的范围内的邻居节点集合outlist。
get_neighbors((MobileNode*)tnode,outlist);
第3步 通过事件调度器s的schedule方法将分组的每个拷贝newp依次传递给每个邻居节点rifp。传播延迟propdelay由发送节点与接收节点的距离除以光速得到。
s.schedule(rifp,newp,propdelay);
(3)WirelessPhy::sendUp
该方法从WirelessChannel对象获得分组p,判断是否接收正确。
第1步 缺省按照双径传播模型计算接收功率Pr。
Pr=propagation_->Pr(&p->txinfo_,&s,this);
第2步 按照分组的接收功率判断它能否被正确接收。当Pr小于载波监听阈值CSThresh_时,接收不到该分组(pkt_recvd标记置0);当Pr大于等于接收阈值RXThresh_时,可正确接收该分组(pkt_recvd置1,hdr->error置0);当Pr大于CSThresh_且小于RXThresh_时,虽能接收到该分组,但因接收功率低于RXThresh_无法正确解码它(pkt_recvd置1,hdr->error置1)。正确解码分组还取决于SNR是否大于一定阈值,这部分在Mac对象中实现,实际上属于无线物理层的功能。
(4)Mac802_11::recv
该方法计算分组的SNR是否大于等于SNR阈值CPThresh(SNR定义为早先接收的分组pktRx_在接收期间与新到来的干扰分组p的接收功率的比值)。若是,则正确接收该分组并传给上层协议;否则丢弃它。
信道衰落是叠加在大尺度传播模型(如双径模型)上的,是以大尺度传播模型计算的接收功率为均值的一组随机变量[7]。在NS-2中衰落功能仿真的实现过程如下:
(1)由大尺度传播模型给出接收功率均值。
(2)将接收功率均值代入信道衰落模型计算出接收功率的概率分布函数F(x)。
(3)每次接收一个分组时,由F(x)生成一个随机数作为该分组的实际接收功率。实现上可借助NS-2现有的[0,1]均匀分布的随机数生成方法Random::uniform(0,1),由概率论原理,每次生成一个均匀随机数xk,逆函数F–1(xk)给出了满足分布F的一个随机数。
以瑞利衰落为例在NS-2上实现信道衰落仿真,其他衰落模型的实现思路类似。瑞利衰落认为接收信号的强度s符合瑞利分布,概率分布函数为1- e-s2/2σ2。已知功率与电压的平方呈正比,计算得出接收功率x符合指数分布,即F(x)=1-e-λx,其中,1/λ是接收功率均值。F-1(x)=-(1/λ)ln(1-x)。
将瑞利衰落功能实现在WirelessChannel::sendUp方法的第2步(见第2节),在双径模型给出当前分组的接收功率均值后,调用RayleighPr方法返回一个随机产生的接收功率值。
主要代码如下:
使用NS-2缺省的发送功率Pt=0.28,接收功率阈值为3.7e–10,大尺度传播模型使用双径模型,计算得出发送半径是250 m;MAC协议使用802.11,数据发送速率为11 Mb/s。在仿真实验中比较无衰落和瑞利衰落下CBR和TCP性能,数据分组长度均设为256 Byte。
实验1瑞利衰落对单链路传输性能的影响
测试瑞利衰落对一条链路吞吐量的影响,链路长度(发送节点与接收节点的距离)依次设为50 m,100 m,150 m,200 m,240 m。图2(a)显示瑞利衰落带来的分组差错率随链路长度增加(即接收功率减小)而增大。
分别测试链路传输CBR(满负荷)和TCP数据时的吞吐量。图2(b)和图2(c)显示在无衰落情况下CBR/TCP吞吐量是恒定的(分组差错率为0),而在瑞利衰落情况下吞吐量随链路长度增加(分组差错率增大)而减小。比较图2(a)和图2(b),CBR吞吐量下降的百分比比对应的分组差错率要高,这是因为802.11在分组发送失败时认为发生了碰撞,其竞争窗口增大进一步降低吞吐量。比较图2(b)和图2(c),在衰落情况下TCP比CBR的吞吐量下降更快,这是因为TCP在端到端分组传输失败时认为发生了拥塞,TCP发送窗口减小更进一步降低了吞吐量。
图2 瑞利衰落对单链路传输性能的影响
仿真如图3所示的一个WLAN拓扑图。设置AP(无线访问点)是接收节点,坐标在(0,0)处;其余10个节点竞争信道向AP发送数据,坐标随机产生。
图4显示了瑞利衰落对WLAN各节点CBR和TCP吞吐量的影响。从中可以看出,发现衰落并不会使每个节点的吞吐量都下降。这是因为距离AP远的节点受衰落影响大,其吞吐量下降多,消耗信道带宽少;而距离AP近的节点受衰落影响小,因此在这种情况下可以占用更多剩余带宽。表1显示所有节点的CBR/TCP总吞吐量在无衰落和瑞利衰落时相差不多。
图3 WLAN拓扑图
图4 瑞利衰落对WLAN性能的影响
表1 WLAN整体性能
实验2瑞利衰落对WLAN性能的影响
使用Jain公平性指标(Jain’s fairness index)计算系统公平性[12]。Jain公平性指标度量各节点吞吐量的均匀程度,取值在[0,1]上。当各节点的吞吐量相等时,Jain公平性指标值为1,反映公平性最好;各节点吞吐量差别越大,Jain公平性指标的值越小,反映公平性越差。表1显示衰落使得公平性变差。这是由于距离AP远的节点,吞吐量受衰落影响大,而距离AP近的节点受衰落影响小,且占用了前者的剩余带宽。
本文分析了NS-2无线物理层的实现机制,指出其只考虑大尺度传播模型,而未考虑小尺度的信道衰落,导致计算信号接收功率不够真实。给出了NS-2中扩展了信道衰落功能的一般计算步骤,将大尺度传播模型计算的接收功率均值代入信道衰落模型计算出接收功率,实现了瑞利衰落。仿真结果显示,引入瑞利衰落后的无线网络传输的吞吐量和公平性都受到较大影响。该研究可为准确验证无线算法提供支持。
[1]The Network Simulator-NS-2[EB/OL].[2013-02-12].http://www.isi.edu/nsnam/ns/.
[2]The CMU Monarch Project’s Wireless and Mobility Extensions to NS[EB/OL].(1999-03-21).http://www.monarch.cs.rice.edu/ftp/monarch/wireless-sim/ns-cmu.ps.
[3]Akyildiz I F,Su W,Sankarasubramaniam Y,et al.Wireless Sensor Networks:A Survey[J].Computer Networks,2002,38(4):393-422.
[4]Gorday P,Hester L,Gutierrez J A,et al.Home Networking with IEEE 802.15.4:A Developing Standard for Low-rate Wireless Personal Area Networks[J].IEEE Communications Magazine,2002,40(8):70-77.
[5]Akyildiz I F,Wang X.A Survey on Wireless Mesh Network[J].IEEE Communications Magazine,2005,43(9):23-30.
[6]Takai M,Martin J,Bagrodia R.Effects of Wireless Physical Layer Modeling in Mobile Ad Hoc Networks[C]//Proc.of Mobihoc’01.Long Beach,USA:ACM Press,2001:87-94.
[7]Tse D,Viswanath P.Fundamentals of Wireless Communication[M].Cambridge,USA:Cambridge University Press,2005.
[8]Katti S,Rahul H,Hu W,et al.XORs in the Air:Practical Wireless Network Coding[J].IEEE/ACM Transactions on Networking,2008,16(3):497-510.
[9]Jiang J,Walrand J.Approaching Throughput-optimality in Distributed CSMA Scheduling Algorithms With Collisions[J].IEEE/ACM Transactions on Networking,2011,19(3):816-829.
[10]杨晨炜,冷甦鹏.基于NS2的认知无线电网络模型[J].计算机工程,2010,36(5):111-113.
[11]张小庆,李春林,张恒喜.无线传感器网络的NS2扩展与仿真机制研究[J].计算机科学,2011,38(8):117-120.
[12]Jain R,Chiu D M,Hawe W.A Quantitative Measure of Fairness and Discrimination for Resource Allocation in Shared Computer Systems[EB/OL].(1984-03-05).http://dblp.uni-trier.de/db/journals/corr/corr9809.html#cs-NI-9809099.