CN114979021A - 数据处理方法及电子设备 - Google Patents
数据处理方法及电子设备 Download PDFInfo
- Publication number
- CN114979021A CN114979021A CN202110221445.2A CN202110221445A CN114979021A CN 114979021 A CN114979021 A CN 114979021A CN 202110221445 A CN202110221445 A CN 202110221445A CN 114979021 A CN114979021 A CN 114979021A
- Authority
- CN
- China
- Prior art keywords
- quic
- frame
- priority
- client
- packet
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 34
- 238000000034 method Methods 0.000 claims description 82
- 230000005540 biological transmission Effects 0.000 claims description 65
- 230000015654 memory Effects 0.000 claims description 44
- 238000013507 mapping Methods 0.000 claims description 33
- 230000004044 response Effects 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 15
- HRULVFRXEOZUMJ-UHFFFAOYSA-K potassium;disodium;2-(4-chloro-2-methylphenoxy)propanoate;methyl-dioxido-oxo-$l^{5}-arsane Chemical compound [Na+].[Na+].[K+].C[As]([O-])([O-])=O.[O-]C(=O)C(C)OC1=CC=C(Cl)C=C1C HRULVFRXEOZUMJ-UHFFFAOYSA-K 0.000 claims description 14
- 238000012790 confirmation Methods 0.000 claims description 8
- 238000004364 calculation method Methods 0.000 claims description 2
- 238000012545 processing Methods 0.000 abstract description 29
- 230000001965 increasing effect Effects 0.000 abstract description 8
- 238000004891 communication Methods 0.000 description 43
- 230000006854 communication Effects 0.000 description 43
- 238000010586 diagram Methods 0.000 description 38
- 230000008569 process Effects 0.000 description 27
- 230000006870 function Effects 0.000 description 20
- 238000004806 packaging method and process Methods 0.000 description 20
- 238000007726 management method Methods 0.000 description 18
- 238000010295 mobile communication Methods 0.000 description 11
- 230000005236 sound signal Effects 0.000 description 11
- 230000003993 interaction Effects 0.000 description 10
- 238000012546 transfer Methods 0.000 description 7
- 230000001413 cellular effect Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 210000004027 cell Anatomy 0.000 description 5
- 238000001514 detection method Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 229920001621 AMOLED Polymers 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 3
- 230000002457 bidirectional effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000033001 locomotion Effects 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 230000003416 augmentation Effects 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 238000013529 biological neural network Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 210000000988 bone and bone Anatomy 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 230000001976 improved effect Effects 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 239000010985 leather Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 239000002096 quantum dot Substances 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003238 somatosensory effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000008093 supporting effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
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/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/6215—Individual queue per QOS, rate or priority
-
- 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/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2425—Traffic characterised by specific attributes, e.g. priority or QoS for supporting services specification, e.g. SLA
-
- 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/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2425—Traffic characterised by specific attributes, e.g. priority or QoS for supporting services specification, e.g. SLA
- H04L47/2433—Allocation of priorities to traffic types
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例提供一种数据处理方法以及电子设备。数据处理方法包括:为客户端的连接或单向流提供多个发包队列,用于存储不同优先级的QUIC帧;客户端对每个发包队列的QUIC帧进行合包、打包成为网络报文,并在网络报文的报头体现QUIC帧的优先级,实现业务流优先级对应的处理意图。本申请实施例提供的数据处理方法,能够在不增加连接或单向流的情况下,实现QUIC帧的充分合包,节省了网络带宽。
Description
技术领域
本申请涉及电子技术领域,尤其涉及数据处理方法及电子设备。
背景技术
随着移动设备的快速普及,在计算机网络中,移动设备产生的超文本传输协议(HTTP,hypertext transfer protocol)流量远远超过台式机产生的HTTP流量。HTTP已被提出通过使用多路复用、并发、流依赖、头压缩和服务器推送来减少页面加载时间。然而,由于交织网络传输和本地计算导致加载页面的复杂性,移动设备通信延迟依然无法达到一个满意的结果。有研究表明,对于内容提供商来说,额外的500毫秒延迟会减少多达20%的浏览量。因此,能够提高HTTP传输性能的快速UDP网络连接(QUIC,quick udp internetconnection)协议,以及在QUIC协议基础上将传输使用的一条物理路径扩展到多条物理路径的多路径快速UDP网络连接(multipath quick udp internet connection,MPQUIC)协议被提出。
根据QUIC/MPQUIC协议,发送端在一个QUIC报文中需要包括尽可能多的QUIC帧,以最小化每个报文的带宽和计算开销。但是对于带有业务优先级指示的QUIC帧,协议中没有明确定义该如何处理不同优先级的QUIC帧的合包操作。一种处理方式为,在一个连接上提供一个发包队列,将该发包队列中相邻且优先级相同的QUIC帧合包成为一个QUIC报文后发送。
但是由于一个连接对应的多个优先级不同的QUIC流(QUIC Stream)在发送QUIC帧到发包队列时,经常会交错发包,使得一个发包队列上的QUIC帧的优先级会不连续。例如,一个发包队列上5个QUIC帧的优先级可能为:QUIC帧1-优先级1,QUIC帧2-优先级1,QUIC帧3-优先级2,QUIC帧4-优先级1,QUIC帧5-优先级1。这样就导致在该发包队列上无法充分合包,只能按QUIC帧的优先级相同且连续的顺序,将这5个QUIC帧封装成3个QUIC报文发送,而无法将相同优先级的QUIC帧1、QUIC帧2、QUIC帧4和QUIC帧5合包成一个QUIC报文发送,增加了发送QUIC报文的网络带宽。
发明内容
本申请实施例提供了一种数据处理方法及电子设备,能够在不增加连接或单向流的情况下,实现QUIC帧的充分合包,节省发送QUIC报文的网络带宽。
第一方面,本申请提供了一种数据处理方法,该方法包括:客户端与服务端在第一QUIC/MPQUIC会话中创建第一连接/第一单向流;该第一连接/第一单向流用于将该客户端中的数据发送给该服务端;该客户端生成QUIC帧,其中包括第一QUIC帧,该第一QUIC帧被配置为第一优先级;该客户端根据第一映射规则和该第一优先级,将该第一QUIC帧写入该第一连接/第一单向流上的第一发包队列中;该第一连接/第一单向流上配置有多个优先级不同的发包队列,其中包括与该第一QUIC帧的第一优先级对应的该第一发包队列;该客户端将该第一发包队列中的QUIC帧合包成第一QUIC报文,再打包成第一网络报文,通过该第一连接/第一单向流发送给该服务端;该第一网络报文的优先级与该第一发包队列的优先级对应。
在上述实施例中,电子设备通过为第一连接/第一单向流配置多个优先级不同的发包队列,将QUIC帧写入到QUIC帧优先级所对应的发包队列中,使得电子设备在将QUIC帧合包成QUIC报文以及将该QUCI报文打包成网络报文的过程中,即实现了充分合包,也保证了网络报文优先级与QUIC帧的优先级的对应关系。
结合第一方面的一些实施例,在一些实施例中,该客户端根据该第一映射规则和该第一优先级,将第二QUIC帧写入该第一连接/第一单向流上的该第一发包队列中;该客户端生成的QUIC帧中包括该第二QUIC帧,该第二QUIC帧被配置为该第一优先级。
在上述实施例中,客户端将相同优先级的QUIC帧写入相同优先级的发包队列中,有助于实现QUCI帧的充分合包。
结合第一方面的一些实施例,在一些实施例中,该客户端根据该第一映射规则和该第二优先级,将第三QUIC帧写入该第一连接/第一单向流上的第二发包队列中;该客户端生成的QUIC帧中包括该第三QUIC帧,该第三QUIC帧被配置为该第二优先级;该第二优先级与该第一优先级不同;该第二发包队列为该第一连接/第一单向流上与该第三QUIC帧的第二优先级对应的发包队列;该客户端将该第二发包队列中的QUIC帧合包成第二QUIC报文,再打包成第二网络报文,通过该第一连接/第一单向流发送给该服务端;该第二网络报文的优先级与该第二发包队列的优先级对应。
在上述实施例中,客户端可以将不同优先级的QUIC帧写入不同的发包队列中,使得客户端在QUIC帧合包过程中,QUIC报文以及该QUIC报文打包生成的网络报文只包含相同优先级的QUIC帧。
结合第一方面的一些实施例,在一些实施例中,客户端与服务端在第一QUIC/MPQUIC会话中创建第一连接/第一单向流的步骤之后,该客户端生成第一QUIC帧的步骤之前,该方法还包括:该客户端在该第一连接/第一单向流上配置该多个优先级不同的发包队列,该多个优先级不同的发包队列包括该第一发包队列。
在上述实施例中,客户端可以为第一连接/第一单向流预配置多个优先级不同的发包队列,使得当客户端生成第一QUIC帧后,可以及时的将QUIC帧写入发包队列中,提高数据处理速度。
结合第一方面的一些实施例,在一些实施例中,当确定所述第一连接/第一单向流上没有配置与第一QUIC帧的第一优先级所对应的所述第一发包队列时,在所述第一连接/第一单向流上配置所述第一发包队列。
在上述实施例中,客户端可以为第一连接/第一单向流预配置多个优先级不同的发包队列,使得当客户端生成第一QUIC帧后,可以及时的将QUIC帧写入发包队列中,提高数据处理速度。
结合第一方面的一些实施例,在一些实施例中,响应于业务流的创建,或者响应于该业务流的报文发送,该客户端将业务流的报文拆解、封装成一个或多个Stream帧;该Stream帧为一种QUIC帧。
在上述实施例中,客户端可以在业务流创建或者业务流的报文发送的时候,将业务流的报文拆解、封装成Stream帧,提高了数据处理速度。
结合第一方面的一些实施例,在一些实施例中,该第一网络报文的报头包括用于表示该第一网络报文的优先级的第一字段。
在上述实施例中,网络中的中间设备在接收到网络报文后,通过第一字段表示的优先级,得知该数据是否需要被优先处理,进而保证了客户端上业务的需求。
结合第一方面的一些实施例,在一些实施例中,该第一字段为IP报文报头的DSCP字段,或者为以太网报文报头的CoS字段。
在上述实施例中,网络中的中间设备在接收到网络报文后,通过DSCP字段、CoS字段表示的优先级,得知该数据是否需要被优先处理,进而保证了客户端上业务的需求。
结合第一方面的一些实施例,在一些实施例中,该第一网络报文的优先级与该第一发包队列的优先级相同;或,该第一网络报文的优先级由该客户端根据第二映射规则和该第一发包队列的优先级计算得到。
在上述实施例中,综合考虑网络报文的优先级范围不同以及为第一连接/第一单向流配置发包队列的开销负担,可以根据不同的情况下,采取不同的方式去确定网络报文优先级与发包队列优先级之间的对应关系。
结合第一方面的一些实施例,在一些实施例中,QUIC帧包括Stream帧、ACK帧、MPACK帧、NEW_CONNECTION_ID帧和RESET_STREAM帧中的一种或多种。
在上述实施例中,QUIC帧在不同的情况下有着不同的具体表现形式,本申请提供的数据处理方法可以通用的处理QUIC帧的各种具体表现形式。
第二方面,本申请提供了一种数据处理方法,该方法包括:服务端与客户端在第一QUIC/MPQUIC会话中创建第一连接/第一单向流;该服务端在该第一连接/第一单向流上接收该客户端发送的网络报文,该网络报文被该客户端配置有优先级;该服务端通过解封装该网络报文获取QUIC帧,并确定该QUIC帧的优先级与该QUIC帧所属的网络报文的优先级相同;该服务端生成第一确认帧,该第一确认帧用于答复至少一个网络报文,该第一确认帧的优先级与该第一确认帧所答复的网络报文中QUIC帧的优先级对应。
在上述实施例中,服务端接收到网络报文后,会解封装获取网络报文的优先级,并将优先级配置给QUIC帧,保证了优先级信息在传输过程中的完整性。并且服务端向客户端生成一个确认帧,确认帧的优先级与该确认帧所答复的QUIC帧的优先级对应,最大化利用了该优先级信息,充分实现了为QUIC帧配置优先级的意图。
结合第二方面的一些实施例,在一些实施例中,在该至少一个网络报文的优先级均相同的情况下,该第一确认帧的优先级与该至少一个网络报文中的QUIC帧的优先级相同。
在上述实施例中,考虑到服务端生成的确认帧所确认的一个或多个网络报文的优先级相同的情况下,确认帧的优先级与任一个网络中任一个QUIC帧优先级相同,使得服务端充分利用了网络报文的优先级信息,并且简化确认帧优先级的确定方式,提高了数据处理速度。
结合第二方面的一些实施例,在一些实施例中,在该至少一个网络报文的优先级不全部相同的情况下,该第一确认帧的优先级与该至少一个网络报文中的QUIC帧的最高的优先级相同。
在上述实施例中,考虑到服务端生成的确认帧所确认的一个或多个网络报文的优先级不同的情况下,通过是确认帧的优先级为网络报文中的最高优先级,保证了高优先级的QUCI帧会被优先确认。
结合第二方面的一些实施例,在一些实施例中,该服务端为该第一连接或单向流配置多个优先级不同的收包队列,该多个优先级不同的收包队列用于分别存储与收包队列优先级相同的该QUIC帧。
在上述实施例中,服务端通过配置不同优先级的收包队列去接收不同优先级的QUIC帧,使得服务端的上层业务可以按照优先级顺序去处理QUIC帧,保证了优先级高的QUIC帧可以优先被处理。
结合第二方面的一些实施例,在一些实施例中,当确定该第一连接/第一单向流上没有配置与该QUIC帧的优先级所对应的收包队列时,在该第一连接/第一单向流上配置该QUIC帧的优先级所对应的收包队列。
在上述实施例中,考虑到服务端可能无法预先确定收到QUIC帧的优先级范围,故可以让服务端动态的配置发包队列,减少了配置发包队列的开销。
结合第二方面的一些实施例,在一些实施例中,该第一确认帧为ACK帧或MP_ACK帧。
在上述实施例中,考虑到不同服务端上协议栈的能力不同,故确认帧可以是ACK帧或者MP_ACK帧。
结合第二方面的一些实施例,在一些实施例中,该网络报文的报头包括用于表示该网络报文的优先级的第一字段。
在上述实施例中,由于网络报文的报头上承载有优先级信息,故服务端可以解封装网络报文获取优先级信息。
结合第二方面的一些实施例,在一些实施例中,该第一字段为IP报文报头的DSCP字段,或者为以太网报文报头的CoS字段。
在上述实施例中,服务端可以根据网络报文的格式,确定承载优先级信息的字段,进而获取优先级信息。
结合第二方面的一些实施例,在一些实施例中,QUIC帧包括Stream帧、ACK帧、MPACK帧、NEW_CONNECTION_ID帧和RESET_STREAM帧中的一种或多种。
在上述实施例中,QUIC帧在不同的情况下有着不同的具体表现形式,本申请提供的数据处理方法可以通用的处理QUIC帧的各种具体表现形式。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括:一个或多个处理器和存储器;该存储器与该一个或多个处理器耦合,该存储器用于存储计算机程序代码,该计算机程序代码包括计算机指令,该一个或多个处理器调用该计算机指令以使得该电子设备执行:
与服务端在第一QUIC/MPQUIC会话中创建第一连接/第一单向流;该第一连接/第一单向流用于将该客户端中的数据发送给该服务端;生成QUIC帧,其中包括第一QUIC帧,该第一QUIC帧被配置为第一优先级;根据第一映射规则和该第一优先级,将该第一QUIC帧写入该第一连接/第一单向流上的第一发包队列中;该第一连接/第一单向流上配置有多个优先级不同的发包队列,其中包括与该第一QUIC帧的第一优先级对应的该第一发包队列;将该第一发包队列中的QUIC帧合包成第一QUIC报文,再打包成第一网络报文,通过该第一连接/第一单向流发送给该服务端;该第一网络报文的优先级映射于与该第一发包队列的优先级对应。
结合第三方面的一些实施例,在一些实施例中,该一个或多个处理器,还用于调用该计算机指令以使得该电子设备执行:根据该第一映射规则和该第一优先级,将第二QUIC帧写入该第一连接/第一单向流上的该第一发包队列中;该生成的QUIC帧中包括该第二QUIC帧,该第二QUIC帧被配置为该第一优先级。
结合第三方面的一些实施例,在一些实施例中,所述一个或多个处理器,还用于调用所述计算机指令以使得所述电子设备执行:根据该第一映射规则和该第二优先级,将第三QUIC帧写入该第一连接/第一单向流上的第二发包队列中;该生成的QUIC帧中包括该第三QUIC帧,该第三QUIC帧被配置为该第二优先级;该第二优先级与该第一优先级不同;该第二发包队列为该第一连接/第一单向流上与该第三QUIC帧的第二优先级对应的发包队列;将该第二发包队列中的QUIC帧合包成第二QUIC报文,再打包成第二网络报文,通过该第一连接/第一单向流发送给该服务端;该第二网络报文的优先级与该第二发包队列的优先级对应。
结合第三方面的一些实施例,在一些实施例中,该一个或多个处理器,还用于调用该计算机指令以使得该电子设备执行:在该第一连接/第一单向流上配置该多个优先级不同的发包队列,该多个优先级不同的发包队列包括该第一发包队列。
结合第三方面的一些实施例,在一些实施例中,该一个或多个处理器,还用于调用该计算机指令以使得该电子设备执行:当确定该第一连接/第一单向流上没有配置与第一QUIC帧的第一优先级所对应的该第一发包队列时,在该第一连接/第一单向流上配置该第一发包队列。
结合第三方面的一些实施例,在一些实施例中,该一个或多个处理器,具体用于调用所述计算机指令以使得所述电子设备执行:响应于业务流的创建,或者响应于该业务流的报文发送,将业务流的报文拆解、封装成一个或多个Stream帧;该Stream帧为一种QUIC帧。
结合第三方面的一些实施例,在一些实施例中,该第一网络报文的优先级与该第一发包队列的优先级相同;或,该第一网络报文的优先级由该电子设备根据第二映射规则和该第一发包队列的优先级计算得到。
结合第三方面的一些实施例,在一些实施例中,该第一网络报文的报头包括用于表示该第一网络报文的优先级的第一字段。
结合第三方面的一些实施例,在一些实施例中,该第一字段为IP报文报头的DSCP字段,或者为以太网报文报头的CoS字段。
结合第三方面的一些实施例,在一些实施例中,QUIC帧包括Stream帧、ACK帧、MPACK帧、NEW_CONNECTION_ID帧和RESET_STREAM帧中的一种或多种。
第四方面,本申请实施例提供了一种电子设备,该电子设备包括:一个或多个处理器和存储器;该存储器与该一个或多个处理器耦合,该存储器用于存储计算机程序代码,该计算机程序代码包括计算机指令,该一个或多个处理器调用该计算机指令以使得该电子设备执行:
与客户端在第一QUIC/MPQUIC会话中创建第一连接/第一单向流;在该第一连接/第一单向流上接收该客户端发送的网络报文,该网络报文被该客户端配置有优先级;通过解封装该网络报文获取QUIC帧,并确定该QUIC帧的优先级与该QUIC帧所属的网络报文的优先级相同;生成第一确认帧,该第一确认帧用于答复至少一个网络报文,该第一确认帧的优先级与该第一确认帧所答复的网络报文中QUIC帧的优先级对应。
结合第四方面的一些实施例,在一些实施例中,在该至少一个网络报文的优先级均相同的情况下,该第一确认帧的优先级与该至少一个网络报文中的QUIC帧的优先级相同。
结合第四方面的一些实施例,在一些实施例中,在该至少一个网络报文的优先级不全部相同的情况下,该第一确认帧的优先级与该至少一个网络报文中的QUIC帧的最高的优先级相同。
结合第四方面的一些实施例,在一些实施例中,该一个或多个处理器,具体用于调用所述计算机指令以使得所述电子设备执行:该服务端为该第一连接或单向流配置多个优先级不同的收包队列,该多个优先级不同的收包队列用于分别存储与收包队列优先级相同的该QUIC帧。
结合第四方面的一些实施例,在一些实施例中,该一个或多个处理器,还用于调用所述计算机指令以使得所述电子设备执行:当确定该第一连接/第一单向流上没有配置与该QUIC帧的优先级所对应的收包队列时,在该第一连接/第一单向流上配置该QUIC帧的优先级所对应的收包队列。
结合第四方面的一些实施例,在一些实施例中,该第一确认帧为ACK帧或MP_ACK帧。
结合第四方面的一些实施例,在一些实施例中,该网络报文的报头包括用于表示该网络报文的优先级的第一字段。
结合第四方面的一些实施例,在一些实施例中,该第一字段为IP报文报头的DSCP字段,或者为以太网报文报头的CoS字段。
结合第四方面的一些实施例,在一些实施例中,QUIC帧包括Stream帧、ACK帧、MPACK帧、NEW_CONNECTION_ID帧和RESET_STREAM帧中的一种或多种。
第五方面,本申请实施例提供了一种芯片系统,该芯片系统应用于电子设备,该芯片系统包括一个或多个处理器,该处理器用于调用计算机指令以使得该电子设备执行如第一方面以及第一方面中任一可能的实现方式描述的方法。
第六方面,本申请实施例提供了一种芯片系统,该芯片系统应用于电子设备,该芯片系统包括一个或多个处理器,该处理器用于调用计算机指令以使得该电子设备执行如第一方面以及第二方面中任一可能的实现方式描述的方法。
第七方面,本申请实施例提供一种包含指令的计算机程序产品,当上述计算机程序产品在电子设备上运行时,使得该电子设备执行如第一方面以及第一方面中任一可能的实现方式描述的方法,或执行如第一方面以及第一方面中任一可能的实现方式描述的方法。
第八方面,本申请实施例提供一种包含指令的计算机程序产品,当上述计算机程序产品在电子设备上运行时,使得该电子设备执行如第一方面以及第一方面中任一可能的实现方式描述的方法,或执行如第二方面以及第二方面中任一可能的实现方式描述的方法。
第九方面,本申请实施例提供一种计算机可读存储介质,包括指令,当上述指令在电子设备上运行时,得该电子设备执行如第一方面以及第一方面中任一可能的实现方式描述的方法。
第十方面,本申请实施例提供一种计算机可读存储介质,包括指令,当上述指令在电子设备上运行时,得该电子设备执行如第二方面以及第二方面中任一可能的实现方式描述的方法。
可以理解地,上述第三方面和第四方面提供的电子设备、第五方面和第六方面提供的芯片系统、第七方面和第八方面提供的计算机程序产品以及第九方面和第十方面提供的计算机存储介质均用于执行本申请实施例所提供的方法。因此,其所能达到的有益效果可参考对应方法中的有益效果,此处不再赘述。
附图说明
图1为客户端与服务端建立多个连接或单向流场景的一个示例性示意图。
图2为客户端通过多条物理路径与服务端进行通信的一个示例性示意图。
图3为图2中客户端与服务端通过多个路径进行通信的一个示例性示意图。
图4为本申请涉及的计算机网络通信场景的一个示例性示意图。
图5为本申请涉及的HTTPS协议与QUIC协议握手对比的一个示例性示意图。
图6为本申请涉及的TCP协议与QUIC协议中数据传输场景的一个示例性示意图。
图7为QUIC会话架构的一个示例性示意图。
图8至图10为本申请涉及的一种QUIC帧合包的技术方案的一个示例性示意图。
图11为本申请涉及的通过Qos实现业务流的优先级方法的一个示例性示意图。
图12为图11所示场景中网络报文传输流程的一个示例性示意图。
图13为本申请实施例中数据处理方法架构的一个示例性示意图。
图14为本申请实施例提供的电子设备100的一个结构示意图。
图15为本申请实施例提供的电子设备100的另一个结构示意图。
图16为本申请实施例中电子设备100的一个软件结构示意框图。
图17为本申请实施例中的数据处理方法的一个示例性示意图。
图18为本申请实施例中客户端上数据处理方法的场景的一个示例性示意图。
图19为图18中MPQUIC会话中服务端接收网络报文场景的一个示例性示意图。
图20为本申请实施例中客户端上数据处理方法的场景的另一个示例性示意图。
图21为图20中MPQUIC会话中服务端接收网络报文场景的另一个示例性示意图。
具体实施方式
本申请以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本申请的限制。如在本申请的说明书和所附权利要求书中所使用的那样,单数表达形式“一个”、“一种”、“该”、“上述”、“该”和“这一”旨在也包括复数表达形式,除非其上下文中明确地有相反指示。还应当理解,本申请中使用的术语“和/或”是指并包含一个或多个所列出项目的任何或所有可能组合。
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为暗示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征,在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
为了便于理解,下面首先对本申请实施例涉及的相关术语及相关概念进行介绍。本发明的实施方式部分使用的术语仅用于对本发明的具体实施例进行解释,而非旨在限定本发明。
(1)QUIC协议:
QUIC协议是一种基于用户数据报协议(user datagram protocol,UDP)的网络传输协议。可以认为QUIC协议位于开放式系统互联(open system interconnection,OSI)模型的传输层。
客户端和服务端可以在一条物理路径上通过QUIC协议进行数据传输,客户端为发起连接的端点,服务端为接受连接的端点。
其中,客户端可以是终端设备,如手机、平板电脑、虚拟现实终端设备、增强现实终端设备、工业控制中的无线终端、无人驾驶中的无线终端、远程医疗中的无线终端、智能电网中的无线终端、运输安全中的无线终端、智慧城市中的无线终端、智慧家庭中的无线终端、可穿戴设备、车载设备等。
其中,服务端可以是为客户端服务的,服务端可以向客户端提供资源以及保存客户端数据等,并且服务端也可以称为服务器。
连接(Connection)在QUIC协议中可以为客户端与服务端之间共享的一种状态。连接可以以握手阶段开始,建立共享密钥,并协商应用协议。每个连接可以拥有一个连接标识符(Connection ID,CID),用于唯一标识该连接。具体的,连接上的数据流动方向可以是单向的,也可以是双向的。
客户端与服务端建立的连接可以承载在一条物理路径上。客户端与服务端可以将Connection ID映射到路径四元组(源IP、源端口、目标IP、目标端口)上以确定该连接对应的物理路径。
QUIC协议在实现上基于传输层协议UDP,保证了与现有网络的兼容性,并且降低了握手的时延,进而降低了用户访问网络的延迟感。
(2)MPQUIC协议:
MPQUIC协议可以认为是QUIC协议的一个扩展,可以使用客户端与服务端之间的多条物理路径,提高该客户端与服务端之间的传输性能,如降低延时、提高吞吐率等。
与QUIC协议类似,互为对端的客户端和服务端可以在多条物理路径上通过MPQUIC协议进行数据传输,客户端为发起连接或单向流的端点,服务端为接收连接或单向流的端点。
单向流(Uniflow)在连接的基础上又增加了一层逻辑链路的概念,在MPQUIC协议中可以体现为客户端与服务端之间的单向报文流。一个单向流可以由单向流标识(UniflowID,UID)来唯一标识。
客户端与服务端基于MPQUIC协议建立的通信可以包括至少一个单向流。具体的,对于客户端来说,可以是至少一个接收单向流以及至少一个发送单向流。发送单向流与接收单向流的数据流动方向不同,其中接收单向流的数据流动方向为从服务端流向客户端,发送单向流的数据流方向为从客户端流向服务端。客户端的发送单向流与服务端的接收单向流之间存在一对一的映射关系。
在同一条物理路径上的连接可以定义成不同的单向流,多个不同数据流方向的单向流可以映射为一个连接。
图1为客户端与服务端建立多个连接或单向流场景的一个示例性示意图。
如图1中(A)所示,在MPQUIC会话中,客户端与服务端建立有多个连接或单向流。对于客户端来说,在Connection ID为A的单向连接上建立有一个Uniflow ID为1的发送单向流,并且客户端在Uniflow ID为1的单向流上向服务端传输数据。对应的,对于服务端来说,Connection ID为A且Uniflow ID为1的单向流为接收单向流,并且服务端在该Uniflow ID为1的单向流上接收客户端传输的数据。
类似的,客户端上还在Connection ID为B的单向连接上建立有一个Uniflow ID为0的发送单向流、Connection ID为C的单向连接上建立有一个Uniflow ID为2的接收单向流、Connection ID为D的双向连接上建立有一个Uniflow ID为3的接收单向流、ConnectionID为E的双向连接上建立有一个Uniflow ID为4的接收单向流。
在图1中(B)所示的场景中,客户端可以在Uniflow ID为0的发送单向流上向服务端发送一个请求报文1,该报文的QUIC头中写入该单向流所对应连接的Connection ID的值B。对于服务端来说,服务端在接收到请求报文1后,根据Connection ID与Uniflow ID的映射关系,得知该报文来源于Uniflow ID为0的接收单向流(对于客户端来说,为Uniflow ID为0的发送单向流)。服务端在收到请求报文1后,服务端向客户端发送包括MP_ACK帧的回复报文1。其中,该MP_ACK帧包括有Uniflow ID字段,且该字段的值为0,用于告知对端:该MP_ACK帧用于答复在Uniflow ID为0的接收单向流接收到的请求报文1。
在这种情况下,对于服务端来说,服务器可以在Uniflow ID为2的发送单向流、Uniflow ID为3的发送单向流或Uniflow ID为4的发送单向流中任意选择一个发送单向流来传输回复报文1。与请求报文1类似,回复报文1的QUIC头中写入该发送单向流所对应连接的Connection ID的值。如图1中(B)所示的场景中,服务端选择Connection ID为E的连接发送回复报文1,则该回复报文1的报头中Connection ID的值为E。
与QUIC协议类似的,MPQUIC协议的客户端与服务端建立的单向流可以承载在一条物理路径上。客户端与服务端可以将Uniflow ID映射到路径四元组(源IP、源端口、目标IP、目标端口)上以确定该单向流对应的物理路径。
图2为客户端通过多条物理路径与服务端进行通信的一个示例性示意图。
如图2所示,客户端可以为移动终端,例如手机。手机同时通过基站以及路由器与服务端进行通信。示例性的,基站向手机分配的IP地址为IP1,路由器向手机分配的IP地址为IP2,手机上源端口为80。服务端的IP地址为IP3,服务端上目标端口为1314。在该情况下,手机可以通过第一物理路径:(IP1、80、IP3、1314)以及第二物理路径:(IP2、80、IP3、1314)与服务端进行通信。
图3为图2中客户端与服务端通过多个路径进行通信的一个示例性示意图。
如图3所示,手机向路由器发送请求报文1,并同时向基站发送请求报文2。服务端在接收到请求报文1和请求报文2后,选择物理路径2发送确认报文。对应的,手机从路由器上接收包含MP_ACK帧的确认报文,确认报文可以告知客户端:服务端已经收到请求报文1和请求报文2。服务端向手机选择物理路径2发送回复报文1,选择物理路径1发送回复报文2。对应的,手机从路由器上接收回复报文1,手机从基站上接收回复报文2。
其中,请求报文1、请求报文2、回复报文1、回复报文2的QUIC头的目的ConnectionID与Uniflow ID存在明确的映射关系,确认报文中包含Uniflow ID。
可以理解的是,MPQUIC协议可以通过利用客户端与服务端之间的多条物理路径,提高传输性能。
(3)QUIC报文、QUIC帧:
QUIC报文是QUIC协议中一个完整的可处理单元,QUIC报文可以承载在UDP或数据包传输层安全性(datagram transport layer security,DTLS)协议上,QUIC报文可以通过一个连接或单向流传输,其报文的格式可以分为短报头和长报头。其中短报头的格式如表1所示。
表1
如表1所示,表1中第一行和第二行为QUIC报文的报头,表1中第三行、第四行为QUIC帧。QUIC报文中可以封装有至少一个QUIC帧。其中,Public Flags字段长度可以为8Bit,可以根据QUIC协议进行配置;Connection ID字段长度可以为0、8、32、64Bit,用于标识连接;QUIC Version(opt)字段长度可以为32Bit,用于表示当前设备上运行的QUIC协议版本号;Packet Number的字段长度可以与Public Flags中的字段值有关,用于表示QUIC报文的序列号;Type字段用于表示该QUIC报文上承载QUIC帧的帧类型,Payload字段用于表示承载QUIC帧的数据。
QUIC帧可以为很多种不同类型的帧,在此不做限定,例如,QUIC帧可以是Stream帧、ACK帧、MP_ACK帧、协议控制帧(例如,NEW_CONNECTION_ID帧、RESET_STREAM帧)等。Stream帧可以用于区分并承载一个应用的不同业务流。ACK帧为在QUIC会话中服务端用于答复客户端发送的QUIC帧。MP_ACK帧为在MPQUIC会话中服务端用于答复客户端发送的QUIC报文。
多个QUIC帧可以合包成一个QUIC报文。以Stream帧为例,多个Stream帧可以合包成一个QUIC报文,其格式可以如表2所示:
表2
表2所示的QUIC报文的报头Public Flags、Connection ID、QUIC Version(opt)、Packet Number、Type字段可以参考表1中的文字描述,此处不再赘述。Stream ID字段可以用于标识Stream帧;Offset字段可以用于表示Stream帧的字节偏移量;DataLen字段可以用于表示Stream帧的字段长度。
QUIC帧合包后可以生成QUIC报文,QUIC报文打包后可以生成网络报文。网络报文的报头包括表示优先级的字段,例如IP报文报头的DSCP字段,以太报文报头的CoS字段等,此处不做限定。
本申请实施例中,在客户端上,网络报文的优先级与该网络报文中QUIC帧的优先级具有第一关联关系。
该第一关联关系可以为多种不同类型的关联关系:例如,该第一关联关系可以为继承关系。示例性的,网络报文的优先级与QUIC帧的优先级相同;再如,该第一关联关系可以为映射关系。示例性的,网络报文的优先级范围为1-8,QUIC帧的优先级范围为1-64, 其中表示向上取整。可以理解的是,除了上述继承关系、映射关系外,该第一关联关系还可以为其他类型的关联关系,此处不作限定。
QUIC报文包含的QUIC帧越多,QUIC报文的带宽和计算开销越低。客户端在发送QUIC报文时,可以等待一段时间,以尽可能的将多个QUIC帧进行合包成QUIC报文。QUIC发包模块在连接或单向流的路径最大传输单元(path maximum transmission unit,PMTU)和剩余带宽允许的条件下,会尽可能多地将缓存中的QUIC帧合包到一个QUIC报文进行传输。
(4)QUIC会话:
本申请实施例中,除非另有说明,可以将基于QUIC协议和MPQUIC协议建立的会话均称为QUIC会话。QUIC会话可以为表示层实体或用户进程建立通信并在通信上数据传输的过程。
QUIC会话的双方为客户端和服务端。以客户端为例,响应于客户端创建业务会话,客户端与服务端可以创建QUIC会话。该QUIC会话可以被多个应用共用,也可以只供单个应用使用,此处不作限定。例如,客户端上的应用A、应用B需要访问的服务器均为服务器A,在该情况下,应用A可以与服务器A建立QUIC会话1进行数据交互,应用B可以与服务器A建立QUIC会话2进行数据交互;或者应用A、应用B可以通过同一个QUIC会话1与服务器A进行数据交互。
其中,客户端创建的业务会话可以有多种不同类型,例如Http会话、RTP会话等,在此不作限定。客户端在业务会话中可以创建业务流,每个业务流都可以有自己的优先级,不同业务流之间的优先级可以相同,也可以不同。根据业务会话的类型不同,业务流也可以有很多种,例如Http业务流、RTP业务流等,在此不作限定。
每个业务流中可以包括多个业务报文,客户端可以将业务报文拆解、封装生成至少一个Stream帧。在业务流的一个报文负载较大的情况下,业务流的一个报文可以被拆分为多个Stream帧。除了第一个Stream帧之外的其他Stream帧都包含offset字段用于表示偏移量信息,最后一个Stream帧包含FIN标识用于表示该Stream帧为最后一个帧。其中,Stream帧的内容可以参考术语解释中(3)QUIC报文、QUIC帧中的文字描述,此处不再赘述。
并且业务流可以指定该业务流的业务报文拆解、封装生成的QUIC帧(例如Stream帧)的优先级。不同业务流的业务报文拆解、封装后的QUIC帧会写入到缓存区并存储,然后在缓存区等待被读取。其中,在缓存区可以采用多种不同的数据结构来存储QUIC帧,例如数据结构可以是队列、数组等,在此不做限定。QUIC帧被读取的顺序与在缓存区存储QUIC帧的数据结构有关。例如,当数据结构为队列时,先被写入缓存区的QUIC帧会被先读取。
类似的,QUIC会话中,客户端或客户端上的协议栈也可以产生其他类型的QUIC帧,例如ACK帧、MP_ACK帧、NEW_CONNECTION_ID帧等。例如,在MPQUIC会话中,客户端在建立连接时会产生NEW_CONNECTION_ID帧。在该情况下,客户端或客户端上的协议栈可以直接指定该QUIC帧的优先级,并将该QUIC帧写入缓存区。
在缓存区的QUIC帧被读取后,可以参与QUIC帧的合包过程,即可以将一个或多个QUIC帧合包成为QUIC报文。QUIC帧、QUIC报文以及QUIC帧合包成为QUIC报文的内容可以参考术语解释(3)QUIC报文、QUIC帧中的内容,此处不再赘述。
一个业务流对应的QUIC Stream包含一组有序的Stream帧,客户端可以通过QUIC会话将QUIC Stream中的Stream帧从客户端传输到服务端。
客户端可以在一个连接或单向流上传递多个QUIC Stream的数据到服务端,从而在传输层实现多路复用。在建立客户端与服务端之间的连接或单向流之后,对于每个业务流的传输,QUIC协议提供至少一个QUIC Stream进行数据传输,且QUIC Stream的开启和关闭相比于会话是轻量级的,不会影响QUIC Stream所属的连接或单向流,并且QUIC Stream之间互相独立,不影响各自的传输。QUIC协议中规定,QUIC协议支持上层业务指示QUICStream的优先级。
(5)UDP报文:
UDP报文可以分为UDP报头和UDP数据区两部分。其中,UDP报头可以用于说明该报文的源端口、目的端口、报文长度、校验值。QUIC报文被打包成为UDP报文后,会进一步打包成网络报文进行传输。
在本申请实施例中,UDP报文的UDP数据区包括QUIC报文。表3为UDP报文的一个格式示例:
表3
如表3所示,表3中前两行为UDP报头,第三行为UDP数据区,在本申请实施例中,UDP数据区可以承载QUIC报文。
下面介绍计算机网络中TCP/IP协议簇的现状、QUIC协议相比HTTP/HTTPS/HTTP2的优势、以及QUIC协议中亟待解决的问题。
图4为本申请涉及的计算机网络通信场景的一个示例性示意图。
如图4所示,客户端通过计算机网络与服务端进行通信,完成数据的交互。其中计算机网络的网络层协议可以为HTTP/HTTPS/HTTP2。在传输层,HTTP/HTTPS/HTTP2协议的大部分实现都是基于TCP协议的。TCP协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。
对于内容提供商来说,额外的500ms延迟会导致减少20%的浏览量。提高HTTP/HTTPS/HTTP2等协议下的流量传输性能是非常有必要的。QUIC协议旨在将流量、拥塞控制逻辑提升到用户空间,降低客户端数据交互的延迟,使得服务端的内容能够快速部署到客户端上,以提升用户体验。
相比于基于传输层TCP协议的网络层HTTP/HTTPS/HTTP2协议与服务端进行通信,使用QUIC协议进行通信带来至少三个优点:1、低握手时延;2、避免队头阻塞;3、一个ACK/MP_ACK帧可以答复多个请求。
其中,关于QUIC协议的低握手时延包括:
QUIC协议实现是基于UDP协议的,有效规避了TCP协议建立链接所需的三次握手;进一步的,QUIC协议规定使用迪菲·赫尔曼(Diffie-Hellman,DF)加密算法,有效规避了HTTPS协议中TLS握手。
图5为本申请涉及的HTTPS协议与QUIC协议握手对比的一个示例性示意图。
如图5中(A)所示,HTTPS的握手过程可能需要耗费3个往返时间(round-triptime,RTT),3个往返时间分别为:TCP握手、TLS握手1和TLS握手2。如图5中(B)所示QUIC握手可能需要耗费1个RTT或者0个RTT。QUIC支持在传输层连接或单向流建立的同时进行TLS1.3握手,使得QUIC握手的延时更低;当QUIC协议中客户端与服务端之间保留上次QUIC会话的相关加密信息和共享密钥,可以完成0个RTT的握手。
其中,关于QUIC协议的避免队头阻塞包括:
传输层TCP协议规定客户端的数据需要有序传输到服务端,即数据包的TCP序号严格递增。当服务端接收到多个数据包,其中TCP序号较小的第一数据包发生了丢包,则TCP序号大于第一数据包TCP序号的数据包需要在服务端的缓存区中等待,直到第一数据包重传成功,服务端才能将TCP序号大于第一数据包TCP序号的数据包传输给应用层。
与TCP协议不同,QUIC协议实现是基于UDP协议的,并且引入了QUIC Stream的概念,可以在一个连接或单向流上独立的传输多条流的数据,即在一个连接或单向流独立的传输多个QUIC Stream的QUIC帧数据。
图6为本申请涉及的TCP协议与QUIC协议中数据传输场景的一个示例性示意图。
如图6中(A)所示,对于HTTP2协议的客户端以及服务端来说,客户端上创建有四个业务流,并且四个业务流的数据通过一条TCP连接传输到服务端。其中,四个业务流的数据可以分别为网络报文1、网络报文2、网络报文3、网络报文4,其TCP序号递增。其中,网络报文1的数据已经正确达到,并被应用层读取,但是网络报文2的第三个TCP报文段丢失。在该情况下,即使网络报文3和网络报文4的数据正确达到服务端,服务端仍需要等待网络报文2的重传成功,使得网络报文3和网络报文4的数据被阻塞。
如图6中(B)所示,对于QUIC协议的客户端以及服务端来说,客户端上同样创建有四个业务流,并且四个业务流的数据通过一个连接或单向流传输到服务端。其中,四个业务流的数据分别为网络报文1、网络报文2、网络报文3、网络报文4。同样的,网络报文2中的QUIC报文丢包,并不影响网络报文1、网络报文3、网络报文4的数据传输,即网络报文3、网络报文4数据到达接收端时,应用层可以直接读取。
其中,关于QUIC协议的一个ACK/MP_ACK帧可以答复多个请求。
TCP协议中规定,服务端接收到数据后,会回复一个ACK帧通知客户端已经收到并处理了报文。ACK帧用于确认服务端已经接收到ACK确认号前面的所有数据。例如,发送端发送一个数据序号是15,数据长度是10的数据包,服务端在成功接收到该数据包后会返回一个确认号为26的ACK数据包。
QUIC协议中规定,服务端接收到数据后,可以回复一个ACK/MP_ACK帧通知客户端已经收到并处理了报文。ACK/MP_ACK帧包括ACK Range字段。ACK Range字段包含交替未确认和确认数据包的范围。故,QUIC协议中服务端通过回复一个ACK/MP_ACK帧可以通知客户端已经收到并处理的多个QUIC报文。
即使QUIC协议具有这些优势,但QUIC协议中也还存在一些亟待解决的问题:
现有的QUIC协议中仅仅规定了,QUIC协议的实现应该提供应用程序可以指示QUICStream的相对优先级的方法。并且,为了降低QUIC报文头、UDP报文头、IP报文头的开销以及TLS1.3加密的开销,客户端应当将多个QUIC帧合包成为一个QUIC报文。
对于客户端来说,在客户端上可能存在多个优先级不一样的QUIC Stream的情况下,如何将多个优先级不一样的QUIC帧合包进行发送,将直接影响到采用QUIC协议的客户端与服务端之间的交互延时、以及数据交互吞吐率。
示例性的,一种QUIC帧合包的技术方案可以为:在一个连接或单向流上建立一个发包队列,将该发包队列中多个优先级不同的QUIC帧合包到一个QUIC报文中;或,将一个发包队列中连续且优先级相同的QUIC帧合包到一个QUIC报文中。
图7为QUIC会话架构的一个示例性示意图。
如图7所示,该QUIC会话架构包括流控制器、往返时间统计、拥塞控制器、调度器、发包模块、收包模块、以及连接或单向流。其中,流控制器用于配置连接或单向流级以及QUIC Stream级的流量控制。其中,往返时间统计用于估计不同连接或单向流的传输时延。其中,拥塞控制器类似于TCP的拥塞控制器,用于包括配置端级别的流量控制。其中,调度器用于包括配置QUIC Stream或QUIC帧的传输路径。其中,发包模块用于包括对QUIC帧进行合包,并对合包得到的QUIC报文打包成网络报文。其中,收包模块用于包括对收到的网络进行解封装,获得QUIC帧。
当客户端与服务端建立的是MPQUIC会话时,相比于QUIC会话架构,MPQUIC会话架构还包括会话路径管理器。其中,会话路径管理器包括多种选路规则,并且可以根据选路规则将承载业务流数据传输的连接或单向流配置到指定的物理路径上。
例如,客户端上的业务流包括业务流1、业务流2。客户端可以根据往返时间统计、拥塞控制器、调度器等确定将业务流1的报文传输配置到连接1或单向流1上。
图8至图10为本申请涉及的一种QUIC帧合包的技术方案的一个示例性示意图。
如图8至图10所示,客户端与服务端建立有QUIC会话。客户端上存在有业务流,包括流1和流2,流1的优先级和流2的优先级不同。客户端配置流1和流2的数据在同一个连接或单向流上传输。客户端将流1对应的QUIC帧和流2对应的QUIC帧写入发包队列中,按照QUIC帧被读取的顺序,分别为:流1的QUIC帧1、流1的QUIC帧2、流2的QUIC帧1、流1的QUIC帧3、流2的QUIC帧2。
如图8所示,当客户端将发包队列中多个优先级不同的QUIC帧合包到一个QUIC报文中的合包方法时,客户端可以将流1的QUIC帧1、流1的QUIC帧2、流2的QUIC帧1合包到一个QUIC报文中,并将该QUIC报文打包成网络报文。这样使得该网络报文的优先级要么只能与流1的优先级对应,要么只能与流2的优先级对应,则无法同时与流1的优先级和流2的优先级对应。
如图9所示,当客户端将发包队列中连续且优先级相同的QUIC帧合包到一个QUIC报文中,客户端可以将流1的QUIC帧1、流1的QUIC帧2合包到QUIC报文1中,将流2的QUIC帧1合包到QUIC报文2中。客户端之后将QUIC报文打包成网络报文。
如图10所示,客户端将发包队列中的QUIC帧单独合包,客户端合包生成5个QUIC报文,并打包成网络报文。
可以理解的是,由于不同优先级的业务流对应的QUIC帧在发包队列中读取顺序的随机性,导致QUIC帧的合包过程中不能同时兼顾充分合包和保证网络报文中只含有相同优先级的QUIC帧。
示例性的,另一种QUIC帧合包的技术方案可以为:客户端为不同优先级的业务流分配一个连接或单向流用于数据传输,并通过QoS管理每个连接或单向流的传输优先级实现业务流优先级的处理意图。
图11为本申请涉及的通过Qos实现业务流的优先级方法的一个示例性示意图。
客户端获取到两个IP地址。其中第一IP地址为IP1,IP1为客户端设备通过蜂窝接入获取得到的IP地址;第二IP地址为IP2,IP2为客户端设备通过非蜂窝接入获取得到的IP地址。在图10所示的场景中,QUIC会话中的服务端为用户端口功能。客户端设备与用户端口功能可以存在四个连接,分别为连接1、连接2、连接3、连接4。其中,连接1至连接4分别用于承载不同优先级业务流的数据传输。并且,连接1至连接4均受到QoS策略管理。
图12为图11所示场景中网络报文传输流程的一个示例性示意图。
如图12所示,客户端设备上的运行有三个应用程序,每个应用程序分别创建有一个业务流,分别为APP-A业务流、APP-B业务流、APP-C业务流。其中,每个业务流产生有IP报文,APP-A业务流产生的IP报文为A报文、APP-B产生的IP报文为B报文,APP-C产生的IP报文为C报文。
A报文、B报文、C报文的传输首先会被配置到不同连接或单向流上。其中,A报文、C报文会被配置到非蜂窝接口对应的连接或单向流上,B报文会被配置到蜂窝接口对应的连接或单向流上。具体的,A报文、C报文在连接1上进行传输,B报文在连接4上传输。
其次,按照现有的QUIC协议,A报文、B报文、C报文进行拆解、封装得到QUIC帧,并将QUIC帧合包、打包成IP报文进行发送。
其中,APP-A的优先级与APP-C的优先级相同,则APP-A与APP-C对应的QUIC Stream均通过连接1与QUIC代理网关进行数据交互。APP-B对应的QUIC Stream可以通过连接4与QUIC代理网关进行数据交互。不同的连接分别映射为不同的QoS流,并且遵循QoS策略的管理。例如QoS策略对QoS流1的管理,相当于管理连接1;QoS策略QoS流2的管理,相当于管理连接4。进一步的,可以通过QoS策略管理QoS流1和QoS流2,实现APP-A业务流、APP-B业务流、APP-C业务流的优先级对应的处理意图。
可以理解的是,为不同优先级的业务流分配一个连接或单向流用于数据传输,并通过额外引入QoS策略管理连接或单向流,能够实现按客户端上业务流的优先级处理业务流对应的网络报文。为不同优先级的业务流分配一个连接或单向流,需要增加不必要的连接或单向流,并且实现QoS策略管理需要额外的资源开销。
为了在不增加连接或单向流的情况下,实现QUIC帧充分合包以及实现QUIC帧合包、打包后的网络报文的优先级与该QUIC帧的优先级具有第一关联关系,本方案提出一种数据处理方法,该方法针对同一个连接或单向流配置有多个优先级的发包队列,不同优先级的发包队列中存储有对应优先级的QUIC帧。客户端可以依次读取不同优先级的发包队列中的QUIC帧进行合包以及打包,提高了合包效率,节省网络带宽。
图13为本申请实施例中数据处理方法架构的一个示例性示意图。
如图13所示,并结合图7所示的内容,本申请提供的数据处理方法为连接或单向流提供了多个发包队列,发包模块可以从发包队列中读取QUIC帧进行合包。
例如,客户端上存在有业务流1和业务流2。客户端可以根据往返时间统计、拥塞控制器、调度器等确定将业务流1和业务流2的数据传输配置到连接1或单向流1上。其中,该连接1或单向流1配置有三个发包队列,包括发包队列1、发包队列2、发包队列3。
以Stream帧为例,业务流1和业务流2的优先级不同,故可以根据客户端上预配置的映射规则,将业务流1拆解、封装后得到的Stream帧写入发包队列1中,等待发包模块进行合包、打包、发送;同理,将业务流2拆解、封装后得到的Stream帧写入发包队列2中,等待发包模块进行合包、打包、发送。同理,客户端可以将除Stream帧之外的其他QUIC帧写入发包队列中。
客户端根据调度器可以确定发包模块检查发包队列的顺序。发包模块检查到任一发包队列时,将发包队列中积压的QUIC帧合包成QUIC报文,并将QUIC报文打包成网络报文,进行发送。
下面介绍本申请提供的电子设备:
本申请实施例中电子设备可以为移动电子设备,也可以为PC,此处不作限定。
示例性的,图14为本申请实施例提供的电子设备100的一个结构示意图。
下面以电子设备100为例对实施例进行具体说明。应该理解的是,电子设备100可以具有比图中所示的更多的或者更少的部件,可以组合两个或多个的部件,或者可以具有不同的部件配置。图中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
电子设备100可以包括:处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本发明实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
I2C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。在一些实施例中,处理器110可以包含多组I2C总线。处理器110可以通过不同的I2C总线接口分别耦合触摸传感器180K,充电器,闪光灯,摄像头193等。例如:处理器110可以通过I2C接口耦合触摸传感器180K,使处理器110与触摸传感器180K通过I2C总线接口通信,实现电子设备100的触摸功能。
I2S接口可以用于音频通信。在一些实施例中,处理器110可以包含多组I2S总线。处理器110可以通过I2S总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。在一些实施例中,音频模块170可以通过I2S接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。
PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过PCM总线接口耦合。在一些实施例中,音频模块170也可以通过PCM接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。所述I2S接口和所述PCM接口都可以用于音频通信。
UART接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,UART接口通常被用于连接处理器110与无线通信模块160。例如:处理器110通过UART接口与无线通信模块160中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块170可以通过UART接口向无线通信模块160传递音频信号,实现通过蓝牙耳机播放音乐的功能。
MIPI接口可以被用于连接处理器110与显示屏194,摄像头193等外围器件。MIPI接口包括摄像头串行接口(camera serial interface,CSI),显示屏串行接口(displayserial interface,DSI)等。在一些实施例中,处理器110和摄像头193通过CSI接口通信,实现电子设备100的拍摄功能。处理器110和显示屏194通过DSI接口通信,实现电子设备100的显示功能。
GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,GPIO接口可以用于连接处理器110与摄像头193,显示屏194,无线通信模块160,音频模块170,传感器模块180等。GPIO接口还可以被配置为I2C接口,I2S接口,UART接口,MIPI接口等。
SIM接口可以被用于与SIM卡接口195通信,实现传送数据到SIM卡或读取SIM卡中数据的功能。
USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间数据传输。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备等。
可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,和无线通信模块160等供电。
电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(codedivision multiple access,CDMA),宽带码分多址(wideband code division multipleaccess,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(global navigation satellite system,GLONASS),北斗卫星导航系统(beidounavigation satellite system,BDS),准天顶卫星系统(quasi-zenith satellitesystem,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。
电子设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
ISP用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头193中。
摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备100可以包括1个或N个摄像头193,N为大于1的正整数。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
内部存储器121可以包括一个或多个随机存取存储器(random access memory,RAM)和一个或多个非易失性存储器(non-volatile memory,NVM)。
随机存取存储器可以包括静态随机存储器(static random-access memory,SRAM)、动态随机存储器(dynamic random access memory,DRAM)、同步动态随机存储器(synchronous dynamic random access memory,SDRAM)、双倍资料率同步动态随机存取存储器(double data rate synchronous dynamic random access memory,DDR SDRAM,例如第五代DDR SDRAM一般称为DDR5 SDRAM)等;
非易失性存储器可以包括磁盘存储器件、快闪存储器(flash memory)。
快闪存储器按照运作原理划分可以包括NOR FLASH、NAND FLASH、3D NAND FLASH等,按照存储单元电位阶数划分可以包括单阶存储单元(single-level cell,SLC)、多阶存储单元(multi-level cell,MLC)、三阶储存单元(triple-level cell,TLC)、四阶储存单元(quad-level cell,QLC)等,按照存储规范划分可以包括通用闪存存储(英文:universalflash storage,UFS)、嵌入式多媒体存储卡(embedded multi media Card,eMMC)等。
随机存取存储器可以由处理器110直接进行读写,可以用于存储操作系统或其他正在运行中的程序的可执行程序(例如机器指令),还可以用于存储用户及应用程序的数据等。
非易失性存储器也可以存储可执行程序和存储用户及应用程序的数据等,可以提前加载到随机存取存储器中,用于处理器110直接进行读写。
外部存储器接口120可以用于连接外部的非易失性存储器,实现扩展电子设备100的存储能力。外部的非易失性存储器通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部的非易失性存储器中。
电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
扬声器170A,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备100可以通过扬声器170A收听音乐,或收听免提通话。
受话器170B,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备100接听电话或语音信息时,可以通过将受话器170B靠近人耳接听语音。
麦克风170C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风170C发声,将声音信号输入到麦克风170C。电子设备100可以设置至少一个麦克风170C。在另一些实施例中,电子设备100可以设置两个麦克风170C,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,电子设备100还可以设置三个,四个或更多麦克风170C,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。
耳机接口170D用于连接有线耳机。耳机接口170D可以是USB接口130,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the USA,CTIA)标准接口。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。压力传感器180A的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器180A,电极之间的电容改变。电子设备100根据电容的变化确定压力的强度。当有触摸操作作用于显示屏194,电子设备100根据压力传感器180A检测所述触摸操作强度。电子设备100也可以根据压力传感器180A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。
陀螺仪传感器180B可以用于确定电子设备100的运动姿态。在一些实施例中,可以通过陀螺仪传感器180B确定电子设备100围绕三个轴(即,x,y和z轴)的角速度。陀螺仪传感器180B可以用于拍摄防抖。示例性的,当按下快门,陀螺仪传感器180B检测电子设备100抖动的角度,根据角度计算出镜头模组需要补偿的距离,让镜头通过反向运动抵消电子设备100的抖动,实现防抖。陀螺仪传感器180B还可以用于导航,体感游戏场景。
气压传感器180C用于测量气压。在一些实施例中,电子设备100通过气压传感器180C测得的气压值计算海拔高度,辅助定位和导航。
磁传感器180D包括霍尔传感器。电子设备100可以利用磁传感器180D检测翻盖皮套的开合。在一些实施例中,当电子设备100是翻盖机时,电子设备100可以根据磁传感器180D检测翻盖的开合。进而根据检测到的皮套的开合状态或翻盖的开合状态,设置翻盖自动解锁等特性。
加速度传感器180E可检测电子设备100在各个方向上(一般为三轴)加速度的大小。当电子设备100静止时可检测出重力的大小及方向。还可以用于识别电子设备姿态,应用于横竖屏切换,计步器等应用。
距离传感器180F,用于测量距离。电子设备100可以通过红外或激光测量距离。在一些实施例中,拍摄场景,电子设备100可以利用距离传感器180F测距以实现快速对焦。
接近光传感器180G可以包括例如发光二极管(LED)和光检测器,例如光电二极管。发光二极管可以是红外发光二极管。电子设备100通过发光二极管向外发射红外光。电子设备100使用光电二极管检测来自附近物体的红外反射光。当检测到充分的反射光时,可以确定电子设备100附近有物体。当检测到不充分的反射光时,电子设备100可以确定电子设备100附近没有物体。电子设备100可以利用接近光传感器180G检测用户手持电子设备100贴近耳朵通话,以便自动熄灭屏幕达到省电的目的。接近光传感器180G也可用于皮套模式,口袋模式自动解锁与锁屏。
环境光传感器180L用于感知环境光亮度。电子设备100可以根据感知的环境光亮度自适应调节显示屏194亮度。环境光传感器180L也可用于拍照时自动调节白平衡。环境光传感器180L还可以与接近光传感器180G配合,检测电子设备100是否在口袋里,以防误触。
指纹传感器180H用于采集指纹。电子设备100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。
温度传感器180J用于检测温度。在一些实施例中,电子设备100利用温度传感器180J检测的温度,执行温度处理策略。例如,当温度传感器180J上报的温度超过阈值,电子设备100执行降低位于温度传感器180J附近的处理器的性能,以便降低功耗实施热保护。在另一些实施例中,当温度低于另一阈值时,电子设备100对电池142加热,以避免低温导致电子设备100异常关机。在其他一些实施例中,当温度低于又一阈值时,电子设备100对电池142的输出电压执行升压,以避免低温导致的异常关机。
触摸传感器180K,也称“触控面板”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于电子设备100的表面,与显示屏194所处的位置不同。
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。
马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。作用于显示屏194不同区域的触摸操作,马达191也可对应不同的振动反馈效果。不同的应用场景(例如:时间提醒,接收信息,闹钟,游戏等)也可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。
指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和电子设备100的接触和分离。电子设备100可以支持1个或N个SIM卡接口,N为大于1的正整数。SIM卡接口195可以支持Nano SIM卡,Micro SIM卡,SIM卡等。同一个SIM卡接口195可以同时插入多张卡。所述多张卡的类型可以相同,也可以不同。SIM卡接口195也可以兼容不同类型的SIM卡。SIM卡接口195也可以兼容外部存储卡。电子设备100通过SIM卡和网络交互,实现通话以及数据通信等功能。
本申请实施例中,该处理器110可以通过调用该内部存储器121中存储的计算机指令,以使得该电子设备100执行本申请实施例中的数据处理方法。
示例性的,图15为本申请实施例提供的电子设备100的另一个结构示意图。
该电子设备100包括:
输入装置201、输出装置202、处理器203和存储器204(其中电子设备200中的处理器203的数量可以一个或多个,图15中以一个处理器203为例)。在本申请的一些实施例中,输入装置201、输出装置202、处理器203和存储器204可通过总线或其它方式连接,其中,图17中以通过总线连接为例。
其中,处理器203通过调用存储器204存储的操作指令以使得电子设备200执行本申请实施例中的数据处理方法。
示例性的,图16为本申请实施例中电子设备100的一个软件结构示意框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将系统分为四层,从上至下分别为应用程序层,应用程序框架层,运行时和系统库,以及内核层。
应用程序层可以包括一系列应用程序包。
如图16所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序(也可以称为应用)。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图16所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器,本地Profile管理助手(Local Profile Assistant,LPA)等。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供电子设备100的通信功能。例如通话状态的管理(包括接通,挂断等)。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话界面形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
运行时包括核心库和虚拟机。运行时负责安卓系统的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),二维图形引擎(例如:SGL)等。
系统库还包括QUIC库,QUIC库中配置有本申请提供的数据处理方法的实现方法。通过利用QUIC库提供的方法,应用程序可以建立QUIC会话,并执行本申请实施例中的QUIC帧合包方法,完成与计算机网络的通信。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了二维(2-Dimensional,2D)和三维(3-Dimensional,3D)图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
三维图形处理库用于实现3D图形绘图,图像渲染,合成,和图层处理等。
2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动,虚拟卡驱动。
下面介绍本申请提供的数据处理方法的技术方案:
图17为本申请实施例中的数据处理方法的一个示例性示意图。
如图17所示,本申请实施例中的数据处理方法包括:
S1701:响应于业务会话建立,建立QUIC会话。
响应于客户端上的应用创建业务会话,客户端与服务端协商建立QUIC会话。
其中,客户端、服务端、QUIC会话、业务会话的内容可以参考上述术语解释中(1)QUIC协议、(4)QUIC会话中的文字描述,此处不再赘述。
客户端根据本身协议栈的能力,可以建立QUIC会话或者MPQUIC会话,在此不做限定。
S1702:建立连接或单向流,并为每个连接或单向流配置多个发包队列,不同发包队列有不同的优先级。
客户端创建QUIC会话后,客户端会与服务端建立至少一个连接或单向流用于数据传输。
客户端会为每个连接或单向流配置多个发包队列,不同的发包队列有不同的优先级。对应的,服务端同样会为每个连接或单向流配置多个收包队列,不同的收包队列有不同的优先级。即,客户端可以根据发包队列的优先级唯一确定一个发包队列。
在本申请的一些实施例中,客户端为可以根据网络报文的优先级数量确定为连接或单向流配置发包队列的数量和/或优先级。例如,客户端在和服务端建立QUIC会话后,客户端建立连接1,并可以根据RFC791协议为连接1配置8个发包队列。其中,发包队列的优先级分别为0、1、2、3、4、5、6、7。
在本申请的一些实施例中,客户端在为连接或单向流配置发包队列时,还可以同时配置每个发包队列的深度、缓存等参数。
在本申请的一些实施例中,服务端为每个连接或单向流配置的收包队列与客户端上的发包队列数量、优先级相同。
其中,连接、单向流的内容可以参考上述术语解释中(1)QUIC协议中的文字描述,此处不再描述。
本申请的一些实施例中,客户端在建立连接或单向流后,可以暂时不为连接或单向流配置多个发包队列。
可选的,客户端在建立连接或单向流后,可以当客户端根据调度器确定在该连接或单向流上传输业务会话的数据时,客户端为该连接或单向流配置多个发包队列。
可选的,客户端在建立连接或单向流后,可以当客户端确定业务会话的数据会被写入该连接或单向流上的特定优先级的发包队列中时,客户端为该连接或单向流配置该特定优先级的发包队列。
S1703:获取QUIC帧,以及QUIC帧的优先级。
响应于QUIC协议或MPQUIC协议中规定的情形,客户端产生QUIC帧。以Stream帧为例,响应于客户端上的业务会话创建业务流,或者响应于业务流的报文发送动作,客户端将业务流的一个报文拆解、封装成一个或多个Stream帧。其中,客户端上的一个业务会话可以建立多个业务流。
客户端可以直接配置QUIC帧的优先级,或者客户端遵循QUIC协议或MPQUIC协议中的规定,为QUIC帧配置优先级。以客户端配置Stream帧的优先级为例,客户端上的业务流可以指定该业务流的报文拆解、封装得到的Stream帧的优先级。
其中,业务流、Stream帧、QUIC帧、QUIC帧的优先级的内容可以参考术语解释中(3)QUIC报文、QUIC帧与(4)QUIC会话中的文字描述,此处不再赘述。
S1704:根据第一映射规则,确定QUIC帧的不同优先级对应的发包队列,并将不同优先级的QUIC帧写入各自对应的发包队列中。
客户端根据调度器的调度策略,可以为各QUIC stream的数据传输选择合适的连接/单向流。在本申请实施例中,调度策略可以包括最小时延优先、最小RTT优先等。
客户端选择合适的连接/单向流进行数据传输后,可以根据第一映射规则,确定各QUIC stream中QUIC帧的不同优先级与发包队列优先级的对应关系,进而确定不同优先级的QUIC帧与发包队列的对应关系。
其中,第一映射规则为本地预配置的映射规则,第一映射规则将QUIC帧的优先级映射为发包队列的优先级,并确定QUIC帧与发包队列的对应关系。客户端可以根据应用层协议配置映射规则或客户端可以根据QUIC隧道内层协议优先级的定义往QUIC/MPQUIC层配置映射规则,此处不做限定。
在本申请实施例中,第一映射规则可以是多对一的,也可以是一对一的。
例如,客户端上的QUIC帧1的优先级为1,QUIC帧2的优先级为2。客户端配置QUIC帧1和QUIC帧2均在连接1上进行数据传输。客户端在连接1上配置有2个发包队列,发包队列1的优先级为1,发包队列2的优先级为2。客户端上可以有预先配置的映射规则f1,其中,f1的映射规则为:QUIC帧的优先级等于发包队列的优先级。则客户端根据发包队列的优先级、QUIC帧的优先级和映射规则f1,可以确定QUIC帧1对应的发包队列为发包队列1,以及QUIC帧2对应的发包队列为发包队列2。在确定QUIC帧与发包队列的对应关系后,客户端可以将不同优先级的QUIC帧写入各自对应的发包队列中。
在本申请的一些实施例中,客户端确定该QUIC帧所对应的发包队列后,可以将该QUIC帧对应的QUIC Stream中的所有Stream帧写入该发包队列中;或者,可以将该QUIC帧对应的业务流拆解、封装得到的所有QUIC帧写入该发包队列中。
S1705:按照发包队列优先级顺序检查发包队列,将发包队列中的QUIC帧合包成QUIC报文。
客户端上的发包模块按照发包队列优先级顺序检查发包队列,发现任一发包队列中存在有等待被发送的QUIC帧,根据PMTU和剩余带宽,将发包队列中的QUIC帧合包成QUIC报文。
在本申请的实施例中,客户端上的发包模块可以由单线程维护,即在同一时刻检查一个发包队列,并对QUIC帧进行合包;客户端上的发包模块可以由多线程维护,即在同一时刻可以检查多个发包队列,并对QUIC帧进行合包。
在本申请的一些实施例中,发包模块可以按照其他顺序检查发包队列。例如,发包队列可以按照发包队列中QUIC帧的数量排序检查发包队列。
例如,客户端上的一个连接被配置有2个发包队列,分别为:优先级为1的发包队列1、优先级为2的发包队列2。并且发包队列1中存在有4个QUIC帧,发包队列2中存在有1个QUIC帧。若发包模块按照发包队列优先级顺序检查,且优先级的值越大则优先级越高的情况下,则发包模块先检查发包队列2再检查发包队列1;若发包模块按照发包队列中QUIC帧的数量排序检查,则发包模块先检查发包队列1再检查发包队列2。
在本申请的一些实施例中,若连接或单向流被撤销或删除,客户端可以在发包队列中的QUIC帧发完后,销毁该发包队列。
发包模块将QUIC帧合包成QUIC报文的方法可以参考术语解释中(3)QUIC报文、QUIC帧中的内容,此处不再赘述。
可以理解的是,在同一发包队列中的QUIC帧优先级相同,客户端可以对QUIC帧实现充分合包。
S1706:将QUIC报文打包成网络报文,其中,网络报文的优先级与发包队列的优先级对应。
客户端将QUIC报文打包成网络报文时,可以根据QUIC报文中QUIC帧对应的发包队列的优先级确定网络报文的优先级,并将网络报文的优先级写入网络报文中用于表示优先级的字段中。
具体的,当客户端上为单个连接或单向流配置的发包队列数量与网络报文的优先级等级的数量相同时,可以将发包队列的优先级继承到网络报文的优先级上。
例如,若客户端使用网络报文中IP头的DSCP字段表示网络报文的优先级。根据RFC791协议,DSCP字段的取值范围为0-7。客户端使用连接1进行数据传输,并为连接1配置8个发包队列。其中,发包队列的优先级分别为0、1、2、3、4、5、6、7。由于有发包队列有8个,网络报文的优先级等级也有8个,因此,在优先级为1的发包队列中的QUIC帧合包成为QUIC报文并该QUIC报文打包生成网络报文时,该网络报文可以继承该发包队列的优先级,将该网络报文的优先级也设定为1。
具体的,当客户端上为单个连接或单向流配置的发包队列数量与网络报文优先级等级的数量不同时,可以将发包队列的优先级映射到网络报文的优先级上。其中,该映射关系可以是一对一的,也可以是一对多的。
例如,若客户端使用网络报文中IP头的DSCP字段表示网络报文的优先级。根据RFC2474协议,DSCP字段的取值范围为0-63。客户端使用连接1进行数据传输,并为连接1配置8个发包队列。其中,发包队列的优先级分别为0、1、2、3、4、5、6、7。在该情况下,映射关系可以是网络报文的优先级=发包队列的优先级*8。故,优先级为1的发包队列中的QUIC帧合包成为QUIC报文,该QUIC报文打包生成的网络报文的优先级可以为8。
又例如,客户端使用网络报文中IP头的DSCP字段表示网络报文的优先级。根据RFC791协议,DSCP字段的取值范围为0-7。客户端使用连接1进行数据传输,并为连接1配置16个发包队列。其中,发包队列的优先级分别为0至15。在该情况下,映射关系可以是 其中表示向下取整。故,优先级为0和优先级为1的发包队列中的QUIC帧合包成为QUIC报文后,QUIC报文打包生成的网络报文的优先级可以为0。
可以理解的是,本申请实施例中的数据处理方法保证了网络报文的优先级与网络报文中QUIC帧的优先级具有第一关联关系。
S1707:发送网络报文。
客户端在生成网络报文后,在该网络报文对应的连接或单向流上发送网络报文。
可以理解的是,网络报文在连接或单向流上传输的过程中,网络的中间设备可以按照网络报文的优先级处理该网络报文,等价实现了业务流优先级的处理意图。例如,网络中间设备可以优先转发高优先级的网络报文,使得高优先级的业务流的数据可以提前达到服务端。
S1708:接收并解封装网络报文,获取网络报文的优先级。
服务端根据与客户端建立的连接或单向流接收网络报文后,将该网络报文解封装,得到网络报文的优先级和网络报文中的QUIC帧。服务端将网络报文的优先级作为网络报文中的QUIC帧的优先级。服务端可以根据QUIC帧的优先级,将该QUIC帧写入到该QUIC帧优先级对应的收包队列中;或者,服务端可以将QUIC帧的优先级写入服务端缓存区的对该QUIC帧的描述中。
其中,将QUIC帧写入到该QUIC帧优先级对应的收包队列中的方法可以参考步骤S1704中的描述,此处不再赘述。
值得说明的是,对任一QUIC帧来说,该QUIC帧在客户端上的优先级与该QUIC帧在服务端上的优先级可以不同。
服务端上的业务会话可以根据QUIC帧的优先级顺序读取QUIC帧。例如,服务端上的业务会话可以优先读取高优先级的QUIC帧。
S1709:生成ACK帧或MP_ACK帧,并根据待答复的QUIC帧的优先级确定ACK帧或MP_ACK帧的优先级。
服务端在收到网络报文后,会向客户端发送ACK帧或MP_ACK帧。具体的,当客户端与服务端建立的是QUIC会话,服务端则会向客户端发送ACK帧;若客户端与服务端建立的是MPQUIC会话,服务端会向客户端发送MP_ACK帧。
优选的,ACK帧或MP_ACK帧可以用于答复一组优先级相同的网络报文,此时服务端可以指定这组网络报文的优先级为ACK帧或MP_ACK帧的优先级。其中,一组优先级相同的网络报文可以是一个网络报文也可以是多个优先级相同的网络报文。
可选的,在本申请一些实施例中,ACK帧或MP_ACK帧可以用于答复多个优先级不同的网络报文,此时服务端可以指定这多个网络报文中的最高优先级为该ACK帧或MP_ACK帧的优先级。
在本申请实施例中,服务端接收到的网络报文的优先级与网络报文中待答复的QUIC帧的优先级相同。
S1710:将ACK帧或MP_ACK帧合包成QUIC报文,并将该QUIC报文打包成网络报文。
服务端在确定ACK帧或MP_ACK帧的优先级后,将该ACK帧或MP_ACK合包成为QUIC报文、并将该QUIC报文打包成网络报文。
由于ACK帧和MP_ACK帧均属于QUIC帧,ACK帧和MP_ACK帧合包成为QUIC报文的过程、以及将QUIC报文打包成网络报文的过程可以参考上述步骤S1704、S1705以及S1706中的文字描述,此处不再赘述。
S1711:发送网络报文。
服务端在将ACK帧或MP_ACK帧帧合包成QUIC报文、并将该QUIC报文打包成网络报文后,将该网络报文发送。
本申请一些实施例中,根据终端支持协议能力,客户端与服务端也可以建立MPQUIC会话,在该MPQUIC会话中执行步骤S1701至步骤S1711中的具体方法。
本申请实施例中,将不同优先级的QUIC帧写入到不同优先级的发包队列中,客户端将同一队列中的QUIC帧进行合包,实现了充分合包。进一步的,客户端将合包后的QUIC报文在打包成网络报文时,网络报文的优先级映射于QUIC报文对应发包队列的优先级,保证了网络报文优先级与QUIC帧具有第一关联关系。再进一步的,网络报文在网络中由网络中间设备转发时,网络中间设备按照网络报文的优先级顺序进行转发,使得高优先级的网络报文优先被传输到服务端,有助于实现客户端上业务流的优先级处理意图。再进一步的,服务端通过网络报文的优先级确定网络报文中QUIC帧的优先级,服务端的业务会话可以根据QUIC帧的优先级处理QUIC帧,实现了客户端上业务流的优先级处理意图。
下面结合图17所示的数据处理方法,以图17和图18所示的在MPQUIC会话中的一个连接或单向流上传输不同优先级的业务流数据的场景为例,对本申请实施例中的数据处理方法进行示例性描述:
图18为本申请实施例中客户端上数据处理方法的场景的一个示例性示意图。
如图18所示,客户端与服务端之间建立有MPQUIC会话。并且客户端上的应用可以通过Wifi和LTE两种网络接口对应的物理路径访问对应的服务器。客户端上存在有应用A和应用B,应用A和应用B分别访问各自的服务端并各自创建HTTP 3.0会话。响应于HTTP 3.0会话的建立,客户端为应用A的数据传输创建MPQUIC会话1以及为应用B的数据传输创建MPQUIC会话2。
应用A的HTTP 3.0会话创建有三个业务流,分别为业务流1、业务流2、业务流3;应用B的HTTP 3.0会话创建有一个业务流为业务流4。其中,业务流的优先级分别为:业务流1的优先级为0,业务流2的优先级为2,业务流3的优先级为0,业务流2的优先级为0。并且,业务流的优先级值越高表明该业务流的优先级越高。业务流1、业务流3、业务流4可以用于传输普通业务数据,业务流2可以用于传输应用协议信令数据。
在创建MPQUIC会话后,客户端完成连接或者单向流的建立。其中MPQUIC会话1的客户端与服务端协商建立发送单向流1、发送单向流2、接收单向流3;MPQUIC会话2的客户端与服务端协商创建发送单向流4、接收单向流5。
在MPQUIC会话1中,应用A的业务流被拆解、封装成对应的QUIC Stream。对应的,在MPQUIC会话2中,应用B的业务流被拆解、封装成对应的QUIC Stream。
结合图6、图12所示,客户端根据MPQUIC会话1的调度器确定QUIC Stream1和QUICStream2的数据在发送单向流1上进行传输,QUIC Stream3的数据在发送单向流2上进行传输,客户端根据MPQUIC会话2的调度器确定QUIC Stream4的数据在连发送单向流4上进行传输。
当选路策略为WIFI优先时,高优先级的QUIC Stream的数据被配置到WIFI接口对应的物理路径上进行传输。对应的,低优先级的QUIC Stream的数据被配置到LTE接口对应的物理路径上进行传输。即发送单向流1会被配置到WIFI接口对应的物理路径上;发送单向流2、发送单向流4会被配置到LTE接口对应的物理路径上。
客户端为发送单向流1、发送单向流2、发送单向流4、连接4或发送单向流4分别配置8个不同优先级的发包队列,并且发包队列的优先级为0至7。
示例性的,以QUIC会话1中客户端上的应用A的业务流1和业务流2为例介绍客户端上业务流的数据传输过程:
QUIC Stream1的QUIC帧1、QUIC帧2会被写入连接1或发送单向流1的优先级为0的发包队列中。对应的,QUIC Stream2的QUIC帧1、QUIC帧2会被写入连接1或发送单向流1的优先级为2的发包队列中。
客户端上的发包模块根据发包队列的优先级顺序依次检查连接1或发送单向流1上的发包队列,当检查到优先级为2的发包队列时,根据PMTU和剩余带宽,将QUIC Stream2的QUIC帧1、QUIC帧2合包成为QUIC报文,并将QUIC报文打包成网络报文,并且该网络报文的优先级为2。客户端通过连接2或单向流2将该网络报文发送。
对应的,客户端上的发包模块检查到连接1或发送单向流1上优先级为0的发包队列时,根据PMTU和剩余带宽,将QUIC Stream1的QUIC帧1、QUIC帧2合包成为QUIC报文,并将QUIC报文打包成网络报文,并且该网络报文的优先级为0。客户端通过连接2或单向流2将该网络报文发送。
同理,客户端上QUIC会话1中的应用A的业务流3、QUIC会2中应用B的业务流4的数据传输可以参考应用A的业务流1和业务流2的数据传输过程,此处不再赘述。
图19为图18中MPQUIC会话中服务端接收网络报文场景的一个示例性示意图。
如图19所示,服务端在接收到来自于客户端的网络报文后,对网络报文进行解封装,分别得到各个网络报文的QUIC帧。
示例性的,以QUIC会话1中客户端上的应用A的业务流1和业务流2为例介绍服务端上业务流的数据传输过程:
服务端在接收单向流1上获取网络报文,并对网络报文进行解封装,得到该网络报文的QUIC Stream1的QUIC帧1和QUIC帧2以及QUIC Stream2的QUIC帧1和QUIC帧2。在解封装网络报文时,读取网络报文中用于表示优先级的字段值,确定流1的QUIC帧1和QUIC帧2的优先级为0,流2的QUIC帧1和QUIC帧2的优先级为2。
服务端为接收单向流1配置有8个不同优先级的收包队列,并且收包队列的优先级为0至7。服务端将QUIC Stream1的QUIC帧1和QUIC帧2写入优先级为0的收包队列中,并将QUIC Stream2的QUIC帧1和QUIC帧2写入优先级为2的收包队列中。
同理,服务端获取应用A的业务流3的数据和服务端获取应用B的业务流4的数据的过程可以参考图19所示的服务端获取应用A的业务流1和业务流2的过程,此处不再赘述。
服务端在接收到网络报文后,会向客户端发送MP_ACK帧,其中发送MP_ACK帧的过程可以参考步骤S1710、步骤S1711中的文字描述,此处不再赘述。
下面结合图17所示的数据处理方法,以图20和图21所示的在MPQUIC会话中的一个连接或单向流上传输相同优先级的业务流数据的场景为例,对本申请实施例中的数据处理方法进行示例性描述:
图20为本申请实施例中客户端上数据处理方法的场景的另一个示例性示意图。
如图20所示,MPQUIC会话1和MPQUIC会话2的客户端与图17所示的客户端相同,此处不再赘述。
客户端根据MPQUIC会话1的调度器确定QUIC Stream1和QUIC Stream3的数据在连接1或发送单向流1上进行传输,QUIC Stream2的数据在连接2或发送单向流2上进行传输,客户端根据MPQUIC会话2的调度器确定QUIC Stream4的数据在连接4或发送单向流4上进行传输。
当选路策略为QoS优先时,高优先级的QUIC Stream的数据被配置到LTE接口对应的物理路径上进行传输。对应的,低优先级的QUIC Stream的数据被配置到WIFI接口对应的物理路径上进行传输。发送单向流2会被配置到LTE接口对应的物理路径上;发送单向流1、发送单向流3会被配置到WiFi接口对应的物理路径上。
客户端为发送单向流1、发送单向流2、发送单向流4分别配置8个不同优先级的发包队列,并且发包队列的优先级为0至7。
示例性的,以MPQUIC会话1中客户端上的应用A的业务流1和业务流3为例介绍客户端上业务流的数据传输过程:
QUIC Stream1的QUIC帧1会被写入连接1或发送单向流1的优先级为0的发包队列中。对应的,QUIC Stream3的QUIC帧1会被写入相同的发包队列中。
发客户端上的发包模块根据发包队列的优先级顺序依次检查连接1或发送单向流1上的发包队列,当检查到优先级为0的发包队列时,根据PMTU和剩余带宽,将QUIC Stream1的QUIC帧1、QUIC Stream3的QUIC帧1合包成为QUIC报文,并将QUIC报文打包成网络报文,并且该网络报文的优先级为0。客户端通过发送单向流1将该网络报文发送。
同理,客户端上MPQUIC会话1中的应用A的业务流2、QUIC会2中应用B的业务流4的数据传输可以参考图18所示的业务流1和业务流2的数据传输过程以及图20所示的业务流1和业务流3的传输过程,此处不再赘述。
图21为图20中MPQUIC会话中服务端接收网络报文场景的另一个示例性示意图。
如图21所示,服务端在接收到来自于客户端的报文后,对网络报文进行解封装,分别得到各个网络报文的QUIC帧。
示例性的,以MPQUIC会话1中客户端上的应用A的业务流1和业务流3为例介绍服务端上业务流的数据传输过程:
服务端在接收单向流1上获取网络报文,并对网络报文进行解封装,得到该网络报文的QUIC Stream1的QUIC帧1和QUIC Stream3的QUIC帧1。在解封装网络报文时,读取网络报文中用于表示优先级的字段值,确定QUIC Stream1的QUIC帧1和QUIC Stream3的QUIC帧1的优先级为0。
服务端为接受单向流1配置有8个不同优先级的收包队列,并且收包队列的优先级为0至7。服务端将QUIC Stream1的QUIC帧1和QUIC Stream3的QUIC帧1写入优先级为0的收包队列中。
同理,服务端获取应用A的业务流2的数据和服务端获取应用B的业务流4的数据的过程可以参考图21所示的服务端获取应用A的业务流1和业务流3数据的过程,此处不再赘述。
服务端在接收到网络报文后,会向客户端发送MP_ACK帧,其中发送MP_ACK帧的过程可以参考步骤S1710、步骤S1711中的文字描述,此处不再赘述。
上述实施例中所用,根据上下文,术语“当…时”可以被解释为意思是“如果…”或“在…后”或“响应于确定…”或“响应于检测到…”。类似地,根据上下文,短语“在确定…时”或“如果检测到(所陈述的条件或事件)”可以被解释为意思是“如果确定…”或“响应于确定…”或“在检测到(所陈述的条件或事件)时”或“响应于检测到(所陈述的条件或事件)”。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例该的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如DVD)、或者半导体介质(例如固态硬盘)等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储程序代码的介质。
Claims (23)
1.一种数据处理方法,其特征在于,包括:
客户端与服务端在第一快速UPD网络连接QUIC/多路径快速UDP网络连接MPQUIC会话中创建第一连接/第一单向流;所述第一连接/第一单向流用于将所述客户端中的数据发送给所述服务端;
所述客户端生成QUIC帧,其中包括第一QUIC帧,所述第一QUIC帧被配置为第一优先级;
所述客户端根据第一映射规则和所述第一优先级,将所述第一QUIC帧写入所述第一连接/第一单向流上的第一发包队列中;所述第一连接/第一单向流上配置有多个优先级不同的发包队列,其中包括与所述第一QUIC帧的第一优先级对应的所述第一发包队列;
所述客户端将所述第一发包队列中的QUIC帧合包成第一QUIC报文,再打包成第一网络报文,通过所述第一连接/第一单向流发送给所述服务端;所述第一网络报文的优先级与所述第一发包队列的优先级对应。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述客户端根据所述第一映射规则和所述第一优先级,将第二QUIC帧写入所述第一连接/第一单向流上的所述第一发包队列中;所述客户端生成的QUIC帧中包括所述第二QUIC帧,所述第二QUIC帧被配置为所述第一优先级。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
所述客户端根据所述第一映射规则和所述第二优先级,将第三QUIC帧写入所述第一连接/第一单向流上的第二发包队列中;所述客户端生成的QUIC帧中包括所述第三QUIC帧,所述第三QUIC帧被配置为所述第二优先级;所述第二优先级与所述第一优先级不同;所述第二发包队列为所述第一连接/第一单向流上与所述第三QUIC帧的第二优先级对应的发包队列;
所述客户端将所述第二发包队列中的QUIC帧合包成第二QUIC报文,再打包成第二网络报文,通过所述第一连接/第一单向流发送给所述服务端;所述第二网络报文的优先级与所述第二发包队列的优先级对应。
4.根据权利要求1至3中任一项所述的方法,其特征在于,客户端与服务端在第一QUIC/MPQUIC会话中创建第一连接/第一单向流的步骤之后,所述客户端生成第一QUIC帧的步骤之前,所述方法还包括:
所述客户端在所述第一连接/第一单向流上配置所述多个优先级不同的发包队列,所述多个优先级不同的发包队列包括所述第一发包队列。
5.根据权利要求1至3中任一项所述的方法,其特征在于,所述客户端生成第一QUIC帧的步骤之后,所述客户端根据第一映射规则和所述第一优先级,将所述第一QUIC帧写入第一连接/第一单向流上的第一发包队列中的步骤之前,所述方法还包括:
当确定所述第一连接/第一单向流上没有配置与第一QUIC帧的第一优先级所对应的所述第一发包队列时,在所述第一连接/第一单向流上配置所述第一发包队列。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述客户端生成QUIC帧,具体包括:
响应于业务流的创建,或者响应于所述业务流的报文发送,所述客户端将业务流的报文拆解、封装成一个或多个Stream帧;所述Stream帧为一种QUIC帧。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述第一网络报文的报头包括用于表示所述第一网络报文的优先级的第一字段。
8.根据权利要求7所述的方法,其特征在于,所述第一字段为IP报文报头的DSCP字段,或者为以太网报文报头的CoS字段。
9.根据权利要求1至8中任一项所述的方法,其特征在于,所述第一网络报文的优先级映射于所述第一发包队列的优先级,具体包括:
所述第一网络报文的优先级与所述第一发包队列的优先级相同;
或,所述第一网络报文的优先级由所述客户端根据第二映射规则和所述第一发包队列的优先级计算得到。
10.根据权利要求1至9中任一项所述的方法,其特征在于,QUIC帧包括Stream帧、ACK帧、MPACK帧、NEW_CONNECTION_ID帧和RESET_STREAM帧中的一种或多种。
11.一种数据处理方法,其特征在于,包括:
服务端与客户端在第一QUIC/MPQUIC会话中创建第一连接/第一单向流;
所述服务端在所述第一连接/第一单向流上接收所述客户端发送的网络报文,所述网络报文被所述客户端配置有优先级;
所述服务端通过解封装所述网络报文获取QUIC帧,并确定所述QUIC帧的优先级与所述QUIC帧所属的网络报文的优先级相同;
所述服务端生成第一确认帧,所述第一确认帧用于答复至少一个网络报文,所述第一确认帧的优先级与所述第一确认帧所答复的网络报文中QUIC帧的优先级对应。
12.根据权利要求11所述的方法,其特征在于,所述第一确认帧的优先级与所述第一确认帧所答复的网络报文中QUIC帧的优先级对应,具体包括:
在所述至少一个网络报文的优先级均相同的情况下,所述第一确认帧的优先级与所述至少一个网络报文中的QUIC帧的优先级相同。
13.根据权利要求11所述的方法,其特征在于,所述第一确认帧的优先级与所述第一确认帧所答复的网络报文中QUIC帧的优先级对应,具体包括:
在所述至少一个网络报文的优先级不全部相同的情况下,所述第一确认帧的优先级与所述至少一个网络报文中的QUIC帧的最高的优先级相同。
14.根据权利要求11至13中任一项所述的方法,其特征在于,所述服务端与客户端在第一QUIC/MPQUIC会话中创建第一连接/第一单向流步骤之后,所述服务端接收网络报文步骤之前,所述方法还包括:
所述服务端为所述第一连接或单向流配置多个优先级不同的收包队列,所述多个优先级不同的收包队列用于分别存储与收包队列优先级相同的所述QUIC帧。
15.根据权利要求11至13中任一项所述的方法,其特征在于,所述服务端通过解封装所述网络报文获取QUIC帧之后,所述方法还包括:
当确定所述第一连接/第一单向流上没有配置与所述QUIC帧的优先级所对应的收包队列时,在所述第一连接/第一单向流上配置所述QUIC帧的优先级所对应的收包队列。
16.根据权利要求11至15中任一项所述的方法,其特征在于,所述第一确认帧为ACK帧或MP_ACK帧。
17.根据权利要求11至16中任一项所述的方法,其特征在于,所述网络报文的报头包括用于表示所述网络报文的优先级的第一字段。
18.根据权利要求17所述的方法,其特征在于,所述第一字段为IP报文报头的DSCP字段,或者为以太网报文报头的CoS字段。
19.根据权利要求11至18中任一项所述的方法,其特征在于,QUIC帧包括Stream帧、ACK帧、MPACK帧、NEW_CONNECTION_ID帧和RESET_STREAM帧中的一种或多种。
20.一种电子设备,其特征在于,所述电子设备包括:一个或多个处理器和存储器;
所述存储器与所述一个或多个处理器耦合,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,所述一个或多个处理器调用所述计算机指令以使得所述电子设备执行如权利要求1至19中任一项所述的方法。
21.一种芯片系统,所述芯片系统应用于电子设备,所述芯片系统包括一个或多个处理器,所述处理器用于调用计算机指令以使得所述电子设备执行如权利要求1至19中任一项所述的方法。
22.一种包含指令的计算机程序产品,其特征在于,当所述计算机程序产品在电子设备上运行时,使得所述电子设备执行如权利要求1至19中任一项所述的方法。
23.一种计算机可读存储介质,包括指令,其特征在于,当所述指令在电子设备上运行时,使得所述电子设备执行如权利要求1至19中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110221445.2A CN114979021B (zh) | 2021-02-27 | 2021-02-27 | 数据处理方法及电子设备 |
PCT/CN2022/077034 WO2022179468A1 (zh) | 2021-02-27 | 2022-02-21 | 数据处理方法及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110221445.2A CN114979021B (zh) | 2021-02-27 | 2021-02-27 | 数据处理方法及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114979021A true CN114979021A (zh) | 2022-08-30 |
CN114979021B CN114979021B (zh) | 2024-05-14 |
Family
ID=82972844
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110221445.2A Active CN114979021B (zh) | 2021-02-27 | 2021-02-27 | 数据处理方法及电子设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114979021B (zh) |
WO (1) | WO2022179468A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115499387A (zh) * | 2022-09-13 | 2022-12-20 | 北京天融信网络安全技术有限公司 | 报文处理方法、装置、电子设备及存储介质 |
CN116684036A (zh) * | 2022-11-03 | 2023-09-01 | 荣耀终端有限公司 | 数据处理方法及相关装置 |
WO2024114243A1 (zh) * | 2022-11-28 | 2024-06-06 | 华为技术有限公司 | 上行传输方法及终端设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108432194A (zh) * | 2016-04-28 | 2018-08-21 | 华为技术有限公司 | 一种拥塞处理的方法、主机及系统 |
CN109314662A (zh) * | 2016-11-11 | 2019-02-05 | 华为技术有限公司 | 数据传输方法及装置 |
CN109462230A (zh) * | 2018-11-09 | 2019-03-12 | 南京国电南自电网自动化有限公司 | 一种基于高速总线的负荷转供决策系统及方法 |
CN110875799A (zh) * | 2018-09-04 | 2020-03-10 | 华为技术有限公司 | 一种传输控制方法和装置 |
CN111490947A (zh) * | 2019-01-25 | 2020-08-04 | 上海哔哩哔哩科技有限公司 | 数据包发送方法、数据包接收方法、系统、设备及介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050047425A1 (en) * | 2003-09-03 | 2005-03-03 | Yonghe Liu | Hierarchical scheduling for communications systems |
US11381339B2 (en) * | 2017-11-06 | 2022-07-05 | Code On Network Coding, Llc | System and technique for generating, transmitting and receiving network coded (NC) quick UDP internet connections (QUIC) packets |
-
2021
- 2021-02-27 CN CN202110221445.2A patent/CN114979021B/zh active Active
-
2022
- 2022-02-21 WO PCT/CN2022/077034 patent/WO2022179468A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108432194A (zh) * | 2016-04-28 | 2018-08-21 | 华为技术有限公司 | 一种拥塞处理的方法、主机及系统 |
CN109314662A (zh) * | 2016-11-11 | 2019-02-05 | 华为技术有限公司 | 数据传输方法及装置 |
CN110875799A (zh) * | 2018-09-04 | 2020-03-10 | 华为技术有限公司 | 一种传输控制方法和装置 |
CN109462230A (zh) * | 2018-11-09 | 2019-03-12 | 南京国电南自电网自动化有限公司 | 一种基于高速总线的负荷转供决策系统及方法 |
CN111490947A (zh) * | 2019-01-25 | 2020-08-04 | 上海哔哩哔哩科技有限公司 | 数据包发送方法、数据包接收方法、系统、设备及介质 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115499387A (zh) * | 2022-09-13 | 2022-12-20 | 北京天融信网络安全技术有限公司 | 报文处理方法、装置、电子设备及存储介质 |
CN115499387B (zh) * | 2022-09-13 | 2024-04-09 | 北京天融信网络安全技术有限公司 | 报文处理方法、装置、电子设备及存储介质 |
CN116684036A (zh) * | 2022-11-03 | 2023-09-01 | 荣耀终端有限公司 | 数据处理方法及相关装置 |
CN116684036B (zh) * | 2022-11-03 | 2024-03-22 | 荣耀终端有限公司 | 数据处理方法及相关装置 |
WO2024114243A1 (zh) * | 2022-11-28 | 2024-06-06 | 华为技术有限公司 | 上行传输方法及终端设备 |
Also Published As
Publication number | Publication date |
---|---|
CN114979021B (zh) | 2024-05-14 |
WO2022179468A1 (zh) | 2022-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114979021B (zh) | 数据处理方法及电子设备 | |
WO2021175300A1 (zh) | 数据传输方法、装置、电子设备和可读存储介质 | |
EP4084486B1 (en) | Cross-device content projection method, and electronic device | |
WO2021043046A1 (zh) | 一种资源管控方法及设备 | |
WO2021115112A1 (zh) | 安装包的下载方法、分发方法、终端设备、服务器及系统 | |
WO2022228011A1 (zh) | Quic数据传输方法、装置、客户端及服务端 | |
CN110636554B (zh) | 数据传输方法及装置 | |
EP4293997A1 (en) | Display method, electronic device, and system | |
CN115309547B (zh) | 处理异步binder调用的方法和装置 | |
JP7193647B2 (ja) | 接続確立方法および端末デバイス | |
CN114006712A (zh) | 一种获取验证码的方法、电子设备和系统 | |
WO2021244456A1 (zh) | 反向地址解析方法及电子设备 | |
CN114722377A (zh) | 一种利用其它设备授权的方法、电子设备和系统 | |
WO2022184157A1 (zh) | 多路径聚合调度方法及电子设备 | |
WO2022068486A1 (zh) | 数据发送方法、电子设备、芯片系统及存储介质 | |
WO2022111529A1 (zh) | 一种应用程序的调试方法及电子设备 | |
CN118233402A (zh) | 一种数据传输方法及电子设备 | |
CN114979261B (zh) | 业务交互方法、终端、服务器及系统 | |
CN113810451B (zh) | 点对点链路的建立方法、装置、第一终端设备和存储介质 | |
WO2021114950A1 (zh) | 一种多路http通道复用的方法及终端 | |
WO2023001208A1 (zh) | 多文件同步方法及电子设备 | |
CN113678481A (zh) | 无线音频系统、音频通讯方法及设备 | |
WO2022222733A1 (zh) | 数据传输方法及相关设备 | |
WO2022267917A1 (zh) | 蓝牙通信方法及系统 | |
WO2024104095A1 (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 |