本公开涉及数据通信领域,特别是涉及一种报文发送与接收方法、相关装置和介质。
背景技术:
1、目前的数据中心网络经常需要在两个节点之间传送数据。源节点和目的地节点之间通常有多个路径。源节点要发送到目的地节点的目标报文一般是分成多个报文分片,在不同的路径上传输,从而充分利用不同路径的传输能力,避免网络拥塞造成的延迟,提高通信实时性。
2、通常,在源节点侧的事务层会维护多个路径的整体滑窗,指示分配给多个路径发送到目的地节点、要观测是否接到目的地节点的确认的那些分片。整体滑窗具有固定长度。当整体滑窗的第一个分片接收到目的地节点的确认后,将整体滑窗向后移一个分片。第一个分片后面的第二个分片此时变成整体滑窗的起始分片,成为要观察是否接收到目的地节点的确认的对象。整体滑窗向后移一个分片,就可以再向多个路径中的一个路径分配一个新分片。整体滑窗的长度保持固定,意味着让交给路径去发送但尚未接收到确认的分片保持比较固定的数目,避免发到目的地节点的分片太多,将目的地节点的缓存打爆。在每个路径上也维护路径滑窗。整体滑窗的分片实际上是各路径滑窗的分片的并集。各个路径滑窗与整体滑窗也类似,也是当第一个分片接收到目的地节点的确认后,将路径滑窗向后移一个分片。第一个分片后面的第二个分片此时变成路径滑窗的起始分片,成为要观察是否接收到目的地节点的确认的对象。
3、在该技术中,如果某些路径故障,导致路径上的某个分片丢失,则该分片不可能接收到目的地节点的确认。此时,无论是整体滑窗还是路径滑窗,当该分片位于滑窗的起始位置并成为要观察是否接收到确认的对象时,由于接收不到确认,整体滑窗和路径滑窗都不再向后滑动,造成不但路径的传输会停滞,整个事务层的连接传输(多个路径组成一个连接)也会停滞,数据传输的连续性都破坏。
技术实现思路
1、本公开实施例提供了一种报文发送与接收方法、相关装置和介质,它使得在路径故障时,路径上的丢包不会影响到本路径以及其它路径的传输,不会导致整个连接故障,从而提高数据传输的连续性。
2、根据本公开的一方面,提供了一种报文发送方法,由源节点执行,所述报文发送方法包括:
3、将目标报文拆分成多个报文分片,分配到通向目的地节点的多个路径进行发送;
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、计数处理单元,用于将所述未确认分片数目减1。
43、可选地,所述第一分配单元具体还用于:
44、获取每个所述路径的允许发送分片数;
45、基于所述允许发送分片数,将所述多个路径排序;
46、按照所述路径排序,顺序取出所述路径,并按照取出的所述路径的所述允许发送分片数和单次传输限制分片数的最小值,为取出的所述路径分配所述报文分片。
47、可选地,所述第一分配单元具体还用于:
48、获取所述路径的所述第一滑窗中的所述报文分片的所述第一数目;
49、获取所述路径的拥塞控制分片数目;
50、将所述第一数目与所述拥塞控制分片数目的最小值,确定为所述允许发送分片数。
51、可选地,所述源节点具有与多个源应用对应的多个源排队区;
52、所述第一分配单元具体还用于:
53、基于拆分成的所述报文分片所属的所述目标报文所属的所述源应用,将所述报文分片放置在所述源应用对应的所述源排队区;
54、基于各个所述源应用的服务质量要求,确定各个所述源排队区的分片获取顺序;
55、基于所述分片获取顺序,从各个所述源排队区中获取所述报文分片,分配到所述路径中。
56、可选地,所述第一分配单元具体还用于:
57、从所述目标报文中读取源应用的应用报文操作指令;
58、将所述应用报文操作指令转换成事务层操作指令;
59、将所述目标报文拆分成所述报文分片,并将所述事务层操作指令加入所述报文分片中。
60、可选地,所述第一分配单元具体还用于:
61、基于所述路径分片序号,获取所述报文分片;
62、获取所述报文分片所属的所述目标报文的报文标识、以及所述报文分片在所述目标报文中的分片位次;
63、将所述报文标识和所述分片位次加入所述报文分片中发送。
64、可选地,所述重传单元具体用于:
65、在所述第一队列上维护第二滑窗,所述第二滑窗指示考虑重传的候选报文分片范围,所述第二滑窗上置为第一值的报文分片位置对应于确定要重传的所述报文分片;
66、将所述第一报文分片之前的、未接收到所述确认消息的所述报文分片在所述第二滑窗中的位置置为所述第一值;
67、顺序重传所述第二滑窗中置为所述第一值的所述报文分片位置的所述报文分片,并且每重传一个所述报文分片,将所述第二滑窗的起始位置定位到下一个置为所述第一值的所述报文分片位置的所述报文分片。
68、可选地,所述报文发送装置还包括:
69、第二更新单元,用于一旦在所述路径上接收到对位于所述第一滑窗的起始位置的第二报文分片的所述确认消息,用所述第二报文分片的下一个报文分片位置更新所述第一滑窗的所述起始位置。
70、可选地,所述第一更新单元具体用于:
71、如果在所述路径上接收到对位于所述第一滑窗的非起始位置的所述第一报文分片的所述确认消息,且所述确认消息的聚合确认字段指示非聚合确认,则用所述第一报文分片的下一个报文分片位置更新所述第一滑窗的起始位置,并为所述第一报文分片之前的、未接收到所述确认消息的所述报文分片重新分配所述路径分片序号,接续到所述第一报文分片之后的、未接收到所述确认消息的所述报文分片的后面;
72、如果在所述路径上接收到对位于所述第一滑窗的非起始位置的所述第一报文分片的所述确认消息,且所述聚合确认字段指示聚合确认,则用所述第一报文分片的下一个报文分片位置更新所述第一滑窗的起始位置。
73、可选地,所述报文分片还包括重传次数字段,
74、所述第一更新单元具体还用于:
75、一旦在所述路径上接收到对位于所述第一滑窗的非起始位置的第一报文分片的所述确认消息,且所述第一报文分片之前的、未接收到所述确认消息的所述报文分片的所述重传次数字段未达到重传次数上限,则将所述重传次数字段加1,用所述第一报文分片的下一个报文分片位置更新所述第一滑窗的起始位置,并为所述第一报文分片之前的、未接收到所述确认消息的所述报文分片重新分配所述路径分片序号,接续到所述第一报文分片之后的、未接收到所述确认消息的所述报文分片的后面;
76、一旦在所述路径上接收到对位于所述第一滑窗的非起始位置的第一报文分片的所述确认消息,且所述第一报文分片之前的、未接收到所述确认消息的所述报文分片的所述重传次数字段达到所述重传次数上限,将所述第一报文分片之前的、未接收到所述确认消息的所述报文分片转发到其它路径进行发送,并将所述重传次数字段归零。
77、根据本公开的一方面,提供了一种报文接收装置,设置于目的地节点,所述报文发送装置包括:
78、第一接收单元,用于接收源节点通过多个路径发送的多个报文分片,多个所述报文分片由目标报文分成,所述报文分片具有路径标识和路径分片序号;
79、移交单元,用于将所述报文分片移交到所述路径标识对应的所述路径;
80、第二维护单元,用于通过所述路径,按照所述路径分片序号的顺序设置第二队列,并将所述第二队列中、接收到的所述报文分片的所述路径分片序号的位置设置为第一值,并在所述第二队列上维护第三滑窗,其中,所述第三滑窗的起始位置为所述第二队列中第一个设置为所述第一值的位置;
81、执行单元,用于执行第一过程,所述第一过程包括:针对所述第三滑窗的所述起始位置,向所述源节点发送所述起始位置对应的所述报文分片的确认消息,且在每发送一个所述确认消息后,用下一个设置为所述第一值的位置更新所述第三滑窗的所述起始位置,并重复所述第一过程。
82、可选地,所述目的地节点设置有第二位图,所述第二位图按照接收到的所述报文分片在所述报文分片所属的所述目标报文中的顺序,存储各个所述报文分片;所述报文分片还具有报文标识和分片位次,所述分片位次指示所述报文分片在所述目标报文中的位次;
83、所述报文接收装置还包括:
84、第三获取单元,用于从接收的所述报文分片中获取所述报文标识和所述分片位次;
85、存储单元,用于将所述报文分片存储到所述第二位图中、与所述所述报文标识和所述分片位次对应的位置;
86、第二转发单元,用于一旦所述第二位图中所述目标报文的各个所述报文分片的所述位置都被填满,将所述目标报文转发到目的地应用。
87、可选地,所述报文分片还具有目的地应用标识;
88、所述第二转发单元具体用于:
89、一旦所述第二位图中所述目标报文的各个所述报文分片的所述位置都被填满,从所述报文分片中获取所述目的地应用标识;
90、将所述目标报文转发到目的地应用标识对应的所述目的地应用。
91、可选地,所述第二维护单元具体用于:
92、如果所述第二队列中、接收到的所述报文分片的所述路径分片序号的位置已经是所述第一值,则丢弃所述报文分片。
93、根据本公开的一方面,提供了一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如上所述的报文发送方法、或报文接收方法。
94、根据本公开的一方面,提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的报文发送方法、或报文接收方法。
95、根据本公开的一方面,提供了一种计算机程序产品,该计算机程序产品包括计算机程序,所述计算机程序被计算机设备的处理器读取并执行,使得该计算机设备执行如上所述的报文发送方法、或报文接收方法。
96、在本公开实施例中,在源节点的事务层不维护整体滑窗,只获取未确认分片数目,确认分片数目为未接收到目的地节点的确认消息的报文分片数目,且与未确认分片数目对应的报文分片已经分配到多个路径进行发送。未确认分片数目初始为第一计数,接收到目的地节点的一个确认消息,就将未确认分片数目减1。这时未确认分片数目小于第一计数,再向多个路径追加分配报文分片,直到未确认分片数目达到第一计数。因此,通过在源节点的事务层获取未确认分片数目而不设置整体滑窗,照样能够达到整体滑窗的根据已经接收到确认消息的分片的数目,确定追加路径发送的分片数目的效果。同时,如果接收不到整体滑窗的起始位置对应的确认消息,整体滑窗不会向后滑动,从而影响后续报文分片的发送。而本公开实施例不设整体滑窗,那么因路径故障而丢失的分片不会占据整体滑窗的起始位置,因此,不会导致整体滑窗不能向后滑动而使整个连接陷入停顿状态。在本公开实施例的路径侧,设置第一滑窗。正常传输中,应该先接到对位于第一滑窗的起始位置的第一报文分片的确认消息。但是,如果接收到对位于第一滑窗的非起始位置的第一报文分片的确认消息,由于默认网络是保序传输的,此时可以认为第一滑窗中第一报文分片之前的一个或多个报文分片丢失了,因此才没有接收到确认消息。为了防止这些报文分片一直停留在第一滑窗的起始位置,阻碍第一滑窗继续向后滑动,本公开实施例强行让第一滑窗滑动,将第一滑窗的起始位置变成第一报文分片的下一个报文分片位置,这样就不会造成滑窗停止滑窗和路径传输停滞。但是,这些报文分片确实没有接收到确认消息,于是为这些报文分片重新分配路径分片序号,接续到第一报文分片之后的、未接收到确认消息的那些报文分片的后面重新发送。通过这种方式,使得在路径故障时,路径上的丢包不会影响到本路径以及其它路径的传输,不会导致整个连接故障,从而提高数据传输的连续性。
97、本公开的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本公开而了解。本公开的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
1.一种报文发送方法,其特征在于,由源节点执行,所述报文发送方法包括:
2.根据权利要求1所述的报文发送方法,其特征在于,所述将目标报文拆分成多个报文分片,分配到通向目的地节点的多个路径进行发送,包括:
3.根据权利要求2所述的报文发送方法,其特征在于,在将所述报文分片分配到所述路径中之前,所述报文发送方法还包括:为所述目标报文设置第一位图,所述第一位图按照所述报文分片在所述目标报文中的顺序,存储各个所述报文分片的接收确认标记;
4.根据权利要求3所述的报文发送方法,其特征在于,所述确认消息还包括路径标识;
5.根据权利要求3或4所述的报文发送方法,其特征在于,所述确认消息还包括源应用标识;
6.根据权利要求2至5任一项所述的报文发送方法,其特征在于,所述将所述报文分片分配到所述路径中,包括:
7.根据权利要求2至6任一项所述的报文发送方法,其特征在于,所述源节点具有与多个源应用对应的多个源排队区;
8.根据权利要求2至7任一项所述的报文发送方法,其特征在于,所述将所述目标报文拆分成所述报文分片,包括:
9.根据权利要求2至8任一项所述的报文发送方法,其特征在于,所述基于所述路径分片序号,发送所述报文分片,包括:
10.根据权利要求1至9任一项所述的报文发送方法,其特征在于,所述重传所述第一报文分片之前的、未接收到所述确认消息的所述报文分片,包括:
11.根据权利要求1至10任一项所述的报文发送方法,其特征在于,所述一旦在所述路径上接收到对位于所述第一滑窗的非起始位置的第一报文分片的所述确认消息,用所述第一报文分片的下一个报文分片位置更新所述第一滑窗的起始位置,并为所述第一报文分片之前的、未接收到所述确认消息的所述报文分片重新分配所述路径分片序号,接续到所述第一报文分片之后的、未接收到所述确认消息的所述报文分片的后面,包括:
12.根据权利要求1至11任一项所述的报文发送方法,其特征在于,所述报文分片还具有重传次数字段;
13.一种报文接收方法,其特征在于,由目的地节点执行,所述报文接收方法包括:
14.根据权利要求13所述的报文接收方法,其特征在于,所述目的地节点设置有第二位图,所述第二位图按照接收到的所述报文分片在所述报文分片所属的所述目标报文中的顺序,存储各个所述报文分片;所述报文分片还具有报文标识和分片位次,所述分片位次指示所述报文分片在所述目标报文中的位次;
15.根据权利要求13或14所述的报文接收方法,其特征在于,所述报文分片还具有目的地应用标识;
16.一种报文发送装置,其特征在于,设置于源节点,所述报文发送装置包括:
17.一种报文接收装置,其特征在于,设置于目的地节点,所述报文接收装置包括:
18.一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现根据权利要求1至12任意一项所述的报文发送方法、或权利要求13至15任意一项所述的报文接收方法。
19.一种计算机可读存储介质,所述存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现根据权利要求1至12任意一项所述的报文发送方法、或权利要求13至15任意一项所述的报文接收方法。
20.一种计算机程序产品,该计算机程序产品包括计算机程序,所述计算机程序被计算机设备的处理器读取并执行,使得该计算机设备执行根据权利要求1至12任意一项所述的报文发送方法、或权利要求13至15任意一项所述的报文接收方法。
