一种多端口自适应UDP通信协议的制作方法

文档序号:11517832阅读:424来源:国知局
一种多端口自适应UDP通信协议的制造方法与工艺

本发明属于通信领域,涉及一种udp通信协议



背景技术:

udp协议具有数据传输时延低、资源开销小、支持对等的通信方式等特点;但udp协议本身不可靠,为了保证数据的实时可靠传输,就需要在应用层进行适当的传输协议设计。查阅文献,现有的udx协议,是一种优化通用数据交换协议,通过流量控制、中转模式解析等方式实现可靠传输;pudp协议将数据包传输控制机制糅合到流量控制当中,实现udp报文的可靠传输;udp/nlt协议是基于网络编码技术,使用lt和网络编码技术对发送的数据包进行编码和解码,减少网络丢包。上述协议主要针对端口链路不需重建的情况设计实现的,无法保证当嵌入式机载设备重建通信链路时实时数据不丢失。



技术实现要素:

针对现有技术的不足,本发明的发明目的在于提供一种多端口自适应udp通信协议mp-udp,该协议通过建链、数据确认、重传等机制进行正常通信,在当前通信链路重传三次失败需要重建时,利用rmp(rank_move_program)算法以自适应的方式迁移到新的端口链路上进行通信。并且在simulink中建立客户端和服务端模型,以图形化的方法实现了mp-udp协议。

本发明的发明目的通过以下技术方案实现:

一种多端口自适应udp通信协议,应用在客户端,包含以下步骤:

客户端的端口与服务器的端口建立通信链路的过程;

数据传输过程;

当当前的通信链路的数据传输出现重建时,主动迁移到其它通信链路执行所述数据传输过程;

以及,被动迁移到其它通信链路执行所述数据传输过程。

依据上述特征,客户端的端口与服务器的端口建立通信链路的过程为:向服务器的端口发送块号为0的通信包,待接收到服务器回复的块号为0的通信包后,表明通信链路建立成功,将该通信链路的状态标记为正常。

依据上述特征,数据传输过程为:

通过通信链路向服务器发送块号为非0的通信包,若有数据需要发送则在通信包中增加数据内容;

当收到服务器回复的通信包中的块号与发送的通信包中的块号相等,则向服务器发送块号加1的通信包;

依据上述特征,在客户端设置环形缓冲区,环形缓冲区附带读指针和写指针,当客户端有数据发送时,移动写指针将数据写入环形缓冲区中;当读指针与写指针不等,则移动读指针将数据从环形缓冲区读走加入通信包中。

依据上述特征,当当前的通信链路的数据传输出现异常时,主动迁移到其它通信链路执行所述数据传输过程为:

如果收到服务器回复的通信包中的块号与发送的通信包中的块号不相等或者超时未收到服务器回复的通信包,则重发该通信包,重发超过3次时,从其余状态为正常的通信链路中选择一条通信链路重发该通信包;同时,将当前的通信链路的状态标记为重建,执行所述客户端的端口与服务器的端口建立通信链路的过程;

其中,选择通信链路的方法为:利用rmp算法对除当前正在通信的通信链路以外的状态为正常的通信链路进行一次排序,并将排序结果存储到队列queue中,当通信链路需要迁移时,队列queue的第一个元素即为选中的通信链路。

依据上述特征,被动迁移到其它通信链路执行所述数据传输过程为:对除当前正在通信的通信链路以外的状态为正常的通信链路进行监听,到监听到某一通信链路有通信包发送过来时,则迁移到有通信包发送过来的通信链路上执行所述数据传输过程,同时对原通信链路执行所述客户端的端口与服务器的端口建立通信链路的过程。

一种多端口自适应udp通信协议,应用在服务器,包含以下步骤:

服务器的端口与客户端的端口建立通信链路的过程;

数据传输过程;

当当前的通信链路的数据传输出现异常时,主动迁移到其它通信链路执行所述数据传输过程;

以及,被动迁移到其它通信链路执行所述数据传输过程。

依据上述特征,服务器的端口与客户端的端口建立通信链路的过程为:当服务器的端口接收到客户端的端口发送的块号为0的通信包后,向客户端的端口回复块号为0的通信包,表明通信链路建立成功,将该通信链路的状态标记为正常。

依据上述特征,数据传输过程为:如果当前接收到的客户端发送的通信包的块号是上次接收到的通信包的块号加1,则向客户端回复块号与接收到的通信包中的块号相同的通信包,若有数据发送则在通信包中加入数据内容。

依据上述特征,在服务器设置环形缓冲区,环形缓冲区附带读指针rptr和写指针wptr,当服务器有数据发送时,移动写指针将数据写入环形缓冲区中;当读指针与写指针不等,则移动读指针将数据从环形缓冲区读走加入通信包中。

依据上述特征,当当前的通信链路的数据传输出现异常时,主动迁移到其它通信链路执行所述数据传输过程为:

如果当前接收到的客户端发送的通信包的块号不是上次接收到的通信包的块号加1,或者超时未收到客户端发送的的通信包,则重发上次通信包,重发超过3次时,从其余状态为正常的通信链路中选择一条通信链路重发上次通信包;同时,将当前的通信链路的状态标记为重建,执行所述服务器的端口与客户端的端口建立通信链路的过程;

其中,选择通信链路的方法为:利用rmp算法对除当前正在通信的通信链路以外的状态为正常的通信链路进行一次排序,并将排序结果存储到队列queue中,当通信链路需要迁移时,队列queue的第一个元素即为选中的通信链路。

依据上述特征,被动迁移到其它通信链路执行所述数据传输过程为:对除当前正在通信的通信链路以外的状态为正常的通信链路进行监听,到监听到某一通信链路有通信包发送过来时,则迁移到有通信包发送过来的通信链路上执行所述数据传输过程,同时对原通信链路执行所述服务器的端口与客户端的端口建立通信链路的过程。

本发明的有益效果在于:多端口自适应的udp通信协议mp-udp,在当前链路需要重建时能够以主动或被动方式自动迁移到新的端口链路上继续进行数据通信,能够保证实时数据包不丢失,通信的可靠性大大提高;同时,利用simulink对客户端和服务端进行了建模,以模型的方式实现了mp-udp协议,并对模型进行了测试验证,从而可以对协议的逻辑进行直观的分析判断;此外,可以将验证后的模型自动生成c代码,比传统手工编码更可靠,因而可以在嵌入式领域推广应用。

附图说明

图1为实施例中通信包的格式示意图;

图2为实施例中数据传输的流程示意图;

图3为通信链路迁移的流程示意图;

图4为环形缓冲区的结构示意图;

图5在simulink中建立的客户端的模型示意图;

图6为rmp算法模型;

图7在simulink中建立的主动迁移模型的示意图;

图8在simulink中建立的客户端主被动迁移模型的示意图;

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。

1、多端口自适应udp通信协议:mp-udp协议

1.1通信格式

mp-udp协议的通信包分为5个部分,如图1所示。

1)包头,包含3个字节:head1,head2,head3;

2)块号,用一个字节表示,范围从0到255;其中,0用来表示第一次建立连接的块号,1到255代表有效块号,1到255之间循环。

3)长度,包含2个字节,记录整个消息块的长度。

4)数据内容,按字节进行传输,最大500个字节。

5)校验和,包含2个字节,采用累加和的方式计算校验位。

1.2通信流程

mp-udp协议进行通信时,客户端服务端首先分配n个端口(验证中n为5),并通过整型数组linkstatus[n]来记录每个通信链路的通信状态。然后分别对5个端口进行udp通信的初始化,成功后进入通信流程。

客户端通信流程:;

1)客户端的端口与服务器的端口建立通信链路的过程。

5个端口分别给服务器上的5个端口发送块号为0的通信包,请求与服务器建立连接,等待接收服务器回复的块号为0的通信包。收到服务器回复的块号为0的通信包后,表示该端口的通信链路已经建立,将通信链路的状态标记为正常,5条通信链路的编号分别为n1、n2、n3、n4、n5。见图2所示。

2)数据传输过程。

客户端通过n1通信链路从块号为1的通信包开始通信,若有数据需要发送则在通信包增加数据内容;同时对n2~n5链路进行监听。

当n1通信链路收到的服务器回复的通信包的块号与发送的通信包的块号相等(或者回复的通信包的块号为1,发送的通信包块号为255)时,则表示数据包发送成功,块号加1发送下一通信包。见图2所示。

3)当当前的通信链路的数据传输出现异常时,主动迁移到其它通信链路执行数据传输过程。

如果n1通信链路收到服务器回复的通信包的块号与发送的通信包的块号不相等或者超时未收到回复,则重发该通信包(假设为块号为1的通信包)。块号为1的通信包重发超过3次时,将n1通信链路的状态标记为重建,重新建立链路。利用rmp算法,将n1通信链路主动迁移到n2通信链路上进行通信,在n2通信链路上发送块号为1的通信包。见图3所示。

4)被动迁移到其它通信链路执行所述数据传输过程。

当n2~n5中某一通信链路监听到通信包,表明服务器主动将通信链路迁移到了n2~n5中某一通信链路,客户端以被动方式将通信链路迁移到n2~n5中某一通信链路,执行数据传输过程,同时重新建立n1通信链路。见图3所示。

服务器通信流程:

1)服务器的端口与客户端的端口建立通信链路的过程。

服务器的5个端口分别等待接收客户端发送的块号为0的通信包,收到0块通信包后,向客户端分别回复块号为0通信包,表示该端口通信链路已经建立,将通信链路的状态标记为正常。见图2所示。

2)数据传输过程。

服务器通过n1通信链路进行通信,同时对n2~n5通信链路进行监听。如果当前接收的客户端发送的通信包的块号是上次接收的通信包的块号加1(或者当前接收块号为1上次接收块号为255)时,则收到正确的通信包。

服务端向客户端回复块号与客户端发送的通信包的块号相同的通信包,若有数据发送则在通信包中加入数据内容。见图2所示。

3)当当前的通信链路的数据传输出现异常时,主动迁移到其它通信链路执行所述数据传输过程。

如果当前接收的客户端发送的通信包的块号不是上次接收的通信包的块号加1或者超时未收到数据,则服务端重发上次通信包(假设块号为2)。块号为2的通信包重发超过3次时,采取主动方式迁移链路,将n1通信链路的状态标记为重建,重新建立链路。利用rmp算法,将n1通信链路主动迁移到当n2~n5中某一通信链路上进行通信,在n2~n5中某一通信链路上发送块号为2的通信包。见图3所示。

4)被动迁移到其它通信链路执行所述数据传输过程。

当n2~n5中某一通信链路监听到通信包,表明客户端主动迁移了通信链路,服务端采取被动方式迁移到n2~n5中某一通信链路。见图3所示。

1.3rmp算法设计

当n1通信链路重建时,需要将通信链路迁移到能正常通信的n2~n5中某一通信链路上。在n个通信链路中,可能有一部分通信链路正在重建,如果对n个通信链路依次进行遍历查找nk,当网络环境比较差,重建链路比较多时,效率会很低,同样可能会造成实时数据的丢失。因而设计了rmp算法以快速找到nk链路。

设计中每个通信链路都有一个状态标志linkstatus[n],标记当前通信链路的状态,正常通信状态为1,重建或初始化状态为0。在n1正常通信时,rmp算法会对其他通信链路根据各自状态进行一次快速排序,并将结果存储到队列queue中。

这样当通信链路需要迁移时,队列queue的第一个元素即为选用的通信链路。由于各通信链路的状态都是随机分布的,只有0或1两个值,采用快速排序的方法时间最短,时间复杂度为o(nlog2n)。由于排序是在n1链路正常通信时进行的,且只排序一次,效率很高。当n1迁移到nk时,能够保证实时数据不丢失。

1.4缓冲区设计

为了能够保证收发数据以及链路迁移过程中数据不会被覆盖丢失,设计中在客户端和服务器分别增加了环形缓冲区,结构如图4所示。

环形缓冲区附带读指针rptr和写指针wptr,初始状态rptr和wptr都指向环形缓冲区起始地址min,环形缓冲区为空。当有数据发送时,移动wptr将数据写入环形缓冲区中;wptr与rptr不等,则说明环形缓冲区中有数据写入,移动rptr将数据从缓冲区读走。当wptr和rtpr指向max时,将指针重置为min,实现环形缓冲区的循环读写。

2、simulink建立模型

在simulink中建立了客户端模型和服务器模型,实现了mp-udp协议。以客户端模型为例,详细介绍主动和被动两种链路迁移方式。

2.1客户端主动迁移模型

客户端在某一通信链路重发三次失败后,就会以主动方式迁移到新的通信链路,如图5所示。首先进入rmp_state状态,利用rmp算法对5路端口进行处理,根据队列中queue[0]的值迁移到n1_link至n5_link链路中。其中,rmp算法模型如图6所示,主要包括快速排序quicksort函数以及队列操作queueprocess部分。

以n1通信链路为例,通信流程如图7所示。

2.2客户端被动迁移模型

客户端监听到当前通信链路之外的其他通信链路有回复数据,则进行被动迁移,如图8所示。首先进入listen_state状态,通过listen_link函数,对iport以外的其他通信链路进行监听,返回状态标志ilstatus。根据ilstatus的值,更新iport的值,被动地将通信迁移到新通信链路上。

可以理解的是,对本领域普通技术人员来说,可以根据本发明的技术方案及其发明构思加以等同替换或改变,而所有这些改变或替换都应属于本发明所附的权利要求的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1