一种报文的重传方法与流程

文档序号:33096200发布日期:2023-01-31 23:59阅读:34来源:国知局
一种报文的重传方法与流程

1.本发明涉及链路数据传输技术领域,特别是涉及一种报文的重传方法。


背景技术:

2.目前,pcie5.0规范的可靠重传技术使用ack/nak实现可靠性机制,借助于dllp实现。dllp在数据链路层工作,上层将tlp交付给数据链路层,在数据链路层为tlp加上序列号。当接收端收到的tlp出错或者发生了丢包,接收端向发送端返回一个nak类型的dllp,通知发送端进行相应tlp的重传。pcie5.0使用gobackn机制,即retrybuffer中序列号在nak之前的tlp都需要重传。如果接收端正确收到了tlp,那么会回复一个ack类型的dllp,发送端可以将已确定被收到的tlp从replaybuffer中除去。pcie5.0使用延迟确认机制,即正确收到tlp后可以不立即回复ack,而是等待一段时间收到多个tlp后再回复,一个ack可以确认多个tlp已被正确收到。发送端还会设置一个计时器,每当收到nak或ackdllp时会清零,如果一段时间没有收到应答,计时器溢出,则需要进行超时重传,重传当前replaybuffer中的所有tlp。
3.pcie6.0规范的可靠重传技术,相比前一代多了选择重传。pcie6.0多了一个flitmode,在non-flitmode下,与pcie5.0的重传机制是一样的。在flitmode下,pcie6.0会采用选择重传机制,crc校验、重传都是以flit为粒度的,并且不使用ack/nakdllp。当接收端收到一个乱序flit时,会生成一个选择确认nak,通知发送端选择重传前一个flit。同时继续接收后面的flit,将它们缓存下来,直到收到了发送端的重传flit。
4.tcp协议的可靠性机制中加入了一个sack选项(tcp option field),允许接收端在返回duplicate ack时,将已经收到的数据区段(连续收到的数据范围)返回给发送端,数据区段与数据区段之间的间隔就是接收端没有收到的数据。发送端就知道哪些数据包已经收到,哪些该重传,因此sack的发送端可以在一个rtt时间内重传多个数据包。
5.对于pcie5.0和pcie6.0的non-flitmode下的可靠性机制,包含数据的tlp和包含ack/nak的dllp是分开发送的,这样的做法增加了链路中的数据包数量,减小了链路的有效带宽。并且在某些应用场景下,发送端可能需要收到接收端返回的带数据的应答之后才能继续往下执行命令,在这种情况下,先返回ack/nak应答的做法意义不大。
6.对于pcie6.0 flitmode下的选择确认机制,每次只能选择确认一个未按序到达的flit,当链路中存在多段乱序时,该机制的效率不佳。
7.tcp的选择重传机制需要在tcp选项中加入重传的边界值,但受限于tcp选项长度不超过40字节,实际最多不超过4组边界值,限制了重传更多的数据包。此外,tcp协议属于传输层协议,在数据链路层报文加入多组边界值在报文中会占据一部分数据空间,减小了数据报文的有效载荷占比,故该方法不适用于数据链路层。
8.发明人在进行使用以太网承载上游交付的请求,并需要保证链路的可靠性的研究时,发现现有技术不能很好地适应这种情况,主要是现有技术的带宽利用率不足,并且不必要的重传过多。
9.现有技术公开了一种数据传输方法及装置(公开号为cn110417519a),用以解决基于cbg的重传技术,重传效率较低的问题。所述方法包括:接收端接收发送端发送的重传数据,所述重传数据包括至少一个第一编码块组,每个所述第一编码块组包括至少一个编码块。所述接收端对所述重传数据中包括的编码块进行译码。所述接收端向所述发送端发送n个第二编码块组分别对应的译码校验结果,所述n个第二编码块组为所述接收端基于所述重传数据确定的,当一个第二编码块组中至少一个编码块对应的译码校验结果为错误时,该第二编码块组对应的译码校验结果为nak,否则该第二编码块组对应的译码校验结果为ack。该专利公开了接收端接收发送端发送的重传数据,并未公开重传数据中的报文序列号,研究人员迫切需要一种可以提高链路带宽利用率的报文数据传输系统。


技术实现要素:

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.若不存在,则将所述报错标识及对应序列号、第一选择重传标识及对应序列号和第二循环冗余校验信息组成不含应答信息的应答报文发送至所述发送端;
47.当所述第一序列号小于所述第三序列号时,将所述第一序列号对应的应答报文重传至所述发送端。
48.可选的,还包括:
49.当所述请求报文发送超时时,所述发送端执行对所述请求报文的重传操作。
50.可选的,还包括:
51.当所述应答报文发送超时时,所述接收端向所述发送端发送由报错标识及对应序列号和所述第二循环冗余校验信息组成的不含应答信息的应答报文。
52.可选的,还包括:
53.所述发送端对未按序到达的所述应答报文缓存并执行排序操作;
54.所述接收端对未按序到达的所述请求报文缓存并执行排序操作。
55.与现有技术相比,本发明的有益效果在于:
56.本发明通过接收端发送与发送端的请求报文对应的应答报文,且应答报文包括了与请求信息匹配的应答信息、标识组,其中标识组包括报错标识及对应序列号和/或确定标识及对应序列号和/或选择重传标识及对应序列号,相比于现有技术的包含数据的tlp即应答信息和包含ack/nak的dllp即标识组分开发送,减少了链路中的数据包数量,增加了链路的有效带宽,同时通过标识组判断应答报文是否需要重传,减少了不必要的数据包重传数量,进一步提高链路带宽利用率。
附图说明
57.图1是本发明实施例提供的报文的重传方法流程示意图;
58.图2是本发明实施例提供的报文的重传方法的一种应用场景示意图;
59.图3.1是本发明实施例提供的报文的重传方法的另一种应用场景示意图;
60.图3.2是本发明实施例提供的报文的重传方法的又一种应用场景示意图;
61.图4是本发明实施例提供的一种报文数据传送系统结构示意图;
62.图5是本发明实施例提供的另一种报文数据传送系统结构示意图。
具体实施方式
63.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
64.实施例一
65.首先对序列号进行介绍,例如tcp协议工作在osi的传输层,是一种可靠的面向连接的数据流协议,tcp之所以可靠,是因为它保证了传送数据包的顺序。顺序是用一个序列号来保证的。
66.基于此,图1是本发明实施例提供的一种报文的重传方法流程图,该方法可以包括以下步骤:
67.步骤s100、发送端发送请求报文至接收端。
68.具体的,发送端和接收端可以是电脑、服务器、手机等具有数据处理、发送和接收功能的单元,请求报文可以包括请求信息、第一序列号和第一循环冗余校验信息,第一序列号可以表示当前请求报文序列号,例如第一序列号可以用nts表示。
69.步骤s110、接收端接收请求报文,并判断根据请求报文中的第一循环冗余校验信息是否正确。
70.具体的,第一循环冗余校验信息可以是crc(cyclic redundancy check,循环冗余校验)信息,接收端接收到请求报文后,可以通过循环冗余校验检验机制判断第一循环冗余校验信息是否正确。
71.步骤s120、若是,则接收端根据第一序列号和请求信息,匹配发送对应的应答报文至发送端。
72.具体的,应答报文可以包括与所述请求信息匹配的应答信息、标识组和第二循环冗余校验信息,标识组可以包括标识信息及对应序列号,若第一循环冗余校验信息正确,则接收端可以根据第一序列号和请求信息,匹配发送对应的应答报文至发送端,此时的第一序列号可以是当前接收端收到的最后一个正确请求报文的序列号。
73.步骤s130、若否,则接收端向发送端发送提示信息。
74.具体的,若第一循环冗余校验信息不正确,则接收端可以向发送端发送提示信息,例如提示信息可以是附带的序列号为当前接收端收到的最后一个正确请求报文的序列号的报文。
75.步骤s140、发送端接收应答报文,并判断应答报文中的第二循环冗余校验信息是否正确。
76.具体的,发送端接收应答报文后,为确定收到的应答报文的可靠性,可以判断应答
报文中的第二循环冗余校验信息是否正确,第二循环冗余校验信息可以是crc(cyclic redundancy check,循环冗余校验)信息且区别于第一循环冗余校验信息。
77.步骤s150、若否,则丢弃应答报文。
78.具体的,若第二循环冗余校验信息不正确,则可以丢弃应答报文。
79.步骤s160、若是,则发送端根据标识组判断应答报文是否需要重传。
80.具体的,若第二循环冗余校验信息正确,则发送端可以进一步对应答报文中的标识组进行判断,确定该应答报文是否需要重传。
81.步骤s170、若是需要重传,则发送端根据标识组执行对应的请求报文重传操作。
82.步骤s180、若不需要重传,则正确接收应答报文。
83.从上述的技术方案可以看出,本发明实施例提供的报文的重传方法,由于本发明的应答报文包括与请求信息匹配的应答信息、标识组和第一循环冗余校验信息,相比于现有技术的应答信息和重传信息的分开发送,本发明减少了链路中的数据包数量,增加了链路的有效带宽,同时可以通过标识组判断应答报文是否需要重传,减少不必要的数据包重传数量,进一步提高链路带宽利用率。
84.实施例二
85.本实施例与实施例一的区别在于,在实施例一的基础上,本实施例对报文的重传方法作进一步的说明。
86.在本发明的一些实施例中,标识信息及对应序列号可以包括报错标识及对应序列号和/或确定标识及对应序列号和/或选择重传标识及对应序列号,每种标识信息都有其对应的序列号,标识组由各标识和各标识对应的序列号组成,本实施例的报文的重传方法还可以包括以下步骤:
87.步骤s190、当接收端确定第一循环冗余校验信息不正确时,则进一步确定上一请求报文是否正在处理。
88.具体的,接收端可以存在对上一请求报文进行匹配应答报文的同时,接收下一请求报文的情况,接收端可以在确定所述第一循环冗余校验信息不正确时,进一步确定上一请求报文是否正在处理。
89.步骤s200、若否,则将报错标识及对应序列号、选择重传标识及对应序列号和第二循环冗余校验信息组成不含应答信息的应答报文发送至发送端。
90.具体的,若上一请求报文没有正在处理,则可以将报错标识及对应序列号、选择重传标识及对应序列号和第二循环冗余校验信息组成不含应答信息的应答报文发送至所述发送端,例如sack+nak without data报文,报错标识及对应序列号可以是nak及当前接收端收到的最后一个正确请求报文的序列号,即nak withoutdata报文,nak可以表示报错标识即失败确认,nak withoutdata可以表示不携带应答信息的报错标识,选择重传标识及对应序列号可以是sack及选择重传的数据包的序列号,例如在丢失的数据包两端的数据包即两端未丢失的数据包标记sack,通过标记sack数据包的序列号可以选择重传丢失的数据包,sack(selective ack选择性确认)是tcp选项,它可以使得接收方能告诉发送方哪些报文段丢失,哪些报文段重传了,哪些报文段已经提前收到等信息。
91.步骤s210、若是,则将上一请求报文得到的应答信息、上一请求报文的确定标识及对应序列号、报错标识及对应序列号、选择重传标识及对应序列号和第二循环冗余校验信
息组成应答报文发送至发送端。
92.具体的,若上一请求报文正在处理,可以将上一请求报文得到的应答信息、上一请求报文的确定标识及对应序列号、报错标识及对应序列号、选择重传标识及对应序列号和第二循环冗余校验信息组成应答报文发送至发送端,例如sack+nak+ack with data报文,ack可以表示确定标识即成功确认,ack附带的序列号可以是当前应答报文的序列号,ack with data可以表示上一请求报文得到的应答信息和上一请求报文的确定标识及对应序列号,即当前正在处理的请求报文的应答信息和确定标识及对应序列号。
93.步骤s220、当上一请求报文是发送了选择重传标识及对应序列号且正在等待处理时,将报错标识及对应序列号、下一请求报文的选择重传标识及对应序列号和第二循环冗余校验信息组成不含应答信息的应答报文发送至所述发送端。
94.具体的,当上一请求报文是发送了选择重传标识及对应序列号且正在等待处理时,可以将报错标识及对应序列号、下一请求报文的选择重传标识及对应序列号和第二循环冗余校验信息组成不含应答信息的应答报文发送至所述发送端,例如sack+nak without data报文。
95.本实施例的其他结构与实施一相同,此处不再赘述。
96.实施例三
97.本实施例与实施例二的区别在于,在实施例二的基础上,本实施例对报文的重传方法作进一步的说明。
98.在本发明的一些实施例中,标识信息及对应序列号包括报错标识及对应序列号和/或确定标识及对应序列号和/或选择重传标识及对应序列号,选择重传标识包括第一选择重传标识或第二选择重传标识,第一选择重传标识序列号小于第二选择重传标识序列号,下面对步骤s120、若是,则接收端根据第一序列号和请求信息,匹配发送对应的应答报文至发送端的过程进行介绍,该过程可以包括以下步骤:
99.步骤s121、确定请求报文的第一序列号与第三序列号的大小关系。设置第三序列号,第三序列号为表示接收端确认收到的正确的请求报文序列号加一个序列号步长;确定所述请求报文的第一序列号与第三序列号的大小关系。
100.具体的,第三序列号可以表示接收端确认收到的正确的请求报文序列号加一,可以用nrs表示,可以确定请求报文的当前请求报文序列号和接收端确认收到的正确的请求报文序列号的大小关系,即确定请求报文的第一序列号与第三序列号的大小关系。
101.步骤s122、当第一序列号与所述第三序列号相等时,将应答信息、确定标识及对应序列号和第二循环冗余校验信息组成应答报文,发送至发送端。
102.具体的,当请求报文的当前请求报文序列号和接收端确认收到的正确的请求报文序列号的大小相等,即第一序列号与所述第三序列号相等时,可以将应答信息、确定标识及对应序列号和第二循环冗余校验信息组成应答报文,发送至发送端,例如ack with data报文。
103.步骤s123、当第一序列号大于所述第三序列号时,确定接收端是否存在第二选择重传标识及对应序列号。
104.具体的,当请求报文的当前请求报文序列号大于接收端确认收到的正确的请求报文序列号,即第一序列号大于所述第三序列号时,可以进一步确定接收端是否存在第二选
择重传标识及对应序列号,例如sack0和sack1,sack1的序列号大于sack0的序列号。
105.步骤s124、若存在,则将报错标识及对应序列号、第一选择重传标识及对应序列号、第二选择重传标识及对应序列号和第二循环冗余校验信息组成不含应答信息的应答报文发送至所述发送端。
106.具体的,若存在第二选择重传标识及对应序列号,则可以将报错标识及对应序列号、第一选择重传标识及对应序列号、第二选择重传标识及对应序列号和第二循环冗余校验信息组成不含应答信息的应答报文发送至所述发送端,例如sack0+sack1+nakwithoutdata报文。
107.步骤s125、若不存在,则将报错标识及对应序列号、第一选择重传标识及对应序列号和第二循环冗余校验信息组成不含应答信息的应答报文发送至所述发送端。
108.具体的,若不存在第二选择重传标识及对应序列号,则可以将报错标识及对应序列号、第一选择重传标识及对应序列号和第二循环冗余校验信息组成不含应答信息的应答报文发送至所述发送端,例如sack0+nak without data报文。
109.步骤s126、当第一序列号小于所述第三序列号时,当所述第一序列号小于所述第三序列号时,将所述第一序列号对应的应答报文重传至所述发送端。
110.具体的,当请求报文的当前请求报文序列号小于接收端确认收到的正确的请求报文序列号,即第一序列号小于所述第三序列号时,可以将应答信息、确定标识及对应序列号和第二循环冗余校验信息组成应答报文,发送至所述发送端,例如ack with data报文。
111.本实施例的其他结构与实施二相同,此处不再赘述。
112.实施例四
113.本实施例与实施例三的区别在于,在实施例三的基础上,本实施例对报文的重传方法作进一步的说明。
114.在本发明的一些实施例中,请求报文还包括第二序列号,所述第二序列号表示确认收到的正确的应答报文序列号,标识信息及对应序列号可以包括报错标识及对应序列号和/或确定标识及对应序列号和/或选择重传标识及对应序列号,选择重传标识可以包括第一选择重传标识或第二选择重传标识,第一选择重传标识序列号小于第二选择重传标识序列号,下面对步骤s170、若是需要重传,则发送端根据标识组执行对应的请求报文重传操作的过程进行介绍,该过程可以包括以下步骤:
115.步骤s171、当标识组为报错标识及对应序列号,应答报文中不包含应答信息时,确定应答报文需要重传,执行重传序列号与报错标识及对应序列号一致的请求报文。
116.具体的,当标识组为报错标识及对应序列号,应答报文中不包含应答信息时,即应答报文是nak without data报文时,可以确定应答报文需要重传,执行重传序列号与报错标识及对应序列号一致的请求报文。
117.步骤s172、当标识组为确定标识及对应序列号,且确定标识序列号大于第二序列号时,重传序列号大于第二序列号且小于确定标识序列号的请求报文。
118.具体的,第二序列号可以表示发送端确认收到的正确的应答报文序列号,可以用twas表示,当标识组为确定标识及对应序列号,且确定标识序列号大于第二序列号时,重传序列号大于第二序列号且小于确定标识序列号的请求报文。
119.步骤s173、当标识组为报错标识及对应序列号和选择重传标识及对应序列号,应
答报文中不包含应答信息时,确定标识信息及对应序列号是否存在第二选择重传标识及对应序列号。
120.具体的,当标识组为报错标识及对应序列号和选择重传标识及对应序列号,应答报文中不包含应答信息时,即应答报文是sack+nak without data时,确定发送端是否存在第二选择重传标识及对应序列号。
121.步骤s174、若存在,则重传序列号大于第一选择重传标识序列号且小于第二选择重传标识序列号的请求报文,和序列号大于等于报错标识对应序列号且小于第一选择重传标识序列号的请求报文。
122.具体的,若是存在第二选择重传标识及对应序列号,则重传序列号大于第一选择重传标识序列号且小于第二选择重传标识序列号的请求报文,和序列号大于等于报错标识对应序列号且小于第一选择重传标识序列号的请求报文,即响应sack0+sack1+nakwithoutdata报文。
123.步骤s175、若不存在,则重传序列号大于等于报错标识对应序列号且小于第一选择重传标识序列号的请求报文。
124.具体的,若不存在第二选择重传标识及对应序列号,则重传序列号大于等于报错标识对应序列号且小于第一选择重传标识序列号的请求报文,即响应sack+nak without data报文。
125.步骤s176、当标识组为报错标识及对应序列号、确定标识及对应序列号和选择重传标识及对应序列号,应答报文中包含应答信息时,确认第二序列号与确定标识序列号的大小关系。
126.具体的,当标识组为报错标识及对应序列号、确定标识及对应序列号和选择重传标识及对应序列号,应答报文中包含应答信息,即应答报文是sack+nak+ack with data时,可以进一步确认第二序列号与确定标识序列号的大小关系。
127.步骤s177、若确定标识序列号与第二序列号相等,则重传序列号大于第一选择重传标识序列号且小于第二选择重传标识序列号的请求报文。
128.具体的,若确定标识序列号与第二序列号相等,则可以重传序列号大于第一选择重传标识序列号且小于第二选择重传标识序列号的请求报文,即sack0与sack1之间的请求报文。
129.步骤s178、若确定标识序列号大于第二序列号,则重传序列号大于第二序列号且小于确定标识序列号的请求报文,和序列号大于第一选择重传标识序列号且小于第二选择重传标识序列号的请求报文。
130.具体的,若确定标识序列号大于第二序列号,则可以重传序列号大于第二序列号且小于确定标识序列号的请求报文,和序列号大于第一选择重传标识序列号且小于第二选择重传标识序列号的请求报文。
131.步骤s179、若确定标识序列号小于第二序列号,则重传序列号大于第一选择重传标识序列号且小于第二选择重传标识序列号的请求报文。
132.具体的,若确定标识序列号小于第二序列号,则可以重传序列号大于第一选择重传标识序列号且小于第二选择重传标识序列号的请求报文。
133.本实施例的其他结构与实施三相同,此处不再赘述。
134.实施例五
135.在本发明的一些实施例中,请求报文可以包括第二序列号,第二序列号可以表示确认收到的正确的应答报文序列号,为释放接收端的缓存空间,本方案还可以包括以下步骤:
136.接收端根据第二序列号清除对应的应答报文。
137.具体的,在确认应答报文被发送端正确接收后,接收端可以根据第二序列号清除对应的应答报文。
138.在本发明的一些实施例中,本方案还可以包括以下步骤:
139.当所述请求报文发送超时时,发送端执行对请求报文的重传操作。
140.进一步的,本方案还可以包括:
141.当应答报文发送超时时,接收端向发送端发送由报错标识及对应序列号和第二循环冗余校验信息组成的不含应答信息的应答报文。
142.可以理解的是,当接收到未按序到达的报文时,本方案还可以包括:
143.发送端对未按序到达的应答报文缓存并执行排序操作;
144.接收端对未按序到达的请求报文缓存并执行排序操作。
145.本实施例的其他结构与实施三相同,此处不再赘述。
146.在本发明的一些实施例中,提供了一种可选的报文的重传方法应用场景,如图2图3所示,例如有1-8序列号的报文在接收端等待传送,此时接收端在初始状态,未收到请求报文,nrs(nextreceivesequence下一个接收序列号)=1,即等待接收的请求报文序列号应为1。当正常收到请求报文1、6、8,且请求报文3、4、5、7丢包,请求报文2报错,此时回复nrs-1=1及sack=6及sack=8,发送端收到序列号为6的sack且附带nrs-1为1,所以发送端重传请求报文2-5,又收到序列号为8的sack,且前面有sack标记,所以发送端重传请求报文7。
147.进一步的,发送端在重传请求报文2-5、7后,可以考虑如下两种情况:
148.情况一
149.如图3.1所示,当请求报文2丢失,请求报文3-5、7正常收到时,那么接收端对应请求报文回复如下:回复请求报文3:sack0=3,sack1=6,nrs-1=1;回复请求报文4:sack0=4,sack1=6,nrs-1=1;回复请求报文5sack0=5,sack1=6,nrs-1=1;回复请求报文7:sack0=7,sack1=8,nrs-1=1。发送端在收到请求报文3的应答报文后,根据其附带的sack0重传请求报文2,并给请求报文3加上sack标记。此时如果在一个rtt内又收到了对应与请求报文4的应答报文,那么根据其sack0重传与应答报文3的sack0之间的报文,但请求报文3已经有sack标记了所以不用重传,如果过了一个rtt时间还没有收到请求报文5的应答,那么根据应答报文4的sack1.重传请求报文5,收到了请求报文7的应答报文之后,因为其前后都是sack标记的请求报文,所以不用重传。
150.情况二
151.如图3.2所示,当请求报文2正确收到,请求报文3-5、7丢失,那么nrs加1变成3,此时请求报文3-5、7只能等待发送端超时重传,接收端正确收到请求报文2之后,发送端收到请求报文2的ack应答报文,所以请求报文2从发送端的缓冲区中删除。收到ack应答会重置超时重传计时器,然后等计时器超时之后,重传发送端的缓冲区中除了有sack标记之外的所有请求报文,即重传请求报文3-5、7。
152.本实施例的其他结构与实施四相同,此处不再赘述。
153.实施例六
154.本发明还提出了一种报文的重传方法,本实施例在发送端设置第一重传缓冲区和第一排序缓冲区,在接收端设置第二重传缓冲区和所述第二排序缓冲区,其中:
155.发送端(tx),用于执行上述报文的重传方法中的发送端部分,此处不再进行介绍;
156.接收端(rx),用于执行上述报文的重传方法中的接收端部分,此处不再进行介绍;
157.第一重传缓冲区(txretrybuffer),用于缓存发送端的请求报文,执行请求报文重传操作;
158.第一排序缓冲区(txreorderbuffer),用于缓存发送端收到的未按序到达的应答报文,对未按序到达的应答报文的执行排序操作;
159.第二重传缓冲区(rxretrybuffer),用于缓存接收端发送的应答报文,清除与第二序列号对应的应答报文,执行应答报文重传操作;
160.第二排序缓冲区(rxreorderbuffer),用于缓存接收端收到的未按序到达的请求报文,对未按序到达的请求报文的执行排序操作。
161.图2、图3为系统在发送端和接收端设置的缓冲区的示意图,在发送端和接收端各设置两个缓冲区。各个标识和缓冲区的作用如下:retrybuffer负责重传、reorderbuffer(重排序缓冲区)负责将乱序的数据包重排序:
162.图4中,第一重传缓冲区(txretrybuffer),发送端重试缓存区:缓存发送端的请求报文,在接收到某个请求的正确应答之后,可以将该请求报文从缓冲区清除。在收到nak标识的应答时,重传相应报文。在收到sack标识的应答时,缓冲区中对应序列号的请求报文条目加上sack标记,发生重传时不重传具有该标记的请求报文。
163.第二排序缓冲区(rxreorderbuffer),接收端重新排序缓冲区:缓存接收端接收的未按序到达的请求报文,需要将请求报文重整为按序之后才能进一步处理。
164.nts(nexttransmitsequence下一个传输序列号):发送端下一个待发送的序列号,每发送一个请求报文都会加1。
165.twas(txwaitackedsequence发送端等待序列号):发送端下一个待确认的序列号,在其之前的序列号都已被确认,每按序收到一个正确的应答就加1。
166.nrs(nextreceivesequence下一个接收序列号):接收端下一个待接收的序列号,接收端每按序收到一个正确的请求报文就加1。
167.图5中,第一排序缓冲区(txreorderbuffer),发送端重新排序缓冲区:缓存发送端收到的未按序到达的应答报文,需要将应答报文重整为按序之后才能进一步处理。
168.第二重传缓冲区(rxretrybuffer),接收端重试缓存区:缓存接收端发送的应答报文,在收到附带在请求报文中的序列号twas-1之后,可以将该序列号对应的应答报文从缓冲区中清除。当接收端收到的请求报文序列号小于nrs时,需要从该缓冲区重传对应序列号的应答报文。
169.rwas(rxwaitackedsequence接收端等待序列号):接收端下一个待确认的应答序列号,当接收端收到的请求报文序列号等于rwas时,重传相应序列号的应答报文,rwas加1。
170.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作
之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
171.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间可以相互组合,且相同相似部分互相参见即可。其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。
172.对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1