RUDP在分布式网络管理架构中的探究与应用

0          引言

[1]目前常见的网络数据传输协议是TCPSCTPUDPTCPSCTP虽然传输可靠,但是设计复杂,占用很多系统资源,海量并发连接会耗尽系统资源,小包传输通信效率很低,网络传输带宽利用率低,这在带宽资源有限的军事卫星通信网中是无法推广使用的。UDP协议是非面向连接的,虽然传输速度快,通信效率高,支持海量并发连接,网络传输带宽利用高、系统资源开销小,但是它没有确认机制,数据发送后无法知道是否对方收到,网络带宽有限的情况下还会出现丢包、乱序等情况。

分布式网络管理系统域间通信是基于消息的,[2]TCP本身虽然提供了有纠错机制和流量控制机制,但是在基于消息的传输方面存在很多缺陷TCP连接通过IP地址和端口号来唯一标识,无法透明支持连接双平面的分布式网络管理服务器,也无法冗余会话连接提供高可用支持;TCP只提供单一数据流,传输的数据流必须按序传输,当网络带宽受限的情况下,经常会出现丢包、乱序现象,TCP必须重传,等待纠正传输序号,造成网络传输时延增大,降低了传输效率;TCP的滑动窗口机制,在网络带宽受限的的情况下,时延较大,逐条确认回复,导致TCP无法支持海量数据传输;由于TCP是面向字节流的协议,所以TCP开始连接前必须知道流的数据内容和数据格式。鉴于TCP协议的种种不足,IETF组织提出了SCTPSCTP是面向连接的、支持多路径和多流传输协议,提供消息定界、流控制和拥塞控制功能,比TCP安全健壮,但其也是基于流的、面向连接的协议,不能支持带宽受限情况下的海量数据传输,其本身对系统资源的开销也很多,所以也不能很好的支持军事网络带宽受限情况下的海量数据可靠实时传输。

军事卫星通信网的特点是带宽有限、长延时、高误码率以及非对称带宽,但是对数据可靠性和实时性要求高。因此基于TCP/SCTP的分布式网络管理架构在军事卫星通信网中是无法推广使用的。鉴于UDP的传输的高效性,很多学者对其进行封装改进,使其具有TCP可靠的特性,但是几乎所有改进协议都是在提出者特定需求和背景下所做的改进,但是并不是所有的改进都适用于军事卫星通信网分布式网络管理的需求。

本文介绍一种在军事卫星通信网中带宽受限情况下基于UDP封装的RUDP通信机,来实现对数据报文的可靠实时传输,该通信机已经经过实践验证。

1          .RUDP设计

根据RUDP网络分层体系结构模型如图 1所示,RUDP位于应用层。这样设计的目的是不改变操作系统协议栈,增强RUDP构件的可移植性和平台无关性。RUDP实在传输层UDP的基础上进行封装实现的。根据军事卫星通信需求在UDP基础上增加连接维护机制、解压缩传输机制、分包传输机制、异步并发机制、确认机制、重传机制、滑动窗口机制等功能。

图 1  RUDP网络分层体系结构

1.1    连接维护机制

在分布式网络中,实行多级分布式网络管理,本地网络管理系统负责管理本域内网络。根据执行任务,确定上下级关系后,上下级之间要监控连接通道的状态。上下级RUDP通信机启动后,建立上下级之间的可靠连接通道,从而监控上下级网络连通性,建立连接发起者一般有下级RUDP通信机发起。可靠连接通道的建立过程类似于TCP三次握手。RUDP连接维护控制过程如图 2所示。

图 2 RUDP连接维护控制过程

1.2    解压缩传输机制

分布式网络管理中,上下级之间需要同步资源、拓扑、状态及参数等信息。由于网络规模很大,需要同步数据海量而且同频率很高,卫星通信信道带宽只有64K,所以进行数据传输前需要将数据进行压缩处理。目前常用到的文本文件压缩算法有:哈夫曼编码算法、算术编码算法、基于字典的LZ编码算法和游程编码算法等,RUDP通信机动态调用上述几种编码算法,数据发送时会根据数据类型选择相对适用高效的算法对数据进行压缩传输,接收端进行相应的解压缩。解压缩传输机制是大数据窄带宽环境下解决传输效率的有效途径之一。

1.3    分包传输机制

RUDP传输层使用的是UDPUDP协议的包长受协议栈限制。因为UDP包头有2个byte用于记录包体长度,2个byte可表示最大值为: 2^16-1=64K-1=65535,UDP包头占8字节,IP包头占20字节,所以一包传输最大应用数据字节数为65535-28= 65507。当传输数据超过65507个字节时,就需要分包分片传输。分包传输机制就是为了解决UDP发送数据超过65507个字节而采取的传输机制。根据实际网络状况,卫通通信信道时延一般大于500ms,信号稳定性较差,误码率及高,数据包的大小限制在1.5KB以内,这样既要保证通信质量,又保证了通信带宽利用率。当应用层传输的压缩后的数据超过1.5KB时,进行分包分片发送,首先将压缩后的数据分成1.5KB大小的数据包,数据包头记录总包数和包序号,最后一包还要有校验位,以便接收端组合时校验所传输的大块UDP数据的完整性,然后逐包发送。接收端RUDP通信机接收到数据后,判断是否是大块分包数据,如果是需要将数据进行组装,收到最后一包后,对大块UDP数据进行完整性校验,若校验错误,请求对端重传,验证接收到数据完整后交由网络管理服务处理。通过增加该机制使得用户可以连续传送视频数据流, 从而解决UDP协议不能传输海量大块数据的问题。

1.4    异步并发机制

数据发送的准备工作完成后,需要建立RUDP可靠传输通道,创建过程类似于TCP三次握手。为了提高RUDP通信机的通信能力,RUDP通信机维护上下级之间传输通道的状态,根据应用数据包的分发方向进行分发处理,可以自定义数据处理调度器,实现对数据包的单线程、多线程分发处理,发送端采用异步方式进行数据发送,接收端针对每个应用数据包创建一个对应监听器,提供对发送进度和发送结果的监听。这样实现了RUDP的海量并发传输,提高了RUDP通信机的通信效率,同样也带来一个问题如果同一个方向上的并发数据过多,会造成网络拥塞,出现丢包、乱序等问题。

1.5         确认机制

为了解决网络拥塞情况下数据传输丢包、错包和乱序等问题,[3]我们采用捎带确认、总计确认、超时确认和缓存确认等方式保障数据可靠传输。在网络负载大的情况下,要保证数据的传输完整性,必须确保将应用数据拆分后的小包有序重新组装。所谓捎带确认指的是将按发送顺序到达的分包向发送端捎带回馈确认消息,总计确认是分包收集完成后向发送端回馈完整性确认消息,超时确认是向发送端确认丢失的分包要求发送端重新发送,这三种却认方式与TCP的处理方式非常相似,不再赘述。缓存确认是指在收到发送端的乱序分包时,为了合理利用网络带宽,并不是直接将其丢弃,而是将其在接收端创建乱序队列将其缓存,应用数据组装过程中回收利用,同时设置乱序报文计数器,达到门限值向发送端发送确认消息,确认报文中包含所有的乱序包含集合和已经收到的最大包序号,以便发送端确认下一步要重新发送的包号。这四种确认方式相结合,在很大程度上降低了网络资源的开销,解决了丢包、乱序的问题。

1.6    重传机制

军事卫星通信中,通信信道不稳定,带宽资源受限,超时确认机制是为了实现丢包重传。[4]UDP本身没有检测重传机制,为了保证传输的可靠性,该RUDP通信机扩展实现数据重传机制。

RUDP重传是由接收端发起的请求,发送端数据包发送完成后进入等待队列,缓存确认能够使发送端计算出丢失的数据包号,接收端在本创建丢包队列,将数据拆包重组的过程中,发现缺失的数据包入队,当缺失包数达到阈值时,发送给发送端,要求其重传,发送端收到回传请求后,则终止并记录当前的发送处理, 处理需要重传的数据, 发送完后,再进行先前的发送处理。最后一次请求重传不受阈值控制。

1.7    滑动窗口机制

RUDP扩展滑动窗口机制的目的是控制消息收发和控制流量。[5]滑动窗口协议的基本原理就是在任意时刻,发送方都维持了一个连续的允许发送的帧的序号,称为发送窗口;同时,接收方也维持了一个连续的允许接收的帧的序号,称为接收窗口

滑动窗口的大小范围是根据网络实际情况、发送端和接收端的处理能力来定义的。发送端维护发送队列和重发队列,发送端将n个数据包发送出去后(n为滑动窗口的大小),然后每收到一个确认包后便再发送下一个,直到所有的数据包发送完毕为止。接收端维护按序队列和乱序队列,每收到一个数据包,便回复一个确认,同时将其放入按序队列中。但往往收到的数据包不是希望的顺序,这就需要将它们放入乱序队列中,不断将他们进行排序插入到按序队列中去,如果我们设定的滑动窗口过大,接收端收到的数据包太过分散,对乱序队列的维护需要耗费大量的内存和CPU,所以接收端的处理能力也是我们设定滑动窗口大小要考虑的因素。

滑动窗口机制是流量控制的最佳解决办法,说白了就是一个停止等待机制,只不过是一个并发的停止等待机制,将微观上的顺序发送转换为宏观上的并行发送。

2       RUDP实现

面对军事通信国产化的趋势和要求,RUDP通信机使用JAVA语言开发,运行平台无操作系统限制。

RUDP通信机对外暴露了RUDPPacketRUDPTransceiverRUDPDataListenerGeneralAsynTransceiverSendProgressHandler接口,并包含了一个工厂类AsynTransceivers类。其他类都是辅助实现类,除非进行应用扩展,一般不需要直接使用。核心接口的层次关系如图 3所示。

图3 核心接口的层次关系图

RUDP通信机对发送和接收的数据进行了封装,统一使用RUDPPacket结构,其中主要包括发送和接收的数据、对端地址和端口号、以及数据包类型。其中数据部分由三部分组成:数据缓冲区buf、数据起始部分的偏移offset以及数据的总长度length。

AsynTransceivers类是UDP可靠通信模块的工厂类,以静态方法提供对通信机实例的创建和初始化处理,简化使用者的代码调用。

RUDPTransceiver类是通信机的接口类,可以通过接口对通信机进行配置,然后启动、停止通信机以及发送数据。

SendProgressHandler接口定义了数据发送进度的通知,发送方在发送数据是需要提供。如果不关注数据发送结果,可以忽略该接口。

RUDPDataListener接口是数据处理接口,只有一个方法,用于在服务端处理接收到的数据。

3       RUDP性能测试

LLDP对端端口信息表用于发现拓扑中的网络连接关系详细信息。

RUDP通信机是跨平台使用的,它的性能不但在Window平台上进行了验证测试,而且在Linux操作系统中也进行了测试验证。在Linux 操作系统中测试RUDP通信机, 以军事卫星通信网为实验环境, 网络单向传输时延为255ms, 每个数据包尺寸为1.5KB, 每发送4个数据包接收方返回一个确认消息,能够正确传输语音流、视频图像数据,速率大约 50Kbps

4          RUDP应用

目前,军事通信网很多站点之间的通信承载网是卫星信道,带宽资源有限,要想将它们管理起来,必须建设分布式网络管理系统。分布式网络管理系统域内采用B/S架构,便于多用户管理,易于维护升级,域间使用RUDP通信机作为一个消息中间件进行上下级之间同步数据,使得处于不同工作平台的上下级网络管理系统之间进行可靠通信。同步的数据包括网络资源、拓扑数据、网络状态以及共享图像产品等。实践证明RUDP通信机在这种低带宽、高误码率、传输时延大的网络中在保证数据可靠、高效传输方面是非常实用的。RUDP通信机由发送者和接收者两部分组成,同时维护分布式网络上下级通道状态。发送者维护发送队列和超时队列,接收者维护按序队列和乱序队列,并且负责组装应用数据包和发起重传请求。

5          结束语

本文介绍基于UDP的RUDP通信机既保留了UDP协议能够建立海量连接、数据传输实时高效的特性,又弥补了UDP协议传输数据不可靠、不能传输海量数据的缺点。RUDP通信机应用在军事通信网的分布式网络管理系统中是首次实践,实践证明RUDP通信机在分布式网络管理系统中上下级之间同步海量数据是可行的,在窄带宽、高误码率、时延大的网络环境下同步数据是实时可靠的。RUDP通信机为网络基础设施受限的环境下进行数据软交换提高了一种新方法,而且该方法的成本很低,具有广阔的应用前景。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值