一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据发送、重传控制方法及系统、存储介质及电子设备与流程

2021-10-29 23:16:00 来源:中国专利 TAG:电子设备 网络通信 发送 控制 方法


1.本发明涉及网络通信技术领域,特别是涉及一种数据发送、重传控制方法及系统、存储介质及电子设备。


背景技术:

2.在当代数据中心内部,分布式应用承载了绝大多数核心业务,各种各样的分布式应用被用于满足用户多样化的需求。而这些应用在运行过程中会进行大量的网络通信,一旦出现数据包丢失将对应用性能造成严重的影响。因此,如何为应用提供可靠性网络传输保障是一个至关重要的问题。
3.目前保障可靠性网络传输的方法有两类:一类通过软件实现数据包重传算法,其主要优势是对传输层协议能够进行灵活的改动,能够适配不同的网络环境,但是由于数据重传过程由处理器全程参与,其重传延迟较高,且会消耗大量处理器资源;另一类是在网卡芯片上实现数据重传算法,以降低重传的延迟开销,其主要优势是重传算法被实现为特定的硬件模块,处理延迟低于处理器,同时,处理器不再参与数据传输的处理,能够有效提高处理器的使用效率。
4.下面分析两种传统基于专用硬件的重传系统中存在的问题。
5.第一种,当处理器准备好待发送的网络数据后,网卡发送控制器从内存中读取数据,进行数据包封装,并将其推送到网络当中。当数据接收方收到网络数据包后,将返回一个响应包,以通知发送方数据已经成功接收。当发送方的接收控制器收到一个响应包后,将通过中断的方式告知处理器当前数据包已经处理完成,其占用的内存缓冲区可以被释放。当发送方的接收控制器在一段时间内没有收到响应包,将触发重传机制,其将重传最早发出的未被确认的数据包。此种系统存在的问题如下:当需要进行数据包重传时,网卡需要通过系统总线从主机内存中获取数据进行重传,增加了重传延迟。
6.第二种,当处理器准备好待发送的网络数据后,网卡发送控制器从内存中读取数据,同时将数据写入网卡的内存缓存中,并对数据进行数据包封装,将其推送到网络当中,一旦数据包进入网络,内存中的数据缓冲区就可以进行释放。当数据接收方收到网络数据包后,将返回一个响应包,以通知发送方数据已经成功接收。当发送方的接收控制器收到一个响应包后,将网卡上的缓冲区进行释放。当发送方的接收控制器在一段时间内没有收到响应包,将触发重传机制,其将从网卡内部缓冲区中读取最早发送的未被确认的数据包,并重置定时器。此种系统存在的问题如下:网卡上的缓冲区释放依赖于响应包的到达,当网络延迟较高,确认包无法及时到达,缓冲区将不能有效释放,从而阻塞后续数据包的发送。


技术实现要素:

7.为了解决上述问题,本发明的主要目的在于提供一种数据发送、重传方法及数据发送与重传系统、存储介质及电子设备。
8.为了实现上述目的,本发明提供了一种数据发送方法,包括以下步骤:
9.步骤1、发送控制模块通过系统总线模块从内存模块中读取待发送数据,并将所述待发送数据封装为网络数据包;
10.步骤2、所述发送控制模块从元数据模块中获取缓冲区模块的当前状态来判断所述缓冲区模块的存储空间是否已满,若是,则执行步骤3;否则,执行步骤4;
11.步骤3、根据替换算法用所述网络数据包将所述缓冲区模块的数据换出;
12.步骤4、将所述网络数据包写入所述缓冲区模块;
13.步骤5、将所述网络数据包推送到网络中。
14.为了实现上述目的,本发明还提供了一种数据重传方法,包括以下步骤:
15.步骤6、接收控制模块接收到定时器超时事件;
16.步骤7、根据所述定时器超时事件中携带的连接信息从元数据模块中获取当前连接占用的缓冲区模块信息,并获取所述缓冲区模块中队首网络数据包的序列号,以及当前未确认的网络数据包的序列号n。
17.步骤8、发送控制模块读取所述缓冲区模块中的队首网络数据包并获取其序列号m,比较所述队首网络数据包的序列号和所述未确认的网络数据包的序列号大小,若m>n,执行步骤9,若m<=n,执行步骤10;
18.步骤9、由所述未确认的网络数据包的序列号计算出所述未确认的网络数据包在内存模块中的位置,并从内存模块中读取所述未确认的网络数据包重新推送到网络中;
19.步骤10、从缓冲区模块读取所述队首网络数据包推送到网络中。
20.为了实现上述目的,本发明还提供了一种网卡设备,包括:缓冲区模块、发送控制模块、接收控制模块、及元数据模块;
21.其中,所述缓冲区模块用于缓存已经注入网络但尚未被确认的网络数据包;所述发送控制模块用于从一内存模块中读取及封装待发送数据为所述网络数据包,并将所述网络数据包写入所述缓冲区模块,及将所述网络数据包推送到网络中;所述接收控制模块内含一定时器,用于当出现定时器超时事件,将生成重传信息通知所述发送控制模块进行所述网络数据包重传;所述元数据模块用于所述网络数据包对所述缓冲区模块的使用信息,及未被确认的所述网络数据包在所述内存模块中的起始地址。
22.为了实现上述目的,本发明还提供了一种数据发送与重传系统,用于实现上述的数据发送方法和/或上述的数据重传方法,包括:
23.内存模块、系统总线模块及上述的网卡设备;
24.其中,所述内存模块用于存储待发送数据;所述发送控制模块通过所述系统总线模块从所述内存模块中读取及封装所述待发送数据为所述网络数据包,并将所述网络数据包写入所述缓冲区模块。
25.为了实现上述目的,本发明还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,实现上述的数据发送方法和/或上述的数据重传方法。
26.为了实现上述目的,本发明还提供了一种电子设备,包括:处理器和存储器,所述存储器内存储有可在所述处理器运行的计算机程序,当所述计算机程序被所述处理器执行时,实现上述的数据发送方法和/或上述的数据重传方法。
27.本发明的有益效果为:
28.第一,网卡设备上的缓冲区模块的空间被占满后仍然能够无阻塞地继续发送网络数据包,能够有效避免由于网络延迟太高导致缓冲区模块的空间被占满,而导致网络数据包阻塞的问题发生;
29.第二,同时在网卡设备上和内存模块中维护数据缓冲区,确保了如果出现网络数据包丢失,且网络数据包暂存在网卡设备上的缓冲区模块中,能够尽快对网络数据包进行重传,可以有效减少重传延迟。
30.以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
附图说明
31.图1为本发明一实施例的数据发送与重传控制系统的模块图。
32.图2为本发明一实施例的数据发送控制方法的流程图。
33.图3为本发明一实施例的数据重传控制方法的流程图。
具体实施方式
34.下面结合附图对本发明的结构原理和工作原理作具体的描述:
35.本发明的目的是解决现有技术中的可靠性网络数据发送与重传技术的问题,提出了一种加速可靠性的数据发送与重传方法和系统。所述数据发送与重传控制系统100整体如图1所示,包括:网卡设备10(内含缓冲区模块11、发送控制模块12、接收控制模块13及元数据模块14)、内存模块20及系统总线模块30。其中,内存模块20中包含待发送数据缓冲区21,用于存储待发送数据,即待发送的网络数据。
36.本发明的实施例中,缓冲区模块11,其可以是独立于主机的内存模块20之外的存储模块,位于网卡设备10和主机的内存模块20之间,也可以是网卡设备19上附带的缓存模块,也可以是一个独立的新增的存储模块。缓冲区模块11的功能在于缓存已经注入网络但尚未被接收方确认的网络数据包,在网络检测到数据包丢失时,可以从缓冲区模块11或者内存模块20(待发送数据缓冲区21)中重新获取数据进行重传。另外,同一个连接的网络数据包在缓冲区模块11中在逻辑上以队列的形式进行管理,先入队的网络数据包注入网络的时间先于后入队的网络数据包。本发明的实施例不对队列占用缓冲区模块11空间的方式进行限定,可以采用连续分配或者离散分配。与背景技术中第二种系统中的缓冲区模块不同,本发明的实施例所提系统中的缓冲区模块11具有可替换的能力,即当缓存空间已满而有新数据需要写入时,缓冲区模块11可以将部分数据清除,以获取新的空间进行使用。
37.发送控制模块12,其功能在于,当主机的内存模块20中有待发送数据需要发送时,从内存模块20中获取待发送数据,并按照链路层最大消息传输单元进行数据切分,为切分后的数据段添加相应的包头,将待发送数据写入缓冲区模块11。如果缓冲区模块11的空间已经被写满,则根据替换算法将缓冲区模块11中的部分数据进行换出,然后将待发送数据写入缓冲区模块11中并推送到网络当中。当出现丢包需要重传数据包时,发送控制模块根据元数据模块14中的元数据信息从主机的内存模块20或网卡设备10的缓冲区模块11中选择合适的网络数据包进行重传。本发明并不对网络传输协议的类型进行限定,可以是infiniband,以太网或者fibre channel等。
38.接收控制模块13,其功能在于,对接收到的网络数据包进行处理,并检测网络传输
过程中是否出现了丢包,从而通知发送控制模块进行缓冲区模块11进行空间释放或网络数据包重传。其内部为每个通信连接维护了一个定时器。在初始状态下,定时器被置为关闭状态。当发送控制模块12将网络数据包推送到网络后,定时器被激活。之后每当接收控制模块13收到一个网络数据包的确认包后,其都将通知定时器进行重置。当出现定时器超时事件,说明接收控制模块13已经长时间未收到确认包,此时接收控制模块13将生成重传信息通知发送控制模块12进行网络数据包重传。如果接收控制模块13收到一个有效的确认包,代表当前网络请求中的一部分网络数据包已经被通信对端确认,此时接收控制模块13将生成完成事件或中断,以通知处理器网络数据包处理完成,通知发送控制模块12对已经确认的网络数据包进行缓冲区模块11释放,并更新连接的元数据信息。
39.元数据模块14,其功能在于,保存每个连接当前对缓冲区模块11的使用状态。对于每个可靠连接,该模块维护两类元数据信息:
40.1.缓冲区模块11的空间使用信息。由于网卡设备10上的缓冲区模块11由多个连接共享使用,因此,需要记录每个连接对缓冲区模块11的空间使用情况,以便发送控制模块12对缓冲区模块的空间进行申请使用和释放;
41.2.主机的内存模块20中未被确认的网络数据包信息。由于缓冲区模块11中的网络数据包可能被新发送的网络数据包替换掉,因此,需要记录每个连接未被确认的网络数据包在内存模块20中的起始地址,以便发送控制模块12无法从网卡设备10的缓冲区模块11中获取网络数据包进行重传时,能够从主机的内存模块20中获取到进行重传的数据。
42.系统总线模块30,其功能在于,连接节点内部各个功能模块,其自身具备路由功能,能够根据所承载网络数据包中相关的总线协议字段,转发系统中不同模块之间的控制信息和数据信息。本发明并不对系统总线的类型进行限定,可以是pci,pci

x,pcie,axi等。
43.内存模块20,其功能在于,存储待发送的网络数据。
44.本发明的实施例还提出一种数据发送控制方法、及一种数据重传控制方法,上述方法可以通过上述实施例的数据发送与重传控制系统来实现。
45.如图2所示,在本实施例中,一种数据发送控制方法包括:
46.步骤s1、发送控制模块12通过系统总线模块30从内存模块20中读取待发送数据,并将待发送数据封装为网络数据包。其中,发送控制模块12将待发送数据切分为多个数据段,并分别对多个数据段添加网络包头以对应得到多个网络数据包。
47.步骤s2、发送控制模块从元数据模块中获取缓冲区模块的当前状态来判断缓冲区模块的存储空间是否已满,若是,则执行步骤s3;否则,执行步骤s4。
48.步骤s3、根据替换算法用网络数据包将缓冲区模块的数据换出。其中,从元数据模块获取当前连接的占用的缓冲区模块信息,将新的网络数据包写入缓冲区模块的队列队首,原有队列队首数据将被覆盖,新的网络数据包成为新的队尾,原有队列中的第二个网络数据包成为新的队列队首,同时更新缓冲区模块中队列的队首及队尾信息。
49.步骤s4、将网络数据包写入缓冲区模块。其中,将网络数据包写入缓冲区模块中队列的队尾,并更新缓冲区模块中队列的队尾信息。
50.步骤s5、将网络数据包推送到网络中。
51.如图3所示,在本实施例中,一种数据重传控制方法包括:
52.步骤s6、接收控制模块13接收到定时器超时事件;
53.步骤s7、根据定时器超时事件中携带的连接信息从元数据模块14中获取当前连接占用的缓冲区模块11信息,并获取缓冲区模块11中队首网络数据包的序列号,记为m,以及当前未确认的网络数据包的序列号,记为n。
54.步骤s8、比较队首网络数据包的序列号m和未确认的网络数据包的序列号n的大小,若m>n,执行步骤s9,若m<=n,执行步骤s10;
55.步骤s9、由未确认的网络数据包的序列号计算出未确认的网络数据包在内存模块20中的位置,并从内存模块20中读取未确认的网络数据包重新推送到网络中;
56.步骤10、从缓冲区模块11读取队首网络数据包推送到网络中。
57.综上,当发送控制模块12需要发送网络数据包时,首先判定当前缓冲区模块11是否有空余空间,如果有空余空间,则将待发送的网络数据包写入缓冲区模块11,并将网络数据包推送到网络当中;如果当前缓冲区模块11的空间已经被写满,则根据元数据模块14中保存的连接状态信息从缓冲区模块11中选择部分网络数据包进行剔除以释放部分空间,从而将待发送的网络数据包写入。当发送控制模块12需要对网络数据包进行重传时,根据其维护的未确认的网络数据包的序列号,判定当前网络数据包的位置,如果该网络数据包位于主机的内存模块20中,则从内存模块20中获取该网络数据包进行重传;如果该网络数据包位于缓冲区模块11中,则从缓冲区模块11中进行读取及重传。
58.以下以一个具体实施例对上述内容进一步说明。上述实施例的数据发送与重传控制系统包括:网卡设备10(内含缓冲区模块11、发送控制模块12、接收控制模块13及元数据模块14)、内存模块20及系统总线模块30。
59.其中,网卡设备10包括rdma(remote direct memory access,远程内存访问)网卡实现,是一个标准pcie设备;
60.缓冲区模块11,由网卡设备10的片上block ram实现,其它模块可以通过高速axi接口对该模块的内容进行读写。为最大化缓冲区模块的空间利用效率,缓冲区模块的空间的申请采用离散式分配策略,不同的缓冲区模块通过链表进行组织,逻辑上每个连接的网络数据包构成一个队列,每个队列拥有自己的头指针和尾指针信息。可以使用的空闲的缓冲区模块信息通过一个队列保存,队列深度表征当前缓冲区模块的可用空间的大小。
61.发送控制模块12,可以对待发送数据进行分段,为其添加网络包头,并在发生丢包时进行数据包重传。其可以是网卡设备10中的一个硬件模块或是运行在网卡设备10上的嵌入式处理器上的一段控制程序。在本实施例中,发送控制模块12例如采用硬件模块;
62.接收控制模块13,其可以对丢包进行检测。其可以是网卡设备10中的一个硬件模块或是运行在网卡设备10上的嵌入式处理器上的一段控制程序。在本实施例中,接收控制模块13例如采用硬件模块;
63.元数据模块14,用于保存每个连接的相关元数据信息,由网卡设备10的片上block ram实现,其它模块可以通过高速axi接口对该模块的内容进行读写。元数据模块14保存的元数据信息包括:每个连接的队列头指针和尾指针信息,每个连接的未确认数据包的序列号信息,每个连接的发送网络数据包在内存模块20中的起始地址信息。
64.内存模块20,用于存储待发送的网络数据,具体而言,在rdma网络中,每段待发送数据都属于一个或多个内存区域;
65.系统总线模块30,其采用pcie总线;
66.以下为一种可靠性传输的数据发送控制方法的具体实施例,其包括以下步骤:
67.1.发送控制模块12通过pcie总线(总线模块30)从内存模块20的待发送数据缓冲区21中读取待发送数据,并将待发送数据封装为rdma网络数据包,其中每个rdma网络数据包的包头携带通信对端地址信息、长度信息、以及序列号信息;
68.2.发送控制模块12发起axi数据读请求,从元数据模块14中读取当前缓冲区模块11的状态,如果缓冲区模块11空间已满,则执行步骤3;否则,执行步骤4;
69.3.将新的rdma网络数据包写入头指针指向的缓冲区,原有队首rdma网络数据包将被覆盖。同时,将头指针赋给当前尾指针,并将头指针指向原先头指针指向的下一个数据元素;
70.4.将rdma网络数据包写入缓冲区模块11的队列队尾中,并更新尾指针指向新写入的rdma网络数据包。
71.5.将rdma网络数据包推送到网络中。
72.以下为一种可靠性传输的数据重传控制方法的具体实施例,其包括以下步骤:
73.1.接收控制模块13收到定时器超时事件;
74.2.根据事件中携带的队列对(queue pair,qp)信息(连接信息)从元数据模块14中获取当前连接占用的缓冲区模块11信息,并获取缓冲区模块11的队首rdma网络数据包的序列号(packet sequence number,psn),以及当前尚未确认的rdma网络数据包的序列号,并将重传控制信息传递给发送控制模块12。
75.3.发送控制模块12接收到重传控制信息,根据qp信息从缓冲区模块11中读取队首rdma网络数据包,获取其序列号信息。比较队首rdma网络数据包的序列号和未确认的rdma网络数据包的序列号大小。记队首rdma网络数据包的序列号大小为m,未确认的rdma网络数据包的序列号大小为n。若m>n,转步骤4;若m<=n,转步骤5;
76.4.由rdma网路数据包的序列号计算出其在主机的内存模块20中的位置,并从主机的内存模块20中读取需要重传的数据并生成rdma网络数据包发向网络;
77.5.从缓冲区模块11读取队首rdma网络数据包发向网络。
78.基于相同的发明构思,本发明的实施例还提出一种电子设备,在本实施例中,电子设备包括处理器和存储器;处理器与存储器为直接或间接地电性连接,以实现数据的传输或交互。所述存储器内存储有可在所述处理器运行的计算机程序,当所述计算机程序被所述处理器执行时,实现上述实施例中提出的数据发送控制方法或者数据重传控制方法。
79.基于相同的发明构思,本发明的实施例还提出一种计算机可读存储介质,其上存储有计算机程序,计算机程序在被处理器执行时,实现上述实施例中提出的数据发送控制方法或者数据重传控制方法。
80.当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜