CN115842876A - 处理报文的方法、***、设备和存储介质 - Google Patents
处理报文的方法、***、设备和存储介质 Download PDFInfo
- Publication number
- CN115842876A CN115842876A CN202111467765.2A CN202111467765A CN115842876A CN 115842876 A CN115842876 A CN 115842876A CN 202111467765 A CN202111467765 A CN 202111467765A CN 115842876 A CN115842876 A CN 115842876A
- Authority
- CN
- China
- Prior art keywords
- message
- stream
- information
- instance
- stream instance
- 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
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/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- 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/06—Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
-
- 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
Abstract
本申请提供了一种处理报文的方法、***、设备和存储介质,属于网络技术领域。该方法包括:获取第一报文,第一报文包括基于QUIC协议的stream实例所传输的数据,获得与该stream实例对应的标记信息,为该第一报文添加该标记信息,获得第二报文,发送该第二报文,该标记信息用于接收到该第二报文的转发设备基于该标记信息处理该第二报文。采用本申请,由于在第一报文中添加标记信息,该标记信息用于指示stream实例,所以转发第一报文的设备能够基于该标记信息对stream实例进行区分。
Description
本申请要求于2021年09月18日提交的申请号为202111112961.8,发明名称为“一种显式标识QUIC流的方法”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及数据传输技术领域,特别涉及一种处理报文的方法、***、设备和存储介质。
背景技术
QUIC是一种基于用户数据报协议(user datagram protocol,UDP)的安全传输协议,QUIC运行在UDP之上,且与安全传输层协议(transport layer security,TLS)1.3高度集成,QUIC提供了与传输控制协议(transmission control protocol,TCP)类似的可靠性、拥塞控制等功能。
在基于QUIC的数据传输过程中,出于安全性考虑,QUIC报文均是加密后进行传输,数据传输路径上的转发设备无法区分QUIC协议中的流(stream)实例。
发明内容
本申请提供了一种处理报文的方法、***、设备和存储介质,以使得传输路径上的转发设备区分QUIC协议中的stream实例。
第一方面,本申请提供了一种处理报文的方法,应用于第一设备,该方法包括:获取第一报文,第一报文包括基于QUIC协议的stream实例所传输的数据;获得与该stream实例对应的标记信息;为第一报文添加标记信息,获得第二报文;发送第二报文,标记信息用于接收到第二报文的转发设备基于标记信息处理第二报文。
本申请所示的方案,获取到第一报文,第一报文包括基于QUIC协议的stream实例所传输的数据,确定该stream实例的标记信息。为第一报文添加该标记信息,获得第二报文,发送第二报文使得接收到第二报文的转发设备基于该标记信息处理第二报文。这样,由于接收到报文的转发设备能够识别到stream实例对应的标记信息,所以能够区分stream实例,进而能够基于stream实例对报文进行相应的处理。
在一种可能的实现方式中,该标记信息用于在QUIC连接内标记该stream实例,或者,该标记信息用于在该QUIC连接内标记该stream实例的类型,该stream实例属于该标记信息所标记的stream实例。这样,在单个QUIC连接内,每个标记信息指示一个stream实例,或者每个标记信息指示一类stream实例。
在一种可能的实现方式中,该为第一报文添加该标记信息,包括:在第一报文的第一外层报文头的第一字段中添加该标记信息。
本申请所示的方案,第一报文当前存在第一外层报文头,修改第一外层报文头的第一字段,使得第一字段包括stream实例的标记信息,或者,第一报文当前不存在第一外层报文头,为第一报文封装第一外层报文头,第一字段包括stream实例的标记信息。这样,可以通过多种方式在外层报文头中携带标记信息。
在一种可能的实现方式中,第一外层报文头为互联网协议第六版(internetprotocol version6,IPv6)报文头,第一字段为流标签(flow label)字段;或者,第一外层报文头为互联网协议第四版(internet protocol version 4,IPv4)报文头,第一字段为选项(option)字段。
在一种可能的实现方式中,获得与该stream实例对应的标记信息,包括:获得该stream实例的标记信息,该stream实例的标记信息包括该stream实例的相关信息。这样,可以使用该stream实例的相关信息,获得与该stream对应的标记信息。
在一种可能的实现方式中,该获得与该stream实例对应的标记信息,包括:根据该stream实例的相关信息和随机算法,生成该标记信息。这样,可以使用随机算法生成标记信息。
在一种可能的实现方式中,该stream实例的相关信息包括以下至少一项:该数据的类型、该stream实例的特征信息、该stream实例关联的路径(path)标识和该stream实例的索引信息,该stream实例的索引信息用于在QUIC连接内指示该stream实例。
在一种可能的实现方式中,该根据该stream实例的相关信息和随机算法,生成该标记信息,包括:根据该stream实例的标识和该随机算法,生成该标记信息;或者,根据该stream实例的标识、该第一报文的源地址、目的地址和该随机算法,生成该标记信息;或者,根据该stream实例的标识、该第一报文的五元组信息和该随机算法,生成该标记信息。这样,可以使用多种方式,获得该stream实例的标记信息。
在一种可能的实现方式中,该stream实例为双向stream实例;该获得与该stream实例对应的标记信息,包括:获取基于该stream实例所传输的第三报文,该第三报文沿第一方向传输,该第二报文沿第二方向传输,该第一方向与该第二方向的方向相反;在该第三报文的外层报文头中获取该标记信息。
本申请所示的方案,在stream实例为双向stream实例的情况下,可以在接收到的报文的外层报文头中获取stream实例的标记信息,这样,无需重复确定标记信息。
在一种可能的实现方式中,该第一报文包括封装有第二外层报文头的QUIC报文;该获得与该stream实例对应的标记信息,包括:获取该第二外层报文头的第二字段的内容,该第二字段的内容用于标记该stream实例;根据该第二字段的内容获得该stream实例的标记信息。
本申请所示的方案,在第一报文包括封装有第二外层报文头的QUIC报文的情况下,可以在第二外层报文头中获取第二字段的内容,使用第二字段的内容,确定出stream实例的标记信息。这样,转发路径上的转发设备也能基于第二字段的内容,获得stream实例的标记信息。
在一种可能的实现方式中,该标记信息包括该stream实例的相关信息,该相关信息包括以下至少一项:该数据的类型、该stream实例的特征信息,该stream实例关联的path标识和该stream实例的索引信息,该stream实例的索引信息用于在QUIC连接内指示该stream实例。
在一种可能的实现方式中,该获取第一报文,包括:生成该第一报文,该第一报文为基于QUIC协议的QUIC报文;或者,接收第一报文,该第一报文包括封装有第三外层报文头的QUIC报文。
本申请所示的方案,主机可以生成第一报文,或者转发路径上的设备可以接收到第一报文。
在一种可能的实现方式中,第一设备为主机或网络设备。
在一种可能的实现方式中,第一设备为网络叶节点,网络叶节点与网络脊节点连接。
在一种可能的实现方式中,获得与该stream实例对应的标记信息,包括:基于该数据的类型,确定该stream实例的标记信息。
本申请所示的方案,在确定stream实例对应的标记信息时,可以使用该stream实例所传输数据的类型,这样,能够更灵活确定该stream实例对应的标记信息。
第二方面,本申请提供了一种处理报文的方法,应用于第二设备,该方法包括:
获取报文,该报文包括基于QUIC协议的stream实例所传输的数据,该报文的外层报文头包括与该stream实例对应的标记信息;基于该标记信息,对该报文进行处理。这样,在获取到报文后,能够在外层报文头中获取到stream实例对应的标记信息。使用该标记信息区分出stream实例,进而能对该stream实例进行相应的处理。
在一种可能的实现方式中,该基于该标记信息,对该报文进行处理,包括:基于该标记信息和该外层报文头中目的地址,对该报文进行转发处理。这样,该stream实例的标记信息能够用于区分stream实例,所以基于该标记信息能够对该stream实例进行准确处理。
在一种可能的实现方式中,该基于该标记信息,对该报文进行处理,包括:根据该标记信息进行哈希计算,得到哈希值;基于该哈希值在多条等价转发路径中确定用于转发该报文的转发路径;根据确定的转发路径转发该报文。这样,在转发报文时能够实现负载均衡。
在一种可能的实现方式中,该标记信息用于在QUIC连接内标记该stream实例,或者,该标记信息用于在该QUIC连接内标记该stream实例的类型,该stream实例属于该标记信息所标记的stream实例。
在一种可能的实现方式中,该标记信息包括在该报文的外层报文头的字段中;其中,该外层报文头为IPv6头,该字段为flow label字段;或者,该外层报文头为IPv4头,该字段为option字段。
在一种可能的实现方式中,该标记信息包括该stream实例的相关信息,该相关信息包括以下至少一项:该数据的类型、该stream实例的特征信息,该stream实例关联的path标识和该stream实例的索引信息,该stream实例的索引信息用于在该QUIC连接内指示该stream实例。
在一种可能的实现方式中,该第二设备为主机或网络设备。
在一种可能的实现方式中,该第二设备为网络叶节点或网络脊节点。
第三方面,本申请提供了一种处理报文的装置,所述装置应用于第一设备,所述装置包括:获取模块,用于获取第一报文,所述第一报文包括基于QUIC协议的stream实例所传输的数据;确定模块,用于获得与所述stream实例对应的标记信息;添加模块,用于为所述第一报文添加所述标记信息,获得第二报文;发送模块,用于发送所述第二报文,所述标记信息用于接收到所述第二报文的转发设备基于所述标记信息处理所述第二报文。
在一种可能的实现方式中,所述标记信息用于在QUIC连接内标记所述stream实例,或者,所述标记信息用于在所述QUIC连接内标记所述stream实例的类型,所述stream实例属于所述标记信息所标记的stream实例。
在一种可能的实现方式中,所述添加模块,用于:
在所述第一报文的第一外层报文头的第一字段中添加所述标记信息。
在一种可能的实现方式中,所述第一外层报文头为IPv6头,所述第一字段为flowlabel字段;或者,
所述第一外层报文头为IPv4头,所述第一字段为option字段。
在一种可能的实现方式中,所述确定模块,用于:
获得所述stream实例的标记信息,所述stream实例的标记信息包括所述stream实例的相关信息。
在一种可能的实现方式中,所述确定模块,用于:
根据所述stream实例的相关信息和随机算法,生成所述标记信息。
在一种可能的实现方式中,所述相关信息包括以下至少一项:所述数据的类型、所述stream实例的特征信息、所述stream实例关联的path标识和所述stream实例的索引信息,所述stream实例的索引信息用于在QUIC连接内指示所述stream实例。
在一种可能的实现方式中,所述确定模块,用于:
根据所述stream实例的标识和所述随机算法,生成所述标记信息;或者,
根据所述stream实例的标识、所述第一报文的源地址、目的地址和所述随机算法,生成所述标记信息;或者,
根据所述stream实例的标识、所述第一报文的五元组信息和所述随机算法,生成所述标记信息。
在一种可能的实现方式中,所述stream实例为双向stream实例;所述确定模块,用于:
获取基于所述stream实例所传输的第三报文,所述第三报文沿第一方向传输,所述第二报文沿第二方向传输,所述第一方向与所述第二方向的方向相反;
在所述第三报文的外层报文头中获取所述标记信息。
在一种可能的实现方式中,所述第一报文包括封装有第二外层报文头的QUIC报文;
所述确定模块,用于:
获取所述第二外层报文头的第二字段的内容,所述第二字段的内容用于标记所述stream实例;
根据所述第二字段的内容获得所述stream实例的标记信息。
在一种可能的实现方式中,所述标记信息包括所述stream实例的相关信息,所述相关信息包括以下至少一项:所述数据的类型、所述stream实例的特征信息,所述stream实例关联的path标识和所述stream实例的索引信息,所述stream实例的索引信息用于在QUIC连接内指示所述stream实例。
在一种可能的实现方式中,所述获取模块,用于生成所述第一报文,所述第一报文为基于QUIC协议的QUIC报文;或者,
接收第一报文,所述第一报文包括封装有第三外层报文头的QUIC报文。
在一种可能的实现方式中,所述第一设备为主机或网络设备。
在一种可能的实现方式中,所述第一设备为网络叶节点,所述网络叶节点与网络脊节点连接。
第四方面,本申请提供了一种处理报文的装置,该装置应用于第二设备,所述装置包括:报文获取模块,用于获取报文,所述报文包括基于QUIC协议的stream实例所传输的数据,所述报文的外层报文头包括与所述stream实例对应的标记信息;处理模块,用于基于所述标记信息,对所述报文进行处理。
在一种可能的实现方式中,所述处理模块,用于:
基于所述标记信息和所述外层报文头中目的地址,对所述报文进行转发处理。
在一种可能的实现方式中,所述处理模块,用于:
根据所述标记信息进行哈希计算,得到哈希值;
基于所述哈希值在多条等价转发路径中确定用于转发所述报文的转发路径;
根据所确定的转发路径转发所述报文。
在一种可能的实现方式中,所述标记信息用于在QUIC连接内标记所述stream实例,或者,所述标记信息用于在所述QUIC连接内标记所述stream实例的类型,所述stream实例属于所述标记信息所标记的stream实例。
在一种可能的实现方式中,所述标记信息包括在所述报文的外层报文头的字段中;其中,
所述外层报文头为IPv6头,所述字段为flow label字段;或者,
所述外层报文头为IPv4头,所述字段为option字段。
在一种可能的实现方式中,所述标记信息包括所述stream实例的相关信息,所述相关信息包括以下至少一项:所述数据的类型、所述stream实例的特征信息,所述stream实例关联的path标识和所述stream实例的索引信息,所述stream实例的索引信息用于在QUIC连接内指示所述stream实例。
在一种可能的实现方式中,所述第二设备为主机或网络设备。
在一种可能的实现方式中,所述第二设备为网络叶节点或网络脊节点。
第五方面,本申请提供了一种通信设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条计算机指令,所述计算机指令由所述处理器加载并执行以实现上述第一方面或第一方面任一种可选方式所提供的处理报文的方法。
第六方面,本申请提供了一种计算机可读存储介质,所述存储介质中存储有至少一条计算机指令,所述计算机指令由通信设备的处理器加载并执行以实现上述第一方面或第一方面任一种可选方式所提供的处理报文的方法。
第七方面,本申请提供了一种通信设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条计算机指令,所述计算机指令由所述处理器加载并执行以实现上述第二方面或第二方面任一种可选方式所提供的处理报文的方法。
第八方面,本申请提供了一种计算机可读存储介质,所述存储介质中存储有至少一条计算机指令,所述计算机指令由通信设备的处理器加载并执行以实现上述第二方面或第二方面任一种可选方式所提供的处理报文的方法。
第九方面,本申请提供了一种处理报文的***,所述***包括第一设备和第二设备,其中,第一设备用于:获取第一报文,所述第一报文包括基于QUIC协议的stream实例所传输的数据;获得与所述stream实例对应的标记信息;为所述第一报文添加所述标记信息,获得第二报文,所述第二报文的外层报文头包括所述标记信息;发送所述第二报文;第二设备用于:获取所述第二报文;基于所述标记信息,对所述第二报文进行处理。
第十方面,本申请提供了一种处理报文的***,所述***包括第一设备和第二设备,其中,所述第一设备用于实现上述第一方面或第一方面任一种可选方式所提供的处理报文的方法;
所述第二设备用于实现上述第二方面或第二方面任一种可选方式所提供的处理报文的方法。
第十一方面,本申请提供了一种计算机程序产品,该计算机程序产品包括至少一条计算机指令,该计算机程序产品在第一设备上运行时,使得该设备实现上述第一方面或第一方面任一种可选方式所提供的处理报文的方法。
第十二方面,本申请提供了一种计算机程序产品,该计算机程序产品包括至少一条计算机指令,该计算机程序产品在第二设备上运行时,使得该设备实现上述第二方面或第二方面任一种可选方式所提供的处理报文的方法。
第十三方面,本申请提供了一种芯片,包括处理器,用于从存储器中调用并运行存储器中存储的指令,使得安装有芯片的通信设备执行上述各方面中的方法。
第十四方面,本申请提供另一种芯片,包括:输入接口、输出接口、处理器和存储器,输入接口、输出接口、处理器以及存储器之间通过内部连接通路相连,处理器用于执行存储器中的代码,当代码被执行时,处理器用于执行上述各方面中的方法。
附图说明
图1是本申请实施例提供的一种QUIC协议栈的格式示意图;
图2是本申请实施例提供的一种多路径的场景示意图;
图3是本申请实施例提供的一种多路径的实现架构示意图;
图4是本申请实施例提供的一种IPv6头的格式示意图;
图5是本申请实施例提供的一种数据的网络传输示意图;
图6是本申请实施例提供的一种设备的结构示意图;
图7是本申请实施例提供的一种设备的结构示意图;
图8是本申请实施例提供的一种处理报文的方法的流程示意图;
图9是本申请实施例提供的一种处理报文的方法的流程示意图;
图10是本申请实施例提供的一种处理报文的方法的流程示意图;
图11是本申请实施例提供的一种处理报文的方法的流程示意图;
图12是本申请实施例提供的一种处理报文的方法的流程示意图;
图13是本申请实施例提供的一种处理报文的方法的流程示意图;
图14是本申请实施例提供的一种负载均衡的示意图;
图15是本申请实施例提供的一种负载均衡的示意图;
图16是本申请实施例提供的一种处理报文的装置的结构示意图;
图17是本申请实施例提供的一种处理报文的装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
下面对本申请实施例涉及的一些术语概念做解释说明。
(1)QUIC
QUIC是一种基于UDP的可靠的安全传输协议。QUIC这个术语最初是GOOGLE提出的快速UDP网络连接(Quick UDP Internet Connections)的缩写,也称为gQUIC。但是国际互联网工程任务组(internet engineering task force,IETF)标准化时,不再使用这个缩写,认为QUIC是一个名称,并不是一个首字母缩写(QUIC is a name,not an acronym),具体解释可参见征求意见(request for comments,RFC)9000。可以理解的是,本申请实施例所提供的方法可以适用于gQUIC,也可以适用于IETF标准化的QUIC,即本申请实施例所指的QUIC,可以是gQUIC,也可以是IETF标准化的QUIC。
图1示出了QUIC的协议栈,QUIC运行在UDP之上,与TLS1.3高度集成,提供了与TCP类似的可靠性、拥塞控制等功能。在图1的左侧是传统的超文本传输协议(hyper texttransfer protocol,HTTP)协议栈,从上到下依次是应用(application)、TLS、TCP和互联网协议(internet protocol,IP),application是HTTP/1.1、HTTP/2或边界网关协议(bordergateway protocol,BGP)。在图1的右侧是QUIC协议的协议栈,从上到下依次是application、QUIC、UDP和IP,application是HTTP/3或BGP,其中,QUIC中集成有TLS1.3。
QUIC除了提供与TCP类似的可靠性、拥塞控制等功能,此外,QUIC还提供了如下一些增强功能:
a)流复用(stream multiplexing),指的是在单个QUIC连接(connection)中可以同时传输多个字节流,每个字节流称为流(stream)。其中,QUIC连接用于在两个主体之间建立数据传输所需的共享状态。例如,提供了数据传输所需的安全上下文(如身份认证、机密性保护和完整性保护),安全上下文也可以称为是连接信息。stream用于在QUIC连接所提供的安全上下文中提供数据传输服务。
b)路径(path),是指客户端与服务端之间的一条传输路由,由五元组信息唯一标识,五元组信息包括源地址,目的地址、源端口、目的端口和协议,此处的地址可以是IP地址。对于QUIC而言,五元组信息中的协议指定为UDP。
QUIC连接使用连接标识(connection ID)来唯一标识,ID的英文全称为identity,即每个QUIC连接的连接标识不相同。不同QUIC连接的连接ID不相同。在一个QUIC连接内,每个stream使用stream标识来唯一标识。stream标识的长度为64比特(bit),其中,最低2bit标识stream的类型。为了简单起见,可以认为stream标识包含两个部分,即stream的类型(最低2bit)和stream的索引(index)(剩余的62bit),这说明每个connection可以创建4种不同类型的stream,4种不同类型的stream分别为客户端创建的双向stream类型、服务端创建的双向stream类型、客户端创建的单向stream类型和服务端创建的单向stream类型。每种类型的stream可创建的stream的数量为262-1,每个stream可以独立为一个应用提供数据传输服务。
一个stream对应有一个stream实例,该stream实例是分布性实体,同时分布在客户端和服务端,在全局范围内stream实例使用(connection ID,stream ID)唯一标识,在一个connection范围内,使用stream ID唯一标识。stream实例用于传输一个有序的字节流。每个stream实例类似于stream数据结构中的一个节点,该数据结构为指定connection实例的一个内部数据结构,connection实例也是QUIC connection的分布性实体,同时分布在客户端和服务端。在创建stream实例时,在该数据结构中添加一个节点,在删除stream实例时,从该数据结构中删除该stream实例对应的节点。在该stream实例对应的节点上,维护了所属connection实例的connection ID、stream类型、stream标识、接收缓存区、发送缓存区和运行状态等数据。后续,stream实例的stream标识也可以简称为stream实例的标识。
本申请中的stream不同于通常的流(flow)。本申请中的stream是QUIC连接内的字节流,使用stream ID标识,而通常的flow主要是针对转发层面而言。不同的flow可以使用不同的五元组信息标识,还可以使用不同的三元组信息标识,五元组信息包括源地址、目的地址、协议、源端口和目的端口,三元组信息包括源地址、目的地址和协议。
在转发层面不同的flow在被转发时,可以从不同的端口输出。例如,转发设备将第一五元组信息标识的flow从转发设备的第一端口输出,将第二五元组信息标识的flow从转发设备的第二端口输出。
在QUIC中,path存在单活路径(single-active path)和多活路径(multi-activepath),multi-active path也能认为是QUIC multi-active path,multi-active path也能简称为多路径(multi-path)。单活路径指在在一个QUIC连接中,任意时刻只允许一条path传输数据。多活路径指在一个QUIC连接中,一个时刻多个path上能够同时传输数据,多活路径可以更充分的利用网络资源,得到更好的传输性能。例如,图2示出了多路径的场景示意图,用户终端(user equipment,UE)同时接入移动网络和蜂窝网(cellular network),移动网络包括***通信技术(the 4Generation mobile communication technology,4G)或第五代通信技术(the 5Generation mobile communication technology,5G)等,蜂窝网包括无线保真(wireless-fidelity,WIFI)网等。UE的客户端在移动网络和WIFI下使用不同的IP地址访问服务端,UE在移动网络下访问服务端的五元组信息为(1.1.1.1,xx,UDP,3.3.3.3,zz),UE在WIFI下访问服务端的五元组信息为(2.2.2.2,yy,UDP,3.3.3.3,zz),其中,1.1.1.1和2.2.2.2为UE的IP地址,3.3.3.3为服务端的IP地址,xx和yy为客户端的UDP端口,zz为服务端的UDP端口。这样,使用多路径,在客户端和服务端之间仅建立一个QUIC连接,就能在多条path上同时并行传输数据。
在QUIC中,stream负责数据传输,path是数据传输路径,将stream传输的数据与path关联实现stream数据的发送。可选地,在QUIC中,可以通过multi-path调度器将stream的数据与path关联实现数据的发送。图3示出了多路径的实现架构示意图。如图3所示,3条stream将应用的数据传输给multi-path调度器,multi-path调度器将3条stream传输的数据调度至两条path进行传输。
示例性的,multi-path调度器将stream发送的数据与path关联的方式包括如下几种:
业务疏导(traffic streering),用于在创建一条新的stream时,multi-path调度器根据策略将stream与path关联。例如,stream与path之间是1:1、P:1或P:Q的映射关系,P和Q均为大于1的正整数,在stream与path之间是N:M的映射关系时,multi-path调度器可以使用path当前的负载情况选择负载较少的path发送stream的数据。
业务交换(traffic switching),用于实现各条path的负载均衡。例如,在QUIC运行过程中,若某条path的负载或时延发生变化,multi-path调度器可以将与该path关联的stream的数据调整到其它path,以实现各条path的负载均衡。
业务分流(traffic splitting),用于将大量待发送数据分流到多条path。例如,某个stream的数据比较多,且要求比较高的传输性能,可以使用多条path同时传输该stream的数据,即stream与path的比例是1:P。
需要说明的,上述仅是一种将stream的数据与path关联的方案,本申请实施例对此不进行限定。
(2)QUIC报文的封装格式
QUIC报文包括头部(Header)和有效载荷(payload)部分,QUIC报文的头部包括长头部(long Header)格式和短头部(short Header)格式,通过第一个有效字节的最高位来区分。QUIC报文的Header部分字段加密,QUIC报文的payload全部内容加密。
在数据传输过程中,QUIC使用STREAM帧封装应用数据(application data),在一个QUIC连接内,使用stream标识唯一标识一个stream,stream标识也封装在STREAM帧中。
QUIC定义了多种报文类型,报文类型包括初始(initial)的0-往返时间(round-trip time,RTT)和握手(handshake)的1-RTT等。初始的0-RTT和握手的1-RTT报文类型的报文允许携带STREAM帧。STREAM帧位于0-RTT和1-RTT报文的payload部分。
需要说明的是,应用数据也可以使用除STREAM帧之外的其它QUIC帧类型封装。例如,在IETF关于QUIC的草案数据报2(draft-ietf-quic-datagram-02)中定义QUIC提供不可靠传输服务的功能(如用于传输实时视频流),此时,使用数据报(DATAGRAM)帧封装应用数据。不管QUIC报文中包括的是STREAM帧,还是其它格式的帧,QUIC报文均是加密后进行传输。
(3)IPv6 flow label
图4示出了IPv6报文的IPv6头的格式。如图4所示,flow label是IPv6头中的一个字段,长度为20比特。flow label是不受校验和(checksum)安全协议保护的,因此,flowlabel明文传输的,在转发过程中的任何修改都不会被检测到。
一般情况下,使用报文的五元组信息标识一条IPv6 flow,但是在报文分片等场景中,并非每个IPv6报文都包含完整的五元组信息。为了在无法直接获取五元组信息的情况下,还能够标识IPv6 flow,出现了flow label,flow label用于标识一条IPv6 flow。
关于flow label存在几种基础应用规范:
(a)flow label的值为0时,表示不支持flow label相关功能。若转发设备接收到flow label的值为0的IPv6报文,转发设备可以根据实际需要设置为非零值。
(b)可以使用flow label、源地址和目的地址唯一标识一条IPv6流。
(c)对于一条IPv6流,若设置了flow label,那么对于指定的会话中,保持flowlabel不变。
(d)flow label一旦被设置为非零值,转发设备禁止修改它的值,但是防火墙可以出于安全原因修改flow label的值。
接下来描述相关技术中传输QUIC报文的过程。
在基于QUIC协议的数据传输过程中,出于安全性考虑,QUIC报文均是加密后进行传输,数据传输路径上的转发设备无法区分QUIC报文中的stream实例,所以无法基于不同的stream实例做一些策略处理。例如,策略处理为负载分担,采用QUIC的流复用机制,源主机1同时使用两个stream实例(stream实例1和stream实例2)向目的主机2发送数据,源主机1和目的主机2之间的网络存在等价路由路径(equal-cost multi-path,ECMP),stream实例1和stream实例2用于封装应用数据的STREAM帧是被加密传输的,网络中的转发设备在转发QUIC报文过程中,无法识别出stream实例,进而也无法基于stream实例执行负载分担。如图5所示,在源主机1和目的主机2之间的网络中存在多条ECMP,通常只基于五元组信息执行负载分担,由于stream实例1对应的报文和stream实例2的报文具有相同的五元组信息,因此这两个stream实例始终是选择相同的转发路径(提供商边缘设备(provider edge,PE)1-->提供商设备(provider,P)1-->P3-->PE2),见图5中的虚线。
本申请实施例中,将能标识stream实例的内容映射到报文的指定位置,网络中的转发设备能够读取该指定位置的内容,使得转发设备能够实现基于stream实例的处理策略。此处的转发设备也可以称为是网络中的网络设备,如路由器或交换机等。
接下来描述本申请实施例的执行主体。
本申请实施例的执行主体可以是处理报文的装置。可选的,处理报文的装置是硬件设备,该硬件设备是第一设备或者第二设备,第一设备是主机、移动终端、服务器、网络中的网络设备等,第一设备还可以是网络叶(leaf)节点或者网络脊(spine)节点,网络叶节点与网络脊节点连接等。第二设备是主机、移动终端、服务器、网络中的网络设备,第二设备还可以是网络叶节点或者网络脊节点,网络叶节点与网络脊节点连接等。此处网络设备可以是网络中的交换机或路由器等。可选的,处理报文的装置是一个软件装置,如运行在硬件装置上的一套软件程序。
示例性的,处理报文的装置既可以是生成报文的装置,也可以是转发报文的装置。例如,处理报文的装置是主机,主机在生成QUIC报文后,确定stream实例的标记信息,将标记信息添加到IPv6头的flow label中,处理报文的装置即为生成报文的装置。再例如,处理报文的装置是网络中转发报文的转发设备,转发设备是隧道的入端点设备,转发设备接收到封装有IP头的QUIC报文后,转发设备将stream实例的标记信息,添加到隧道头中,处理报文的装置即为转发报文的装置。
在处理报文的装置是硬件设备时,图6示出了设备的结构示意图。设备600包括至少一个处理器601、通信总线602、存储器603以及至少一个网络接口604。
处理器601例如是通用中央处理器(central processing unit,CPU)、网络处理器(network processer,NP)、图形处理器(Graphics Processing Unit,GPU)、神经网络处理器(neural-network processing units,NPU)、数据处理单元(Data Processing Unit,DPU)、微处理器或者一个或多个用于实现本申请方案的集成电路。例如,处理器601包括专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。PLD例如是复杂可编程逻辑器件(complexprogrammable logic device,CPLD)、现场可编程逻辑门阵列(field-programmable gatearray,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合。
通信总线602用于在上述组件之间传送信息。通信总线602可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器603例如是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其它类型的静态存储设备,又如是随机存取存储器(random access memory,RAM)或者可存储信息和指令的其它类型的动态存储设备,又如是电可擦可编程只读存储器(electrically erasable programmable read-only Memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备,或者是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器603例如是独立存在,并通过通信总线602与处理器601相连接。存储器603也可以和处理器601集成在一起。
可选地,存储器603用于保存传输的数据等。
网络接口604使用任何收发器一类的装置,用于与其它设备或通信网络通信。网络接口604包括有线网络接口,还可以包括无线网络接口。其中,有线网络接口例如可以为以太网接口。以太网接口可以是光接口,电接口或其组合。无线网络接口可以为无线局域网(wireless local area networks,WLAN)接口,蜂窝网络的网络接口或其组合等。
在具体实现中,作为一种示例,处理器601可以包括一个或多个CPU。
在具体实现中,作为一种示例,设备600可以包括多个处理器。这些处理器中的每一个可以是一个单核处理器(single-CPU),也可以是一个多核处理器(multi-CPU)。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(如计算机程序指令)的处理核。
在具体实现中,作为一种示例,设备600还可以包括输出设备和输入设备。输出设备和处理器601通信,可以以多种方式来显示信息。例如,输出设备可以是液晶显示器(liquid crystal display,LCD)、发光二级管(light emitting diode,LED)显示设备、阴极射线管(cathode ray tube,CRT)显示设备或投影仪(projector)等。输入设备和处理器601通信,以多种方式接收用户的输入。例如,输入设备可以是鼠标、键盘、触摸屏设备或传感设备等。
在一些实施例中,存储器603用于存储执行本申请中处理报文的程序代码6031,处理器601执行存储器603中存储的程序代码6031。也即是,设备600可以通过处理器601以及存储器603中的程序代码6031,来实现方法实施例提供的处理报文的方法。
在处理报文的装置是硬件设备时,图7示出了设备的另一种结构示意图。设备700包括主控板710和接口板720。
主控板710也称为主处理单元(main processing unit,MPU)或路由处理卡(routeprocessor card),主控板710用于对设备700中各个组件的控制和管理,包括路由计算、设备管理、设备维护、协议处理功能。主控板710包括:第一中央处理器711和存储器712。
接口板720也称为线路接口单元卡(line processing unit,LPU)、线卡(linecard)或业务板。接口板720用于提供各种业务接口并实现数据包的转发。业务接口包括而不限于以太网接口、POS(packet over sONET/SDH)接口等,以太网接口例如是灵活以太网业务接口(flexible ethernet clients,FlexE clients)。接口板720包括:第二中央处理器721、网络处理器722、转发表项存储器724和物理接口卡(physical interface card,PIC)723。
第二中央处理器721用于对接口板720进行控制管理并与第一中央处理器711进行通信。
网络处理器722用于实现报文的转发处理。网络处理器722的形态例如是转发芯片。具体而言,网络处理器722用于基于转发表项存储器724保存的转发表转发接收到的报文,如果报文的目的地址为设备700的地址,则将该报文上送至CPU(如第一中央处理器711)处理;如果报文的目的地址不是设备700的地址,则根据该目的地址从转发表中查找到该目的地址对应的下一跳和出接口,将该报文转发到该目的地址对应的出接口。其中,上行报文的处理包括:报文入接口的处理,转发表查找;下行报文的处理:转发表查找等等。
物理接口卡723用于实现物理层的对接功能,原始的流量由此进入接口板720,以及处理后的报文从该物理接口卡723发出。物理接口卡723也称为子卡,可安装在接口板720上,负责将光电信号转换为报文并对报文进行合法性检查后转发给网络处理器722处理。在一些实施例中,中央处理器也可执行网络处理器722的功能,比如基于通用CPU实现软件转发,从而物理接口卡723中不需要网络处理器722。
可选地,设备700包括多个接口板720。
可选地,设备700还包括交换网板730。交换网板730也例如称为交换网板单元(switch fabric unit,SFU)。在网络设备有多个接口板720的情况下,交换网板730用于完成各接口板之间的数据交换。例如,两个接口板720之间例如通过交换网板730通信。
主控板710和接口板720耦合。例如。主控板710、两个接口板720,以及交换网板730之间通过***总线与***背板相连实现互通。在一种可能的实现方式中,主控板710和接口板720之间建立进程间通信协议(inter-process communication,IPC)通道,主控板710和接口板720之间通过IPC通道进行通信。
在逻辑上,设备700包括控制面和转发面,控制面包括主控板710和中央处理器,转发面包括执行转发的各个组件,比如转发表项存储器724、物理接口卡723和网络处理器722。控制面执行路由器、生成转发表、处理信令和协议报文、配置与维护设备的状态等功能,控制面将生成的转发表下发给转发面,在转发面,网络处理器722基于控制面下发的转发表对物理接口卡723收到的报文查表转发。控制面下发的转发表例如保存在转发表项存储器724中。在有些实施例中,控制面和转发面例如完全分离,不在同一设备上。
多个接口板720的操作一致,为了简洁,不再赘述。
需要说明的是,主控板可能有一块或多块,有多块的时候例如包括主用主控板和备用主控板。接口板可能有一块或多块,网络设备的数据处理能力越强,提供的接口板越多。接口板上的物理接口卡也可以有一块或多块。交换网板可能没有,也可能有一块或多块,有多块的时候可以共同实现负荷分担冗余备份。在集中式转发架构下,网络设备可以不需要交换网板,接口板承担整个***的业务数据的处理功能。在分布式转发架构下,网络设备可以有至少一块交换网板,通过交换网板实现多块接口板之间的数据交换,提供大容量的数据交换和处理能力。所以,分布式架构的网络设备的数据接入和处理能力要大于集中式架构的设备。可选地,网络设备的形态也可以是只有一块板卡,即没有交换网板,接口板和主控板的功能集成在该一块板卡上,此时接口板上的中央处理器和主控板上的中央处理器在该一块板卡上可以合并为一个中央处理器,执行两者叠加后的功能,这种形态设备的数据交换和处理能力较低(例如,低端交换机或路由器等网络设备)。具体采用哪种架构,取决于具体的组网部署场景,此处不做任何限定。
上述描述了处理报文的方法的执行主体,接下来结合图8描述处理报文的方法的流程,在图8中以执行主体为上述第一设备为例进行说明,如前所述,第一设备是主机、移动终端、服务器、网络中的网络设备等,第一设备还可以是网络叶节点或者网络脊节点,网络叶节点与网络脊节点连接等。第一设备为报文添加stream实例对应的标记信息,以使得其他设备基于报文中添加的stream实例对应的标记信息对报文进行处理。此外,第一设备也可以基于报文中添加的stream实例对应的标记信息对报文进行处理。图8包括步骤801至步骤804。
步骤801,获取第一报文,第一报文包括基于QUIC协议的stream实例所传输的数据。
其中,为了方便描述,本申请实施例以基于QUIC协议的第一stream实例为例进行说明,第一stream实例是某个QUIC连接内的任一stream实例,该QUIC连接是基于QUIC协议创建的连接。QUIC连接是数据发送端和数据接收端之间建立的QUIC连接。
在本实施例中,第一设备获取第一报文。例如,第一设备接收第一报文。再例如,第一设备生成第一报文。
步骤802,获得与stream实例对应的标记信息。
示例性的,stream实例的标记信息用于区分stream实例,不同类型的stream实例对应有不同的stream实例的标记信息,例如,第一stream实例的标记信息用于在QUIC连接内标记一个类型的stream实例,该类型的stream实例包括第一stream实例,每个类型的stream实例可以包括多个stream实例,例如,每个类型的stream实例用于传输一种类型的数据,数据的类型包括视频、语音和文本等。或者,第一stream实例的标记信息在QUIC连接内唯一标记第一stream实例。
示例性的,对于第一stream实例,第一stream实例的标记信息可以包括第一stream实例的相关信息,步骤802的处理可以为:
获得第一stream实例的标记信息,第一stream实例的标记信息包括第一stream实例的相关信息。
在本实施例中,第一设备可以通过获得第一stream实例的相关信息,获得第一stream实例的标记信息。例如,该标记信息包括第一stream实例的相关信息。
例如,该相关信息包括以下至少一项:第一stream实例传输的数据的类型(该类型包括视频、语音和文本等)、第一stream实例的特征信息、第一stream实例关联的path标识和第一stream实例的索引信息,第一stream实例的索引信息用于在第一stream实例所属QUIC连接内指示第一stream实例。特征信息可选的是第一stream实例的stream标识中的指定比特,特征信息可选的是基于第一stream实例的stream标识哈希得到的内容,本申请实施例对特征信息的内容不做具体限定。该索引信息可以是随机分配的,也可以是哈希值,还可以是对不同stream实例顺序分配的连续值。
步骤803,为第一报文添加标记信息,获得第二报文。
在本实施例中,第一设备在确定与第一stream实例的标记信息后,为第一报文添加该标记信息,获得第二报文。示例性的,为第一报文添加的该标记信息时添加在第二报文的外层报文头中,网络中转发第二报文的网络设备能够读取到该标记信息。例如,设置在IPv6报文的flow label字段中,再例如,设置在IPv4报文的option字段中。
步骤804,发送第二报文,标记信息用于接收到第二报文的转发设备基于标记信息处理第二报文。
其中,转发设备可以是网络中的路由器或者交换机等。
在本实施例中,第一设备在获得第二报文后,向外发送第二报文。网络中接收到第二报文的转发设备基于该标记信息处理第二报文,此过程参见后文中图13所示的流程。
基于图8所示的流程,将第一stream实例的标记信息添加到转发设备能够读取到的位置,且是非加密的,使得报文在转发过程,转发设备能够对报文做相应的策略。
接下来基于第一设备的不同对图8所示的流程进行进一步说明。如下提供两种可能的情况。
情况1:第一设备为生成第一报文的装置,第一报文为QUIC报文。例如,第一设备为主机等。
情况2:第一设备为网络中用于转发报文的转发设备。例如,第一设备为网络中的路由器或交换机等。
对于情况1,处理报文的方法的流程参见图9所示的流程,图9包括步骤901至步骤904。
步骤901,生成QUIC报文,QUIC报文包括第一stream实例所传输的数据。
在本实施例中,第一设备作为数据发送端,第一设备与数据接收端建立QUIC连接,具体建立QUIC连接的过程参见RFC9000,此处不再赘述。第一设备在QUIC连接内创建第一stream实例,生成QUIC报文,该QUIC报文包括QUIC连接内第一stream实例所传输的数据,也就是说QUIC报文的payload部分包括第一stream实例对应的STREAM帧,STREAM帧包括所要传输的数据和stream标识。第一设备在QUIC报文的外层封装UDP报文头,得到UDP报文。在图9所示的流程中,第一报文为QUIC报文。
步骤902,获得与第一stream实例对应的标记信息。
在本实施例中,确定第一stream实例的标记信息的方式有多种,如下提供方式一至方式四。方式一是结构化分配方法,例如,规定标记信息占用N个比特,N大于1,规定N个比特中各个比特部分的定义。方式二是随机分配方法,例如,对于第一stream实例,使用某些随机算法生成随机且唯一的标记信息,随机算法可参见RFC4096等。
方式一,确定第一stream实例所传输的数据的类型、第一stream实例的特征信息和索引信息,索引信息用于在第一stream实例所属QUIC连接内唯一指示第一stream实例,将该数据的类型、该第一特征信息和该索引信息,确定为第一stream实例的标记信息。
在本实施例中,确定第一stream实例所传输的数据的类型,该类型用于指示数据是语音数据、图像数据和文本数据中的哪一种。确定第一stream实例的特征信息和索引信息,特征信息可选的是第一stream实例的stream标识中的指定比特,特征信息可选的是基于第一stream实例的stream标识哈希得到,本申请实施例对特征信息的内容不做具体限定。该索引信息在第一stream实例所属QUIC连接唯一指示第一stream实例,该索引信息可以是随机分配的,也可以是哈希值,还可以是对不同stream实例顺序分配的连续值。对于不同stream实例的标记信息,数据的类型占用的比特数是相同的,各stream实例的特征信息占用的比特数是相同的,各stream实例的索引信息占用的比特数是相同的。第一设备将该数据的类型、特征信息和该索引信息,确定为第一stream实例的标记信息。或者,第一设备根据该数据的类型、特征信息和该索引信息,生成第一stream实例的标记信息。例如,第一设备将该数据的类型、特征信息和该索引信息输入随机算法,生成第一stream实例的标记信息。
方式二,根据第一stream实例的相关信息和随机算法,生成该标记信息。
在本实例中,第一设备获取第一stream实例的相关信息,将该相关信息输入预设的随机算法,该随机算法的输出即为第一stream实例的标记信息。
示例性的,该相关信息包括以下至少一项:第一stream实例传输的数据的类型、第一stream实例的特征信息、第一stream实例关联的path标识和第一stream实例的索引信息,第一stream实例的索引信息用于在QUIC连接内指示第一stream实例。
示例性的,第一stream实例的相关信息包括第一stream实例的stream标识,该stream标识是在创建第一stream实例时生成的,在QUIC连接内唯一指示第一stream实例。相应的,在方式二中,将第一stream实例的stream标识,输入预设的随机算法,得到一个输出值,该输出值为第一stream实例的标记信息。
示例性的,第一stream实例的相关信息包括第一stream实例的stream标识、第一报文的源地址和目的地址,第一报文的源地址可以为数据发送端的IP地址,目的地址可以为第一报文的数据接收端的IP地址。相应的,在方式二,将第一stream实例的stream标识、第一报文的源地址和目的地址,输入预设的随机算法,得到一个输出值,该输出值为第一stream实例的标记信息。
示例性的,第一stream实例的相关信息包括第一stream实例的标识、第一报文的五元组信息,五元组信息包括源地址、目的地址、协议、源端口和目的端口。相应的,在方式二中,将第一stream实例的stream标识和第一报文的五元组信息,输入预设的随机算法,得到一个输出值,该输出值为第一stream实例的标记信息。
示例性的,第一stream实例的相关信息包括第一stream实例所传输的数据的类型。相应的,在方式二中,将该数据的类型输入预设的随机算法,得到一个输出值,该输出值为第一stream实例的标记信息。
需要说明的是,上述关于第一stream实例的相关信息,仅是一些示例性的例子,凡是能用于区分第一stream实例的相关信息,均能应用于本申请实施例,此处不再一一举例。另外,该第一stream实例的相关信息包括该第一stream实例的stream标识时,由于stream标识在该QUIC连接内是唯一的,所以生成的第一stream实例的标记信息,在所属QUIC连接内也是唯一的。第一stream实例的相关信息包括第一stream实例所传输的数据的类型时,由于不同stream实例所传输的数据的类型有可能相同,所以生成的第一stream实例的标记信息与其所属类型下的各个stream实例相同。
方式三,将第一stream实例的stream标识,确定为第一stream实例的标记信息。
方式四,基于第一stream实例关联的path,确定第一stream实例的标记信息。
在本实施例中,第一设备确定第一stream实例关联的path,对该path的五元组信息进行处理,得到第一stream实例的标记信息。例如,对path的五元组信息进行处理可以包括将该五元组信息输入预设的随机算法中。
需要说明的是,在方式四中,假设第一stream实例关联的path仅关联第一stream实例,那么第一stream实例的标记信息在QUIC连接内是唯一的。假设第一stream实例关联的path关联其它stream实例,那么第一stream实例的标记信息与该其它stream实例的标记信息相同,也就是说该path关联的stream实例属于一个类型的stream实例。
步骤903,为QUIC报文添加第一stream实例的标记信息,得到第二报文。
在本实施例中,第一设备为步骤901得到的UDP报文添加标记信息,该标记信息位于报文的第一外层报文头中第一字段。
示例性的,在第一外层报文头为IPv6头的情况下,第一字段可以为flow label字段。在第一外层报文头为IPv4头的情况下,第一字段可以为option字段。
步骤904,发送第二报文,标记信息用于接收到第二报文的转发设备基于标记信息处理第二报文。
在本实施例中,第一设备在得到第二报文后,第一设备接入网络的方式不相同,发送第二报文的处理也有一些区别。
在第一设备是单归接入网络的情况下,第一设备连接一个转发设备,第一设备接将第二报文发送给该转发设备即可。例如,在图5所示的网络架构中,第一设备为主机1,第二报文从主机1发往主机2。由于主机1只连接PE1,所以主机1将第二报文发往PE1。
在第一设备是多归接入网络的情况下,第一设备连接至少两个转发设备。第一设备对第一stream实例的标记信息和第二报文的源地址和目的地址进行哈希计算,得到一个哈希值,使用该哈希值选择下一跳转发设备。或者,第一设备对第一stream实例的标记信息和第二报文的源地址、目的地址、源端口和目的端口进行哈希计算,得到一个哈希值,使用该哈希值选择下一跳转发设备。或者,第一设备对第一stream实例的标记信息和第二报文的五元组信息进行哈希计算,得到一个哈希值,使用该哈希值选择下一跳转发设备。
接收到第二报文的转发设备也能识别其中携带的标记信息,进而能对第二报文进行处理。
从图9所示的流程可知,经过网络传输的第二报文的外层报文头包括stream实例的标记信息,所以网络中的转发设备能够识别不同stream实例或者不同类型的stream实例,进而基于stream实例执行处理策略。
需要说明的是,在图9所示的流程中,是为第一报文添加第一外层报文头,在第一外层报文头中设置第一stream实例的标记信息。也可以是第一报文已经存在第一外层报文头,对第一外层报文头中的某些字段进行修改,使得第一外层报文头中包括第一stream实例的标记信息。例如,先为QUIC报文添加IPv6头,然后在IPv6头中的flow label字段中添加该标记信息。
对于情况2,步骤803中第一设备为第一报文添加标记信息,有多种处理方式。例如,第一报文不存在第一外层报文头,为第一报文添加第一外层报文头,该第一外层报文头包括标记信息。再例如,第一报文本身存在第一外层报文头,修改第一报文的第一外层报文头中的某些字段为标记信息,或者在第一报文的第一外层报文头的某些预留字段中添加标记信息。
示例性的,为第一报文添加外层报文头的情况下,处理报文的方法的流程参见图10所示的流程,图10包括步骤1001至步骤1004。
步骤1001,接收第一报文,第一报文包括封装有第二外层报文头的QUIC报文。
在本实施例中,第一设备作为转发第一报文的转发设备,从网络中其它转发设备接收到第一报文,或者从数据发送端接收到第一报文,第一报文包括封装有第二外层报文头的QUIC报文,第二外层报文头包括第二字段,第二字段的内容用于标记第一stream实例。例如,第一报文为IPv6报文,第二外层报文头为IPv6头,IPv6头用于封装UDP报文,UDP报文中包括QUIC报文。再例如,第一报文为IPv4报文,第二外层报文头为IPv4头,IPv4头用于封装UDP报文,UDP报文中包括QUIC报文。
步骤1002,获取第二外层报文头的第二字段的内容,第二字段的内容用于标记第一stream实例;根据第二字段的内容获得第一stream实例的标记信息。
在本实施例中,网络中存在管理设备,管理设备会向网络中对第一报文转发处理的部分或全部转发设备下发配置信息,以及映射策略,该配置信息用于配置读取第二字段的内容,还用于使用该映射策略,将第二字段的内容映射为第一stream实例的标记信息,该映射策略指示将第二字段的内容映射为第一stream实例的标记信息的策略。这些转发设备存储该配置信息和映射策略。
接收第一报文的第一设备,读取第二字段的内容,并获取存储的映射策略。使用映射策略将第二字段的内容映射为第一stream实例的标记信息。
示例性的,第二字段的内容是基于第一stream实例的相关信息获得,相关信息包括的内容参见前文中的描述。例如,第二字段是该相关信息,或者第二字段是将该相关信息输入随机算法获得的输出值等。
示例性的,将第二字段的内容映射为第一stream实例的标记信息的处理为:
方式一,将第二字段的内容确定为第一stream实例的标记信息。
方式二,映射策略为预设的映射算法,将第二字段的内容输入预设的映射算法,得到输出值,该输出值即为第一stream实例的标记信息。
方式三,将第二字段的内容中预设比特位的内容,选取为第一stream实例的标记信息。
上述三种方式为示例性的方式,本申请实施例对该过程不做限定。
步骤1003,为第一报文添加第一外层报文头,得到第二报文,第一外层报文头的第一字段包括标记信息。
在本实施例中,第一设备为第一报文添加第一外层报文头,也能称为是为第一报文封装第一外层报文头。第一外层报文头的第一字段包括第一stream实例的标记信息。
示例性的,第一设备为隧道的入端点设备,隧道的入端点设备为第一报文添加的第一外层报文头为隧道头。例如,隧道头为VXLAN报文头,第一字段为VXLAN报文头的VXLANheader中的保留字段。
需要说明的是,隧道端点设备添加第一外层报文头,在第二报文到达隧道的末端点设备时,隧道的末端点设备删除第一外层报文头。
步骤1004,发送第二报文,标记信息用于接收到第二报文的转发设备基于标记信息处理第二报文。
在本实施例中,第一设备也可以基于标记信息对第二报文进行处理。例如,第一设备在得到第二报文后,若第一设备的出接口仅连接一个设备,则第一设备直接发送第二报文。若第一设备的出接口连接多个设备,则第一设备对第一stream实例的标记信息和第二报文的源地址和目的地址进行哈希计算,得到一个哈希值,使用该哈希值选择下一跳转发设备。或者,第一设备对第一stream实例的标记信息和第二报文的源地址、目的地址、源端口和目的端口进行哈希计算,得到一个哈希值,使用该哈希值选择下一跳转发设备。或者,第一设备对第一stream实例的标记信息和第二报文的五元组信息进行哈希计算,得到一个哈希值,使用该哈希值选择下一跳转发设备。
从图10所示的流程可知,在网络中的转发设备接收到报文后,也可以将stream实例的标记信息添加在报文中,进行发送,使得网络中的转发设备能够基于stream实例做处理策略。
对于情况2,步骤703中为第一报文添加标记信息具体为:修改第一报文的第一外层报文头中的某些字段为标记信息,或者在第一报文的第一外层报文头的某些预留字段中添加标记信息,处理报文的方法的流程参见图11所示的流程,图11包括步骤1101至步骤1104。
步骤1101,接收第一报文,第一报文包括封装有第一外层报文头的QUIC报文。
步骤1101参见步骤1001的描述,此处不再赘述。
步骤1102,获得与第一stream实例对应的标记信息。
示例性的,第一设备还可以使用步骤1002中方式一至方式三的方式,确定第一stream实例的标记信息。
步骤1103,在第一报文的第一外层报文头添加标记信息,获得第二报文。
在本实施例中,第一设备在第一报文的第一外层报文头添加标记信息,获得第二报文,该标记信息可以是对第一外层报文头的某些字段进行修改,也可以是添加在第一外层报文头的预留字段中,例如,第一外层报文头为IPv6头,IPv6头的flow label的值为0,将flow label的值修改为第一stream实例的标记信息。
步骤1104,发送第二报文,标记信息用于接收到第二报文的转发设备基于标记信息处理第二报文。
步骤1104参见步骤1004的描述,此处不再赘述。
在另一种可能的实现方式中,第一stream实例是双向stream实例,第一stream实例的stream标识指示双向stream实例。此种情况下,第一stream实例所属的双方中仅一方确定第一stream实例对应的标记信息,另一方使用该标记信息。参见图12所示的流程,在图12所示的流程中,数据发送端和数据接收端为创建第一stream实例的双向,数据接收端为前文中提到的第一设备。
步骤1201,数据发送端生成基于QUIC协议的第一QUIC报文,该第一QUIC报文中STREAM帧包括第一stream实例的stream标识。
步骤1202,数据发送端确定与第一stream实例对应的标记信息。
步骤1201至步骤1202的处理过程与步骤901至步骤902处理过程类似,此处不再赘述。
步骤1203,数据发送端为第一QUIC报文添加外层报文头,得到第三报文。
在本实施例中,由于QUIC报文是基于UDP,所以第一QUIC报文的外层封装有UDP报文头,在封装有UDP报文头的第一QUIC报文的外层添加外层报文头,该外层报文头的第三字段包括标记信息。
示例性的,在该外层报文头为IPv6头的情况下,第三字段可以为flow label字段。在该外层报文头为IPv4头的情况下,第三字段可以为option字段。
步骤1204,数据发送端发送第三报文,第三报文中的标记信息用于接收到第三报文的转发设备基于该标记信息处理第三报文。
步骤1204中的描述参见步骤904中的描述,此处不再赘述。
步骤1205,数据接收端接收第三报文,存储与第一stream实例对应的标记信息。
在本实施例中,数据接收端接收到第三报文时,由于是第一次接收第一stream实例的stream标识的报文,则数据接收端也创建第一stream实例的分布性实体。并且数据接收端存储与第一stream实例对应的标记信息。
步骤1206,数据接收端生成基于QUIC协议的第二QUIC报文。
在本实施例中,数据接收端要向数据发送端发送数据或者控制信息时,数据接收端生成基于QUIC协议的第二QUIC报文,第二QUIC报文中STREAM帧包括第一stream实例的stream标识,第二QUIC报文为前文描述的第一报文。
步骤1207,数据接收端获取存储的第一stream实例的标记信息。
后续数据接收端使用第一stream实例发送数据时,均可以使用存储的与第一stream实例对应的标记信息。
步骤1208,数据接收端为第二QUIC报文添加第一外层报文头,获得第二报文,第一外层报文头的第一字段包括该标记信息。
在本实施例中,由于QUIC报文是基于UDP,所以第二QUIC报文的外层封装有UDP报文头,在封装有第二QUIC报文的UDP报文头的外层添加第一外层报文头,第一外层报文头的第一字段包括标记信息。
步骤1209,数据接收端发送第二报文,接收到第二报文的转发设备基于标记信息处理第二报文。
步骤1209的处理方式参见步骤804的处理方式,此处不再赘述。
从图12所示的流程可知,第一stream实例是一个双向stream实例,数据接收端不需要计算标记信息,能够节约处理资源。
需要说明的是,在图12所示的流程中,是数据发送端生成第一stream实例的标记信息,在本申请实施例中,也可以是数据接收端生成第一stream实例的标记信息,发送给数据发送端,此处不再赘述。
针对图9至图12所示的流程,需要说明的是,在每个stream实例的标记信息在所属QUIC连接内唯一时,单个QUIC报文包括的STREAM帧均属于同一stream实例,这样,是对每个stream实例进行处理。在每个类型stream实例的标记信息在所属QUIC连接内唯一时,单个QUIC报文包括的STREAM帧属于同一类型的stream实例,这样,是对每一类stream实例进行处理。此处的处理包括但不限于负载均衡处理。
为了更好地理解本申请实施例,接下来描述基于标记信息进行报文处理的流程,参见图13所示的流程,在图13中以执行主体为上述第二设备为例进行说明,如前所述,第二设备是主机、移动终端、服务器、网络中的网络设备,第二设备还可以是网络叶节点或者网络脊节点,网络叶节点与网络脊节点连接等。此处网络设备可以是网络中的交换机或路由器等。第二设备基于报文的外层报文头中添加的标记信息对报文进行处理,该标识信息为stream实例对应的标识信息。
步骤1301,获取报文,该报文包括基于QUIC协议的stream实例所传输的数据,该报文的外层报文头包括该stream实例的标记信息。
在本实施例中,第二设备具体为网络中的转发设备,该转发设备接收报文,该报文为创建第一stream实例的设备发送的报文,该报文为步骤903、步骤1003和步骤1103和步骤1203中描述的第二报文。第二设备在该报文外层报文头的第一字段中获取第一stream的标记信息。
示例性的,该标记信息用于在一个QUIC连接内标记第一stream实例,或者,该标记信息用于在一个QUIC连接内标记某个类型的stream实例,该类型的stream实例包括第一stream实例。
步骤1302,基于该标记信息,对该报文进行处理。
在本实施例中,第二设备使用第一stream实例的标记信息,对该报文进行处理。示例性的,对该报文的处理包括对该报文进行转发、对该报文进行分类采集和采集该报文的时延信息等。
示例性的,在对该报文进行转发处理时,可以基于第一stream实例的标记信息和外层报文头中目的IP地址,对该报文进行转发处理。
其中,目的地址可以是目的IP地址。
在本实施例中,第二设备获取该报文的外层报文头中的目的地址,使用第一stream实例的标记信息和该目的地址,对该报文进行转发处理。例如,第二设备中配置有不同标记信息的报文所经过的路径,第二设备使用第一stream实例的标记信息和目的地址,查找到下一跳,向该下一跳发送报文。
示例性的,在步骤1302中,可以基于第一stream实例的标记信息的哈希值对报文进行转发处理,处理为:
根据该标记信息进行哈希计算,得到哈希值;基于该哈希值在多条等价转发路径中确定用于转发该报文的转发路径;根据所确定的转发路径转发该报文。
在本实施例中,在存在多条等价路由路径的情况下,第二设备对第一stream实例的标记信息进行哈希处理,得到一个哈希值。使用该哈希值在多条等价路由路径中,确定下一跳,向该下一跳发送报文。
或者,在存在多条等价路由路径的情况下,第二设备对报文的五元组信息中的一种或多种和第一stream实例的标记信息,得到一个哈希值。使用该哈希值在多条等价路由路径中,确定下一跳,向该下一跳发送报文。例如,第二设备对第一stream实例的标记信息外层报文信息中的目的地址和源地址进行哈希处理,得到一个哈希值。再例如,第二设备对第一stream实例的标记信息、报文的目的地址、源地址、源端口和目的端口进行哈希处理,得到一个哈希值。
图13中的流程是以第二设备是转发设备为例进行说明,在实际处理时也可以是创建第一stream实例的设备,那么在步骤1201中,获取报文,具体为生成报文,其余处理与图13中的描述相同。
接下来对应图13所示的流程进行举例说明,假设处理报文的装置为图5中的PE1,PE1到目的主机2存在两条等价路由路径,PE1-->P1-->P3-->PE2和PE1-->P2-->P4-->PE2。源主机1和目的主机2之间创建第一stream实例和第二stream实例,第一stream实例的标记信息与第二stream实例的标记信息不相同。假设源主机1同时使用第一stream实例和第二stream实例向目的主机2发送两个字节流(如两个文件的数据),PE1将第一stream实例对应的报文发送至P1,经路径PE1-->P1-->P3-->PE2。PE2将第二stream实例对应的报文发送至P2,经路径PE1-->P2-->P4-->PE2,参见图14所示的负载均衡示意图。这样,不同的stream实例的报文经过的路径不相同,能够实现基于stream实例的标记信息的负载均衡。
再例如,图15示出了另一种场景下的负载均衡的示意图,如图15所示,该场景涉及spine-leaf网络,或称为leaf-spine网络。该场景包括主机、leaf节点和spine节点。其中,主机可以包括源主机1和目的主机2,leaf节点可以包括leaf 1、leaf 2、leaf3和leaf4,spine节点可以包括spine1和spine2。源主机1双归接入网络,目的主机2双归接入网络,源主机1接入leaf1和leaf2,leaf1和leaf2接入spine1和spine2,目的主机2接入leaf3和leaf4,leaf3和leaf4接入spine1和spine2。源主机1创建第一stream实例和第二stream实例,第一stream实例的标记信息与第二stream实例的标记信息不相同。假设源主机1同时使用第一stream实例和第二stream实例向目的主机2发送两个字节流(如两个文件的数据),第一stream实例的标记信息和/或第二stream实例的标记信息可以由源主机、leaf节点或spine节点添加至相应的报文中,获得报文的源主机、leaf节点或spine节点可以根据报文中的第一stream实例的标记信息和/或第二stream实例的标记信息进行报文处理。源主机1可以使用第一stream实例的标记信息在两条等价路由路径中,确定第一stream实例对应的报文发往leaf1。或者,leaf1使用第一stream实例的标记信息,在两条等价路由路径中,确定第一stream实例对应的报文发往spine1。或者,spine1使用第一stream实例的标记信息,在两条等价路由路径中,确定第一stream实例对应的报文发往leaf3。leaf3将第一stream实例对应报文发往目的主机2。并且源主机1可以使用第二stream实例的标记信息,在两条等价路由路径中,确定第二stream实例对应的报文发往leaf2。或者,Leaf2使用第二stream实例的标记信息,在两条等价路由路径中,确定第二stream实例对应的报文发往spine2。或者,Spine2使用第二stream实例的标记信息,在两条等价路由路径中,确定第二stream实例对应的报文发往leaf4。Leaf4将第二stream实例对应报文发往目的主机2。这样,第一stream实例对应的报文经路径leaf1-->spine1-->leaf3到达目的主机2,第二stream实例对应的报文经路径leaf2-->spine2-->leaf4到达目的主机2。可见通过stream实例对应的标记信息,能实现负载均衡。
此处各个节点在两条等价路由路径中选择路径的方式参见图13所示的流程,此处不再赘述。
在图14和图15中,是以对报文进行负载均衡处理为例进行说明,例如,还可以是确定不同标记信息的报文的数目或不同标记信息的报文的时延信息等。
本申请实施例中,将stream实例的标记信息添加到报文中,可以使得转发设备在不对STREAM帧进行解密的情况下,实现基于stream的处理策略。而且在该处理策略为负载均衡策略时,能够提升传输性能。而且本申请与现有标准规范兼容,具有较好的可部署性,例如,在IPv6报文中直接占用flow label字段设置stream实例的标记信息。再例如,在VXLAN报文中占用VXLAN Header的保留字段。再例如,在IPv4报文中直接占用option字段设置stream实例的标记信息。
图16是本申请实施例提供的处理报文的装置的结构图。该装置可以通过软件、硬件或者两者的结合实现成为该装置中的部分或者全部。本申请实施例提供的处理装置可以实现本申请实施例图8至图12所述的流程,具体的,本申请实施例提供的处理装置能够实现图8至图12所示的第一设备所执行的相关步骤。该处理报文的装置包括获取模块1610、确定模块1620、添加模块1630和发送模块1640,其中:
获取模块1610,用于获取第一报文,所述第一报文包括基于QUIC协议的stream实例所传输的数据,具体可以用于实现步骤801、步骤901、步骤1001、步骤1101和步骤1201的获取功能以及执行步骤801、步骤901、步骤1001、步骤1101和步骤1201包含的隐含步骤;
确定模块1620,用于获得与所述stream实例对应的标记信息,具体可以用于实现步骤802、步骤902、步骤1002、步骤1102和步骤1202的确定功能以及执行步骤802、步骤902、步骤1002、步骤1102和步骤1202包含的隐含步骤;
添加模块1630,用于为所述第一报文添加所述标记信息,获得第二报文,具体可以用于实现步骤803、步骤903、步骤1003、步骤1103和步骤1203的添加功能以及执行步骤803、步骤903、步骤1003、步骤1103和步骤1203包含的隐含步骤;
发送模块1640,用于发送所述第二报文,所述标记信息用于接收到所述第二报文的转发设备基于所述标记信息处理所述第二报文,具体可以用于实现步骤804、步骤904、步骤1004、步骤1104和步骤1204的发送功能以及执行步骤804、步骤904、步骤1004、步骤1104和步骤1204包含的隐含步骤。
在一种可能的实现方式中,所述标记信息用于在QUIC连接内标记所述stream实例,或者,所述标记信息用于在所述QUIC连接内标记所述stream实例的类型,所述stream实例属于所述标记信息所标记的stream实例。
在一种可能的实现方式中,所述添加模块1630,用于:
在所述第一报文的第一外层报文头的第一字段中添加所述标记信息。
在一种可能的实现方式中,所述第一外层报文头为IPv6头,所述第一字段为flowlabel字段;或者,
所述第一外层报文头为IPv4头,所述第一字段为option字段。
在一种可能的实现方式中,所述确定模块1620,用于:
获得所述stream实例的标记信息,所述stream实例的标记信息包括所述stream实例的相关信息。
在一种可能的实现方式中,所述确定模块1620,用于:
根据所述stream实例的相关信息和随机算法,生成所述标记信息。
在一种可能的实现方式中,所述相关信息包括以下至少一项:所述数据的类型、所述stream实例的特征信息、所述stream实例关联的path标识和所述stream实例的索引信息,所述stream实例的索引信息用于在QUIC连接内指示所述stream实例。
在一种可能的实现方式中,所述确定模块1620,用于:
根据所述stream实例的标识和所述随机算法,生成所述标记信息;或者,
根据所述stream实例的标识、所述第一报文的源地址、目的地址和所述随机算法,生成所述标记信息;或者,
根据所述stream实例的标识、所述第一报文的五元组信息和所述随机算法,生成所述标记信息。
在一种可能的实现方式中,所述stream实例为双向stream实例;所述确定模块1620,用于:
获取基于所述stream实例所传输的第三报文,所述第三报文沿第一方向传输,所述第二报文沿第二方向传输,所述第一方向与所述第二方向的方向相反;
在所述第三报文的外层报文头中获取所述标记信息。
在一种可能的实现方式中,所述第一报文包括封装有第二外层报文头的QUIC报文;
所述确定模块1620,用于:
获取所述第二外层报文头的第二字段的内容,所述第二字段的内容用于标记所述stream实例;
根据所述第二字段的内容获得所述stream实例的标记信息。
在一种可能的实现方式中,所述标记信息包括所述stream实例的相关信息,所述相关信息包括以下至少一项:所述数据的类型、所述stream实例的特征信息,所述stream实例关联的path标识和所述stream实例的索引信息,所述stream实例的索引信息用于在QUIC连接内唯一指示所述stream实例。
在一种可能的实现方式中,所述获取模块1610,用于生成所述第一报文,所述第一报文为基于QUIC协议的QUIC报文;或者,
接收第一报文,所述第一报文包括封装有第三外层报文头的QUIC报文。
在一种可能的实现方式中,所述第一设备为主机或网络设备。
在一种可能的实现方式中,所述第一设备为网络叶节点,所述网络叶节点与网络脊节点连接。
图17是本申请实施例提供的处理报文的装置的结构图。该装置可以通过软件、硬件或者两者的结合实现成为该装置中的部分或者全部。本申请实施例提供的处理装置的报文可以实现本申请实施例图13所述的流程,具体的,本申请实施例提供的处理装置能够实现图13所示的第二设备所执行的相关步骤。该处理报文的装置包括报文获取模块1710和处理模块1720,其中:
报文获取模块1710,用于获取报文,所述报文包括基于QUIC协议的stream实例所传输的数据,所述报文的外层报文头包括与所述stream实例对应的标记信息,具体可以用于实现步骤1301的报文获取功能以及执行步骤1302包含的隐含步骤;
处理模块1720,用于基于所述标记信息,对所述报文进行处理,具体可以用于实现步骤1302的处理功能以及执行步骤1302包含的隐含步骤。
在一种可能的实现方式中,所述处理模块1720,用于:
基于所述标记信息和所述外层报文头中目的地址,对所述报文进行转发处理。
在一种可能的实现方式中,所述处理模块1720,用于:
根据所述标记信息进行哈希计算,得到哈希值;
基于所述哈希值在多条等价转发路径中确定用于转发所述报文的转发路径;
根据所确定的转发路径转发所述报文。
在一种可能的实现方式中,所述标记信息用于在QUIC连接内标记所述stream实例,或者,所述标记信息用于在所述QUIC连接内标记所述stream实例的类型,所述stream实例属于所述标记信息所标记的stream实例。
在一种可能的实现方式中,所述标记信息包括在所述报文的外层报文头的字段中;其中,
所述外层报文头为IPv6头,所述字段为flow label字段;或者,
所述外层报文头为IPv4头,所述字段为option字段。
在一种可能的实现方式中,所述标记信息包括所述stream实例的相关信息,所述相关信息包括以下至少一项:所述数据的类型、所述stream实例的特征信息,所述stream实例关联的path标识和所述stream实例的索引信息,所述stream实例的索引信息用于在QUIC连接内唯一指示所述stream实例。
在一种可能的实现方式中,所述第二设备为主机或网络设备。
在一种可能的实现方式中,所述第二设备为网络叶节点或网络脊节点。
图16和图17所示的处理报文的装置执行处理报文的详细过程请参照前面各个实施例中的描述,在这里不进行重复说明。示例性的,图16中所示的处理报文的装置应用于图6或图7中所示的设备,或者应用于第一设备。图17中所示的处理报文的装置应用于图6或图7中所示的设备,或者应用于第二设备。
另外,图16和图17中的模块划分方式是示例性的划分方式,本申请实施例不做限定。
在一些实施例中,提供了一种处理报文的***,该***包括第一设备和第二设备,第一设备用于在前文中执行处理报文的部分过程,第二设备用于在前文中执行处理报文的部分过程。
在一些实施例中,提供了一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中。第一设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得第一设备执行图8至图12所示的流程。
在一些实施例中,提供了一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中。第二设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得第二设备执行图13所示的流程。
本领域普通技术人员可以意识到,结合本申请中所公开的实施例中描述的各方法步骤和单元,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各实施例的步骤及组成。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的***架构、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或模块的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
该作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请实施例方案的目的。
另外,在本申请各个实施例中的各模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以是两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件模块的形式实现。
该集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例中方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。还应理解,尽管以下描述使用术语第一、第二等来描述各种元素,但这些元素不应受术语的限制。这些术语只是用于将一元素与另一元素区别分开。例如,在不脱离各种示例的范围的情况下,第一stream实例可以被称为第二stream实例,并且类似地,第二stream实例可以被称为第一stream实例。第一stream实例和第二stream实例都可以是stream实例,并且在某些情况下,可以是单独且不同的stream实例。
本申请中术语“至少一个”的含义是指一个或多个,本申请中术语“多个”的含义是指两个或两个以上。
以上描述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (27)
1.一种处理报文的方法,所述方法应用于第一设备,其特征在于,所述方法包括:
获取第一报文,所述第一报文包括基于QUIC协议的流stream实例所传输的数据;
获得与所述stream实例对应的标记信息;
为所述第一报文添加所述标记信息,获得第二报文;
发送所述第二报文,所述标记信息用于接收到所述第二报文的转发设备基于所述标记信息处理所述第二报文。
2.根据权利要求1所述的方法,其特征在于,所述标记信息用于在QUIC连接内标记所述stream实例,或者,所述标记信息用于在所述QUIC连接内标记所述stream实例的类型,所述stream实例属于所述标记信息所标记的stream实例。
3.根据权利要求1或2所述的方法,其特征在于,所述为所述第一报文添加所述标记信息,包括:
在所述第一报文的第一外层报文头的第一字段中添加所述标记信息。
4.根据权利要求3所述的方法,其特征在于,所述第一外层报文头为互联网协议第六版IPv6头,所述第一字段为流标签flow label字段;或者,
所述第一外层报文头为互联网协议第四版IPv4头,所述第一字段为选项option字段。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述获得与所述stream实例对应的标记信息,包括:
获得所述stream实例的标记信息,所述stream实例的标记信息包括所述stream实例的相关信息。
6.根据权利要求1-4任一项所述的方法,其特征在于,所述获得与所述stream实例对应的标记信息,包括:
根据所述stream实例的相关信息和随机算法,生成所述标记信息。
7.根据权利要求5或6所述的方法,其特征在于,其中,所述相关信息包括以下至少一项:所述数据的类型、所述stream实例的特征信息、所述stream实例关联的路径path标识和所述stream实例的索引信息,所述stream实例的索引信息用于在QUIC连接内指示所述stream实例。
8.根据权利要求6所述的方法,其特征在于,所述根据所述stream实例的相关信息和随机算法,生成所述标记信息,包括:
根据所述stream实例的标识和所述随机算法,生成所述标记信息;或者,
根据所述stream实例的标识、所述第一报文的源地址、目的地址和所述随机算法,生成所述标记信息;或者,
根据所述stream实例的标识、所述第一报文的五元组信息和所述随机算法,生成所述标记信息。
9.根据权利要求1-4任一项所述的方法,其特征在于,所述stream实例为双向stream实例;
所述获得与所述stream实例对应的标记信息,包括:
获取基于所述stream实例所传输的第三报文,所述第三报文沿第一方向传输,所述第二报文沿第二方向传输,所述第一方向与所述第二方向的方向相反;
在所述第三报文的外层报文头中获取所述标记信息。
10.根据权利要求1-4任一项所述的方法,其特征在于,所述第一报文包括封装有第二外层报文头的QUIC报文;
所述获得与所述stream实例对应的标记信息,包括:
获取所述第二外层报文头的第二字段的内容,所述第二字段的内容用于标记所述stream实例;
根据所述第二字段的内容获得所述stream实例的标记信息。
11.根据权利要求9或10所述的方法,其特征在于,所述标记信息包括所述stream实例的相关信息,所述相关信息包括以下至少一项:所述数据的类型、所述stream实例的特征信息,所述stream实例关联的path标识和所述stream实例的索引信息,所述stream实例的索引信息用于在QUIC连接内指示所述stream实例。
12.根据权利要求1-11任一项所述的方法,其特征在于,所述获取第一报文,包括:
生成所述第一报文,所述第一报文为基于QUIC协议的QUIC报文;或者,
接收所述第一报文,所述第一报文包括封装有第三外层报文头的QUIC报文。
13.根据权利要求1-12任一项所述的方法,其特征在于,所述第一设备为主机或网络设备。
14.根据权利要求1-13任一项所述的方法,其特征在于,所述第一设备为网络叶节点或网络脊节点,所述网络叶节点与所述网络脊节点连接。
15.一种处理报文的方法,所述方法应用于第二设备,其特征在于,所述方法包括:
获取报文,所述报文包括基于QUIC协议的流stream实例所传输的数据,所述报文的外层报文头包括与所述stream实例对应的标记信息;
基于所述标记信息,对所述报文进行处理。
16.根据权利要求15所述的方法,其特征在于,所述基于所述标记信息,对所述报文进行处理,包括:
基于所述标记信息和所述外层报文头中目的地址,对所述报文进行转发处理。
17.根据权利要求15所述的方法,其特征在于,所述基于所述标记信息,对所述报文进行处理,包括:
根据所述标记信息进行哈希计算,得到哈希值;
基于所述哈希值在多条等价转发路径中确定用于转发所述报文的转发路径;
根据所确定的转发路径转发所述报文。
18.根据权利要求15-17任一项所述的方法,其特征在于,所述标记信息用于在QUIC连接内标记所述stream实例,或者,所述标记信息用于在所述QUIC连接内标记所述stream实例的类型,所述stream实例属于所述标记信息所标记的stream实例。
19.根据权利要求15-18任一项所述的方法,其特征在于,所述标记信息包括在所述报文的外层报文头的字段中;其中,
所述外层报文头为互联网协议第六版IPv6头,所述字段为流标签flow label字段;或者,
所述外层报文头为互联网协议第四版IPv4头,所述字段为选项option字段。
20.根据权利要求19所述的方法,其特征在于,所述标记信息包括所述stream实例的相关信息,所述相关信息包括以下至少一项:所述数据的类型、所述stream实例的特征信息,所述stream实例关联的路径path标识和所述stream实例的索引信息,所述stream实例的索引信息用于在QUIC连接内指示所述stream实例。
21.根据权利要求15-20任一项所述的方法,其特征在于,所述第二设备为主机或网络设备。
22.根据权利要求15-21任一项所述的方法,其特征在于,所述第二设备为网络叶节点或网络脊节点。
23.一种处理报文的***,其特征在于,所述***包括第一设备和第二设备,其中,
所述第一设备,用于获取第一报文,所述第一报文包括基于QUIC协议的流stream实例所传输的数据;获得与所述stream实例对应的标记信息;为所述第一报文添加所述标记信息,获得第二报文,所述第二报文的外层报文头包括所述标记信息;发送所述第二报文;
所述第二设备,用于获取所述第二报文;基于所述标记信息,对所述第二报文进行处理。
24.一种通信设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条计算机指令,所述计算机指令由所述处理器执行以触发所述通信设备实现如权利要求1-14任一项所述的处理报文的方法。
25.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条计算机指令,所述计算机指令由通信设备的处理器执行以触发所述通信设备实现如权利要求1-14任一项所述的处理报文的方法。
26.一种通信设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条计算机指令,所述计算机指令由所述处理器执行以触发所述通信设备实现如权利要求15-22任一项所述的处理报文的方法。
27.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条计算机指令,所述计算机指令由通信设备的处理器执行以触发所述通信设备实现如权利要求15-22任一项所述的处理报文的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2022/118234 WO2023040782A1 (zh) | 2021-09-18 | 2022-09-09 | 处理报文的方法、***、设备和存储介质 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111112961 | 2021-09-18 | ||
CN2021111129618 | 2021-09-18 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115842876A true CN115842876A (zh) | 2023-03-24 |
Family
ID=85574571
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111467765.2A Pending CN115842876A (zh) | 2021-09-18 | 2021-12-03 | 处理报文的方法、***、设备和存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115842876A (zh) |
WO (1) | WO2023040782A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10791485B2 (en) * | 2018-10-16 | 2020-09-29 | Cisco Technology, Inc. | Systems and methods for quick user datagram protocol internet connection (QUIC) with multipath |
CN113365267A (zh) * | 2020-03-06 | 2021-09-07 | 华为技术有限公司 | 通信方法和装置 |
CN113365369A (zh) * | 2020-03-06 | 2021-09-07 | 华为技术有限公司 | 通信方法和装置 |
CN112039884B (zh) * | 2020-08-31 | 2022-05-31 | 浪潮云信息技术股份公司 | 快速互联协议quic在分布式数据库***中的应用方法 |
-
2021
- 2021-12-03 CN CN202111467765.2A patent/CN115842876A/zh active Pending
-
2022
- 2022-09-09 WO PCT/CN2022/118234 patent/WO2023040782A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023040782A1 (zh) | 2023-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109861924B (zh) | 报文的发送、处理方法及装置,pe节点,节点 | |
US7738457B2 (en) | Method and system for virtual routing using containers | |
US20220078114A1 (en) | Method and Apparatus for Providing Service for Traffic Flow | |
WO2017137004A1 (en) | Method and apparatus for service function forwarding in a service domain | |
US7486674B2 (en) | Data mirroring in a service | |
CN113691448B (zh) | SRv6业务链中转发报文的方法、SFF及SF设备 | |
RU2704714C1 (ru) | Технологии для предоставления максимальной глубины идентификатора сегмента узла и/или линии связи, использующие ospf | |
CN112311673B (zh) | 在采用分段路由的网络中使用和处理每切片分段标识符 | |
US9445384B2 (en) | Mobile device to generate multiple maximum transfer units and data transfer method | |
WO2018036254A1 (zh) | 报文转发方法及装置 | |
US11949590B1 (en) | Maintaining processing core affinity for fragmented packets in network devices | |
JP2016508682A (ja) | ドメインにまたがるvpnトラフィックのqosによる区別のための方法および配置構成 | |
US20220417323A1 (en) | In-band protocol-based in-network computation offload framework | |
CN112134776A (zh) | 生成组播转发表项的方法和接入网关 | |
US20170048103A1 (en) | Communication apparatus, communication method, and communication system | |
WO2022048418A1 (zh) | 一种转发报文的方法、设备和*** | |
CN112822097A (zh) | 报文转发的方法、第一网络设备以及第一设备组 | |
US20150372924A1 (en) | Network routing overlay | |
WO2021147372A1 (zh) | 一种sr报文传输方法、装置及*** | |
US20230216792A1 (en) | Method for Generating Routing Information, Method for Sending Location Information, Method for Forwarding Packet, and Device | |
CN113965518A (zh) | 一种报文处理的方法及设备 | |
US11637775B2 (en) | Methods and systems for location identifier based forwarding | |
WO2022007550A1 (zh) | 一种负载均衡方法、装置、网络设备及*** | |
WO2023040782A1 (zh) | 处理报文的方法、***、设备和存储介质 | |
CN116319535A (zh) | 路径切换方法、装置、网络设备、以及网络*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |