基于NS2的移动自组网路由协议的仿真与实现
基于NS2的移动自组网路由协议的仿真与实现
刘勃兰,宋
玲
LIUBo-lan,SONGLing
广西大学计算机与电子信息学院,南宁530004
CollegeofComputer&ElectronicInformation,GuangxiUniversity,Nanning530004,ChinaE-mail:browntliu@126.com
LIUBo-lan,SONGLing.SimulationandimplementationofroutingprotocolinMANETbasedonNS2.ComputerEngineeringandApplications,2007,43(6):162-164.
Abstract:Torealizeanactualnetworksystemisalwaysthemostcostingorunpracticalduringtheresearchofroutingtechnolo-giesinMANET(mobileAdHocnetwork).SimulatingnetworkroutingprotocolsbyusingNetworkSimulationversion2(NS2)isoneofvalidandeconomicalresearchmethods.However,currentNS2cannotsimulateallofroutingprotocolsinMANET.AccordingtotheextendablesimulationprinciplesandmethodsofNS2,Inthispaper,addingroutingprotocolsisstudiedandanAssociativityBasedRouting(ABR)isaddedinNS2.ThetestingresultofdatatransmissionspeedshowsnetworksimulationofroutingprotocolABRbyextendedNS2isconvenienttouserstoevaluatetheperformanceofnetwork.Keywords:NS2;MANET;routingprotocol;ABR;datatransmissionspeed
摘
要:在移动自组网路由技术的研究中,实际网络系统的实现往往是代价最高或不现实的;利用网络仿真器NS2对相关路由协
议的仿真是一种既有效又经济的研究方法,但目前的NS2还不能支持所有移动自组网路由协议的仿真;根据拓展仿真的原理和方法,对在NS2中添加路由协议进行了研究,添加了基于关联度的路由协议ABR,对节点间数据传输率的测试结果表明利用拓展后的NS2进行ABR协议的网络仿真,能方便用户对网络性能进行评价。关键词:NS2;移动自组网;路由协议;ABR;数据传输率文章编号:1002-8331(2007)05-0162-03
文献标识码:A
中图分类号:TP393.01
在本文中,利用NS2已有的对象,组合所要研究的网络系统模型,在NS2中添加移动自组网中一个单播路由协议后进行网络仿真。
1引言
移动自组网具有完全自组的运行方式和灵活的网络结构,
可以真正地实现任何时间任何地点的网络互联通信,是一种无中心的网络,网络的带宽有限,而且网络拓扑动态变化的网络,这些特点决定了移动自组网在现实中应用的关键问题取决于路由问题的解决;而在真实的网络中,设计和调试网络协议是一件困难和复杂的事情,仿真成了最佳可供选择的测试、评估协议和验证手段之一,这不仅适用于网络模型的构造和设计、性能的评价与分析,还适用于网络协议的开发与研究以及真实网络的故障诊断。
源代网络模拟器NS2(NetworkSimulatorv2)是一种免费、码公开的模拟软件平台,其协议代码与真实网络应用代码很相似,仿真结果具有可靠性。NS2是一个面向对象的离散事件驱动的网络模拟器,支持多个流行的网络协议如TCP、UDP和路由调度、拥塞控制算法等;相对于一般的离散型模拟器,NS2
[1]
2NS2的仿真原理和拓展方法
2.1NS2的仿真原理
NS2采用编译和解释双层结构,编译层由C++类组成,C++
语言执行速度快而修改和编译速度慢,故只用于编译层协议细节的实现;前端是一个OTCL(ObjectToolCommandLanguage)解释器,OTCL修改快且可用于交互操作,用于解释层中仿真对象的设置,这种分裂对象仿真增强了构件库的可扩展性和可组合性[3]。仿真器内核定义了有层次的编译类结构;在OTCL解释器中有相似的解释类结构。用户通过解释器创立新的仿真对象之后,解释器对它进行初始化,与编译类结构中相应的对象建网络元素对象库和网络设置模型立映射。NS2由事件调度器、
库三个主要部分组成。其中调度器是仿真器的重要组成部分,它记录当前时间,调度网络事件链表中的事件。网络元素对象包括节点(Node)、链路(Link)、代理(Agent)、业务追踪(Trace)
的优势在于它有非常丰富的构件库,而且这些对象易于组合,易于拓展,但是对用户的编程能力,实际网络协议的理解能力要求较高。
[2]
基金项目:广西省教育厅资助科研课题(theResearchProjectofDepartmentofEducationofGuangxiProvince,ChinaunderGrantNo.桂教科研
【2004】20号);广西科学基金项目(No.桂科基0342011)。
作者简介:刘勃兰(1977-),男,硕士研究生,主要研究方向为计算机网络与并行分布式计算;宋玲(1967-),女,副教授,硕士生导师,主要研究方向
为计算机网络及性能优化。
刘勃兰,宋玲:基于NS2的移动自组网路由协议的仿真与实现
abr_state&state();//路由状态int&accessible_var();//访问变量
2007,43(6)163
和数据源(DataSource)等;节点、链路、代理同时继承了NS
Object和事件处理器类,来处理多项事务。
2.2NS2的仿真方法
用NS2仿真涉及到两个层次:一个是基于OTCL编程的层次,利用NS2已有的网络元素实现仿真,只要编写OTCL脚本就可以,而无需对NS2本身进行修改;另一个层次是基于C++和OTCL编程的层次,如果NS2中没有所需的网络元素,就要对NS2扩展修改,添加所需的网络元素,重新编译,然后进行仿真。如果用户已经完成了对NS2的拓展,NS2仿真可以分为构件的拓展阶段,仿真阶段,对仿真结果分析阶段。整个模拟过程如图1所示。
};
voidforward_data(Packet*);//数据转发函数voidrecv_abr_pkt(Packet*);//协议数据包发送函数voidsend_abr_pkt();//协议数据包接收函数voidreset_abr_pkt_timer();//重置定时器public:
abr(nsaddr_t);//abr协议地址
intcommand(int,constchar*const*);//OTCL对象调用C++
对象的方法
voidrecv(Packet*,Handler*);//接收函数
abr_pkt.h的定义:
structhdr_abr_pkt{
nsaddr_tpkt_src_;//产生数据包的源节点u_int16_tpkt_len_;//数据包的长度Packetu_int8_tpkt_seq_num_;//数据包的序列号nsaddr_t&pkt_src()//返回数据包源u_int16_t&pkt_len()//返回数据包长度u_int8_t&pkt_seq_num()//返回数据包序列号staticintoffset_;//数据缓冲区staticint&offset()//返回数据缓冲区
statichdr_abr_pkt*access(constPacket*p)//访问协议数据
包头
3NS2的拓展仿真
3.1在NS2中添加路由协议
本文拟在NS2中添加AdHoc网络中的单播路由协议
}
ABR(AssociativityBasedRouting)[4],需要添加5个文件(abr.h,abr.cc,abr_pkt.h,abr_rtable.h,abr_rtable.cc)的说明与实现[5]。在abr.h中定义所需要的定时器和用来实现协议功能的路由代理,其实现以及和TCL的挂接在abr.cc中实现的;abr_pkt.h声
明协议需要在网络节点间进行传输的协议包;abr_rtable.h和“物理”abr_rtable.cc用来定义和实现需要拓展的路由表。这是“逻辑”上的架构是类,为了实现新的协议需要从Agent架构,
类继承一个新的Agent,Agent描绘端点进行网络层数据包的封装与消耗,在协议的实现中不同的层次都被用到,而且它提供了和TCL接口的连接,这样就可以通过TCL脚本来控制新的路由协议,可以看出,这是实现路由协议所要编码的一个主要的类。路由代理用来维护内部状态和路由表,内部状态可以用一个新的类或者路由代理内部属性的集合来描述,把路由表看作一个新类:abr_rtable。当协议需要定期地或在某一事件发生后发送数据时用到类timer,另外一个很重要的类是trace,它是书写模拟信息的记录文件的基础。其中路由协议的abr.h对
abr_rtable.h对路由表的说明:
classabr_rtable{public:
voidprint(Trace*);//输出trace文件voidclear();//清除路由表
voidrm_entry(nsaddr_t);//删除入口地址
voidadd_entry(nsaddr_t,nsaddr_t);//添加入口条目录nsaddr_tlookup(nsaddr_t);//查看路由表u_int32_tsize();//路由表的大小};
此外,对NS2拟器中一些文件进行修改[6],如声明packet
type的声明文件common/packet.h,Tcl库文件tcl/lib/ns-pack-et.tcl和tcl/lib/ns-lib.tcl;优先级队列queue/priqueue.cc;以及
编译文件makefile等。
3.2ABR协议的仿真测试
根据文献[7]提出的测试模型和方法对添加的路由协议
agent类的说明:
classabr:publicAgent{
friendclassAbr_PktTimer;//协议包定时器private:
nsaddr_tra_addr_;//路由代理地址abr_statestate_;//路由状态abr_rtablertable_;//路由表intaccesible_var_;//访问变量u_int8_tseq_num_;//序列号protected:
PortClassifier*dmux_;//端口分类器,把数据包送代理Trace*logtarget_;//记录目标
Abr_PktTimerpkt_timer_;//发送数据包定时器nsaddr_t&ra_addr();//路由代理地址
ABR进行测试,设定一个有50个节点(编号0-49)的500m×300m的模拟场景,节点从这个矩形区域内随机开始服从
(0m/s-20m/s)的速度随机运动,负载源使用常速率比特流(CBR),采用数据包传输率作为仿真测试的性能指标,节点的配置项如下[8]:
setopt(chan)Channel/WirelessChannel;#信道类型
setopt(prop)Propagation/TwoRayGround;#无线传输模块类型setopt(netif)Phy/WirelessPhy;#网络接口类型setopt(mac)Mac/802_11;#MAC类型
setopt(ifq)Queue/DropTail/PriQueue;#接口队列类型setopt(ll)LL;#链路层类型
setopt(ant)Antenna/OmniAntenna;#天线类型setopt(ifqlen)50;#接口队列中包的最大值setopt(nn)1;#移动节点的数目
1642007,43(6)ComputerEngineeringandApplications计算机工程与应用
setopt(adhocRouting)ABR;#无线路由协议
创建并设置移动节点MH的地址:
|ns_node-config-wiredRoutingOFF;#关闭-wiredRouting选项S
|ns_node1.0.1];#移动节点地地址setMH[S
|Msetnode_(0)SH;#移动节点地编号
4测试仿真结果4.1Trace文件
Trace文件的功能是详细记录仿真过程,根据用户的需要
记录仿真过程中任何一个细节。仿真结束后,留下的唯一记录就是Trace文件,所有对仿真的分析都基于Trace文件,如传输速率、延迟时间等。Trace文件详细记录了每个节点上发生的事情,如时间信息、流量信息、节点信息等。Trace文件部分内容如下:
r2.55887113tcp40-------30.0.0.00.0.2.0013+2.55887131ack40-------30.0.2.00.0.0.0015
上面第一行记录节点3在2.558871s时收到了从节点2向节点3发送的一个TCP数据包,包的大小是40,源地址是0.第二行记录0.0,端口号是0,目标地址是0.0.2,目标端口号是0。
节点3在2.558871s时将应答信号(ACK)装进队列,准备发送给节点1。通过对Trace文件的分析能够了解仿真的全过程。
4.2gnuplot和xgraph生成图
gnuplot是一个命令驱动的交互式画图软件,其功能就是
把数据资料和数学函数转换成容易观看的平面或立体图形,帮助研究者进行数据分析。xraph是NS2自带的一个小巧的绘图工具,它可以根据数据文件里的数据绘制出相应的图形,帮助研究者进行数据分析。通过对数据进行直观的观察分析,从中可以更加容易地找出一些规律或问题或是验证模型的正确性,反过来指导研究。图2和图3是两个节点之间数据传输的
参考文献:
[1]徐雷鸣,庞博,赵耀.NS与网络仿真[M].北京:人民邮电出版社,
2003.
[2]PullenJM.Thenetworkworkbench:networksimulationsoftwarefor
academicinvestigationofInternetconcepts[J].ComputerNerwork,2000,32:365-378.
[3]FallK,VaradhanK.NSmanual[EB/OL].(2002-02).http://www.isi.
edu/nsnam/.
[4]于宏毅.无线移动自组织网[M].北京:人民邮电出版社,2005:182-187.[5]RosFJ,RuizPM.ImplementinganewmanetunicastroutingPro-
tocolinNS2[EB/OL].(2004-12).http://ants.dif.um.es/masimum/nsrt-howto/html/nsrt-howto.html.
[6]WelchBB.Tcl/Tk编程权威指南[M].崔凯,译.北京:中国电力出版
社,2002.
gnuplot和xgraph生成图。其他节点间的数据传输率同样可以
得到。
5结束语
根据需要在NS2中添加新的路由协议进行网络拓展仿
真,成功地得到了良好的仿真效果。目前对网络仿真的研究虽然已经取得了许多成果,但还有许多问题有待于进一步解决和完善.如NS2模拟引擎的并行化、拓扑生成器的可视化以及高效数据采集工具的开发等方面还需要进一步地研究和发展。让
[7]WangJian-xin,ZhengYuan,JiaWei-jia.A-DSR:abased-DSR
anycastprotocolforIPv6flowinmobileAdhocnetworks[C]//IEEEProcVTC2003.Orlando,Florida,USA,2003-09.
[8]ChungJ,ClaypoolM.NSbyexample[CP/OL].[2005-02].http://nile.
wpi.edu/NS/.
NS2支持选播通信服务也是一项当前值得研究的课题。
(收稿日期:2006年5月)
(上接111页)
[2]ZhengJ,WangYJ,LuXC,etal.Adynamicadaptivereplicaal-
locationalgorithminmobileadhocnetworks[C]//ProcoftheIEEEInt’lConfonPervasiveComputingandCommunications(Per-Com2004).California:IEEEComputerSocietyPress,2004:65-70.[3]HareT.EffectivereplicaallocationinAdhocnetworksforim-
provingdataaccessibility[C]//ProcoftheIEEEINFOCOM2001.
California:IEEEComputerSocietyPress,2001:1568-1576.[4]MedinaA,LakhinaA,MattafI,etal.BRITE:anapproachtouni-
versalgeneration[C]//ProceedingsoftheInternationalWorkshoponModeling,AnalysisandSimulationofComputerandTelecommuni-cationsSystem-MASCOTS’01,Cincinnati,Ohio,August2001.[5]凌波,王晓宇,周傲英,等.一种基于Peer-to-Peer技术的Web缓存
共享系统研究[J].计算机学报,2005,28(2):170-178.
因篇幅问题不能全部显示,请点此查看更多更全内容