基于协议族的QUIC数据传输方法及装置与流程

文档序号:32339592发布日期:2022-11-26 09:17阅读:104来源:国知局
基于协议族的QUIC数据传输方法及装置与流程
基于协议族的quic数据传输方法及装置
技术领域
1.本技术涉及互联网技术领域,特别涉及基于协议族的quic数据传输方法。本技术同时涉及基于协议族的quic数据传输装置,一种计算设备,以及一种计算机可读存储介质。


背景技术:

2.随着计算机技术的发展,网络数据传送一直都备受学术界和工业界的关注,目前在互联网领域,以tcp协议为基础的网络数据传输协议架构一直处于主流地位,但是随着技术的演进和应用场景逐渐丰富,涌现出了一些新的网络传输协议,其中就包括quic协议,quic协议是一种基于udp协议(用户数据包协议)的低时延的互联网传输层协议,是一种无连接的传输协议。
3.相比tcp而言,quic协议提升了网络传输的效率,并且满足了更多场景的应用需求,可以处理更多连接,实现更低的延时等,但是使用quic协议通信的服务器往往会带来更多的性能开销,会较大程度消耗机器算力资源,导致成本增加,因而降低了quic协议在更大规模的生产场景下的使用。


技术实现要素:

4.有鉴于此,本技术实施例提供了基于协议族的quic数据传输方法。本技术同时涉及基于协议族的quic数据传输装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的资源开销大的问题。
5.根据本技术实施例的第一方面,提供了一种基于协议族的quic数据传输方法,包括:
6.创建quic数据处理线程、所述quic数据处理线程对应的协议族套接字和共享内存;
7.根据所述共享内存和所述协议族套接字组成quic数据处理路径环;
8.根据所述quic数据处理线程和所述quic数据处理路径环传输quic数据。
9.根据本技术实施例的第二方面,提供了一种基于协议族的quic数据传输装置,包括:
10.创建模块,被配置为创建quic数据处理线程、所述quic数据处理线程对应的协议族套接字和共享内存;
11.组成模块,被配置为根据所述共享内存和所述协议族套接字组成quic数据处理路径环;
12.传输模块,被配置为根据所述quic数据处理线程和所述quic数据处理路径环传输quic数据。
13.根据本技术实施例的第三方面,提供了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述计算机指令时实现所述基于协议族的quic数据传输方法的步骤。
14.根据本技术实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机指令,该计算机指令被处理器执行时实现所述基于协议族的quic数据传输方法的步骤。
15.本技术提供的基于协议族的quic数据传输方法,创建quic数据处理线程、所述quic数据处理线程对应的协议族套接字和共享内存;根据所述共享内存和所述协议族套接字组成quic数据处理路径环;根据所述quic数据处理线程和所述quic数据处理路径环传输quic数据。通过构建quic数据处理路径环,生成了处理quic数据的环形缓冲区,将quic协议栈和基于af_xdp的网络数据发送结合,无需将quic数据发送至linux内核网络协议栈,从而降低了终端的cpu负载,提升了数据传输效率。
附图说明
16.图1是本技术一实施例提供的一种基于协议族的quic数据传输方法的流程图;
17.图2是本技术一实施例提供的基于协议族的quic数据传输方法的架构示意图;
18.图3是本技术一实施例提供的一种应用于接收数据包场景的基于协议族的quic数据传输方法的处理流程图;
19.图4是本技术一实施例提供的一种应用于发送数据包场景的基于协议族的quic数据传输方法的处理流程图;
20.图5是本技术一实施例提供的一种基于协议族的quic数据传输装置的结构示意图;
21.图6是本技术一实施例提供的一种计算设备的结构框图。
具体实施方式
22.在下面的描述中阐述了很多具体细节以便于充分理解本技术。但是本技术能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本技术内涵的情况下做类似推广,因此本技术不受下面公开的具体实施的限制。
23.在本技术一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术一个或多个实施例。在本技术一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本技术一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
24.应当理解,尽管在本技术一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本技术一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
25.首先,对本技术一个或多个实施例涉及的名词术语进行解释。
26.udp:用户数据包协议,一种无连接的传输协议。
27.quic:一种基于udp的低时延的互联网传输层协议。
28.ebpf:伯克利包过滤器的扩展版本,是一种可以在linux内核中运行用户编写的程序。
29.xdp:快速数据路径,是linux网络处理流程中的一个ebpf钩子,能够挂载ebpf程序,能够在网络数据包到达网卡驱动层时对其进行处理。
30.af_xdp:af_xdp是在xdp的基础上,为了高性能数据数据处理而设计的一套协议族。
31.quic(quick udp internet connection)是一套基于udp的传输协议,实现的是可靠的udp传输,目的是保证可靠性的同时降低网络延迟,因为udp是一个简单传输协议,基于udp可以摆脱tcp传输确认、重传慢启动等因素,只需要一rtt(round-trip time)的延迟就可以建立可靠安全的连接,quic是在udp的基础上由客户端自由发挥,只要有服务器能对接就可以。
32.quic协议的实现是在用户层,用户空间和系统内核空间之间需要大量的交互,导致了系统的负载增加,另外,quic协议运行时大量的加密和可靠性交付等过程也增加了对cpu的使用,因此,当前大多数quic协议实现的服务器都存在cpu负载过高的缺陷。
33.在实际应用中,通过对quic协议的性能进行分析,发现quic存下以下问题:
34.1、密码相关算法的开销大:对于小数据包来说,ras算法(非对称加密算法)的计算占比很高,对于大数据包来说,对称加解密也会占用系统15%左右的开销。
35.2、udp收发包的开销大:特别是对于大文件下载来说,sendmsg占比很高,可能达到35%-40%以上。
36.3、协议栈开销大:主要受协议栈实现,如ack的处理,mtu探测和发包大小,内存管理和拷贝等。
37.ebpf全称叫做“扩展伯克利包过滤器”,是一种可以在linux内核中运行用户编写的程序,其中ebpf程序在内核代码中网络处理流程中的一个钩子就是xdp,也就是说,xdp可以在网络数据包在到达网卡驱动层时对其进行处理,af_xdp则是基于xdp实现的一套新的协议族,可以实现快速高效的数据接收和发送。
38.基于此,在本技术中,提供了基于协议族的quic数据传输方法,本技术同时涉及基于协议族的quic数据传输装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
39.图1示出了根据本技术一实施例提供的一种基于协议族的quic数据传输方法的流程图,具体包括以下步骤:
40.步骤102:创建quic数据处理线程、所述quic数据处理线程对应的协议族套接字和共享内存。
41.其中,quic数据处理线程具体是指用于处理quic数据的线程,quic数据处理线程中通常会包括quic数据包接收模块、quic核心协议栈、quic数据包发送模块。quic数据包接收模块用于接收quic数据包,并将数据包发送至quic核心协议栈进行处理,当需要将quic数据包发送出去的时候,由quic核心协议栈生成udp报文,由quic数据包发送模块发送出去。在实际应用中,quic数据处理线程的数量可以为一个、两个或多个。
42.相应的,每个quic数据线程均会对应一个协议族套接字(af_xdp socket),af_xdp socket由基本的socket()系统调用创建,其包括有2个环形缓冲区(ring):rx ring(接收环)和tx ring(发送环)。rx ring和tx ring分别负责套接字数据包的接收和发送,分别由setsockopts xdp_rx_ring和xdp_tx_ring注册和分配大小。
43.rx ring和tx ring描述符指向内存中一个叫umem的数据缓存区,该数据缓存区即共享内存。rx ring和tx ring可以共享相同的umem,这样数据包就不用在rx ring和tx ring之间复制。
44.共享内存(umem)由许多相同大小的块(chunks)组成,在ring中的描述符通过引用数据帧的地址来引用该数据帧,而这一地址就是整个umem内存域中的偏移量。umem中同样有两个ring,分别为fill ring(填充环)和completion ring(完成环),应用程序用fill ring发送地址到内核,以向其填充数据包,一旦数据包被接收,这些数据帧的引用会出现在rx ring中。而completion ring包含着内核已经传输完成、并可以在此由用户空间使用的数据帧的地址。
45.本技术提供的基于协议族的quic数据传输方法,通过将af_xdp技术应用于quic服务端中的数据传输过程,通过结合af_xdp技术,达到提升quic数据包的传输效率,减少cpu负载。
46.在实际应用中,在部署quic数据处理线程的服务端通常采用的是多线程架构,即在一个服务端中会设置多个quic数据处理线程,由于是用于处理quic数据的传输任务,需要用到网卡,quic数据处理线程的设置与网卡相关。具体的,创建quic数据处理线程、所述quic数据处理线程对应的协议族套接字和共享内存,包括:
47.确定网卡中的网卡硬件队列数量;
48.基于所述网卡硬件队列数量创建对应数量的quic数据处理线程;
49.创建每个quic数据处理线程对应的协议族套接字和共享内存。
50.其中,网卡硬件队列是一种技术,用于解决网络io服务质量的问题,随着网络io的带宽不断提升,单核cpu不能完全处理满足网卡的需求,通过多队列网卡驱动的支持,将各个队列通过中断绑定到不同的核上,以满足网卡的需求。
51.在实际应用中,通常会根据网卡硬件队列的总数来确定quic数据处理线程的数量,例如网卡硬件队列数量有8个,则可以设置有8个quic数据处理线程;若网卡硬件队列数量有4个,则可以设置有4个quic数据处理线程。
52.在根据网卡硬件队列数量来创建对应数量的quic数据处理线程之后,针对每个quic数据处理线程对应创建共享内存和协议族套接字。以quic数据处理线程有2个为例,分别为quic线程1和quic线程2,为quic线程1创建对应的umem1和af_xdp套接字1,为quic线程2创建对应的umem2和af_xdp套接字2。
53.需要注意的是,由于umem是共享内存,在实际应用中,可以是每个quic线程可以使用相同的umem,也可以是不同的quic线程之间使用不同的umem,也可以几个quic线程使用一个相同的umem,共享内存数量的在本技术中不做限制,以实际引用为准。在本技术中,需要保证quic数据处理线程和协议族套接字之间是一一对应的。
54.在本技术提供的一具体实施方式中,以网卡硬件队列数量为8个为例,则创建8个quic数据处理线程,为每个quic数据处理线程创建对应的协议族套接字,共计8个af_xdp,同时划分8个共享内存,为每个quic数据处理线程分配一个共享内存,共计8个umem。
55.在本技术提供的另一具体实施方式中,以网卡硬件队列数量为8个为例,则创建8个quic数据处理线程,为每个quic数据处理线程创建对应的协议族套接字,共计8个af_xdp,同时划分1个共享内存,8个quic数据处理线程共享这1个umem,共计1个umem。
socket。在xdp socket中设置有rx ring和tx ring,在umem中设置有fill ring和completion ring。
71.以线程1为例,fill ring(填充环)和rx ring(接收环)组成了用于接收quic数据的quic数据接收路径环,其中,所述quic数据接收路径环为quic数据的接收规则;completion ring(完成环)和tx ring(发送环)组成了用于发送quic数据的quic数据发送路径环,其中,所述quic数据接收路径环为quic数据的发送规则。
72.在生成了quic数据接收路径环和quic数据发送路径环之后,即可根据这两个路径环来分别接收quic数据和将quic数据发送出去。
73.下面分别通过接收quic数据和发送quic数据两个方面来对根据所述quic数据处理线程和所述quic数据处理路径环传输quic数据做进一步解释说明。
74.下面将通过实施例1对接收quic数据时,如何根据所述quic数据处理线程和所述quic数据接收路径环接收quic数据进行解释说明。
75.需要注意的是,在本技术提供的实施例中,需要对quic数据进行处理,quic数据具体是指quic服务所需要的数据,在实际应用中,终端接收到的数据的类型有很多,本实施例所需要针对的数据是quic数据,因此需要预先将quic数据筛选出来。
76.基于此,在根据所述quic数据处理线程和所述quic数据接收路径环接收quic数据之前,所述方法还包括:
77.接收待处理数据;
78.判断所述待处理数据是否为quic接收数据;
79.若是,则将所述quic接收数据重定向至所述quic数据接收路径环;
80.若否,则传输所述待处理数据至内核协议栈。
81.其中,待处理数据具体是指终端接收到的数据,在实际应用中,所有的数据均会由网卡接收到,然后分配到网卡队列中,xdp程序是一个ebpf钩子,可以在网卡驱动层接收到待处理数据,在网卡驱动还未将待处理数据分配到内核协议栈之前获取到待处理数据,并判断待处理数据是否为quic接收数据,其中,quic接收数据就是指上述quic服务所需要的数据,经过判断在确定了待处理数据为quic接收数据的情况下,则将quic接收数据重新定向至quic数据接收环路径中,执行本技术提供方法的数据传输流程中;若确定待处理数据不是quic服务所需要的数据时,则将该待处理数据正常的传输至cpu内核协议栈中进行处理,在此就不在赘述。
82.下面,将对如何确定待处理数据是否是quic数据进行进一步解释说明。
83.具体的,判断所述待处理数据是否为quic接收数据,包括:
84.解析所述待处理数据,获得所述待处理数据中携带的数据服务端口;
85.判断所述数据服务端口是否是quic数据处理线程对应的服务端口。
86.在实际应用中,每个从网络中抵达终端网卡中的待处理数据中均会包括数据头信息,在数据头信息中会携带有该待处理数据对应的服务端口,在终端中会部署有多个数据服务端口,例如3306端口、1433端口、1521端口、80端口等等,每个端口对应不同的业务服务,同样的,quic服务在终端中也会有相应的服务端口,例如在本技术中确定quic服务对应的quic数据处理线程所使用的服务端口为a端口,则所有发往a端口的数据均为quic接收数据。
ring中的第一地址描述符删除。在此过程中,内核驱动程序是rx ring的生产者。
98.在本实施例中,quic接收数据的起始位置为a,其占用了4个数据帧,结束位置为b,内核驱动程序在quic数据写入到umem中之后,将quic接收数据对应的数据内存地址a-b写入到rx ring中。用于确定quic接收数据在umem中的实际位置。
99.r4、基于所述quic数据处理线程读取所述接收环中的数据内存地址,并根据所述数据内存地址从所述共享内存中读取所述quic接收数据。
100.当内核驱动程序将数据内存地址写入到rx ring中后,quic数据处理线程即可根据该数据内存地址从共享内存中读取quic接收数据,具体的quic数据处理线程中的quic数据包接收模块通过libbpf提供的调用方法读取rx ring中的数据内存地址。并根据该数据内存地址从共享内存中获取quic接收数据。需要注意的是,在此时quic数据处理线程是rx ring的消费者,当quic数据处理线程从rx ring中读取到该数据内存地址之后,该数据内存地址就会从rx ring中删除。quic数据处理线程在接收到quic接收数据之后,按照以太网层、ip层、udp层对quic接收数据进行解封装,并传递到quic核心协议栈中做进一步处理。在此过程中,quic数据处理线程是rx ring的消费者。
101.至此,quic接收数据的处理流程完成。通过本技术提供的方法,当quic接收数据抵达终端后,将quic数据重定向至quic数据接收路径环进行数据接收处理,无需将quic接收数据经过linux内核网络协议栈,有效降低了终端的cpu负载,提升了数据传输效率。
102.下面将通过实施例2对发送quic数据时,如何根据所述quic数据处理线程和所述quic数据发送路径环发送quic数据进行解释说明。
103.具体的,根据所述quic数据处理线程和所述quic数据发送路径环发送quic数据,包括s1-s4:
104.s1、基于所述quic数据处理线程生成quic发送数据。
105.当quic服务需要发送quic数据时,需要在quic数据处理线程中生成quic发送数据,进一步的,由quic核心协议栈生成quic数据,并经过udp层、ip层、以太网层对quic数据进行封装,生成quic发送数据。
106.s2、将quic发送数据写入至所述共享内存,并将quic发送数据在所述共享内存中的第二地址描述符写入到所述发送环。
107.quic数据处理线程将quic发送数据写入到umem中,在写入完成之后,将quic发送数据在umem中的第二地址描述符写入到tx ring中。在此过程中,quic数据处理线程是tx ring的生产者。第二地址描述符具体是指quic发送数据在共享内存中的位置偏移信息。
108.s3、读取所述发送环中的第二地址描述符,根据所述第二地址描述符读取并发送所述quic发送数据。
109.内核驱动程序读取tx ring中的第二地址描述符,调用sendto通知网卡驱动根据地址描述符读取quic发送数据,网卡驱动根据地址描述符在umem中读取到quic发送数据包,并将quic发送数据发送到网络中。在此过程中,内核驱动程序是tx ring的消费者。
110.s4、在所述quic发送数据发送完成的情况下,将所述第二地址描述符写入至所述完成环。
111.内核驱动程序在将quic发送数据全部发送至网络中之后,完成了quic发送数据的发送,需要把第二地址描述符回写到completion ring中,用于标识该quic发送数据已经发
送完成,在此过程中,内核驱动程序是completion ring的生产者。
112.之后,quic数据处理线程可以读取completion ring中的地址描述符,可以知晓quic发送数据已经发送完成,在此过程中,quic数据处理线程是completion ring的消费者。
113.至此,quic发送数据的处理流程完成。通过本技术提供的方法,在发送数据时,quic协议按照协议栈层次结构,封装生成quic发送数据包,与内核驱动程序共同协作,将quic发送数据包发送至网卡驱动,并通过网卡将quic发送数据发送到网络中,同样无需将quic发送数据经过linux内核网络协议栈,有效降低了终端的cpu负载,提升了数据传输效率。
114.本技术实施例提供的基于协议族的quic数据传输方法,创建quic数据处理线程、所述quic数据处理线程对应的协议族套接字和共享内存;根据所述共享内存和所述协议族套接字组成quic数据处理路径环;根据所述quic数据处理线程和所述quic数据处理路径环传输quic数据。通过构建quic数据处理路径环,生成了处理quic数据的环形缓冲区,将quic协议栈和基于af_xdp的网络数据发送结合,无需将quic数据发送至linux内核网络协议栈,从而降低了终端的cpu负载,提升了数据传输效率。
115.下述结合附图3,以本技术提供的基于协议族的quic数据传输方法在接收数据包场景下的应用为例,对所述基于协议族的quic数据传输方法进行进一步说明。其中,图3示出了本技术一实施例提供的一种应用于接收数据包场景的基于协议族的quic数据传输方法的处理流程图,具体包括以下步骤:
116.步骤302:接收待处理数据。
117.在本实施例中,网卡队列接收到待处理数据,由xdp程序在网卡驱动还未将待处理数据分配到内核协议栈之前获取到待处理数据。
118.步骤304:解析所述待处理数据,获得所述待处理数据中携带的数据服务端口。
119.在本实施例中,内核驱动程序解析该待处理数据,获得待处理数据中携带的数据服务端口为443。
120.步骤306:判断所述数据服务端口是否是quic服务对应的服务端口,若否,则执行步骤308,若是,则执行步骤310。
121.在本实施例中,内核驱动程序判断443端口是否是quic服务对应的服务端口,若是,则执行步骤310的操作,若否,则执行步骤308的操作。
122.步骤308:将待处理数据传递给内核协议栈。
123.在本实施例中,若待处理数据不是quic服务对应的数据,则将该数据通过常规处理,传递至内核协议栈。
124.步骤310:将待处理数据重定向至quic数据接收路径环。
125.在本实施例中,若待处理数据是quic服务对应的数据,则内核驱动程序将该待处理数据重新定向至预先建立的quic数据接收路径环。
126.步骤312:控制rx ring和fill ring收取待处理数据,并将待处理数据存入umem中。
127.在本实施例中,quic线程中的数据包接收模块预先将用于接收待处理数据的umem中收包地址存入fill ring中,内核驱动程序通过poll等系统调用通知网卡驱动进行收取
待处理数据的操作,内核驱动程序将待处理数据存入到umem中的收包地址中。当待处理数据完全收入到umem中之后,内核驱动程序会将该待处理数据的内存地址写入到rx ring中。
128.步骤314:quic数据包接收模块从umem中读取待处理数据。
129.在本实施例中,数据包接收模块通过libbpf提供的调用方法读取rx ring中的内存地址,将待处理数据读取到quic线程中。
130.步骤316:解封装该待处理数据,并将解封装后的数据传递给quic核心协议栈。
131.在本实施例中,数据包接收模块按照以太网层、ip层、udp层对待处理数据进行解封装,并将解封装之后获得的数据传递到quic核心协议栈中做进一步处理。
132.通过本技术提供的方法,当quic接收数据抵达终端后,将quic数据重定向至quic数据接收路径环进行数据接收处理,无需将quic接收数据经过linux内核网络协议栈,有效降低了终端的cpu负载,提升了数据传输效率。
133.下述结合附图4,以本技术提供的基于协议族的quic数据传输方法在发送数据包场景下的应用为例,对所述基于协议族的quic数据传输方法进行进一步说明。其中,图4示出了本技术一实施例提供的一种应用于发送数据包场景的基于协议族的quic数据传输方法的处理流程图,具体包括以下步骤:
134.步骤402:quic核心协议栈生成quic数据包。
135.在本实施例中,当quic服务想要发送数据时,通过quic核心协议栈生成quic数据包。
136.步骤404:将quic数据包进行封装,生成待发送数据。
137.在本实施例中,quic服务将quic数据包通过udp层、ip层、以太网层进行数据封装,获得待发送数据。
138.步骤406:将待发送数据写入umem中,并将待发送数据在umem中的地址描述符写入到tx ring。
139.在本实施例中,quic线程中的数据包发送模块将待发送数据写入到umem中,在写入完成之后,将待发送数据在umem中的地址描述符写入到tx ring中。
140.步骤408:读取tx ring中的地址描述符,并根据该地址描述符将待发送数据发布至网络。
141.在本实施例中,内核驱动程序读取tx ring中的地址描述符,调用sendto通知网卡驱动根据该地址描述符读取待发送数据,网卡驱动根据该地址描述符在umem中读取到待发送数据,并将待发送数据发送至网络中。
142.步骤410:在待发送数据发送完成后,将该地址描述符写入到completion ring。
143.在本实施例中,内核驱动程序在检测到待发送数据已经发送完成之后,将该地址描述符写入到completion ring中,用于标识该待发送数据已经发送完成。quic数据处理线程在读取到completion ring中存在该地址描述符的情况下,可以得知该待发送数据已经发送成功。
144.通过本技术提供的方法,在发送数据时,quic协议按照协议栈层次结构,封装生成quic发送数据包,与内核驱动程序共同协作,将quic发送数据包发送至网卡驱动,并通过网卡将quic发送数据发送到网络中,同样无需将quic发送数据经过linux内核网络协议栈,有效降低了终端的cpu负载,提升了数据传输效率。
145.与上述基于协议族的quic数据传输方法实施例相对应,本技术还提供了基于协议族的quic数据传输装置实施例,图5示出了本技术一实施例提供的一种基于协议族的quic数据传输装置的结构示意图。如图5所示,该装置包括:
146.创建模块502,被配置为创建quic数据处理线程、所述quic数据处理线程对应的协议族套接字和共享内存;
147.组成模块504,被配置为根据所述共享内存和所述协议族套接字组成quic数据处理路径环;
148.传输模块506,被配置为根据所述quic数据处理线程和所述quic数据处理路径环传输quic数据。
149.可选的,所述创建模块502,进一步被配置为:
150.确定网卡中的网卡硬件队列数量;
151.基于所述网卡硬件队列数量创建对应数量的quic数据处理线程;
152.创建每个quic数据处理线程对应的协议族套接字和共享内存。
153.可选的,所述组成模块504,进一步被配置为:
154.获取所述共享内存中的填充环和完成环,获取所述协议族套接字中的接收环和发送环,其中,所述填充环用于接收quic接收数据期望被保存在所述共享内存中的位置偏移信息,所述完成环用于接收quic发送数据发送成功后在所述共享内存中的位置偏移信息,所述接收环用于接收quic接收数据在所述共享内存中的位置偏移信息,所述发送环用于接收quic发送数据在所述共享内存中的位置偏移信息;
155.根据所述填充环和所述接收环组成quic数据接收路径环,根据所述完成环和所述发送环组成quic数据发送路径环。
156.可选的,所述传输模块506,包括:
157.接收单元,被配置为根据所述quic数据处理线程和所述quic数据接收路径环接收quic数据,其中,所述quic数据接收路径环为quic数据的接收规则;
158.发送单元,被配置为根据所述quic数据处理线程和所述quic数据发送路径环发送quic数据,其中,所述quic数据接收路径环为quic数据的发送规则。
159.可选的,所述接收单元,还被配置为:
160.接收待处理数据;
161.判断所述待处理数据是否为quic接收数据;
162.若是,则将所述quic接收数据重定向至所述quic数据接收路径环;
163.若否,则传输所述待处理数据至内核协议栈。
164.可选的,所述接收单元,进一步被配置为:
165.解析所述待处理数据,获得所述待处理数据中携带的数据服务端口;
166.判断所述数据服务端口是否是quic数据处理线程对应的服务端口。
167.可选的,所述接收单元,进一步被配置为:
168.基于quic数据处理线程将第一地址描述符填充至所述填充环,其中,所述第一地址描述符为所述共享内存的地址偏移信息;
169.根据所述第一地址描述符将所述quic接收数据写入到共享内存;
170.在所述quic接收数据写入完成的情况下,将所述quic接收数据在所述共享内存中
的数据内存地址写入到所述接收环;
171.基于所述quic数据处理线程读取所述接收环中的数据内存地址,并根据所述数据内存地址从所述共享内存中读取所述quic接收数据。
172.可选的,所述发送单元,进一步被配置为:
173.基于所述quic数据处理线程生成quic发送数据;
174.将quic发送数据写入至所述共享内存,并将quic发送数据在所述共享内存中的第二地址描述符写入到所述发送环;
175.读取所述发送环中的第二地址描述符,根据所述第二地址描述符读取并发送所述quic发送数据;
176.在所述quic发送数据发送完成的情况下,将所述第二地址描述符写入至所述完成环。
177.本技术实施例提供的基于协议族的quic数据传输装置,创建quic数据处理线程、所述quic数据处理线程对应的协议族套接字和共享内存;根据所述共享内存和所述协议族套接字组成quic数据处理路径环;根据所述quic数据处理线程和所述quic数据处理路径环传输quic数据。通过构建quic数据处理路径环,生成了处理quic数据的环形缓冲区,将quic协议栈和基于af_xdp的网络数据发送结合,无需将quic数据发送至linux内核网络协议栈,从而降低了终端的cpu负载,提升了数据传输效率。
178.上述为本实施例的一种基于协议族的quic数据传输装置的示意性方案。需要说明的是,该基于协议族的quic数据传输装置的技术方案与上述的基于协议族的quic数据传输方法的技术方案属于同一构思,基于协议族的quic数据传输装置的技术方案未详细描述的细节内容,均可以参见上述基于协议族的quic数据传输方法的技术方案的描述。
179.图6示出了根据本技术一实施例提供的一种计算设备600的结构框图。该计算设备600的部件包括但不限于存储器610和处理器620。处理器620与存储器610通过总线630相连接,数据库650用于保存数据。
180.计算设备600还包括接入设备640,接入设备640使得计算设备600能够经由一个或多个网络660通信。这些网络的示例包括公用交换电话网(pstn)、局域网(lan)、广域网(wan)、个域网(pan)或诸如因特网的通信网络的组合。接入设备640可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(nic))中的一个或多个,诸如ieee802.11无线局域网(wlan)无线接口、全球微波互联接入(wi-max)接口、以太网接口、通用串行总线(usb)接口、蜂窝网络接口、蓝牙接口、近场通信(nfc)接口,等等。
181.在本技术的一个实施例中,计算设备600的上述部件以及图6中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图6所示的计算设备结构框图仅仅是出于示例的目的,而不是对本技术范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
182.计算设备600可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或pc的静止计算设备。计算设备600还可以是移动式或静止式的服务器。
183.其中,处理器620执行所述计算机指令时实现所述的基于协议族的quic数据传输方法的步骤。
184.上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的基于协议族的quic数据传输方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述基于协议族的quic数据传输方法的技术方案的描述。
185.本技术一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该计算机指令被处理器执行时实现如前所述基于协议族的quic数据传输方法的步骤。
186.上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的基于协议族的quic数据传输方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述基于协议族的quic数据传输方法的技术方案的描述。
187.上述对本技术特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
188.所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
189.需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本技术所必须的。
190.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
191.以上公开的本技术优选实施例只是用于帮助阐述本技术。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本技术的内容,可作很多的修改和变化。本技术选取并具体描述这些实施例,是为了更好地解释本技术的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本技术。本技术仅受权利要求书及其全部范围和等效物的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1