CN116418734B - 一种低时延的小包发送方法及装置 - Google Patents
一种低时延的小包发送方法及装置 Download PDFInfo
- Publication number
- CN116418734B CN116418734B CN202310680494.1A CN202310680494A CN116418734B CN 116418734 B CN116418734 B CN 116418734B CN 202310680494 A CN202310680494 A CN 202310680494A CN 116418734 B CN116418734 B CN 116418734B
- Authority
- CN
- China
- Prior art keywords
- data
- last
- packet
- register
- bytes
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 23
- 238000012545 processing Methods 0.000 claims abstract description 51
- 230000005540 biological transmission Effects 0.000 claims abstract description 20
- 239000012634 fragment Substances 0.000 claims abstract description 17
- 230000011218 segmentation Effects 0.000 claims abstract description 17
- 238000005457 optimization Methods 0.000 claims abstract description 7
- 101100120298 Rattus norvegicus Flot1 gene Proteins 0.000 claims description 31
- 101100412403 Rattus norvegicus Reg3b gene Proteins 0.000 claims description 31
- 102100023882 Endoribonuclease ZC3H12A Human genes 0.000 claims description 21
- 101710112715 Endoribonuclease ZC3H12A Proteins 0.000 claims description 21
- 101100412394 Drosophila melanogaster Reg-2 gene Proteins 0.000 claims description 6
- 238000012544 monitoring process Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000004075 alteration Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000010485 coping Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/12—Shortest path evaluation
- H04L45/121—Shortest path evaluation by minimising delays
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/30—Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/43—Assembling or disassembling of packets, e.g. segmentation and reassembly [SAR]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种低时延的小包发送装置,基于FPGA多寄存器组合优化实现,首先,设定多寄存器组合处理逻辑以及小包数据切分逻辑;其次,响应应用程序发包请求,接收并处理数据包,按照所述小包数据切分逻辑,计算数据包切片数和末片余量;第三,根据多寄存器组合处理逻辑,执行末片余量判断并将非末片切片数据存入指定的寄存器的缓存空间;然后,根据末片余量数据长度将所述末片余量划分为满片或非满片两种类型,并根据多寄存器组合处理逻辑,将所述末片余量根据划分的类型存入不同的寄存器处理;最后,从寄存器以及寄存器的缓存空间中取出数据包的分片进行组装后发出。本发明降低小包发送时延并提高小包传输网络性能。
Description
技术领域
本发明涉及网络数据处理和数据通信领域,具体涉及一种低时延的小包发送方法及装置。
背景技术
随着网络时代的发展,互联网信息链路中传递的数据也愈发庞大和多样,缤纷多彩的网络应用的问世,也让用户们对网络性能有了更大的需求。目前大多数网络平台在处理数据包报文长度为512字节及其以上的中、大包时,吞吐量大都能接近线速,而处理小包的时候,性能差异立即体现。但是,近年来普及的一些应用,包括实时通讯工具、线上文本阅读、短视频、网络小游戏等,都是以小包的形式在工作,因此,人们对网络平台的小包数据处理能力的关注程度越来越高。
目前的研究者们针对小包数据时延,一般将路由规划和流量工程结合起来,两者共同决定网络拓扑及拓扑内流量的分配,进而影响网络的拥塞情况与时延,主要解决了两类时延,分别是端到端时延和拥塞节点的排队时延。
虽然这些研究成果一定程度上改善了小包的传输性能,但是大都忽略了站点传输时延,也就是指站点发送或接收一个数据包所需要的处理时间。
宏观来看,相比于中、大包,小包的传输频率更加频繁。对于数据包的发送站点来说,若是继续采用传统网络包发送方式,传输大量小包时,根据存储架构逐级访问内存的频率会变得极为频繁。多次访问内存积累下来的时间消耗将对数据包传输性能造成巨大的负面影响,因此,如何降低站点发送小包的传输时延,是一个亟需寻求解决路径的问题。
发明内容
本发明针对现有技术中存在的技术问题,提供一种低时延的小包发送方法及装置,结合FPGA的硬件计算资源,借助3个容量为64字节的FPGA寄存器,针对数据报文长度不大于512字节的小包,将数据包切割分配至各个寄存器,设计多寄存器组合处理算法,充分降低了小包发送时延并提高小包传输网络性能。
本发明解决上述技术问题的技术方案如下:
一方面,本发明提供一种低时延的小包发送方法,该方法基于多寄存器组合优化实现,所述小包发送方法包括:
设定多寄存器组合处理逻辑以及小包数据切分逻辑;
响应应用程序发包请求,接收并处理数据包,按照所述小包数据切分逻辑,计算数据包切片数和末片余量;
根据多寄存器组合处理逻辑,执行末片余量判断并将非末片切片数据存入指定的寄存器的缓存空间;
根据末片余量数据长度将所述末片余量划分为满片或非满片两种类型,并根据多寄存器组合处理逻辑,将所述末片余量根据划分的类型存入不同的寄存器处理;
从寄存器以及寄存器的缓存空间中取出数据包的分片进行组装后发出。
进一步的,所述小包数据为数据大小不大于512字节的数据包,所述寄存器的存储空间均为64字节。
进一步的,所述小包数据切分逻辑包括:
记接收并处理的数据包大小为N字节,先计算不足64字节数据的长度ML:ML=N%64,%表示取余运算;然后计算切片数SN:,/>表示向上取整。
进一步的,所述多寄存器组合处理逻辑,包括:
采用三个寄存器,记为Reg0、Reg1、Reg2;其中Reg0只存放起始数据或中间数据,不存放末片数据,每片数据写满64字节;Reg1在末片数据刚好为64字节的情况下,只存放末片数据;Reg2在末片数据小于64字节的情况下,只存放末片数据,且Reg2的第一个字节用来记录该寄存器中写入的末片数据长度,保证读取有效信息。
进一步的,根据多寄存器组合处理逻辑,执行末片余量判断并将非末片切片数据存入指定的寄存器的缓存空间,包括:
根据ML值进行末片类型划分,若ML为0,则说明数据包长度为64字节整数倍,将末片划分为满片;若ML不为0,则说明数据最后一片不足64字节,将末片划分为非满片;
若末片为满片则将末片数据写入Reg1,若末片为非满片,则将ML值写入Reg2存储空间的第1个字节,然后将末片数据从Reg2的第2个字节开始逐节写入。
进一步的,从寄存器以及寄存器的缓存空间中取出数据包的分片进行组装后发出,包括:
S601,检查Reg0寄存器的缓存空间和存储空间,将缓存空间里的切片按照顺序组装,然后在尾部拼装Reg0存储空间中的切片;
S602,对寄存器Reg1、Reg2的存储空间进行实时监控;
S603,若检测到Reg1被填入了数据包切片,则在步骤S601获取的拼装结果的尾部,拼装Reg1存储空间的数据切片,组装完毕后快速发出。
S604,若检测到Reg2被填入了数据包切片,则根据Reg2存储空间的第一个字节数据,获取末片长度信息,从第2个字节开始,截取指定长度的数据,并拼装到步骤S601获取的拼装结果的尾部,组装完毕后快速发出。
另一方面,本发明提供一种低时延的小包发送装置,该装置基于FPGA实现,包括:
逻辑设定模块,设定多寄存器组合处理逻辑以及小包数据切分逻辑;
数据包切分模块,响应应用程序发包请求,接收并处理数据包,按照所述小包数据切分逻辑,计算数据包切片数和末片余量;
第一写入模块,根据多寄存器组合处理逻辑,执行末片余量判断并将非末片切片数据存入指定的寄存器的缓存空间;
第二写入模块,根据末片余量数据长度将所述末片余量划分为满片或非满片两种类型,并根据多寄存器组合处理逻辑,将所述末片余量根据划分的类型存入不同的寄存器处理;
数据组装模块,从寄存器以及寄存器的缓存空间中取出数据包的分片进行组装后发出。
进一步的,所述小包数据为数据大小不大于512字节的数据包,所述寄存器的存储空间均为64字节。
进一步的,所述小包数据切分逻辑包括:
记接收并处理的数据包大小为N字节,先计算不足64字节数据的长度ML:ML=N%64,%表示取余运算;然后计算切片数SN:,/>表示向上取整。
进一步的,所述多寄存器组合处理逻辑,包括:
该装置采用三个寄存器,记为Reg0、Reg1、Reg2;其中Reg0只存放起始数据或中间数据,不存放末片数据,每片数据写满64字节;Reg1在末片数据刚好为64字节的情况下,只存放末片数据;Reg2在末片数据小于64字节的情况下,只存放末片数据,且Reg2的第一个字节用来记录该寄存器中写入的末片数据长度,保证读取有效信息。
本发明的有益效果是:本发明利用3个64字节的FPGA寄存器进行组合优化,结合寄存器快速读写的特性,给出了一种低时延的小包组合发送方法。在本发明中,64字节及以下的小包只需一次寄存器读写即可完成发送。大于64字节小于512字节的数据包需要进行分片,每个寄存器各司其职完成不同类别的数据片写入,驱动程序读取寄存器数据进行组装发送。一次寄存器读写的时间远远小于内存寻址,在存在大量小包的高速网络环境中,本发明采用一次或若干次寄存器读写便可以成功完成数据包的发送,避免了内存寻址和数据拷贝,极大的降低了发包时延。
附图说明
图1为本发明实施例提供的小包发送方法原理图;
图2为本发明实施例提供的小包发送方法流程示意图;
图3为本发明实施例提供的寄存器任务分配示意图;
图4为本发明实施例提供的多寄存器组合优化的发包示例;
图5为本发明实施例提供的一种低时延的小包发送装置结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请的描述中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
在本申请的描述中,术语“例如”一词用来表示“用作例子、例证或说明”。本申请中被描述为“例如”的任何实施例不一定被解释为比其它实施例更优选或更具优势。为了使本领域任何技术人员能够实现和使用本发明,给出了以下描述。在以下描述中,为了解释的目的而列出了细节。应当明白的是,本领域普通技术人员可以认识到,在不使用这些特定细节的情况下也可以实现本发明。在其它实例中,不会对公知的结构和过程进行详细阐述,以避免不必要的细节使本发明的描述变得晦涩。因此,本发明并非旨在限于所示的实施例,而是与符合本申请所公开的原理和特征的最广范围相一致。
本发明实施例提供一种低时延的基于FPGA多寄存器组合优化的小包发送方法,原理图如图1所示,所述的小包快速发送方法包括:
步骤1,当应用程序有发包请求时,驱动程序接收并处理数据包。根据小包数据切分逻辑,计算出切片数和末尾余量。
步骤2,设定FPGA多寄存器组合处理逻辑,为各个寄存器设定独立的工作任务,分别应对各种数据包切分结果,在组合处理逻辑的统筹下,实现所有情况的流畅处理。
步骤3,驱动程序执行末片判断,逐片分析,非末片存入指定寄存器的缓存空间,末片则跳转步骤4。
步骤4,驱动程序根据末片数据长度,进行类型划分,划分为满片和非满片,按照步骤2设定的处理逻辑,根据不同情况,转入不同的寄存器处理。FPGA从寄存器以及各自的缓存空间中取出数据包的分片组装后,快速发送出去。
结合FPGA的硬件计算资源,借助3个容量为64字节的FPGA寄存器,针对数据报文长度不大于512字节的小包,将数据包切割分配至各个寄存器,设计多寄存器组合处理算法,能够有效解决现有技术方案中忽略的站点发送小包的传输时延问题,充分降低小包发送时延并提高小包传输网络性能。
本实施例中,在FPGA多寄存器组合处理逻辑中,选用的寄存器数量为3,寄存器存储空间的大小为64字节,将三个寄存器分别记为Reg0,Reg1,Reg2,每个寄存器传输的64字节数据记为一片。ML为切片后剩余不足64字节的数据部分,SN为片数,同时也为写寄存器的总次数,i为循环变量,如图2所示。
具体的,所述的小包快速发送方法包括:
步骤100,当应用程序有发包请求时,驱动程序接收并处理N字节数据包。计算出切片数SN和不足64字节数据的长度ML:
ML=N%64 (1.1)
(1.2)
其中,%表示取余运算,表示向上取整。
步骤200,Reg0不能存放最后一片数据,只能存放起始数据或中间数据,每片数据需写满64字节。Reg1只能存放最后一片数据,且最后一片数据刚好为64字节才使用该寄存器,数据长度刚好为64字节的数据包仅需使用Reg1进行发送。Reg2也只能存放最后一片数据,它的第一个字节用来记录该寄存器中写入的剩余数据长度,保证读取有效信息,因此可以写入剩余数据长度小于等于63字节的部分,总长度小于等于63字节的数据包也可以只使用Reg2完成发送。
步骤300,驱动程序判断当前写寄存器次数是否等于切片数量减一,即将要传输的数据分片是否为最后一片,分两种情况:
①数据分片非最后一片,无论是起始片还是中间片都要将64字节片数据写入Reg0中,并将循环变量加一,返回步骤300,直到判断条件不成立。
②数据分片为最后一片,需要进一步判断剩余数据长度。跳转到步骤400。
步骤400,Reg1和Reg2寄存器都处理最后一片数据,但它们分属不同类别。驱动程序需根据最后一片中剩余数据长度判断写入哪一个寄存器。
①如果ML为0,说明数据包长度为64字节整数倍,最后一片数据写入Reg1。
②如果ML不为0,说明数据最后一片不足64字节,此时需在第一个字节中填入剩余部分的数据长度,再将数据依次写入Reg2中。
将寄存器或缓存中的数据片读取出来,组装成完整的数据包,完成发送。
步骤100具体步骤如下:
1a)设置切片数SN,切片后最后一片不足64字节的长度ML,初始化循环变量i。
1b)驱动程序接收从应用程序传来的发包请求,获取数据包的长度信息,利用公式(1.1)和(1.2)计算得出SN和ML,对数据包进行切片,准备进行写寄存器工作。
步骤200具体步骤如下:
2a)设置3个64字节寄存器。其中Reg0和Reg1寄存器都必须写满64字节数据,但Reg0不能存放最后一片数据,而Reg1只能存放最后一片大小为64字节的数据片。Reg2也只能存放最后一片数据片,但考虑到剩余数据片长度很可能不足64字节,因此在该寄存器中我们采用1字节的长度字段来记录最后一片数据片的数据长度,便于组包时能够精准读取数据部分,该字段位于寄存器的首部。寄存器任务分配如图3所示,它们协同合作,避免了数据分片的混乱。
步骤300具体步骤如下:
3a)判断循环变量i与(SN-1)的大小,确认数据片是否为最后一片。如果不是最后一片,则将数据片依次写入Reg0中,每次写入后将循环变量加一。如果数据片为最后一片,则还需判断ML是否为零,跳转到步骤400。
3b) FPGA在Reg0写入数据以后,立即读取Reg0中的数据,按序进行组包工作,如遇网络拥挤的状况,也可以将数据片暂存于寄存器缓冲中。寄存器读取完成后返回步骤300。
步骤400具体步骤如下:
4a)数据片为最后一片,判断ML是否为零。如果为零,代表最后一片刚好为64字节,需将数据写入Reg1中,如果不为零,说明最后一片长度小于等于63字节,将ML填入Reg2的长度字段中,并将剩余长度的数据依次填入Reg2中。
4b)FPGA读取Reg1或者Reg2中最后一片数据,与之前读取Reg0中的数据片进行组装,获得完整的数据包,并进行发送。
步骤300和步骤400中所描述的数据包切片,写入,读取,组装发送如图4所示,寄存器缓存cache可以暂存接收到的数据分片。图4中一共展示了四种大小数据包示例,具体如下:
①号数据包总长度为192字节,分为三片,每片大小都为64字节,因此前两片都写入Reg0,最后一片写入Reg1,组包时按序进行组装。
②号数据包总长度为96字节,分为两片,最后一片大小为32字节,不足64字节,因此第一片写入Reg0中,最后一片写入Reg2中,并将长度信息写入Reg2首部的长度字段中。发送时FPGA将按长度信息读取Reg中的数据,并与Reg1进行拼接,获得完整的数据包。
③号数据包总长度刚好等于64字节,只有一片,同时也为最后一片,因此单64字节的数据包需写入Reg1中。FPGA直接从Reg1中读取64字节数据并发送数据包。
④号数据包总长度小于64字节,如50字节,无需分片,将数据和长度信息写入Reg2中。FPGA根据长度字段直接从Reg2中读取数据并发送数据包。
本发明针对被忽略的站点小包传输时延,放弃了传统网络包发送方式,避免了频繁的内存寻址和数据拷贝,直接将小包根据实际情况分片,通过3个64字节的寄存器,与CPU直接连通,快速发送。
本发明引入可编程硬件设备FPGA,基于其硬件计算资源的优势,借助其具有的多个大容量寄存器,实现多寄存器组合优化的小包发送流程,不仅可以加快数据包分片的速度,还确保了整体流程的安全性。
本发明设计了一种小包数据分片逻辑和FPGA多寄存器组合处理逻辑,3个寄存器各司其职分工明确,在确保数据完整性的前提下,实现极高的数据传输效率,假设数据报文长度为N字节,在N为64整数倍的理想情况下,数据有效率为100%,在非理想情况下,只有附加的长度为1字节的len信息为无效信息,数据有效率为N/N+1。
在上述实施例的基础上,本发明实施例还提供一种低时延的小包发送装置,该装置基于FPGA实现,如图5所示,包括:
逻辑设定模块,设定多寄存器组合处理逻辑以及小包数据切分逻辑;
数据包切分模块,响应应用程序发包请求,接收并处理数据包,按照所述小包数据切分逻辑,计算数据包切片数和末片余量;
第一写入模块,根据多寄存器组合处理逻辑,执行末片余量判断并将非末片切片数据存入指定的寄存器的缓存空间;
第二写入模块,根据末片余量数据长度将所述末片余量划分为满片或非满片两种类型,并根据多寄存器组合处理逻辑,将所述末片余量根据划分的类型存入不同的寄存器处理;
数据组装模块,从寄存器以及寄存器的缓存空间中取出数据包的分片进行组装后发出。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。
Claims (5)
1.一种低时延的小包发送方法,该方法基于多寄存器组合优化实现,其特征在于,所述小包发送方法包括:
设定多寄存器组合处理逻辑以及小包数据切分逻辑;
响应应用程序发包请求,接收并处理数据包,按照所述小包数据切分逻辑,计算数据包切片数和末片余量;
根据多寄存器组合处理逻辑,执行末片余量判断并将非末片切片数据存入指定的寄存器的缓存空间;
根据末片余量数据长度将所述末片余量划分为满片或非满片两种类型,并根据多寄存器组合处理逻辑,将所述末片余量根据划分的类型存入不同的寄存器处理;
从寄存器以及寄存器的缓存空间中取出数据包的分片进行组装后发出;
所述小包数据切分逻辑包括:
记接收并处理的数据包大小为N字节,先计算不足64字节数据的长度ML:ML=N%64,%表示取余运算;然后计算切片数SN:,/>表示向上取整;
所述多寄存器组合处理逻辑,包括:
采用三个寄存器,记为Reg0、Reg1、Reg2;其中Reg0只存放起始数据或中间数据,不存放末片数据,每片数据写满64字节;Reg1在末片数据刚好为64字节的情况下,只存放末片数据;Reg2在末片数据小于64字节的情况下,只存放末片数据,且Reg2的第一个字节用来记录该寄存器中写入的末片数据长度,保证读取有效信息;
根据多寄存器组合处理逻辑,执行末片余量判断并将非末片切片数据存入指定的寄存器的缓存空间,包括:
根据ML值进行末片类型划分,若ML为0,则说明数据包长度为64字节整数倍,将末片划分为满片;若ML不为0,则说明数据最后一片不足64字节,将末片划分为非满片;
若末片为满片则将末片数据写入Reg1,若末片为非满片,则将ML值写入Reg2存储空间的第1个字节,然后将末片数据从Reg2的第2个字节开始逐节写入。
2.根据权利要求1所述的方法,其特征在于,所述小包数据为数据大小不大于512字节的数据包,所述寄存器的存储空间均为64字节。
3.根据权利要求1所述的方法,其特征在于,从寄存器以及寄存器的缓存空间中取出数据包的分片进行组装后发出,包括:
S601,检查Reg0寄存器的缓存空间和存储空间,将缓存空间里的切片按照顺序组装,然后在尾部拼装Reg0存储空间中的切片;
S602,对寄存器Reg1、Reg2的存储空间进行实时监控;
S603,若检测到Reg1被填入了数据包切片,则在步骤S601获取的拼装结果的尾部,拼装Reg1存储空间的数据切片,组装完毕后快速发出;
S604,若检测到Reg2被填入了数据包切片,则根据Reg2存储空间的第一个字节数据,获取末片长度信息,从第2个字节开始,截取指定长度的数据,并拼装到步骤S601获取的拼装结果的尾部,组装完毕后快速发出。
4.一种低时延的小包发送装置,其特征在于,该装置基于FPGA实现,包括:
逻辑设定模块,设定多寄存器组合处理逻辑以及小包数据切分逻辑;
数据包切分模块,响应应用程序发包请求,接收并处理数据包,按照所述小包数据切分逻辑,计算数据包切片数和末片余量;
第一写入模块,根据多寄存器组合处理逻辑,执行末片余量判断并将非末片切片数据存入指定的寄存器的缓存空间;
第二写入模块,根据末片余量数据长度将所述末片余量划分为满片或非满片两种类型,并根据多寄存器组合处理逻辑,将所述末片余量根据划分的类型存入不同的寄存器处理;
数据组装模块,从寄存器以及寄存器的缓存空间中取出数据包的分片进行组装后发出;
所述小包数据切分逻辑包括:
记接收并处理的数据包大小为N字节,先计算不足64字节数据的长度ML:ML=N%64,%表示取余运算;然后计算切片数SN:,/>表示向上取整;
所述多寄存器组合处理逻辑,包括:
采用三个寄存器,记为Reg0、Reg1、Reg2;其中Reg0只存放起始数据或中间数据,不存放末片数据,每片数据写满64字节;Reg1在末片数据刚好为64字节的情况下,只存放末片数据;Reg2在末片数据小于64字节的情况下,只存放末片数据,且Reg2的第一个字节用来记录该寄存器中写入的末片数据长度,保证读取有效信息;
根据多寄存器组合处理逻辑,执行末片余量判断并将非末片切片数据存入指定的寄存器的缓存空间,包括:
根据ML值进行末片类型划分,若ML为0,则说明数据包长度为64字节整数倍,将末片划分为满片;若ML不为0,则说明数据最后一片不足64字节,将末片划分为非满片;
若末片为满片则将末片数据写入Reg1,若末片为非满片,则将ML值写入Reg2存储空间的第1个字节,然后将末片数据从Reg2的第2个字节开始逐节写入。
5.根据权利要求4所述的装置,其特征在于,所述小包数据为数据大小不大于512字节的数据包,所述寄存器的存储空间均为64字节。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310680494.1A CN116418734B (zh) | 2023-06-09 | 2023-06-09 | 一种低时延的小包发送方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310680494.1A CN116418734B (zh) | 2023-06-09 | 2023-06-09 | 一种低时延的小包发送方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116418734A CN116418734A (zh) | 2023-07-11 |
CN116418734B true CN116418734B (zh) | 2023-08-18 |
Family
ID=87054657
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310680494.1A Active CN116418734B (zh) | 2023-06-09 | 2023-06-09 | 一种低时延的小包发送方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116418734B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6347097B1 (en) * | 1997-12-05 | 2002-02-12 | Texas Instruments Incorporated | Method and apparatus for buffering received data from a serial bus |
EP1266476A1 (en) * | 2000-03-10 | 2002-12-18 | Cypress Semiconductor Corporation | Hybrid data transport scheme over optical networks |
JP2006180246A (ja) * | 2004-12-22 | 2006-07-06 | Matsushita Electric Ind Co Ltd | Ipパケット処理装置 |
US8051227B1 (en) * | 2010-05-10 | 2011-11-01 | Telefonaktiebolaget L M Ericsson (Publ) | Programmable queue structures for multiprocessors |
CN107220187A (zh) * | 2017-05-22 | 2017-09-29 | 北京星网锐捷网络技术有限公司 | 一种缓存管理方法、装置及现场可编程门阵列 |
CN113535633A (zh) * | 2020-04-17 | 2021-10-22 | 深圳市中兴微电子技术有限公司 | 一种片上缓存装置和读写方法 |
CN114584560A (zh) * | 2022-03-11 | 2022-06-03 | 西南科技大学 | 一种分片帧重组方法及装置 |
CN114844846A (zh) * | 2022-04-14 | 2022-08-02 | 南京大学 | 一种基于可编程交换机的多级缓存分布式键值存储系统 |
-
2023
- 2023-06-09 CN CN202310680494.1A patent/CN116418734B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6347097B1 (en) * | 1997-12-05 | 2002-02-12 | Texas Instruments Incorporated | Method and apparatus for buffering received data from a serial bus |
EP1266476A1 (en) * | 2000-03-10 | 2002-12-18 | Cypress Semiconductor Corporation | Hybrid data transport scheme over optical networks |
JP2006180246A (ja) * | 2004-12-22 | 2006-07-06 | Matsushita Electric Ind Co Ltd | Ipパケット処理装置 |
US8051227B1 (en) * | 2010-05-10 | 2011-11-01 | Telefonaktiebolaget L M Ericsson (Publ) | Programmable queue structures for multiprocessors |
CN107220187A (zh) * | 2017-05-22 | 2017-09-29 | 北京星网锐捷网络技术有限公司 | 一种缓存管理方法、装置及现场可编程门阵列 |
CN113535633A (zh) * | 2020-04-17 | 2021-10-22 | 深圳市中兴微电子技术有限公司 | 一种片上缓存装置和读写方法 |
CN114584560A (zh) * | 2022-03-11 | 2022-06-03 | 西南科技大学 | 一种分片帧重组方法及装置 |
CN114844846A (zh) * | 2022-04-14 | 2022-08-02 | 南京大学 | 一种基于可编程交换机的多级缓存分布式键值存储系统 |
Non-Patent Citations (1)
Title |
---|
万兆网络中拥塞控制和排队调度实现与优化;钟友军等;《电子设计工程》;第25卷(第24期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN116418734A (zh) | 2023-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107257329B (zh) | 一种数据分段卸载发送方法 | |
CN106031107B (zh) | 用于管理分组传输的电路及方法 | |
US20060265558A1 (en) | Information processing method and system | |
CN102549552A (zh) | 用于处理流感知网络节点中的数据分组的方法 | |
US20110106518A1 (en) | System and method of network emlation for test of on-line server processing heavy traffic | |
AU2020213829B2 (en) | Handling an input/output store instruction | |
CN114201421A (zh) | 一种数据流处理方法、存储控制节点及可读存储介质 | |
US9436403B1 (en) | Memory controller with on-chip linked list memory | |
CN109407997A (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
CN108062235A (zh) | 数据处理方法及装置 | |
CN116418734B (zh) | 一种低时延的小包发送方法及装置 | |
CN103605833A (zh) | 一种对存储阵列系统的性能进行仿真的方法及装置 | |
CN117312201A (zh) | 一种数据传输方法、装置及加速器设备、主机和存储介质 | |
CN108833200A (zh) | 一种大数据文件自适应单向传输方法及装置 | |
CN115034376B (zh) | 神经网络处理器的批量标准化处理方法及存储介质 | |
CN116089477A (zh) | 分布式训练方法及系统 | |
US9338219B2 (en) | Direct push operations and gather operations | |
CN115904259A (zh) | 非易失性存储器标准NVMe指令的处理方法及相关装置 | |
CN105701060B (zh) | 基于fpga的高速实时数据记录系统 | |
CN117499351A (zh) | 报文转发装置及方法、通信芯片及网络设备 | |
CN105608212B (zh) | 一种确保MapReduce的数据输入分片包含完整记录的方法与系统 | |
CN118353776B (zh) | 通信方法、装置、设备、介质、计算机程序产品及系统 | |
US20060095535A1 (en) | System and method for movement of non-aligned data in network buffer model | |
US7475159B2 (en) | High-speed scheduler | |
CN112242962B (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 |