一种针对仿真训练的高速数据采集传输改进型KCP协议的制作方法

    专利2026-09-10  22


    本发明涉及一种针对仿真训练的高速数据采集传输改进型kcp协议,主要针对仿真训练的高速数据采集场景,属于计算机数据传输。


    背景技术:

    1、传统kcp是一个快速可靠的网络传输协议,通过牺牲带宽,以空间换时间,进而降低平均延迟,并利用udp作为下层传输协议,定义下层数据包的发送方式,再通过回调提供给kcp。传统kcp协议头部采用24字节包头格式,其中字段conv表示会话编号,标识一个会话。传统kcp协议对比tcp协议配置,具有以下优势:kcp协议通过选择性重传只重传真正丢失的数据包;kcp协议快速重传时,无需超时重传机制,通过记录丢失数据包被跳过的次数,跳过一定次数直接重传;kcp协议可以调节是否延迟发送ack;kcp协议的确认机制是将ack与una相结合,并优先考虑una;kcp协议采取非退让流控方式,可以仅通过发送端缓存大小和接收端剩余缓存大小来控制发送速率。

    2、但上述传统kcp协议的通信应用于高速数据采集传输时,存在如下问题:(1)未及时发送数据,当数据量突然增大,由于存入缓存中的数据量过大,通过定时刷新发送,突发发送数据量大,容易造成拥塞。(2)在高速数据采集传输的情况下,重组数据包时频繁地申请和释放内存,服务器端易产生内存碎片。同时,为提高传输效率,数据采集一般按包格式传输,包的不同字段表示不同的含义,kcp协议不丢包按流传输时,需要重新解析包边界,会降低数据处理效率。


    技术实现思路

    1、本发明的目的在于:提供一种针对仿真训练的高速数据采集传输改进型kcp协议,可以进一步缩减包头,减少带宽的浪费,并且采用新算法,结合包头中部分冗余字段用于防止序列号劫持攻击。

    2、为实现以上目的,本发明采用的技术方案为:

    3、一种针对仿真训练的高速数据采集传输改进型kcp协议,所述改进型kcp协议包括包头及数据(data),所述包头包括以下字段:

    4、 conv字段:在传统kcp 协议中,conv 主要用于标识不同的会话,确保数据包被正确路由到相应的 kcp 连接,conv 的设计初衷是为了实现协议的多会话支持,因此其主要用途与协议的连接管理相关,本发明中,conv字段为会话号字段,可以在多用户系统中用于标识不同的用户以及用户组;

    5、 b.cmd字段:表示4种控制指令类型,包括数据推送命令,确认命令,接收窗口大小询问命令,窗口大小告知命令;

    6、 c.wnd字段:表示接收方目前可以接收窗口的大小;

    7、 d.ts字段:为时间戳字段,以往返时间作为字段值,往返时间的单位为毫秒;

    8、 e.sn字段:数据包的序列号字段,用于记录数据包的顺序,用于重传和确认;

    9、 f.una字段:una字段与字段sn对应,表示下一个要接收数据包的序号;

    10、 g.len字段:len字段表示数据包长度;

    11、 进一步的,所述conv字段长度为1字节,所述ts字段长度为2字节,所述sn字段长度为2字节,所述una字段长度为2字节。所述len字段长度为 2字节;

    12、进一步的,发送数据流程包括以下步骤:

    13、 a.内存管理算法申请缓存:在发送数据前,使用内存管理算法申请一个缓存空间,用于存储待发送的数据包;

    14、 b.预留头部空间:在申请的缓存空间中,提前预留一部分空间用于填充数据包的头部信息;

    15、 c.填充数据部分:在缓存空间中,填充待发送的数据部分;

    16、 d.填充kcp头部:在填充数据后,将kcp协议的相关参数填充到数据包的头部中;

    17、 e.直接发送数据包:根据kcp协议的要求和相关参数,将填充好的数据包直接发送出去,无需进行额外的处理;

    18、接收数据流程包括以下步骤:

    19、 a.异步接收数据包:使用异步通信机制实现数据包的异步接收,通过操作系统或网络库来实现;

    20、 b.放入接收队列:在kcp协议处理层,将异步接收到的数据包按序放入接收队列中;

    21、 c.读取接收队列:从接收队列中按序读取数据包,并交付给上层应用进行处理;

    22、 d.回收缓存:完成数据包的接收后,将使用的缓存进行回收,以便重复使用;

    23、进一步的,所述内存管理算法具体步骤为:

    24、 a.内存管理初始化:

    25、初始化一个大内存池,分配一块连续的内存作为高速缓存池;

    26、维护两个队列:空闲队列(用于存放可用的缓存块)和回收队列(用于存放待回收的缓存块);

    27、 每缓存块包含:数据区域(用于存放实际数据)、kcp头部(用于预留kcp协议的头部信息)和 回收编号(用于标记回收位置);

    28、 b.高速缓存申请过程:

    29、当上层应用需要发送数据时,从空闲队列中取出一个缓存块,将数据填入数据区域,填入kcp头部信息(预留kcp头部),并将该缓存块发送出去;

    30、 c.高速缓存回收过程:

    31、当接收到数据包时,从数据包中读取回收编号,将相应的缓存块放入回收队列中。

    32、本发明中,不采用传统kcp将字段conv表示会话编号的原因为:

    33、 1. 在网络协议中,源地址、源端口号,目的地址、目的端口号、协议(udp/tcp)可以唯一标识一个会话,因此对接收端来说,由于自己的ip地址、端口号、传输层协议是固定的,因此通过判断对方的地址和端口号可以断定是不是同一个会话;

    34、 2. nat技术是解决局域网多个主机共享一个公网地址的技术,通过网关路由器分用端口的方式,也就是局域网主机中每一个程序访问外网通过网关路由器时,源地址转换成公网地址以及不同的端口号,因此,局域网内所有程序远端口可能相同,但在网关路由器上的端口号都是不一样的,对于接收端来说不同会话还是看到的是同一个地址不同的端口号,因此,本发明中,字段conv修改为1字节作为他用,例如多用户系统中用于标识不同的用户以及用户组,这一点视具体的应用场景可灵活应用。

    35、本发明的积极有益技术效果在于:1.本发明提供的改进kcp协议,不同于传统kcp协议的24字节包头,采用了12字节的包头;

    36、 2. 本发明通过内存管理预留头部、异步传输技术、结合本发明提供的改进kcp协议结合起来可以提高传输的效率。

    37、由图1、图2可见,改进后的12字节协议头部在一定程度上减少带宽浪费,且提高了传输效率。在高速数据采集的环境下,通过缩短头部字段所占用的字节,可以有效降低协议头部封装数据进而传输的开销。



    技术特征:

    1.一种针对仿真训练的高速数据采集传输改进型kcp协议,其特征在于:所述改进型kcp协议包括包头及数据(data),所述包头包括以下字段:

    2.根据权利要求1所述的一种针对仿真训练的高速数据采集传输改进型kcp协议,其特征在于:所述conv字段长度为1字节,所述ts字段长度为2字节,所述sn字段长度为2字节,所述una字段长度为2字节。所述len字段长度为 2字节。

    3.根据权利要求1所述的一种针对仿真训练的高速数据采集传输改进型kcp协议,其特征在于:发送数据流程包括以下步骤:

    4.根据权利要求3所述的一种针对仿真训练的高速数据采集传输改进型kcp协议,其特征在于:所述内存管理算法具体步骤为:


    技术总结
    一种针对仿真训练的高速数据采集传输改进型KCP协议,所述改进型KCP协议包括包头及数据(DATA),所述包头包括以下字段:a.CONV字段:CONV字段为会话号字段;b.CMD字段:表示4种控制指令类型,包括数据推送命令,确认命令,接收窗口大小询问命令,窗口大小告知命令;c.WND字段:表示接收方目前可以接收窗口的大小;d.TS字段:为时间戳字段,e.SN字段:数据包的序列号字段;f.UNA字段:UNA字段与字段SN对应,表示下一个要接收数据包的序号;g.LEN字段;LEN字段表示数据包长度。本发明可以提高传输的效率。

    技术研发人员:杨波,王文奇,潘磊,刘小明
    受保护的技术使用者:深圳亿诺隆科技有限公司
    技术研发日:
    技术公布日:2024/4/29
    转载请注明原文地址:https://wp.8miu.com/read-101672.html

    最新回复(0)