CN114731334B - 报文保序方法和装置 - Google Patents
报文保序方法和装置 Download PDFInfo
- Publication number
- CN114731334B CN114731334B CN202080083313.1A CN202080083313A CN114731334B CN 114731334 B CN114731334 B CN 114731334B CN 202080083313 A CN202080083313 A CN 202080083313A CN 114731334 B CN114731334 B CN 114731334B
- Authority
- CN
- China
- Prior art keywords
- message
- preserving
- order
- messages
- group
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/54—Store-and-forward switching systems
- H04L12/56—Packet switching systems
- H04L12/5601—Transfer mode dependent, e.g. ATM
- H04L2012/5603—Access techniques
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供了一种报文保序方法和装置,其中方法包括:接收第一报文,其中,第一报文为多个报文中的任意一个,根据第一报文在多个报文中的发送顺序和第一报文与多个报文中的其他报文的保序关系对第一报文进行编码以得到第一报文的编码,其中,第一报文的编码用于指示第一报文与多个报文中的其他报文的执行关系,以及向第二模块发送所述第一报文及其编码。本申请实现了报文的保序传输,极大的缩短了报文的传输延时,从而避免出现报文保序传输延时被无形拉长的现象,极大的提高了带宽的利用率,同时也避免出现由于时间的推移而产生积累效应的问题,极大的减轻了对更上游模块的报文的传输影响。
Description
技术领域
本申请涉及数据通信领域,尤其涉及一种报文保序方法和装置。
背景技术
随着互联网和通信技术的快速发展,数据传输系统被广泛应用于服务器、存储器、网络和人工智能系统中。数据传输系统包括多个模块,模块之间可进行报文传输。报文的传输方式包括保序传输,即在模块之间传输报文时,保证存在保序关系的报文之间的发送顺序,其中,存在保序关系的报文可以理解为:针对存在保序关系的两种报文,其中,第二种报文依赖于第一种报文进行保序,即第二种报文的执行依赖于第一种报文的执行,则在执行一报文且该报文为第二种报文时,需确认排在该报文之前的第一种报文均执行完成后,才可执行该报文。
目前,为了实现报文的保序传输,通常采用的方式为:若多个报文在第一模块和第二模块之间传输,则在第一模块向第二模块发送多个报文中的报文时,为了实现报文的保序传输,第一模块要在接收到第二模块发送的确认消息后,方可发送该报文,其中,第二模块在接收并执行第一模块发送的前一个报文后,向第一模块发送确认消息。
显然,在上述方式中,一方面,由于第一模块要在接收到第二模块发送的确认消息后发送报文,极大的降低了带宽的利用率,且导致报文的传输延时大,从而使得报文的保序传输延时被无形拉长;另一方面,由于报文的传输延时大,随着时间的推移,产生积累效应,极大的影响了更上游模块的报文传输。
发明内容
本申请提供一种报文保序方法,用于解决由于第一模块要在接收到第二模块发送的确认消息后发送报文,极大的降低了带宽的利用率,且导致报文的传输延时大,从而使得报文的保序传输延时被无形拉长的问题,以及由于报文的传输延时大,随着时间的推移,产生积累效应,极大的影响了更上游模块的报文传输的问题。
第一方面,提供了一种报文保序方法,包括:接收第一报文,其中,所述第一报文为多个报文中的任意一个;根据所述第一报文在所述多个报文中的发送顺序和所述第一报文与所述多个报文中的其他报文的保序关系对所述第一报文进行编码以得到所述第一报文的编码;向第二模块发送所述第一报文及其编码;其中,所述第一报文的编码用于指示所述第一报文与所述多个报文中的其他报文的执行关系。
根据第一报文在多个报文中的发送顺序和第一报文与多个报文中的其他报文的保序关系为第一报文设置编码,使得第一报文的编码指示第一报文与多个报文中的其他报文的执行关系(即排在第一报文之前且限制第一报文执行的报文),因此,在第一模块和第二模块之间传输第一报文时,通过传输第一报文的编码,使得第二模块根据第一报文的编码确定排在第一报文之前且限制第一报文执行的报文,实现了第一报文的保序传输;另外,由于第一报文的编码指示第一报文与多个报文中的其他报文的执行关系(即排在第一报文之前且限制第一报文执行的报文),因此相比于现有技术,在第一模块和第二模块之间传输第一报文时,无需第二模块向第一模块发送确认消息,也无需第一模块确认是否接收到确认消息,无需链路、无需流控,仅通过发送第一报文及其编码,即可实现第一报文的保序传输,极大的缩短了报文的传输延时,从而避免出现报文保序传输延时被无形拉长的现象,极大的提高了带宽的利用率;此外,由于缩短了报文的传输延时,因此避免出现由于时间的推移而产生积累效应的问题,极大的减轻了对更上游模块的报文的传输影响;另外,通过为第一报文设置编码的方式,实现报文的保序传输,方式简单且易于执行。
在一种可能的实施方式中,所述多个报文包括N组保序关系,1≤N且N为整数,其中,所述N组保序关系中的每组保序关系均包括第一种报文和第二种报文,且所述第二种报文依赖于所述第一种报文进行保序。
在一种可能的实施方式中,所述根据所述第一报文在所述多个报文中的发送顺序和所述第一报文与所述多个报文中的其他报文的保序关系对所述第一报文进行编码包括:
若所述第一报文为第i组保序关系中的第一种报文或第二种报文,则为所述第一报文设置基于所述第i组保序关系的第一编码,其中,所述第一编码用于指示所述第一报文所属的基于所述第i组保序关系的保序区间,所述保序区间由划分节点对所述多个报文划分得到,所述划分节点为所述第i组保序关系中的第二种报文切换为第一种报文的节点,所述多个报文按照所述多个报文中的每个报文的发送顺序排序;以及若所述第一报文为第i组保序关系中的第二种报文,则为所述第一报文设置基于所述第i组保序关系的第二编码,其中,所述第二编码用于指示所述第一报文所属的基于第i组保序关系的保序区间内的第一种报文的数量;其中,1≤i≤N且i为整数。
在一种可能的实施方式中,所述N组保序关系中的每组保序关系均为直接保序关系;或者所述N组保序关系中的一部分保序关系为直接保序关系,另一部分保序关系为间接保序关系。
在一种可能的实施方式中,所述多个报文包括3种报文,分别为P报文、NP报文、CPL报文,所述多个报文包括2组保序关系,所述2组保序关系均为直接保序关系;其中,第一组直接保序关系中的第一种报文为P报文,第一组直接保序关系中的第二种报文为CPL报文;第二组直接保序关系中的第一种报文为P报文,第二组直接保序关系中的第二种报文为NP报文。
在一种可能的实施方式中,所述多个报文包括M类报文,所述M类报文中的每类报文均包括一种报文,其中,第k+1类报文直接依赖于第k类报文进行保序,第k+1类报文间接依赖于第1类报文至第k-1类报文中的每类报文进行保序,1≤k≤M-1且k和M均为整数;
所述根据所述第一报文在所述多个报文中的发送顺序和所述第一报文与所述多个报文中的其他报文的保序关系对所述第一报文进行编码包括:
为所述第一报文设置第一编码,所述第一编码用于指示所述第一报文所属的保序区间,所述保序区间由划分节点对所述多个报文划分得到,所述划分节点为第M类报文切换为所述第1类报文至第M-1类报文中的任意一类报文的节点,所述多个报文按照所述多个报文中的每个报文的发送顺序排序;若所述第一报文为所述第k类报文且k=1,则为所述第一报文设置第二编码,其中,所述第二编码用于指示所述第一报文在其所属的保序区间内的报文中的排列序号;若所述第一报文为所述第k类报文且2≤k≤M-1,则为所述第一报文设置第二编码,所述第二编码包括第一编号和第二编号,所述第一编号用于指示所述第一报文所属的保序区间内在所述第一报文之前的第1类报文至第k-1类报文的数量,所述第二编号用于指示所述第一报文在其所属的保序区间内的报文中的排列序号;若所述第一报文为所述第M类报文,则为所述第一报文设置第二编码,所述第二编码包括第一编号和第二编号,所述第一编号用于指示所述第一报文所属的保序区间内在所述第一报文之前的第1类报文至第M-1类报文的数量,所述第二编号用于指示所述第一报文在其所属的保序区间内的报文中的排列序号。
在一种可能的实施方式中,所述多个报文包括M类报文,所述M类报文中的至少一类报文包括多种报文,其中,第k+1类报文中的一种报文直接依赖于第k类报文中与其存在保序关系报文进行保序,第k+1类报文中的一种报文间接依赖于第1类报文至第k-1类报文中与其存在保序关系报文进行保序,1≤k≤M-1且k和M均为整数;
所述根据所述第一报文在所述多个报文中的发送顺序和所述第一报文与所述多个报文中的其他报文的保序关系对所述第一报文进行编码包括:
为所述第一报文设置第一编码,所述第一编码用于指示所述第一报文所属的保序区间,所述保序区间由划分节点对所述多个报文划分得到,所述划分节点为第M类报文中指定的一种报文或者任一种报文切换为第1类报文至第M-1类报文中指定的一种报文或者任一种报文的节点,所述多个报文按照所述多个报文中的每个报文的发送顺序排序;若所述第一报文为所述第k类报文中的第s种报文且k=1,则为所述第一报文设置第二编码,其中,所述第二编码用于指示所述第一报文在其所属的保序区间内的报文中的排列序号;若所述第一报文为所述第k类报文中的第t种报文且2≤k≤M-1,则为所述第一报文设置第二编码,所述第二编码包括第一编号和第二编号,其中,所述第一编号用于指示所述第一报文所属的保序区间内在所述第一报文之前的第1类报文至第k-1类报文中与其存在保序关系的报文数量;第二编号用于指示所述第一报文在其所属的保序区间内的报文中的排列序号;若所述第一报文为所述第M类报文中的第q种报文,则为所述第一报文设置第二编码,所述第二编码包括第一编号和第二编号,其中,所述第一编号用于指示所述第一报文所属的保序区间内在所述第一报文之前的第1类报文至第M-1类报文中与其存在保序关系的报文数量,所述第二编号用于指示所述第一报文在其所属的保序区间内的报文中的排列序号。
在一种可能的实施方式中,所述多个报文包括2类报文,其中,第一类报文包括P报文,第二类报文包括NP报文和CPL报文,所述NP报文依赖于所述P报文进行保序,所述CPL报文依赖于所述P报文进行保序。
第二方面,提供了一种报文保序方法,包括:接收第一模块发送的第一报文及其编码,其中所述第一报文为多个报文中的任意一个报文;根据所述第一报文的编码确定是否执行所述第一报文;其中,所述第一报文的编码用于指示所述第一报文与所述多个报文中的其他报文的执行关系。
在接收到第一模块发送的第一报文及其编码后,根据第一报文的编码即可快速的确定第一报文与多个报文中的其他报文的执行关系(即确定排在第一报文之前且限制第一报文执行的报文),实现了报文的保序传输,以及根据排在第一报文之前且限制第一报文执行的报文更加快速准确的确定是否执行第一报文,提高了报文执行的效率。
在一种可能的实施方式中,所述多个报文包括N组保序关系,1≤N且N为整数,其中,所述N组保序关系中的每组保序关系均包括第一种报文和第二种报文,且所述第二种报文依赖于所述第一种报文进行保序;针对第i组保序关系,所述第i组保序关系中的第一种报文和第二种报文基于所述第i组保序关系的第一编码用于指示所述第一种报文和所述第二种报文所属的基于所述第i组保序关系的保序区间;针对第i组保序关系,所述第i组保序关系中的第二种报文基于所述第i组保序关系的第二编码用于指示所述第二种报文所属的基于第i组保序关系的保序区间内的第i组保序关系中的第一种报文的数量。
在一种可能的实施方式中,在所述N组保序关系中的每组保序关系均为直接保序关系的条件下,所述根据所述第一报文的编码确定是否执行所述第一报文包括:
若所述第一报文为第x组直接保序关系中的第一种报文,则执行所述第一报文;若所述第一报文为第x组直接保序关系中的第二种报文,则在根据所述第一报文基于第x组直接保序关系的第一编码和第二编码确定第一目标报文均已执行完成时,执行所述第一报文,其中,第一目标报文包括位于所述第一报文所属的保序区间内的第x组直接保序关系中的第一种报文和位于所述第一报文所属的保序区间之前的保序区间内的第x组直接保序关系中的第一种报文;其中,1≤x≤N,且x为整数。
在一种可能的实施方式中,在所述N组保序关系中的一部分保序关系为直接保序关系,另一部分保序关系为间接保序关系的条件下,所述根据所述第一报文的编码确定是否执行所述第一报文包括:
若所述第一报文仅为第x组直接保序关系中的第一种报文,或者若所述第一报文为第x组直接保序关系中的第一种报文且所述第一报文为第q组间接保序关系中的第一种报文,则执行所述第一报文;若所述第一报文仅为第x组直接保序关系中的第二种报文,或者若所述第一报文为第x组直接保序关系中的第二种报文且所述第一报文为第j组直接保序关系中的第一种报文,则在根据所述第一报文基于第x组直接保序关系的第一编码和第二编码确定第一目标报文均已执行完成时,执行所述第一报文;若所述第一报文为第x组直接保序关系中的第二种报文且所述第一报文为第j组直接保序关系中的第一种报文且所述第一报文为第q组间接保序关系中的第二种报文,或者若所述第一报文为第x组直接保序关系中的第二种报文且所述第一报文为第q组间接保序关系中的第二种报文,则在根据所述第一报文基于第x组直接保序关系的第一编码和第二编码确定第一目标报文均已执行完成,且根据所述第一报文基于第q组间接保序关系的第一编码和第二编码确定第二目标报文均已执行完成时,执行所述第一报文;其中,第一目标报文包括位于所述第一报文所属的基于第x组直接保序关系的保序区间内的第x组直接保序关系中的第一种报文和位于所述第一报文所属的基于第x组直接保序关系的保序区间之前的保序区间内的第x组直接保序关系中的第一种报文;第二目标报文包括位于所述第一报文所属的基于第q组间接保序关系的保序区间内的第q组间接保序关系中的第一种报文和位于所述第一报文所属的基于第q组间接保序关系的保序区间之前的保序区间内的第q组间接保序关系中的第一种报文。
在一种可能的实施方式中,所述多个报文包括M类报文,所述M类报文中的每类报文均包括一种报文,其中,第k+1类报文直接依赖于第k类报文进行保序,第k+1类报文间接依赖于第1类报文至第k-1类报文中的每类报文进行保序,1≤k≤M-1且k和M均为整数;针对所述M类报文中的每类报文,所述每类报文的第一编码均用于指示所述报文所属的保序区间;在k=1的条件下,第1类报文的第二编码用于指示所述第1类报文在其所属的保序区间内的报文中的排列序号;在2≤k≤M-1的条件下,每个第k类报文的第二编码均包括第一编号和第二编号,所述第一编号用于指示所述第k类报文所属的保序区间内在所述第k类报文之前的第1类报文至第k-1类报文的数量,所述第二编号用于指示所述第k类报文在其所属的保序区间内的报文中的排列序号;针对第M类报文,所述第M类报文的第二编码均包括第一编号和第二编号,所述第一编号用于指示所述第M类报文所属的保序区间内在所述第M类报文之前的第1类报文至第M-1类报文的数量,所述第二编号用于指示所述第M类报文在其所属的保序区间内的报文中的排列序号。
在一种可能的实施方式中,所述根据所述第一报文的编码确定是否执行所述第一报文包括:
若所述第一报文为所述第k类报文且k=1,则执行所述第一报文;若所述第一报文为所述第k类报文且2≤k≤M-1,且根据第一报文的第一编码、第一编号和第二编号确定第一目标报文已执行完成,则执行所述第一报文,其中,所述第一目标报文包括所述第一报文所属的保序区间内位于所述第一报文之前的第1类报文至第k-1类报文和位于所述第一报文所属的保序区间之前的保序区间内的第1类报文至第k-1类报文;若所述第一报文为第M类报文,且根据第一报文的第一编码、第一编号和第二编号确定第二目标报文已执行完成,则执行所述第一报文,其中,所述第二目标报文包括所述第一报文所属的保序区间内位于所述第一报文之前的第1类报文至第M-1类报文和位于所述第一报文所属的保序区间之前的保序区间内的第1类报文至第M-1类报文。
第三方面,提供了一种报文保序装置,包括:第一接收模块,用于接收第一报文,其中,所述第一报文为多个报文中的任意一个;编码模块,用于根据所述第一报文在所述多个报文中的发送顺序和所述第一报文与所述多个报文中的其他报文的保序关系对所述第一报文进行编码以得到所述第一报文的编码;发送模块,用于向第二模块发送所述第一报文及其编码;其中,所述第一报文的编码用于指示所述第一报文与所述多个报文中的其他报文的执行关系。
在一种可能的实施方式中,所述多个报文包括N组保序关系,1≤N且N为整数,其中,所述N组保序关系中的每组保序关系均包括第一种报文和第二种报文,且所述第二种报文依赖于所述第一种报文进行保序。
在一种可能的实施方式中,所述编码模块包括:第一编码单元,用于若所述第一报文为第i组保序关系中的第一种报文或第二种报文,则为所述第一报文设置基于所述第i组保序关系的第一编码,其中,所述第一编码用于指示所述第一报文所属的基于所述第i组保序关系的保序区间,所述保序区间由划分节点对所述多个报文划分得到,所述划分节点为所述第i组保序关系中的第二种报文切换为第一种报文的节点,所述多个报文按照所述多个报文中的每个报文的发送顺序排序;以及第二编码单元,用于若所述第一报文为第i组保序关系中的第二种报文,则为所述第一报文设置基于所述第i组保序关系的第二编码,其中,所述第二编码用于指示所述第一报文所属的基于第i组保序关系的保序区间内的第一种报文的数量;其中,1≤i≤N且i为整数。
在一种可能的实施方式中,所述N组保序关系中的每组保序关系均为直接保序关系;或者所述N组保序关系中的一部分保序关系为直接保序关系,另一部分保序关系为间接保序关系。
在一种可能的实施方式中,所述多个报文包括3种报文,分别为P报文、NP报文、CPL报文,所述多个报文包括2组保序关系,所述2组保序关系均为直接保序关系;其中,第一组直接保序关系中的第一种报文为P报文,第一组直接保序关系中的第二种报文为CPL报文;第二组直接保序关系中的第一种报文为P报文,第二组直接保序关系中的第二种报文为NP报文。
在一种可能的实施方式中,所述多个报文包括M类报文,所述M类报文中的每类报文均包括一种报文,其中,第k+1类报文直接依赖于第k类报文进行保序,第k+1类报文间接依赖于第1类报文至第k-1类报文中的每类报文进行保序,1≤k≤M-1且k和M均为整数;所述编码模块包括:第一编码单元,用于为所述第一报文设置第一编码,所述第一编码用于指示所述第一报文所属的保序区间,所述保序区间由划分节点对所述多个报文划分得到,所述划分节点为第M类报文切换为所述第1类报文至第M-1类报文中的任意一类报文的节点,所述多个报文按照所述多个报文中的每个报文的发送顺序排序;第二编码单元,用于若所述第一报文为所述第k类报文且k=1,则为所述第一报文设置第二编码,其中,所述第二编码用于指示所述第一报文在其所属的保序区间内的报文中的排列序号;第三编码单元,用于若所述第一报文为所述第k类报文且2≤k≤M-1,则为所述第一报文设置第二编码,所述第二编码包括第一编号和第二编号,所述第一编号用于指示所述第一报文所属的保序区间内在所述第一报文之前的第1类报文至第k-1类报文的数量,所述第二编号用于指示所述第一报文在其所属的保序区间内的报文中的排列序号;第四编码单元,用于若所述第一报文为所述第M类报文,则为所述第一报文设置第二编码,所述第二编码包括第一编号和第二编号,所述第一编号用于指示所述第一报文所属的保序区间内在所述第一报文之前的第1类报文至第M-1类报文的数量,所述第二编号用于指示所述第一报文在其所属的保序区间内的报文中的排列序号。
在一种可能的实施方式中,所述多个报文包括M类报文,所述M类报文中的至少一类报文包括多种报文,其中,第k+1类报文中的一种报文直接依赖于第k类报文中与其存在保序关系报文进行保序,第k+1类报文中的一种报文间接依赖于第1类报文至第k-1类报文中与其存在保序关系报文进行保序,1≤k≤M-1且k和M均为整数;
所述编码模块包括:第一编码单元,用于为所述第一报文设置第一编码,所述第一编码用于指示所述第一报文所属的保序区间,所述保序区间由划分节点对所述多个报文划分得到,所述划分节点为第M类报文中指定的一种报文或者任一种报文切换为第1类报文至第M-1类报文中指定的一种报文或者任一种报文的节点,所述多个报文按照所述多个报文中的每个报文的发送顺序排序;第二编码单元,用于若所述第一报文为所述第k类报文中的第s种报文且k=1,则为所述第一报文设置第二编码,其中,所述第二编码用于指示所述第一报文在其所属的保序区间内的报文中的排列序号;第三编码单元,用于若所述第一报文为所述第k类报文中的第t种报文且2≤k≤M-1,则为所述第一报文设置第二编码,所述第二编码包括第一编号和第二编号,其中,所述第一编号用于指示所述第一报文所属的保序区间内在所述第一报文之前的第1类报文至第k-1类报文中与其存在保序关系的报文数量;第二编号用于指示所述第一报文在其所属的保序区间内的报文中的排列序号;第四编码单元,用于若所述第一报文为所述第M类报文中的第q种报文,则为所述第一报文设置第二编码,所述第二编码包括第一编号和第二编号,其中,所述第一编号用于指示所述第一报文所属的保序区间内在所述第一报文之前的第1类报文至第M-1类报文中与其存在保序关系的报文数量,所述第二编号用于指示所述第一报文在其所属的保序区间内的报文中的排列序号。
在一种可能的实施方式中,所述多个报文包括2类报文,其中,第一类报文包括P报文,第二类报文包括NP报文和CPL报文,所述NP报文依赖于所述P报文进行保序,所述CPL报文依赖于所述P报文进行保序。
第四方面,提供一种报文保序装置,包括:第二接收模块,用于接收第一模块发送的第一报文及其编码,其中所述第一报文为多个报文中的任意一个报文;确定模块,用于根据所述第一报文的编码确定是否执行所述第一报文;其中,所述第一报文的编码用于指示所述第一报文与所述多个报文中的其他报文的执行关系。
在一种可能的实施方式中,所述多个报文包括N组保序关系,1≤N且N为整数,其中,所述N组保序关系中的每组保序关系均包括第一种报文和第二种报文,且所述第二种报文依赖于所述第一种报文进行保序;针对第i组保序关系,所述第i组保序关系中的第一种报文和第二种报文基于所述第i组保序关系的第一编码用于指示所述第一种报文和所述第二种报文所属的基于所述第i组保序关系的保序区间;针对第i组保序关系,所述第i组保序关系中的第二种报文基于所述第i组保序关系的第二编码用于指示所述第二种报文所属的基于第i组保序关系的保序区间内的第i组保序关系中的第一种报文的数量。
在一种可能的实施方式中,在所述N组保序关系中的每组保序关系均为直接保序关系的条件下,所述确定模块包括:第一执行单元,用于若所述第一报文为第x组直接保序关系中的第一种报文,则执行所述第一报文;第二执行单元,用于若所述第一报文为第x组直接保序关系中的第二种报文,则在根据所述第一报文基于第x组直接保序关系的第一编码和第二编码确定第一目标报文均已执行完成时,执行所述第一报文,其中,第一目标报文包括位于所述第一报文所属的保序区间内的第x组直接保序关系中的第一种报文和位于所述第一报文所属的保序区间之前的保序区间内的第x组直接保序关系中的第一种报文;其中,1≤x≤N,且x为整数。
在一种可能的实施方式中,在所述N组保序关系中的一部分保序关系为直接保序关系,另一部分保序关系为间接保序关系的条件下,所述确定模块包括:第一执行单元,用于若所述第一报文仅为第x组直接保序关系中的第一种报文,或者若所述第一报文为第x组直接保序关系中的第一种报文且所述第一报文为第q组间接保序关系中的第一种报文,则执行所述第一报文;第二执行单元,用于若所述第一报文仅为第x组直接保序关系中的第二种报文,或者若所述第一报文为第x组直接保序关系中的第二种报文且所述第一报文为第j组直接保序关系中的第一种报文,则在根据所述第一报文基于第x组直接保序关系的第一编码和第二编码确定第一目标报文均已执行完成时,执行所述第一报文;第三执行单元,用于若所述第一报文为第x组直接保序关系中的第二种报文且所述第一报文为第j组直接保序关系中的第一种报文且所述第一报文为第q组间接保序关系中的第二种报文,或者若所述第一报文为第x组直接保序关系中的第二种报文且所述第一报文为第q组间接保序关系中的第二种报文,则在根据所述第一报文基于第x组直接保序关系的第一编码和第二编码确定第一目标报文均已执行完成,且根据所述第一报文基于第q组间接保序关系的第一编码和第二编码确定第二目标报文均已执行完成时,执行所述第一报文;其中,第一目标报文包括位于所述第一报文所属的基于第x组直接保序关系的保序区间内的第x组直接保序关系中的第一种报文和位于所述第一报文所属的基于第x组直接保序关系的保序区间之前的保序区间内的第x组直接保序关系中的第一种报文;第二目标报文包括位于所述第一报文所属的基于第q组间接保序关系的保序区间内的第q组间接保序关系中的第一种报文和位于所述第一报文所属的基于第q组间接保序关系的保序区间之前的保序区间内的第q组间接保序关系中的第一种报文。
在一种可能的实施方式中,所述多个报文包括M类报文,所述M类报文中的每类报文均包括一种报文,其中,第k+1类报文直接依赖于第k类报文进行保序,第k+1类报文间接依赖于第1类报文至第k-1类报文中的每类报文进行保序,1≤k≤M-1且k和M均为整数;针对所述M类报文中的每类报文,所述每类报文的第一编码均用于指示所述报文所属的保序区间;在k=1的条件下,第1类报文的第二编码用于指示所述第1类报文在其所属的保序区间内的报文中的排列序号;在2≤k≤M-1的条件下,每个第k类报文的第二编码均包括第一编号和第二编号,所述第一编号用于指示所述第k类报文所属的保序区间内在所述第k类报文之前的第1类报文至第k-1类报文的数量,所述第二编号用于指示所述第k类报文在其所属的保序区间内的报文中的排列序号;针对第M类报文,所述第M类报文的第二编码均包括第一编号和第二编号,所述第一编号用于指示所述第M类报文所属的保序区间内在所述第M类报文之前的第1类报文至第M-1类报文的数量,所述第二编号用于指示所述第M类报文在其所属的保序区间内的报文中的排列序号。
在一种可能的实施方式中,所述确定模块包括:第一执行单元,用于若所述第一报文为所述第k类报文且k=1,则执行所述第一报文;第二执行单元,用于若所述第一报文为所述第k类报文且2≤k≤M-1,且根据第一报文的第一编码、第一编号和第二编号确定第一目标报文已执行完成,则执行所述第一报文,其中,所述第一目标报文包括所述第一报文所属的保序区间内位于所述第一报文之前的第1类报文至第k-1类报文和位于所述第一报文所属的保序区间之前的保序区间内的第1类报文至第k-1类报文;第三执行单元,用于若所述第一报文为第M类报文,且根据第一报文的第一编码、第一编号和第二编号确定第二目标报文已执行完成,则执行所述第一报文,其中,所述第二目标报文包括所述第一报文所属的保序区间内位于所述第一报文之前的第1类报文至第M-1类报文和位于所述第一报文所属的保序区间之前的保序区间内的第1类报文至第M-1类报文。
第五方面,提供了一种计算机可读存储介质,包括计算机程序,所述计算机程序在计算机上被执行时,使得所述计算机执行第一方面中任一项所述的方法或者第二方面中任一项所述方法。
第六方面,提供了一种计算机程序,当所述计算机程序被计算机执行时,用于执行第一方面中任一项所述的方法或者第二方面中任一项所述方法。
第七方面,提供了一种芯片,包括处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于调用并运行所述存储器中存储的计算机程序,以执行第一方面中任一项所述的方法或者第二方面中任一项所述方法。
附图说明
图1为本申请实施例提供的一种报文保序方法的流程示意图;
图2示出了对多个报文进行编码的示意图一;
图3示出了对多个报文进行编码的示意图二;
图4示出了对多个报文进行编码的示意图三;
图5示出了对多个报文进行编码的示意图四;
图6示出了对多个报文进行编码的示意图五;
图7示出了对多个报文进行编码的示意图六;
图8示出了对多个报文进行编码的示意图七;
图9示出了一种基于SOC芯片的数据传输系统的结构示意图;
图10示出了对多个报文进行编码的示意图八;
图11示出了对多个报文进行编码的示意图九;
图12为本申请实施例提供的一种报文保序装置的结构示意图一;
图13为本申请实施例提供的一种报文保序装置的结构示意图二。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书实施例和权利要求书及附图中的术语“第一”、“第二”等仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元。方法、系统、产品或设备不必限于清楚地列出的那哪些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
图1为本申请实施例提供的一种报文保序方法的流程示意图,如图1所示,报文保序方法可以包括以下步骤:
步骤101、第一模块接收第一报文,其中,第一报文为多个报文中的任意一个。
在本申请实施例中,若报文发送模块将多个报文发送至第一模块,则报文发送模块需按照多个报文中的每个报文的发送顺序对每个报文进行排序,以及按序将多个报文中的每个报文发送至第一模块。
具体的,报文发送模块发送多个报文中的每个报文的过程包括:报文发送模块按照多个报文的排列顺序,将排在第一位的报文确定为第一报文,并向第一模块发送第一报文(即排在第一位的报文),在报文发送模块发送完第一报文(即排在第一位的报文)后,将排在第二位的报文确定为第一报文,并向第一模块发送该第一报文(即排在第二位的报文),报文发送模块重复上述过程,将多个报文中的每个报文按照发送顺序发送至第一模块。第一模块按照报文发送模块的发送顺序依次接收第一报文。
多个报文中的报文(包括第一报文)的种类可以根据数据传输协议确定,以及不同种类的报文之间的保序关系也可根据数据传输协议确定。具体的,根据数据传输协议可以确定多种报文中具体包括几组保序关系,以及每组保序关系中的第一种报文和第二种报文具体是那种报文。
需要说明的是,每组保序关系均包括第一种报文和第二种报文,每组保序关系中的第二种报文依赖于对应保序关系中的第一种报文进行保序。第二种报文依赖于第一种报文进行保序可以理解为:第二种报文的执行依赖于第一种报文的执行,第一种报文的执行不依赖于第二种报文的执行,换言之,在排在第二种报文之前的第一种报文均执行完成后,方可执行第二种报文,而第一种报文的执行不受第二种报文的执行的限制。
保序关系可以包括直接保序关系和间接保序关系。具体的,直接保序关系和间接保序关系的理解如下:
若多种报文对应多组保序关系,则确定多种报文的优先级的过程包括:若一种报文在其所属的所有保序关系中均为第一种报文,则该种报文为优先级最高的报文,根据上述过程,在多种报文中筛选出优先级最高的报文,并将优先级最高的报文划分为第一类报文,然后,将仅依赖于第一类报文中的报文进行保序的报文确定为优先级仅低于第一类报文的报文,将优先级仅低于第一类报文的报文划分为第二类报文,第二类报文的优先级仅低于第一类报文;再然后,将仅依赖于第一类报文中的报文和第二类报文中的报文进行保序的报文确定为优先级仅低于第一类报文和第二类报文的报文,以及将优先级仅低于第一类报文和第二类报文的报文划分为第三类报文,依次类推,确定其他各种报文的优先级和所属的类。由上可知,根据多种报文的保序关系可将多种报文被划分为M类报文,其中,第一类报文至第M类报文的优先级依次降低,以及每类报文包括至少一种报文。
基于此,若保序关系中的两种报文的优先级相邻,则该保序关系为直接保序关系,若保序关系中的两种报文的优先级不相邻,则该保序关系为间接保序关系,即第k+1类报文中的报文与第k类报文中与其存在保序关系的报文组成的保序关系为直接保序关系,第k+1类报文中的报文与第1类报文至第k-1类报文中与其存在保序关系的报文组成的保序关系为间接保序关系,以及第k+1类报文中的一种报文直接依赖于第k类报文中与其存在保序关系的报文进行保序,第k+1类报文中的一种报文间接依赖于第1类报文至第k-1类报文中与其存在保序关系的报文进行保序,1≤k≤M-1。
例如,有六种报文,分别为报文A、报文F、报文B、报文C、报文D、报文E,其中,六种报文总共包括6组保序关系,分别为:报文A和报文B为一组保序关系,其中报文B依赖于报文A进行保序;报文F和报文C为一组保序关系,其中报文C依赖于报文F进行保序;报文B和报文D为一组保序关系,其中,报文D依赖于报文B进行保序;报文C和报文E为一组保序关系,其中,报文E依赖于报文C进行保序;报文A和报文D为一组保序关系,其中,报文D依赖于报文A进行保序;报文F和报文E为一组保序关系,其中,报文E依赖于报文F进行保序。基于此并结合上述原理,第一类报文包括报文A和报文F,第二类报文包括报文B和报文C,第三类报文包括报文D和报文E。其中,第一类报文的优先级最高,第二类报文的优先级次之,第三类报文的优先级最低,以及,报文A和报文B为一组直接保序关系,报文F和报文C为一组直接保序关系,报文B和报文D为一组直接保序关系,报文C和报文E为一组直接保序关系,报文A和报文D为一组间接保序关系,报文F和报文E为一组间接保序关系。
需要说明的是,报文B和报文F、报文A和报文C均为优先级相邻的报文,但是由于上述两种组合不存在保序关系,因此不能构成直接保序关系,报文A和报文E、报文F和报文D虽然均为优先级不相邻的报文,但是由于上述两种组合不存在保序关系,因此不能构成间接保序关系。
再例如,在基于PCIe的数据传输协议中,报文的种类包括P报文、CPL报文、NP报文;其中,P报文和CPL报文为一组保序关系,且CPL报文依赖于P报文进行保序,即P报文的执行不受CPL报文执行的限制,CPL报文的执行受P报文执行的限制,换言之,排在CPL报文之前的P报文均执行完成后,才可执行CPL报文,而P报文无条件执行;P报文和NP报文为一组保序关系,且NP报文依赖于P报文进行保序,即P报文的执行不受NP报文执行的限制,NP报文的执行受P报文执行的限制,换言之,排在NP报文之前的P报文均执行完成后,才可执行NP报文,而P报文无条件执行。基于此,在基于PCIe的数据传输协议中,可以得到两类报文,其中第一类报文包括P报文,第二类报文包括CPL报文和NP报文,第一类报文的优先级高于第二类报文的优先级,以及P报文和CPL报文为一组直接保序关系,P报文和NP报文为一组直接保序关系。
第一模块可以为数据传输系统中的模块,例如,在向数据传输系统输入报文的方向上,第一模块可以为数据传输系统中数据输入的起始模块;在数据传输系统输出报文的方向上,第一模块可以为数据传输系统中数据输出的起始模块,此处不作特殊限定。
步骤102、第一模块根据第一报文在多个报文中的发送顺序和第一报文与多个报文中的其他报文的保序关系对第一报文进行编码以得到第一报文的编码,其中,第一报文的编码用于指示第一报文与多个报文中的其他报文的执行关系。
在本申请实施例中,第一报文与多个报文中的其他报文的执行关系可以理解为在多个报文中排在第一报文之前且限制第一报文执行的报文的信息。
下面,将通过以下两种方式对第一报文的编码方式进行说明,其中:
方式一:在多个报文包括N组保序关系,1≤N且N为整数,该N组保序关系中的每组保序关系均包括第一种报文和第二种报文,且每组保序关系中的第二种报文依赖于对应的第一种报文进行保序的条件下,对第一报文进行编码的步骤包括:
若第一报文为第i组保序关系中的第一种报文或第二种报文,则为第一报文设置基于第i组保序关系的第一编码,其中,第一报文的第一编码用于指示第一报文所属的基于第i组保序关系的保序区间,该保序区间由划分节点对多个报文划分得到,该划分节点为第i组保序关系中的第二种报文切换为第一种报文的节点,上述多个报文按照多个报文中的每个报文的发送顺序排序;若第一报文为第i组保序关系中的第二种报文,则为第一报文设置基于第i组保序关系的第二编码,其中,第一报文的第二编码用于指示第一报文所属的基于第i组保序关系的保序区间内的第一种报文(即第i组保序关系中的第一种报文)的数量,其中,1≤i≤N且i为整数,i的取值的数量为至少一个。
基于上述步骤,对多个报文中的每个报文进行编码的整体思路可以理解为:首先,确定多个报文中总共包括几种报文、几组保序关系、每组保序关系中的第一种报文和第二种报文,其中,每组保序关系中的第二种报文依赖于对应保序关系中的第一种报文进行保序;然后,基于每组保序关系分别对多个报文中对应保序关系中的第一种报文和第二种报文进行编码,具体的,基于一组保序关系,对多个报文中的该组保序关系中的第一种报文和第二种报文进行编码的过程包括:以该组保序关系中的第二种报文切换为其中的第一种报文的节点为划分节点,对多个报文进行划分,以得到基于该组保序关系的至少一个保序区间,其中,多个报文按照多个报文中的每个报文的发送顺序排序;为多个报文中的每个第一种报文(该组保序关系中的第一种报文)和第二种报文(该组保序关系中的第二种报文)设置第一编码,其中,多个报文中的第一种报文和第二种报文的第一编码均用于指示该第一种报文和第二种报文所属的保序区间(即基于该组保序关系的保序区间),即多个报文中位于同一个保序区间内的每个第一种报文和每个第二种报文的第一编码均相同,以及为多个报文中的每个第二种报文(该组保序关系中的第二种报文)设置第二编码,多个报文中的第二种报文的第二编码用于指示第二种报文所属的保序区间(即基于该组保序关系的保序区间)内的第一种报文(该组保序关系中的第一种报文)的数量,换言之,多个报文中的第二种报文的第二编码用于指示第一编码与第二种报文的第一编码相同的第一种报文(即该组保序关系中的第一种报文)的数量。由上可知,基于该组保序关系中的第一种报文的编码仅包括第一编码,基于该组保序关系中的第二种报文的编码包括第一编码和第二编码。需要说明的是,基于该组保序关系为多个报文中的该组保序关系中的第一种报文和第二种报文设置的编码均与该组保序关系对应;对于其他各组保序关系中的第一种报文和第二种报文,重复上述过程,即可基于其他各组保序关系得到多个报文中对应保序关系中的第一种报文和第二种报文的编码。
需要说明的是,上述N组保序关系中的每组保序关系均为直接保序关系,或者上述N组保序关系中的一部分保序关系为直接保序关系,另一部分保序关系为间接保序关系。上述针对每组保序关系的编码过程均适用于直接保序关系和间接保序关系。
下面,将举例对上述过程进行说明。
例如,图2示出了对多个报文进行编码的示意图一,图3示出了对多个报文进行编码的示意图二,图4示出了对多个报文进行编码的示意图三。如图2至图4所示,多个报文中总共包括五种报文,分别为报文A、报文B、报文C、报文D以及报文E,多个报文中总共包括四组直接保序关系和两组间接保序关系,其中,第一组直接保序关系包括报文A和报文B,报文B直接依赖于报文A进行保序,即报文A为第一组直接保序关系中的第一种报文,报文B为第一组直接保序关系中的第二种报文;第二组直接保序关系包括报文A和报文C,其中,报文C直接依赖于报文A进行保序,即报文A为第二组直接保序关系中的第一种报文,报文C为第二组直接保序关系中的第二种报文;第三组直接保序关系包括报文B和报文D,其中,报文D直接依赖于报文B进行保序,即报文B为第三组直接保序关系中的第一种报文,报文D为第三组直接保序关系中的第二种报文;第四组直接保序关系包括报文C和报文E,其中,报文E直接依赖于报文C进行保序,即报文C为第四组直接保序关系中的第一种报文,报文E为第四组直接保序关系中的第二种报文;第一组间接保序关系包括报文A和报文D,其中,报文D间接依赖于报文A进行保序,即报文D为第一组间接保序关系中的第二种报文,报文A为第一组间接保序关系中的第一种报文;第二组间接保序关系包括报文A和报文E,其中,报文E间接依赖于报文A进行保序,即报文E为第二组间接保序关系中的第二种报文,报文A为第二组间接保序关系中的第一种报文。
需要说明的是,多个报文所包括的报文的种类和保序关系的组数以及每组保序关系中的第一种报文和第二种报文可以由报文发送模块确定并发送至第一模块,还可以由第一模块根据数据传输协议确定,此处不作特殊限定。
在此基础上,基于第一组直接保序关系对多个报文中的每个报文A和每个报文B进行编码,具体的,在多个报文中以报文B切换为报文A的节点作为划分节点对多个报文进行划分,即在多个报文的排列顺序上,只要报文B后面出现报文A,就划分保序区间。如图2所示,基于第一组直接保序关系对多个报文划分后,得到三个保序区间,分别为基于第一组直接保序关系的第一保序区间至第三保序区间;基于第一组直接保序关系的三个保序区间为多个报文中的报文A和报文B设置第一编码,由于第一编码用于指示报文A和报文B所属的保序区间,因此,可以为基于第一组直接保序关系的每个保序区间设置对应的编码,其中,第一保序区间的编码为0,第二保序区间的编码为1,第三保序区间的编码为2,将每个保序区间的编码设置为对应保序区间内的报文A和报文B的第一编码,即在同一个保序区间内的报文A和报文B的第一编码相同。基于第一组直接保序关系的三个保序区间为多个报文中的报文B设置第二编码,由于报文B的第二编码用于指示报文B所属的保序区间内的报文A的数量,因此,可以根据报文B所属的保序区间内的报文A的数量设置每个报文B的第二编码。由于报文A为第一组直接保序关系中的第一种报文,因此,报文A基于第一组直接保序关系的编码仅包括第一编码。由于报文B为第一组直接保序关系中的第二种报文,因此,报文B基于第一组直接保序关系的编码包括第一编码和第二编码。最终,基于第一组直接保序关系为多个报文中的每个报文A和报文B设置的编码如图2中的位于报文A和报文B之上的编码所示,其中,报文A和报文B的编码均表示在括号中,由于基于第一组直接保序关系,报文A仅包括第一编码,因此,报文A之上的括号内的数字为报文A的第一编码,由于基于第一组直接保序关系,报文B包括第一编码和第二编码,因此报文B的第一编码和第二编码用逗号隔开,位于逗号前面的为报文B的第一编码,位于逗号后面的为报文B的第二编码。
同理,基于第二组直接保序关系为多个报文中的每个报文A和报文C设置的编码如图2中位于报文A和报文C之下的编码所示。
基于第三组直接保序关系为多个报文中的每个报文B和报文D设置的编码如图3中位于报文B和报文D之上的编码所示。
基于第四组直接保序关系为多个报文中的每个报文C和报文E设置的编码如图3中位于报文C和报文E之下的编码所示。
基于第一组间接保序关系为多个报文中的每个报文A和报文D设置的编码如图4中位于报文A和报文D之上的编码所示。
基于第二组间接保序关系为多个报文中的每个报文A和报文E设置的编码如图4中位于报文A和报文E之下的编码所示。
由上可知,针对图2、图3和图4中所示的多个报文,需基于每组保序关系分别为对应保序关系中的第一种报文和第二种报文设置编码。若一个报文属于多组保序关系,则该报文的编码的数量与其所属的保序关系的数量相等,其中,可以通过每组保序关系的标识信息对该报文对应的编码进行标记,以根据编码的标记确定该报文的哪个编码对应哪组保序关系。
需要说明的是,在图2~图4中,多个报文中的每个报文后面的数字表示对应报文在多个报文中的发送顺序(即排列顺序)。
再例如,图5示出了对多个报文进行编码的示意图四,图6示出了对多个报文进行编码的示意图五,如图5和图6中所示,多个报文包括五种报文,该五种报文分别为报文A、报文B、报文C、报文D、报文E,且该五种报文包括三组直接保序关系,该三组直接保序关系分别为:报文A和报文B组成第一组直接保序关系,其中,报文B直接依赖于报文A进行保序,报文A和报文C组成第二组直接保序关系,其中,报文C直接依赖于报文A进行保序,报文D和报文E组成第三组直接保序关系,其中,报文E直接依赖于报文D进行保序。
基于此并结合上述原理,基于第一组直接保序关系为多个报文中的每个报文A和报文B设置的编码如图5中位于报文A和报文B之上的编码所示。
基于第二组直接保序关系为多个报文中的每个报文A和报文C设置的编码如图5中位于报文A和报文C之下的编码所示。
基于第三组直接保序关系为多个报文中的每个报文D和报文E设置的编码如图6中位于报文D和报文E之上的编码所示。
基于上述描述,第一模块对第一报文进行编码的过程可以包括以下两种,其中:
第一种,第一模块可以在接收完每个第一报文(即多个报文中的每个报文)后,按照每个第一报文的接收顺序对第一报文进行排序(即对多个报文进行排序);结合上述方式基于每组保序关系对排序后的每个第一报文进行编码。需要说明的是,由于第一报文是按照第一报文的发送顺序接收的,因此,按照第一报文的接收顺序对第一报文进行排序仍然保持了第一报文原有的顺序。
第二种,第一模块可以在每接收到一个第一报文时,对接收到的第一报文进行编码。具体的,第一模块接收到第一报文后,首先确定第一报文属于哪几组保序关系,并确定第一报文为其所属的每组保序关系中的哪种报文(即第一种报文还是第二种报文),然后,基于第一报文所属的每组保序关系,以及第一报文为其所属的每组保序关系中第一种报文或第二种报文,分别为该第一报文设置基于其所属的每组保序关系的编码。
具体的,下面将以第一报文为第一组保序关系中的第一种报文为例对第一报文的编码过程进行说明,其中,第一组保序关系为第一报文所属的至少一组保序关系中的任一组保序关系。
若第一模块在第一报文之前未接收到第一组保序关系中的第一种报文和第二种报文,则将第一报文所属的保序区间确定为第一保序区间,并将第一报文的第一编码设置为0。
若第一模块在第一报文之前接收到第一组保序关系中的第一种报文和/或第二种报文,则若在第一报文之前最近一次接收到的第一组保序关系中的报文为第一组保序关系中的第一种报文,则将最近一次接收到的第一组保序关系中的第一种报文的第一编码确定为第一报文的第一编码,即最近一次接收到的第一组保序关系中的第一种报文与第一报文属于同一个保序区间;若在第一报文之前最近一次接收到的第一组保序关系中的报文为第一组保序关系中的第二种报文,则在最近一次接收到的第一组保序关系中的第二种报文的第一编码的基础上增加一(即在第一组保序关系中的第二种报文切换为第一种报文时进行保序区间的翻转,并在保序区间翻转时,对第一编码增加一,以作为下一个保序区间中的报文的第一编码),并将得到的增加一之后的第一编码确定为第一报文的第一编码,即最近一次接收到的第一组保序关系中的第二种报文与第一报文属于不同的保序区间。需要说明的是,上述过程中的第一编码和保序区间均与第一组保序关系对应。
下面将以第一报文为第一组保序关系中的第二种报文为例对第一报文的编码过程进行说明,其中,第一组保序关系为第一报文所属的至少一组保序关系中的任一组保序关系。
若第一模块在第一报文之前未接收到第一组保序关系中的第一种报文和第二种报文,则将第一报文所属的保序区间确定为第一保序区间,并将第一报文的第一编码设置为0,以及将第一报文的第二编码设置为0。
若第一模块在第一报文之前接收到第一组保序关系中的第一种报文和/或第二种报文,则若在第一报文之前最近一次接收到的第一组保序关系中的报文为第一组保序关系中的第二种报文,则将最近一次接收到的第一组保序关系中的第二种报文的第一编码确定为第一报文的第一编码,将最近一次接收到的第一组保序关系中的第二种报文的第二编码确定为第一报文的第二编码,即最近一次接收到的第一组保序关系中的第二种报文与第一报文属于同一个保序区间;若在第一报文之前最近一次接收到的第一组保序关系中的报文为第一组保序关系中的第一种报文,则将最近一次接收到的第一组保序关系中的第一种报文的第一编码确定为第一报文的第一编码,将与基于第一组保序关系的第一编码与第一报文的第一编码相等的第一组保序关系中的第一种报文的数量设置为第一报文的第二编码。需要说明的是,上述过程中的第一编码、第二编码和保序区间均与第一组保序关系对应。
需要说明的是,基于第一报文所属的其他每组保序关系,分别为第一报文设置基于其他每组保序关系的编码的原理与上述基于第一组保序关系对第一报文设置编码的原理相同,因此此处不再进行赘述。
方式二:在多个报文包括M类报文,M类报文中的每类报文均包括一种报文,其中,第k+1类报文直接依赖于第k类报文进行保序,第k+1类报文间接依赖于第1类报文至第k-1类报文中的每类报文进行保序,1≤k≤M-1且k和M均为整数的条件下,对第一报文进行编码的步骤包括:
为第一报文设置第一编码,第一报文的第一编码用于指示第一报文所属的保序区间,保序区间由划分节点对多个报文划分得到,划分节点为第M类报文切换为第1类报文至第M-1类报文中的任意一类报文的节点,多个报文按照多个报文中的每个报文的发送顺序排序;若第一报文为第k类报文且k=1,则为第一报文设置第二编码,其中,第一报文的第二编码用于指示第一报文在其所属的保序区间内的报文中的排列序号;若第一报文为第k类报文且2≤k≤M-1,则为第一报文设置第二编码,第一报文的第二编码包括第一编号和第二编号,第一编号用于指示第一报文所属的保序区间内在第一报文之前的第1类报文至第k-1类报文的数量,第二编号用于指示第一报文在其所属的保序区间内的报文中的排列序号;若第一报文为第M类报文,则为第一报文设置第二编码,第一报文的第二编码包括第一编号和第二编号,第一编号用于指示第一报文所属的保序区间内在第一报文之前的第1类报文至第M-1类报文的数量,第二编号用于指示第一报文在其所属的保序区间内的报文中的排列序号。
需要说明的是,由于第k+1类报文直接依赖于第k类报文进行保序,第k+1类报文间接依赖于第1类报文至第k-1类报文中的每类报文进行保序,因此,k的取值越小,第k类报文的优先级越高,k的取值越大,第k类报文的优先级越低。基于此,可得第1类报文的优先级最高,第M类报文的优先级最低,以及第k+1类报文与第1类报文至第k类报文中的每类报文均存在保序关系,其中,第k+1类报文与第k类报文的保序关系为直接保序关系,第k+1类报文与第1类报文至第k-1类报文中的任意一类报文的保序关系为间接保序关系。由于将多个报文划分为M类报文、每类报文的优先级以及每类报文之间的保序关系已经在上文中进行了说明,因此此处不再进行赘述。
基于上述步骤,对多个报文中的每个报文进行编码的整体思路可以理解为:首先确定多个报文中总共包括几种报文、每种报文之间的保序关系,根据每种报文之间的保序关系确定每种报文的优先级,然后,根据每种报文的优先级确定每种报文的类;再然后,以优先级最低的报文切换为优先级高于最低优先级的报文的节点作为划分节点(即以第M类报文切换为第1类报文至第M-1类报文中的任意一类报文的节点作为划分节点)对多个报文进行划分,以得到至少一个保序区间,其中多个报文按照多个报文中的每个报文的发送顺序排序;最后,基于每个保序区间和每种报文所属的类(即每种报文的优先级),对每个保序区间内的每个报文进行编码。具体的,对每个保序区间内的每个报文进行编码的过程如下:
为每个保序区间内的每个报文设置第一编码。每个报文的第一编码均用于指示每个报文所属的保序区间,即多个报文中位于同一保序区间内的每个报文的第一编码相同。根据每个报文的优先级以及每个报文所属的保序区间为每个报文设置第二编码。具体的,若报文为优先级最高的报文,即报文为第1类报文,则根据报文在其所属的保序区间内的报文中的排列序号设置该报文的第二编码,即报文的第二编码用于指示报文在其所属的保序区间内的报文中的排列序号;若报文为优先级最低的报文,即报文为第M类报文,则报文的第二编码包括第一编号和第二编号,其中,根据报文所属的保序区间内在该报文之前且优先级比该报文的优先级高的报文的数量(即根据报文所属的保序区间内在该报文之前的第1类报文至第M-1类报文的数量)设置该报文的第一编号,根据该报文在其所属的保序区间内的报文中的排列序号设置第二编号;若报文为最高优先级和最低优先级之间的任何一个优先级的报文,即报文为第k类报文且2≤k≤M-1,则报文的第二编码包括第一编号和第二编号,其中,根据报文所属的保序区间内在该报文之前且优先级比该报文的优先级高的报文的数量(即第1类报文至第k-1类报文的数量)设置该报文的第一编号,根据报文在其所属的保序区间内的报文中的排列序号设置该报文的第二编号。
下面,举例对上述过程进行说明,图7示出了对多个报文进行编码的示意图六。如图7所示,多个报文中总共包括5种报文,分别为:报文a、报文b、报文c、报文d、报文e,其中,每种报文之间的保序关系如下:报文b直接依赖于报文a进行保序,报文c直接依赖于报文b进行保序,报文d直接依赖于报文c进行保序,报文e直接依赖于报文d进行保序,报文c间接依赖于报文a进行保序,报文d间接依赖于报文a进行保序,报文d间接依赖于报文b进行保序,报文e间接依赖于报文a进行保序,报文e间接依赖于报文b进行保序,报文e间接依赖于报文c进行保序。基于此,5种报文的优先级从高到低的顺序为:报文a>报文b>报文c>报文d>报文e,即第一类报文包括报文a,第二类报文包括报文b,第三类报文包括报文c,第四类报文包括报文d,第五类报文包括报文e。需要说明的是,多个报文所包括的报文的种类以及不同种类的报文之间的保序关系可以由报文发送模块确定并发送至第一模块,还可以由第一模块根据数据传输协议确定,此处不作特殊限定。
对多个报文中的每个报文进行编码的过程包括:首先根据划分节点对多个报文进行划分以得到至少一个保序区间,划分节点为报文e切换为报文a、报文b、报文c、报文d中的任意一个的节点,即在多个报文的排列顺序上,在报文e后面的报文为报文a、报文b、报文c、报文d中的任意一个时,进行一次保序区间的划分。如图7所示,多个报文被划分为五个保序区间,分别为第一保序区间至第五保序区间。基于该五个保序区间,为多个报文中的每个报文设置第一编码,由于报文的第一编码用于指示报文所属的保序区间,因此可以为五个保序区间中的每个保序区间设置编码,其中第一保序区间的编码为0、第二保序区间的编码为1、第三保序区间的编码为2、第四保序区间的编码为3、第五保序区间的编码为4,将每个保序区间的编码设置为对应保序区间内的每个报文的第一编码。基于上述五个保序区间以及每个报文的优先级设置多个报文中的每个报文的第二编码。具体的,若报文为报文a,即报文为优先级最高的报文,则根据报文在其所属的保序区间内的报文中的排列序号设置第二编码。若报文为报文b或报文c或报文d,则报文的第二编码包括第一编号和第二编号,其中,根据报文所属的保序区间内在该报文之前且比该报文的优先级高的报文的数量设置该报文的第一编号,以及根据报文在其所属的保序区间内的报文中的排列序号设置第二编号。若报文为报文e,即报文为优先级最低的报文,则报文的第二编码包括第一编号和第二编号,其中根据报文所属的保序区间内在该报文之前的报文a、报文b、报文c、报文d的数量总和设置该报文的第一编号,以及根据报文在其所属的保序区间内的报文中的排列序号设置该报文的第二编号。最终,对多个报文中的每个报文进行编码后得到的每个报文的编码如图7中每个报文上方的编码所示,其中,每个报文的编码均表示在括号中,对于报文a,用逗号隔开报文a的第一编码和第二编码,且第一编码位于第二编码之前;对于报文b、报文c、报文d、报文e,用逗号隔开第一编码和第二编码中的第一编号和第二编号,其中第一编码位于最前面,第一编号位于中间,第二编号位于最后。
基于上述描述,第一模块对第一报文进行编码的过程可以包括以下两种,其中:
第一种,第一模块可以在接收完每个第一报文(即多个报文中的每个报文)后,按照每个第一报文的接收顺序对第一报文进行排序(即对多个报文进行排序);结合上述方式对每个第一报文进行编码。需要说明的是,由于第一报文是按照第一报文的发送顺序接收的,因此,按照第一报文的接收顺序对第一报文进行排序仍然保持了第一报文原有的顺序。
第二种,第一模块可以在每接收到一个第一报文时,对接收到的第一报文进行编码。具体的,第一模块接收到第一报文后,首先确定第一报文的种类,以及根据第一报文的种类和第一报文与其他各类报文的保序关系确定第一报文的优先级(即第一报文所属的类),然后根据第一报文的优先级对第一报文进行编码。下面,将对报文进行编码的具体过程进行说明。
在第一报文之前未接收到多个报文中的任何一个报文的情况下,即在第一报文为多个报文中的第一个报文的情况下:
将第一报文所属的保序区间确定为第一保序区间,并将第一报文的第一编码设置为0,以及为第一报文设置第二编码。具体的,若第一报文为第1类报文(即优先级最高的报文),则根据第一报文在其所属的保序区间内的报文中的排列序号设置第二编码,由于此处的第一报文为多个报文中的第一个报文,因此第一报文为在其所属的保序区间内的报文中位于第一位的报文,因为将第一报文的第二编码设置为1;若第一报文为除第1类报文之外的其他类报文(即优先级低于最高优先级的其他报文),则第一报文的第二编码包括第一编号和第二编号,其中根据第一报文所属的保序区间内在第一报文之前且比其优先级高的报文的数量设置第一编号,根据第一报文在其所属的保序区间内的报文中的排列序号设置第一报文的第二编号,由于此处的第一报文为多个报文中的第一个报文,因此第一编号为0,第二编号为1。
在第一报文之前接收到多个报文中至少一个报文的情况下:
若第一报文为优先级最低的报文(即第M类报文),则将第一报文之前最近一次接收到的报文的第一编码设置为第一报文的第一编码,即第一报文与第一报文之前最近一次接收到的报文在同一个保序区间,以及根据第一报文所属的保序区间内在第一报文之前且优先级比第一报文的优先级高的报文的数量设置第一报文的第一编号(由于属于一个保序区间内的报文的第一编码相同,因此可以根据第一编码与第一报文的第一编码相同且位于第一报文之前且优先级高于第一报文的优先级的报文数量设置第一编号),根据第一报文在其所属的保序区间内的报文中的排列序号设置第一报文的第二编号。
若第一报文为优先级高于最低优先级且低于最高优先级的任何一个优先级的报文(即第2类至第M-1类报文中的任何一类报文),则在第一报文之前最近一次接收到的报文为优先级最低的报文时,在最近一次接收到的报文的第一编码的基础上增加一(即在优先级最低的报文切换为优先级高于最低优先级的任何一个报文时进行保序区间的翻转,并在保序区间翻转时,对第一编码增加一,以作为下一个保序区间中的报文的第一编码),并将得到的增加一之后的第一编码确定为第一报文的第一编码,即最近接收到的报文与第一报文属于不同的保序区间,以及根据第一报文所属的保序区间内在第一报文之前且优先级比第一报文的优先级高的报文的数量设置第一报文的第一编号,由于在第一报文处进行了保序区间的划分,因此该第一报文为该保序区间内的第一个报文,则,第一报文的第一编号为0,根据第一报文在其所属的保序区间内的排列序号设置第一报文的第二编号,由于第一报文为该保序区间的第一个报文,因此该第一报文的第二编号为1;在第一报文之前最近一次接收到的报文为优先级高于最低优先级的报文时,则将第一报文之前最近一次接收到的报文的第一编码设置为第一报文的第一编码,即第一报文与第一报文之前最近一次接收到的报文属于同一个保序区间,以及根据第一报文所属的保序区间内在第一报文之前且优先级比第一报文的优先级高的报文的数量设置第一报文的第一编号(由于属于一个保序区间内的报文的第一编码相同,因此可以根据第一编码与第一报文的第一编码相同且位于第一报文之前且优先级高于第一报文的优先级的报文数量设置第一编号),根据第一报文在其所属的保序区间内的报文中的排列序号设置第一报文的第二编号。
若第一报文为优先级最高的报文(即第1类报文),则在第一报文之前最近一次接收到的报文为优先级最低的报文(即第M类报文)时,在最近一次接收到的报文的第一编码的基础上增加一(即在优先级最低的报文切换为优先级高于最低优先级的任何一个报文时进行保序区间的翻转,并在保序区间翻转时,对第一编码增加一,以作为下一个保序区间中的报文的第一编码),并将增加一之后的第一编码确定为第一报文的第一编码,即最近接收到的报文与第一报文属于不同的保序区间,根据第一报文在其所属的保序区间内的排列序号设置第一报文的第二编码,由于第一报文为该保序区间的第一个报文,因此该第一报文的第二编码为1;在第一报文之前最近一次接收到的报文为优先级高于最低优先级的报文时,则将第一报文之前最近一次接收到的报文的第一编码设置为第一报文的第一编码,即第一报文与第一报文之前最近一次接收到的报文属于同一个保序区间,以及根据第一报文在其所属的保序区间内的报文中的排列序号设置第一报文的第二编码。
在上述方式二的基础上,若M类报文中的至少一类报文包括多种报文,其中,第k+1类报文中的一种报文直接依赖于第k类报文中与其存在保序关系的报文进行保序,第k+1类报文中的一种报文间接依赖于第1类报文至第k-1类报文中与其存在保序关系的报文进行保序,则对第一报文进行编码的步骤包括:
为第一报文设置第一编码,第一报文的第一编码用于指示第一报文所属的保序区间,保序区间由划分节点对多个报文进行划分得到,划分节点为第M类报文中指定的一种报文或者任一种报文切换为第1类报文至第M-1类报文中指定的一种报文或者任一种报文的节点。
对第一报文设置第二编码,具体过程如下:
若第一报文为第k类报文中的第s种报文且k=1,则根据第一报文在其所属的保序区间内的报文中的排列序号设置第一报文的第二编码,其中,第一报文的第二编码用于指示第一报文在其所属的保序区间内的报文中的排列序号。
若第一报文为第k类报文中的第t种报文且2≤k≤M-1,则根据第一报文所属的保序区间内在第一报文之前的第1类报文至第k-1类报文中与其存在保序关系(直接保序关系和间接保序关系)的报文数量设置第一报文的第一编号,即根据第一报文所属的保序区间内在第一报文之前且优先级高于第一报文的优先级且与第一报文存在保序关系(直接保序关系和间接保序关系)的报文的数量设置第一报文的第一编号,即第一报文的第一编号用于指示第一报文所属的保序区间内在第一报文之前的第1类报文至第k-1类报文中与其存在保序关系(直接保序关系和间接保序关系)的报文数量,以及根据第一报文在其所属的保序区间内的报文中的排列序号设置第一报文的第二编号,即第一报文的第二编号用于指示第一报文在其所属的保序区间内的报文中的排列序号。
若第一报文为第M类报文中的第q种报文,则根据第一报文所属的保序区间内在第一报文之前的第1类报文至第M-1类报文中与其存在保序关系(直接保序关系和间接保序关系)的报文数量设置第一报文的第一编号,即根据第一报文所属的保序区间内在第一报文之前且优先级高于第一报文的优先级且与第一报文存在保序关系(直接保序关系和间接保序关系)的报文的数量设置第一报文的第一编号,第一报文的第一编号用于指示第一报文所属的保序区间内在第一报文之前的第1类报文至第M-1类报文中与其存在保序关系的报文数量,以及根据第一报文在其所属的保序区间内的报文中的排列序号设置第一报文的第二编号,即第一报文的第二编号用于指示第一报文在其所属的保序区间内的报文中的排列序号。
由于上述对多个报文中的每个报文进行编码的原理与方式二中对每个报文进行编码的原理相同,因此此处不再进行赘述。
由于在多个报文中确定M类报文、每类报文的优先级以及每类报文之间的保序关系已经在上文中进行了说明,因此此处不再进行赘述。
下面,将举例对在每类报文包括多种报文的情况下对多个报文中的每个报文进行编码的过程进行说明。图8示出了对多个报文进行编码的示意图七,多个报文包括六种报文,分别为:报文A、报文B、报文C、报文D、报文E、报文F,其中,报文C直接依赖于报文A进行保序,报文D直接依赖于报文B进行保序,报文E直接依赖于报文C进行保序,报文F直接依赖于报文C进行保序,报文E间接依赖于报文A进行保序,报文F间接依赖于报文A进行保序。基于此,上述六种报文可以划分为三类报文,三类报文按照优先级由高到低的顺序依次为:第一类报文、第二类报文、第三类报文。其中,第一类报文包括报文A和报文B,第二类报文包括报文C和报文D,第三类报文包括报文E和报文F。
在图8中,以报文E或者F切换为报文A、报文B、报文C和报文D中的任何一种报文的节点作为划分节点对多个报文进行划分,以得到六个保序区间,根据六个保序区间以及上述原理对多个报文中的每个报文进行编码,得到的每个报文的编码位于图8中每个报文之上,其中,每个报文的编码均位于括号中,对于报文A和报文B,用逗号隔开报文A和报文B的第一编码和第二编码,且第一编码位于第二编码之前,对于报文C、报文D、报文E和报文F,用逗号隔开第一编码和第二编码中的第一编号和第二编号,其中,第一编码位于最前面,第一编号位于中间,第二编号位于最后。
需要说明的是,在图8中每个报文后面的数字用于标识对应报文在多个报文中的排列序号。
步骤103、第一模块向第二模块发送第一报文及其编码。
在本申请实施例中,第一模块对第一报文编码之后,将第一报文及其编码发送至第二模块。具体的,第一报文的编码可以携带在第一报文中一并进行发送,还可以将第一报文和第一报文的编码分别进行发送,本申请对此不作特殊限定。第一模块可以采用乱序的总线传输方式或者多通道的传输方式向第二模块发送第一报文及其编码,以提高传输效率。具体的,在多通道的传输方式中,还可以设置每种报文的传输通道,以通过每种报文的传输通道传输对应种类的报文。
由上可知,根据第一报文在多个报文中的发送顺序和第一报文与多个报文中的其他报文的保序关系为第一报文设置编码,使得第一报文的编码指示第一报文与多个报文中的其他报文的执行关系(即排在第一报文之前且限制第一报文执行的报文),因此,在第一模块和第二模块之间传输第一报文时,通过传输第一报文的编码,使得第二模块根据第一报文的编码确定排在第一报文之前且限制第一报文执行的报文,实现了第一报文的保序传输;另外,由于第一报文的编码指示第一报文与多个报文中的其他报文的执行关系(即排在第一报文之前且限制第一报文执行的报文),因此相比于现有技术,在第一模块和第二模块之间传输第一报文时,无需第二模块向第一模块发送确认消息,也无需第一模块确认是否接收到确认消息,无需链路、无需流控,仅通过发送第一报文及其编码,即可实现第一报文的保序传输,极大的缩短了报文的传输延时,从而避免出现报文保序传输延时被无形拉长的现象,极大的提高了带宽的利用率;此外,由于缩短了报文的传输延时,因此避免出现由于时间的推移而产生积累效应的问题,极大的减轻了对更上游模块的报文的传输影响;另外,通过为第一报文设置编码的方式,实现报文的保序传输,方式简单且易于执行。
步骤104、第二模块接收第一模块发送的第一报文及其编码,其中第一报文为多个报文中的任意一个报文,其中,第一报文的编码用于指示第一报文与多个报文中的其他报文的执行关系。需要说明的是,执行关系已经在上文中进行了说明,因此此处不再进行赘述。
步骤105、第二模块根据第一报文的编码确定是否执行第一报文。
在本申请实施例中,对第一报文的编码进行解析以确定第一报文与多个报文中的其他报文的执行关系,以及根据第一报文与多个报文中的其他报文的执行关系确定是否执行第一报文。
由于上文中描述了第一报文的多种编码方式,因此,下面将分别基于不同的编码方式对是否执行第一报文的过程进行说明。具体的,通过以下三种方式进行说明。
方式一、在多个报文包括N组保序关系,1≤N且N为整数,其中,N组保序关系中的每组保序关系均包括第一种报文和第二种报文,且第二种报文依赖于第一种报文进行保序,以及针对第i组保序关系,第i组保序关系中的第一种报文和第二种报文基于第i组保序关系的第一编码用于指示第一种报文和第二种报文所属的的保序区间;针对第i组保序关系,第i组保序关系中的第二种报文基于第i组保序关系的第二编码用于指示第二种报文所属的基于第i组保序关系的保序区间内的第i组保序关系中的第一种报文的数量,以及N组保序关系中的每组保序关系均为直接保序关系的条件下,根据第一报文的编码确定是否执行第一报文的过程如下:
将第一报文的种类与每组直接保序关系中的第一种报文的种类和第二种报文的种类进行比对,以确定第一报文所属的直接保序关系,以及第一报文为其所属的直接保序关系中的哪种报文。需要说明的是,若第一报文为其所属的直接保序关系中的第一种报文,则第一报文所属的直接保序关系的组数为至少一组,若第一报文为其所属的直接保序关系中的第二种报文,则第一报文所属的直接保序关系的组数为一组。
若第一报文为第x组直接保序关系中的第一种报文,则执行第一报文。由于第一报文为第x组直接保序关系中的第一种报文,且由于N组保序关系中的每组保序关系均为直接保序关系,因此每组直接保序关系中的第一种报文的执行不受其他报文的执行的限制,因此,在第一报文为第x组直接保序关系中的第一种报文时,可直接执行第一报文。无需等待其他报文的执行。需要说明的是,x的取值范围为:1≤x≤N,且x为整数,x的取值的数量为至少一个。例如,若x的取值的数量为1个,且x的取值为2,则第一报文属于一组直接保序关系中的第一种报文,且第一报文所属的直接保序关系为第2组直接保序关系。若x的取值的数量为3个,且x的取值为1、3、4,则第一报文属于三组直接保序关系中的第一种报文,且第一报文所属的直接保序关系为第1组直接保序关系、第3组直接保序关系、第4组直接保序关系。
若第一报文为第x组直接保序关系中的第二种报文,则根据第一报文基于第x组直接保序关系的第一编码和第二编码确定第一目标报文是否执行完成,若是,则执行第一报文,若否,则等待,直至符合上述条件后再执行第一报文。其中,第一目标报文包括位于第一报文所属的保序区间内的第x组直接保序关系中的第一种报文和位于第一报文所属的保序区间之前的保序区间内的第x组直接保序关系中的第一种报文。由于第一报文为第x组直接保序关系中的第二种报文,且由于N组保序关系中的每组保序关系均为直接保序关系,因此,x的取值的数量为1,以及此处的保序区间均为基第x组的保序区间。举例对该过程进行说明,若基于第x组直接保序关系的保序区间的编号按照由小到大的顺序进行编号,即排在前面的保序区间的编码小于排在后面的保序区间的编码,则判断基于第x组直接保序关系的第一编码小于第一报文的第一编码的第x组直接保序关系中的第一种报文是否均已执行完成,若是,则判断基于第x组直接保序关系的第一编码等于第一报文的第一编码的第x组直接保序关系中的第一种报文的执行数量是否等于第一报文的第二编码,若是,则执行第一报文。
下面,以图5和图6为例为上述过程进行说明。若第一报文为图5和图6中的报文A8,由图5和图6可知,第一报文属于第一组直接保序关系和第二组直接保序关系,且第一报文均为第一组直接保序关系和第二组直接保序关系中的第一种报文,因此,在接收到第一报文之后,直接执行第一报文。若第一报文为图5和图6中的报文E11,以及第一报文基于第三组直接保序关系的编码为(1,1),则判断基于第三组直接保序关系的第一编码小于1的第三组保序关系中的第一种报文是否执行完成,即判断基于第三组直接保序关系的第一编码为0的报文D是否均已执行完成,若是,则判断基于第三组直接保序关系的第一编码为1的报文D的执行数量是否等于1,若是,则执行第一报文。
需要说明的是,在基于每组直接保序关系的保序区间的编号按照由小到大的顺序进行编号,即报文基于对应的直接保序关系的第一编码均按照由小到大的顺序进行编码的条件下,若按照基于每组直接保序关系的第一编码由小到大的顺序执行每组直接保序关系中的第一种报文,则确定是否执行第一报文的过程如下:
若第一报文为第x组直接保序关系中的第一种报文,则x的取值的数量为至少一个,那么需要选择至少一组第x组直接保序关系中的任意一组直接保序关系作为判断基础,以及基于选择的一组保序关系判断是否执行第一报文,具体的,判断过程如下:
确定最近一次执行的第x组直接保序关系(即选择的一组第x组直接保序关系)中的第一种报文的第一编码是否与第一报文的第一编码相等,若是,则执行第一报文,若否,则确定第一编码与第一报文的第一编码相邻且小于第一报文的第一编码的第x组直接保序关系(即选择的一组第x组直接保序关系)中的第一种报文是否均已执行完成,若是,则执行第一报文,若否,则等待,直至符合上述条件才可执行第一报文。需要说明的是,上述判断过程中的第一编码均与选择的第x组直接保序关系对应。
若第一报文为第x组直接保序关系中的第二种报文,则x的取值的数量为一个,那么以该第x组直接保序关系作为判断基础判断是否执行第一报文,具体的,判断过程如下:
判断最近一次执行的第x组直接保序关系中的第一种报文的第一编码是否大于第一报文的第一编码,若是,则执行第一报文,若否,则判断第一编码与第一报文的第一编码相等的第x组直接保序关系中的第一种报文的执行数量是否等于第一报文的第二编码,若是,则执行第一报文,若否,则等待,直至符合上述条件才可执行第一报文。需要说明的是,上述判断过程中的第一编码和第二编码均已第x组直接保序关系对应。
方式二、在多个报文包括N组保序关系,2≤N且N为整数,其中,N组保序关系中的每组保序关系均包括第一种报文和第二种报文,且第二种报文依赖于第一种报文进行保序,以及针对第i组保序关系,第i组保序关系中的第一种报文和第二种报文基于第i组保序关系的第一编码用于指示第一种报文和第二种报文所属的基于第i组保序关系的保序区间;针对第i组保序关系,第i组保序关系中的第二种报文基于第i组保序关系的第二编码用于指示第二种报文所属的基于第i组保序关系的保序区间内的第i组保序关系中的第一种报文的数量,以及N组保序关系中的一部分保序关系为直接保序关系,另外一部分保序关系为间接保序关系的条件下,根据第一报文的编码确定是否执行第一编码的过程如下:
将第一报文的种类与每组保序关系(即直接保序关系和间接保序关系)中的第一种报文的种类和第二种报文的种类进行比对,以确定第一报文所属的保序关系,以及第一报文为其所属的保序关系中的哪种报文。第一报文所属的保序关系为直接保序关系;或者第一报文所属的保序关系为直接保序关系和间接保序关系)。
若第一报文仅为第x组直接保序关系中的第一种报文,或者若第一报文为第x组直接保序关系中的第一种报文且第一报文为第q组间接保序关系中的第一种报文,则执行第一报文。由于第一报文仅为第x组直接保序关系中的第一种报文,或者第一报文为第x组直接保序关系中的第一种报文且第一报文为第q组间接保序关系中的第一种报文,因此可以确定第一报文的执行不受其他报文执行的限制,即第一报文为优先级最高的报文,从而在接收到第一报文之后可以直接执行第一报文。需要说明的是,x和q的取值的数量均可以为至少一个。即第一报文所属的第x组直接保序关系的数量为至少一个,第一报文所属的第q组间接保序关系的数量为至少一个。
若第一报文仅为第x组直接保序关系中的第二种报文,或者若第一报文为第x组直接保序关系中的第二种报文且第一报文为第j组直接保序关系中的第一种报文,则在根据第一报文基于第x组直接保序关系的第一编码和第二编码确定第一目标报文均已执行完成时,执行第一报文,其中,第一目标报文包括位于第一报文所属的基于第x组直接保序关系的保序区间内的第x组直接保序关系中的第一种报文和位于第一报文所属的基于第x组直接保序关系的保序区间之前的保序区间内的第x组直接保序关系中的第一种报文。由于该过程的原理与上文方式一中的原理相同,因此此处不再进行赘述。需要说明的是,x的取值的数量为一个,j的取值数量为至少一个。
若第一报文为第x组直接保序关系中的第二种报文且第一报文为第j组直接保序关系中的第一种报文且第一报文为第q组间接保序关系中的第二种报文,或者若第一报文为第x组直接保序关系中的第二种报文且第一报文为第q组间接保序关系中的第二种报文,则在根据第一报文基于第x组直接保序关系的第一编码和第二编码确定第一目标报文均已执行完成,且根据第一报文基于第q组间接保序关系的第一编码和第二编码确定第二目标报文均已执行完成时,执行第一报文。其中,第一目标报文已经在上文中进行了说明,因此此处不再进行赘述。第二目标报文包括位于第一报文所属的基于第q组间接保序关系的保序区间内的第q组间接保序关系中的第一种报文和位于第一报文所属的基于第q组间接保序关系的保序区间之前的保序区间内的第q组间接保序关系中的第一种报文。由于该过程的原理与上文方式一种的原理相同,因此此处不再进行赘述。需要说明的是,x的取值的数量为一个,j的取值的数量为至少一个,q的取值的数量为至少一个。在q的取值的数量为多个的情况下,在根据第一报文基于第x组直接保序关系的第一编码和第二编码确定第一目标报文均已执行完成,且根据第一报文基于每个第q组间接保序关系的第一编码和第二编码确定每个第q组间接保序关系对应的第二目标报文均已执行完成时,执行第一报文。需要说明的是,每个第q组间接保序关系对应的第二目标报文的概念均与上文中对第二目标报文的概念相同,且上文中已经对第二目标报文进行了说明,因此此处不再进行赘述。
下面,以图2至图4为例为上述过程进行说明。若第一报文为图2至图4中的报文A8,那么由图2至图4可知,根据第一报文的编码可知第一报文为其所属的直接保序关系和间接保序关系中的第一种报文,因此,在接收到第一报文后直接执行第一报文;若第一报文为图2至图4中的报文B6,且第一报文基于第一组直接保序关系的编码为(0,1),则判断基于第一组直接保序关系的第一编码为0的报文A的执行数量是否等于1,若是,则执行第一报文。若第一报文为图2至图4中的多个报文中的报文E10,且第一报文基于第四组直接保序关系的编码为(1,1),第一报文基于第二组间接保序关系的编码为(1,2),则判断基于第四组直接保序关系的第一编码为0的报文C是否执行完成,若是,则判断基于第四组直接保序关系的第一编码为1的报文C的执行数量是否等于1,若是,则判断基于第二组间接保序关系的第一编码为0的报文A是否执行完成,若是,判断基于第二组间接保序关系的第一编码为1的报文A的执行数量是否等于2,若是,则执行第一报文。
需要说明的是,在基于每组保序关系(直接保序关系和间接保序关系)的保序区间的编号按照由小到大的顺序进行编号,即报文基于对应的保序关系(直接保序关系和间接保序关系)的第一编码均按照由小到大的顺序进行编码的条件下,若按照基于每组保序关系(直接保序关系和间接保序关系)的第一编码由小到大的顺序执行每组直接保序关系中的第一种报文,则确定是否执行第一报文的原理与方式一种确定是否执行第一报文的原理相同,因此此处不再进行赘述。
方式三、在多个报文包括M类报文,M类报文中的每类报文均包括一种报文,其中,第k+1类报文直接依赖于第k类报文进行保序,第k+1类报文间接依赖于第1类报文至第k-1类报文中的每种报文进行保序,1≤k≤M-1且k和M均为整数;针对M类报文中的每类报文,每类报文的第一编码均用于指示报文所属的保序区间;在k=1的条件下,第1类报文的第二编码用于指示第1类报文在其所属的保序区间内的报文中的排列序号;在2≤k≤M-1的条件下,每个第k类报文的第二编码均包括第一编号和第二编号,第一编号用于指示第k类报文所属的保序区间内在第k类报文之前的第1类报文至第k-1类报文的数量,第二编号用于指示第k类报文在其所属的保序区间内的报文中的排列序号;针对第M类报文,第M类报文的第二编码均包括第一编号和第二编号,第一编号用于指示第M类报文所属的保序区间内在第M类报文之前的第1类报文至第M-1类报文的数量,第二编号用于指示第M类报文在其所属的保序区间内的报文中的排列序号的条件下,根据第一报文的编码确定是否执行第一报文的过程如下:
根据第一报文的种类确定第一报文属于哪一类报文,然后,根据第一报文所属的报文的类和第一报文的编码确定是否执行第一报文的过程如下:
若第一报文为第k类报文且k=1,则执行第一报文。由于第一报文为第1类报文,即第一报文为优先级最高的报文,其的执行不受其他报文的执行的限制,因此,在接收到第一报文后,可直接执行第一报文。
若第一报文为第k类报文且2≤k≤M-1,且根据第一报文的第一编码、第一编号和第二编号确定第一目标报文已执行完成,则执行第一报文,其中,第一目标报文包括第一报文所属的保序区间内位于第一报文之前的第1类报文至第k-1类报文和位于第一报文所属的保序区间之前的保序区间内的第1类报文至第k-1类报文。即第一报文为优先级低于最高优先级且高于最低优先级的报文,因此,第一报文的执行受排在其之前且比其优先级高的报文(即第1类报文至第k-1类报文)的执行的限制。下面举例对该过程进行说明,若保序区间的编号按照由小到大的顺序进行编号,即排在前面的保序区间的报文的第一编码小于排在后面的保序区间的报文的第一编码,则判断第一编码小于第一报文的第一编码的第1类报文至第k-1类报文(即优先级比第一报文的优先级高的报文)是否均已执行完成,若是,则根据第一编码与第一报文的第一编码相同的报文的第二编码(针对优先级最高的报文)或第二编码中的第二编号(针对优先级高于第一报文的优先级且低于最高优先级的报文)以及第一报文的第二编号判断在第一报文所属的保序区间内位于第一报文之前的第1类报文至第k-1类报文(优先级高于第一报文的优先级的报文)的执行数量是否等于第一报文的第一编号,若是,则执行第一报文。
若第一报文为第M类报文,且根据第一报文的第一编码、第一编号和第二编号确定第二目标报文已执行完成,则执行所述第一报文,其中,第二目标报文包括第一报文所属的保序区间内位于第一报文之前的第1类报文至第M-1类报文和位于第一报文所属的保序区间之前的保序区间内的第1类报文至第M-1类报文。即第一报文为优先级最低的报文,因此,第一报文的执行受排在其之前且比其优先级高的报文的限制。由于具体的判断原理与上文中第一报文为第k类报文且2≤k≤M-1中的判断原理相同,因此此处不再赘述。
下面,以图7为例对上述过程进行说明。图7中的多个报文中的5种报文的优先级从高到低的排列顺序为:报文a>报文b>报文c>报文d>报文e,即第一类报文包括报文a,第二类报文包括报文b,第三类报文包括报文c,第四类报文包括报文d,第五类报文包括报文e。
若第一报文为图7中的报文a10,由于第一报文为报文a,且报文a的优先级最高,即报文a为第1类报文,因此可直接执行报文a。
若第一报文为图7中的d6,由于第一报文的编号为(1,2,4),因此,若第一编号为0的且优先级高于报文d6的优先级的报文(即报文c1(0,0,1))均已执行完成,以及第一编号等于1且位于第一报文之前且优先级高于报文d6的优先级的报文(即报文c3(1,0,1)和报文a5(1,3)的执行数量等于2时,则执行第一报文。
在第三种方式的基础上,若M类报文中的至少一类报文包括多种报文,其中,第k+1类报文中的一种报文直接依赖于第k类报文中与其存在保序关系报文进行保序,第k+1类报文中的一种报文间接依赖于第1类报文至第k-1类报文中与其存在保序关系报文进行保序,则根据第一报文的编码确定是否执行第一报文的过程如下:
根据第一报文的种类确定第一报文属于哪一类报文,然后,根据第一报文所属的报文的类和第一报文的编码确定是否执行第一报文的过程如下:
若第一报文为第k类报文中的第s种报文且k=1,则执行第一报文;
若第一报文为第k类报文中的第t种报文且2≤k≤M-1,且根据第一报文的第一编码、第一编号和第二编号确定第一目标报文已执行完成,则执行所述第一报文,其中,第一目标报文包括第一报文所属的保序区间内位于第一报文之前的第1类报文至第k-1类报文中与第一报文存在保序关系(直接保序关系和间接保序关系)的报文和位于第一报文所属的保序区间之前的保序区间内的第1类报文至第k-1类报文中与第一报文存在保序关系(直接保序关系和间接保序关系)的报文;
若第一报文为第M类报文中的第q种报文,且根据第一报文的第一编码、第一编号和第二编号确定第二目标报文已执行完成,则执行第一报文,其中,第二目标报文包括第一报文所属的保序区间内位于第一报文之前的第1类报文至第M-1类报文中与第一报文存在保序关系(直接保序关系和间接保序关系)的报文和位于第一报文所属的保序区间之前的保序区间内的第1类报文至第M-1类报文中与第一报文存在保序关系(直接保序关系和间接保序关系)的报文。
需要说明的是上述原理与每类报文中仅包括一种报文的原理相同,因此此处不再进行赘述。
下面,以图8为例对上述过程进行说明。图8中的多个报文中包括六种报文,分别为:报文A、报文B、报文C、报文D、报文E、报文F,其中,报文C直接依赖于报文A进行保序,报文D直接依赖于报文B进行保序,报文E直接依赖于报文C进行保序,报文F直接依赖于报文C进行保序,报文E间接依赖于报文A进行保序,报文F间接依赖于报文A进行保序。基于此,上述六种报文可以划分为三类报文,三类报文按照优先级由高到低的顺序依次为:第一类报文、第二类报文、第三类报文。其中,第一类报文包括报文A和报文B,第二类报文包括报文C和报文D,第三类报文包括报文F和报文F。
若第一报文为图8中的报文A8,由于第一报文为报文A,且报文A的优先级最高,因此可直接执行第一报文。
若第一报文为图8中的报文D10,由于第一报文的编码为(1,1,5),因此,若第一编号为0的且优先级高于报文D10的优先级的报文(即报文B2(0,2))均已执行完成,且第一编号等于1且位于报文D10之前且优先级高于报文D10的优先级的报文(即报文B9(1,4))的执行数量等于1时,则执行第一报文。
若第一报文为图8中的报文E14,由于第一报文的编号为(2,1,2),因此,若第一编号为0的且优先级高于报文E14的优先级的报文(即报文C1(0,0,1)、报文A3(0,3))均已执行完成,且第一编号为1的且优先级高于报文E14的优先级的报文(报文C7(1,0,2)、报文A8(1,3)、报文A11(1,6))均已执行完成,且第一编号为2且位于报文E14之前且优先级高于报文E14的优先级的报文(即报文C13(2,0,1))的执行数量等于1时,则执行第一报文。
需要说明的是,在第二模块执行第一报文之前,还可以判断第二模块是否为第一报文的终点模块,若是,则第二模块执行第一报文,若否,则将第一报文及其编码传输至下一个模块。判断第二模块是否为第一报文的终点模块的方式可以包括:在第一报文中携带终点模块的标识信息(例如ip地址等),在第二模块接收到第一报文及其编码后,判断第一报文携带的终点模块的标识信息是否与第二模块的标识信息相同,若是,则第二模块为终点模块,若否,则第二模块不是终点模块。
由上可知,第二模块在接收到第一报文后,根据第一报文的编码即可快速的确定第一报文与多个报文中的其他报文的执行关系(即确定排在第一报文之前且限制第一报文执行的报文),实现了报文的保序传输,以及第二模块根据排在第一报文之前且限制第一报文执行的报文更加快速准确的确定是否执行第一报文,提高了报文执行的效率。
下面,将对本申请的应用场景进行说明。上述报文保序方法可以应用于数据传输系统,该数据传输系统可以包括多个服务器,其中服务器之间可以实现数据传输。其中,第一模块和第二模块可以为多个服务器中的一个服务器。数据传输系统还可以为基于SOC芯片的数据传输系统,其中,基于SOC芯片的数据传输系统可以包括多个模块,模块之间可以实现数据传输,第一模块和第二模块可以为多个模块中的一个模块。上述SOC芯片例如可以为:采用PCIe接口的服务器芯片、具备PCIe接口形态的存储芯片、具备PCIe接口的终端芯片以及具备PCIe接口的AI芯片等,此处不作特殊限定。
下面,举例对采用PCIe的SOC芯片的数据传输系统的结构进行说明。图9示出了一种基于SOC芯片的数据传输系统的结构示意图。如图9所示,采用PCIe的SOC芯片的数据传输系统包括模块A、模块B、模块C、模块D、模块E、模块F等,该数据传输系统中传输的报文包括三种,分别为P报文、CPL报文、NP报文;其中,P报文和CPL报文为第一组保序关系,且CPL报文依赖于P报文进行保序;P报文和NP报文为第二组保序关系,且NP报文依赖于P报文进行保序。基于此,可以将该三种报文划分为两类报文,其中第一类报文包括P报文,第二类报文包括CPL报文和NP报文,第一类报文的优先级高于第二类报文,其中,P报文和CPL报文的保序关系为直接保序关系,P报文和NP报文的保序关系为直接保序关系。
在向采用PCIe的SOC芯片的数据传输系统输入报文的方向上,报文发送模块Serdes1按序向模块A发送第一报文,模块A对第一报文进行编码,具体的,模块A采用上述第一模块对报文的编码方式为第一报文设置编码,以及将第一报文及其编码发送至模块B。其中,模块A为数据输入方向上的起始模块。模块B接收第一报文及其编码,判断模块B是否为第一报文的终点模块,若是,则根据第一报文的编码确定是否执行第一报文,以及若确定执行第一报文,则基于第一报文并按照保序规则操作模块B中的存储器;若模块B不是第一报文的终点模块,则将第一报文及其编码发送至模块C,并在模块C中重复上述模块B的操作。需要说明的是,第一报文可以为P报文或CPL报文或NP报文。P报文、CPL报文以及NP报文在模块之间采用分道乱序传输的方式。
在采用PCIe的SOC芯片的数据传输系统输出报文的方向上,模块D对第一报文进行编码,具体的,模块D采用上述第一模块对报文的编码方式为第一报文设置编码,以及将第一报文及其编码发送至模块E。其中,模块D为数据输出方向上的起始模块。模块E接收第一报文及其编码,并将第一报文及其编码传输至模块F;模块F解析第一报文的编码,以恢复原始排列信息,并根据原始排列信息向报文接收模块Serdes2发送第一报文。
需要说明的是,第一报文可以为P报文或CPL报文或NP报文,以及采用分道乱序传输的方式在模块之间传输P报文、CPL报文以及NP报文。
下面,举例对采用PCIe的SOC芯片的数据传输系统中的报文进行编码的方式进行说明。图10示出了对多个报文进行编码的示意图八,图11示出了对多个报文进行编码的示意图九。
模块A和模块D采用第一模块中的第一种方式为多种报文中的每个报文设置的编码如图10所示,其中,基于第一组保序关系对多个报文进行编码时,以CPL报文切换为P报文的节点作为划分节点对多个报文划分保序区间;基于第二组保序关系对多个报文进行编码时,以NP报文切换为P报文的节点作为划分节点对多个报文划分保序区间;具体的编码原理已经在上文中进行了说明,因此此处不再进行赘述。模块B、模块C、模块E、模块F等模块根据第一报文的编码确定是否执行第一报文的原理已经在上文中进行了说明,因此此处不再进行赘述。
模块A和模块D采用第一模块中的第二种方式为多种报文中的每个报文设置的编码如图11所示,其中,以CPL报文切换为P报文的节点作为划分节点对多个报文划分保序区间。模块B、模块C、模块E、模块F等模块根据第一报文的编码确定是否执行第一报文的原理已经在上文中进行了说明,因此此处不再进行赘述。
实验证明,本申请可以在没有保序通道且采用PCIe的SOC芯片的数据传输系统中实现报文的保序传输,并且最大效率的利用传输带宽。具体的,采用现有的保序机制,跑读写混合需要保序的场景比单跑读的性能下降25%左右,而采用本申请的保序机制,在芯片上实测的结果表明,跑读写混合需要保序的场景与单跑读的性能一样,无性能损失。
图12为本申请实施例提供的一种报文保序装置的结构示意图一,如图12所示,该装置1200可以包括:第一接收模块1201、编码模块1202、发送模块1203,其中:第一接收模块1201,用于接收第一报文,其中,所述第一报文为多个报文中的任意一个;编码模块1202,用于根据所述第一报文在所述多个报文中的发送顺序和所述第一报文与所述多个报文中的其他报文的保序关系对所述第一报文进行编码以得到所述第一报文的编码;发送模块1203,用于向第二模块发送所述第一报文及其编码;其中,所述第一报文的编码用于指示所述第一报文与所述多个报文中的其他报文的执行关系。
在一种可能的实施方式中,所述多个报文包括N组保序关系,1≤N且N为整数,其中,所述N组保序关系中的每组保序关系均包括第一种报文和第二种报文,且所述第二种报文依赖于所述第一种报文进行保序。
在一种可能的实施方式中,所述编码模块1202包括:第一编码单元,用于若所述第一报文为第i组保序关系中的第一种报文或第二种报文,则为所述第一报文设置基于所述第i组保序关系的第一编码,其中,所述第一编码用于指示所述第一报文所属的基于所述第i组保序关系的保序区间,所述保序区间由划分节点对所述多个报文划分得到,所述划分节点为所述第i组保序关系中的第二种报文切换为第一种报文的节点,所述多个报文按照所述多个报文中的每个报文的发送顺序排序;以及第二编码单元,用于若所述第一报文为第i组保序关系中的第二种报文,则为所述第一报文设置基于所述第i组保序关系的第二编码,其中,所述第二编码用于指示所述第一报文所属的基于第i组保序关系的保序区间内的第一种报文的数量;其中,1≤i≤N且i为整数。
在一种可能的实施方式中,所述N组保序关系中的每组保序关系均为直接保序关系;或者所述N组保序关系中的一部分保序关系为直接保序关系,另一部分保序关系为间接保序关系。
在一种可能的实施方式中,所述多个报文包括3种报文,分别为P报文、NP报文、CPL报文,所述多个报文包括2组保序关系,所述2组保序关系均为直接保序关系;其中,第一组直接保序关系中的第一种报文为P报文,第一组直接保序关系中的第二种报文为CPL报文;第二组直接保序关系中的第一种报文为P报文,第二组直接保序关系中的第二种报文为NP报文。
在一种可能的实施方式中,所述多个报文包括M类报文,所述M类报文中的每类报文均包括一种报文,其中,第k+1类报文直接依赖于第k类报文进行保序,第k+1类报文间接依赖于第1类报文至第k-1类报文中的每类报文进行保序,1≤k≤M-1且k和M均为整数;
所述编码模块1202包括:第一编码单元,用于为所述第一报文设置第一编码,所述第一编码用于指示所述第一报文所属的保序区间,所述保序区间由划分节点对所述多个报文划分得到,所述划分节点为第M类报文切换为所述第1类报文至第M-1类报文中的任意一类报文的节点,所述多个报文按照所述多个报文中的每个报文的发送顺序排序;第二编码单元,用于若所述第一报文为所述第k类报文且k=1,则为所述第一报文设置第二编码,其中,所述第二编码用于指示所述第一报文在其所属的保序区间内的报文中的排列序号;第三编码单元,用于若所述第一报文为所述第k类报文且2≤k≤M-1,则为所述第一报文设置第二编码,所述第二编码包括第一编号和第二编号,所述第一编号用于指示所述第一报文所属的保序区间内在所述第一报文之前的第1类报文至第k-1类报文的数量,所述第二编号用于指示所述第一报文在其所属的保序区间内的报文中的排列序号;第四编码单元,用于若所述第一报文为所述第M类报文,则为所述第一报文设置第二编码,所述第二编码包括第一编号和第二编号,所述第一编号用于指示所述第一报文所属的保序区间内在所述第一报文之前的第1类报文至第M-1类报文的数量,所述第二编号用于指示所述第一报文在其所属的保序区间内的报文中的排列序号。
在一种可能的实施方式中,所述多个报文包括M类报文,所述M类报文中的至少一类报文包括多种报文,其中,第k+1类报文中的一种报文直接依赖于第k类报文中与其存在保序关系报文进行保序,第k+1类报文中的一种报文间接依赖于第1类报文至第k-1类报文中与其存在保序关系报文进行保序,1≤k≤M-1且k和M均为整数;
所述编码模块1202包括:第一编码单元,用于为所述第一报文设置第一编码,所述第一编码用于指示所述第一报文所属的保序区间,所述保序区间由划分节点对所述多个报文划分得到,所述划分节点为第M类报文中指定的一种报文或者任一种报文切换为第1类报文至第M-1类报文中指定的一种报文或者任一种报文的节点,所述多个报文按照所述多个报文中的每个报文的发送顺序排序;第二编码单元,用于若所述第一报文为所述第k类报文中的第s种报文且k=1,则为所述第一报文设置第二编码,其中,所述第二编码用于指示所述第一报文在其所属的保序区间内的报文中的排列序号;第三编码单元,用于若所述第一报文为所述第k类报文中的第t种报文且2≤k≤M-1,则为所述第一报文设置第二编码,所述第二编码包括第一编号和第二编号,其中,所述第一编号用于指示所述第一报文所属的保序区间内在所述第一报文之前的第1类报文至第k-1类报文中与其存在保序关系的报文数量;第二编号用于指示所述第一报文在其所属的保序区间内的报文中的排列序号;第四编码单元,用于若所述第一报文为所述第M类报文中的第q种报文,则为所述第一报文设置第二编码,所述第二编码包括第一编号和第二编号,其中,所述第一编号用于指示所述第一报文所属的保序区间内在所述第一报文之前的第1类报文至第M-1类报文中与其存在保序关系的报文数量,所述第二编号用于指示所述第一报文在其所属的保序区间内的报文中的排列序号。
在一种可能的实施方式中,所述多个报文包括2类报文,其中,第一类报文包括P报文,第二类报文包括NP报文和CPL报文,所述NP报文依赖于所述P报文进行保序,所述CPL报文依赖于所述P报文进行保序。
本申请的上述装置,可以用于执行图1中的第一模块所执行的方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图13为本申请实施例提供的一种报文保序装置的结构示意图二,如图13所示,该装置1300可以包括:第二接收模块1301、确定模块1302,其中:第二接收模块1301,用于接收第一模块发送的第一报文及其编码,其中所述第一报文为多个报文中的任意一个报文;确定模块1302,用于根据所述第一报文的编码确定是否执行所述第一报文;其中,所述第一报文的编码用于指示所述第一报文与所述多个报文中的其他报文的执行关系。
在一种可能的实现方式中,所述多个报文包括N组保序关系,1≤N且N为整数,其中,所述N组保序关系中的每组保序关系均包括第一种报文和第二种报文,且所述第二种报文依赖于所述第一种报文进行保序;针对第i组保序关系,所述第i组保序关系中的第一种报文和第二种报文基于所述第i组保序关系的第一编码用于指示所述第一种报文和所述第二种报文所属的基于所述第i组保序关系的保序区间;针对第i组保序关系,所述第i组保序关系中的第二种报文基于所述第i组保序关系的第二编码用于指示所述第二种报文所属的基于第i组保序关系的保序区间内的第i组保序关系中的第一种报文的数量。
在一种可能的实现方式中,在所述N组保序关系中的每组保序关系均为直接保序关系的条件下,所述确定模块1302包括:第一执行单元,用于若所述第一报文为第x组直接保序关系中的第一种报文,则执行所述第一报文;第二执行单元,用于若所述第一报文为第x组直接保序关系中的第二种报文,则在根据所述第一报文基于第x组直接保序关系的第一编码和第二编码确定第一目标报文均已执行完成时,执行所述第一报文,其中,第一目标报文包括位于所述第一报文所属的保序区间内的第x组直接保序关系中的第一种报文和位于所述第一报文所属的保序区间之前的保序区间内的第x组直接保序关系中的第一种报文;其中,1≤x≤N,且x为整数。
在一种可能的实现方式中,在所述N组保序关系中的一部分保序关系为直接保序关系,另一部分保序关系为间接保序关系的条件下,所述确定模块1302包括:第一执行单元,用于若所述第一报文仅为第x组直接保序关系中的第一种报文,或者若所述第一报文为第x组直接保序关系中的第一种报文且所述第一报文为第q组间接保序关系中的第一种报文,则执行所述第一报文;第二执行单元,用于若所述第一报文仅为第x组直接保序关系中的第二种报文,或者若所述第一报文为第x组直接保序关系中的第二种报文且所述第一报文为第j组直接保序关系中的第一种报文,则在根据所述第一报文基于第x组直接保序关系的第一编码和第二编码确定第一目标报文均已执行完成时,执行所述第一报文;第三执行单元,用于若所述第一报文为第x组直接保序关系中的第二种报文且所述第一报文为第j组直接保序关系中的第一种报文且所述第一报文为第q组间接保序关系中的第二种报文,或者若所述第一报文为第x组直接保序关系中的第二种报文且所述第一报文为第q组间接保序关系中的第二种报文,则在根据所述第一报文基于第x组直接保序关系的第一编码和第二编码确定第一目标报文均已执行完成,且根据所述第一报文基于第q组间接保序关系的第一编码和第二编码确定第二目标报文均已执行完成时,执行所述第一报文;其中,第一目标报文包括位于所述第一报文所属的基于第x组直接保序关系的保序区间内的第x组直接保序关系中的第一种报文和位于所述第一报文所属的基于第x组直接保序关系的保序区间之前的保序区间内的第x组直接保序关系中的第一种报文;第二目标报文包括位于所述第一报文所属的基于第q组间接保序关系的保序区间内的第q组间接保序关系中的第一种报文和位于所述第一报文所属的基于第q组间接保序关系的保序区间之前的保序区间内的第q组间接保序关系中的第一种报文。
在一种可能的实现方式中,所述多个报文包括M类报文,所述M类报文中的每类报文均包括一种报文,其中,第k+1类报文直接依赖于第k类报文进行保序,第k+1类报文间接依赖于第1类报文至第k-1类报文中的每类报文进行保序,1≤k≤M-1且k和M均为整数;针对所述M类报文中的每类报文,所述每类报文的第一编码均用于指示所述报文所属的保序区间;在k=1的条件下,第1类报文的第二编码用于指示所述第1类报文在其所属的保序区间内的报文中的排列序号;在2≤k≤M-1的条件下,每个第k类报文的第二编码均包括第一编号和第二编号,所述第一编号用于指示所述第k类报文所属的保序区间内在所述第k类报文之前的第1类报文至第k-1类报文的数量,所述第二编号用于指示所述第k类报文在其所属的保序区间内的报文中的排列序号;针对第M类报文,所述第M类报文的第二编码均包括第一编号和第二编号,所述第一编号用于指示所述第M类报文所属的保序区间内在所述第M类报文之前的第1类报文至第M-1类报文的数量,所述第二编号用于指示所述第M类报文在其所属的保序区间内的报文中的排列序号。
在一种可能的实现方式中,所述确定模块1302包括:第一执行单元,用于若所述第一报文为所述第k类报文且k=1,则执行所述第一报文;第二执行单元,用于若所述第一报文为所述第k类报文且2≤k≤M-1,且根据第一报文的第一编码、第一编号和第二编号确定第一目标报文已执行完成,则执行所述第一报文,其中,所述第一目标报文包括所述第一报文所属的保序区间内位于所述第一报文之前的第1类报文至第k-1类报文和位于所述第一报文所属的保序区间之前的保序区间内的第1类报文至第k-1类报文;第三执行单元,用于若所述第一报文为第M类报文,且根据第一报文的第一编码、第一编号和第二编号确定第二目标报文已执行完成,则执行所述第一报文,其中,所述第二目标报文包括所述第一报文所属的保序区间内位于所述第一报文之前的第1类报文至第M-1类报文和位于所述第一报文所属的保序区间之前的保序区间内的第1类报文至第M-1类报文。
本申请的上述装置,可以用于执行图1中的第二模块所执行的方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本申请还提供一种计算机可读存储介质,包括计算机程序,所述计算机程序在计算机上被执行时,使得所述计算机执行图1中的第一模块所执行的任一项方法或者图1中的第二模块所执行的任一项方法。
本申请还提供一种计算机程序,当所述计算机程序被计算机执行时,用于执行图1中的第一模块所执行的任一项方法或者图1中的第二模块所执行的任一项方法。
本申请还提供一种芯片,包括处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于调用并运行所述存储器中存储的计算机程序,以执行图1中的第一模块所执行的任一项方法或者图1中的第二模块所执行的任一项方法。
进一步地,所述芯片还可以包括存储器和通信接口。所述通信接口可以是输入/输出接口、管脚或输入/输出电路等。
在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。处理器可以是通用处理器、数字信号处理器(digital signalprocessor,DSP)、特定应用集成电路(application-specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。本申请实施例公开的方法的步骤可以直接体现为硬件编码处理器执行完成,或者用编码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
上述各实施例中提及的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-onlymemory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rateSDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(directrambus RAM,DR RAM)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (18)
1.一种报文保序方法,其特征在于,包括:
接收第一报文,其中,所述第一报文为多个报文中的任意一个;
根据所述第一报文在所述多个报文中的发送顺序和所述第一报文与所述多个报文中的其他报文的保序关系对所述第一报文进行编码以得到所述第一报文的编码;
向第二模块发送所述第一报文及其编码;
其中,所述第一报文的编码用于指示所述第一报文与所述多个报文中的其他报文的执行关系;
所述根据所述第一报文在所述多个报文中的发送顺序和所述第一报文与所述多个报文中的其他报文的保序关系对所述第一报文进行编码包括:
若所述第一报文为第i组保序关系中的第一种报文或第二种报文,则为所述第一报文设置基于所述第i组保序关系的第一编码,其中,所述第一编码用于指示所述第一报文所属的基于所述第i组保序关系的保序区间,所述保序区间由划分节点对所述多个报文划分得到,所述划分节点为所述第i组保序关系中的第二种报文切换为第一种报文的节点,所述多个报文按照所述多个报文中的每个报文的发送顺序排序;其中,所述多个报文包括N组保序关系,1≤N且N为整数,其中,所述N组保序关系中的每组保序关系均包括第一种报文和第二种报文,且所述第二种报文依赖于所述第一种报文进行保序;1≤i≤N且i为整数。
2.如权利要求1所述的方法,其特征在于,所述根据所述第一报文在所述多个报文中的发送顺序和所述第一报文与所述多个报文中的其他报文的保序关系对所述第一报文进行编码还包括:
若所述第一报文为第i组保序关系中的第二种报文,则为所述第一报文设置基于所述第i组保序关系的第二编码,其中,所述第二编码用于指示所述第一报文所属的基于第i组保序关系的保序区间内的第一种报文的数量。
3.如权利要求1或2所述的方法,其特征在于,所述N组保序关系中的每组保序关系均为直接保序关系;或者所述N组保序关系中的一部分保序关系为直接保序关系,另一部分保序关系为间接保序关系。
4.如权利要求1~2中任一项所述的方法,其特征在于,所述多个报文包括3种报文,分别为P报文、NP报文、CPL报文,所述多个报文包括2组保序关系,所述2组保序关系均为直接保序关系;
其中,第一组直接保序关系中的第一种报文为P报文,第一组直接保序关系中的第二种报文为CPL报文;第二组直接保序关系中的第一种报文为P报文,第二组直接保序关系中的第二种报文为NP报文。
5.一种报文保序方法,其特征在于,包括:
接收第一模块发送的第一报文及其编码,其中所述第一报文为多个报文中的任意一个报文;
根据所述第一报文的编码确定是否执行所述第一报文;
其中,所述第一报文的编码用于指示所述第一报文与所述多个报文中的其他报文的执行关系;
针对第i组保序关系,所述第i组保序关系中的第一种报文和第二种报文基于所述第i组保序关系的第一编码用于指示所述第一种报文和所述第二种报文所属的基于所述第i组保序关系的保序区间;其中,所述多个报文包括N组保序关系,1≤N且N为整数,其中,所述N组保序关系中的每组保序关系均包括第一种报文和第二种报文,且所述第二种报文依赖于所述第一种报文进行保序;1≤i≤N且i为整数。
6.如权利要求5所述的方法,其特征在于,
针对第i组保序关系,所述第i组保序关系中的第二种报文基于所述第i组保序关系的第二编码用于指示所述第二种报文所属的基于第i组保序关系的保序区间内的第i组保序关系中的第一种报文的数量。
7.如权利要求6所述的方法,其特征在于,在所述N组保序关系中的每组保序关系均为直接保序关系的条件下,所述根据所述第一报文的编码确定是否执行所述第一报文包括:
若所述第一报文为第x组直接保序关系中的第一种报文,则执行所述第一报文;
若所述第一报文为第x组直接保序关系中的第二种报文,则在根据所述第一报文基于第x组直接保序关系的第一编码和第二编码确定第一目标报文均已执行完成时,执行所述第一报文,其中,第一目标报文包括位于所述第一报文所属的保序区间内的第x组直接保序关系中的第一种报文和位于所述第一报文所属的保序区间之前的保序区间内的第x组直接保序关系中的第一种报文;
其中,1≤x≤N,且x为整数。
8.如权利要求6所述的方法,其特征在于,在所述N组保序关系中的一部分保序关系为直接保序关系,另一部分保序关系为间接保序关系的条件下,所述根据所述第一报文的编码确定是否执行所述第一报文包括:
若所述第一报文仅为第x组直接保序关系中的第一种报文,或者若所述第一报文为第x组直接保序关系中的第一种报文且所述第一报文为第q组间接保序关系中的第一种报文,则执行所述第一报文;
若所述第一报文仅为第x组直接保序关系中的第二种报文,或者若所述第一报文为第x组直接保序关系中的第二种报文且所述第一报文为第j组直接保序关系中的第一种报文,则在根据所述第一报文基于第x组直接保序关系的第一编码和第二编码确定第一目标报文均已执行完成时,执行所述第一报文;
若所述第一报文为第x组直接保序关系中的第二种报文且所述第一报文为第j组直接保序关系中的第一种报文且所述第一报文为第q组间接保序关系中的第二种报文,或者若所述第一报文为第x组直接保序关系中的第二种报文且所述第一报文为第q组间接保序关系中的第二种报文,则在根据所述第一报文基于第x组直接保序关系的第一编码和第二编码确定第一目标报文均已执行完成,且根据所述第一报文基于第q组间接保序关系的第一编码和第二编码确定第二目标报文均已执行完成时,执行所述第一报文;
其中,第一目标报文包括位于所述第一报文所属的基于第x组直接保序关系的保序区间内的第x组直接保序关系中的第一种报文和位于所述第一报文所属的基于第x组直接保序关系的保序区间之前的保序区间内的第x组直接保序关系中的第一种报文;
第二目标报文包括位于所述第一报文所属的基于第q组间接保序关系的保序区间内的第q组间接保序关系中的第一种报文和位于所述第一报文所属的基于第q组间接保序关系的保序区间之前的保序区间内的第q组间接保序关系中的第一种报文。
9.一种报文保序装置,其特征在于,包括:
第一接收模块,用于接收第一报文,其中,所述第一报文为多个报文中的任意一个;
编码模块,用于根据所述第一报文在所述多个报文中的发送顺序和所述第一报文与所述多个报文中的其他报文的保序关系对所述第一报文进行编码以得到所述第一报文的编码;
发送模块,用于向第二模块发送所述第一报文及其编码;
其中,所述第一报文的编码用于指示所述第一报文与所述多个报文中的其他报文的执行关系;
所述编码模块包括:
第一编码单元,用于若所述第一报文为第i组保序关系中的第一种报文或第二种报文,则为所述第一报文设置基于所述第i组保序关系的第一编码,其中,所述第一编码用于指示所述第一报文所属的基于所述第i组保序关系的保序区间,所述保序区间由划分节点对所述多个报文划分得到,所述划分节点为所述第i组保序关系中的第二种报文切换为第一种报文的节点,所述多个报文按照所述多个报文中的每个报文的发送顺序排序;其中,所述多个报文包括N组保序关系,1≤N且N为整数,其中,所述N组保序关系中的每组保序关系均包括第一种报文和第二种报文,且所述第二种报文依赖于所述第一种报文进行保序;1≤i≤N且i为整数。
10.如权利要求9所述的装置,其特征在于,所述编码模块还包括:
第二编码单元,用于若所述第一报文为第i组保序关系中的第二种报文,则为所述第一报文设置基于所述第i组保序关系的第二编码,其中,所述第二编码用于指示所述第一报文所属的基于第i组保序关系的保序区间内的第一种报文的数量。
11.如权利要求9或10所述的装置,其特征在于,所述N组保序关系中的每组保序关系均为直接保序关系;或者所述N组保序关系中的一部分保序关系为直接保序关系,另一部分保序关系为间接保序关系。
12.如权利要求9~10中任一项所述的装置,其特征在于,所述多个报文包括3种报文,分别为P报文、NP报文、CPL报文,所述多个报文包括2组保序关系,所述2组保序关系均为直接保序关系;
其中,第一组直接保序关系中的第一种报文为P报文,第一组直接保序关系中的第二种报文为CPL报文;第二组直接保序关系中的第一种报文为P报文,第二组直接保序关系中的第二种报文为NP报文。
13.一种报文保序装置,其特征在于,包括:
第二接收模块,用于接收第一模块发送的第一报文及其编码,其中所述第一报文为多个报文中的任意一个报文;
确定模块,用于根据所述第一报文的编码确定是否执行所述第一报文;
其中,所述第一报文的编码用于指示所述第一报文与所述多个报文中的其他报文的执行关系;
针对第i组保序关系,所述第i组保序关系中的第一种报文和第二种报文基于所述第i组保序关系的第一编码用于指示所述第一种报文和所述第二种报文所属的基于所述第i组保序关系的保序区间,其中,所述多个报文包括N组保序关系,1≤N且N为整数,其中,所述N组保序关系中的每组保序关系均包括第一种报文和第二种报文,且所述第二种报文依赖于所述第一种报文进行保序;1≤i≤N且i为整数。
14.如权利要求13所述的装置,其特征在于,
针对第i组保序关系,所述第i组保序关系中的第二种报文基于所述第i组保序关系的第二编码用于指示所述第二种报文所属的基于第i组保序关系的保序区间内的第i组保序关系中的第一种报文的数量。
15.如权利要求14所述的装置,其特征在于,在所述N组保序关系中的每组保序关系均为直接保序关系的条件下,所述确定模块包括:
第一执行单元,用于若所述第一报文为第x组直接保序关系中的第一种报文,则执行所述第一报文;
第二执行单元,用于若所述第一报文为第x组直接保序关系中的第二种报文,则在根据所述第一报文基于第x组直接保序关系的第一编码和第二编码确定第一目标报文均已执行完成时,执行所述第一报文,其中,第一目标报文包括位于所述第一报文所属的保序区间内的第x组直接保序关系中的第一种报文和位于所述第一报文所属的保序区间之前的保序区间内的第x组直接保序关系中的第一种报文;
其中,1≤x≤N,且x为整数。
16.如权利要求14所述的装置,其特征在于,在所述N组保序关系中的一部分保序关系为直接保序关系,另一部分保序关系为间接保序关系的条件下,所述确定模块包括:
第一执行单元,用于若所述第一报文仅为第x组直接保序关系中的第一种报文,或者若所述第一报文为第x组直接保序关系中的第一种报文且所述第一报文为第q组间接保序关系中的第一种报文,则执行所述第一报文;
第二执行单元,用于若所述第一报文仅为第x组直接保序关系中的第二种报文,或者若所述第一报文为第x组直接保序关系中的第二种报文且所述第一报文为第j组直接保序关系中的第一种报文,则在根据所述第一报文基于第x组直接保序关系的第一编码和第二编码确定第一目标报文均已执行完成时,执行所述第一报文;
第三执行单元,用于若所述第一报文为第x组直接保序关系中的第二种报文且所述第一报文为第j组直接保序关系中的第一种报文且所述第一报文为第q组间接保序关系中的第二种报文,或者若所述第一报文为第x组直接保序关系中的第二种报文且所述第一报文为第q组间接保序关系中的第二种报文,则在根据所述第一报文基于第x组直接保序关系的第一编码和第二编码确定第一目标报文均已执行完成,且根据所述第一报文基于第q组间接保序关系的第一编码和第二编码确定第二目标报文均已执行完成时,执行所述第一报文;
其中,第一目标报文包括位于所述第一报文所属的基于第x组直接保序关系的保序区间内的第x组直接保序关系中的第一种报文和位于所述第一报文所属的基于第x组直接保序关系的保序区间之前的保序区间内的第x组直接保序关系中的第一种报文;
第二目标报文包括位于所述第一报文所属的基于第q组间接保序关系的保序区间内的第q组间接保序关系中的第一种报文和位于所述第一报文所属的基于第q组间接保序关系的保序区间之前的保序区间内的第q组间接保序关系中的第一种报文。
17.一种计算机可读存储介质,包括计算机程序,所述计算机程序在计算机上被执行时,使得所述计算机执行权利要求1~4中任一项所述的方法或者权利要求5~8中任一项所述方法。
18.一种芯片,包括处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于调用并运行所述存储器中存储的计算机程序,以执行权利要求1~4中任一项所述的方法或者权利要求5~8中任一项所述方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2020/075305 WO2021159478A1 (zh) | 2020-02-14 | 2020-02-14 | 报文保序方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114731334A CN114731334A (zh) | 2022-07-08 |
CN114731334B true CN114731334B (zh) | 2023-10-20 |
Family
ID=77291932
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080083313.1A Active CN114731334B (zh) | 2020-02-14 | 2020-02-14 | 报文保序方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114731334B (zh) |
WO (1) | WO2021159478A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114124854B (zh) * | 2021-11-29 | 2024-02-09 | 天融信雄安网络安全技术有限公司 | 报文处理方法、装置、电子设备及可读存储介质 |
CN114448573B (zh) * | 2022-03-02 | 2024-02-23 | 新华三半导体技术有限公司 | 一种报文处理方法及装置 |
CN117692535B (zh) * | 2024-02-04 | 2024-04-23 | 北京数渡信息科技有限公司 | 一种PCIe协议报文保序装置 |
Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1946054A (zh) * | 2006-09-30 | 2007-04-11 | 华为技术有限公司 | 一种高速数据流的传输方法、装置及数据交换设备 |
CN1996958A (zh) * | 2006-12-30 | 2007-07-11 | 华为技术有限公司 | 保证报文顺序的方法和装置 |
WO2009070994A1 (fr) * | 2007-11-30 | 2009-06-11 | Hangzhou H3C Technologies Co., Ltd. | Procédé et dispositif d'appariement de règle de messagerie |
WO2010022629A1 (zh) * | 2008-08-27 | 2010-03-04 | 华为技术有限公司 | 一种多链路协议分片数据的重组方法、装置及系统 |
CN101795236A (zh) * | 2010-03-31 | 2010-08-04 | 成都市华为赛门铁克科技有限公司 | 报文保序方法及装置 |
WO2011120467A2 (zh) * | 2011-05-09 | 2011-10-06 | 华为技术有限公司 | 报文保序处理方法、保序协处理器和网络设备 |
CN102546424A (zh) * | 2012-01-20 | 2012-07-04 | 华为技术有限公司 | 报文保序方法及装置 |
CN102710524A (zh) * | 2012-06-15 | 2012-10-03 | 大连梯耐德网络技术有限公司 | 一种多协议网络报文传输保序系统的实现方法 |
CN102868635A (zh) * | 2012-08-24 | 2013-01-09 | 汉柏科技有限公司 | 多核多线程的报文保序方法及系统 |
CN102891809A (zh) * | 2012-09-25 | 2013-01-23 | 汉柏科技有限公司 | 多核网络设备报文按接口保序方法及系统 |
CN104618253A (zh) * | 2015-01-22 | 2015-05-13 | 大唐移动通信设备有限公司 | 一种动态变更的传输报文处理方法和装置 |
CN106713144A (zh) * | 2016-12-27 | 2017-05-24 | 锐捷网络股份有限公司 | 一种报文出口信息的读写方法及转发引擎 |
CN107222427A (zh) * | 2016-03-22 | 2017-09-29 | 华为技术有限公司 | 一种报文处理的方法及相关设备 |
WO2017198108A1 (zh) * | 2016-05-19 | 2017-11-23 | 中兴通讯股份有限公司 | 一种处理分片报文的方法及装置 |
CN107769875A (zh) * | 2017-10-18 | 2018-03-06 | 北京华力创通科技股份有限公司 | 卫星通信的语音广播方法、装置和系统 |
CN109428801A (zh) * | 2017-08-23 | 2019-03-05 | 北京华为数字技术有限公司 | 报文发送方法及装置 |
WO2019128840A1 (zh) * | 2017-12-27 | 2019-07-04 | 华为技术有限公司 | 报文传输控制方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102158408B (zh) * | 2011-04-01 | 2014-06-04 | 华为技术有限公司 | 数据流处理方法和装置 |
CN104901829B (zh) * | 2015-04-09 | 2018-06-22 | 清华大学 | 基于动作编码的路由数据转发行为一致性验证方法及装置 |
CN105704137A (zh) * | 2016-03-11 | 2016-06-22 | 北京邮电大学 | 一种VoIP中基于TCP传输语音的方法及系统 |
WO2017219216A1 (zh) * | 2016-06-20 | 2017-12-28 | 华为技术有限公司 | 一种数据传输方法、相关设备及系统 |
CN105933342A (zh) * | 2016-06-24 | 2016-09-07 | 浙江宇视科技有限公司 | 一种视频监控数据的传输方法及装置 |
-
2020
- 2020-02-14 CN CN202080083313.1A patent/CN114731334B/zh active Active
- 2020-02-14 WO PCT/CN2020/075305 patent/WO2021159478A1/zh active Application Filing
Patent Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1946054A (zh) * | 2006-09-30 | 2007-04-11 | 华为技术有限公司 | 一种高速数据流的传输方法、装置及数据交换设备 |
CN1996958A (zh) * | 2006-12-30 | 2007-07-11 | 华为技术有限公司 | 保证报文顺序的方法和装置 |
WO2009070994A1 (fr) * | 2007-11-30 | 2009-06-11 | Hangzhou H3C Technologies Co., Ltd. | Procédé et dispositif d'appariement de règle de messagerie |
WO2010022629A1 (zh) * | 2008-08-27 | 2010-03-04 | 华为技术有限公司 | 一种多链路协议分片数据的重组方法、装置及系统 |
CN101795236A (zh) * | 2010-03-31 | 2010-08-04 | 成都市华为赛门铁克科技有限公司 | 报文保序方法及装置 |
WO2011120467A2 (zh) * | 2011-05-09 | 2011-10-06 | 华为技术有限公司 | 报文保序处理方法、保序协处理器和网络设备 |
CN102546424A (zh) * | 2012-01-20 | 2012-07-04 | 华为技术有限公司 | 报文保序方法及装置 |
CN102710524A (zh) * | 2012-06-15 | 2012-10-03 | 大连梯耐德网络技术有限公司 | 一种多协议网络报文传输保序系统的实现方法 |
CN102868635A (zh) * | 2012-08-24 | 2013-01-09 | 汉柏科技有限公司 | 多核多线程的报文保序方法及系统 |
CN102891809A (zh) * | 2012-09-25 | 2013-01-23 | 汉柏科技有限公司 | 多核网络设备报文按接口保序方法及系统 |
CN104618253A (zh) * | 2015-01-22 | 2015-05-13 | 大唐移动通信设备有限公司 | 一种动态变更的传输报文处理方法和装置 |
CN107222427A (zh) * | 2016-03-22 | 2017-09-29 | 华为技术有限公司 | 一种报文处理的方法及相关设备 |
WO2017198108A1 (zh) * | 2016-05-19 | 2017-11-23 | 中兴通讯股份有限公司 | 一种处理分片报文的方法及装置 |
CN106713144A (zh) * | 2016-12-27 | 2017-05-24 | 锐捷网络股份有限公司 | 一种报文出口信息的读写方法及转发引擎 |
CN109428801A (zh) * | 2017-08-23 | 2019-03-05 | 北京华为数字技术有限公司 | 报文发送方法及装置 |
CN107769875A (zh) * | 2017-10-18 | 2018-03-06 | 北京华力创通科技股份有限公司 | 卫星通信的语音广播方法、装置和系统 |
WO2019128840A1 (zh) * | 2017-12-27 | 2019-07-04 | 华为技术有限公司 | 报文传输控制方法及装置 |
Non-Patent Citations (4)
Title |
---|
使用多级交换网络进行高性能路由器设计;管剑波等;《计算机研究与发展》;20050616(第06期);全文 * |
基于硬件的乱序报文重组算法;王圣等;《计算机工程》;20081120(第22期);全文 * |
无线网状网中自适应网络编码的MPTCP研究与设计;夏卓群等;《计算机科学》;20100415(第04期);全文 * |
通用变长协议数据描述及解析方法研究;张志祥等;《舰船电子工程》;20150520(第05期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114731334A (zh) | 2022-07-08 |
WO2021159478A1 (zh) | 2021-08-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114731334B (zh) | 报文保序方法和装置 | |
US7650429B2 (en) | Preventing aliasing of compressed keys across multiple hash tables | |
JP4799616B2 (ja) | ルータ及びルーティングネットワーク | |
CN107295036B (zh) | 一种数据发送方法及数据合并设备 | |
CN111698094A (zh) | 一种基于区块链系统的共识方法及区块链系统 | |
KR101314301B1 (ko) | 통신 네트워크에서 데이터를 인코딩하기 위한 방법 및 장치 | |
CN110944016A (zh) | DDoS攻击检测方法、装置、网络设备及存储介质 | |
CN104901829B (zh) | 基于动作编码的路由数据转发行为一致性验证方法及装置 | |
CN112561700A (zh) | 区块链中交易数据的存储方法、验证方法、及区块链系统 | |
US8320262B2 (en) | Bus system and method and device for transmitting communications on a bus system | |
EP4236254A1 (en) | Message processing method and device | |
CN113079105B (zh) | 数据传输方法、系统、计算机设备和介质 | |
CN107870925B (zh) | 一种字符串过滤方法和相关装置 | |
CN112188562B (zh) | 中继基站的多播调度方法和装置、存储介质及电子装置 | |
US11418449B2 (en) | Multipath coding apparatus and related techniques | |
CN110266781B (zh) | 一种基于哈希函数的网络节点随机选取方法 | |
CN107797764B (zh) | 确定路径的方法及其装置 | |
CN115904488A (zh) | 数据传输方法、系统、装置及设备 | |
CN113873023B (zh) | 领导节点选举方法、装置、设备和存储介质 | |
RU2820335C1 (ru) | Способ определения ошибки идентификации отправителя при передаче последовательности сообщений | |
CN111937353B (zh) | 操作网络参与者方法及网络参与者 | |
CN115297070B (zh) | 一种多元数据激励的arinc664交换机缓存溢出测试方法 | |
CN114448858B (zh) | 报文广播方法、装置、网络设备和存储介质 | |
CN112242966B (zh) | 数据转发方法和装置 | |
CN111277468B (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 |