




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南京邮电大学 毕 业 设 计(论 文)题 目FDM模式卫星通信业务处理功能的研究与实现专 业通信工程学生姓名班级学号指导教师指导单位通信与信息工程学院 日期: 2014年 11月 17日至 2015年 6月 12日毕业设计(论文)原创性声明本人郑重声明:所提交的毕业设计(论文),是本人在导师指导下,独立进行研究工作所取得的成果。除文中已注明引用的内容外,本毕业设计(论文)不包含任何其他个人或集体已经发表或撰写过的作品成果。对本研究做出过重要贡献的个人和集体,均已在文中以明确方式标明并表示了谢意。 论文作者签名: 日期: 年 月 日摘 要近二十年来,卫星通信技术已经越来越普遍,逐渐成为全世界的基础服务之一。本文设计和实现了一种基于卫星网络对地球站和卫星资源控制管理的系统,这里称为网络业务处理进程(network service processing,NSP)。论文首先描述系统的体系架构和功能设计,主要涉及到Python高级编程语言,Oracle数据库,ActiveMQ消息事件,Soap协议和Socket通讯等技术,同时讲述了与该进程相关系统的其他模块的关系。接着论文主要描述了网络业务处理进程(NSP)的软件设计实现,详细说明了软件的设计思路及整个程序的模块划分,程序采用多线程异步处理的方式,为线程设计输入队列和输出队列,以达到同时响应多个请求的目的。论文最后描述了对于该软件的测试情况,对软件容错性和完整性进行了详细的分析。关键字:卫星网络;业务处理进程;多线程;队列;Python;Oracle;SocketABSTRACTIn little more than two decades, communications satellite technology has gone from being revolutionary to commonplace, from an idea to world wide service.We design and implement a network management system based on satellite-control network of Earth stations and satellite resource. The system is referred to the network service processing (NSP). In this paper, we first describe the sytem architecture, function design and major technologies related to Python, a high-level programming language, Oracle database, ActiveMQ messaging events, Soap Protocol and Socket communication. In addition, we introduce that NSP interactswithothermodulesoftheproject. Then we mainly describe software design and implementation of the network service processing. According to software detailed design we divide program into four modules: the message module, the processing module, the common module and the configuration module. We use multiple threads for asynchronous processing, and design input and output queues for a thread, in order to achieve the purpose of responding to multiple requests simultaneously in the program. We finally describe the testing procedure for this software.As a result, a detailed analysis of software fault tolerance and integrity is carried out.Keywords: satellite network; network service processing; multiple threads; queue; python; oracle; socket目 录第一章 绪论11.1 引言11.2 课题背景介绍21.3 课题的研究现状与研究意义21.4 论文的研究内容与组织结构3第二章 系统开发的工具与技术52.1 开发工具介绍52.2 程序使用的主要技术62.2.1 Python62.2.2 Socket62.2.3 Thread72.2.4 Oracle数据库72.2.5 ActiveMQ72.2.6 SOAP8第三章 系统综述与软件设计实现93.1 系统功能描述93.2 NSP与系统其他模块的关系113.3 程序设计思路113.4 程序模块划分143.5 程序的详细设计与实现153.5.1 主程序153.5.2 CCU启动处理173.5.3 入网申请处理183.5.4 退网申请处理193.5.5 呼叫申请处理203.5.6 通信检测应答处理213.5.7 呼叫结束处理233.5.8 信道单元轮询响应处理23第四章 系统测试与分析254.1 主程序启动测试254.2 控制信道单元启动测试274.3 信道单元入网测试284.4 信道单元呼叫处理测试304.5 测试小结33第五章 总结和展望34致 谢35参考文献36南京邮电大学2015届本科生毕业设计(论文)第一章 绪论1.1 引言卫星通信是一种利用人造地球卫星作为中继站来转发无线电波而进行的两个或多个地球站之间的通信。自从20世纪90年代以来,卫星移动通信技术的发展十分迅速,也推动了天线技术的飞速进步。卫星通信具有非常多的优点,比如:覆盖范围广、通信容量大、传输质量好、组网方便迅速等,已经成为全球个人通信领域一种很有发展前景的技术。语音通话是卫星网络的业务之一,依靠卫星的中继作用,完成卫星终端之间的呼叫接续。另外由于卫星覆盖范围广的特点,可以简化陆地移动通信系统的很多问题,比如移动终端的位置更新,在蜂窝小区之间的频繁切换等。低轨道地球卫星通常被认为是高度在地球表面500千米到2000千米高空的卫星。这样低的高度可以降低端到端的延时和彼此之间的发送功率。除此之外,还可以不经过陆地资源直接在卫星网络之间建立路由连接。但是与高空卫星相对比,低轨道地球卫星要在某个固定点附近移动,由于其移动性,导致该卫星的覆盖范围是不固定的。高轨道卫星,比如同步地球卫星,覆盖范围几乎是不变的,这样就不会涉及到切换的概念,就可以简化卫星通信过程中的很多问题。1.2 课题背景介绍如图1-1所示,正常的卫星电话呼叫是需要卫星与地球站的配合,地球站是卫星通信系统中的地面通信设备,由天线分系统、发射放大分系统、接收放大分系统、地面通信设备分系统、终端分系统和通信控制分系统以及电源分系统组成。地球站的种类很多,可以由地球站发起呼叫,也可以由地球站管辖内的终端发起呼叫,该呼叫申请信令会直接发送到卫星上,卫星接收该信号,并对其进行处理再转发给地面的被叫终端,然后主被叫会在分配的频率与信道上进行通信,最后释放已经分配的资源和链路。地面移动通信系统支持多种接入方式:FDMA,TDMA,CDMA等,这些接入方式同样是卫星通信系统拥有的,但是卫星只是作为一个中继存在,并不会直接对信号进行解析,只是放大与透传,这样大大降低了卫星的设计难度。图1-1 通信网络拓扑图卫星通信过程中涉及到的资源主要有频段,转发器,波束,频率,功率,速率等。1979年世界无线电行政大会根据频段高低对卫星广播的频段进行了分配,共分为L,S,Ku,Ka,Q和E。每一个频段都在不同的频点上,相互之间不会相互干扰。卫星转发器接收地面发来的上行信号,将其变频并放大到足够的功率,然后通过技术处理用多工器将各频道的下行信号遥测合并,再经环行器送到发射天线向地面覆盖区转发卫星下行信号,转发器实际上就是中继。一个卫星一般有很多个转发器,可以完成多段上行频率到下行频率的转换;波束是指由卫星天线发射出来的电磁波在地球表面上形成的形状(比如说像手电筒向黑暗处射出的光束)。主要有全球波束、点形波束、赋形波束,它们由发射天线来决定其形状;频率就是实际通信过程中实际调制到的频率点,使终端在指定的频点进行发送与接收数据;卫星通信系统是需要功率控制的,在保证用户通信质量的前提下,最低限度的降低发射功率,减少系统干扰,增加系统余量,根据实际情况改变发射功率来补偿无线信道中的衰落与损耗,维持通信质量的同时,也不能干扰其他用户。因此网控中心需要对通信的功率进行控制,保证通信过程的稳定流畅;卫星通讯的速率就是通信过程中的业务速率,一般用Kbps衡量,也就是数据的传输速率。频分多址(FDMA)就是把信道频带分割为若干更窄的互不相交的频带(称为子频带),把每个子频带分给一个用户专用(称为地址)。频分复用(FDM)是指载波带宽被划分为多种不同频带的子信道,每个子信道可以并行传送一路信号的一种技术。频分复用技术下,多个用户可以共享一个物理通信信道,该过程即为频分多址复用(FDMA)。1.3 课题的研究现状与研究意义卫星电话呼叫的过程是需要卫星网络管理系统支持的。网络管理是现代通信网的核心技术之一,一般来说每一个卫星通信系统都配有一个配置全网的控制和管理中心,简称网控中心 。网控中心对整个卫星通信网进行管理和控制 , 是卫星通信网运行的中枢神经系统 , 其中的网络管理系统软件是网控中心的核心。国内外现有的卫星通信网网控中心一般都是对单个卫星通信网进行管理控制 , 如美国休斯公司用于数据通信的PES系统和用于话音通信的TES系统的网控中心 , AT&T的CLEARLINKVSAT系统的网控 中心软件CNCS和AEGIS。这些网络管理系统主要负责网内卫星资源的分配、用户的管理。网控中心对卫星系统进行集中监视、操作与管理,基本上具备以下的功能:1. 射频设备(上、下变频器,高功放低噪声放大器,天线等)的管理一般直接在设备上进行,并不需要网控中心参与,但是网控中心要能对其监视与控制。2. 网控中心接收各个卫星系统的运行事件报告(状态报告,故障报告与通信记录),对严重事件给出警报与响应。3. 网控中心支持卫星通信系统状态的查询,了解某个地球站的状态和配置。4. 网控中心根据统计信息自动生成报表供操作员查询。5. 支持对新加入设备的控制,具有可扩展性。网控中心的建立将会大大提高一个单位卫星通信系统的运行效率、资源使用效率、抗干扰性及可靠性,提高通信组织的实时性和灵活性,并为TMN管理卫星通信网络提供技术支持,因此具有显著的经济效益1。1.4 论文的研究内容与组织结构研究内容:本论文主要研究的是频分多址下卫星通信业务处理的功能,是网控中心的组成部分之一。卫星通信也和移动通信一样,支持多种接入方式:频分多址(FDMA)、时分多址(TDMA)、空分多址(SDMA)和码分多址(CDMA)。FDMA卫星通信系统将用户分割成多个正交频道,每个用户占用一个频道进行相互通信。FDM模式下卫星通信业务处理功能就是对于地球站终端的管理与控制,以下称之为网络业务处理进程(NSP)(network service processing),具体研究内容如下。一是与直连硬件设备的交互。网络业务处理进程(NSP)是部署在服务器上的一个后台进程,通过与硬件设备控制信道单元(control channel unit,CCU)交互,才能与卫星终端进行通讯。CCU主要作用就是实现FDMA多址接入,并且实现卫星与NSP之间的信息转发。CCU是一台单独的设备,通过网络交换机与服务器相连,通过TCP/IP协议实现信息互通。NSP要定义一些列协议与CCU进行通讯,保证正确接收CCU转发卫星的数据信息,也能通过CCU正确发送消息到卫星上。二是NSP业务处理程序的设计实现。NSP要实现的主要功能是控制处理地球站的入网和退网请求,处理地球站的呼叫业务,对地球站状态进行控制,按指定要求轮询地球站,设置地球站参数。NSP使用高级程序设计语言Python编写,采用多线程异步处理的架构,为线程设计输入队列和输出队列,以达到同时响应多个请求的目的。NSP还需要操作数据库,在程序启动时读取数据库数据保存在内存中,其中包括该网系下卫星可用的频率资源,地球站的状态,信道的状态等信息,是呼叫接续的重要参数。同时NSP还会通过ActiveMQ上报消息事件,将自己的当前状态和处理的结果上报到服务器,供需要的服务读取处理。NSP还会支持web服务的远程调用,通过这种方式,可以直接获取NSP的处理信息。三是对系统进行测试,准备测试数据,针对系统设计的功能进行验证测试,调试和解决出现的问题,使功能更加完善,程序更加可靠。论文结构:共分为5章,结构安排如下:第1章:绪论。介绍了卫星通信的背景以及卫星资源的定义,课题的研究现状及研究意义,和论文的研究内容与组织结构。第2章:系统开发的工具与技术。介绍了PyCharm集成开发环境,还介绍了程序设计中涉及到的技术。第3章:系统综述与软件设计实现。对系统的主要功能进行描述,并说明了该系统与项目中其他进程之间的关系,描述了程序整体的设计思路,并对系统进行详细的模块划分,最后对程序中的主要流程进行状态分析并给出关键代码。第4章:系统测试与分析。对主要流程进行测试与分析,包括异常处理机制是否完善,验证系统能否可靠运行。第5章:总结与展望。总结自己所做工作,提出程序设计中的不足之处,并展望自己未来的工作。第二章 系统开发的工具与技术2.1 开发工具介绍PyCharm是一种python IDE,带有一整套可以帮助用户在使用python语言开发时提高效率的工具,比如调试、语法高亮、project管理、代码跳转、智能提示、自动完成、单元测试、版本控制等一些高级功能,其中PyCharm Community Edition更是免费版本,也已经提供很完善的功能。如图2-1所示是Pycharm的界面,主要功能如下:1. 编码协助: 支持自动补全代码,支持窗口分割,支持编辑环境配置,包括编译器选择,颜色选择,系统函数高亮显示等,可以帮助用户高效完成编码。2. 项目代码导航: 支持代码跳转,在一个文件中用到的函数,可以直接定位到定义该函数的位置,也支持跨文件跳转,利用ctrl和鼠标右键就能直接定位,鼠标悬停在函数的位置还会提示函数的定义。3. 代码分析: 自动编译,错误的地方会标红处理,函数调用不正确的地方,会给出改正选项,用户可以根据自己的需要选择智能帮助,补齐代码。4. Python重构: 有了该功能,用户便能在项目范围内轻松进行重命名,提取方法/超类,导入域/变量/常量,移动和前推/后退重构。5. 支持Django: 有了它自带的HTML,CSS和 JavaScript编辑器 ,用户可以更快速的通过Djang框架进行Web开发。此外,其还能支持CoffeeScript, Mako 和 Jinja2。6. 支持Google App引擎: 用户可选择使用Python 2.5或者2.7运行环境,为Google APP引擎进行应用程序的开发,并执行例行程序部署工作。7. 集成版本控制: 登入,录出,视图拆分与合并,所有这些功能都能在其统一的VCS用户界面中得到。8. 图形页面调试器: 用户可以用其自带的功能全面的调试器对Python或者Django应用程序以及测试单元进行调整,该调试器带断点,步进,多画面视图,窗口以及评估表达式。9. 集成的单元测试: 支持单独的测试,比如一个文件,一个类,一个函数,都能独立测试,极大提高了测试的便捷性。图2-1 Pycharm工作界面2.2 程序使用的主要技术2.2.1 PythonPython被认为是一门解释性,交互的,面向对象的编程语言,经常被拿来与Tcl,Perl,Scheme,或者Java比较。根据Python的主页上的描述,这门编程语言有清晰的语法与模块化,类,异常,高层动态数据类型,动态类型等特性。除此之外,Python还为系统调用和库以及窗口系统提供接口,例如X11,Motif和Mac系统。你可以使用Python写C或者C+内置的模块,或者为了可编程接口应用的需要,python可以作为一门可扩展的语言被使用。Python是很方便的,可以在Unix,Windows,OS/2,Mac,Amiga,以及任何以C库为基础的平台上运行。尽管Python的应用是有版权的,但是Python却是可以自由使用与发布,甚至是商业应用也没有关系。2.2.2 SocketSocket也称作套接字,用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。如图2-2所示,就是socket的通信模型。1. 服务器监听:socket端的服务器,启动服务器之后,服务器会主动监听到来的每一个连接,并为其服务处理到来的请求。2. 客户端请求:socket的客户端,启动客户端之后,会主动连接服务器,这里一般会约定好IP地址和端口,因为不同的端口会绑定不同的服务,必须完全无误,才能保证数据通信的正常。3. 连接确认:socket服务器端接收到客户端的连接请求之后,会给客户端一个响应,告知客户端与服务器端的连接已经可用,可以发送数据了。通常服务器会启动一个线程来单独处理来自客户端的数据,当然服务器还会持续监听客户端的连接请求。图2-2 socket通信模型2.2.3 Thread线程也被称为轻量级进程, 是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。就绪状态是指线程具备运行的所有条件,逻辑上可以运行,在等待处理机;运行状态是指线程占有处理机正在运行;阻塞状态是指线程在等待一个事件(如某个信号量),逻辑上不可执行。每一个程序都至少有一个线程,若程序只有一个线程,那就是程序本身。2.2.4 Oracle数据库Oracle数据库是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。2.2.5 ActiveMQActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。它是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,是消息驱动中间件软件(MOM)。它为企业消息传递提供高可用,出色性能,可扩展,稳定和安全的保障。MOM的工作是使在分布式的各应用之间调度事件和消息到达指定的接收者。ActiveMQ的目标是在尽可能多的平台和语言上提供一个标准的,消息驱动的应用集成,同时支持多种协议。2.2.6 SOAP简单对象访问协议是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息。webservice三大要素:SOAP、WSDL(WebServicesDescriptionLanguage)、UDDI(UniversalDescriptionDiscovery andIntegration)。SOAP用来描述传递信息的格式, WSDL 用来描述如何访问具体的接口, UDDI用来管理,分发,查询WebService 。SOAP使用基于XML的数据结构和超文本传输协议(HTTP)的组合定义了一个标准的方法来使用网络上各种不同操作环境中的分布式对象,HTTP用于实现 SOAP 的RPC 风格的传输, 而XML 是它的编码模式。第三章 系统综述与软件设计实现3.1 系统的功能描述网控中心对整个卫星通信网进行管理和控制 , 是卫星通信网运行的中枢神经系统。主要完成以下功能:对射频设备的管理与监视,对系统运行事件的监控与处理,对系统通信状态以及地球站的状态的配置与查询等。网控中心由很多进程组成,如图3-1所示,其中业务管理站就是网控中心,本篇论文就是要实现其中的通信业务处理进程(NSP)。图3-1 程序通信逻辑框图NSP作为卫星网络的业务处理的主要程序,主要负责卫星通信网络组建与控制管理以及终端的入网退网,呼叫接续释放和状态统计上报。整个系统的程序通信逻辑框图如下,NSP只是整个业务管理站系统的一部分,该业务管理站也被称作网络控制管理中心,简称网控中心。该网控中心就是卫星网络的网管系统,对整个通信网络的组建开通,当前通信状态,当前资源状况,历史使用情况,呼叫接通率等信息进行统计与控制。NSP只是负责通信业务处理部分,也就是主要负责呼叫的接续,整个呼叫接续的处理过程大体如下:1. 终端A申请入网,成功后发起对终端B 的呼叫申请;2. 该呼叫申请经过卫星转发,通过业务管理站的CCU发送到 NSP;3. NSP解析A的呼叫申请,并对B进行通信检测,判断B是否在网内,是否符合接通的条件;4. 如果满足条件,则对A和B分配信道资源;否则呼叫失败5. 分配信道时,首先挑选合适的卫星转发器,其次再选择信道,分配的参数主要包括上下行波束,上下行频率以及通信的功率等信息;6. 呼叫结束时会释放已经分配的资源如图2-1所示:图3-2 呼叫接续处理过程图这个呼叫接续的过程也就是NSP业务处理的流程,NSP会对多次呼叫分别进行处理,这些呼叫都是并发的,所以要为NSP设计一套机制可以同时接收多次呼叫申请,来降低呼损率。NSP还会在处理的过程中上报事件,也就是汇报当前进程处理的现状以及汇报处理过程中一些重要的事件,以供网控中心的其他进程参考处理。NSP也会对外部发布web接口,供其他程序直接远程调用,这样可以通过web的方式直接与其他进程进行交互,可以也避免繁琐的TCP连接。以上就是NSP的主要功能。3.2 NSP与系统其他模块的关系像图3-1所示那样,与NSP并存的还有其他网控中心进程模块,既然网控作为一个控制卫星网络的中心,除了必要的业务处理进程之外,当然还需要界面,数据库等进程来支持整个系统的运行。CCU是控制信道单元,主要作用就是实现FDMA多址接入,并且实现卫星与NSP之间的信息转发。整个业务管理站实际上是部署在服务器上的后台服务程序,每个功能模块都作为一个进程存在,其中CCU是一台单独的设备,通过网络交换机与其他服务器相连,通过TCP/IP协议实现信息互通。图中FDMA信道就是CCU设备与卫星之间传输信息的通道,支持FDMA多址接入方式。网控中心其他模块之一就是界面配置的桌面应用,该进程主要是对通信子网进行参数配置,对地球站进行增删改操作,对卫星进行参数配置,对信道进行增删改操作,对转发器进行参数配置等。 同时界面支持网控中心进程状态的查询显示,可以直接查看每个进程的详细信息,是否故障,是否正常工作。该桌面应用程序还会接收来自NSP的事件,每一次呼叫的信息与处理过程,都可以通过该进程查看。该进程有错误记录的功能,会维护整个系统运行。网控中心其他模块另一个进程就是数据库服务,该服务主要是对数据库进行增删改操作。由于系统每个进程都需要连接数据库,所以设计一个单独的服务,只能通过该服务才能对数据库进行写操作,从而避免不必要的混乱。想要进行写数据库操作的进程,首先与该服务交互,将写数据库的必要信息都发给该服务,再由其统一写数据库。由于配置信息主要由桌面应用提供,所以桌面应用发起的写数据库信息是最多的,一般情况下,桌面应用会发送写数据库的数据给数据库服务以便其写数据库记录,另一方面会将该信息发送给NSP,以便NSP更新网络拓扑的信息,从而保持最新的状态。网控中心其他模块的另外一些进程就是为了系统扩展性和稳定性而设计的,比如异地容灾的设计与代理的设计。这些进程不是系统正常运行的必要条件,但是却能保护系统安全运行,大大提高系统的安全性与稳定性,也为系统以后的扩展提供了便利的条件。3.3 程序设计思路NSP主要与两部分进行通信,一部分是控制信道单元CCU,通过CCU中转进而与卫星终端进行交互,另一部分是网控中心内部其他的进程,通过这种内部交互,完成进程的身份认证,参数设置以及状态统计上报等工作。除此之外,NSP还需要与数据库和消息事件服务器直连。NSP是运行在网络环境中的,所依靠的通信机制是TCP/IP协议,也就是socket。必须保证NSP与每一个实体都建立连接,这样才能与他们进行相互通信。首先是NSP与网控中心其他进程之间的连接,在内部网络环境中,每个进程的IP地址是确定的,网控中心有专用的进程是中转数据,监控网控中心各进程连接状态的,所以NSP启动要向该中转进程发送UDP启动报告,该中转进程对NSP进程进行鉴权,通过后返回启动响应,然后NSP根据响应内容建立与该中转进程的TCP连接,这样就实现了底层通信的接口。使用UDP启动报告,根据启动响应再建立TCP连接的方式是为了安全性和有效性的考虑,必须增加对连接的鉴权,才能保证通信的安全。连接建立的流程如图3-1所示:图3-3 连接建立流程图其次是NSP与CCU之间的连接,CCU属于NSP的管理,CCU启动时也参考上面的流程,先向NSP发送UDP的进程启动报告,然后NSP对其进行鉴权并根据本身的状态把工作参数与配置直接下发给CCU。CCU与NSP之间并不建立TCP连接,都是动过UDP报文进行通讯,通过响应消息来确保报文到达的可靠性。最后是NSP与数据库和消息事件服务器之间的连接。NSP与它们的连接并不需要UDP启动报文,而是直接建立TCP连接。因为数据库与消息事件服务器都是第三方的软件,它们本身有完善的连接机制,在此不做多与考虑。另外NSP与每个实体连接的建立并不是一蹴而就的,由于网络环境错综复杂,不能保证所有的连接都始终连通,这时必须要有一套保证的机制来发现与某个实体的连接是否正常,这就是心跳检测,也就是图3-1所示的轮询与轮询响应。一旦发现连接异常,立即启动重连机制。在连接可用的前提下,再来考虑数据处理的模型。根据连接的实体,决定采用为每个连接建立一个线程的模型,这个可以同时处理不同线程接收的数据,不至于造成处理拥塞。同时采用输入队列与输出队列,为每个线程缓存消息,这样设计是为了防止数据的丢失,因为每个线程都是串行处理的,当线程正在处理数据时,是不能接收新到来消息的,这样就造成了数据的丢失。系统的整体设计框架大体分为三个部分:输入队列、处理与输出队列。如图3-2所示:图3-4 系统框架设计图由于每个线程都有自己的输入,所以每个线程保持一个输入队列。Handler线程封装在socket之上,接收所有的消息,并且按照目的进程序号,分别将消息添加进入不同线程的队列,每个线程处理自己输入队列的消息,并将输出消息封装发送给输出队列,另外存在一个单独线程从输出队列中取出消息并根据消息的目的进程号将消息发送出去。上面说到进程号,是统一编址的,在所有消息内容的头部统一增加公共字段,其中第一个字段表示目的进程号,表示该消息要发往的进程,第二个字段是源进程号,表示发出该消息的进程。通过这种方式可以将消息进行分类处理,这也是程序设计时的考虑之一。程序设计时还有一点考虑就是基于异常的差错处理机制,必须保证业务处理进程的容错运行。网控中心的业务处理进程主要的工作是对接收到的各种地球站信令进行处理。而这些信令在经过卫星信道传输和其他设备的转发很可能发生错误。如何进行差错处理,保证业务处理进程能够容忍错误的输入数据、避免进程崩溃是至关重要的。传统的差错处理方式是在进行任何一项操作时首先对各种可能导致操作非法的情况进行检查,如:数组下标是否越界、引用对象是否存在等。但是,这样的差错处理方式存在如下问题:1) 大量的检查会导致程序可读性变差;2) 操作检查可能重复了操作本身的一部分工作;3) 程序员很容易漏掉一些必须的检查;4) 在完成了检查还没有进行实际操作时,条件可能会发生变化。针对这些问题,我们采用了基于异常的差错处理机制来减轻接收其它进程发送的错误数据和程序中的bug对程序正常运行造成的影响。基于异常的差错处理机制在操作前并不做显式的检查,而是在操作失败时抛出异常,执行该操作的代码负责对异常进行捕获和处理,避免了上述问题。具体来说,在每个处理线程的执行循环中对所有的异常进行捕获。这样,当由于接收到的信令不正确或者其它原因导致抛出异常时,线程能够中断当前的处理流程,将异常捕获并显示异常的具体信息,随后进入下一次循环,继续处理下一条信令。避免因为输入数据错误导致进程崩溃,大大提高了业务处理进程的可靠性。3.4 程序模块划分根据程序的功能,大体将程序分成以下几个模块:消息模块,处理模块,公共模块与配置模块。消息模块用来封装内部交互的各种自定义的消息,处理模块是根据解析到的消息获取输出参数进行相应的处理,公共模块是系统公用的资源,比如全局变量与常量,配置模块用来动态的读取外部的参数,比如IP地址等信息,方便程序的移植。根据每个模块功能的不同,大体把工程文件分为以下几类,如图3-3所示:图3-5 工程文件分类图其中配置模块主要对应config.ini的文件(图中未给出),该文件会包含与NSP交互所有进程的参数,比如IP地址,端口等信息,这样可以方便移植,不需要对程序重新编译。公共模块主要对应common.py文件,是整个系统的公用资源。消息模块主要对应msg.py,msg_cd.py与event.py,对交互的消息和事件进行封装与解析。处理模块就是对应main.py,land.py和orbit.py,是程序运行处理的部分,对程序逻辑与流程进行控制与管理。main.py控制整个程序的运行,包括主要流程,主要逻辑都在其中实现,是NSP的主函数。实现了以下的功能:TCP数据的接收与存储、UDP数据的接收与存储、CCU线程的启动与处理、轮询线程的启动与处理、代理线程的启动与处理、网控中心其他进程线程的启动与处理、数据库的读取、连接消息事件服务器线程的启动与处理、时间线程的启动与处理等。common.py定义了系统的全局变量和函数,读取配置文件,定义系统常量与异常,对程序输出信息进行重定向。event.py是对消息事件的定义,统一事件格式,重载发布函数,对事件内容进行json编码,方便其跨语言跨平台传输。land.py定义地面设备实体进程的类,网控中心所有的实体类都在这里说明,对呼叫过程中的重要参数进行定义,比如电话号码的BCD编码问题以及信道单元和地球站。msg.py定义与其他实体进程交互的基本消息,比如与网控中心其他进程通信的消息,与CCU的交互消息,NSP启动上报与接收的消息,按照字段字节数排列,统一了消息的封装与解析。orbit.py定义了表示卫星上组成的类,比如时隙,波束,卫星,信道,转发器等。在其中实现了呼叫过程中对于信道的分配算法,就是根据已用信道和空闲信道的关系,考虑功率等参数对信道进行分配,并将参数下发给正在通信的主被叫,使其在指定的信道频率上进行互通。msg_cd.py与msg.py相似,定义的是当前网系下地球站终端与NSP进行交互的消息,这些消息都是通过CCU进行中转的,比如包含入网申请、退网申请、入网应答、退网应答、呼叫申请、通信检测、信道分配、呼叫结束等信令。根据系统涉及到的主要功能与本身的特点,将NSP划分为4大模块,这4个模块之间是相互协调工作的,因为都是属于线程通信,这些线程共享内存数据,同时为了内存数据的统一还会使用到线程锁的技术,防止相互操作造成的混乱。common.py是其他每个模块都必须要引入的,因为common.py定义了系统的全局数据,这些数据又是每个模块都要使用的,所以模块之间是相辅相成的。3.5 程序的详细设计与实现 3.5.1 主程序主程序最主要的任务就是启动各个线程,使其开始正常工作,并将所有的数据加载至内存中,根据外部输入消息的先后,分别调用不同的线程进行处理,每次执行完就更新自己的状态,并等待下一个状态变化条件的产生。程序结束时,主程序会分别控制相应的线程全部关闭,释放系统分配的资源。整个程序完整处理一次业务的总流程如图3-6所示:图3-6 完整处理一次业务流程图主程序启动每个线程进行消息处理的流程如图3-7所示:图3-7 主程序工作流程图由工作流程图对应的关键代码如下: def Run(self): logging.debug(启动各个线程) threadUDP = ThreadUDP() threadUDP.start() threadNCC1 = ThreadNCC1() threadNCC1.start() threadNCC2 = ThreadNcc2() threadNCC2.start() threadNCC3 = ThreadNcc3() threadNCC3.start() threadCCU = ThreadCCU() threadCCU.start() logging.debug(监听TCP连接) tcp_server = MyThreading(system.ipSelf,system.portTCP),InputHandler) tcp_server.serve_forever() logging.debug(关闭所有的连接) for proc in nsp.GetProcs(): proc.CloseConn() logging.debug(关闭所有的线程) threadUDP.Quit() threadNCC1.Quit() threadNCC2.Quit() threadNCC3.Quit() threadCCU.Quit() time.sleep(3) logging.debug(主程序结束)3.5.2 CCU启动处理NSP的主要的工作之一就是与CCU进行交互,通过CCU进而控制地球站终端的通信过程。CCU是单独的硬件设备,与网控中心通过网络交换机相连,也在NSP的管理范畴之内,CCU外接变频器等其他设备就可以与卫星直接通信。NSP要根据实际的数据对CCU进行配置,配置数据主要包括上行频率,上行波束,转发器,所属卫星,以及下行频率,下行波束等参数,通过这些参数,CCU就可以设置自己工作在指定的频率和波束上,才能为向卫星发送数据以及从卫星接收数据做好准备。在实际的处理过程中至少需要两台CCU协同工作,一台用于向卫星发送数据,另外一台用于接收数据,两台CCU设备也是最简单的组网模型。CCU启动会向NSP发送启动报告,NSP接收启动报告,并判断是否合法,然后将角色设置和参数设置发给CCU,最后向CCU发送配置报告,该报告中就指出CCU要与卫星通讯所必须的参数。当两台CCU都启动之后,NSP会给向卫星发送数据的CCU再发一帧信道选用通告,告诉CCU可以通过该信道发送广播,告知想要入网的地球站通信的必要信息。基本处理流程如图3-8所示:图3-8 CCU启动处理关键代码如下:def _ProcessStartReport(self, data): msg = CcuNspProcessStartReport(data) if self.IsVaild(msg): ccu = procAllCCU.NewCCU(msg) msgOut = NspCcuRoleSet(ccu) msgOut.SendOut() msgOut = NspCcuWorkingParam(ccu) msgOut.SendOut() ctrlChannel.useCCU(ccu) else: pass3.5.3 入网申请处理入网申请是由终端向NSP发起加入网络的申请。终端在配置必要的信息之后,就具备了入网的状态,这时候开始发起入网,该信令会直接通过卫星中转,被CCU接收到,CCU会自动将该信息转发给NSP,进行后面的处理。入网申请是为了可以发起呼叫或者接受被叫,否则网控中心是不能确定终端的状态的,更不能进行业务上的处理。就像移动通信系统中的手机开机一样,手机开机会首先搜索附近的基站,然后向基站发起入网申请,进行鉴权等一系列操作,最后更改该手机终端在网络的状态。地球站终端入网的处理如图3-9所示:图3-9 入网申请处理关键代码如下:def HandleJoinReq(self, data, isResend): msg = AlohaJoinReq(data) cu = self._GetJoinReqCU(msg) self._SetCUByJoinReq(cu,msg) if not isResend and self.IsVaild(cu): if system.HasSession(cu) # 如果入网的cu已经在别的会话中,直接结束会话 session = system.GetSessionByCU(cu) self._EndCall(session) self.DoJoin(cu) # 入网实际的处理 else: pass3.5.4 退网申请处理退网申请也是由终端主动发起的,主要用于终端退出网络,不再接收网控中心的轮询与控制,也就是相当于关机的状态。地球站退网的处理如图3-10所示:图3-10 退网申请处理关键代码如下:def HandleQuitReq(self, data, isResend): msg = AlohaQuitReq(data) cu = system.GetCUByMsg(msg) cu.secondQuiet = 0 if not isResend and self.IsVaild(cu): self.QuitAndReport(cu) ccu = self.GetTdmCCU(cu) msgOut = TdmQuit(ccu, cu) msgOut.SendOut() else: pass3.5.5 呼叫申请处理语音呼叫是卫星通信主要的业务之一,像上面提到的移动通信系统那样,地球站终端就相当于手机,呼叫申请也是由终端发起的,呼叫涉及到卫星通信完整的过程,会利用各种资源,需要每一部分协调才能完成。当呼叫申请到达NSP的时候,首先要判断发起呼叫的终端是否具有权限,然后再解析主叫的参数,判断主叫是否满足呼叫的条件。当主叫没有问题时,首先向主叫发送呼叫等待的信令,再去判断被叫当前的状态,是退网,忙碌还是空闲,根据被叫的状态决定呼叫是否
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年物联网行业物联网技术应用及市场前景研究报告
- 2025年金融行业区块链技术应用前景分析报告
- 2025年汽车行业汽车科技发展前景预测研究报告
- 压力容器安全培训心得
- 宁乡市2025湖南长沙市宁乡市老干部(老年)大学招聘中级编外人员1人笔试历年参考题库附带答案详解
- 增城区2025广东广州市规划和自然资源局增城区分局招聘特殊专业技术类聘员8人笔试历年参考题库附带答案详解
- 国家事业单位招聘2025应急管理部消防产品合格评定中心第一批次招聘拟聘用人员笔试历年参考题库附带答案详解
- 国家事业单位招聘2025农业经济与发展研究所招聘笔试历年参考题库附带答案详解
- 双鸭山市2025黑龙江双鸭山饶河县事业单位面向社会公开引进高学历人才10人笔试历年参考题库附带答案详解
- 北海市2025广西北海市涠洲岛旅游区行政审批服务中心招聘1人(截止5月24日)笔试历年参考题库附带答案详解
- 2024抖音护肤行业白皮书
- 商铺转租赁合同范本
- 《足球裁判员培训》课件
- 浴室工程施工组织设计方案
- 2024年秋九年级化学上册 第3单元 物质构成的奥秘 课题3 元素 第1课时 物质是由元素组成的说课稿 (新版)新人教版
- 微商基础培训课件
- ISO9001:2024版质量手册资料
- 2023-2024年社会工作者之初级社会综合能力考试题库
- 2025年慢性阻塞性肺疾病全球创议GOLD指南修订解读课件
- 民族宗教团日活动
- 新娘化妆相关知识考核试题及答案
评论
0/150
提交评论