基于标识报文的数据传输方法及装置与流程

文档序号:27551263发布日期:2021-11-24 22:34阅读:122来源:国知局
基于标识报文的数据传输方法及装置与流程

1.本技术涉及通信技术领域,尤其涉及一种基于标识报文的数据传输方法及装置。


背景技术:

2.在通过传输控制协议(transmission control protocol,tcp)控制数据流(flow)发送时,由于发送算法的限制,每发送一批报文后,会间隔一段时间。可以利用间隔时间调整负载分担链路,以避免报文传输乱序问题。其中,负载分担是指将网络中的数据流分摊到多条路径上传输,以扩展网络带宽、增加吞吐量、提高网络的灵活性和可用性。负载分担链路是指发送端与接收端采用负载分担进行传输的通信链路。而以前述原理进行的负载分担叫数据小流(flowlet)负载分担。
3.在进行flow传输的过程中,由于负载分担链路对应的链路时延可能不同,多个负载分担链路之间可能存在链路时延差t,由于tcp传输机制,同一条数据流的连续两个报文之间可能会有时间间隔,如果时间间隔大于t,则切分flowlet,以flowlet为粒度进行多路径负载分担,在末端可以严格保序。但是这种被动切分flowlet的方式,为某条路径分配的流量大小不可控,同样可能造成负载分担不均衡的问题。因此提出了划分数据流单元(flowcell)的方式进行负载分担,但这种负载分担方式不考虑链路时延差,使得到达接收端的报文可能产生乱序,因而又产生了路径末端排序的问题,造成排序压力大,传输效率低。


技术实现要素:

4.本技术实施例提供了一种基于标识报文的数据传输方法及装置,以解决在数据传输过程中负载分担可能造成的传输报文时序错误的问题,提升数据传输效率。
5.第一方面,提供一种基于标识报文的数据传输方法,所述方法包括:
6.根据发送数据生成多个数据流单元,所述数据流单元包括一个或多个标识报文,所述标识报文用于标记所述数据流单元中防止在接收端产生传输时序错误的报文;
7.通过负载分担发送所述多个数据流单元。
8.在一种可能的设计中,所述标识报文的起始报文为所述数据流单元的首个发送报文。
9.在一种可能的设计中,所述多个数据流单元为所述发送数据按照第一数据流单元长度进行划分生成。
10.在一种可能的设计中,所述多个数据流单元为第一数据小流按照第一数据流单元长度进行划分生成,所述第一数据小流为所述发送数据中大于或等于第一预设长度的数据小流。
11.在一种可能的设计中,所述第一数据流单元长度包括所述第一数据流单元的报文时长,报文字节长度或报文数量。
12.在一种可能的设计中,所述方法还包括:
13.获取所述多个数据流单元对应的多条传输链路之间的时延差,并根据所述时延差确定所述标识报文的长度,所述传输链路为通过负载分担发送所述数据流单元对应的传输链路。
14.在一种可能的设计中,所述根据所述时延差确定所述标识报文的长度包括:
15.根据所述多条传输链路之间的最大时延差确定所述标识报文的长度。
16.在一种可能的设计中,所述根据所述时延差确定所述标识报文的长度包括:
17.确定发送所述多个数据流单元中相邻数据流单元对应的第一传输链路和第二传输链路,所述相邻数据流单元包括第一数据流单元和第二数据流单元,所述第二数据流单元为在所述第一数据流单元之后发送的数据流单元;根据所述第一传输链路和所述第二传输链路之间的时延差确定所述第二数据流单元的标识报文的长度。
18.在一种可能的设计中,将多个发送数据分别对应的数据流单元进行分散排序,使得所述数据流单元的标识报文到达接收端的时间不同。
19.第二方面,提供一种基于标识报文的数据传输方法,所述方法包括:
20.接收多个数据流单元,所述多个数据流单元中每个数据流单元包括一个或多个标识报文,所述标识报文用于标记所述数据流单元中防止在接收端产生传输时序错误的报文;
21.根据所述标识报文获取发送端的发送数据,所述发送数据包括时序正确的多个数据流单元。
22.在一种可能的设计中,所述标识报文的起始报文为所述数据流单元的首个发送报文。
23.在一种可能的设计中,所述根据所述报文标识确定获取所述多个数据流单元的顺序,包括:当接收到所述多个数据流单元中第三数据流单元的标识报文时,对所述标识报文进行缓存;当接收到所述第三数据流单元的非标识报文时,从所述标识报文的起始报文对所述第三数据流单元进行获取。
24.在一种可能的设计中,所述根据所述报文标识确定获取所述多个数据流单元的顺序,包括:当接收到所述多个数据流单元中第四数据流单元的标识报文时,对所述标识报文进行缓存;当接收到所述多个数据流单元中第五数据流单元的尾标识报文时,从所述第四数据流单元的标识报文的起始报文对所述第四数据流单元进行获取,所述第四数据流单元为在所述第四数据流单元之前发送的相邻数据流单元。
25.第三方面,提供一种通信装置,所述装置包括处理单元和发送单元,其中,
26.所述处理单元,用于根据发送数据生成多个数据流单元,所述数据流单元包括一个或多个标识报文,所述标识报文用于标记所述数据流单元中防止在接收端产生传输时序错误的报文;所述发送单元,用于通过负载分担发送所述多个数据流单元。
27.在一种可能的设计中,所述装置还包括接收单元,用于获取所述多个数据流单元对应的多条传输链路之间的时延差;
28.所述处理单元还用于:根据所述时延差确定所述标识报文的长度,所述传输链路为通过负载分担发送所述数据流单元对应的传输链路。
29.在一种可能的设计中,所述处理单元具体用于:根据所述多条传输链路之间的最大时延差确定所述标识报文的长度。
30.在一种可能的设计中,所述处理单元具体用于:确定发送所述多个数据流单元中相邻数据流单元对应的第一传输链路和第二传输链路,所述相邻数据流单元包括第一数据流单元和第二数据流单元,所述第二数据流单元为在所述第一数据流单元之后发送的数据流单元;
31.根据所述第一传输链路和所述第二传输链路之间的时延差确定所述第二数据流单元的标识报文的长度。
32.在一种可能的设计中,所述处理单元还用于:将多个发送数据分别对应的数据流单元进行分散排序,使得所述数据流单元的标识报文到达接收端的时间不同。
33.第四方面,提供一种通信装置,所述装置包括接收单元和处理单元,其中,
34.所述接收单元,用于接收多个数据流单元,所述多个数据流单元中每个数据流单元包括一个或多个标识报文,所述标识报文用于标记所述数据流单元中防止在接收端产生传输时序错误的报文;
35.所述处理单元,用于根据所述标识报文获取发送端的发送数据,所述发送数据包括时序正确的多个数据流单元。
36.在一种可能的设计中,所述处理单元具体用于:
37.当接收到所述多个数据流单元中第三数据流单元的标识报文时,对所述标识报文进行缓存;当接收到所述第三数据流单元的非标识报文时,从所述标识报文的起始报文对所述第三数据流单元进行获取。
38.在一种可能的设计中,所述处理单元具体用于:
39.当接收到所述多个数据流单元中第四数据流单元的标识报文时,对所述标识报文进行缓存;当接收到所述多个数据流单元中第五数据流单元的尾标识报文时,从所述第四数据流单元的标识报文的起始报文对所述第四数据流单元进行获取,所述第四数据流单元为在所述第四数据流单元之前发送的相邻数据流单元。
40.第五方面,提供一种通信装置,所述装置包括至少一个处理器,所述至少一个处理器与至少一个存储器耦合:
41.所述至少一个处理器,用于执行所述至少一个存储器中存储的计算机程序或指令,以使得所述装置执行第一方面或第一方面任一项所述的方法;或者使得所述装置执行第二方面或第二方面任一项所述的方法。
42.该装置可以为路由器,也可以为路由器中包括的芯片。上述通信装置的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现,所述硬件或软件包括一个或多个与上述功能相对应的模块。
43.第六方面,本技术实施例提供一种芯片系统,包括:处理器,所述处理器与存储器耦合,所述存储器用于存储程序或指令,当所述程序或指令被所述处理器执行时,使得该芯片系统实现上述第一方面或第一方面的任一种可能的实现方式中的方法,或者执行上述第二方面或第二方面的任一种可能的实现方式的方法。
44.可选地,该芯片系统还包括接口电路,该接口电路用于交互代码指令至所述处理器。
45.可选地,该芯片系统中的处理器可以为一个或多个,该处理器可以通过硬件实现也可以通过软件实现。当通过硬件实现时,该处理器可以是逻辑电路、集成电路等。当通过
软件实现时,该处理器可以是一个通用处理器,通过读取存储器中存储的软件代码来实现。
46.可选地,该芯片系统中的存储器也可以为一个或多个。该存储器可以与处理器集成在一起,也可以和处理器分离设置,本技术并不限定。示例性的,存储器可以是非瞬时性处理器,例如只读存储器rom,其可以与处理器集成在同一块芯片上,也可以分别设置在不同的芯片上,本技术对存储器的类型,以及存储器与处理器的设置方式不作具体限定。
47.第七方面,本技术实施例提供一种计算机可读存储介质,其上存储有计算机程序或指令,当该计算机程序或指令被执行时,使得计算机执行上述第一方面或第一方面的任一种可能的实现方式中的方法,或者执行上述第二方面或第二方面的任一种可能的实现方式中的方法。
48.第八方面,本技术实施例提供一种计算机程序产品,当计算机读取并执行所述计算机程序产品时,使得计算机执行上述第一方面或第一方面的任一种可能的实现方式中的方法,或者执行上述第二方面或第二方面的任一种可能的实现方式中的方法。
49.第九方面,本技术实施例提供一种通信系统,该通信系统包括第三方面所述的通信装置和第四方面所述的通信装置。
附图说明
50.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍。
51.图1为本技术实施例提供的一种向外扩展路由架构示意图;
52.图2为本技术实施例提供的一种flowlet负载分担示意图;
53.图3a为本技术实施例提供的一种基于标识报文的数据传输方法流程图;
54.图3b为本技术实施例提供的一种划分数据流单元的示意图;
55.图3c为本技术实施例提供的另一种划分数据流单元的示意图;
56.图3d为本技术实施例提供的一种划分数据流单元的示意图;
57.图3e为本身实施例提供的一种数据流单元标识示意图;
58.图3f为本技术实施例提供的一种接收端处理标识报文的示意图;
59.图3g为本技术实施例提供的另一种接收端处理标识报文的示意图;
60.图3h为本技术实施例提供的一种发送端对应多个发送数据的示意图;
61.图3i为本技术实施例提供的一种基于标识报文的数据传输方法实现过程示意图;
62.图4为本技术实施例提供的一种通信装置示意图;
63.图5为本技术实施例提供的一种通信装置示意图;
64.图6为本技术实施例提供的一种通信装置的结构示意图。
具体实施方式
65.本技术的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或模块的过程、方法、系统、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或模块。
66.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
[0067]“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
[0068]
为便于理解本技术实施例,首先结合图1对本技术实施例的系统架构进行介绍。
[0069]
图1为本技术实施例提供的一种向外扩展路由架构示意图,如图1所示,采用clos架构组合在一起,总体交换容量便于扩展的路由器被称为向外扩展(scale out)路由器。在scale out路由器架构中,将多台路由器组成一台路由器使用,且路由器之间采用标准以太网进行分组交换。为提高scale out路由器的吞吐,需要更均匀的负载分担方法。
[0070]
逐包负载分担是基于报文(或数据包)在多条链路上进行负载分担,但是由于链路之间存在时延差,那么到达末端的所有报文都可能产生乱序,每个报文都有需要进行排序的可能,末端排序压力大。
[0071]
基于此,提出了flowlet负载分担,请参阅图2,图2为本技术实施例提供的一种flowlet负载分担示意图,如图2所示,clos架构中包括多个路由节点,节点1与节点2之间的通信链路1的传输时延为t1,节点1与节点2之间的通信链路2的传输时延为t2,t=t2-t1,如果同一条流的连续两个报文之间的时间间隔大于或等于t,则切分flowlet,以flowlet为粒度进行多路径负载分担,在末端可以严格保序。但是这种被动切分flowlet的方式,为某条路径分配的流量大小不可控,同样可能造成负载分担不均衡的问题。
[0072]
进一步地,提出了flowcell负载分担,服务器网卡将tcp段(63kb)作为一个flowcell,一个flowcell中包括43个包长为1500b的数据包,中间网络根据flowcell散列到多棵树状网络结构上,以flowcell为单位负载分担,类似与逐包负载分担,分担较均匀。这种方法的负载分担类似于逐包负载分担,尾端需要排序,排序压力没有得到有效控制。
[0073]
基于此,请参阅图3a,图3a为本技术实施例提供的一种基于标识报文的数据传输方法流程图,如图3a所示,该方法包括如下步骤:
[0074]
101、发送端根据发送数据生成多个数据流单元,所述数据流单元包括一个或多个标识报文,所述标识报文用于标记所述数据流单元中防止在接收端产生传输时序错误的报文;
[0075]
102、所述发送端通过负载分担发送所述多个数据流单元。
[0076]
103、接收端接收多个数据流单元,所述多个数据流单元中每个数据流单元包括一个或多个标识报文,所述标识报文用于标记所述数据流单元中防止在接收端产生传输时序错误的报文;
[0077]
104、所述接收端根据所述标识报文获取发送端的发送数据,所述发送数据包括时序正确的多个数据流单元。
[0078]
发送端和接收端表示进行通信的路由节点,其中发送端可以表示生成报文的起始节点,也可以表示接收并转发报文的中间节点,接收端可以表示接收报文并使用数据进行业务处理的末端节点,也可以表示中间接收并转发报文的中间节点。
[0079]
发送端的发送数据在网络层进行传输的最小单位为数据包,在传输层进行传输的最小单位为数据报文,因此,根据发送数据生成的多个数据流单元中,可以包括若干个数据包或数据报文。以下以数据报文为例进行说明。
[0080]
请参阅图3b,图3b为本技术实施例提供的一种划分数据流单元的示意图,如图3b所示,发送数据以数据流的形式进行发送,将数据流中的报文按照第一数据流单元长度划分成若干个数据流单元,即划分成的数据流单元长度与第一数据流单元长度相等,如果数据流中最后剩余的报文长度小于第一数据流单元长度,则剩余报文划分成最后一个数据流单元。例如第一数据流单元长度为m,数据流按照第一数据流单元长度划分,获得的数据流单元长度分别为(m,m,...,m’),其中m’≤m。第一数据流单元的长度可以根据链路时延差确定,控制数据流单元的长度和链路时延差的比值,可以控制需排序报文和无需排序报文的比例,以满足接收端处理能力。
[0081]
上述进行数据流单元划分时,可以以数据流为单位进行划分,也可以以数据小流为单元进行划分。具体请参阅图3c,如图3c中的(a)所示,以数据流为单位进行数据流单元划分,对数据流1中报文按照第一数据流单元长度或预设数据流单元个数划分多个数据流单元,不考虑报文之间的间隔大小。这种将数据流中所有报文进行数据流单元划分的方法,可以提升各个链路中负载分担的均衡性;或者,如图3c中的(b)所示,以数据小流为单位进行数据流单元划分,数据流1中,当报文之间的间隔大于链路时延差t时,形成数据小流flowlet1和flowlet2,其中flowlet1的长度短,不用进行数据流单元的划分,而flowlet2的长度大于或等于第一预设长度,如果直接将flowlet2通过负载分担进行发送,可能造成负载分担不均衡,因此需要对flowlet2划分flowcell。这种对数据流中长度大于或等于第一预设长度的flowlet才进行数据流单元划分的方法,可以减少划分数据流单元的次数,同时达成均衡负载分担的效果,提升了数据处理效率。
[0082]
另外,上述数据流可以是五元组(源ip地址,源端口,目的ip地址,目的端口和传输层协议)相同的自然流,例如同一个业务对应的数据流。但是在一个通信系统中,通常用于同时进行多项业务,对应的自然流数量众多,如果每一条自然流都进行单独的数据流单元划分,可能造成大量重复开销。因此可以通过将多条自然流聚合,生成聚合流,然后将聚合流作为一条数据流进行数据流单元划分以及后续数据处理。生成聚合流的方式可以是将五元组进行哈希运算,获得对应的数值,然后由数值相同的自然流组成一个聚合流等。
[0083]
划分数据流单元的具体过程可参阅图3d,图3d为本技术实施例提供的一种划分数据流单元的示意图,如图3d中的(a)所示,按照第一数据流单元长度进行划分可以是按照第一数据流单元的报文时长进行划分,则flowcell id1和flowcell id2为按照第一数据流单元的报文时长划分成的两个报文时长相等的数据流单元,例如报文时长都为t’。或者如图3d中的(b)所示,按照第一数据流单元长度进行划分可以是按照第一数据流单元的报文字节长度进行划分,则flowcell id1和flowcell id2为按照第一数据流单元的报文字节长度划分成的两个报文字节长度相等的数据流单元,例如报文字节长度都为30k。或者如图3d中的(c)所示,按照第一数据流单元长度进行划分可以是按照第一数据流单元的报文数量进行划分,则flowcell id1和flowcell id2为按照第一数据流单元的报文数量划分成的两个报文数量相等的数据流单元,例如都包括16个报文。
[0084]
另外,请参阅图3e,图3e为本身实施例提供的一种数据流单元标识示意图,如图3e
中的(a)所示,用来唯一标识每个数据流单元的flowcell id可以是个连续的标签值,例如1,2,3

或者001,002,003

等;或者如图3e中的(b)所示,flowcell id也可以是一个循环标签,例如1,2,3,或者a,b,c等。在本技术实施例中,因为标识报文长度根据链路时延差t确定,那么划分的每个flowcell报文长度可以大于链路时延差t,避免每个数据流单元中标识报文占比量大导致接收端缓存报文开销大,那么接收端最多同时接收两个flowcell,3个label值循环即可区分不同的flowcell。
[0085]
将划分获得的flowcell通过不同的路径发送,形成负载分担。假设从第一链路和第二链路分别发送flowcell id1和flowcell id2,并且flowcell id1在flowcell id2之前发送,第一链路和第二链路之间的链路时延差t1-t2=t=100μs(微秒),即第一链路的链路时延比第二链路的链路时延多100μs,使得在后发送的flowcell id2将最多可能有100μs的报文与flowcell id1的报文同时到达接收端,造成报文乱序(flowcell id1和flowcell id2中可能存在空白段,使得乱序报文长度小于链路时延差)。
[0086]
在这种情况下,当接收端接收到flowcell id2后,发现flowcell id2中的报文发生时序错误,则会对flowcell id2中的所有报文进行重排序。但是flowcell id2中只有开头部分报文发生时序错误,对flowcell id2中的所有报文进行重排序将导致运算资源的过度消耗,降低数据传输效率。在本技术实施例中,对发送端对flowcell id2中可能在接收端产生时序错误的报文进行标识,其他不会发生时序传输错误的报文则不进行标识。然后发送包括该标识报文的数据流单元,接收端根据接收到的标识报文进行数据流单元的获取。
[0087]
可选的,可能产生时序错误的报文长度可以根据链路时延差来确定,即标识报文的长度可以通过链路时延差来确定。包括根据多条传输链路之间的最大时延差确定标识报文的长度。例如,在一个clos组网中,包括5条通信链路,其中最长的通信链路时延为t3,最短的通信链路时延为t4,那么每个flowcell中的标识报文长度可以由最大链路时延差确定,即标识报文长度=t3-t4,能够确保每个flowcell中的标识报文长度不小于可能产生时序错误的报文长度(即两条传输链路的时延差长度),避免不能完成对所有时序错误的报文进行重新排序的可能性。
[0088]
或者可以根据第一传输链路和第二传输链路之间的时延差确定第二数据流单元的标识报文的长度,其中第一数据流单元在第一传输链路中传输,第二数据流单元在第二传输链路中传输,且第二数据流单元在第一数据流单元之后发送。例如图3b中,如果发送端已经确定了第一链路用来发送flowcell id1,第二链路用来发送flowcell id2,那么可以根据第一链路和第二链路的链路时延差确定flowcell id2中的标识报文长度。
[0089]
可选情况下,如果数据流单元的前端或末端不包含报文,例如为空白段或报文之间的间隔时间段,那么即使在后发送的数据流单元的前端与在前发送的数据流单元的末端同时到达接收端,也不会对在前发送的数据流单元造成干扰,且在后发送的数据流单元也不会产生报文时序错误。因此,如果在后发送的数据流单元前端不包含报文的时间段大于该数据流单元与在前发送的数据流单元在接收端的重叠时间段时,该数据流单元中可以不包括标识报文。例如flowcell id3结束点到达接收端的时间为t1,flowcell id4的开始点到达接收端的时间为t2,t2早于t1,且t2与t1的差值t’小于或等于flowcell id4中不包含报文的时间ts,那么flowcell id4中不包括标识报文。另一方面,如果t2与t1的差值t’大于flowcell id4中不包含报文的时间ts,那么flowcell id4中的标识报文长度为t
’-
ts。
[0090]
发送端确定每个flowcell中的标识报文长度后,对包括标识报文的flowcell在对应链路上进行发送。接收端对flowcell进行接收,并根据标识报文对flowcell进行处理。
[0091]
具体地,接收端在进行flowcell id1的接收时,flowcell id2在flowcell id1之后发送,并且因为发送flowcell id2的链路时延小于发送flowcell id1的链路时延,那么flowcell id2中有一部分报文可能会在接收端完成flowcell id1的接收之前到达接收端,发送端已经对这部分进行了标识,即标识报文。那么,请参阅图3f,图3f为本技术实施例提供的一种接收端处理标识报文的示意图,如图3f所示,在接收端接收flowcell的过程中,如果接收到flowcell id2的标识报文,为了避免标识报文可能产生的时序错误(报文乱序),接收端可以对标识报文进行缓存,直到接收到非标识报文,则从标识报文的起始报文对flowcell id2进行获取。在对标识报文进行缓存的过程中,接收端继续对flowcell id1的报文进行接收,因为标识报文为所有可能发生时序错误的报文,在完成所有标识报文的缓存之后,在接收到非标识报文时,可以确定flowcell id1已经被发送或提交完毕,那么接收端可以开始从flowcell id2的标识报文的起始报文,也即flowcell id2的起始报文开始获取flowcell id2的报文。因为标识报文没有与flowcell id1对应的报文进行同时获取,那么也就不会产生报文乱序的问题,接收端也就不需要进行报文重排序。
[0092]
可见,在本技术实施例中,发送端向接收端发送数据流单元,其中数据流单元中包括可能在接收端产生时序错误的标识报文,然后接收端对数据流单元进行接收,并且对标识报文进行缓存,直到完成所有标识报文的缓存之后,结束缓存过程并从标识报文的起始报文获取该数据流单元,这个过程能够通过对标识报文进行缓存避免报文产生时序错误,减少对报文进行排序可能产生的计算过程,提升数据传输效率。另外在确定完成标识报文的缓存后即开始从标识报文的起始报文获取该数据流单元,可以保证获取数据流单元的及时性。
[0093]
可选地,也可以通过为先发送的数据流单元添加尾标识,然后根据尾标识确定结束对相邻的后发送的数据流标识报文的缓存,具体请参阅图3g,图3g为本技术实施例提供的另一种接收端处理标识报文的示意图,如图3g所示,在接收端接收flowcell id1和flowcell id2的过程中,如果接收到flowcell id2的标识报文,为了避免标识报文可能产生的时序错误,接收端可以对flowcell id2的标识报文进行缓存,直到确定接收flowcell id1的尾标识,表明已经完成flowcell id1中所有报文的接收,则从标识报文的起始报文对flowcell id2进行获取。在对标识报文进行缓存的过程中,接收端继续对flowcell id1的报文进行接收,因为标识报文为所有可能发生时序错误的报文,那么在获取到flowcell id1的尾标识后,可以确定flowcell id1已经被接收端接收完毕,接收端可以开始从flowcell id2的标识报文的起始报文,也即flowcell id2的起始报文开始获取flowcell id2的报文。因为标识报文没有与flowcell id1对应的报文进行同时获取,那么也就不会产生报文乱序的问题,接收端也就不需要进行报文重排序。另外,在接收端接收flowcell id1的过程中,可能存在额外的时延或卡顿等,造成flowcell id1的实际接收时长大于预设接收时长,或者如果标识报文的长度时按照clos架构中的最大链路时延差确定的,则标识报文长度可能比实际可能产生时序错误的报文长度更长,因此通过确定获取到flowcell id1的尾标识后再获取flowcell id2的标识报文,可以保证是在完成flowcell id1的接收之后才进行了标识报文获取。
[0094]
另外,接收端需要缓存的报文长度根据标识报文的长度确定,根据在前发送的数据流单元的传输时延与在后发送的数据流单元的传输时延(通常情况下也即两者的链路时延差)确定,那么为了使得在接收端进行缓存的报文长度占数据流单元中的报文长度比例小,在接收端处理能力范围内,在划分flowcell时可以增加其对应长度,例如图3b和图3c中,链路时延差t=100μs,按照链路时延差确定标识报文长度也为100μs,那么当flowcell id1的报文长度为500μs时,在接收端需要缓存的报文占比p=100μs/500μs*100%=20%。
[0095]
可见,在本技术实施例中,发送端向接收端发送数据流单元,其中数据流单元中包括可能在接收端产生时序错误的标识报文,然后接收端对数据流单元进行接收,并且对标识报文进行缓存,直到确定接收到在前发送的数据流单元的尾标识后,接收端结束缓存过程并从标识报文的起始报文获取该数据流单元,这个过程能够通过对标识报文进行缓存避免报文产生时序错误,减少对报文进行排序可能产生的计算过程,提升数据传输效率。另外在确定获取到在前发送的数据流单元的尾标识后开始从标识报文的起始报文获取该数据流单元,可以保证获取数据流单元的正确性,进一步减少乱序情况的发生。
[0096]
在可选情况下,发送端可能有多个发送数据需要进行发送,具体请参阅图3h,图3h为本技术实施例提供的一种发送端对应多个发送数据的示意图,如图3h所示,如果发送端针对多个发送数据同时发送,那么每个发送数据的数据流进行划分获得数据流单元并进行发送,数据流可能为自然流,也可能为聚合流。数据流单元到达接收端的时间可能相同,即数据流单元中的标识报文到达接收端的时间可能相同,那么接收端需要同时对多个数据流单元的标识报文进行缓存,这将造成接收端缓存压力大,降低数据处理效率。因此,发送端在对多个发送数据进行发送之前,可以将发送数据进行分散排序,然后按照排序顺序对发送数据的数据流单元进行发送,使得不同发送数据的数据流单元到达接收端的时间不同。可选情况下,分散排序后,不同发送数据之间的时间间隔大于链路时延差t,可以使得接收端完成前一个发送数据的缓存过程后,再接收下一个发送数据并进行缓存。这个过程缓解了接收端同时缓存多个数据流单元的标识报文可能造成的缓存压力,提升了数据处理效率。
[0097]
上述方法在路由器组成的clos架构中实现的过程可以参阅图3i,图3i为本技术实施例提供的一种基于标识报文的数据传输方法实现过程示意图,如图3i所示,发送数据输入路由器1,路由器1中包括切片器,用于进行数据流单元划分,获得多个数据流单元,其中切片器中可以包括计数器或计时器,以便发送数据按照等报文时长,等报文字节长度,或者等报文数量进行划分,在发送数据输入切片器之前,还可以进行其他处理,例如将发送数据对应的自然流通过哈希运算获得聚合流等。发送数据被切片器划分为多个数据流单元,然后数据流单元通过负载分担进行传输,数据流单元中包括标识报文,路由器2接收到标识报文时,对其进行缓存,形成缓存队列,直到确定在前发送的数据流单元被路由器2接收完毕,或者直到路由器2接收到标识报文之后的非标识报文,路由器2结束缓存,从缓存队列中获取标识报文,并正常接收标识报文之后的非标识报文。然后路由器2再将获取到的数据流单元按照接收顺序发送到下一个路由器,或者将数据流单元对应的数据用于业务执行。在路由器1中,如果有多个发送数据需要发送,可以对不同发送数据的数据流单元进行分散排序,使得不同发送数据的数据流单元中的标识报文到达路由器2的时间不同,避免路由器2需要同时对多个数据流单元中的标识报文进行缓存,造成数据处理效率低下的问题。
[0098]
图4为本技术实施例提供的一种通信装置400,其可以用于执行上述图3a~图3i具体实施例中对应于发送端的相应操作或者步骤,该通信装置可以是路由器或者可以是配置于路由器的部件(例如芯片或者电路)。在一种可能的实现方式中,如图4所示,该通信装置400包括发送单元401,处理单元402。
[0099]
所述处理单元402,用于根据发送数据生成多个数据流单元,所述数据流单元包括一个或多个标识报文,所述标识报文用于标记所述数据流单元中防止在接收端产生传输时序错误的报文;
[0100]
所述发送单元401,用于通过负载分担发送所述多个数据流单元。
[0101]
可选地,所述通信装置接收单元403,用于获取所述多个数据流单元对应的多条传输链路之间的时延差;
[0102]
所述处理单元402还用于:根据所述时延差确定所述标识报文的长度,所述传输链路为通过负载分担发送所述数据流单元对应的传输链路。
[0103]
可选地,所述处理单元402具体用于:根据所述多条传输链路之间的最大时延差确定所述标识报文的长度。
[0104]
可选地,所述处理单元402具体用于:确定发送所述多个数据流单元中相邻数据流单元对应的第一传输链路和第二传输链路,所述相邻数据流单元包括第一数据流单元和第二数据流单元,所述第二数据流单元为在所述第一数据流单元之后发送的数据流单元;
[0105]
根据所述第一传输链路和所述第二传输链路之间的时延差确定所述第二数据流单元的标识报文的长度。
[0106]
可选地,所述处理单元402还用于:将多个发送数据分别对应的数据流单元进行分散排序,使得所述数据流单元的标识报文到达接收端的时间不同。
[0107]
可选地,上述接收单元403和发送单元401可以为接口电路或者收发器。接收单元403和发送单元401可以为独立的单元,也可以集成为收发单元(图未示),收发单元可以实现上述接收单元403和发送单元401的功能。
[0108]
上述处理单元402可以是处理器、芯片、编码器、编码电路或其他可以实现本技术方法的集成电路。
[0109]
由于具体的方法和实施例在前面已经介绍过,该通信装置400是用于执行对应于发送端的数据传输方法,可以参考对应实施例相关部分的描述,此处不再赘述。
[0110]
可选地,通信装置400还可以包括存储单元(图中未示出),该存储单元可以用于存储数据和/或信令,存储单元可以和处理单元402耦合,也可以和接收单元403或发送单元401耦合。例如,处理单元402可以用于读取存储单元中的数据和/或信令,使得前述方法实施例中的通信方法被执行。该存储单元可以是存储器。
[0111]
图5为本技术实施例提供的一种通信装置500,其可以用于执行上述图3a~图3i具体实施例中对应于接收端的相应操作或者步骤,该通信装置可以是路由器或者可以是配置于路由器的部件(例如芯片或者电路)。在一种可能的实现方式中,如图5所示,该通信装置500包括接收单元501和处理单元502。
[0112]
接收单元501,用于接收多个数据流单元,所述多个数据流单元中每个数据流单元包括一个或多个标识报文,所述标识报文用于标记所述数据流单元中防止在接收端产生传输时序错误的报文;
[0113]
所述处理单元502,用于根据所述标识报文获取发送端的发送数据,所述发送数据包括时序正确的多个数据流单元。
[0114]
可选地,所述处理单元502具体用于:当接收到所述多个数据流单元中第三数据流单元的标识报文时,对所述标识报文进行缓存;当接收到所述第三数据流单元的非标识报文时,从所述标识报文的起始报文对所述第三数据流单元进行获取。
[0115]
可选地,所述处理单元502具体用于:当接收到所述多个数据流单元中第四数据流单元的标识报文时,对所述标识报文进行缓存;当接收到所述多个数据流单元中第五数据流单元的尾标识报文时,从所述第四数据流单元的标识报文的起始报文对所述第四数据流单元进行获取,所述第四数据流单元为在所述第四数据流单元之前发送的相邻数据流单元。
[0116]
可选地,所述通信装置500还可以包括发送单元503,接收单元501和发送单元503可以为接口电路或者收发器。接收单元501和发送单元503可以为独立的单元,也可以集成为收发单元(图未示),收发单元可以实现上述接收单元501和发送单元503的功能。
[0117]
可选地,上述处理单元502可以是处理器、芯片、编码器、编码电路或其他可以实现本技术方法的集成电路。
[0118]
由于具体的方法和实施例在前面已经介绍过,该通信装置500是用于执行对应于接收端的数据传输方法,可以参考对应实施例相关部分的描述,此处不再赘述。
[0119]
可选地,通信装置500还可以包括存储单元(图中未示出),该存储单元可以用于存储数据和/或信令,存储单元可以和处理单元502耦合,也可以和接收单元501、发送单元503或发送单元503耦合。例如,处理单元502可以用于读取存储单元中的数据和/或信令,使得前述方法实施例中的通信方法被执行。
[0120]
如图6所示,图6示出了本技术实施例中的一种通信装置的结构示意图。通信装置400或者通信装置500的结构可以参考图6所示的结构。通信装置600包括:处理器111和收发器112,所述处理器111和所述收发器112之间电偶合;
[0121]
所述处理器111,用于执行部分或者全部计算机程序指令,当所述部分或者全部计算机程序指令被执行时,使得所述装置执行上述任一实施例所述的方法。
[0122]
所述收发器112,用于和其他设备进行通信;例如通过负载分担发送多个数据流单元,或者接收多个数据流单元。
[0123]
可选地,还包括存储器113,用于存储所述计算机程序指令,可选地,所述存储器113(memory#1)位于所述装置内,所述存储器113(memory#2)与处理器111集成在一起,或者所述存储器113(memory#3)位于所述装置之外。
[0124]
应理解,图6所示的通信装置600可以是芯片或电路。例如可设置在路由器或者路由器内的芯片或电路。上述收发器112也可以是通信接口。收发器包括接收器和发送器。进一步地,该通信装置600还可以包括总线系统。
[0125]
其中,处理器111、存储器113、收发器112通过总线系统相连,处理器111用于执行该存储器113存储的指令,以控制收发器接收信号和发送信号,完成本技术涉及的实现方法中接收端或者发送端的步骤。所述存储器113可以集成在所述处理器111中,也可以与所述处理器111分开设置。
[0126]
作为一种实现方式,收发器112的功能可以考虑通过收发电路或者收发专用芯片
实现。处理器111可以考虑通过专用处理芯片、处理电路、处理器或者通用芯片实现。处理器可以是中央处理器(central processing unit,cpu),网络处理器(network processor,np)或者cpu和np的组合。处理器还可以进一步包括硬件芯片或其他通用处理器。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,asic),可编程逻辑器件(programmable logic device,pld)或其组合。上述pld可以是复杂可编程逻辑器件(complex programmable logic device,cpld),现场可编程逻辑门阵列(field-programmable gate array,fpga),通用阵列逻辑(generic array logic,gal)及其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等或其任意组合。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0127]
还应理解,本技术实施例中提及的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,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 rate sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synchlink dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,dr ram)。应注意,本技术描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
[0128]
本技术实施例提供了一种计算机存储介质,存储有计算机程序,该计算机程序包括用于执行上述实施例中对应用于发送端的方法。
[0129]
本技术实施例提供了一种计算机存储介质,存储有计算机程序,该计算机程序包括用于执行上述实施例中对应用于接收端的方法。
[0130]
本技术实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中对应用于发送端的方法。
[0131]
本技术实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中对应用于接收端的方法。
[0132]
本技术实施例提供了一种通信系统,包括通信装置400和通信装置500,分别用于执行上述图3a~图3i具体实施例中发送端和接收端的相应操作或者步骤。
[0133]
应理解,在本技术的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
[0134]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和实现方式约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0135]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0136]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0137]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0138]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0139]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者接入网设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0140]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应所述以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1