实现数据包重发的方法、装置及系统的制作方法

文档序号:7712562阅读:148来源:国知局
专利名称:实现数据包重发的方法、装置及系统的制作方法
技术领域
本发明涉及通信技术领域,特别是涉及实现数据包重发的方法、装置及系统。
背景技术
PCIE ( Peripheral Component Interconnect-Express, 增强型夕卜设组件 互连标准)是一种高速、高可靠性的传输协议,在存储系统中得到广泛的应用。 从协议本身来看,高可靠性的本质,是通过ACK/NAK的传输机制来保证的。
PCIE传输协议分为三层设备层、数据链路层、物理层,ACK/NAK协议是 在数据链路层以DLLP (Data Link Layer Packet,数据链路层传输的数据包) 的形式体现的。
发送端的数据链路层,有一个序列号发生器,用于为每个需要发送的TLP (Transaction Layer Packet,处理层协议包)包顺序产生一个序列号。接收 端有一个NEXT-RCV—SEQ计数器,用于顺序跟踪下一个应该收到TLP包的序列 号,接收端每接收到一个正确的TLP包,该计数器增加l,以此来保证发送端 的发送顺序的一致性。如果接收的TLP包出现错误,计数器维持不变,并丢弃 该序列号之后的所有TLP包,不管后来的数据包是否正确,然后等待该序列号 以后的TLP包重发。
但是,本发明人在实现本发明的过程中发现,因接收的TLP包出现错误而 丢弃该序列号之后的所有TLP包,不管后来的数据包是否正确,造成了链路带 宽的浪费。并且,在高IOPS (I/O per second,每秒进行输入/输出的次数) 情况下,链路上可能同时存在多个TLP包,如果首个TLP包出错后,按照现有 技术的重发方法,会导致途中全部TLP都需要重发。另外,当系统受到静电干 扰、传导干扰或者辐射干扰时,传输的数据会出现间隔性的出错,如此频繁地 重发冗余的TLP包,会导致的浪费将更加严重,降低了链路的有效使用率。

发明内容
本发明提供实现数据包重发的方法、装置及系统,能够减少不必要的链路 重发,提高链路的有效使用率。
为实现上述目的,本发明提供了如下方案 一种实现数据包重发的方法,包括
接收到第一个带有数据包标识的接收错误响应消息时,进入重发模式,继 续接收针对发送緩冲区中已发送数据包分别返回的响应消息;
接收到发送緩冲区中已发送的全部数据包的响应消息后,根据所述响应消 息的类型及携带的数据包标识确定发生接收错误的数据包,重发所述发生接收 错误的数据包。
一种实现数据包重发的方法,包括
当发现数据包错误时,返回带有该数据包标识的接收错误响应消息;进入 等待重发模式,继续完成对其他已接收数据包的校验;针对接收緩冲区内其他 各数据包,分别返回带有数据包标识的响应消息,其中,如果数据包接收正确, 则返回带有数据包标识的接收正确响应消息,如果数据包接收错误,则返回带 有数据包标识的接收错误响应消息;
接收重发的发生接收错误的数据包,校验正确后,将所述重发的数据包按 照序列号顺序插入到接收緩冲区对应的位置。
一种实现数据包重发的装置,位于发送端,包括
消息接收单元,用于接收到第一个带有数据包标识的接收错误响应消息
时,进入重发模式,继续接收针对发送緩冲区中已发送数据包所返回的响应消 台
数据包重发单元,用于根据所述响应消息的类型及携带的数据包标识确定 发生接收错误的数据包,重发所述发生接收错误的数据包。
一种实现数据包重发的装置,位于接收端,包括
消息发送单元,用于当发现数据包错误时,返回带有该数据包标识的接收 错误响应消息;进入等待重发模式,继续完成对其他已接收数据包的校验;针 对接收緩冲区内其他各数据包,分别返回带有数据包标识的响应消息,其中, 如果数据包接收正确,则返回带有数据包标识的接收正确响应消息,如果数据
6重发数据包接收单元,用于接收重发的发生接收错误的数据包,校验正确 后,将所述重发的数据包按照序列号顺序插入到接收緩冲区对应的位置。
一种实现数据包重发的系统,包括发送端装置,用于接收到第一个带 有数据包标识的接收错误响应消息时,进入重发模式,继续接收针对发送緩冲 区中已发送数据包所返回的响应消息;根据所述响应消息的类型及携带的数据 包标识确定发生接收错误的数据包,重发所述发生接收错误的数据包;
接收端装置,用于当发现数据包错误时,返回带有该数据包标识的接收错 误响应消息;进入等待重发模式,继续完成对其他已接收数据包的校验;针对 接收緩冲区内其他各数据包,分别返回带有数据包标识的响应消息,其中,如 果数据包接收正确,则返回带有数据包标识的接收正确响应消息,如果数据包 接收错误,则返回带有数据包标识的接收错误响应消息;接收重发的发生接收 错误的数据包,校验正确后,将所述重发的数据包按照序列号顺序插入到接收 緩冲区对应的位置。
根据本发明提供的具体实施例,本发明公开了以下技术效果 本发明实施例能够实现选择性重发的机制,当发送端发现发生接收错误的 数据包时,可以仅将该发生错误的数据包重发,而不用再重发该发生4普误的数 据包之后已发送的全部数据包。因此,可以避免重发冗余数据,减少不必要的 链路重发,提高链路的有效使用率。特别在传输数据出现间歇性错误时候,带 来的有益效果更加明显。


为了更清楚地说明本发明实施例或现有4支术中的技术方案,下面将对实施 例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是 本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性 的前提下,还可以根据这些附图获得其他的附图。
图l是本发明实施例提供的方法的流程图2是本发明实施例提供的另一方法的流程图;图3是本发明实施例提供的进行TLP包重发过程的示意图;
图4是本发明实施例提供的发送端装置的示意图5是本发明实施例提供的另一发送端装置的示意图6是本发明实施例提供的接收端装置的示意图7是本发明实施例提供的另一接收端装置的示意图8是本发明实施例提供的系统的示意图。
具体实施例方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式
对本发明作进一步详细的说明。
参见图1,本发明实施例提供的实现数据包重发的方法包括以下步骤
S101:接收到第一个带有数据包标识的接收错误响应消息时,进入重发才莫 式,继续接收针对发送緩冲区中已发送数据包所返回的响应消息;
S102:接收到发送緩冲区中已发送的全部数据包的响应消息后,根据所述 响应消息的类型及携带的数据包标识确定发生接收4晉误的数据包,重发所述发 生接收错误的数据包。
上述步骤S201及S202的执行主体为发送端,当发送端接收到接收端发送 的第一个带有数据包标识的接收错误响应消息(no-Acknowlegment, NAK )时, 则自动进入重发模式,此时,不再向接收端发送新的数据包;但是,由于已经 发送到接收端的其他数据包可能还有被校验完,接收端还没有返回对这些数据 包的响应消息,因此,发送端需要继续接收发送緩冲区中其他各已发送数据包 的响应消息;等到接收到已发送的全部数据包的响应消息后,就可以根据响应 消息的类型及响应消息中携带的数据包标识确定在接收端发生接收错误的数 据包,并重发所述在接收端发生错误的数据包。
其中,所述响应消息的类型是指接收正确响应消息ACK( Acknowlegment ) 或接收错误响应消息NAK。当发送端进入重发模式之后,接收端也进入等待重 发模式,此时,接收端会针对接收緩冲区中的各个数据包分别返回响应消息,其中,如果数据包接收正确,则返回ACK消息,否则,就返回NAK消息,每条 响应消息中,还携带了数据包的标识,这样,发送端在接收到响应消息后,如 果发现时NAK消息,则会从该消息中获取数据包标识,并将该数据包确定为发 生了接收错误的数据包。同时,当发送端发现发送緩冲区内所有已发送的数据 包都得到了响应之后,便可以知晓接收端已经将接收到的所有数据包都校验完 毕,发送端便可以进行数据包的重发操作了 。
在同一重发模式下,当在接收端发生接收错误的数据包为多个时,可以按 照所述发生接收错误的数据包的序列号从小到大的顺序,重发所述在接收端发 生接收错误的数据包。可见,发送端在进行数据包重发时,只需要选择性地发 送在接收端发生接收错误的数据包。
重发的数据包也可能错误的,所以发送端重发完后,需要等到接收端确认 重发的数据包都正确了之后再退出。否则,如果重发的数据包也出错,则可以 再次重发,直到接收端校验正确。当然,也可以重发数据包的最大次数,当重 发次数达到该预置的最大值之后,发送端可以不再重发该数据包。发送端退出 重发模式后,继续接收上层下发的新数据包。
相应的,参见图2,接收端实现数据包重发的方法包括以下步骤
S201:当发现数据包错误时,返回带有该数据包标识的接收错误响应消息; 进入等待重发模式,继续完成对其他已接收数据包的校验;针对接收緩冲区内 其他各数据包,分别返回带有数据包标识的响应消息,其中,如果数据包接收 正确,则返回带有数据包标识的接收正确响应消息,如果数据包接收错误,则 返回带有数据包标识的接收错误响应消息;
S202:接收重发的发生接收错误的数据包,校验正确后,将所述重发的数 据包按照序列号顺序插入到接收緩冲区对应的位置。
上述步骤S201及S202的执行主体为接收端,当接收端发现发生错误的数 据包时,向发送端发送带有数据包标识的NAK消息,同时自动进入等待重发模 式;由于已经接收到的数据包可能还有完全被校验完成,因此,需要继续完成 对其他已接收数据包的校验,针对接收緩冲区内其他各数据包,分别返回带有 数据包标识的响应消息;接收到发送端重发的发生错误的数据包后,进行校验,如果校验通过,将所述重发的数据包按照序列号顺序插入到緩冲区对应的位 置,以保证各个数据包之间顺序的正确性。
需要说明的是,发送端存在发送緩冲区,已发送但尚未得到接收正确响应
消息的数据包会緩存在该发送緩存区中;同时,4妄收端存在4妻收緩存区,已接
收但尚未向发送端返回接收正确响应,以及正在进行校验过程中的数据包,会 緩存在该接收数据包中。因此,接收緩冲区中的数据包,在发送緩冲区中仍然存在。
在非重发模式下,如果接收端当前校验完成的数据包正确的情况,可能不 会对马上对校验完的数据包返回响应消息,而是在正确数据包达到预置数目
时,或者在达到预置时间时,向发送端返回一个代表前N个数据包接收正确的 ACK ( Acknowlegment)消息。
而在本发明实施例中,进入重发模式后,会对当前接收緩冲区中的数据包 进行批处理,因此,发送端需要以接收緩冲区的数据包全部校验完毕为触发条 件,进行数据包的选择性重发。这样,接收端就需要将接收緩冲区中各个数据 包的校验结果通知给发送端,以便发送端知晓接收緩冲区中的数据包是否已经 全部校验完成,同时,还可以确定需要对哪些数据包进行选择性重发。为此, 接收端在进入等待重发模式之后,需要为接收緩冲区中的各个数据包分别返回 一个响应消息。
其中,如果数据包接收正确,则返回带有该数据包标识的ACK响应消息; 如果数据包接收错误,则返回带有数据包标识的NAK响应消息。这样,发送端 在接收到响应消息之后,就可以根据消息的类型(ACK或NAK)以及消息中的 数据包标识,判断出哪些数据包需要重发。同时,如果发送緩冲区内所有已发 送的数据包都收到了响应消息,则发送端就可以获知接收端已经将接收緩冲区 内的全部数据包校验完毕,此时,发送端就可以进行数据包的选择性重发了。
同样,在同一等待重发模式下,当在接收端发生错误的数据包为多个时, 可以按照所述发生错误的数据包的序列号从小到大的顺序,接收发生错误的数 据包。此时,在接收到发送端重发的发生错误的数据包之前,还可以将各发生 错误的数据包中最小的序列号作为下一个需要接收的数据包的序列号;并且,
10在发送端重发发生错误的数据包过程中,按照所述发生错误的数据包序列号从 小到大的顺序,更新下一个需要接收的数据包的序列号。接收端接收重发的数 据,并校验正确后,将数据包按照顺序放在緩冲区正确的位置上,退出重发模 式。
为了便于理解,下面以利用PCIE协议传输TLP包为例,对本发明实施例 提供的方法进行详细地介绍。
首先需要说明的是,在进行TLP包的发送与接收的同时,接收端对每个 TLP进行校验,两个过程是独立的,因此,接收端在接收到一个TLP包之后会 继续接收下一个TLP包,而不用等到上一个TLP包校验完成。因此,当接收端 校验发现某个TLP包发生错误时,接收端可能已经接收到了在该TLP包之后发 送的多个TLP包。
在本发明实施例中,当校验发现某个TLP包发生错误时,则向发送端返回 NAK消息,同时设置NAK-SCHESULED标志,进入等待重发模式,NEXT_REC_SEQ 标记为第一个需要重发TLP的序列号。该NEXT—REC-SEQ标记是一个跟踪下一 个序列号的计数器。正常接收的情况下,假设接收到8号TLP包,接收端的 NEXT-REC-SEQ值也是8,则代表现在接收到的TLP包正好是接收端需要接收的 TLP包,之后,该8号TLP就会按照接收流程进入其他处理。然后NEXT—REC-SEQ 的值就会变成9,以此来标识下一个需要"^妻收到的TLP包的序列号是9,如果 下次-接收到的不是9号TLP包,4妄收端就不接收了 。
参见图3,假设接收端校验发现9号TLP包发生错误,则在本发明实施例 中,需要向发送端发送带有该TLP标识的NAK消息,为方便描述,假设该NAK 消息为NAK 9;同时,接收端设置NAK—SCHESULED标志位,例如设为1,进入 等待重发模式;并且还需要将NEXT-REC-SEQ标记为9,以此来标识出下一个 需要接收到的TLP包的序列号是9。
发送端在接收到NAK9消息后,同样也进入重发模式,此时,发送端将不 再接收上层下发的新TLP包,因此也不再向接收端发送新的TLP包;但也不需 要马上重发9号TLP包,而是等到发送緩冲区里面已经发送的TLP包全部回复 完成之后,再对错误的TLP针对性的重发。之所以要等到緩沖区里面已经发送的TLP包全部回复完成之后,再对错误
的TLP针对性的重发,是因为,接收端在进入等待重发模式之后,虽然不再接 收新的TLP包,但是已经接收的TLP包可能还没有校验完成,因此,在等待重 发模式下,发生错误的TLP包可能为多个,而且每次校^r完成一个TLP包发现 错误时,都需要再针对每个TLP包发送一个带有TLP标识的NAK,在等待重发 模式下,也会针对接收正确的数据包返回带有TLP标识的ACK。发送端需要等 到所有已经发送的TLP包都校验完成并返回响应消息之后,再对NAK消息对应 的TLP包进行选择性地重发。
其中,所述还没有完成校验的TLP包可能包括在9号TLP包之前接收到的 TLP包,这是因为,对校验TLP包所需的时间与TLP包的长度成正比,因此, 对不同的TLP包校验所需的时间会有所不同,这就使得先接收到的TLP包不一 定先完成才交验,返回的NAK对应的TLP包的词序也不一定与发送顺序相同。同 时,由于NEXT—REC-SEQ所标记的第一个需要重发的TLP的序列号,通常为同 一重发模式下所有发生错误的TLP包中序列号最小的一个,因此,在等待重发 模式下,每发现一个错误的TLP包,在向发送端返回NAK的同时,还需要将该 TLP包的序列号与当前NEXT-REC—SEQ中记录的序列号进行比较,如果前者较 小,则将NEXT—REC-SEQ中记录的序列号更新为该TLP包的序列号。
例如,在上述例子中,由于最先发现9号TLP包发生错误,因此, NEXT-REC-SEQ中记录的序列号为9;但是,如果在等待重发模式下,对7号 TLP包完成校验并发现该TLP包发生错误,则在向发送端返回NAK 7的同时, 发现该TLP包的序列号7小于当前NEXT—REC—SEQ中记录的序列号为9,因此, 还需要将NEXT_REC_SEQ中记录的序列号更新为7,以此来标识出下一个需要 重发的TLP的序列号为7。
发送端在等到发送出去的全部TLP包都返回响应之后,就可以进行TLP 包的重发了。由于接收端的NEXT_REC_SEQ中记录的序列号,为同一重发模式 下所有发生错误的TLP包中序列号最小的一个,因此,发送端也首先重发该重 发模式下所有发生错误的TLP包中序列号最小的一个。例如,上述例子中,在 该重发模式下,最终发现发生错误的TLP包的序列号分别为7、 9、 11,则发 送端会首先重发7号TLP包,然后再依次重发9号及11号。接收端在接收到7号TLP包之后,将该TLP包的序列号与NEXT_REC-SEQ 中记录的序列号进行比对,确认一致后,按照序列号将该TLP包插入到緩冲区 相应的位置,以保证接收顺序的正确性;同时,从緩冲区得到下个需要重发的 TLP序列号9,并将NEXT-REC-SEQ中记录的序列号更新为9,等待发送端重发 9号TLP包。以此类推,当全部发生错误的TLP包全部重发成功之后,清除 NAK—SCHESULED标志位,例如设为0,退出等待重发模式,返回到正常发送接 收^t式,继续进行TLP包的传输。
其中,在按照序列号将该TLP包插入到緩冲区相应的位置时,由于緩冲区 存放TLP包的顺序,是在正常发送流程的时候按照接收的先后顺序存放的,不 可能是乱序的;如果在这个次序中有错误的TLP包,比如前述例子中的7、 9、 ll号TLP包,则重发正确之后,把正确的数据包放在原来的位置即可。例如, 7号TLP包要在8号前面,不能在后面,9号包要在8、 IO中间,不能在别的 地方,以此来保持原来的顺序。
发送端在重发完全部的TLP包,并等到接收端回复重发成功之后,也将退 出重发模式,返回到正常发送接收模式,继续进行TLP包的传输即可。
总之,利用本发明实施例所述的方法,当接收端发现某个TLP包发生错误 时,不必再将该TLP包之后接收到的所有TLP包都进行重发,仅传输发生错误 的TLP包即可。
可见,通过本发明实施例所述的方法,实现了 PCIE链路错误处理过程中 的选择性重发机制,可以避免重发冗余数据,减少不必要的链路重发,提高链 路的有效使用率。特别在传输数据出现间歇性错误的情况下,带来的效果更加 明显。
与本发明实施例提供的方法相对应,本发明实施例还提供了一种实现数据 包重发的装置,该装置位于发送端,参见图4,该装置包括
消息接收单元U401,用于接收到第一个带有数据包标识的接收错误响应 消息时,进入重发模式,继续接收针对发送緩冲区中已发送数据包所返回的响 应消息;
数据包重发单元U402,用于根据所述响应消息的类型及携带的数据包标
13识确定发生接收错误的数据包,并重发所述发生接收错误的数据包。 发送端进入重发模式后,参见图5,该装置还包括
重发模式退出单元U403,用于将所述发生接收错误的全部数据包重发完 毕,且在接收到重发成功消息后,退出重发模式,继续发送新数据包。
在同一重发模式下,当发生接收错误的数据包为两个或两个以上时,数据 包重发单元U402包括
判断子单元U4021,用于根据所述响应消息的类型及携带的数据包标识确 定发生接收错误的数据包;
顺序重发子单元U4022,用于按照所述发生接收错误的数据包的序列号从 小到大的顺序,重发所述发生接收错误的数据包。
同时,本发明实施例还提供了另一种实现数据包重发的装置,该装置位于 接收端,参见图6,该装置包括
消息发送单元U601,用于当发现数据包错误时,返回带有该数据包标识 的接收错误响应消息;进入等待重发模式,继续完成对其他已接收数据包的校 验;针对接收緩冲区内其他各数据包,分别返回带有数据包标识的响应消息, 其中,如果数据包接收正确,则返回带有数据包标识的接收正确响应消息,如 果数据包接收错误,则返回带有数据包标识的接收错误响应消息;
重发数据包接收单元U602,用于接收重发的发生接收错误的数据包,校 验正确后,将所述重发的数据包按照序列号顺序插入到接收緩沖区对应的位 置。
重发结束后,接收端可以退出等待重发模式,参见图7,该装置还包括
等待重发模式退出单元U603,用于接收到重发的发生接收错误的全部数 据包,并且全部校验正确后,退出等待重发模式,继续接收新数据包。
通过本发明实施例所述的装置,实现了 PCIE链路错误处理过程中的选择 性重发机制,可以避免重发冗余数据,减少不必要的链路重发,提高链路的有 效使用率。特别在传输数据出现间歇性错误的情况下,带来的效果更加明显。
与本发明实施例提供的实现数据包重发的方法及装置相对应,本发明实施例还提供了一种实现数据包重发的系统,参见图8,该系统包括
发送端装置U801,用于接收到第一个带有数据包标识的接收错误响应消 息时,进入重发模式,继续接收针对发送緩沖区中已发送数据包所返回的响应 消息;根据所述响应消息的类型及携带的数据包标识确定发生接收错误的数据 包,重发所述发生接收错误的数据包;
接收端装置U802,用于当发现数据包错误时,返回带有该数据包标识的 接收错误响应消息;进入等待重发模式,继续完成对其他已接收数据包的校验; 针对接收緩冲区内其他各数据包,分别返回带有数据包标识的响应消息,其中, 如果数据包接收正确,则返回带有数据包标识的接收正确响应消息,如果数据 包接收错误,则返回带有数据包标识的接收错误响应消息;接收重发的发生接 收错误的数据包,校验正确后,将所述重发的数据包按照序列号顺序插入到接 收緩冲区对应的位置。
通过本发明实施例所述的系统,实现了 PCIE链路错误处理过程中的选择 性重发机制,可以避免重发冗余数据,减少不必要的链路重发,提高链路的有 效使用率。特别在传输数据出现间歇性错误的情况下,带来的效果更加明显。
是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算^L可 读取存储介质中,该程序在执行时,在发送端包括如下步骤接收到第一个带 有数据包标识的接收错误响应消息时,进入重发模式,继续接收针对发送緩冲 区中其他各已发送数据包分别返回的响应消息;接收到发送緩冲区中已发送的 全部数据包的响应消息后,根据响应消息的类型及携带的数据包标识确定发生 接收错误的数据包,并重发所述发生接收错误的数据包。在接收端包括如下步 骤当发现数据包错误时,返回带有该数据包标识的接收错误响应消息;进入 等待重发模式,继续完成对其他已接收数据包的校验;针对接收緩冲区内其他 各数据包,分别返回带有数据包标识的响应消息,其中,如果数据包接收正确, 则返回带有数据包标识的接收正确响应消息,如果数据包接收错误,则返回带 有数据包标识的接收错误响应消息;接收重发的发生接收错误的数据包,校验 正确后,将所述重发的数据包按照序列号顺序插入到接收緩冲区对应的位置。 所述的存储介质,如R0M/RAM、磁碟、光盘等。以上对本发明所提供的实现数据包重发的方法、装置及系统,进行了详细
施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域 的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改 变之处。综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1、一种实现数据包重发的方法,其特征在于,包括接收到第一个带有数据包标识的接收错误响应消息时,进入重发模式,继续接收针对发送缓冲区中已发送数据包分别返回的响应消息;接收到发送缓冲区中已发送的全部数据包的响应消息后,根据所述响应消息的类型及携带的数据包标识确定发生接收错误的数据包,重发所述发生接收错误的数据包。
2、 根据权利要求1所述的方法,其特征在于,还包括 将所述发生接收错误的全部数据包重发完毕,且在接收到重发成功消息后,退出重发模式,继续发送新数据包。
3、 根据权利要求1所述的方法,其特征在于,在同一重发模式下,当发 生接收错误的数据包为两个或两个以上时,所述重发所述发生接收错误的数据 包包括按照所述发生接收错误的数据包的序列号从小到大的顺序,重发所述发生 接收错误的数据包。
4、 一种实现数据包重发的方法,其特征在于,包括 当发现数据包错误时,返回带有该数据包标识的接收错误响应消息;进入等待重发模式,继续完成对其他已接收数据包的校验;针对接收緩冲区内其他 各数据包,分别返回带有数据包标识的响应消息,其中,如果数据包接收正确, 则返回带有数据包标识的接收正确响应消息,如果数据包接收错误,则返回带 有数据包标识的接收错误响应消息;接收重发的发生接收错误的数据包,校验正确后,将所述重发的数据包按 照序列号顺序插入到接收緩冲区对应的位置。
5、 根据权利要求4所述的方法,其特征在于,还包括当接收到重发的发生接收错误的全部数据包并且全部校验正确后,退出等 待重发模式,继续接收新数据包。
6、 根据权利要求4所述的方法,其特征在于,在同一重发模式下,当发 生错误的数据包为两个或两个以上时,还包括在接收重发的发生接收错误 的数据包过程中,按照所述发生接收错误的数据包序列号从小到大的顺序,更新下一个需要接收的数据包的序列号。
7、 一种实现数据包重发的装置,位于发送端,其特征在于,包括消息接收单元,用于接收到第一个带有数据包标识的接收错误响应消息时,进入重发模式,继续接收针对发送緩冲区中已发送数据包所返回的响应消 自 数据包重发单元,用于根据所述响应消息的类型及携带的数据包标识确定 发生接收错误的数据包,重发所述发生接收错误的数据包。
8、 根据权利要求7所述的装置,其特征在于,还包括 重发模式退出单元,用于将所述发生接收错误的全部数据包重发完毕,且在接收到重发成功消息后,退出重发模式,继续发送新数据包。
9、 根据权利要求7所述的装置,其特征在于,在同一重发模式下,当发 生错误的数据包为两个或两个以上时,所述数据包重发单元包括判断子单元,用于根据所述响应消息的类型及携带的数据包标识确定发生 接收错误的数据包;顺序重发子单元,用于按照所述发生接收错误的数据包的序列号从小到大 的顺序,重发所述发生接收错误的数据包。
10、 一种实现数据包重发的装置,位于接收端,其特征在于,包括 消息发送单元,用于当发现数据包错误时,返回带有该数据包标识的接收错误响应消息;进入等待重发模式,继续完成对其他已接收数据包的校验;针 对接收緩冲区内其他各数据包,分别返回带有数据包标识的响应消息,其中, 如果数据包接收正确,则返回带有数据包标识的接收正确响应消息,如果数据 包接收错误,则返回带有数据包标识的接收错误响应消息;重发数据包接收单元,用于接收重发的发生接收错误的数据包,校验正确 后,将所述重发的数据包按照序列号顺序插入到接收緩冲区对应的位置。
11、 根据权利要求10所述的装置,其特征在于,还包括 等待重发模式退出单元,用于接收到重发的发生接收错误的全部数据包,并且全部校验正确后,退出等待重发模式,继续接收新数据包。
12、 一种实现数据包重发的系统,其特征在于,包括发送端装置,用 于接收到第一个带有数据包标识的接收错误响应消息时,进入重发模式,继续接收针对发送緩冲区中已发送数据包所返回的响应消息;根据所述响应消息的类型及携带的数据包标识确定发生接收错误的数据包,重发所述发生接收错误的数据包;接收端装置,用于当发现数据包错误时,返回带有该数据包标识的接收错 误响应消息;进入等待重发模式,继续完成对其他已接收数据包的校验;针对 接收緩冲区内其他各数据包,分别返回带有数据包标识的响应消息,其中,如 果数据包接收正确,则返回带有数据包标识的接收正确响应消息,如果数据包 接收错误,则返回带有数据包标识的接收错误响应消息;接收重发的发生接收 错误的数据包,校验正确后,将所述重发的数据包按照序列号顺序插入到接收 緩冲区对应的位置。
全文摘要
本发明公开了一种实现数据包重发的方法,该方法包括接收到第一个带有数据包标识的接收错误响应消息时,进入重发模式,继续接收针对发送缓冲区中已发送数据包分别返回的响应消息;接收到发送缓冲区中已发送的全部数据包的响应消息后,根据所述响应消息的类型及携带的数据包标识确定发生接收错误的数据包,重发所述发生接收错误的数据包。通过本发明,可以避免重发冗余数据,减少不必要的链路重发,提高链路的有效使用率。特别在传输数据出现间歇性错误时候,带来的有益效果更加明显。
文档编号H04L1/18GK101645766SQ20091016943
公开日2010年2月10日 申请日期2009年9月9日 优先权日2009年9月9日
发明者昕 刘, 张陈怡 申请人:成都市华为赛门铁克科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1