一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

传输报文的方法及装置与流程

2022-11-30 08:19:19 来源:中国专利 TAG:


1.本技术涉及通信领域,尤其涉及传输报文的方法及装置。


背景技术:

2.随着网络带宽需求的持续增长,网络的规模急剧扩大。然而在网络中,业务的数据流在时间、空间上的分布却不均匀,这导致了可用带宽在时间、空间上的分布不合理,网络承载效率和数据传输效率较低,数据传输时延较大。例如,在图1a中,边缘节点(provider edge,pe)0的数据流a可以通过标签交换路径(label switched path,lsp)101发送到pe 3。pe 1的数据流b可以通过lsp 102发送到pe 3。pe 2的数据流c可以通过lsp 103、lsp 104或lsp 105发送到pe 3。在数据流a通过lsp 101发送到pe 3,数据流b通过lsp 102发送到pe 3,数据流c通过lsp 103发送到pe 3的情况下,会导致阻塞点a的负载过高,网络承载效率和数据传输效率降低,数据传输时延增加。又例如,在图1b中,若网络负载不高,则pe 4的数据流d可以通过lsp 106、lsp 107或lsp 108发送到pe 5。若网络负载比较高,无法支持数据流d发送的情况下,数据流d可能得等到网络负载降低后才能进行发送。例如,若当前数据流d需要的带宽是6g,而当前lsp 106的可用带宽是2g,lsp 107的可用带宽是3g,lsp 108的可用带宽是1g,则lsp 106、lsp 107和lsp 108都无法满足数据流d的带宽需求,所以数据流d要等到lsp 106、lsp 107和lsp 108中有至少一条lsp的可用带宽大于或等于6g时,才能发送。如此,会降低网络承载效率和数据传输效率,增加数据传输时延。
3.为了提高网络承载效率和网络传输效率,降低数据传输时延,提出了多径传输技术。通过多径传输技术,可以将包括数据流的数据的多个报文通过多条路径从发送端发送到接收端。例如,在图1a中,包括数据流c的数据的多个报文可以通过lsp 103,lsp 104和lsp 105中的多条路径发送到pe 3,以降低阻塞点a的负载。又例如,在图1b中,lsp 106、lsp 107和lsp 108加起来可以满足数据流d的带宽需求,所以包括数据流d的数据的多个报文可以通过lsp 106、lsp 107和lsp 108发送到pe 5。如此,数据流d不需要等待网络负载降低后再发送。
4.通过以上描述可以看出,多径传输技术可以提高网络承载效率和网络传输效率,降低数据传输时延。然而,多径传输技术也带来了新的问题:不同路径的传输时延不同,所以接收端接收报文的顺序与发送端发送报文的顺序不同,即接收端接收到的报文是乱序的。因此,接收端接收到报文后,需要对报文进行排序,以恢复数据流。但是,目前的报文排序方法要么需要较大的计算资源和存储资源,实现起来较为复杂,要么对网络的要求较高,可靠性低。


技术实现要素:

5.本技术提供传输报文的方法及装置,可以对报文进行排序,实现简单,可靠性高。
6.为达到上述目的,本技术的实施例采用如下技术方案:
7.第一方面,提供了一种传输报文的方法,执行该方法的通信装置可以为接收端;也
可以为应用于接收端中的模块,例如芯片或芯片系统。下面以执行主体为接收端为例进行描述。该方法包括:接收发送端通过第一路径发送的第一业务的第一报文,该第一报文携带第一发送时戳,该第一发送时戳对应于在该发送端的时域上,发送该第一报文的时间,该第一路径是传输该第一业务的报文至该接收端的多个路径中的一个;获得该第一业务的第一时延参数,该第一时延参数是根据该多个路径的第一最大传输时延确定的;根据该第一发送时戳和该第一时延参数获得第一预计读取时间;根据该第一预计读取时间读取该第一报文的数据。
8.基于上述第一方面提供的方法,接收端可以对接收到的报文进行整体排序,不区分业务,可以降低接收端的复杂度,减少计算资源和存储资源的消耗。而且对于任一业务,其报文也是保序的,不影响业务的功能。在排序的过程中,接收端是根据预计读取报文的数据的时间读取报文的数据,某一个业务的时戳异常不影响接收端读取其他业务的报文的数据,可靠性高。上述第一方面提供的方法也不需要引入老化时间,可以减小时延抖动。另外,上述第一方面提供的方法对传输网络没有特殊要求,在发送端和接收端部署即可,实现简单。
9.结合第一方面,在一种可能的实现方式中,根据该第一预计读取时间读取该第一报文的数据,包括:在按照时间排序的多个队列中,根据该第一预计读取时间将该第一报文入队;在已达到或者超过该第一预计读取时间、并且该多个队列指示轮到读取该第一报文的数据的情况下,读取该第一报文的数据。基于上述方法,因为多个队列是按照时间排序的,因此根据第一预计读取时间将第一报文入队后,接收端就实现了对接收到的报文的排序。后续,接收端在已达到或者超过该第一预计读取时间、并且该多个队列指示轮到读取该第一报文的数据的情况下,读取该第一报文的数据,可以实现按照报文的排序读取报文中的数据。
10.结合第一方面,在一种可能的实现方式中,该多个队列包括第一队列,根据该第一预计读取时间将该第一报文入队,包括:根据该第一预计读取时间与当前时间的差值,将该第一报文的信息输入该第一队列,该第一预计读取时间与当前时间的差值属于该第一队列对应的时间差值区间。基于上述方法,接收端可以根据第一预计读取时间与当前时间的差值,将第一报文入队,即实现了对接收到的报文的排序。
11.结合第一方面,在一种可能的实现方式中,若该第一队列中还存储了第二报文的信息,若该第一预计读取时间早于该第二报文的预计读取时间,则该第一报文的信息从该第一队列输出的时间,早于该第二报文的信息从该第一队列输出的时间;或者,若该第一预计读取时间晚于该第二报文的预计读取时间,则该第一报文的信息从该第一队列输出的时间,晚于该第二报文的信息从该第一队列输出的时间。基于上述方法,接收端可以根据第一预计读取时间和第二报文的预计读取时间确定第一报文和第二报文在第一队列中的位置,实现对第一队列中的报文排序。
12.结合第一方面,在一种可能的实现方式中,该第二报文为该发送端发送的除该第一报文之外的第一业务的其他报文,该发送端发送的其他业务的报文,或其他发送端发送的报文。基于上述方法,接收端可以对接收到的报文进行整体排序,不区分业务,也不区分发送端,可以降低接收端的复杂度,减少计算资源和存储资源的消耗。
13.结合第一方面,在一种可能的实现方式中,该方法还包括:若该第一预计读取时间
与当前时间的差值,小于该第一队列对应的时间差值区间的最小值,则将该第一报文的信息从该第一队列输出,输入到第二队列,该第二队列包括在该多个队列中,该第一预计读取时间与当前时间的差值属于该第二队列对应的时间差值区间。基于上述方法,多个队列在时域上是串联关系。随着时间的流逝,队列中的信息可以从一个队列输出,输入到另一个队列中。如此,接收端可以实现按照队列中的顺序读取报文的数据。
14.结合第一方面,在一种可能的实现方式中,该多个队列分为多组,该第一队列包括在第一组队列中,该第二队列包括在第二组队列中,该第一组队列中的队列对应的时间差值区间的长度,大于该第二组队列中的队列对应的时间差值区间的长度。基于上述方法,可以为不同组的队列配置不同的时间差值区间长度。如此,可以大量减少队列的数量,降低接收端维护队列的复杂度。
15.结合第一方面,在一种可能的实现方式中,根据该第一发送时戳和该第一时延参数获得第一预计读取时间,包括:将该第一发送时戳映射到该接收端的时域上以得到第二发送时戳;根据该第二发送时戳和该第一时延参数获得该第一预计读取时间。基于上述方法,在接收端和发送端在时域上不同步的情况下,接收端可以先进行发送端和接收端之间的时域映射,将接收端和发送端的时域统一起来,再在统一后的时域上获得第一预计读取时间。
16.结合第一方面,在一种可能的实现方式中,该方法还包括:获取第一参考时戳、第二参考时戳和第一时钟映射参数,该第一参考时戳为在该发送端的时域上、第一时刻对应的时间,该第二参考时戳为在该接收端的时域上、该第一时刻对应的时间;将该第一发送时戳映射到该接收端的时域上以得到第二发送时戳,包括:根据该第一发送时戳、该第一参考时戳、该第二参考时戳和该第一时钟映射参数,获得该第二发送时戳。基于上述方法,可以得到第二发送时戳,从而可以根据第二发送时戳和第一时延参数获得第一预计读取时间。
17.结合第一方面,在一种可能的实现方式中,第一时刻对应于该发送端通过该第一路径向该接收端发送该第一业务的第三报文的时间,该方法还包括:根据第一传输时延、第二传输时延和调整因子,调整该第一时钟映射参数,该第一传输时延为该第一报文从该发送端传输至该接收端的传输时延,该第二传输时延为该第三报文从该发送端传输至该接收端的传输时延。基于上述方法,可以调整第一时钟映射参数,使得发送端和接收端之间的时域映射更为准确。
18.结合第一方面,在一种可能的实现方式中,第一时延参数是根据该多个路径的第一最大传输时延确定的,包括:该第一时延参数是根据该多个路径的第一最大传输时延、和第一余量确定的,该第一余量为正数。基于上述方法,通过一个补偿值,即第一余量,尽量使得根据该补偿值补偿后的第一最大传输时延(即第一时延参数)大于或等于多个路径的最大传输时延。如此,可以避免多个路径的最大传输时延估计的较小而导致报文排序错误的情况出现。
19.结合第一方面,在一种可能的实现方式中,若该第一时延参数和该第一最大传输时延的差值大于第一阈值,并且持续第一时间,则调整该第一时延参数。基于上述方法,在第一时延参数和第一最大传输时延的差值大于第一阈值,并且持续第一时间的情况下,可以表示当前的第一时延参数是偏大的。在这种情况下,接收端可以调整第一时延参数,避免由于第一时延较大而引入的不必要的时延。
20.结合第一方面,在一种可能的实现方式中,该方法还包括:比较存储的第四发送时戳和该第一发送时戳的大小,其中,该第四发送时戳携带在第五报文中,该第五报文是在读取该第一报文之前最新被读取的该第一业务的报文;若该第四发送时戳大于该第一发送时戳,则调整该第一时延参数。基于上述方法,若第四发送时戳大于第一发送时戳,则表示第一报文排序错误。在这种情况下,表示当前的第一时延参数是偏小的,因此可以调整第一时延参数,使得第一时延参数更为准确。
21.结合第一方面,在一种可能的实现方式中,该方法还包括:接收该发送端发送的该第一业务的第四报文,该第四报文携带第三发送时戳,该第三发送时戳对应于在该发送端的时域上,发送该第四报文的时间;比较该第一发送时戳和该第三发送时戳的大小,确定该第一报文的排序是否正确;若该第一报文排序错误,则调整该第一时延参数。基于上述方法,在检测到第一报文排序错误的情况下,可以确定当前的第一时延参数是偏小的,因此可以调整第一时延参数,使得第一时延参数更为准确。
22.结合第一方面,在一种可能的实现方式中,该方法还包括:若该第一报文的排序错误,发送告警信息。基于上述方法,接收端可以发送告警信息,以便用户或管理员根据告警信息做进一步处理。
23.第二方面,提供了一种通信装置用于实现上述方法。该通信装置可以为上述第一方面中的接收端,或者包含上述接收端的装置。该通信装置包括实现上述方法相应的模块、单元、或手段(means),该模块、单元、或means可以通过硬件实现,软件实现,或者通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块或单元。
24.结合上述第二方面,在一种可能的实现方式中,该通信装置可以包括接收模块和处理模块。该接收模块,也可以称为接收单元,用以实现上述第一方面及其任一可能的实现方式中的接收功能。该接收模块可以由收发电路,收发机,收发器或者通信接口构成。该处理模块,可以用于实现上述第一方面及其任一可能的实现方式中的处理功能。该处理模块例如可以为处理器。
25.第三方面,提供了一种通信装置,包括:处理器;该处理器用于与存储器耦合,并读取存储器中的指令之后,根据该指令执行如上述第一方面及其任一可能的实现方式中所述的方法。该通信装置可以为上述第一方面及其任一可能的实现方式中的接收端,或者包含上述接收端的装置。
26.结合上述第三方面,在一种可能的实现方式中,该通信装置还包括存储器,该存储器,用于保存必要的程序指令和数据。
27.结合上述第三方面,在一种可能的实现方式中,该通信装置为芯片或芯片系统。可选的,该通信装置是芯片系统时,可以由芯片构成,也可以包含芯片和其他分立器件。
28.第四方面,提供了一种通信装置,包括:处理器和接口电路;接口电路,用于接收计算机程序或指令并传输至处理器;处理器用于执行所述计算机程序或指令,以使该通信装置执执行如上述第一方面及其任一可能的实现方式中所述的方法。
29.结合上述第四方面,在一种可能的实现方式中,该通信装置为芯片或芯片系统。可选的,该通信装置是芯片系统时,可以由芯片构成,也可以包含芯片和其他分立器件。
30.第五方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机可以执行上述第一方面及其任一可能的实现方式
中所述的方法。
31.第六方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机可以执行上述第一方面及其任一可能的实现方式中所述的方法。
32.第七方面,提供了一种传输报文的方法,该方法包括:发送端将第一发送时戳插入到第一业务的第一报文中;通过第一路径向接收端发送该第一报文,其中该第一发送时戳对应于在该发送端的时域上;发送该第一报文的时间,该第一路径是传输该第一业务的报文至该接收端的多个路径中的一个;接收端,执行上述第一方面及其任一可能的实现方式中所述的方法。
33.第八方面,提供了一种通信系统,该通信系统包括:发送端和接收端;该发送端,用于将第一发送时戳插入到第一业务的第一报文中,通过第一路径向接收端发送该第一报文,该第一发送时戳对应于在该发送端的时域上,发送该第一报文的时间,该第一路径是传输该第一业务的报文至该接收端的多个路径中的一个;该接收端,用于执行上述第一方面及其任一可能的实现方式中所述的方法。
34.其中,第二方面至第八方面中任一种可能的实现方式所带来的技术效果可参见上述第一方面及其任一种可能的实现方式所带来的技术效果,此处不再赘述。
附图说明
35.图1a为网络传输路径的示意图一;
36.图1b为网络传输路径的示意图二;
37.图2a为本技术实施例提供的网络传输路径的示意图;
38.图2b为本技术实施例提供的按照时戳对报文排序的示意图;
39.图3为本技术实施例提供的报文传输的示意图;
40.图4为本技术实施例提供的通信系统架构示意图;
41.图5为本技术实施例提供的通信装置的硬件结构示意图;
42.图6为本技术实施例提供的传输报文的方法的流程示意图;
43.图7a为本技术实施例提供的多个队列的示意图一;
44.图7b为本技术实施例提供的多个队列的示意图二;
45.图8为本技术实施例提供的接收端接收报文的示意图;
46.图9为本技术实施例提供的一种通信装置的结构示意图。
具体实施方式
47.下面结合附图对本技术实施例的实施方式进行详细描述。
48.为了解决多径传输带来的接收端接收到的报文是乱序的问题,发送端可以通过多种方法向接收端发送报文,使得接收端可以对接收到的报文进行排序,以恢复数据流。例如,发送端可以通过如下方法向接收端发送报文:
49.方法1:发送端可以在向接收端发送的报文中插入序列号(sequence number,sn)。该sn是以业务为粒度的,也就是说,每个业务都对应了一组sn。对于任一业务,sn是随着发送的报文数量的增加逐渐增大的。例如,对于任一业务,发送端发送的第一个报文插入的sn是1,第二个报文插入的sn是2,第三个报文插入的sn是3,以此类推。这些报文可以通过多个
传输路径发送到接收端。接收端接收到这些报文后,可以根据sn对报文排序。示例性的,接收端接收到这些报文后,可以以业务为粒度,将报文携带的sn与能够指示接收端的一块缓存地址的指针(pointer,ptr)做映射(不同业务对应的sn映射的ptr不同)。后续,不同业务对应的排序器需要持续检测该业务的当前ptr对应的报文是否收到,若收到,则读取当前指针对应的缓存地址中的报文,再继续检测下一个指针对应的报文是否收到。若没有收到,则接收端等待该报文。如此,接收端的排序器可以以业务为粒度,对接收到的报文进行排序。
50.方法2:发送端可以在向接收端发送的报文中插入发送时戳。该发送时戳为网络中的全局同步时戳。也就是说,网络中的各个节点,例如,发送端、接收端和发送端与接收端之间每条传输路径上的节点,是时间同步的。发送端发送报文后,接收端以及传输路径中的每个节点都根据报文携带的发送时戳对报文排序。
51.示例性的,如图2a所示,pe 0的数据流可以通过lsp 201、lsp 202和lsp 203从pe 0发送到pe 5。其中,lsp 201包括pe 1、pe 4和pe 5。lsp 202包括pe 2、pe 4和pe 5。lsp203包括pe 3、pe 4和pe 5。pe 0发送报文后,pe 1、pe 2、pe 3、pe 4和pe 5都要根据报文携带的发送时戳对接收到的报文排序。以pe 4为例,pe 4接收到来自pe 1、pe 2和pe3的报文后,可以根据发送时戳对接收到的报文排序,再将排序后的报文按照顺序发送给pe5。例如,如图2b所示,pe 4可以为来自pe 1、pe 2和pe 3的报文分别建立队列。其中,队列1为pe 4为来自pe 1的报文建立的队列。队列2为pe 4为来自pe 2的报文建立的队列。队列3为pe 4为来自pe 3的报文建立的队列。因为pe 1、pe 2和pe 3之前都对各自接收到的报文进行了排序,所以pe 1、pe 2和pe 3发送的报文是保序的。在这种情况下,pe 4可以比较每个队列当前输出的报文携带的发送时戳的大小,先读取发送时戳较小的报文,如此可以实现对报文的排序。
52.方法3:发送端可以通过第一路径向接收端发送第一业务的第一报文,第一报文携带了第一发送时戳。接收端通过第一路径接收到第一报文后,可以根据多个路径的第一最大传输时延确定第一时延参数,根据第一时延参数和第一发送时戳获得第一预计读取时间,并根据第一预计读取时间读取第一报文的数据。该方法将在下述图6所示的实施例中进行具体阐述,在此不做赘述。
53.为了便于理解下述图6所示实施例中所述的传输报文的方法,先对该方法的原理进行说明。
54.如前文所述,报文在不同路径中的传输时延不同,所以接收端接收到的报文是乱序的。那么,接收端接收到报文后,可以获取不同路径中的最大传输时延,根据发送时戳和最大传输时延获得报文的预计读取时间,再根据这个时间读取报文。如此,接收端读取报文的顺序与发送端发送报文的顺序是一致的,即接收端读取的报文是保序的。
55.以图2a所示的网络为例,如图3所示,pe 0通过lsp 201向pe 5发送了报文1,报文1携带的发送时戳为t1时刻。之后,pe 0通过lsp 202向pe 5发送了报文2,报文2携带的发送时戳为t2时刻。之后,pe 0通过lsp 203向pe 5发送了报文3,报文3携带的发送时戳为t3时刻。其中,t1=2纳秒(ns),t2=4ns,t3=6ns。若pe 5在t4时刻接收到了报文2,在t5时刻接收到了报文3,在t6时刻接收到了报文1,其中,t4=5ns,t5=7ns,t6=8ns,则报文1的传输时延为t6-t1=6ns,报文2的传输时延为t4-t2=1ns,报文3的传输时延为t5-t3=1ns。由此可以看出,lsp 201、lsp 202和lsp 203中,lsp 201的传输时延最大。接收端可以将报文的
发送时戳与多个路径中的最大传输时延之和,作为报文的预计读取时间。例如,报文1的预计读取时间t6=t1 6=8ns,报文2的预计读取时间t7=t2 6=10ns,报文3的预计读取时间t8=t3 6=12ns。如此,接收端根据预计读取时间读取的报文是保序的。接收端读取的报文在时间轴上的相对位置关系,和发送端发送的报文在时间轴上的相对位置关系相比,没有发生改变,是在时间轴上延时平移。
56.与方法1相比,图6所示的方法不要求以业务为粒度对报文进行排序,而是可以对接收到的报文整体排序,不区分业务。因此,图6所示的方法不需要为每个业务准备对应的排序器,也即是图6所示的方法中,为实现对报文的排序,不需要调度多个排序器,可以降低接收端的复杂度,还可以减少计算资源和存储资源的消耗。另外,接收端根据报文的预计读取时间读取报文即可,不需要引入老化时间(即收端等待报文的时间),可以减小时延抖动。
57.与方法2相比,图6所示的方法不要求网络中的各个节点时间同步,也不要求传输路径中的节点都要对报文排序。在图6所示的方法中,接收端对接收到报文进行排序即可,对网络要求不高,实现简单。
58.如图4所示,为本技术实施例提供的通信系统40的架构示意图。图4中,通信系统40可以包括发送端401、接收端402和网络403。发送端401和接收端402可以通过网络403通信。例如,发送端401发送的报文可以通过网络403中的多条路径到达接收端402。
59.图4中的发送端401或接收端402可以是计算机,或具有收发功能的设备。例如,发送端401或接收端402可以为便携式计算机(如手机)、笔记本电脑、个人计算机(personal computer,pc)、可穿戴电子设备(如智能手表)、平板电脑等。发送端401或接收端402还可以是一种能够提供计算,或应用等服务的设备。可以理解的,发送端401或接收端402还可以称为终端设备、用户端、客户端、用户设备、移动站、移动台或服务器等。
60.图4中的网络403也可以称为传输网络,可以用于传输发送端401和接收端402之间的数据。示例性的,网络403中包括多条路径,其中的任一条路径可以用于将发送端401发送的数据传输到接收端402。其中的任一条路径可以包括至少一个节点,该节点可以转发数据发送端401发送的数据,使得发送端401发送的数据可以到达接收端402。
61.图4所示的通信系统40仅用于举例,并非用于限制本技术的技术方案。本领域的技术人员应当明白,在具体实现过程中,通信系统40还可以包括其他设备,同时也可根据具体需要来确定发送端和接收端的数量,不予限制。例如,通信系统还可以包括发送端404。发送端404可以通过网络403与接收端402通信。
62.可选的,本技术实施例图4中的各设备(例如接收端402等)也可以称之为通信装置,其可以是一个通用设备或者是一个专用设备,本技术实施例对此不作具体限定。
63.可选的,本技术实施例图4中的各设备(例如接收端402)的相关功能可以由一个设备实现,也可以由多个设备共同实现,还可以是由一个设备内的一个或多个功能模块实现,本技术实施例对此不作具体限定。可以理解的是,上述功能既可以是硬件设备中的网络元件,也可以是在专用硬件上运行的软件功能,或者硬件与软件的结合,或者平台(例如,云平台)上实例化的虚拟化功能。
64.在具体实现时,图4所示的各设备都可以采用图5所示的组成结构,或者包括图5所示的部件。图5所示为可适用于本技术实施例的通信装置的硬件结构示意图。该通信装置50包括至少一个处理器501和至少一个通信接口504,用于实现本技术实施例提供的方法。该
通信装置50还可以包括通信线路502和存储器503。
65.处理器501可以是一个通用中央处理器(central processing unit,cpu),微处理器,特定应用集成电路(application-specific integrated circuit,asic),或一个或多个用于控制本技术方案程序执行的集成电路。
66.通信线路502可包括一通路,在上述组件之间传送信息,例如总线。
67.通信接口504,用于与其他设备或通信网络通信。通信接口504可以是任何收发器一类的装置,如可以是以太网接口、无线接入网(radio access network,ran)接口、无线局域网(wireless local area networks,wlan)接口、收发器、管脚、总线、或收发电路等。
68.存储器503可以是只读存储器(read-only memory,rom)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,ram)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,eeprom)、只读光盘(compact disc read-only memory,cd-rom)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过通信线路502与处理器501相耦合。存储器503也可以和处理器501集成在一起。本技术实施例提供的存储器通常可以具有非易失性。其中,存储器503用于存储执行本技术实施例提供的方案所涉及的计算机执行指令,并由处理器501来控制执行。处理器501用于执行存储器503中存储的计算机执行指令,从而实现本技术实施例提供的方法。
69.本技术实施例中的计算机执行指令也可以称之为应用程序代码,本技术实施例对此不作具体限定。
70.本技术实施例中的耦合是装置、单元或模块之间的间接耦合或通信连接,可以是电性,机械或其它的形式,用于装置、单元或模块之间的信息交互。
71.作为一种实施例,处理器501可以包括一个或多个cpu,例如图5中的cpu0和cpu1。
72.作为一种实施例,通信装置50可以包括多个处理器,例如图5中的处理器501和处理器507。这些处理器中的每一个可以是一个单核(single-cpu)处理器,也可以是一个多核(multi-cpu)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
73.作为一种实施例,通信装置50还可以包括输出设备505和/或输入设备506。输出设备505和处理器501耦合,可以以多种方式来显示信息。例如,输出设备505可以是液晶显示器(liquid crystal display,lcd),发光二级管(light emitting diode,led)显示设备,阴极射线管(cathode ray tube,crt)显示设备,或投影仪(projector)等。输入设备506和处理器501耦合,可以以多种方式接收用户的输入。例如,输入设备506可以是鼠标、键盘、触摸屏设备或传感设备等。
74.可以理解的,图5中示出的组成结构并不构成对该通信装置的限定,除图5所示部件之外,该通信装置可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
75.下面以图4所示架构为例,对本技术实施例提供的传输报文的方法进行描述。下述
实施例中的各设备可以具备图5所示部件,不予赘述。
76.需要说明的是,本技术实施例中,传输可以根据具体的上下文理解为发送和/或接收。传输可以是名词,也可以是动词。在不强调动作的执行主体时,常常用传输代替发送和/或接收。例如,短语传输报文,从发送端的角度来看,可以理解为发送报文,而从接收端的角度来看,可以理解为接收报文。
77.需要说明的是,本技术下述实施例中各个设备之间的消息名字或消息中各参数的名字等只是一个示例,具体实现中也可以是其他的名字,本技术实施例对此不作具体限定。
78.为了便于描述本技术实施例的技术方案,在本技术实施例中,可以采用“第一”、“第二”等字样对功能相同或相似的技术特征进行区分。该“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。在本技术实施例中,“示例性的”或者“例如”等词用于表示例子、例证或说明,被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念,便于理解。
79.需要说明的是,在本技术实施例中,对于一种技术特征,通过“第一”、“第二”、“第三”、“a”、“b”、“c”和“d”等区分该种技术特征中的技术特征,该“第一”、“第二”、“第三”、“a”、“b”、“c”和“d”描述的技术特征间无先后顺序或者大小顺序。
80.可以理解的,本技术实施例中同一个步骤或者具有相同功能的步骤或者技术特征在不同实施例之间可以互相参考借鉴。
81.可以理解的,本技术实施例中,接收端可以执行本技术实施例中的部分或全部步骤,这些步骤仅是示例,本技术实施例还可以执行其它步骤或者各种步骤的变形。此外,各个步骤可以按照本技术实施例呈现的不同的顺序来执行,并且有可能并非要执行本技术实施例中的全部步骤。
82.在本技术实施例中,不限定传输报文的方法的执行主体的具体结构,只要能够实现本技术实施例的提供的方法即可。例如,本技术实施例提供的传输报文的方法的执行主体可以是接收端,或者为应用于接收端中的部件,例如,芯片系统,本技术对此不进行限定。本技术实施例中,芯片系统可以由芯片构成,也可以包括芯片和其他分立器件。下述实施例以传输报文的方法的执行主体为接收端为例进行描述。
83.如图6所示,为本技术实施例提供的一种传输报文的方法,该传输报文的方法包括s601-s604。
84.s601:发送端通过第一路径向接收端发送第一业务的第一报文。相应的,接收端接收发送端通过第一路径发送的第一业务的第一报文。
85.其中,发送端可以是图4中的发送端401。接收端可以是图4中的接收端402。第一路径是传输第一业务的报文至接收端的多个路径中的一个。第一业务为发送端的多个业务中的一个。
86.本技术实施例中,第一报文携带第一发送时戳和第一报文的数据。其中,第一发送时戳对应于在发送端的时域上,发送第一报文的时间,或者说,第一发送时戳用于表示在发送端的时域上,发送第一报文的时间。例如,发送端在生成第一报文时,将生成第一报文的时间作为第一发送时戳,以表示在发送端的时域上,发送第一报文的时间。
87.可以理解的,发送端在第一业务的报文中插入的发送时戳的精度能够满足以下要
求:相邻两个报文的发送时戳不重复,并且满足时间递增关系。另外,该发送时戳的精度还可以满足:不影响发送报文的数据的最大带宽。以通过二进制芯片实现为例,发送时戳的精度可以为1/(2^n)ns,例如1/8ns。发送时戳的位宽可以满足记录网络最大时延不翻转需求,比如最大支持1秒(s)时延。
88.s602:接收端获得第一业务的第一时延参数。
89.一种可能的实现方式,第一时延参数是根据发送端和接收端之间的多个路径的第一最大传输时延确定的。其中,发送端和接收端之间的多个路径可以包括发送端和接收端之间的全部路径,也可以包括发送端与接收端之间的部分路径。若发送端和接收端之间的多个路径包括发送端与接收端之间的部分路径,则该部分路径包括传输第一业务的报文至接收端的多个路径。
90.示例性的,若发送端和接收端之间的全部路径包括路径1-路径5,其中,路径1-路径3用于传输第一业务的报文,则发送端和接收端之间的多个路径可以包括路径1-路径3,或者包括路径1-路径4,或者包括路径1-路径5,或者包括路径1-路径3以及路径5。
91.示例性的,第一时延参数是根据第一最大传输时延和第一余量确定的。例如,第一时延参数是第一最大传输时延和第一余量之和;或者,第一时延参数是第一最大传输时延和第一余量之积。其中,第一余量也可以称为安全补偿值、补偿值等,不予限制。第一余量为正数。第一余量可以是用户设置的、也可以是默认缺省值。在具体应用中,用户可以根据具体情况修改第一余量。
92.本技术实施例中,第一最大传输时延是一个估计值,用于表示发送端和接收端之间的多个路径的最大传输时延。示例性的,接收端可以通过至少下述两种方式获得第一最大传输时延。
93.方式1:接收端根据历史上多个路径的传输时延,获得第一最大传输时延。
94.一种可能的实现方式,接收端将一段时间内、发送端与接收端之间的多个路径的传输时延的最大值确定为第一最大传输时延。例如,接收端将1个月内、发送端与接收端之间的多个路径的传输时延的最大值确定为第一最大传输时延。在方式1中,第一最大传输时延为一个固定值。除非重新设置,通常第一最大传输时延不变。
95.方式2:接收端以业务为粒度,按周期统计,以得到第一最大传输时延。
96.一种可能的实现方式,在一个周期内,接收端统计第一业务的报文在发送端与接收端之间的多个路径的传输时延,将当前统计出的多个路径的最大传输时延确定为第一最大传输时延。对于方式2,第一最大传输时延是一个变化的值,其随着统计结果可能会发生改变。即,接收端可以动态调整第一最大传输时延,或者说,接收端可以实时统计第一最大传输时延。
97.示例性的,接收端在周期开始时接收到第一业务的报文1,报文1的传输时延为2ns,则接收端确定第一最大传输时延为2ns。接收端接收到报文1后,又接收到第一业务的报文2,报文2的传输时延为1ns,则接收端确定第一最大传输时延为2ns。接收端接收到报文2后,又接收到第一业务的报文3,报文3的传输时延为3ns,则接收端确定第一最大传输时延为3ns。
98.对于方式2,接收端得到第一最大传输时延的伪代码可以如下所示:
[0099][0100]
其中,tr为接收端接收到第一报文的时间,tsr对应于在接收端的时域上,发送端发送第一报文的时间,td为第一报文的传输时延,tdamx为第一最大传输时延。上述伪代码描述了以下过程:1、计算第一报文的传输时延;2、若第一报文的传输时延大于最新的第一最大传输时延,则将第一报文的传输时延确定为第一最大传输时延;3、统计周期结束后,将第一最大传输时延设置为0。
[0101]
可以理解的,第一最大传输时延是一个估计值,可能会出现估计不准确的情况。为了避免多个路径的最大传输时延估计的较小而导致报文排序错误的情况出现,可以设置一个补偿值(即第一余量),以尽量使得根据该补偿值补偿后的第一最大传输时延(即第一时延参数)大于或等于多个路径的最大传输时延。
[0102]
一种可能的实现方式,若第一时延参数和第一最大传输时延的差值大于第一阈值,并且持续第一时间,则表示当前的第一时延参数是偏大的。在这种情况下,接收端可以调整第一时延参数。例如,接收端可以多次小步回调第一时延参数。每次回调的值可以小于发送端发送报文的最小时间间隔,以避免由于回调导致的报文乱序。
[0103]
一种可能的实现方式,s604之后,接收端还可以检测第一报文的排序是否正确。若接收端检测到第一报文排序错误,则表示当前的第一时延参数是偏小的。在这种情况下,接收端可以调整第一时延参数。例如,接收端可以将第一时延参数增加第二余量。接收端检测第一报文的排序是否正确的过程将在s604之后介绍,在此不做赘述。
[0104]
综上所述,接收端对第一时延参数的动态调整的伪代码可以如下所示:
[0105][0106][0107]
其中,tc为第一时延参数,tgd为第一余量,tfb为第二余量,tb为每次回调的值。回调条件为如果tc-tdmax》tgd,且持续满足x毫秒(ms)时间。可以理解的,上述tc=tc tfb是代码的表述方式,用于表示对tc进行调整。第一个tc为调整后的第一时延参数,第二个tc为调整前的第一时延参数。类似的,上述tc=tc

tb也是代码的表述方式,用于表示对tc进行调整。第一个tc为调整后的第一时延参数,第二个tc为调整前的第一时延参数。上述伪代码
描述了以下过程:若tc《(tdmax tgd),则将tdmax tgd确定为第一时延参数;或者,若接收端检测到第一报文排序错误,则将tc tfb确定为第一时延参数;或者,若满足回调条件,则将tc

tb确定为第一时延参数。
[0108]
s603:接收端根据第一发送时戳和第一时延参数获得第一预计读取时间。
[0109]
其中,第一预计读取时间可以为接收端预计读取第一报文的时间。
[0110]
本技术实施例中,接收端和发送端在时域上可以同步也可以不同步。若接收端和发送端在时域上同步,则接收端可以将第一发送时戳和第一时延参数相加得到第一预计读取时间。若接收端和发送端在时域上不同步,则接收端可以先进行发送端和接收端之间的时域映射,将接收端和发送端的时域统一起来,再在统一后的时域上获得第一预计读取时间。具体地,接收端可以将第一发送时戳映射到接收端的时域上以得到第二发送时戳,根据第二发送时戳和第一时延参数得到第一预计读取时间。其中,第二发送时戳对应于在接收端的时域上,发送端发送第一报文的时间,或者说,第二发送时戳用于表示在接收端的时域上,发送端发送第一报文的时间。
[0111]
时域映射的具体方法如下:接收端根据第一发送时戳、第一参考时戳、第二参考时戳和第一时钟映射参数获得第二发送时戳。其中,第一参考时戳为在发送端的时域上、第一时刻对应的时间。第二参考时戳为在接收端的时域上、第一时刻对应的时间。
[0112]
示例性的,计算方式如下:t
sr1
=t
sr0
k
sr0
*(t
s1-t
s0
),或者,t
sr1
=t
sr0
k
sr0
*(t
s1-t
s0
) c。其中,t
sr1
为第二发送时戳,t
sr0
为第二参考时戳,k
sr0
为第一时钟映射参数,t
s1
为第一发送时戳,t
s0
为第一参考时戳,c为调整参数。
[0113]
对于接收端和发送端在时域上不同步的情况,在s603之前,接收端可以获取第一参考时戳、第二参考时戳和第一时钟映射参数,接收端还可以进一步获得第二发送时戳,本技术不做限定。
[0114]
本技术实施例中,若第一报文为接收端接收到的来自发送端的第一个报文,则第一参考时戳、第二参考时戳和第一时钟映射参数可以是一个初始化的值。该初始化的值可以是用户或接收端配置的。例如,若第一报文为接收端接收到的来自发送端的第一个报文,则第一参考时戳和第二参考时戳为0,第一时钟映射参数为1。若第一报文不是接收端接收到的来自发送端的第一个报文,则第一参考时戳可以对应于在发送端的时域上,发送端在发送第一报文之前发送的报文的发送时间,第二参考时戳可以为将第一参考时戳映射到接收端的时域上得到的时戳,第一时钟映射参数可以为将初始化的时钟映射参数进行至少一次动态调整后的参数。接收端每次动态调整时钟映射参数的过程,可以参考下述接收端调整第一时钟映射参数,得到第二时钟映射参数的介绍,在此不做赘述。
[0115]
可以理解的,为了使得发送端和接收端之间的时域映射更为准确,接收端可以在得到第二发送时戳后,调整第一时钟映射参数,以得到第二时钟映射参数。后续,接收端可以根据第二时钟映射参数在发送端和接收端之间做时域映射。
[0116]
一种可能的实现方式,s603之后,接收端根据第一传输时延、第二传输时延和调整因子,调整第一时钟映射参数,以得到第二时钟映射参数。在这种情况下,第一时刻对应于发送端通过第一路径向接收端发送第一业务的第三报文的时间。第一传输时延为第一报文从发送端传输至接收端的传输时延,第二传输时延为第三报文从发送端传输至接收端的传输时延。
[0117]
示例性的,第二时钟映射参数满足公式:k
sr1
=k
sr0
kc*t
dc1
。其中,k
sr1
为第二时钟映射参数,k
sr0
为第一时钟映射参数,kc为调整因子,t
dc1
满足公式:t
dc1
=(t
r1-t
sr1
)-(t
r0-t
sr0
)。其中,t
r1
为接收端接收到第一报文的时间,t
sr1
为第二发送时戳,t
r0
为接收端接收到第三报文的时间,t
sr0
为第二参考时戳。本技术实施例中,如果时钟跟踪范围《150ppm,则kc可以设为kc=150/(10^6*1000)。
[0118]
综上所述,发送端和接收端之间进行时域映射的伪代码可以如下所示:
[0119][0120]
其中,tsn为第一参考时戳,tsrn为第二参考时戳,krs为时钟映射参数,tsr为第二发送时戳,ts为第一发送时戳,td为第一传输时延,tdn为第二传输时延,kc为调整因子。可以理解的,上述krs=krs kc*tdc是代码的表述方式,用于表示对krs进行调整。第一个krs为调整后的时钟映射参数,第二个krs为调整前的时钟映射参数。类似的,上述tsrn=tsrn td也是代码的表述方式,用于表示对tsrn进行调整。第一个tsrn为调整后的第二参考时戳,第二个tsrn为调整前的第二参考时戳。上述伪代码描述了以下过程:tsn和tsrn的初始化值为0,krs的初始化值为1;接收端接收到一个新的报文(例如,第一报文)后,可以根据公式tsr=tsrn krs*(ts-tsn)得到第二发送时戳,并计算td和tdc;若ts比tsn得到的晚,则令tsrn=tsr,tsn=ts,krs=krs kc*tdc,tdn=td;td表示传输时延,正常情况下应该为正值,若通过上述方法得到的td《0,则接收端可以调整tsrn,使得td》0。例如,接收端可以令tsrn=tsrn td。
[0121]
通过上述描述可知,接收端可以将krs的初始值设置为1,后续通过tdc动态调整krs,使得krs趋于稳定。例如,使得krs最终限幅在正负150ppm范围内。
[0122]
可以理解的,若krs准确,则tdc将趋近于0。因此,若tdc逐渐增大,则表示krs小了,
可以适当增大krs;若tdc逐渐变小,则表示krs大了,可以适当减小krs。通过动态调整调整krs,可以得到较为准确的krs。
[0123]
一种可能的实现方式,若第一预计读取时间小于当前时间,则表示读取第一报文的时间已经过了,接收端可以丢弃第一报文。
[0124]
一种可能的实现方式,若第一预计读取时间与当前时间之差大于第一时间长度,则接收端丢弃第一报文。其中,第一时间长度为接收端能够支持的报文乱序时间,或者说,接收端能够对第一时间长度内发送的报文进行排序。例如,若第一时间长度为6ms,当前时间为1ms,则接收端可以对预计读取时间为1ms-7ms的报文进行排序。若第一预计读取时间为8ms,则超出了接收端的排序能力。在这种情况下,接收端丢弃第一报文,或者,接收端也可以将第一报文缓存,等到当前时间为2ms时,再对第一报文排序。
[0125]
s604:接收端根据第一预计读取时间读取第一报文的数据。
[0126]
一种可能的实现方式,接收端根据第一预计读取时间读取第一报文的数据,包括:在按照时间排序的多个队列中,接收端根据第一预计读取时间将第一报文入队;在已达到或者超过第一预计读取时间、并且多个队列指示轮到读取第一报文的数据的情况下,读取第一报文的数据。
[0127]
首先,对多个队列进行具体阐述。
[0128]
本技术实施例中,多个队列中的每个队列对应一个时间差值区间,多个队列根据时间差值区间排序。以3个队列为例,若队列1对应的时间差值区间为[0ns,0.5ns],队列2对应的时间差值区间为(0.5ns,1ns],队列3对应的时间差值区间为(1ns,1.5ns],则接收端读取报文时,可以先读取队列1中的报文,再读取队列2中的报文,最后读取队列3中的报文。如此,接收端将接收到的报文入队后,即实现了对接收到的报文排序。后续,接收端可以按照队列输出报文的顺序读取报文的数据。可以理解的,队列对应的时间差值区间为接收端配置的,或用户配置的。时间差值区间配置后还可以修改。
[0129]
本技术实施例中,队列对应的时间差值区间可以用于接收端将接收到的报文入队。示例性的,接收端获取到报文的预计读取时间后,可以获取该预计读取时间与当前时间的差值,将该报文的数据输入到该差值所在的时间差值区间对应的队列中。其中,该差值所在的时间差值区间可以理解为:该差值大于或等于差值所在的时间差值区间的最小值,并且该差值小于或等于该差值所在的时间差值区间的最大值。
[0130]
一种可能的实现方式,接收端根据第一预计读取时间将第一报文入队,包括:接收端根据第一预计读取时间与当前时间的差值,将第一报文的信息输入第一队列。其中,第一报文的信息可以包括与第一报文相关的信息。例如,第一报文的信息包括第一报文;或者,第一报文的信息包括第一报文在接收端的存储地址;或者,第一报文的信息包括第一报文在接收端的存储地址和第一发送时戳。第一报文的信息还可以称为第一报文的报文描述符。可以理解的,若第一报文的信息包括第一报文,则接收端从队列中读取第一报文的数据;若第一报文的信息包括第一报文在接收端的存储地址,则接收端从该存储地址中读取第一报文的数据。多个队列包括第一队列,第一预计读取时间与当前时间的差值属于第一队列对应的时间差值区间。
[0131]
示例性的,接收端的多个队列可以如图7a所示。图7a中,多个队列包括队列701,队列702,队列703
……
,其中,队列701对应的时间差值区间为[0ns,1ns],队列702对应的时间
差值区间为(1ns,2ns],队列703对应的时间差值区间为(2ns,3ns]。若第一预计读取时间与当前时间的差值为1ns,则第一队列为队列701;若第一预计读取时间与当前时间的差值为1.5ns,则第一队列为队列702;第一预计读取时间与当前时间的差值为2.5ns,则第一队列为队列703。
[0132]
一种可能的实现方式,若第一队列中还存储了第二报文的信息,则接收端根据第一预计读取时间和第二报文的预计读取时间确定第一报文和第二报文在第一队列中的位置。示例性的,若第一预计读取时间早于第二报文的预计读取时间,则第一报文的信息从第一队列输出的时间,早于第二报文的信息从第一队列输出的时间;或者,若第一预计读取时间晚于第二报文的预计读取时间,则第一报文的信息从第一队列输出的时间,晚于第二报文的信息从第一队列输出的时间。
[0133]
本技术实施例中,第二报文可以为发送端发送的除第一报文之外的第一业务的其他报文,发送端发送的其他业务的报文,或其他发送端发送的报文。
[0134]
可以理解的,本技术实施例中,接收端对报文的排序不要求以业务为粒度的,可以对接收到的报文整体排序,不区分业务。如此可以降低接收端的复杂度,而且对于任一业务,其报文也是保序的,不影响业务的功能。另外,接收端是否读取报文是与该报文的预计读取时间和该报文是否位于队列的输出端口有关,不受其他条件的限制。因此,某一个业务的时戳异常不影响接收端读取其他业务的报文,可靠性高。
[0135]
应理解,本技术实施例中,接收端也可以以业务为粒度对接收到的报文进行排序,不予限制。
[0136]
本技术实施例中,多个队列在时域上是串联关系,也就是说,队列中的信息,随着时间的流逝可以从一个队列输出,输入到另一个队列中。
[0137]
一种可能的实现方式,若第一预计读取时间与当前时间的差值,小于第一队列对应的时间差值区间的最小值,则接收端将第一报文的信息从第一队列输出,输入到第二队列。其中,第二队列包括在多个队列中,第一预计读取时间与当前时间的差值属于第二队列对应的时间差值区间。可以理解的,第二队列对应的时间差值区间中的数值,小于第一队列对应的时间差值区间中的数值,或者说,相对于第一队列中报文的预计读取时间,第二队列中报文的预计读取时间与当前时间更接近。
[0138]
示例性的,以图7a所示的队列为例,队列701、队列702和队列703在时域上是串联关系。若当前时间为时刻1,第一预计读取时间与时刻1的差值为2.5ns,则接收端将第一报文的信息输入2.5ns所在的时间差值区间对应的队列703中。过了一段时间,当前时间变成了时刻2,第一预计读取时间与时刻2的差值为2ns,2ns小于队列703对应的时间差值区间的最小值,则接收端将第一报文的信息从队列703输出,输入到2ns所在的时间差值区间对应的队列702中。又过了一段时间,当前时间变成了时刻3,第一预计读取时间与时刻3的差值为1ns,1ns小于队列702对应的时间差值区间的最小值,则接收端将第一报文的信息从队列702输出,输入到1ns所在的时间差值区间对应的队列701中。
[0139]
一种可能的实现方式,多个队列分为多组,每组包括至少一个队列,不同组中的队列对应的时间差值区间的长度不同。其中,时间差值区间的长度可以为时间差值区间的最大值与时间差值区间的最小值之差。以图7a中的队列701为例,队列701对应的时间差值区间为[0ns,1ns],则队列701对应的时间差值区间的长度为1ns-0ns=1ns。
[0140]
示例性的,以上述第一队列和第二队列为例,若第一队列包括在第一组队列中,第二队列包括在第二组队列中,则第一组队列中的队列对应的时间差值区间的长度,大于第二组队列中的队列对应的时间差值区间的长度。可以理解的,多个队列中,队列对应的时间差值区间的长度的最小值小于发送端发送报文的最小时间间隔。
[0141]
如图7b所示,为多个队列的示意图。图7b中,多个队列被分为了4组。队列组1中的队列对应的时间差值区间的长度为1/8ns,队列组2中的队列对应的时间差值区间的长度为16ns,队列组3中的队列对应的时间差值区间的长度为1微秒(us),队列组4中的队列对应的时间差值区间的长度为64us。第一组队列可以为队列组2,第二组队列可以为队列组1;或者,第一组队列可以为队列组3,第二组队列可以为队列组2;第一组队列可以为队列组4,第二组队列可以为队列组3。
[0142]
可以理解的,为不同组的队列配置不同的时间差值区间长度,可以大量减少队列的数量,降低接收端维护队列的复杂度。示例性的,以第一时间长度(即接收端能够支持的报文乱序时间,也是多个队列对应的时间差值区间的长度之和)为8ms为例,若每个队列对应的时间差值区间长度相同,都为1ns,则接收端需要维护8000000个队列。若不同组中的队列对应的时间差值区间的长度不同,例如,多个队列被分为了4组,第一组队列中的队列对应的时间差值区间的长度为1/8ns,第二组队列中的队列对应的时间差值区间的长度为16ns,第三组队列中的队列对应的时间差值区间的长度为1us,第四组队列中的队列对应的时间差值区间的长度为64us,则在每组包括128个队列的情况下,即可使得多个队列对应的时间差值区间的长度之和大于8ms。在这种情况下,接收端需要维护512个队列,大大降低了接收端的复杂度。
[0143]
一种可能的实现方式,对于不同组中的队列对应的时间差值区间的长度不同的情况,若第一队列对应的时间差值区间的长度大于第二时间长度,则接收端在将第一报文的信息输入第一队列时,可以不确定第一报文的信息在第一队列中的位置,以降低接收端的计算开销。若第一队列对应的时间差值区间的长度小于或等于第二时间长度,则接收端在将第一报文的信息输入第一队列时,可以根据第一预计读取时间确定第一报文的信息在第一队列中的位置。类似的,若第二队列对应的时间差值区间的长度大于第二时间长度,则接收端在将第一报文的信息输入第二队列时,可以不确定第一报文的信息在第二队列中的位置,以降低接收端的计算开销。若第二队列对应的时间差值区间的长度小于或等于第二时间长度,则接收端在将第一报文的信息输入第二队列时,可以根据第一预计读取时间确定第一报文的信息在第二队列中的位置。
[0144]
一种可能的实现方式,s604之后,接收端检测第一报文的排序是否正确。
[0145]
作为一种示例,接收端接收发送端发送的第一业务的第四报文,其中,第四报文携带第三发送时戳,第三发送时戳对应于在发送端的时域上,发送所述第四报文的时间。接收端可以比较第一发送时戳和第三发送时戳的大小,以确定第一报文的排序是否正确。例如,在第四报文是在读取第一报文之前最新被读取的的情况下,第三发送时戳应该小于第一发送时戳。若比较结果为第三发送时戳大于第一发送时戳,则可以表示第一报文的排序错误。在第四报文是在读取第一报文之后最新被读取的的情况下,第三发送时戳应该大于第一发送时戳。若比较结果为第三发送时戳小于第一发送时戳,则可以表示第一报文的排序错误。
[0146]
一种可能的实现方式,若第一报文的排序错误,接收端调整第一时延参数。例如,
接收端可以将第一时延参数增加第二余量,第二余量为正数,第二余量可以为第三发送时戳和第一发送时戳之差。
[0147]
一种可能的实现方式,若第一报文的排序错误,接收端发送告警信息。例如,若第一报文的排序错误,则接收端在接收端的人机交互界面上显示告警信息,以便用户根据告警信息调整相关参数。或者,若第一报文的排序错误,则接收端向服务器发送告警信息,以便管理员根据告警信息进行相关处理。
[0148]
可以理解的,上述s601-s604是基于接收端接收到的一个报文进行描述的。接收端对接收到的报文都可以执行上述s601-s604,以对接收到的报文进行排序。例如,如图8所示,若接收端与发送端在时域上同步,则接收端接收到新的报文后,可以根据新的报文中携带的发送时戳tsr、接收端接收到的新的报文的接收时间tr以及当前统计的最大传输时延tdmax获取时延参数tc,接收端还可以对tdmax和tc进行调整,使得tdmax和tc更为准确。后续,接收端可以根据tc和tsr,得到新的报文的预计读取时间,根据预计读取时间读取该新的报文的数据。若接收端与发送端在时域上不同步,则接收端接收到新的报文后,可以根据新的报文携带的发送时戳ts、以前接收到的报文的发送时戳tsn、tsn映射到接收端的时域上的发送时戳tsrn以及时钟映射参数krs,获取ts映射到接收端的时域上的发送时戳tsr,接收端还可以调整tsn、tsrn和krs。后续,接收端可以根据tsr、接收端接收到的新的报文的接收时间tr以及当前统计的最大传输时延tdmax获取tc,根据tc和tsr,得到新的报文的预计读取时间,根据预计读取时间读取该新的报文的数据。
[0149]
可以理解的,接收端可以接收来自不同发送端的报文,对于不同的发送端,接收端在进行时域映射时,采用的时钟映射参数不同。但是,接收端对接收到的报文是整体排序,可以不区分发送端。
[0150]
基于图6所示的方法,接收端通过第一路径接收到来自发送端的第一业务的第一报文后,可以根据多个路径的第一最大传输时延,获取第一时延参数,根据第一时延参数获取预计读取第一报文的数据的时间,根据预计读取第一报文的数据的时间读取第一报文的数据,以实现对第一报文的排序。通过图6所示的方法,接收端可以对接收到的报文进行整体排序,不区分业务,可以降低接收端的复杂度,减少计算资源和存储资源的消耗。而且对于任一业务,其报文也是保序的,不影响业务的功能。在排序的过程中,接收端是根据预计读取报文的数据的时间读取报文的数据,某一个业务的时戳异常不影响接收端读取其他业务的报文的数据,可靠性高。图6所示的方法也不需要引入老化时间,可以减小时延抖动。另外,图6所示的方法对传输网络没有特殊要求,在发送端和接收端部署即可,实现简单。
[0151]
其中,上述s601-s604中的接收端的动作可以由图5所示的通信装置50中的处理器501调用存储器503中存储的应用程序代码来执行,本技术实施例对此不做任何限制。
[0152]
上述主要从各个网元之间交互的角度对本技术实施例提供的方案进行了介绍。相应的,本技术实施例还提供了通信装置,该通信装置可以为上述方法实施例中的接收端,或者包含上述接收端的装置,或者为可用于接收端的部件。可以理解的是,该通信装置为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本技术能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每
个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0153]
图9示出了一种通信装置90的结构示意图。该通信装置90包括接收模块901和处理模块902。接收模块901,也可以称为接收单元用以实现接收功能,例如可以是接收电路,接收机,接收器或者通信接口。
[0154]
其中,以通信装置90为上述方法实施例中的接收端为例:
[0155]
接收模块901,用于接收发送端通过第一路径发送的第一业务的第一报文,第一报文携带第一发送时戳,第一发送时戳对应于在发送端的时域上,发送第一报文的时间,第一路径是传输第一业务的报文至接收端的多个路径中的一个。示例性的,结合图6,接收模块901可以用于指示s601。
[0156]
处理模块902,用于获得第一业务的第一时延参数,第一时延参数是根据多个路径的第一最大传输时延确定的。示例性的,结合图6,处理模块902可以用于执行s602。
[0157]
处理模块902,还用于根据第一发送时戳和第一时延参数获得第一预计读取时间。示例性的,结合图6,处理模块902可以用于执行s603。
[0158]
处理模块902,还用于根据第一预计读取时间读取第一报文的数据。示例性的,结合图6,处理模块902可以用于执行s603。
[0159]
可选的,处理模块902,具体用于在按照时间排序的多个队列中,根据第一预计读取时间将第一报文入队;处理模块902,还具体用于在已达到或者超过第一预计读取时间、并且多个队列指示轮到读取第一报文的数据的情况下,读取第一报文的数据。
[0160]
可选的,处理模块902,还具体用于根据第一预计读取时间与当前时间的差值,将第一报文的信息输入第一队列,第一预计读取时间与当前时间的差值属于第一队列对应的时间差值区间。
[0161]
可选的,第一队列中还存储了第二报文的信息,若第一预计读取时间早于第二报文的预计读取时间,则第一报文的信息从第一队列输出的时间,早于第二报文的信息从第一队列输出的时间;或者,若第一预计读取时间晚于第二报文的预计读取时间,则第一报文的信息从第一队列输出的时间,晚于第二报文的信息从第一队列输出的时间。
[0162]
可选的,第二报文为发送端发送的除第一报文之外的第一业务的其他报文,发送端发送的其他业务的报文,或其他发送端发送的报文。
[0163]
可选的,处理模块902,还用于若第一预计读取时间与当前时间的差值,小于第一队列对应的时间差值区间的最小值,则将第一报文的信息从第一队列输出,输入到第二队列,第二队列包括在多个队列中,第一预计读取时间与当前时间的差值属于第二队列对应的时间差值区间。
[0164]
可选的,多个队列分为多组,第一队列包括在第一组队列中,第二队列包括在第二组队列中,第一组队列中的队列对应的时间差值区间的长度,大于第二组队列中的队列对应的时间差值区间的长度。
[0165]
可选的,处理模块902,具体用于将第一发送时戳映射到接收端的时域上以得到第二发送时戳;处理模块902,还具体用于根据第二发送时戳和第一时延参数获得第一预计读取时间。
[0166]
可选的,处理模块902,还用于获取第一参考时戳、第二参考时戳和第一时钟映射
参数,第一参考时戳为在发送端的时域上、第一时刻对应的时间,第二参考时戳为在接收端的时域上、第一时刻对应的时间;处理模块902,还具体用于根据第一发送时戳、第一参考时戳、第二参考时戳和第一时钟映射参数,获得第二发送时戳。
[0167]
可选的,第一时刻对应于发送端通过第一路径向接收端发送第一业务的第三报文的时间,处理模块902,还用于根据第一传输时延、第二传输时延和调整因子,调整第一时钟映射参数,第一传输时延为第一报文从发送端传输至接收端的传输时延,第二传输时延为第三报文从发送端传输至接收端的传输时延。
[0168]
可选的,接收模块901,还用于接收发送端发送的第一业务的第四报文,第四报文携带第三发送时戳,第三发送时戳对应于在发送端的时域上,发送第四报文的时间;处理模块902,还用于比较第一发送时戳和第三发送时戳的大小,确定第一报文的排序是否正确;处理模块902,还用于若第一报文排序错误,则调整第一时延参数。
[0169]
其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
[0170]
在本实施例中,该通信装置90以采用集成的方式划分各个功能模块的形式来呈现。这里的“模块”可以指特定asic,电路,执行一个或多个软件或固件程序的处理器和存储器,集成逻辑电路,和/或其他可以提供上述功能的器件。在一个简单的实施例中,本领域的技术人员可以想到该通信装置90可以采用图5所示的通信装置50的形式。
[0171]
比如,图5所示的通信装置50中的处理器501可以通过调用存储器503中存储的计算机执行指令,使得通信装置50执行上述方法实施例中的传输报文的方法。
[0172]
具体的,图9中的接收模块901和处理模块902的功能/实现过程可以通过图5所示的通信装置50中的处理器501调用存储器503中存储的计算机执行指令来实现。或者,图9中的处理模块902的功能/实现过程可以通过图5所示的通信装置50中的处理器501调用存储器503中存储的计算机执行指令来实现,图9中的接收模块901的功能/实现过程可以通过图5中所示的通信装置50中的通信接口504来实现。
[0173]
由于本实施例提供的通信装置90可执行上述传输报文的方法,因此其所能获得的技术效果可参考上述方法实施例,在此不再赘述。
[0174]
需要说明的是,以上模块或单元的一个或多个可以软件、硬件或二者结合来实现。当以上任一模块或单元以软件实现的时候,所述软件以计算机程序指令的方式存在,并被存储在存储器中,处理器可以用于执行所述程序指令并实现以上方法流程。该处理器可以内置于soc(片上系统)或asic,也可是一个独立的半导体芯片。该处理器内处理用于执行软件指令以进行运算或处理的核外,还可进一步包括必要的硬件加速器,如现场可编程门阵列(field programmable gate array,fpga)、pld(可编程逻辑器件)、或者实现专用逻辑运算的逻辑电路。
[0175]
当以上模块或单元以硬件实现的时候,该硬件可以是cpu、微处理器、数字信号处理(digital signal processing,dsp)芯片、微控制单元(microcontroller unit,mcu)、人工智能处理器、asic、soc、fpga、pld、专用数字电路、硬件加速器或非集成的分立器件中的任一个或任一组合,其可以运行必要的软件或不依赖于软件以执行以上方法流程。
[0176]
可选的,本技术实施例还提供了一种芯片系统,包括:至少一个处理器和接口,该至少一个处理器通过接口与存储器耦合,当该至少一个处理器执行存储器中的计算机程序
或指令时,使得上述任一方法实施例中的方法被执行。在一种可能的实现方式中,该通信装置还包括存储器。可选的,该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件,本技术实施例对此不作具体限定。
[0177]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,dvd)、或者半导体介质(例如固态硬盘(solid state disk,ssd))等。
[0178]
尽管在此结合各实施例对本技术进行了描述,然而,在实施所要求保护的本技术过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
[0179]
尽管结合具体特征及其实施例对本技术进行了描述,显而易见的,在不脱离本技术的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本技术的示例性说明,且视为已覆盖本技术范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献