内容发布更新时间 : 2024/11/15 0:36:26星期一 下面是文章的全部内容请认真阅读。
龙源期刊网 http://www.qikan.com.cn
基于NS2的多层卫星网络路由协议开发方案
作者:韩江雪 李昕
来源:《软件》2016年第02期
摘要:卫星通信网络早在20世纪初期就已经被提出,地面网络通信系统无法满足日益增长的通信业务发展需求,商业和军事领域也直接或间接地推动了卫星通信系统的发展。随着卫星通信网络越来越复杂,卫星组网向多层化发展,而典型的地面网络路由技术由无法应用于卫星网络,因此,卫星通信系统中如何进行有效的路由选择也逐渐成为新的焦点问题。而由于卫星网络路由技术应用环境的特殊性,研究人员无法基于真实网络环境进行研究,只能通过仿真工具进行仿真实验,NS2是指Network Simulator version 2,NS(Network Simulator)是开源的软件模拟平台,研究人员使用它对网络技术进行开发研究,NS2已经包含了卫星节点、卫星链路等模块,但是这些模块较为简单,只能模拟单层卫星网络。因此,本文提出了在NS2中模拟多层卫星网络,实现层间通信,研发多层卫星网络路由协议的方法。 关键词:计算机仿真;卫星网络;路由协议;NS2 中图分类号:TP319 文献标识码:A
DOI:10.3969/j.issn.1003-6970.2016.02.016 引言
卫星网络通信范围覆盖全球,可以保证较高速率的传输速度,支持大规模可扩展的网络结构,当前,卫星网络星座主要有单层卫星星座和多层卫星星座两种,主要包含低轨道卫星(IEO),中轨道卫星(MEO)或者地球同步卫星(GEO)三种轨道类型的卫星,目前,世界上各个国家都已经建立起了较为完善的卫星通信网络系统。而未来的卫星通信系统势必要为更多的用户提供更快速更加高效可靠的通信服务。因此,结合多轨道、多层次的卫星构建更广泛更健壮的立体式多层卫星网络通信系统已经成为卫星网络的发展趋势,随着空间网络越来越复杂化,多层卫星通信网络中如何实现快速有效的路由问题也日益成为新的研究焦点。而由于卫星网络的特殊性,普通研究人员没有条件在实际网络中进行研究,只能通过仿真平台进行,因此,本文将描述如何在NS2中模拟多层卫星网络拓扑,仿真层间卫星链路,实现星间通信,研发多层卫星网络中的路由协议。 1 多层卫星网络
龙源期刊网 http://www.qikan.com.cn
多层卫星网络是指结合低轨道卫星,中轨道卫星或者地球同步卫星,使用层间卫星链路连接不同轨道的卫星群体,结合不同轨道卫星的优势,建立起立体式、多层次、交叉覆盖的卫星网络,多层卫星通信网络的拓扑结构如下图所示:
相对于单层卫星构成的空间网络,多层卫星通信网络具有更高的可扩展性、灵活性以及强的抗毁性。要使用卫星组网,必须首先解决网络中如何快速有效进行路由的问题,多层卫星网络的路由算法大多采用集中式路由方式,高层卫星为集中控制群体,低层卫星为接入卫星,通信过程中由高层卫星为低层计算最优路径,数据在低层卫星中进行转发。 2 NS2仿真平台
NS2仿真平台实际上模拟了一个时间调度引擎,调度引擎的核心对象是调度器类,负责进行时间推进并对在时间轴上的各个事件队列进行调度,调度的过程中可能会在新的时刻触发新的事件,那么这些事件就会被加入对应时间点上的事件队列中,等待调度引擎进行调度。调度器类采用先进先出的数据结构逐个调度事件,直到时间推进到仿真结束时刻,模拟过程中止。 NS2使用C++和Otcl语言进行开发,Otcl语言负责编写仿真脚本,制定仿真计划,调用NS2中封装好的各个功能模块,C++语言对tcl脚本解释执行。
NS2仿真平台已经封装了许多功能模块,最基本的是节点、链路、数据包格式等等。其中也包括了卫星网络仿真模块,但是实现的卫星网络功能较为简单并且与真实场景差异较大,仿真实验时需要在这部分功能的基础上进行二次开发。 2.1 卫星网络模块
NS2中卫星网络仿真模块的核心代码在ns-2.35目录下的satellite文件夹中,主要包括satnode类,sathandoff类,satroute类,satlink类等源文件分别用来模拟卫星节点、卫星链路切换、卫星路由、卫星链路等。 2.1.1 sathandoff模块
由于卫星的移动性,不同轨道间的卫星或者是地面站与卫星间为了保证能够正常通信需要经常进行链路切换(找到一颗位置上更加合适的卫星连接上),sathandoff就是负责这部分的工作,其中包括termhandoff以及sathandoff两个主要的函数分别包含了地面站和卫星的切换机制。每颗卫星都包含一个sathandoff的实例,切换是由链路检测切换时间来控制的,在tcl脚本中配置好链路切换检测的周期,每颗卫星或地面站就会周期性地调用sathandoff或者termhandoff函数检测并切换链路(需要切换时)。 2.1.2 satroute模块
龙源期刊网 http://www.qikan.com.cn
satroute类模拟了卫星路由层的功能,其中Recv和ForwardPacket两个函数实现了收、发数据包的功能。NS2白带了一个集中式的路由代理satRouteLogic类,默认情况下,当卫星需要转发数据包时就使用这个路由代理类计算全网最短路径路由表并依照路由表转发数据,最短路径可以配置成使用跳数或链路时延两种计算方式。使用路由代理类相当于是默认每颗卫星在每一时刻都知道全网实时拓扑,这显然是不切实际的,因此实际仿真时不应使用这个路由代理。
2.1.3 satlink模块
satlink类负责模拟星间链路,包括星地链路、同层卫星轨道内链路、同层卫星轨道间链路。
3 多层卫星网络路由协议在NS2中的实现方案
NS2仿真平台中已经实现了部分卫星网络仿真模块,拥有极地卫星节点和地球同步卫星节点,但是星间链路只包括同层卫星之间的链路,没有层间链路的定义与实现。并且模块中实现的路由功能使用的是集中式的路由代理satRouteLogic类,每颗卫星转发数据时由路由代理类实时根据全网拓扑计算网络最短路径,这也与实际情况不符,因此,需要将自己的路由协议方案,下面,将从层间链路、链路切换、星间通信、路由模块等方面介绍如何在NS2中搭建多层卫星网络以及仿真自己的路由协议。 3.1 层间链路及链路切换
NS2中satellite文件夹下的satlink.cc以及satlink.h文件实现了卫星链路模块,为了实现层间链路,首先在satlink.h中加入层间链路宏定义: #defrne LINK ISL INTERLAYER 9
接着,在satlink.cc中定义在tcl语法中对层间链路的标识: if(strcmp( argv[2], “geo”)==0){ type_=LrNK_GSL_GEO; return TCL_OK: }……
else if( strcmp( argv[2],“interlayer”)==0){ type_= LINK ISL_INTERLAYER;