CN115396528A - 基于协议族的quic数据传输方法及装置 - Google Patents
基于协议族的quic数据传输方法及装置 Download PDFInfo
- Publication number
- CN115396528A CN115396528A CN202210988382.8A CN202210988382A CN115396528A CN 115396528 A CN115396528 A CN 115396528A CN 202210988382 A CN202210988382 A CN 202210988382A CN 115396528 A CN115396528 A CN 115396528A
- Authority
- CN
- China
- Prior art keywords
- quic
- data
- ring
- data processing
- receiving
- 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.)
- Pending
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 89
- 238000000034 method Methods 0.000 title claims abstract description 72
- 238000012545 processing Methods 0.000 claims abstract description 167
- 230000015654 memory Effects 0.000 claims abstract description 111
- 238000003860 storage Methods 0.000 claims description 10
- 239000000203 mixture Substances 0.000 claims description 3
- 239000000872 buffer Substances 0.000 abstract description 10
- 201000003426 X-linked dystonia-parkinsonism Diseases 0.000 description 25
- 230000008569 process Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/12—Protocol engines
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Communication Control (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请提供基于协议族的QUIC数据传输方法及装置,其中所述基于协议族的QUIC数据传输方法包括:创建QUIC数据处理线程、所述QUIC数据处理线程对应的协议族套接字和共享内存;根据所述共享内存和所述协议族套接字组成QUIC数据处理路径环;根据所述QUIC数据处理线程和所述QUIC数据处理路径环传输QUIC数据。本方法通过构建QUIC数据处理路径环,生成了处理QUIC数据的环形缓冲区,将QUIC协议栈和基于AF_XDP的网络数据发送结合,无需将QUIC数据发送至Linux内核网络协议栈,从而降低了终端的CPU负载,提升了数据传输效率。
Description
技术领域
本申请涉及互联网技术领域,特别涉及基于协议族的QUIC数据传输方法。本申请同时涉及基于协议族的QUIC数据传输装置,一种计算设备,以及一种计算机可读存储介质。
背景技术
随着计算机技术的发展,网络数据传送一直都备受学术界和工业界的关注,目前在互联网领域,以TCP协议为基础的网络数据传输协议架构一直处于主流地位,但是随着技术的演进和应用场景逐渐丰富,涌现出了一些新的网络传输协议,其中就包括QUIC协议,QUIC协议是一种基于UDP协议(用户数据包协议)的低时延的互联网传输层协议,是一种无连接的传输协议。
相比TCP而言,QUIC协议提升了网络传输的效率,并且满足了更多场景的应用需求,可以处理更多连接,实现更低的延时等,但是使用QUIC协议通信的服务器往往会带来更多的性能开销,会较大程度消耗机器算力资源,导致成本增加,因而降低了QUIC协议在更大规模的生产场景下的使用。
发明内容
有鉴于此,本申请实施例提供了基于协议族的QUIC数据传输方法。本申请同时涉及基于协议族的QUIC数据传输装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的资源开销大的问题。
根据本申请实施例的第一方面,提供了一种基于协议族的QUIC数据传输方法,包括:
创建QUIC数据处理线程、所述QUIC数据处理线程对应的协议族套接字和共享内存;
根据所述共享内存和所述协议族套接字组成QUIC数据处理路径环;
根据所述QUIC数据处理线程和所述QUIC数据处理路径环传输QUIC数据。
根据本申请实施例的第二方面,提供了一种基于协议族的QUIC数据传输装置,包括:
创建模块,被配置为创建QUIC数据处理线程、所述QUIC数据处理线程对应的协议族套接字和共享内存;
组成模块,被配置为根据所述共享内存和所述协议族套接字组成QUIC数据处理路径环;
传输模块,被配置为根据所述QUIC数据处理线程和所述QUIC数据处理路径环传输QUIC数据。
根据本申请实施例的第三方面,提供了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述计算机指令时实现所述基于协议族的QUIC数据传输方法的步骤。
根据本申请实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机指令,该计算机指令被处理器执行时实现所述基于协议族的QUIC数据传输方法的步骤。
本申请提供的基于协议族的QUIC数据传输方法,创建QUIC数据处理线程、所述QUIC数据处理线程对应的协议族套接字和共享内存;根据所述共享内存和所述协议族套接字组成QUIC数据处理路径环;根据所述QUIC数据处理线程和所述QUIC数据处理路径环传输QUIC数据。通过构建QUIC数据处理路径环,生成了处理QUIC数据的环形缓冲区,将QUIC协议栈和基于AF_XDP的网络数据发送结合,无需将QUIC数据发送至Linux内核网络协议栈,从而降低了终端的CPU负载,提升了数据传输效率。
附图说明
图1是本申请一实施例提供的一种基于协议族的QUIC数据传输方法的流程图;
图2是本申请一实施例提供的基于协议族的QUIC数据传输方法的架构示意图;
图3是本申请一实施例提供的一种应用于接收数据包场景的基于协议族的QUIC数据传输方法的处理流程图;
图4是本申请一实施例提供的一种应用于发送数据包场景的基于协议族的QUIC数据传输方法的处理流程图;
图5是本申请一实施例提供的一种基于协议族的QUIC数据传输装置的结构示意图;
图6是本申请一实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
在本申请一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请一个或多个实施例。在本申请一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本申请一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本申请一个或多个实施例涉及的名词术语进行解释。
UDP:用户数据包协议,一种无连接的传输协议。
QUIC:一种基于UDP的低时延的互联网传输层协议。
eBPF:伯克利包过滤器的扩展版本,是一种可以在Linux内核中运行用户编写的程序。
XDP:快速数据路径,是Linux网络处理流程中的一个eBPF钩子,能够挂载eBPF程序,能够在网络数据包到达网卡驱动层时对其进行处理。
AF_XDP:AF_XDP是在XDP的基础上,为了高性能数据数据处理而设计的一套协议族。
QUIC(Quick UDP Internet Connection)是一套基于UDP的传输协议,实现的是可靠的UDP传输,目的是保证可靠性的同时降低网络延迟,因为UDP是一个简单传输协议,基于UDP可以摆脱TCP传输确认、重传慢启动等因素,只需要一RTT(Round-Trip Time)的延迟就可以建立可靠安全的连接,QUIC是在UDP的基础上由客户端自由发挥,只要有服务器能对接就可以。
QUIC协议的实现是在用户层,用户空间和系统内核空间之间需要大量的交互,导致了系统的负载增加,另外,QUIC协议运行时大量的加密和可靠性交付等过程也增加了对CPU的使用,因此,当前大多数QUIC协议实现的服务器都存在CPU负载过高的缺陷。
在实际应用中,通过对QUIC协议的性能进行分析,发现QUIC存下以下问题:
1、密码相关算法的开销大:对于小数据包来说,RAS算法(非对称加密算法)的计算占比很高,对于大数据包来说,对称加解密也会占用系统15%左右的开销。
2、UDP收发包的开销大:特别是对于大文件下载来说,SendMsg占比很高,可能达到35%-40%以上。
3、协议栈开销大:主要受协议栈实现,如ACK的处理,MTU探测和发包大小,内存管理和拷贝等。
eBPF全称叫做“扩展伯克利包过滤器”,是一种可以在Linux内核中运行用户编写的程序,其中eBPF程序在内核代码中网络处理流程中的一个钩子就是XDP,也就是说,XDP可以在网络数据包在到达网卡驱动层时对其进行处理,AF_XDP则是基于XDP实现的一套新的协议族,可以实现快速高效的数据接收和发送。
基于此,在本申请中,提供了基于协议族的QUIC数据传输方法,本申请同时涉及基于协议族的QUIC数据传输装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
图1示出了根据本申请一实施例提供的一种基于协议族的QUIC数据传输方法的流程图,具体包括以下步骤:
步骤102:创建QUIC数据处理线程、所述QUIC数据处理线程对应的协议族套接字和共享内存。
其中,QUIC数据处理线程具体是指用于处理QUIC数据的线程,QUIC数据处理线程中通常会包括QUIC数据包接收模块、QUIC核心协议栈、QUIC数据包发送模块。QUIC数据包接收模块用于接收QUIC数据包,并将数据包发送至QUIC核心协议栈进行处理,当需要将QUIC数据包发送出去的时候,由QUIC核心协议栈生成UDP报文,由QUIC数据包发送模块发送出去。在实际应用中,QUIC数据处理线程的数量可以为一个、两个或多个。
相应的,每个QUIC数据线程均会对应一个协议族套接字(AF_XDP Socket),AF_XDPSocket由基本的Socket()系统调用创建,其包括有2个环形缓冲区(ring):RX ring(接收环)和TX ring(发送环)。Rx ring和TX ring分别负责套接字数据包的接收和发送,分别由setsockopts XDP_RX_RING和XDP_TX_RING注册和分配大小。
Rx ring和TX ring描述符指向内存中一个叫UMEM的数据缓存区,该数据缓存区即共享内存。Rx ring和TX ring可以共享相同的UMEM,这样数据包就不用在Rx ring和TXring之间复制。
共享内存(UMEM)由许多相同大小的块(chunks)组成,在ring中的描述符通过引用数据帧的地址来引用该数据帧,而这一地址就是整个UMEM内存域中的偏移量。UMEM中同样有两个ring,分别为Fill ring(填充环)和Completion ring(完成环),应用程序用Fillring发送地址到内核,以向其填充数据包,一旦数据包被接收,这些数据帧的引用会出现在RX ring中。而Completion ring包含着内核已经传输完成、并可以在此由用户空间使用的数据帧的地址。
本申请提供的基于协议族的QUIC数据传输方法,通过将AF_XDP技术应用于QUIC服务端中的数据传输过程,通过结合AF_XDP技术,达到提升QUIC数据包的传输效率,减少CPU负载。
在实际应用中,在部署QUIC数据处理线程的服务端通常采用的是多线程架构,即在一个服务端中会设置多个QUIC数据处理线程,由于是用于处理QUIC数据的传输任务,需要用到网卡,QUIC数据处理线程的设置与网卡相关。具体的,创建QUIC数据处理线程、所述QUIC数据处理线程对应的协议族套接字和共享内存,包括:
确定网卡中的网卡硬件队列数量;
基于所述网卡硬件队列数量创建对应数量的QUIC数据处理线程;
创建每个QUIC数据处理线程对应的协议族套接字和共享内存。
其中,网卡硬件队列是一种技术,用于解决网络IO服务质量的问题,随着网络IO的带宽不断提升,单核CPU不能完全处理满足网卡的需求,通过多队列网卡驱动的支持,将各个队列通过中断绑定到不同的核上,以满足网卡的需求。
在实际应用中,通常会根据网卡硬件队列的总数来确定QUIC数据处理线程的数量,例如网卡硬件队列数量有8个,则可以设置有8个QUIC数据处理线程;若网卡硬件队列数量有4个,则可以设置有4个QUIC数据处理线程。
在根据网卡硬件队列数量来创建对应数量的QUIC数据处理线程之后,针对每个QUIC数据处理线程对应创建共享内存和协议族套接字。以QUIC数据处理线程有2个为例,分别为QUIC线程1和QUIC线程2,为QUIC线程1创建对应的UMEM1和AF_XDP套接字1,为QUIC线程2创建对应的UMEM2和AF_XDP套接字2。
需要注意的是,由于UMEM是共享内存,在实际应用中,可以是每个QUIC线程可以使用相同的UMEM,也可以是不同的QUIC线程之间使用不同的UMEM,也可以几个QUIC线程使用一个相同的UMEM,共享内存数量的在本申请中不做限制,以实际引用为准。在本申请中,需要保证QUIC数据处理线程和协议族套接字之间是一一对应的。
在本申请提供的一具体实施方式中,以网卡硬件队列数量为8个为例,则创建8个QUIC数据处理线程,为每个QUIC数据处理线程创建对应的协议族套接字,共计8个AF_XDP,同时划分8个共享内存,为每个QUIC数据处理线程分配一个共享内存,共计8个UMEM。
在本申请提供的另一具体实施方式中,以网卡硬件队列数量为8个为例,则创建8个QUIC数据处理线程,为每个QUIC数据处理线程创建对应的协议族套接字,共计8个AF_XDP,同时划分1个共享内存,8个QUIC数据处理线程共享这1个UMEM,共计1个UMEM。
在本申请提供的又一具体实施方式中,以网卡硬件队列数量为8个为例,则创建8个QUIC数据处理线程,为每个QUIC数据处理线程创建对应的协议族套接字,共计8个AF_XDP,划分2个共享内存,每4个QUIC数据处理线程共享1个UMEM,共计2个UMEM。
步骤104:根据所述共享内存和所述协议族套接字组成QUIC数据处理路径环。
其中,QUIC数据处理路径环具体是指用于处理QUIC数据的ring,在实际应用中,QUIC数据的传输处理包括两类,一类是接收QUIC数据,一类是发送QUIC数据。接收和发送是两个不同的QUIC数据处理路径。
具体的,根据所述共享内存和所述协议族套接字组成QUIC数据处理路径环,包括:
获取所述共享内存中的填充环和完成环,获取所述协议族套接字中的接收环和发送环,其中,所述填充环用于接收QUIC接收数据期望被保存在所述共享内存中的位置偏移信息,所述完成环用于接收QUIC发送数据发送成功后在所述共享内存中的位置偏移信息,所述接收环用于接收QUIC接收数据在所述共享内存中的位置偏移信息,所述发送环用于接收QUIC发送数据在所述共享内存中的位置偏移信息;
根据所述填充环和所述接收环组成QUIC数据接收路径环,根据所述完成环和所述发送环组成QUIC数据发送路径环。
其中,共享内存中的填充环和完成环具体是指UMEM中的为Fill ring(填充环)和Completion ring(完成环);协议族套接字中的接收环和发送环具体是指AF_XDP Socket中的RX ring(接收环)和TX ring(发送环)。填充环、完成环、接收环和发送环均为环形缓冲区,是一种用于表示一个固定尺寸、头尾相连的缓冲区的数据结构,适合缓存数据流。环形缓冲区的特性是:当一个数据元素被用掉后,其余数据元素不需要移动其存储位置。
所述填充环用于接收QUIC接收数据期望被保存在所述共享内存中的位置偏移信息,所述完成环用于接收QUIC发送数据发送成功后在所述共享内存中的位置偏移信息,所述接收环用于接收QUIC接收数据在所述共享内存中的位置偏移信息,所述发送环用于接收QUIC发送数据在所述共享内存中的位置偏移信息。
在实际应用中,Fill ring(填充环)和RX ring(接收环)组成了用于接收QUIC数据的QUIC数据接收路径环;Completion ring(完成环)和TX ring(发送环)组成了用于发送QUIC数据的QUIC数据发送路径环。
QUIC数据接收路径环用于接收QUIC数据,当有QUIC数据抵达时,可以通过该路径将QUIC数据接收至QUIC核心协议栈中。
QUIC数据发送路径环用于发送QUIC数据,当有QUIC数据通过QUIC核心协议栈生成之后,通过该路径将QUIC数据发送至网络中。
步骤106:根据所述QUIC数据处理线程和所述QUIC数据处理路径环传输QUIC数据。
在构建了上述的QUIC数据处理路径之后,搭建完成了本申请实施例提供的架构,通过QUIC数据处理线程和QUIC数据处理路径环即可对QUIC数据进行传输。
参见图2,图2示出本申请一实施例提供的基于协议族的QUIC数据传输方法的架构示意图,该示意图以2个QUIC数据处理线程为例进行解释说明。
在本实施方式中,获取网卡中的网卡队列数量为2,则为每个网卡队列创建一个对应的QUIC数据处理线程,分别为线程1和线程2,每个线程中均包括QUIC数据包接收模块、QUIC核心协议栈、QUIC数据包发送模块。同时为每个线程创建一个对应的UMEM以及XDPSocket。在XDP Socket中设置有RX ring和TX ring,在UMEM中设置有Fill ring和Completion ring。
以线程1为例,Fill ring(填充环)和RX ring(接收环)组成了用于接收QUIC数据的QUIC数据接收路径环,其中,所述QUIC数据接收路径环为QUIC数据的接收规则;Completion ring(完成环)和TX ring(发送环)组成了用于发送QUIC数据的QUIC数据发送路径环,其中,所述QUIC数据接收路径环为QUIC数据的发送规则。
在生成了QUIC数据接收路径环和QUIC数据发送路径环之后,即可根据这两个路径环来分别接收QUIC数据和将QUIC数据发送出去。
下面分别通过接收QUIC数据和发送QUIC数据两个方面来对根据所述QUIC数据处理线程和所述QUIC数据处理路径环传输QUIC数据做进一步解释说明。
下面将通过实施例1对接收QUIC数据时,如何根据所述QUIC数据处理线程和所述QUIC数据接收路径环接收QUIC数据进行解释说明。
需要注意的是,在本申请提供的实施例中,需要对QUIC数据进行处理,QUIC数据具体是指QUIC服务所需要的数据,在实际应用中,终端接收到的数据的类型有很多,本实施例所需要针对的数据是QUIC数据,因此需要预先将QUIC数据筛选出来。
基于此,在根据所述QUIC数据处理线程和所述QUIC数据接收路径环接收QUIC数据之前,所述方法还包括:
接收待处理数据;
判断所述待处理数据是否为QUIC接收数据;
若是,则将所述QUIC接收数据重定向至所述QUIC数据接收路径环;
若否,则传输所述待处理数据至内核协议栈。
其中,待处理数据具体是指终端接收到的数据,在实际应用中,所有的数据均会由网卡接收到,然后分配到网卡队列中,XDP程序是一个eBPF钩子,可以在网卡驱动层接收到待处理数据,在网卡驱动还未将待处理数据分配到内核协议栈之前获取到待处理数据,并判断待处理数据是否为QUIC接收数据,其中,QUIC接收数据就是指上述QUIC服务所需要的数据,经过判断在确定了待处理数据为QUIC接收数据的情况下,则将QUIC接收数据重新定向至QUIC数据接收环路径中,执行本申请提供方法的数据传输流程中;若确定待处理数据不是QUIC服务所需要的数据时,则将该待处理数据正常的传输至CPU内核协议栈中进行处理,在此就不在赘述。
下面,将对如何确定待处理数据是否是QUIC数据进行进一步解释说明。
具体的,判断所述待处理数据是否为QUIC接收数据,包括:
解析所述待处理数据,获得所述待处理数据中携带的数据服务端口;
判断所述数据服务端口是否是QUIC数据处理线程对应的服务端口。
在实际应用中,每个从网络中抵达终端网卡中的待处理数据中均会包括数据头信息,在数据头信息中会携带有该待处理数据对应的服务端口,在终端中会部署有多个数据服务端口,例如3306端口、1433端口、1521端口、80端口等等,每个端口对应不同的业务服务,同样的,QUIC服务在终端中也会有相应的服务端口,例如在本申请中确定QUIC服务对应的QUIC数据处理线程所使用的服务端口为A端口,则所有发往A端口的数据均为QUIC接收数据。
因此,在获得待处理数据之后,需要对待处理数据的数据头进行解析,获得待处理数据中携带的数据服务端口,该数据服务端口具体是指该待处理数据需要发送到终端中的哪个服务端口,在获得数据服务端口之后,判断该数据服务端口是否与QUIC数据处理线程对应的服务端口匹配即可,若数据服务端口与QUIC数据处理线程对应的服务端口匹配,则说明该待处理数据是QUIC接收数据,反之,该待处理数据就不是QUIC接收数据。
在本申请提供的具体实施方式中,以QUIC服务对应的服务端口为A端口为例,若待处理数据中携带的数据服务端口为A端口,则说明该待处理数据为QUIC接收数据;若待处理数据中携带的数据服务端口为B端口,则说明该待处理数据不是QUIC接收数据。
在确定了哪些数据是QUIC接收数据之后,即用本申请提供的方法来接收QUIC接收数据,具体的,根据所述QUIC数据处理线程和所述QUIC数据接收路径环接收QUIC数据,包括R1-R4:
R1、基于QUIC数据处理线程将第一地址描述符填充至所述填充环,其中,所述第一地址描述符为所述共享内存的地址偏移信息。
在确定了QUIC接收数据之后,需要将QUIC接收数据重定向至QUIC数据接收路径环中。具体的,需要由QUIC数据处理线程中的QUIC数据包接收模块将要收包的第一地址描述符放入到UMEM中的Fill ring中,该第一地址描述符具体为UMEM中的数据帧的地址偏移信息。该第一地址描述符具体为整个UMEM内存域中的偏移量,将第一地址描述符用于指示系统将QUIC接收数据存入到UMEM中的哪个数据帧中。在此过程中,QUIC线程是Fill ring的生产者,在Fill ring中保存的是QUIC线程期望QUIC接收数据被保存的位置信息。
在本实施例中,QUIC数据处理线程中的QUIC数据包接收模块预先将要接收QUIC接收数据的第一地址描述符a放入Fill ring中。
R2、根据所述第一地址描述符将所述QUIC接收数据写入到共享内存。
当将QUIC接收数据重定向至所述QUIC数据接收路径环中,具体是指需要将QUIC接收数据重定向至预先分配的UMEM中,哪具体是要写入到UMEM中的什么位置呢?就需要根据第一地址描述符来确定,即根据Fill ring中的第一地址描述符将QUIC接收数据写入到UMEM中的数据帧中。在实际应用中,是由内核驱动程序消费Fill ring(填充环),获取到Fill ring中的第一地址描述符,收取QUIC数据,并将QUIC数据根据该第一地址描述符写入到UMEM中。在此过程中,内核驱动程序是Fill ring的消费者。
在本实施例中,内核驱动程序根据第一地址描述符a,将QUIC接收数据写入到共享内存中第一地址描述符a对应的数据帧中。
R3、在所述QUIC接收数据写入完成的情况下,将所述QUIC接收数据在所述共享内存中的数据内存地址写入到所述接收环。
当QUIC接收数据写入共享内存的操作完成之后,对应的数据帧的引用就会写入到RX ring中,在RX ring中保存了QUIC接收数据在共享内存中的实际数据内存地址。需要注意的是,QUIC接收数据占据的大小可能会占据UMEM中的一个或多个数据帧,在RX ring中均会对其进行记录。在实际应用中,这一步的操作也是由内核驱动程序执行的,即内核驱动程序在将QUIC数据完全写入到UMEM中之后,会将UMEM中的数据内存地址写入到RX ring中,以供QUIC线程读取该数据内存地址。需要注意的是,当内核驱动程序将QUIC数据写入到UMEM中并完成之后,会将QUIC数据在UMEM中的数据内存地址写入到RX ring中,同时会将Fillring中的第一地址描述符删除。在此过程中,内核驱动程序是RX ring的生产者。
在本实施例中,QUIC接收数据的起始位置为a,其占用了4个数据帧,结束位置为b,内核驱动程序在QUIC数据写入到UMEM中之后,将QUIC接收数据对应的数据内存地址a-b写入到RX ring中。用于确定QUIC接收数据在UMEM中的实际位置。
R4、基于所述QUIC数据处理线程读取所述接收环中的数据内存地址,并根据所述数据内存地址从所述共享内存中读取所述QUIC接收数据。
当内核驱动程序将数据内存地址写入到RX ring中后,QUIC数据处理线程即可根据该数据内存地址从共享内存中读取QUIC接收数据,具体的QUIC数据处理线程中的QUIC数据包接收模块通过libbpf提供的调用方法读取RX ring中的数据内存地址。并根据该数据内存地址从共享内存中获取QUIC接收数据。需要注意的是,在此时QUIC数据处理线程是RXring的消费者,当QUIC数据处理线程从RX ring中读取到该数据内存地址之后,该数据内存地址就会从RX ring中删除。QUIC数据处理线程在接收到QUIC接收数据之后,按照以太网层、IP层、UDP层对QUIC接收数据进行解封装,并传递到QUIC核心协议栈中做进一步处理。在此过程中,QUIC数据处理线程是RX ring的消费者。
至此,QUIC接收数据的处理流程完成。通过本申请提供的方法,当QUIC接收数据抵达终端后,将QUIC数据重定向至QUIC数据接收路径环进行数据接收处理,无需将QUIC接收数据经过Linux内核网络协议栈,有效降低了终端的CPU负载,提升了数据传输效率。
下面将通过实施例2对发送QUIC数据时,如何根据所述QUIC数据处理线程和所述QUIC数据发送路径环发送QUIC数据进行解释说明。
具体的,根据所述QUIC数据处理线程和所述QUIC数据发送路径环发送QUIC数据,包括S1-S4:
S1、基于所述QUIC数据处理线程生成QUIC发送数据。
当QUIC服务需要发送QUIC数据时,需要在QUIC数据处理线程中生成QUIC发送数据,进一步的,由QUIC核心协议栈生成QUIC数据,并经过UDP层、IP层、以太网层对QUIC数据进行封装,生成QUIC发送数据。
S2、将QUIC发送数据写入至所述共享内存,并将QUIC发送数据在所述共享内存中的第二地址描述符写入到所述发送环。
QUIC数据处理线程将QUIC发送数据写入到UMEM中,在写入完成之后,将QUIC发送数据在UMEM中的第二地址描述符写入到TX ring中。在此过程中,QUIC数据处理线程是TXring的生产者。第二地址描述符具体是指QUIC发送数据在共享内存中的位置偏移信息。
S3、读取所述发送环中的第二地址描述符,根据所述第二地址描述符读取并发送所述QUIC发送数据。
内核驱动程序读取TX ring中的第二地址描述符,调用sendto通知网卡驱动根据地址描述符读取QUIC发送数据,网卡驱动根据地址描述符在UMEM中读取到QUIC发送数据包,并将QUIC发送数据发送到网络中。在此过程中,内核驱动程序是TX ring的消费者。
S4、在所述QUIC发送数据发送完成的情况下,将所述第二地址描述符写入至所述完成环。
内核驱动程序在将QUIC发送数据全部发送至网络中之后,完成了QUIC发送数据的发送,需要把第二地址描述符回写到Completion ring中,用于标识该QUIC发送数据已经发送完成,在此过程中,内核驱动程序是Completion ring的生产者。
之后,QUIC数据处理线程可以读取Completion ring中的地址描述符,可以知晓QUIC发送数据已经发送完成,在此过程中,QUIC数据处理线程是Completion ring的消费者。
至此,QUIC发送数据的处理流程完成。通过本申请提供的方法,在发送数据时,QUIC协议按照协议栈层次结构,封装生成QUIC发送数据包,与内核驱动程序共同协作,将QUIC发送数据包发送至网卡驱动,并通过网卡将QUIC发送数据发送到网络中,同样无需将QUIC发送数据经过Linux内核网络协议栈,有效降低了终端的CPU负载,提升了数据传输效率。
本申请实施例提供的基于协议族的QUIC数据传输方法,创建QUIC数据处理线程、所述QUIC数据处理线程对应的协议族套接字和共享内存;根据所述共享内存和所述协议族套接字组成QUIC数据处理路径环;根据所述QUIC数据处理线程和所述QUIC数据处理路径环传输QUIC数据。通过构建QUIC数据处理路径环,生成了处理QUIC数据的环形缓冲区,将QUIC协议栈和基于AF_XDP的网络数据发送结合,无需将QUIC数据发送至Linux内核网络协议栈,从而降低了终端的CPU负载,提升了数据传输效率。
下述结合附图3,以本申请提供的基于协议族的QUIC数据传输方法在接收数据包场景下的应用为例,对所述基于协议族的QUIC数据传输方法进行进一步说明。其中,图3示出了本申请一实施例提供的一种应用于接收数据包场景的基于协议族的QUIC数据传输方法的处理流程图,具体包括以下步骤:
步骤302:接收待处理数据。
在本实施例中,网卡队列接收到待处理数据,由XDP程序在网卡驱动还未将待处理数据分配到内核协议栈之前获取到待处理数据。
步骤304:解析所述待处理数据,获得所述待处理数据中携带的数据服务端口。
在本实施例中,内核驱动程序解析该待处理数据,获得待处理数据中携带的数据服务端口为443。
步骤306:判断所述数据服务端口是否是QUIC服务对应的服务端口,若否,则执行步骤308,若是,则执行步骤310。
在本实施例中,内核驱动程序判断443端口是否是QUIC服务对应的服务端口,若是,则执行步骤310的操作,若否,则执行步骤308的操作。
步骤308:将待处理数据传递给内核协议栈。
在本实施例中,若待处理数据不是QUIC服务对应的数据,则将该数据通过常规处理,传递至内核协议栈。
步骤310:将待处理数据重定向至QUIC数据接收路径环。
在本实施例中,若待处理数据是QUIC服务对应的数据,则内核驱动程序将该待处理数据重新定向至预先建立的QUIC数据接收路径环。
步骤312:控制RX ring和Fill ring收取待处理数据,并将待处理数据存入UMEM中。
在本实施例中,QUIC线程中的数据包接收模块预先将用于接收待处理数据的UMEM中收包地址存入Fill ring中,内核驱动程序通过poll等系统调用通知网卡驱动进行收取待处理数据的操作,内核驱动程序将待处理数据存入到UMEM中的收包地址中。当待处理数据完全收入到UMEM中之后,内核驱动程序会将该待处理数据的内存地址写入到RX ring中。
步骤314:QUIC数据包接收模块从UMEM中读取待处理数据。
在本实施例中,数据包接收模块通过libbpf提供的调用方法读取RX ring中的内存地址,将待处理数据读取到QUIC线程中。
步骤316:解封装该待处理数据,并将解封装后的数据传递给QUIC核心协议栈。
在本实施例中,数据包接收模块按照以太网层、IP层、UDP层对待处理数据进行解封装,并将解封装之后获得的数据传递到QUIC核心协议栈中做进一步处理。
通过本申请提供的方法,当QUIC接收数据抵达终端后,将QUIC数据重定向至QUIC数据接收路径环进行数据接收处理,无需将QUIC接收数据经过Linux内核网络协议栈,有效降低了终端的CPU负载,提升了数据传输效率。
下述结合附图4,以本申请提供的基于协议族的QUIC数据传输方法在发送数据包场景下的应用为例,对所述基于协议族的QUIC数据传输方法进行进一步说明。其中,图4示出了本申请一实施例提供的一种应用于发送数据包场景的基于协议族的QUIC数据传输方法的处理流程图,具体包括以下步骤:
步骤402:QUIC核心协议栈生成QUIC数据包。
在本实施例中,当QUIC服务想要发送数据时,通过QUIC核心协议栈生成QUIC数据包。
步骤404:将QUIC数据包进行封装,生成待发送数据。
在本实施例中,QUIC服务将QUIC数据包通过UDP层、IP层、以太网层进行数据封装,获得待发送数据。
步骤406:将待发送数据写入UMEM中,并将待发送数据在UMEM中的地址描述符写入到TX ring。
在本实施例中,QUIC线程中的数据包发送模块将待发送数据写入到UMEM中,在写入完成之后,将待发送数据在UMEM中的地址描述符写入到TX ring中。
步骤408:读取TX ring中的地址描述符,并根据该地址描述符将待发送数据发布至网络。
在本实施例中,内核驱动程序读取TX ring中的地址描述符,调用sendto通知网卡驱动根据该地址描述符读取待发送数据,网卡驱动根据该地址描述符在UMEM中读取到待发送数据,并将待发送数据发送至网络中。
步骤410:在待发送数据发送完成后,将该地址描述符写入到Completion ring。
在本实施例中,内核驱动程序在检测到待发送数据已经发送完成之后,将该地址描述符写入到Completion ring中,用于标识该待发送数据已经发送完成。QUIC数据处理线程在读取到Completion ring中存在该地址描述符的情况下,可以得知该待发送数据已经发送成功。
通过本申请提供的方法,在发送数据时,QUIC协议按照协议栈层次结构,封装生成QUIC发送数据包,与内核驱动程序共同协作,将QUIC发送数据包发送至网卡驱动,并通过网卡将QUIC发送数据发送到网络中,同样无需将QUIC发送数据经过Linux内核网络协议栈,有效降低了终端的CPU负载,提升了数据传输效率。
与上述基于协议族的QUIC数据传输方法实施例相对应,本申请还提供了基于协议族的QUIC数据传输装置实施例,图5示出了本申请一实施例提供的一种基于协议族的QUIC数据传输装置的结构示意图。如图5所示,该装置包括:
创建模块502,被配置为创建QUIC数据处理线程、所述QUIC数据处理线程对应的协议族套接字和共享内存;
组成模块504,被配置为根据所述共享内存和所述协议族套接字组成QUIC数据处理路径环;
传输模块506,被配置为根据所述QUIC数据处理线程和所述QUIC数据处理路径环传输QUIC数据。
可选的,所述创建模块502,进一步被配置为:
确定网卡中的网卡硬件队列数量;
基于所述网卡硬件队列数量创建对应数量的QUIC数据处理线程;
创建每个QUIC数据处理线程对应的协议族套接字和共享内存。
可选的,所述组成模块504,进一步被配置为:
获取所述共享内存中的填充环和完成环,获取所述协议族套接字中的接收环和发送环,其中,所述填充环用于接收QUIC接收数据期望被保存在所述共享内存中的位置偏移信息,所述完成环用于接收QUIC发送数据发送成功后在所述共享内存中的位置偏移信息,所述接收环用于接收QUIC接收数据在所述共享内存中的位置偏移信息,所述发送环用于接收QUIC发送数据在所述共享内存中的位置偏移信息;
根据所述填充环和所述接收环组成QUIC数据接收路径环,根据所述完成环和所述发送环组成QUIC数据发送路径环。
可选的,所述传输模块506,包括:
接收单元,被配置为根据所述QUIC数据处理线程和所述QUIC数据接收路径环接收QUIC数据,其中,所述QUIC数据接收路径环为QUIC数据的接收规则;
发送单元,被配置为根据所述QUIC数据处理线程和所述QUIC数据发送路径环发送QUIC数据,其中,所述QUIC数据接收路径环为QUIC数据的发送规则。
可选的,所述接收单元,还被配置为:
接收待处理数据;
判断所述待处理数据是否为QUIC接收数据;
若是,则将所述QUIC接收数据重定向至所述QUIC数据接收路径环;
若否,则传输所述待处理数据至内核协议栈。
可选的,所述接收单元,进一步被配置为:
解析所述待处理数据,获得所述待处理数据中携带的数据服务端口;
判断所述数据服务端口是否是QUIC数据处理线程对应的服务端口。
可选的,所述接收单元,进一步被配置为:
基于QUIC数据处理线程将第一地址描述符填充至所述填充环,其中,所述第一地址描述符为所述共享内存的地址偏移信息;
根据所述第一地址描述符将所述QUIC接收数据写入到共享内存;
在所述QUIC接收数据写入完成的情况下,将所述QUIC接收数据在所述共享内存中的数据内存地址写入到所述接收环;
基于所述QUIC数据处理线程读取所述接收环中的数据内存地址,并根据所述数据内存地址从所述共享内存中读取所述QUIC接收数据。
可选的,所述发送单元,进一步被配置为:
基于所述QUIC数据处理线程生成QUIC发送数据;
将QUIC发送数据写入至所述共享内存,并将QUIC发送数据在所述共享内存中的第二地址描述符写入到所述发送环;
读取所述发送环中的第二地址描述符,根据所述第二地址描述符读取并发送所述QUIC发送数据;
在所述QUIC发送数据发送完成的情况下,将所述第二地址描述符写入至所述完成环。
本申请实施例提供的基于协议族的QUIC数据传输装置,创建QUIC数据处理线程、所述QUIC数据处理线程对应的协议族套接字和共享内存;根据所述共享内存和所述协议族套接字组成QUIC数据处理路径环;根据所述QUIC数据处理线程和所述QUIC数据处理路径环传输QUIC数据。通过构建QUIC数据处理路径环,生成了处理QUIC数据的环形缓冲区,将QUIC协议栈和基于AF_XDP的网络数据发送结合,无需将QUIC数据发送至Linux内核网络协议栈,从而降低了终端的CPU负载,提升了数据传输效率。
上述为本实施例的一种基于协议族的QUIC数据传输装置的示意性方案。需要说明的是,该基于协议族的QUIC数据传输装置的技术方案与上述的基于协议族的QUIC数据传输方法的技术方案属于同一构思,基于协议族的QUIC数据传输装置的技术方案未详细描述的细节内容,均可以参见上述基于协议族的QUIC数据传输方法的技术方案的描述。
图6示出了根据本申请一实施例提供的一种计算设备600的结构框图。该计算设备600的部件包括但不限于存储器610和处理器620。处理器620与存储器610通过总线630相连接,数据库650用于保存数据。
计算设备600还包括接入设备640,接入设备640使得计算设备600能够经由一个或多个网络660通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备640可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本申请的一个实施例中,计算设备600的上述部件以及图6中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图6所示的计算设备结构框图仅仅是出于示例的目的,而不是对本申请范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备600可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备600还可以是移动式或静止式的服务器。
其中,处理器620执行所述计算机指令时实现所述的基于协议族的QUIC数据传输方法的步骤。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的基于协议族的QUIC数据传输方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述基于协议族的QUIC数据传输方法的技术方案的描述。
本申请一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该计算机指令被处理器执行时实现如前所述基于协议族的QUIC数据传输方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的基于协议族的QUIC数据传输方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述基于协议族的QUIC数据传输方法的技术方案的描述。
上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本申请优选实施例只是用于帮助阐述本申请。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本申请的内容,可作很多的修改和变化。本申请选取并具体描述这些实施例,是为了更好地解释本申请的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本申请。本申请仅受权利要求书及其全部范围和等效物的限制。
Claims (11)
1.一种基于协议族的QUIC数据传输方法,其特征在于,包括:
创建QUIC数据处理线程、所述QUIC数据处理线程对应的协议族套接字和共享内存;
根据所述共享内存和所述协议族套接字组成QUIC数据处理路径环;
根据所述QUIC数据处理线程和所述QUIC数据处理路径环传输QUIC数据。
2.如权利要求1所述的方法,其特征在于,创建QUIC数据处理线程、所述QUIC数据处理线程对应的协议族套接字和共享内存,包括:
确定网卡中的网卡硬件队列数量;
基于所述网卡硬件队列数量创建对应数量的QUIC数据处理线程;
创建每个QUIC数据处理线程对应的协议族套接字和共享内存。
3.如权利要求1所述的方法,其特征在于,根据所述共享内存和所述协议族套接字组成QUIC数据处理路径环,包括:
获取所述共享内存中的填充环和完成环,获取所述协议族套接字中的接收环和发送环,其中,所述填充环用于接收QUIC接收数据期望被保存在所述共享内存中的位置偏移信息,所述完成环用于接收QUIC发送数据发送成功后在所述共享内存中的位置偏移信息,所述接收环用于接收QUIC接收数据在所述共享内存中的位置偏移信息,所述发送环用于接收QUIC发送数据在所述共享内存中的位置偏移信息;
根据所述填充环和所述接收环组成QUIC数据接收路径环,根据所述完成环和所述发送环组成QUIC数据发送路径环。
4.如权利要求3所述的方法,其特征在于,根据所述QUIC数据处理线程和所述QUIC数据处理路径环传输QUIC数据,包括:
根据所述QUIC数据处理线程和所述QUIC数据接收路径环接收QUIC数据,其中,所述QUIC数据接收路径环为QUIC数据的接收规则;
根据所述QUIC数据处理线程和所述QUIC数据发送路径环发送QUIC数据,其中,所述QUIC数据接收路径环为QUIC数据的发送规则。
5.如权利要求4所述的方法,其特征在于,在根据所述QUIC数据处理线程和所述QUIC数据接收路径环接收QUIC数据之前,所述方法还包括:
接收待处理数据;
判断所述待处理数据是否为QUIC接收数据;
若是,则将所述QUIC接收数据重定向至所述QUIC数据接收路径环;
若否,则传输所述待处理数据至内核协议栈。
6.如权利要求5所述的方法,其特征在于,判断所述待处理数据是否为QUIC接收数据,包括:
解析所述待处理数据,获得所述待处理数据中携带的数据服务端口;
判断所述数据服务端口是否是QUIC数据处理线程对应的服务端口。
7.如权利要求4所述的方法,其特征在于,根据所述QUIC数据处理线程和所述QUIC数据接收路径环接收QUIC数据,包括:
基于QUIC数据处理线程将第一地址描述符填充至所述填充环,其中,所述第一地址描述符为所述共享内存的地址偏移信息;
根据所述第一地址描述符将所述QUIC接收数据写入到共享内存;
在所述QUIC接收数据写入完成的情况下,将所述QUIC接收数据在所述共享内存中的数据内存地址写入到所述接收环;
基于所述QUIC数据处理线程读取所述接收环中的数据内存地址,并根据所述数据内存地址从所述共享内存中读取所述QUIC接收数据。
8.如权利要求4所述的方法,其特征在于,根据所述QUIC数据处理线程和所述QUIC数据发送路径环发送QUIC数据,包括:
基于所述QUIC数据处理线程生成QUIC发送数据;
将QUIC发送数据写入至所述共享内存,并将QUIC发送数据在所述共享内存中的第二地址描述符写入到所述发送环;
读取所述发送环中的第二地址描述符,根据所述第二地址描述符读取并发送所述QUIC发送数据;
在所述QUIC发送数据发送完成的情况下,将所述第二地址描述符写入至所述完成环。
9.一种基于协议族的QUIC数据传输装置,其特征在于,包括:
创建模块,被配置为创建QUIC数据处理线程、所述QUIC数据处理线程对应的协议族套接字和共享内存;
组成模块,被配置为根据所述共享内存和所述协议族套接字组成QUIC数据处理路径环;
传输模块,被配置为根据所述QUIC数据处理线程和所述QUIC数据处理路径环传输QUIC数据。
10.一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,其特征在于,所述处理器执行所述计算机指令时实现权利要求1-8任意一项所述方法的步骤。
11.一种计算机可读存储介质,其存储有计算机指令,其特征在于,该计算机指令被处理器执行时实现权利要求1-8任意一项所述方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210988382.8A CN115396528A (zh) | 2022-08-17 | 2022-08-17 | 基于协议族的quic数据传输方法及装置 |
PCT/CN2023/109099 WO2024037296A1 (zh) | 2022-08-17 | 2023-07-25 | 基于协议族的quic数据传输方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210988382.8A CN115396528A (zh) | 2022-08-17 | 2022-08-17 | 基于协议族的quic数据传输方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115396528A true CN115396528A (zh) | 2022-11-25 |
Family
ID=84121194
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210988382.8A Pending CN115396528A (zh) | 2022-08-17 | 2022-08-17 | 基于协议族的quic数据传输方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115396528A (zh) |
WO (1) | WO2024037296A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116016295A (zh) * | 2022-12-14 | 2023-04-25 | 鹏城实验室 | 以太网性能监控方法、系统、工控设备以及存储介质 |
CN116996602A (zh) * | 2023-09-25 | 2023-11-03 | 苏州元脑智能科技有限公司 | 数据包的处理方法及装置、存储介质、电子设备 |
WO2024037296A1 (zh) * | 2022-08-17 | 2024-02-22 | 上海哔哩哔哩科技有限公司 | 基于协议族的quic数据传输方法及装置 |
CN117938985A (zh) * | 2024-03-21 | 2024-04-26 | 新华三技术有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190116123A1 (en) * | 2017-10-16 | 2019-04-18 | Verizon Digital Media Services Inc. | Load Balancing of Connectionless Traffic |
US20190199835A1 (en) * | 2018-11-28 | 2019-06-27 | Manasi Deval | Quick user datagram protocol (udp) internet connections (quic) packet offloading |
CN111885093A (zh) * | 2020-09-27 | 2020-11-03 | 腾讯科技(深圳)有限公司 | 事件请求的传输方法和装置、存储介质及电子设备 |
CN114095587A (zh) * | 2021-11-24 | 2022-02-25 | 恒安嘉新(北京)科技股份公司 | 一种客户端、报文发送、接收方法、设备及存储介质 |
CN114500633A (zh) * | 2022-01-27 | 2022-05-13 | 北京百度网讯科技有限公司 | 数据转发方法、相关装置、程序产品及数据传输系统 |
CN114518969A (zh) * | 2022-02-18 | 2022-05-20 | 杭州朗和科技有限公司 | 进程间通信方法、系统、存储介质和计算机设备 |
US20220247696A1 (en) * | 2021-02-03 | 2022-08-04 | Intel Corporation | Reliable transport offloaded to network devices |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111490963B (zh) * | 2019-01-25 | 2022-07-29 | 上海哔哩哔哩科技有限公司 | 基于quic协议栈的数据处理方法、系统、设备及存储介质 |
CN115396528A (zh) * | 2022-08-17 | 2022-11-25 | 上海哔哩哔哩科技有限公司 | 基于协议族的quic数据传输方法及装置 |
-
2022
- 2022-08-17 CN CN202210988382.8A patent/CN115396528A/zh active Pending
-
2023
- 2023-07-25 WO PCT/CN2023/109099 patent/WO2024037296A1/zh unknown
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190116123A1 (en) * | 2017-10-16 | 2019-04-18 | Verizon Digital Media Services Inc. | Load Balancing of Connectionless Traffic |
US20190199835A1 (en) * | 2018-11-28 | 2019-06-27 | Manasi Deval | Quick user datagram protocol (udp) internet connections (quic) packet offloading |
CN111885093A (zh) * | 2020-09-27 | 2020-11-03 | 腾讯科技(深圳)有限公司 | 事件请求的传输方法和装置、存储介质及电子设备 |
US20220247696A1 (en) * | 2021-02-03 | 2022-08-04 | Intel Corporation | Reliable transport offloaded to network devices |
CN114095587A (zh) * | 2021-11-24 | 2022-02-25 | 恒安嘉新(北京)科技股份公司 | 一种客户端、报文发送、接收方法、设备及存储介质 |
CN114500633A (zh) * | 2022-01-27 | 2022-05-13 | 北京百度网讯科技有限公司 | 数据转发方法、相关装置、程序产品及数据传输系统 |
CN114518969A (zh) * | 2022-02-18 | 2022-05-20 | 杭州朗和科技有限公司 | 进程间通信方法、系统、存储介质和计算机设备 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024037296A1 (zh) * | 2022-08-17 | 2024-02-22 | 上海哔哩哔哩科技有限公司 | 基于协议族的quic数据传输方法及装置 |
CN116016295A (zh) * | 2022-12-14 | 2023-04-25 | 鹏城实验室 | 以太网性能监控方法、系统、工控设备以及存储介质 |
CN116016295B (zh) * | 2022-12-14 | 2024-04-09 | 鹏城实验室 | 以太网性能监控方法、系统、工控设备以及存储介质 |
CN116996602A (zh) * | 2023-09-25 | 2023-11-03 | 苏州元脑智能科技有限公司 | 数据包的处理方法及装置、存储介质、电子设备 |
CN116996602B (zh) * | 2023-09-25 | 2024-01-26 | 苏州元脑智能科技有限公司 | 数据包的处理方法及装置、存储介质、电子设备 |
CN117938985A (zh) * | 2024-03-21 | 2024-04-26 | 新华三技术有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2024037296A1 (zh) | 2024-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115396528A (zh) | 基于协议族的quic数据传输方法及装置 | |
CN108494817B (zh) | 数据传输方法、相关装置及系统 | |
US20220294885A1 (en) | Technologies for network packet processing between cloud and telecommunications networks | |
US20200007445A1 (en) | Enhanced service function chain | |
CN110177118A (zh) | 一种基于rdma的rpc通信方法 | |
CN112261094B (zh) | 一种报文处理方法及代理服务器 | |
CN110166570A (zh) | 业务会话管理方法、装置、电子设备 | |
CN113746749A (zh) | 网络连接设备 | |
CN112631788A (zh) | 数据传输方法及数据传输服务器 | |
US11809925B2 (en) | Data processing method and apparatus | |
CN115202573A (zh) | 数据存储系统以及方法 | |
WO2022068744A1 (zh) | 获取报文头信息、生成报文的方法、设备及存储介质 | |
CN112702338B (zh) | Ike报文获取方法及装置 | |
CN114024910A (zh) | 一种用于金融交易系统的极低延时可靠通讯系统及方法 | |
CN113691466B (zh) | 一种数据的传输方法、智能网卡、计算设备及存储介质 | |
CN110798366B (zh) | 任务逻辑的处理方法、装置及设备 | |
CN113271336B (zh) | 基于dpdk的机器人中间件dds数据传输方法、电子设备及计算机可读存储介质 | |
CN113810397B (zh) | 协议数据的处理方法及装置 | |
US20140056309A1 (en) | Method and apparatus for frame transfer using virtual buffer | |
CN113497767A (zh) | 传输数据的方法、装置、计算设备及存储介质 | |
US11336740B2 (en) | Proxy-based messaging system of a telecommunication network | |
AU2014200243B2 (en) | System(s) and method(s) for multiple sender support in low latency fifo messaging using tcp/ip protocol | |
EP4199469A1 (en) | Method and apparatus to assign and check anti-replay sequence numbers using load balancing | |
CN117615042A (zh) | 数据通信方法、装置、计算机设备及存储介质 | |
CN116156020A (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 |