CN114124850A - 一种网络通信方法及装置、存储介质 - Google Patents
一种网络通信方法及装置、存储介质 Download PDFInfo
- Publication number
- CN114124850A CN114124850A CN202210088532.XA CN202210088532A CN114124850A CN 114124850 A CN114124850 A CN 114124850A CN 202210088532 A CN202210088532 A CN 202210088532A CN 114124850 A CN114124850 A CN 114124850A
- Authority
- CN
- China
- Prior art keywords
- data packet
- receiving
- buffer
- network communication
- communication method
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/72—Admission control; Resource allocation using reservation actions during connection setup
- H04L47/722—Admission control; Resource allocation using reservation actions during connection setup at the destination endpoint, e.g. reservation of terminal resources or buffer space
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种网络通信方法及装置、存储介质,所述网络通信方法应用于设置有至少两个接收缓存队列的接收端,所述接收缓存队列包括至少一个缓存单元,至少存在两个接收缓存队列的缓存单元的存储容量不同,所述网络通信方法包括:接收到数据包时,根据所述数据包的长度选择接收缓存队列,将所述数据包存储到被选中的接收缓存队列的缓存单元中,其中,所述接收缓存队列中,所述被选中的接收缓存队列的缓存单元的存储容量大于等于且最接近所述数据包的长度。本实施例提供的方案,提供至少两种存储容量的缓存单元,可以根据数据包长度选择合适的缓存单元进行存储,从而可以充分利用缓存单元的存储空间,避免浪费socket缓存空间,减少丢包。
Description
技术领域
本文涉及通信技术,尤指一种网络通信方法及装置、存储介质。
背景技术
PCIe(Peripheral Component Interconnect express,快捷外围部件互联)是一种高速串行计算机扩展总线标准,PCIe连接双中央处理(Central Processing Unit,CPU)的情况,如图1所示,一个CPU作为通用CPU(如x86 CPU),提供通用的计算能力;另一个CPU作为专用CPU(如arm CPU),提供视频编解码、智能算法处理等能力。通用CPU比如接收汇总视频或者图片,再转发到各个专用CPU上做分析。
发明内容
本申请实施例提供了一种网络通信方法及装置、存储介质,可以减少丢包率。
本申请实施例提供了一种网络通信方法,应用于设置有至少两个接收缓存队列的接收端,所述接收缓存队列包括至少一个缓存单元,其中,同一接收缓存队列的缓存单元的存储容量相同,且至少存在两个接收缓存队列的缓存单元的存储容量不同,所述网络通信方法包括:
接收到数据包时,根据所述数据包的长度选择接收缓存队列,将所述数据包存储到被选中的接收缓存队列的缓存单元中,其中,所述接收缓存队列中,所述被选中的接收缓存队列的缓存单元的存储容量大于等于且最接近所述数据包的长度。
在一示例性实施例中,所述接收端设置有两个接收缓存队列:第一接收缓存队列和第二接收缓存队列,所述第一接收缓存队列包括至少一个第一缓存单元,所述第二接收缓存队列包括至少一个第二缓存单元,且所述第一缓存单元的存储容量小于所述第二缓存单元的存储容量。
在一示例性实施例中,所述根据所述数据包的长度选择接收缓存队列包括:
当所述数据包的长度小于等于所述第一缓存单元的存储容量时,选择所述第一接收缓存队列;
当所述数据包的长度大于所述第一缓存单元的存储容量时,选择所述第二接收缓存队列。
在一示例性实施例中,所述第二缓存单元的存储容量为系统内存页的存储容量的整数倍。
在一示例性实施例中,所述第一缓存单元的存储容量根据物理网卡支持的单个数据包的最大长度确定。
本公开实施例提供一种网络通信方法,包括:
发送端获取待发送的数据包,在所述待发送的数据包的长度小于预设值时,等待后续数据包,直至目标数据包,其中,从所述待发送的数据包至所述目标数据包的全部数据包的长度之和大于所述预设值,且从所述待发送的数据包至截止数据包的全部数据包的长度之和小于等于所述预设值,所述截止数据包为所述目标数据包的前一个数据包;
将所述待发送的数据包至所述截止数据包的全部数据包合并生成合并数据包,发送所述合并数据包至接收端;
其中,所述接收端包括至少两个接收缓存队列,其中,同一接收缓存队列的缓存单元的存储容量相同,且至少存在两个接收缓存队列的缓存单元的存储容量不同,所述预设值为所述接收端的接收缓存队列中最小缓存单元的存储容量。
在一示例性实施例中,所述待发送的数据包到达所述发送端的第一时刻,与所述截止数据包到达所述发送端的第二时刻的差值小于预设时间阈值。
在一示例性实施例中,所述方法还包括,从所述待发送的数据包到达所述发送端的第一时刻起,到所述预设时间阈值,且所述待发送的数据包与所述第一时刻起预设时间阈值内到达所述发送端的数据包的长度之和小于等于所述预设值时,将所述待发送的数据包与所述第一时刻起预设时间阈值内到达所述发送端的数据包合并后发送;以及,
所述待发送的数据包的长度大于等于所述预设值时,直接发送所述待发送的数据包。
本公开实施例提供一种网络通信装置,包括存储器和处理器,所述存储器存储有程序,所述程序在被所述处理器读取执行时,实现上述任一实施例所述的网络通信方法。
本公开实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现任一实施例所述的网络通信方法。
与相关技术相比,本申请实施例包括一种网络通信方法及装置、存储介质,所述网络通信方法应用于设置有至少两个接收缓存队列的接收端,所述接收缓存队列包括至少一个缓存单元,其中,同一接收缓存队列的缓存单元的存储容量相同,且至少存在两个接收缓存队列的缓存单元的存储容量不同,所述网络通信方法包括:接收到数据包时,根据所述数据包的长度选择接收缓存队列,将所述数据包存储到被选中的接收缓存队列的缓存单元中,其中,所述接收缓存队列中,所述被选中的接收缓存队列的缓存单元的存储容量大于等于且最接近所述数据包的长度。本实施例提供的方案,提供至少两种存储容量的缓存单元,可以根据数据包长度选择合适的缓存单元进行存储,从而可以充分利用缓存单元的存储空间,避免浪费socket缓存空间,提高可接收的数据包数量,在数据包较多时,可以减少丢包。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的其他优点可通过在说明书以及附图中所描述的方案来实现和获得。
附图说明
附图用来提供对本申请技术方案的理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。
图1为一技术方案提供的通用CPU和专用CPU通过PCIe进行通信的示意图;
图2为一技术方案提供的通用CPU和专用CPU通过虚拟网卡进行通信的示意图;
图3为一示例性实施例提供的网络通信示意图;
图4为一示例性实施例提供的网络通信方法流程图(发送端);
图5为一示例性实施例提供的网络通信方法流程图(接收端);
图6为一示例性实施例提供的网络通信方法流程图;
图7为一示例性实施例提供的数据包发送示意图;
图8为一示例性实施例提供的数据包接收示意图;
图9为一示例性实施例提供的网络通信装置示意图。
具体实施方式
本申请描述了多个实施例,但是该描述是示例性的,而不是限制性的,并且对于本领域的普通技术人员来说显而易见的是,在本申请所描述的实施例包含的范围内可以有更多的实施例和实现方案。尽管在附图中示出了许多可能的特征组合,并在具体实施方式中进行了讨论,但是所公开的特征的许多其它组合方式也是可能的。除非特意加以限制的情况以外,任何实施例的任何特征或元件可以与任何其它实施例中的任何其他特征或元件结合使用,或可以替代任何其它实施例中的任何其他特征或元件。
本申请包括并设想了与本领域普通技术人员已知的特征和元件的组合。本申请已经公开的实施例、特征和元件也可以与任何常规特征或元件组合,以形成由权利要求限定的独特的发明方案。任何实施例的任何特征或元件也可以与来自其它发明方案的特征或元件组合,以形成另一个由权利要求限定的独特的发明方案。因此,应当理解,在本申请中示出和/或讨论的任何特征可以单独地或以任何适当的组合来实现。因此,除了根据所附权利要求及其等同替换所做的限制以外,实施例不受其它限制。此外,可以在所附权利要求的保护范围内进行各种修改和改变。
此外,在描述具有代表性的实施例时,说明书可能已经将方法和/或过程呈现为特定的步骤序列。然而,在该方法或过程不依赖于本文所述步骤的特定顺序的程度上,该方法或过程不应限于所述的特定顺序的步骤。如本领域普通技术人员将理解的,其它的步骤顺序也是可能的。因此,说明书中阐述的步骤的特定顺序不应被解释为对权利要求的限制。此外,针对该方法和/或过程的权利要求不应限于按照所写顺序执行它们的步骤,本领域技术人员可以容易地理解,这些顺序可以变化,并且仍然保持在本申请实施例的精神和范围内。
当两CPU间以PCIe为通信方式时,可直接使用的应用软件开发工具相对于网络方式要少的多,应用层软件设计难度大。在一技术方案中,将PCIe虚拟为网络的形式,在两CPU侧各虚拟一个网卡,将PCIe通信转换为网络通信,从而可利用成熟的网络协议,而基于网络通信的软件开发工具众多,因此可以降低应用层软件的复杂度,提高软件可移植、兼容性。
如图2所示,通过软件模拟的方式,在驱动层将PCIe模拟成网络后,通过PCIe连接的两CPU就会以网络的方式进行通信,即基于网络通信协议进行通信。
在网络通信中,应用层的软件在使用网络通信时会创建套接字(socket)通信,一个socket表示一个网络链接。如图3所示,操作系统中会限制该socket的接收网络数据包的缓存容量的上限,一般默认为400 kB到500kB,该值用于限制每个网络链接占用的内存大小,防止一个网络链接下缓冲过多数据包时,消耗过多内存。
PCIe通信适合大数据量的传输,每次传输都需要配置控制器并在传输完成后产生中断,这些动作都需要耗费CPU时间,所以每次传输尽可能的传输较大数据量,以减少传输次数。基于上述原因,PCIe虚拟网卡一般都把每个网络包的接收内存设置的较大,典型值如4kB等,本文称为一个缓存单元。这样PCIe虚拟网卡在收到较多小包的时候,每个小包依然会占用一个缓存单元。如图3所示,以1号网络包为例,1号网络包的实际数据长度小于缓存单元的内存大小,仍然占用一个缓存单元。而该网络包提交到socket时,会以缓存单元的大小占用该socket的接收缓存,导致socket的接收缓存更快的填满(而实际上的数据量并没有到达socket的接收缓存的上限),如果应用层不能及时取走数据,则会产生丢包。尤其像用户数据报协议(User Datagram Protocol,UDP)通信,当网络传输存在峰值时,则会存在较为严重的丢包问题。
因此,上述两种诉求存在着冲突,即PCIe通信要求支持的单包内存(缓存单元)越大越好,而socket链接对该链接下占用的总的内存存在上限约束。
在一示例性实施例中,对发送端进行改进,对长度较小的数据包进行合并,减少小包,避免过多小包占用socket的接收缓存,提高socket可以接收的数据包数量,减少丢包。
在一示例性实施例中,可以对接收端进行改进,在接收端设置多种接收缓存队列,至少存在两个接收缓存队列的缓存单元的存储容量不同,可以根据数据包的长度选择相应的缓存单元,充分利用缓存单元的存储空间,避免存储空间浪费,避免浪费socket缓存空间,提高socket可以接收的数据包数量,减少丢包。
下面分别对数据包的发送和接收进行说明。
网络通信中,应用层的程序会主动发送数据,传递至操作系统内部后,最后进入网卡驱动中。承载发送数据的内存并不在网卡驱动中分配,而是在网卡驱动之上的模块来分配。网卡驱动获取到装载网络数据的内存后,进行映射等操作,通过网卡硬件发送出去。
图4为本公开实施例提供的一种网络通信方法流程图。如图4所示,本实施例提供的网络通信方法包括:
步骤401,发送端获取待发送的数据包,在所述待发送的数据包的长度小于预设值时,等待后续数据包,直至目标数据包,其中,从所述待发送的数据包至所述目标数据包的全部数据包的长度之和大于所述预设值,且从所述待发送的数据包,至截止数据包的全部数据包的长度之和小于等于所述预设值,所述截止数据包为所述目标数据包的前一个数据包;其中,数据包的长度可以为数据包占用的存储空间的大小。
步骤402,将所述待发送的数据包至所述截止数据包的全部数据包合并生成合并数据包,发送所述合并数据包至接收端;
本实施例提供的方案,可以将较小的数据包合并后再发送,避免发送过多小数据包导致浪费接收端的接收缓存空间,从而可以提高接收端可接收的数据包数量,减少丢包,另外,减少了传输次数,降低了接收端的消耗。
本实施例提供的方案,合并数据包中可能只包括待发送的数据包,比如,待发送的数据包较大时,与下一个数据包合并后的长度大于所述预设值,此时,合并数据包中只包括待发送的数据包。因此,在一示例性实施例中,可以设置一个比预设值小的长度阈值,比如为2/3预设值(仅为示例,可以根据需要设置其他值),在所述待发送的数据包的长度小于该长度阈值时,等待后续数据包,所述待发送的数据包的长度如果大于等于该长度阈值,可以直接发送该待发送的数据包,对于较接近预设值的数据包,采用该方案,可以减少网络延迟。
在一示例性实施例中,所述待发送的数据包到达所述发送端的第一时刻,与截止数据包到达所述发送端的第二时刻的差值小于预设时间阈值T。本实施例提供的方案,可以避免等待时间过长发送所述待发送的数据包,减少网络延迟。
在一示例性实施例中,所述方法还包括,从所述待发送的数据包到达所述发送端的第一时刻起,到所述预设时间阈值T,且所述待发送的数据包与所述第一时刻起预设时间阈值内到达所述发送端的数据包的长度之和小于等于所述预设值时,将所述待发送的数据包与所述第一时刻起预设时间阈值内到达所述发送端的数据包合并后发送。本实施例提供的方案,在待发送的数据包到达后,等待时间到达所述预设时间阈值T就将已收到的数据包合并发送,不再等待后续数据包(即使已收到的数据包和后续数据包的长度之和仍可能小于预设值),避免网络延迟过大。但本公开实施例不限于此,在网络时延可以较大的情况下,可以继续等待直到得到长度接近预设值的合并数据包。
在一示例性实施例中,所述方法还包括,所述待发送的数据包的长度大于等于所述预设值时,直接发送所述待发送的数据包。即,对于较大的数据包(长度大于等于预设值)直接发送,无需等待后续数据包,可以减少延时,简化发送操作。
在一示例性实施例中,所述接收端可以包括至少两个接收缓存队列,其中,同一接收缓存队列的缓存单元的存储容量相同,且至少存在两个接收缓存队列的缓存单元的存储容量不同,所述预设值可以为所述接收端的接收缓存队列中最小缓存单元(即存储容量最小的缓存单元)的存储容量。本公开实施例不限于此,所述预设值可以为非最小缓存单元的存储容量。预设值为最小缓存单元的存储容量时,可以减少网络延迟,另外,需要合并的数据包较少,因为接收端接收到合并数据包后需要进行拆分处理,因此,接收端收到的合并数据包少时,处理更为简便。
图5为一示例性实施例提供的网络通信方法流程图。如图5所示,本实施例提供的网络通信方法,应用于设置有至少两个接收缓存队列的接收端,所述接收缓存队列包括至少一个缓存单元,其中,同一接收缓存队列的缓存单元的存储容量相同,且至少存在两个接收缓存队列的缓存单元的存储容量不同,所述网络通信方法包括:
步骤501,接收到数据包时,根据所述数据包的长度选择接收缓存队列;其中,所述接收缓存队列中,所述被选中的接收缓存队列的缓存单元的存储容量大于等于且最接近所述数据包的长度。
步骤502,将所述数据包存储到被选中的接收缓存队列的缓存单元中。
本实施例提供的方案,提供至少两种存储容量的缓存单元,可以根据数据包长度选择合适的缓存单元进行存储,从而可以充分利用缓存单元的存储空间,避免浪费socket缓存空间,提高可接收的数据包数量,在数据包较多时,可以减少丢包。
在一示例性实施例中,所述接收端可以设置有两个接收缓存队列:第一接收缓存队列和第二接收缓存队列,所述第一接收缓存队列包括至少一个第一缓存单元,所述第二接收缓存队列包括至少一个第二缓存单元,且所述第一缓存单元的存储容量小于所述第二缓存单元的存储容量。本实施例中,设置缓存单元大小不同的两个接收缓存队列,但本公开实施例不限于此,可以设置三个或者更多接收缓存队列,提供三种或者更多不同大小的缓存单元。
在一示例性实施例中,所述根据所述数据包的长度选择接收缓存队列包括:
当所述数据包小于等于所述第一缓存单元的存储容量时,选择所述第一接收缓存队列;
当所述数据包大于所述第一缓存单元的存储容量时,选择所述第二接收缓存队列。
在一示例性实施例中,所述第二缓存单元的存储容量可以为系统内存页的存储容量的整数倍。在操作系统中所有的内存都需要被管理起来,因此操作系统中设置了管理单元,该管理单元称为内存页(page),目前主流的操作系统的内存页大小为4kB,为了使内存管理变得更加简单,可以将第二缓存单元设置为内存页的整数倍,比如为4kB、8kB、12kB等。但本公开实施例不限于此,可以设置为其他值。
在一示例性实施例中,所述第一缓存单元的存储容量可以根据物理网卡支持的单个数据包的最大长度确定。一般的物理网卡(非软件虚拟出的网卡)每个网络包的大小不超过1500字节,可以将第一缓存单元的大小设置为2kB,但本公开实施例不限于此,可以设置为其他值。通用CPU和专用CPU场景中,当通用CPU接收到外部网络报文并且直接通过虚拟网卡转发到专用CPU时,转发网络报文不超过1500字节,第一缓存单元设置为2kB可以满足其需求。
上述多个实施例提供的网络通信方法,可以应用于PCIe总线连接的发送端或接收端,但本公开实施例不限于此,可以是基于PCIe外的其他连接方式的发送端或接收端,比如,通用串行总线(Universal Serial Bus,USB)、安全数字输入输出(Secure DigitalInput and Output,SDIO)等较为高速的通信总线。
上述多个实施例提供的网络通信方法,可以应用于通用CPU和专用CPU之间的通信,但本公开实施例不限于此,可以是其他设备之间的通信。
下面以PCIe通信模拟成虚拟网卡为例对本公开实施例的网络通信方法进行说明。
图6为一示例性实施例提供的网络通信方法流程图。本实施例中,发送端为PCIe虚拟网卡,接收端可以为PCIe虚拟网卡。如图6所示,本实施例提供的网络通信方法包括:
步骤601,PCIe虚拟网卡接收到待发送的数据包,开始计时,判断所述待发送的数据包的长度是否小于预设值;所述预设值可以为接收端的接收缓存队列的最小缓存单元的存储容量,当所述数据包的长度小于所述预设值时,执行步骤602;当所述数据包的长度大于等于所述预设值时,执行步骤605;
步骤602,等待下一数据包,判断是否超时,即是否到达预设时间阈值T,如果到达预设时间阈值T,执行步骤605;如果未到达预设时间阈值T,执行步骤603;
步骤603,将待发送的数据包与接收到的下一数据包进行合并,如果已有合并的数据包,则将合并的数据包与接收到的下一数据包进行合并;
步骤604,判断合并后的数据包的长度是否大于等于预设值,如果是,执行步骤605,如果小于预设值,执行步骤602;
步骤605,执行发送动作;
所述发送动作包括:
待发送的数据包的长度大于预设值触发的发送动作:直接发送待发送的数据包;
超时触发的发送动作:发送所述待发送的数据包(即接收到待发送的数据包后,等待至超时仍未接收到下一个数据包);或者,发送超时前接收到的数据包合并得到的数据包(从待发送的数据包的接收时刻至超时时刻的时段内的全部数据包与待发送的数据包合并得到的数据包);
合并后的数据包的长度大于等于预设值触发的发送动作:合并后的数据包去掉该合并后的数据包中最后接收到的一个数据包进行发送。
比如,在一示例性实施例中,待发送的数据包称为第一个数据包,第一个数据包长度小于预设值,等待第二个数据包,接收到第二个数据包且未超时,判断第一个数据包和第二个数据包的长度之和仍小于预设值,继续等待第三个数据包,接收到三个数据包且未超时,判断第一个数据包、第二个数据包和第三个数据包的长度之和仍小于预设值,继续等待第四个数据包,接收到第四个数据包且未超时,判断第一个数据包、第二个数据包、第三个数据包和第四个数据包的长度之和大于预设值,则,执行发送动作,发送第一个数据包、第二数据包和第三个数据包合并后生成的合并数据包。
在另一示例性实施例中,如果接收到第二个数据包,未接收到第三个数据包时就已超时,则直接发送第一个数据包和第二个数据包合并生成的合并数据包。
在另一示例性实施例中,如果未接收到第二个数据包就已超时,则直接发送第一个数据包。
如图7所示,为发送动作的不同执行情况。可能将多个较小的数据包合并后发送(待发送的数据包长度小于预设值,且超时前接收到后续一个或多个数据包);或者,将较大的数据包直接发送(待发送的数据包的长度大于等于预设值);或者,较小的数据包直接发送(待发送数据包的长度小于预设值且超时后还没收到下一个数据包,或者,待发送的数据包和下一个数据包的长度之和大于预设值)。
所述预设时间阈值T可以根据上层软件业务对于延迟的敏感程度设置,比如,可以设置为微秒或者毫秒级别。
本实施例提供的方案,可以将多个较小的数据包合并为一个数据包发送,大大减少了发送的次数,减少了CPU的消耗,且在接收端接收时可以充分利用接收端的缓存单元,减少存储空间浪费,减少丢包率。
下面以接收端设置了两个接收缓存队列为例对本公开实施例的网络通信方法进行说明。
在网卡的驱动中,会提前创建数据包接收队列,即接收缓存队列,接收缓存队列中包括至少一个缓存单元。接收缓存队列属于网卡驱动层。当网络数据报文(数据包)到达时网卡,网卡从接收缓存队列中提取一个缓存单元,将接收到的数据包存放到该缓存单元中。该数据包接收完成后,网卡将数据包提交到socket链接中。网卡将数据包提交到socket链接时,操作系统会判断该socket对应的缓冲空间是否有剩余空间,如果socket对应的缓冲空间已经无剩余空间,则提交的数据包会被丢弃,如果socket对应的缓冲空间有剩余空间,则数据包正常提交到socket链接下。
对于实际的物理网卡,在没有向网卡接收缓存队列拷贝数据包前,无法知道该数据包的大小,故对于真实的物理网卡每一个缓存单元都按照最大包的长度设定。
对于虚拟网卡(比如PCIe虚拟网卡),在每一个数据包的报文传输前,都可以知道该数据包的长度。因此可以根据数据包长度选择不同长度的接收缓存。
如图8所示,PCIe虚拟网卡设置有两个接收缓存队列:包括至少一个第一缓存单元的第一接收缓存队列和包括至少一个第二缓存单元的第二接收缓存队列,其中,第一缓存单元的存储容量小于第二缓存单元的存储容量,第一缓存单元的存储容量比如设置为2kB,第二缓存单元的存储容量比如设置为4kB、8kB、或12kB(可以是操作系统内核中内存页的整数倍,目前操作系统中的内存页一般为4kB);
PCIe虚拟网卡接收到数据包时,根据数据包的长度选择接收缓存队列,当数据包的长度小于等于所述第一缓存单元的存储容量时,从第一接收缓存队列中提取一个第一缓存单元接收所述数据包;当数据包的长度大于第一缓存单元的存储容量时,从第二接收缓存队列中提取一个第二缓存单元接收所述数据包。即,当数据包的长度小于等于2kB(第一缓存单元的大小)时,则从第一接收缓存队列中提取缓存单元接收该数据包,当数据包的长度大于2kB时,则从第二接收缓存队列中提取缓存单元接收所述数据包。数据包被接收后,再提交到Socket缓冲空间。
本实施例提供的方案,在保证不降低原有传输效率的同时,降低了长度较小的数据包的内存占用,避免占用socket缓存而引起的丢包问题,减少了UDP通信丢包的概率,另外,可以提供大的接收缓存,充分发挥PCIe的传输能力。
如图9所示,本公开实施例提供一种网络通信装置90,包括存储器910和处理器920,所述存储器910存储有程序,所述程序在被所述处理器920读取执行时,实现上述任一实施例所述的网络通信方法。
本公开实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述任一实施例所述的网络通信方法。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
Claims (10)
1.一种网络通信方法,其特征在于,应用于设置有至少两个接收缓存队列的接收端,所述接收缓存队列包括至少一个缓存单元,其中,同一接收缓存队列的缓存单元的存储容量相同,且至少存在两个接收缓存队列的缓存单元的存储容量不同,所述网络通信方法包括:
接收到数据包时,根据所述数据包的长度选择接收缓存队列,将所述数据包存储到被选中的接收缓存队列的缓存单元中,其中,所述接收缓存队列中,所述被选中的接收缓存队列的缓存单元的存储容量大于等于且最接近所述数据包的长度。
2.根据权利要求1所述的网络通信方法,其特征在于,所述接收端设置有两个接收缓存队列:第一接收缓存队列和第二接收缓存队列,所述第一接收缓存队列包括至少一个第一缓存单元,所述第二接收缓存队列包括至少一个第二缓存单元,且所述第一缓存单元的存储容量小于所述第二缓存单元的存储容量。
3.根据权利要求2所述的网络通信方法,其特征在于,所述根据所述数据包的长度选择接收缓存队列包括:
当所述数据包的长度小于等于所述第一缓存单元的存储容量时,选择所述第一接收缓存队列;
当所述数据包的长度大于所述第一缓存单元的存储容量时,选择所述第二接收缓存队列。
4.根据权利要求2所述的网络通信方法,其特征在于,所述第二缓存单元的存储容量为系统内存页的存储容量的整数倍。
5.根据权利要求2所述的网络通信方法,其特征在于,所述第一缓存单元的存储容量根据物理网卡支持的单个数据包的最大长度确定。
6.一种网络通信方法,其特征在于,包括:
发送端获取待发送的数据包,在所述待发送的数据包的长度小于预设值时,等待后续数据包,直至目标数据包,其中,从所述待发送的数据包至所述目标数据包的全部数据包的长度之和大于所述预设值,且从所述待发送的数据包至截止数据包的全部数据包的长度之和小于等于所述预设值,所述截止数据包为所述目标数据包的前一个数据包;
将所述待发送的数据包至所述截止数据包的全部数据包合并生成合并数据包,发送所述合并数据包至接收端;
其中,所述接收端包括至少两个接收缓存队列,其中,同一接收缓存队列的缓存单元的存储容量相同,且至少存在两个接收缓存队列的缓存单元的存储容量不同,所述预设值为所述接收端的接收缓存队列中最小缓存单元的存储容量。
7.根据权利要求6所述的网络通信方法,其特征在于,所述待发送的数据包到达所述发送端的第一时刻,与所述截止数据包到达所述发送端的第二时刻的差值小于预设时间阈值。
8.根据权利要求7所述的网络通信方法,其特征在于,所述方法还包括,从所述待发送的数据包到达所述发送端的第一时刻起,到所述预设时间阈值,且所述待发送的数据包与所述第一时刻起预设时间阈值内到达所述发送端的数据包的长度之和小于等于所述预设值时,将所述待发送的数据包与所述第一时刻起预设时间阈值内到达所述发送端的数据包合并后发送;以及,
所述待发送的数据包的长度大于等于所述预设值时,直接发送所述待发送的数据包。
9.一种网络通信装置,其特征在于,包括存储器和处理器,所述存储器存储有程序,所述程序在被所述处理器读取执行时,实现如权利要求1至8任一所述的网络通信方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如权利要求1至8任一所述的网络通信方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210088532.XA CN114124850B (zh) | 2022-01-26 | 2022-01-26 | 一种网络通信方法及装置、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210088532.XA CN114124850B (zh) | 2022-01-26 | 2022-01-26 | 一种网络通信方法及装置、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114124850A true CN114124850A (zh) | 2022-03-01 |
CN114124850B CN114124850B (zh) | 2022-07-12 |
Family
ID=80361061
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210088532.XA Active CN114124850B (zh) | 2022-01-26 | 2022-01-26 | 一种网络通信方法及装置、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114124850B (zh) |
Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1262754A (zh) * | 1997-03-21 | 2000-08-09 | 卡纳尔股份有限公司 | 计算机存储器组织 |
JP2000316024A (ja) * | 1999-05-06 | 2000-11-14 | Nec Corp | パケットバッファ管理装置およびパケットバッファ管理方法 |
CN1385982A (zh) * | 2001-05-10 | 2002-12-18 | 华为技术有限公司 | 通过合并数据包改变交织长度的信息重传方法 |
CN1494277A (zh) * | 2002-11-01 | 2004-05-05 | ��Ϊ��������˾ | 网络通信中数据发送/接收缓冲区的管理方法 |
CN101626384A (zh) * | 2009-08-05 | 2010-01-13 | 腾讯科技(深圳)有限公司 | 一种基于tcp协议传输数据包的方法和系统 |
CN103346949A (zh) * | 2013-07-25 | 2013-10-09 | 北京大学 | 基于嵌入式的双通道网络数据包的拆包和组包方法及系统 |
CN103475451A (zh) * | 2013-09-10 | 2013-12-25 | 江苏中科梦兰电子科技有限公司 | 一种适合前向纠错和加密应用的数据报网络传输方法 |
CN103685060A (zh) * | 2012-09-12 | 2014-03-26 | 中兴通讯股份有限公司 | 数据包发送方法及装置 |
CN103699497A (zh) * | 2013-12-19 | 2014-04-02 | 京信通信系统(中国)有限公司 | 一种缓存分配方法及装置 |
CN103986753A (zh) * | 2014-05-08 | 2014-08-13 | 京信通信系统(中国)有限公司 | 一种传输数据包的方法及装置 |
WO2016197848A1 (zh) * | 2015-06-09 | 2016-12-15 | 华为技术有限公司 | 一种管理网卡的方法、装置及系统 |
CN110300429A (zh) * | 2018-03-23 | 2019-10-01 | 中国移动通信集团广东有限公司 | 调整缓存长度的方法、装置、电子设备和存储介质 |
CN110691380A (zh) * | 2019-10-30 | 2020-01-14 | 北京工业大学 | 一种降低软件定义无人机集群网络通信开销与时延的方法 |
CN111385269A (zh) * | 2018-12-29 | 2020-07-07 | 广州市百果园网络科技有限公司 | 数据传输方法和装置 |
CN113468090A (zh) * | 2020-03-30 | 2021-10-01 | 浙江宇视科技有限公司 | 一种PCle通信方法、装置、电子设备及可读存储介质 |
CN113890852A (zh) * | 2021-08-24 | 2022-01-04 | 北京旷视科技有限公司 | 数据发送方法、装置、设备及介质 |
-
2022
- 2022-01-26 CN CN202210088532.XA patent/CN114124850B/zh active Active
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1262754A (zh) * | 1997-03-21 | 2000-08-09 | 卡纳尔股份有限公司 | 计算机存储器组织 |
JP2000316024A (ja) * | 1999-05-06 | 2000-11-14 | Nec Corp | パケットバッファ管理装置およびパケットバッファ管理方法 |
CN1385982A (zh) * | 2001-05-10 | 2002-12-18 | 华为技术有限公司 | 通过合并数据包改变交织长度的信息重传方法 |
CN1494277A (zh) * | 2002-11-01 | 2004-05-05 | ��Ϊ��������˾ | 网络通信中数据发送/接收缓冲区的管理方法 |
CN101626384A (zh) * | 2009-08-05 | 2010-01-13 | 腾讯科技(深圳)有限公司 | 一种基于tcp协议传输数据包的方法和系统 |
CN103685060A (zh) * | 2012-09-12 | 2014-03-26 | 中兴通讯股份有限公司 | 数据包发送方法及装置 |
CN103346949A (zh) * | 2013-07-25 | 2013-10-09 | 北京大学 | 基于嵌入式的双通道网络数据包的拆包和组包方法及系统 |
CN103475451A (zh) * | 2013-09-10 | 2013-12-25 | 江苏中科梦兰电子科技有限公司 | 一种适合前向纠错和加密应用的数据报网络传输方法 |
CN103699497A (zh) * | 2013-12-19 | 2014-04-02 | 京信通信系统(中国)有限公司 | 一种缓存分配方法及装置 |
CN103986753A (zh) * | 2014-05-08 | 2014-08-13 | 京信通信系统(中国)有限公司 | 一种传输数据包的方法及装置 |
WO2016197848A1 (zh) * | 2015-06-09 | 2016-12-15 | 华为技术有限公司 | 一种管理网卡的方法、装置及系统 |
CN110300429A (zh) * | 2018-03-23 | 2019-10-01 | 中国移动通信集团广东有限公司 | 调整缓存长度的方法、装置、电子设备和存储介质 |
CN111385269A (zh) * | 2018-12-29 | 2020-07-07 | 广州市百果园网络科技有限公司 | 数据传输方法和装置 |
CN110691380A (zh) * | 2019-10-30 | 2020-01-14 | 北京工业大学 | 一种降低软件定义无人机集群网络通信开销与时延的方法 |
CN113468090A (zh) * | 2020-03-30 | 2021-10-01 | 浙江宇视科技有限公司 | 一种PCle通信方法、装置、电子设备及可读存储介质 |
CN113890852A (zh) * | 2021-08-24 | 2022-01-04 | 北京旷视科技有限公司 | 数据发送方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114124850B (zh) | 2022-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11991072B2 (en) | System and method for facilitating efficient event notification management for a network interface controller (NIC) | |
EP3660686B1 (en) | Method and device for transmitting data processing request | |
US10908841B2 (en) | Increasing throughput of non-volatile memory express over fabric (NVMEoF) via peripheral component interconnect express (PCIe) interface | |
WO2017000593A1 (zh) | 报文处理方法及装置 | |
CN114546913B (zh) | 一种基于pcie接口的多主机之间数据高速交互的方法和装置 | |
US20190196989A1 (en) | Method, Apparatus, and System for Accessing Memory Device | |
US10609125B2 (en) | Method and system for transmitting communication data | |
CN112650558B (zh) | 数据处理方法、装置、可读介质和电子设备 | |
CN109117386B (zh) | 一种网络远程读写二级存储的系统及方法 | |
CN109417507B (zh) | 一种通过部分直接内存访问dma访问内存的方法和系统 | |
CN112769905A (zh) | 一种基于numa架构的飞腾平台下高性能网卡性能优化方法 | |
CN115934623A (zh) | 一种基于远程直接内存访问的数据处理方法、设备及介质 | |
CN114925012A (zh) | 一种以太网帧的下发方法、上传方法及相关装置 | |
CN113468090A (zh) | 一种PCle通信方法、装置、电子设备及可读存储介质 | |
CN117033275B (zh) | 加速卡间的dma方法、装置、加速卡、加速平台及介质 | |
CN114124850B (zh) | 一种网络通信方法及装置、存储介质 | |
CN110471627B (zh) | 一种共享存储的方法、系统及装置 | |
CN115904259B (zh) | 非易失性存储器标准NVMe指令的处理方法及相关装置 | |
CN112291259A (zh) | 一种协议转换方法、网关、设备及可读存储介质 | |
CN113691466A (zh) | 一种数据的传输方法、智能网卡、计算设备及存储介质 | |
CN116700595A (zh) | 一种基于缓存的数据处理方法、系统及设备 | |
CN113326151A (zh) | 进程间通信方法、装置、设备、系统及存储介质 | |
CN116032498A (zh) | 一种内存区域注册方法、装置及设备 | |
CN116157785A (zh) | 减少远程直接内存访问系统中的事务丢弃 | |
CN115529275B (zh) | 一种报文处理系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |