发明内容
本发明提供一种实现TCP数据报文重传的方法及设备,用以解决现有技术中存在的通过核心网去重传TCP数据报的方法,重传及时率不高的问题。
本发明实施例提供一种实现传输控制协议TCP数据报文重传的方法,包括:
基站将接收到的来自核心网的TCP数据报文存储到缓存区域,并将接收到的所述TCP数据报文加入到正常优先级发送数据队列;
所述基站在接收到来自终端的TCP应答报文后,判断是否需要向所述终端重传在所述缓存区域中的可供重传的TCP数据报文;
所述基站在确定需要向所述终端重传在所述缓存区域中的所述TCP应答报文中的报文确认号对应的TCP数据报文后,将可供重传的所述TCP数据报文加入到高优先级发送数据队列;
所述基站在确定需要发送TCP数据报文时,按照队列的优先级顺序发送队列中的TCP数据报文。
由于本发明实施例基站会将来自核心网的TCP数据报文存储到缓存区域,在确定需要向终端重传TCP数据报文后,将在缓存区域中的可供重传的TCP数据报文加入到高优先级发送数据队列,并在确定需要发送队列中的TCP数据报文时,按照队列的优先级顺序发送,达到将可供重传的TCP数据报文优先重传给终端的目的,整个重传过程不需要通过核心网去实现,提高了重传的及时率。
较佳地,所述基站将接收到的来自核心网的TCP数据报文存储到缓存区域,包括:
所述基站在接收到来自所述核心网的网络协议IP数据报文后,根据所述IP数据报文的报文头中的协议字段,在确定所述IP数据报文是TCP数据报文后,将接收到的来自所述核心网的所述TCP数据报文存储到所述缓存区域。
由于本发明实施例基站根据IP数据报文的报文头中的协议字段,确定该IP数据报文是TCP数据报文,以便于将确定的TCP数据报文存储到缓存区域。
较佳地,所述基站将接收到的来自核心网的TCP数据报文存储到缓存区域之后,并将接收到的所述TCP数据报文发送给正常优先级发送数据队列之前,还包括:
当在一段时间内所述基站将接收到的多个所述TCP数据报文存储到缓存区域中时,根据接收到的多个所述TCP数据报文的报文头部中的序列号和数据长度,判断接收到的多个所述TCP数据报文是否存在乱序;
所述基站在确定接收到的多个所述TCP数据报文存在乱序后,调整接收到的多个所述TCP数据报文的顺序;
所述基站将接收到的所述TCP数据报文加入到正常优先级发送数据队列,包括:
所述基站按照调整后的顺序,将接收到的多个所述TCP数据报文加入到正常优先级发送数据队列。
由于本发明实施例基站将在一段时间内接收到的多个TCP数据报文调整顺序后,加入到正常优先级发送数据队列中,使多个TCP数据报文在局部是有序的,保证了将序列号较小的TCP数据报文优先发送给终端,优先将序列号较小的TCP数据报文发送给终端可以避免,在一段时间内基站较后的接收到的该序列号较小的TCP数据报文,该序列号较小的TCP数据报文是终端急需的一个TCP数据报文,并且终端已经多次向基站发送确认号等于该较小序列号的TCP应答报文,若此时将序列号较小的TCP数据报文调整到其它序列号较大的TCP数据报文之前发送,终端在接收到该序列号较小的TCP数据报文后,不会再向基站发送确认号等于该较小序列号的TCP应答报文,进而减少了重传次数。
较佳地,所述基站判断是否需要向所述终端重传在所述缓存区域中的可供重传的TCP数据报文之前,还包括:
所述基站在通过空口侧接收到来自所述终端的IP数据报文后,根据所述IP数据报文的报文头中的协议字段,判断所述IP数据报文是否是TCP数据报文;
所述基站在确定所述IP数据报文是TCP数据报文后,根据所述TCP数据报文的报文头中的确认号,在确定所述TCP数据报文是TCP应答报文后,确定执行判断是否需要向所述终端重传在所述缓存区域中的所述应答报文确认号对应的TCP数据报文的步骤。
较佳地,所述基站判断是否需要向所述终端重传在所述缓存区域中的可供重传的TCP数据报文,包括:
若所述TCP应答报文中的报文确认号等于终端最新确认号,且所述缓存区域中存在所述TCP应答报文中的报文确认号对应的TCP数据报文,则所述基站确定需要向所述终端重传所述报文确认号对应的TCP数据报文;
否则,确定不需要向所述终端重传在所述缓存区域中的可供重传的TCP数据报文。
较佳地,所述基站判断是否需要向所述终端重传在所述缓存区域中的可供重传的TCP数据报文,包括:
若所述TCP应答报文中的报文确认号等于终端最新确认号,且所述缓存区域中存在所述TCP应答报文中的报文确认号对应的TCP数据报文,按照设定步长增加重传应答计数器的计数值;
所述基站丢掉所述TCP应答报文,并在确定所述重传应答计数器的计数值达到设定阈值后,确定需要向所述终端重传在所述缓存区域中的可供重传的TCP数据报文,其中所述可供重传的TCP数据报文为所述报文确认号对应的TCP数据报文;或
所述基站将所述缓存区域中的所述报文确认号对应的TCP数据报文标记为重传报文,所述基站丢掉所述TCP应答报文,并在确定所述重传应答计数器的计数值达到设定阈值后,确定需要向所述终端重传在所述缓存区域中的可供重传的TCP数据报文,其中所述可供重传的TCP数据报文为标记为重传报文的所述TCP数据报文;
否则,确定不需要向所述终端重传在所述缓存区域中的可供重传的TCP数据报文;
所述基站将可供重传的所述TCP数据报文加入到高优先级发送数据队列之后,还包括:
所述基站将所述重传应答计数器的计数值置零。
较佳地,该方法还包括:
若所述TCP应答报文中的报文确认号大于所述终端最新确认号,则所述基站根据所述TCP应答报文中的报文确认号更新所述终端最新确认号;
所述基站根据所述报文确认号确定需要释放的在所述缓存区域中的TCP数据报文的序列号,释放确定的所述序列号对应的TCP数据报文,并将所述重传应答计数器的计数值置零;
所述基站将所述TCP应答报文发送给所述核心网。
由于本发明实施例在TCP应答报文中的报文确认号大于终端最新确认号时,会根据报文确认号确定的需要释放的TCP数据报文的序列号,释放确定的序列号对应的TCP数据报文,以使基站将终端接收到的TCP数据报文在缓存区域中删除掉,进而使得缓存区域可以存储更多的终端未接收到的TCP数据报文。
较佳地,该方法还包括:
若所述TCP应答报文中的报文确认号小于所述终端最新确认号,则所述基站将所述TCP应答报文发送给所述核心网。
较佳地,该方法还包括:
若所述TCP应答报文中的报文确认号等于所述终端最新确认号,所述缓存区域中不存在所述TCP应答报文中的报文确认号对应的TCP数据报文,则所述基站将所述TCP应答报文发送给所述核心网。
本发明实施例提供一种实现传输控制协议TCP数据报文重传的设备,包括:
存储模块,用于将接收到的来自核心网的TCP数据报文存储到缓存区域,并将接收到的所述TCP数据报文加入到正常优先级发送数据队列;
判断模块,用于在接收到来自终端的TCP应答报文后,判断是否需要向所述终端重传在所述缓存区域中的可供重传的TCP数据报文;
处理模块,用于在确定需要向所述终端重传在所述缓存区域中的所述TCP应答报文中的报文确认号对应的TCP数据报文后,将可供重传的所述TCP数据报文加入到高优先级发送数据队列;
发送模块,用于在确定需要发送TCP数据报文时,按照队列的优先级顺序发送队列中的TCP数据报文。
较佳地,所述存储模块具体用于:
在接收到来自所述核心网的网络协议IP数据报文后,根据所述IP数据报文的报文头中的协议字段,在确定所述IP数据报文是TCP数据报文后,将接收到的来自所述核心网的所述TCP数据报文存储到所述缓存区域。
较佳地,所述存储模块还用于:
当在一段时间内将接收到的多个所述TCP数据报文存储到缓存区域中时,根据接收到的多个所述TCP数据报文的报文头部中的序列号和数据长度,判断接收到的多个所述TCP数据报文是否存在乱序;在确定接收到的多个所述TCP数据报文存在乱序后,调整接收到的多个所述TCP数据报文的顺序;
所述存储模块具体用于:
按照调整后的顺序,将接收到的多个所述TCP数据报文加入到正常优先级发送数据队列。
较佳地,所述判断模块还用于:
在通过空口侧接收到来自所述终端的IP数据报文后,根据所述IP数据报文的报文头中的协议字段,判断所述IP数据报文是否是TCP数据报文;在确定所述IP数据报文是TCP数据报文后,根据所述TCP数据报文的报文头中的确认号,在确定所述TCP数据报文是TCP应答报文后,确定执行判断是否需要向所述终端重传在所述缓存区域中的可供重传的TCP数据报文的步骤。
较佳地,所述判断模块具体用于:
若所述TCP应答报文中的报文确认号等于终端最新确认号,且所述缓存区域中存在所述TCP应答报文中的报文确认号对应的TCP数据报文,则确定需要向所述终端重传在所述缓存区域中的可供重传的TCP数据报文;否则,确定不需要向所述终端重传在所述缓存区域中的可供重传的TCP数据报文。
较佳地,所述判断模块具体用于:
若所述TCP应答报文中的报文确认号等于终端最新确认号,且所述缓存区域中存在所述TCP应答报文中的报文确认号对应的TCP数据报文,按照设定步长增加重传应答计数器的计数值;丢掉所述TCP应答报文,并在确定所述重传应答计数器的计数值达到设定阈值后,确定需要向所述终端重传在所述缓存区域中的可供重传的TCP数据报文,其中所述可供重传的TCP数据报文为所述应答报文确认号对应的TCP数据报文;或将所述缓存区域中的所述报文确认号对应的TCP数据报文标记为重传报文,丢掉所述TCP应答报文,并在确定所述重传应答计数器的计数值达到设定阈值后,确定需要向所述终端重传在所述缓存区域中的可供重传的TCP数据报文,其中所述可供重传的TCP数据报文为标记为重传报文的所述TCP数据报文;否则,确定不需要向所述终端重传在所述缓存区域中的可供重传的TCP数据报文;
所述处理模块还用于:
将所述重传应答计数器的计数值置零。
较佳地,所述判断模块还用于:
若所述TCP应答报文中的报文确认号大于所述终端最新确认号,则根据所述TCP应答报文中的报文确认号更新所述终端最新确认号;根据所述报文确认号确定需要释放的在所述缓存区域中的TCP数据报文的序列号,释放确定的所述序列号对应的TCP数据报文,并将所述重传应答计数器的计数值置零;将所述TCP应答报文发送给所述核心网。
较佳地,所述判断模块还用于:
若所述TCP应答报文中的报文确认号小于所述终端最新确认号,则将所述TCP应答报文发送给所述核心网。
较佳地,所述判断模块还用于:
若所述TCP应答报文中的报文确认号等于所述终端最新确认号,所述缓存区域中不存在所述TCP应答报文中的报文确认号对应的TCP数据报文,则将所述TCP应答报文发送给所述核心网。
由于本发明实施例基站会将来自核心网的TCP数据报文存储到缓存区域,在确定需要向终端重传TCP数据报文后,将在缓存区域中的可供重传的TCP数据报文加入到高优先级发送数据队列,并在确定需要发送队列中的TCP数据报文时,按照队列的优先级顺序发送,达到将可供重传的TCP数据报文优先重传给终端的目的,整个重传过程不需要通过核心网去实现,提高了重传的及时率。
具体实施方式
本发明实施例基站将接收到的来自核心网的TCP数据报文存储到缓存区域,并将接收到的所述TCP数据报文加入到正常优先级发送数据队列;所述基站在接收到来自终端的TCP应答报文后,判断是否需要向所述终端重传在所述缓存区域中的可供重传的TCP数据报文;所述基站在确定需要向所述终端重传在所述缓存区域中的所述TCP应答报文中的报文确认号对应的TCP数据报文后,将可供重传的所述TCP数据报文加入到高优先级发送数据队列;所述基站在确定需要发送TCP数据报文时,按照队列的优先级顺序发送队列中的TCP数据报文。由于本发明实施例基站会将来自核心网的TCP数据报文存储到缓存区域,在确定需要向终端重传TCP数据报文后,将在缓存区域中的可供重传的TCP数据报文加入到高优先级发送数据队列,并在确定需要发送队列中的TCP数据报文时,按照队列的优先级顺序发送,达到将可供重传的TCP数据报文优先重传给终端的目的,整个重传过程不需要通过核心网去实现,提高了重传的及时率。
如图1所示,本发明实施例一实现TCP数据报文重传的方法包括:
步骤100、基站将接收到的来自核心网的TCP数据报文存储到缓存区域,并将接收到的所述TCP数据报文加入到正常优先级发送数据队列;
步骤101、所述基站在接收到来自终端的TCP应答报文后,判断是否需要向所述终端重传在所述缓存区域中的可供重传的TCP数据报文;
步骤102、所述基站在确定需要向所述终端重传在所述缓存区域中的所述TCP应答报文中的报文确认号对应的TCP数据报文后,将可供重传的所述TCP数据报文加入到高优先级发送数据队列;
步骤103、所述基站在确定需要发送TCP数据报文时,按照队列的优先级顺序发送队列中的TCP数据报文。
本发明实施例可供重传的TCP数据报文是需要重传的TCP数据报文。
本发明实施例基站根据自身数据调度处理机制确定发送高优先级发送数据队列和正常优先级发送数据队列中的TCP数据报文的时间,在达到发送时间时,具体的发送方式为:
所述基站在需要向所述终端发送所述正常优先级发送数据队列中的TCP数据报文和所述高优先级发送数据队列的TCP数据报文时,所述基站首先将所述高优先级发送数据队列中的TCP数据报文发送给所述终端,然后将所述正常优先级发送数据队列中的TCP数据报文发送给所述终端。
例如:高优先级发送数据队列中有两个TCP数据报文,正常优先级发送数据队列中有五个TCP数据报文,此时达到发送时间,基站先将高优先级发送数据队列中的两个TCP数据报文依次发生给终端后,再将正常优先级发送数据队列中的五个TCP数据报文依次发生给终端。
本发明实施例基站不仅会接收到来自核心网的TCP数据报文,还会接收到其它的IP数据报文,基站只会将TCP数据报文存储到缓存区域,具体的实现将接收到的来自核心网的TCP数据报文存储到缓存区域的方式为:
所述基站在接收到来自所述核心网的IP数据报文后,根据所述IP数据报文的报文头中的协议字段,在确定所述IP数据报文是TCP数据报文后,将接收到的来自所述核心网的所述TCP数据报文存储到所述缓存区域。
例如:基站接收到来自核心网的IP数据报文,经判断该IP数据报文为UDP数据报文,基站将该UDP数据报文加入到正常优先级发送数据队列;基站又接收到来自核心网的IP数据报文,经判断该IP数据报文为TCP数据报文,基站将该TCP数据报文存储到所述缓存区域。
本发明实施例基站可以将接收到的来自核心网的一个TCP数据报文存储到缓存区域,并将该TCP数据报文发送给正常优先级发送数据队列。
本发明实施例基站也可以将一段时间内接收到的多个TCP数据报文存储到缓存区域中,并将多个TCP数据报文发送给正常优先级发送数据队列,具体的实现方式为:
当在一段时间内所述基站将接收到的多个所述TCP数据报文存储到缓存区域中时,根据接收到的多个所述TCP数据报文的报文头部中的序列号和数据长度,判断接收到的多个所述TCP数据报文是否存在乱序;
所述基站在确定接收到的多个所述TCP数据报文存在乱序后,调整接收到的多个所述TCP数据报文的顺序;
所述基站将接收到的所述TCP数据报文加入到正常优先级发送数据队列,包括:
所述基站按照调整后的顺序,将接收到的多个所述TCP数据报文加入到正常优先级发送数据队列。
例如:基站在一段时间内依次接收到来自核心网的6个TCP数据报文,其中6个TCP数据报文的序列号分别为1、101、301、201、401和501,每个TCP数据报文的数据长度为100;基站将6个TCP数据报文存储到缓存区域之后,根据TCP数据报文的序列号和数据长度,确定接收到的6个TCP数据报文存在乱序,调整接收到的6个TCP数据报文的顺序,调整后的6个TCP数据报文的序列号顺序为1、101、201、301、401和501,基站按照调整后的顺序,将接收到的6个TCP数据报文加入到正常优先级发送数据队列。如图2(本发明实施例二未调序和调序后的6个TCP数据报文顺序示意图)所示,a为未调序的6个TCP数据报文,b为调序后的6个TCP数据报文,Seqno表示序列号,Data_Len表示数据长度。
本发明实施例基站不仅会通过空口侧接收到来自终端的TCP应答报文,还会接收到其它IP数据报文,基站根据下述方法确定接收到来自终端的TCP应答报文:
所述基站在通过空口侧接收到来自所述终端的IP数据报文后,根据所述IP数据报文的报文头中的协议字段,判断所述IP数据报文是否是TCP数据报文;
所述基站在确定所述IP数据报文是TCP数据报文后,根据所述TCP数据报文的报文头中的确认号,在确定所述TCP数据报文是TCP应答报文后,确定执行判断是否需要向所述终端重传在所述缓存区域中的可供重传的报文确认号对应的TCP数据报文的步骤。
例如:基站通过空口侧接收到来自终端的IP数据报文,根据IP数据报文的报文头中的协议字段所指示的上一层数据报文的协议,可以确定该IP数据报文是TCP数据报文,然后再根据该TCP数据报文的报文头中的ACK(Acknowledgment Number,确认号)的值,此时ACK=1,确定该TCP数据报文是TCP应答报文,接着执行判断是否需要向终端重传在缓存区域中的TCP应答报文中的报文确认号对应的TCP数据报文的步骤。
本发明实施例基站可以采用下述方法判断是否需要向终端重传在缓存区域中的可供重传的TCP数据报文:
方式一:
若所述TCP应答报文中的报文确认号等于终端最新确认号,且所述缓存区域中存在所述TCP应答报文中的报文确认号对应的TCP数据报文,则所述基站确定需要向所述终端重传在所述缓存区域中的可供重传TCP数据报文;
否则,确定不需要向所述终端重传在所述缓存区域中的可供重传的TCP数据报文。
例如:终端最新确认号为2001,此时基站接收到来自终端的TCP应答报文,其中TCP应答报文的报文确认号为2001,且在缓存区域中存在报文确认号2001对应的TCP数据报文,则确定需要向终端重传在缓存区域中的可供重传的TCP数据报文。
方式二:
若所述TCP应答报文中的报文确认号等于终端最新确认号,且所述缓存区域中存在所述TCP应答报文中的报文确认号对应的TCP数据报文,按照设定步长增加重传应答计数器的计数值;
所述基站丢掉所述TCP应答报文,并在确定所述重传应答计数器的计数值达到设定阈值后,确定需要向所述终端重传在所述缓存区域中的可供重传的TCP数据报文,其中所述可供重传的TCP数据报文为所述报文确认号对应的TCP数据报文;或
所述基站将所述缓存区域中的所述报文确认号对应的TCP数据报文标记为重传报文,所述基站丢掉所述TCP应答报文,并在确定所述重传应答计数器的计数值达到设定阈值后,确定需要向所述终端重传在所述缓存区域中的可供重传的TCP数据报文,其中所述可供重传的TCP数据报文为标记为重传报文的所述TCP数据报文;
否则,确定不需要向所述终端重传在所述缓存区域中的可供重传的TCP数据报文;
所述基站将可供重传的所述TCP数据报文加入到高优先级发送数据队列之后,还包括:
所述基站将所述重传应答计数器的计数值置零。
本发明实施例终端最新确认号的初始化值可以是一个最小的数据报文序列号,例如:终端最新确认号的初始化值为0。
本发明实施例设定阈值可以是根据仿真得到的,也可以是通过实验得到的,也可以是根据实际需要设定的。
例如:终端最新确认号为2001,重传应答计数器的计数值为2,设定阈值为3,此时基站接收到来自终端的TCP应答报文,其中TCP应答报文的报文确认号为2001,且在缓存区域中存在报文确认号2001对应的TCP数据报文,将重传应答计数器的计数值加1得到3,达到设定阈值,确定需要向终端重传可供重传的TCP数据报文,且可供重传的TCP数据报文为报文确认号2001对应的TCP数据报文。
又例如:终端最新确认号为2001,重传应答计数器的计数值为0,设定阈值为3,此时基站接收到来自终端的TCP应答报文,其中TCP应答报文的报文确认号为2001,且在缓存区域中存在报文确认号2001对应的TCP数据报文,将重传应答计数器的计数值加1得到1,未达到设定阈值,确定不需要向终端重传可供重传的TCP数据报文。
又例如:终端最新确认号为2001,重传应答计数器的计数值为2,设定阈值为3,此时基站接收到来自终端的TCP应答报文,其中TCP应答报文的报文确认号为2001,且在缓存区域中存在报文确认号2001对应的TCP数据报文,将重传应答计数器的计数值加1得到3,将缓存区域中的报文确认号2001对应的TCP数据报文标记为重传报文,此时重传应答计数器的计数值达到设定阈值,确定需要向终端重传可供重传的TCP数据报文,且可供重传的TCP数据报文为标记为重传报文的TCP数据报文。
本发明实施例当TCP应答报文中的报文确认号大于终端最新确认号时,基站会对接收到的TCP应答报文进行下述处理:
若所述TCP应答报文中的报文确认号大于所述终端最新确认号,则所述基站根据所述TCP应答报文中的报文确认号更新所述终端最新确认号;
所述基站根据所述报文确认号确定需要释放的在所述缓存区域中的TCP数据报文的序列号,释放确定的所述序列号对应的TCP数据报文,并将所述重传应答计数器的计数值置零;
所述基站将所述TCP应答报文发送给所述核心网。
本发明实施例基站根据报文确认号确定需要释放的在缓存区域中的TCP数据报文的序列号,可以是报文确认号对应的TCP数据报文的序列号,也可以是序列号小于等于报文确认号的TCP数据报文的序列号。
例如:终端最新确认号为2001,重传应答计数器的计数值为1,缓存区域存储有序列号为1的TCP数据报文、序列号为1001的TCP数据报文和序列号为2001的TCP数据报文,此时基站接收到来自终端的TCP应答报文,其中TCP应答报文的报文确认号为4001,将4001作为终端最新确认号,并释放在缓存区域中的报文确认号为2001对应的TCP数据报文,以及序列号为1和序列号为1001的TCP数据报文,最后将重传应答计数器的计数值置为零,将该TCP应答报文发送给核心网。
又例如:终端最新确认号为2001,重传应答计数器的计数值为1,缓存区域存储有序列号为1的TCP数据报文、序列号为1001的TCP数据报文和序列号为2001的TCP数据报文,此时基站接收到来自终端的TCP应答报文,其中TCP应答报文的报文确认号为4001,将4001作为终端最新确认号,并释放在缓存区域中的报文确认号为2001对应的TCP数据报文,最后将重传应答计数器的计数值置为零,将该TCP应答报文发送给核心网。
本发明实施例当TCP应答报文中的报文确认号小于终端最新确认号时,基站会对接收到的TCP应答报文进行下述处理:
若所述TCP应答报文中的报文确认号小于所述终端最新确认号,则所述基站将所述TCP应答报文发送给所述核心网。
例如:终端最新确认号为2001,此时基站接收到来自终端的TCP应答报文,其中TCP应答报文的报文确认号为1001,将该TCP应答报文发送给核心网。
本发明实施例当TCP应答报文中的报文确认号等于终端最新确认号,且缓存区域中不存在TCP应答报文中的报文确认号对应的TCP数据报文时,基站会对接收到的TCP应答报文进行下述处理:
若所述TCP应答报文中的报文确认号等于所述终端最新确认号,所述缓存区域中不存在所述TCP应答报文中的报文确认号对应的TCP数据报文,则所述基站将所述TCP应答报文发送给所述核心网。
例如:终端最新确认号为300,此时基站接收到来自终端的TCP应答报文,其中TCP应答报文的报文确认号为300,但在缓存区域中不存在报文确认号300对应的TCP数据报文,则将该TCP应答报文发送给核心网。
如图3所示,本发明实施例三实现TCP数据报文重传的方法包括:
步骤200、基站接收到来自核心网的IP数据报文。
步骤201、基站根据接收到的IP数据报文的报文头中的协议字段,判断该IP数据报文是否是TCP数据报文,若是,则执行步骤202;若否,则执行步骤215。
步骤202、基站将该TCP数据报文存储到所述缓存区域,并将该TCP数据报文加入到正常优先级发送数据队列。
步骤203、基站在达到发送时间时,先将高优先级发送数据队列中的所有TCP数据报文依次发生给终端后,再将正常优先级发送数据队列中的所有TCP数据报文依次发生给终端。
在步骤203中,基站根据自身数据调度处理机制确定发送高优先级发送数据队列和正常优先级发送数据队列中的TCP数据报文的发送时间。
步骤204、基站通过空口侧接收到来自终端的IP数据报文。
步骤205、基站根据接收到的IP数据报文的报文头中的协议字段,判断该IP数据报文是否是TCP数据报文,若是,则执行步骤206;若否,则执行步骤214。
步骤206、基站根据TCP数据报文的报文头中的确认号,判断TCP数据报文是否是TCP应答报文,若是,则执行步骤207;若否,则执行步骤216。
步骤207、基站判断TCP应答报文中的报文确认号是否等于终端最新确认号,若是,则执行步骤208;若否,则执行步骤212。
步骤208、基站判断缓存区域中是否存在TCP应答报文中的报文确认号对应的TCP数据报文,若是,则执行步骤209;若否,则执行步骤214。
步骤209、基站按照设定步长增加重传应答计数器的计数值,丢掉该TCP应答报文。
在步骤209中,基站还可以将在缓存区域中的TCP应答报文中的报文确认号对应的TCP数据报文标记为重传报文,并按照设定步长增加重传应答计数器的计数值,丢掉该TCP应答报文,执行步骤210。
步骤210、基站判断重传应答计数器的计数值是否达到设定阈值,若是,则执行步骤211;若否,则执行步骤204。
步骤211、基站将在缓存区域中的TCP应答报文中的报文确认号对应的TCP数据报文加入到高优先级发送数据队列,并将重传应答计数器的计数值置零,执行步骤203。
在步骤211中,若基站将在缓存区域中的TCP应答报文中的报文确认号对应的TCP数据报文标记为重传报文,则基站将在缓存区域中的标记为重传报文的TCP数据报文加入到高优先级发送数据队列,并将重传应答计数器的计数值置零,执行步骤203
步骤212、基站判断TCP应答报文中的报文确认号是大于还是小于终端最新确认号,若是大于,则执行步骤213;若是小于,则执行步骤214。
步骤213、基站根据TCP应答报文中的报文确认号更新终端最新确认号,释放在缓存区域中的报文确认号对应的TCP数据报文,以及序列号小于报文确认号的TCP数据报文,并将重传应答计数器的计数值置零。
在步骤213中,基站根据TCP应答报文中的报文确认号更新终端最新确认号后,可以只释放在缓存区域中的报文确认号对应的TCP数据报文,并将重传应答计数器的计数值置零。
步骤214、基站将TCP应答报文发送给核心网。
步骤215、基站将TCP数据报文加入到正常优先级发送数据队列,执行步骤203。
步骤216、基站将TCP数据报文发送给核心网。
基于同一发明构思,本发明实施例中还提供了一种实现TCP数据报文重传的设备,由于图4的实现TCP数据报文重传的设备对应的方法为本发明实施例一种实现TCP数据报文重传的方法,因此本发明实施例设备的实施可以参见系统的实施,重复之处不再赘述。
如图4所示,本发明实施例四实现TCP数据报文重传的设备包括:
存储模块300,用于将接收到的来自核心网的TCP数据报文存储到缓存区域,并将接收到的所述TCP数据报文加入到正常优先级发送数据队列;
判断模块301,用于在接收到来自终端的TCP应答报文后,判断是否需要向所述终端重传在所述缓存区域中的可供重传的TCP数据报文;
处理模块302,用于在确定需要向所述终端重传在所述缓存区域中的所述TCP应答报文中的报文确认号对应的TCP数据报文后,将可供重传的所述TCP数据报文加入到高优先级发送数据队列;
发送模块303,用于在确定需要发送TCP数据报文时,按照队列的优先级顺序发送队列中的TCP数据报文。
较佳地,所述存储模块300具体用于:
在接收到来自所述核心网的网络协议IP数据报文后,根据所述IP数据报文的报文头中的协议字段,在确定所述IP数据报文是TCP数据报文后,将接收到的来自所述核心网的所述TCP数据报文存储到所述缓存区域。
较佳地,所述存储模块300还用于:
当在一段时间内将接收到的多个所述TCP数据报文存储到缓存区域中时,根据接收到的多个所述TCP数据报文的报文头部中的序列号和数据长度,判断接收到的多个所述TCP数据报文是否存在乱序;在确定接收到的多个所述TCP数据报文存在乱序后,调整接收到的多个所述TCP数据报文的顺序;
所述存储模块300具体用于:
按照调整后的顺序,将接收到的多个所述TCP数据报文加入到正常优先级发送数据队列。
较佳地,所述判断模块301还用于:
在通过空口侧接收到来自所述终端的IP数据报文后,根据所述IP数据报文的报文头中的协议字段,判断所述IP数据报文是否是TCP数据报文;在确定所述IP数据报文是TCP数据报文后,根据所述TCP数据报文的报文头中的确认号,在确定所述TCP数据报文是TCP应答报文后,确定执行判断是否需要向所述终端重传在所述缓存区域中的可供重传的TCP数据报文的步骤。
较佳地,所述判断模块301具体用于:
若所述TCP应答报文中的报文确认号等于终端最新确认号,且所述缓存区域中存在所述TCP应答报文中的报文确认号对应的TCP数据报文,则确定需要向所述终端重传在所述缓存区域中的可供重传的TCP数据报文;否则,确定不需要向所述终端重传在所述缓存区域中的可供重传的TCP数据报文。
较佳地,所述判断模块301具体用于:
若所述TCP应答报文中的报文确认号等于终端最新确认号,且所述缓存区域中存在所述TCP应答报文中的报文确认号对应的TCP数据报文,按照设定步长增加重传应答计数器的计数值;丢掉所述TCP应答报文,并在确定所述重传应答计数器的计数值达到设定阈值后,确定需要向所述终端重传在所述缓存区域中的可供重传的TCP数据报文,其中所述可供重传的TCP数据报文为所述报文确认号对应的TCP数据报文;或将所述缓存区域中的所述报文确认号对应的TCP数据报文标记为重传报文,丢掉所述TCP应答报文,并在确定所述重传应答计数器的计数值达到设定阈值后,确定需要向所述终端重传在所述缓存区域中的可供重传的TCP数据报文,其中所述可供重传的TCP数据报文为标记为重传报文的所述TCP数据报文;否则,确定不需要向所述终端重传在所述缓存区域中的可供重传的TCP数据报文;
所述处理模块302还用于:
将所述重传应答计数器的计数值置零。
较佳地,所述判断模块301还用于:
若所述TCP应答报文中的报文确认号大于所述终端最新确认号,则根据所述TCP应答报文中的报文确认号更新所述终端最新确认号;根据所述报文确认号确定需要释放的在所述缓存区域中的TCP数据报文的序列号,释放确定的所述序列号对应的TCP数据报文,并将所述重传应答计数器的计数值置零;将所述TCP应答报文发送给所述核心网。
较佳地,所述判断模块301还用于:
若所述TCP应答报文中的报文确认号小于所述终端最新确认号,则将所述TCP应答报文发送给所述核心网。
较佳地,所述判断模块301还用于:
若所述TCP应答报文中的报文确认号等于所述终端最新确认号,所述缓存区域中不存在所述TCP应答报文中的报文确认号对应的TCP数据报文,则将所述TCP应答报文发送给所述核心网。
综上所述,由于本发明实施例基站会将来自核心网的TCP数据报文存储到缓存区域,在确定需要向终端重传TCP数据报文后,将在缓存区域中的可供重传的TCP数据报文加入到高优先级发送数据队列,并在确定需要发送队列中的TCP数据报文时,按照队列的优先级顺序发送,达到将可供重传的TCP数据报文优先重传给终端的目的,整个重传过程不需要通过核心网去实现,提高了重传的及时率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。