一种判断反向数据包字节丢失的方法

文档序号:7952421阅读:288来源:国知局
专利名称:一种判断反向数据包字节丢失的方法
技术领域
本发明涉及移动通信技术,特别是涉及一种判断反向数据包字节丢失的方法。
背景技术
码分多址(Code Division Multiple Access,CDMA)2000系统的新型数据业务(Evolution Data Optimized,EV-DO)已经由最初的Rev 0版本发展到了Rev A版本。图1示意了在EV-DO Rev A中,作为接受方的基站收到作为发送方的移动终端发来的反向数据包时的效果。
在EV-DO Rev A中,在移动终端上,每个要发送的反向数据包被分成4个子包,其中第一个子包携带了原数据包的所有有效信息和部分冗余信息,其他3个数据包均携带帮助解码的冗余信息;同时,有三个交织号分别为0、1、2的三个交织,这三个交织用于发送分属三个不同反向数据包的子包。一个反向数据包的所有子包,由交织号相同的交织发送。由于移动终端到基站之间的无线信道的变化很剧烈,在基站上,对于每个数据包而言,有可能收到第一个子包就能成功解码,也有可能在收到第二、第三、第四子包后才能解码成功,甚至最终都没有解码成功。如果基站在收到第一子包后没有解码成功,那么会通过由基站到移动终端的前向反馈发送Nak给移动终端,让移动终端再发第二个子包;如果基站在收到第一子包后解码成功,那么会通过前向反馈发Ack给移动终端,移动终端开始第一子包所在交织发送一个新的数据包,依此类推。在图1中,反向数据包A由交织号为0的交织发送,并且在第一个子包A0就解码成功,基站通过前向反馈发送Ack给移动终端,这样移动终端下一次在交织号为0的交织发送的就是反向数据包D的第一个子包D0;反向数据包B的4个子包B0、B1、B2、和B3,全部由交织号为1的交织发送,在第四个子包B3才解码成功,因此在基站收到B0、B1和B2后都会通过前向反馈发送Nak给移动终端,让移动终端接着发下一个子包;反向数据包C由交织号为2的交织发送,并且在第一个子包C0就解码成功,基站通过前向反馈发送Ack给移动终端,这样下一次在交织号为2的交织发送的就是反向数据包E的第一个子包E0,等等。采用这种交织发送的方法,可以实现反向数据包的提前终止,提高了反向数据速率,但同时也使得反向数据包可能出现顺序错乱。例如在图1中,在发送端,反向数据包B是在反向数据包C之前开始发送的;但是在接受端,由于反向数据包B在第四个子包才解码成功,而反向数据包C在第一个子包就解码成功,因此C比B先完成解码。
反向数据包的解码工作是由基站收发信机(Base Transceiver Station,BTS)完成的,BTS将解码完成的反向数据包传送到基站控制器(Base StationController,BSC)。在现有技术中,如果出现上述的反向数据包C比反向数据包B先完成解码的情况,BSC上的无线链路协议(Radio Link Protocol,RLP)模块在处理反向数据包的字节时,发现反向数据包A所包含的字节后面紧跟的是反向数据包C所包含的字节,则认为反向数据包B所包含的字节丢失,通知移动终端重发反向数据包B。实际上反向数据包B只是延迟到达而已,这样就会造成不必要的反向数据包重发,影响反向通信的速率。

发明内容
有鉴于此,本发明的主要目的在于提供一种反向判断数据包字节丢失的方法,以防止在乱序反向数据包的情况下BSC错误认为反向数据包中的字节丢失,从而避免不必要的反向数据包重复发送。
为了达到上述目的,本发明提供了一种判断反向数据包字节丢失的方法,该方法的第一种实现方式包括步骤A1,确定当前解码成功的反向数据包的等待时长,并判断在当前反向数据包中的字节之前发送的反向字节是否缺失,如果有则执行步骤B1;步骤B1,判断在步骤A1中得到的等待时长之内,是否收到在当前反向数据包中的字节之前发送的反向字节,如果没有收到则认为发生反向字节丢失,通知发送方重发丢失的反向字节。
其中,步骤A1所述确定当前解码成功的反向数据包的等待时长包括步骤A11,基站收发信机BTS将当前解码成功的反向数据包,以及当前反向数据包解码成功时产生的交织信息传送给基站控制器BSC;步骤A12,BSC判断当前反向数据包是否提前结束,如果是则执行步骤A13,否则认为等待时长为0;步骤A13,BSC根据当前反向数据包解码成功时产生的交织信息,计算当前反向数据包的等待时长。
其中,步骤A1所述确定当前解码成功的反向数据包的等待时长包括步骤A21,BTS判断当前反向数据包是否提前结束,如果是则执行步骤A22,否则认为等待时长为0;步骤A22,BTS根据当前反向数据包解码成功时产生的交织信息,计算当前反向数据包的等待时长;步骤A23,BTS将解码成功的反向数据包,以及计算出的等待时长传送给BSC。
其中,步骤B1所述判断在步骤A1中得到的等待时长之内,是否收到在当前反向数据包中的字节之前发送的反向字节由BSC完成。
该方法的第二种实施方式为,设置包缓存队列,该方法包括步骤A2,确定当前解码成功的反向数据包的等待时长,并将当前解码成功的反向数据包放入包缓存队列,然后开始为当前解码成功的反向数据包计时;步骤B2,在步骤A2中得到的等待时长到达时,将包缓存队列中,步骤A2中解码成功的反向数据包及其之前的反向数据包选出,作为排好序的反向数据包;步骤C2,判断在排好序的反向数据包中是否有字节缺失,如果是则认为发生反向字节丢失,通知发送方重发丢失的反向字节。
其中,步骤A2所述将当前解码成功的反向数据包放入包缓存队列为根据当前解码成功的反向数据包所携带的帧序号,判断当前解码成功的反向数据包,与包缓存队列中已有的反向数据包,在发送时的先后顺序,然后将当前解码成功的反向数据包放入包缓存队列。
其中,步骤A2所述确定当前解码成功的反向数据包的等待时长包括步骤A31,BTS将当前解码成功的反向数据包,以及当前反向数据包解码成功时产生的交织信息传送给BSC;步骤A32,BSC判断当前反向数据包是否提前结束,如果是则执行步骤A33,否则认为等待时长为0;步骤A33,BSC根据当前反向数据包解码成功时产生的交织信息,计算当前反向数据包的等待时长。
其中,步骤A2所述确定当前解码成功的反向数据包的等待时长包括步骤A41,BTS判断当前反向数据包是否提前结束,如果是则执行步骤A42,否则认为等待时长为0;步骤A42,BTS根据当前反向数据包解码成功时产生的交织信息,计算当前反向数据包的等待时长。
其中,步骤A2所述将当前解码成功的反向数据包放入包缓存队列,然后开始为当前解码成功的反向数据包计时为BTS将解码成功的反向数据包,以及步骤A42中计算出的等待时长传送给BSC,BSC将当前解码成功的反向数据包放入包缓存队列,然后开始为当前解码成功的反向数据包计时。
其中,步骤A2所述将当前解码成功的反向数据包放入包缓存队列,然后开始为当前解码成功的反向数据包计时为BTS根据将当前解码成功的反向数据包放入包缓存队列,然后开始为当前解码成功的反向数据包计时;步骤B2所述将包缓存队列中,步骤A2中解码成功的反向数据包及其之前反向数据包选出,作为排好序的反向数据包为BTS将包缓存队列中,步骤A2中解码成功的反向数据包及其之前反向数据包选出,作为排好序的反向数据包传送给BSC。
其中,步骤C2所述判断在排好序的反向数据包中是否有字节缺失由BSC完成。
采用本发明所提供的技术方案,对于乱序反向数据包,首先计算等待时长,只有在超出等待时长以后才认为发生反向数据包中所包含的字节丢失,这样就避免了错误的将乱序反向数据包认定为反向字节丢失。进一步,等待时长可以用于将乱序反向数据包排序,从而加快BSC中后续处理的速度。而计算等待时长和排序的工作可以由BTS完成,这样就减轻了BSC的计算压力。


图1是CDMA2000EV-DO Rev A中反向数据包的发送方案;图2是本发明提供的计算等待时长的流程图;图3是本发明提供的判断反向数据包字节丢失方法实施例一的流程图;图4是本发明提供的判断反向数据包字节丢失方法实施例二的流程图。
具体实施例方式
本发明的核心思想在于,对于乱序反向数据包,首先计算等待时长,根据等待时长来判断是否发生了数据包中的字节丢失。
为使本发明的目的、技术方案和优点更加清楚,下面结合附图及具体实施例对本发明作进一步地详细描述。
请参考图2,图2是本发明提供的计算等待时长的流程图。为了便于理解,且不失一般性,以图1所示的反向数据包C为例说明计算过程。根据图1,从直观上看,反向数据包C不需要等待反向数据包A,但需要等待反向数据包B。
步骤201,当前子包所在的反向数据包解码成功产生回调。
这里,C0是当前子包,解码成功产生回调,启动对于反向数据包C的等待时长计算流程。
步骤202,获取当前子包、当前子包向前第一个子包和当前子包向前第二个子包的交织信息。
对于当前子包C0来说,当前子包向前第一个子包是子包B0,当前子包向前第二个子包是子包A0。
所述的交织信息包括三个数据域交织号、子包号和交织状态。
交织号表示该子包位于哪个交织,其取值范围是0到2,因为总共有3个交织。在图1中,子包A0位于交织号0,子包B0位于交织号1,子包C0位于交织号2。
子包号表示该子包是所在反向数据包的第几个子包,其取值范围是0到3,因为对于作为接受端的基站来说,一个反向数据包最多包括4个子包。在图1中,A0、B0和C0都是各自所在的反向数据包的第0个子包。
子包状态表示该子包所在反向数据包的状态,可以是以下这四个值CRCPass,反向数据包解码成功,且该反向数据包是当前解码子包所在的反向数据包;CRCFail,反向数据包没有解码成功;Invalid,反向数据包解码成功,且该反向数据包不是当前解码子包所在的反向数据包;或者该反向数据包没有数据发送;或者第四子包解码失败,且该反向数据包不是当前解码子包所在的反向数据包;SubPacketFail,该子包无效,不能用于所在反向数据包的解码。
在图1中,子包A0的子包状态值为Invalid,子包B0的子包状态值为CRCFail,子包C0的子包状态值为CRCPass;需要说明的是,以上仅仅给出了子包状态的四种取值所表示的与计算等待时长有关的意义。
步骤203,判断当前子包是否提前终止,如果是则执行步骤204,否则执行步骤212。
判断当前子包是否提前终止的方法是看当前子包的交织信息中的子包号是否为3,如果为3表示没有提前终止,如果不为3表示提前终止。
当前子包是C0时,当前子包的交织信息中的子包号为0,表示提前终止。
步骤204,判断当前子包所在反向数据包是否需要等待当前子包向前第一个子包所在反向数据包,如果是则执行步骤205,否则执行步骤206。
判断当前子包所在反向数据包是否需要等待当前子包向前第一个子包所反向在数据包的方法是,如果以下三个条件中的任意一个条件成立,则认为当前子包所在反向数据包不需要等待当前子包向前第一个子包所在反向数据包,否则认为当前子包所在反向数据包需要等待当前子包向前第一个子包所在反向数据包。这三个条件是(1)当前子包交织信息中的子包号,大于当前子包向前第一个子包的交织信息中的子包号;(2)当前子包向前第一个子包的交织信息中的子包状态为Invalid;(3)当前子包向前第一个子包的交织信息中的子包状态为SubPacketFail,且当前子包向前第一个子包的交织信息中的子包号为3。
当前子包是C0时,当前子包向前第一个子包是B0,且上述三个条件均不满足,因此当前子包C0所在的反向数据包需要等待当前子包向前第一个子包B0所在的反向数据包。
步骤205,计算当前子包所在反向数据包需要等待当前子包向前第一个子包所在反向数据包的等待时长,然后执行步骤207。
等待时长的计算方法是,首先将当前子包的交织信息中的交织号,减去当前子包向前第一个子包的交织信息中的交织号,再加上3,将加法所得的结果除以3以后取余数;然后用3减去当前子包向前第一个子包的交织信息中的子包号,将得到的差乘以3,并且用乘法的结果减去前面一步得到的余数,就是当前子包所在的反向数据包需要等待当前子包向前第一个子包所在的反向数据包的等待时长。
根据以上计算方法,子包C0所在的反向数据包应该等待子包B0所在的反向数据包的等待时长为8,单位是子包。
步骤206,令当前子包所在反向数据包需要等待当前子包向前第一个子包所在反向数据包的等待时长为0。
步骤207,判断当前子包所在反向数据包是否需要等待当前子包向前第二个子包所在反向数据包,如果是则执行步骤208,否则执行步骤209。
判断当前子包所在反向数据包是否需要等待当前子包向前第二个子包所在反向数据包的方法是,如果以下三个条件中的任意一个条件成立,则认为当前子包所在反向数据包不需要等待当前子包向前第二个子包所在反向数据包,否则认为当前子包所在反向数据包需要等待当前子包向前第二个子包所在反向数据包。这三个条件是(1)当前子包交织信息中的子包号,大于当前子包向前第二个子包的交织信息中的子包号;(2)当前子包向前第二个子包的交织信息中的子包状态为Invalid;(3)当前子包向前第二个子包的交织信息中的子包状态为SubPacketFail,且当前子包向前第二个子包的交织信息中的子包号为3。
当前子包是C0时,当前子包向前第二个子包是A0,且上述三个条件中的(2)满足,因此当前子包C0所在的反向数据包不需要等待当前子包向前第二个子包A0所在的反向数据包。
步骤208,计算当前子包所在反向数据包需要等待当前子包向前第二个子包所在反向数据包的等待时长,然后执行步骤210。
等待时长的计算方法是,首先将当前子包的交织信息中的交织号,减去当前子包向前第二个子包的交织信息中的交织号,再加上3,将加法所得的结果除以3以后取余数;然后用3减去当前子包向前第二个子包的交织信息中的子包号,将得到的差乘以3,并且用乘法的结果减去前面一步得到的余数,就是当前子包所在的反向数据包需要等待当前子包向前第二个子包所在的反向数据包的等待时长。
步骤209,令当前子包所在反向数据包需要等待当前子包向前第二个子包所在反向数据包的等待时长为0。
步骤210,判断当前子包所在的反向数据包分别需要等待的两个等待时长是否均为0,如果是则执行步骤212,否则执行步骤211。
步骤211,以当前子包所在的反向数据包分别需要等待的两个等待时长中较大的一个作为当前子包所在反向数据包的等待时长。
由于当前子包C0所在的反向数据包C需要等待当前子包向前第一个子包B0所在的数据包B,且等待时长为8;而当前子包C0所在的反向数据包C需要等待当前子包向前第二个子包A0所在的数据包A的等待时长为0,因此当前子包C0所在的反向数据包的等待时长为8。
步骤212,当前子包所在的反向数据包不需要等待,也就是说当前子包的等待时长为0。
请参考图3,图3是本发明提供的判断反向数据包字节丢失方法实施例一的流程图。
步骤301,BTS将反向数据包解码,并将交织信息传送给BSC。
在移动通信基站系统中,对反向数据包进行解码是由BTS完成的。在对计算等待时长的流程的描述中提到,在BTS对当前子包所在的反向数据包解码成功后,会得到当前子包、当前子包向前第一个子包和当前子包向前第二个子包的交织信息,BTS将成功解码的反向数据包,以及对应的三个交织信息都传送给BSC。
步骤302,BSC根据交织信息,计算当前反向数据包的等待时长。
步骤302就是步骤201至步骤212所进行的流程。
步骤303,BSC将当前反向数据包中的字节放入重排缓冲区。
重排缓冲区是现有技术的RLP协议所用来对反向数据包中的字节进行排序用的。移动终端会按照RLP协议为所发送的每个字节分配一个RLP序号,RLP序号按照字节发送的先后顺序递增;BSC在接收到反向数据包以后,将反向数据包所包含的字节,根据RLP序号放入重排缓冲区中。只有连续的、超过一定长度门限的、且最早进入重排缓冲区的一段字节才能被送入后续处理模块。
例如,假设长度门限是20字节,重排缓冲区中现有字节为RLP序号从30到35的总共6个连续字节,由于连续字节的长度没有超过长度门限,因此不能送入后续处理模块。现在收到第一个反向数据包,其中包括RLP序号为40到50的11个连续字节。按照RLP序号放入重排缓冲区后,连续字节的数目仍然没有超过20个。如果又收到第二个反向数据包,其中包括RLP序号为36到39的4个连续字节。按照RLP序号放入重排缓冲区后,连续字节的RLP序号从30到40,连续字节的数目为21个,超过了长度门限,则将这21个字节全部发送到后续处理模块。
步骤304,判断重排缓冲区中当前反向数据包中的字节之前是否有字节缺失,如果有则执行步骤305,否则执行步骤308。
所谓的字节缺失,即步骤303所举的例子中,收到第二个反向数据包之前的情况,RLP序号为36到39的字节就是缺失字节。
步骤305,BSC将计时器置零后启动计时器。
计时器的作用在于,字节缺失有可能是由乱序反向数据包造成的,也有可能是反向数据包丢失造成的。如果是由乱序反向数据包造成的,则在步骤302所计算出的等待时长内,就应该收到包含缺失字节的反向数据包。如果超过这个时间还没有收到,则该反向数据包在从移动终端到基站的通信路径上丢失,需要移动终端重新发送该缺失字节。
步骤306,BSC判断计时器是否到达等待时长,如果是则执行步骤311,否则执行步骤307。
步骤307,BSC判断是否收到BTS传来的包含缺失字节的反向数据包,如果收到则执行步骤308,否则返回执行步骤306。
步骤308,BSC判断重排缓冲区中当前反向数据包中的字节所在的一段连续字节的长度是否超过长度门限,如果是则执行步骤309,否则执行步骤310。
步骤309,BSC将重排缓冲区中当前反向数据包中的字节所在的一段连续字节进行后续处理。
步骤310,BSC准备处理下一个反向数据包。
步骤311,认为BTS未能成功解码缺失字节所在的反向数据包,要求移动终端重发缺失字节。
在实施例一中,从步骤302到步骤311,都是由BSC完成的。在实际的移动通信基站系统中,一个BSC往往有很多个BTS,对于每个BTS传送来的反向数据包,BSC都要进行步骤302到步骤311的流程。这样就占用了BSC的大量处理能力。另一方面,BSC计算等待时长需要BTS在传送当前反向数据包的同时发送交织信息,这会降低BTS和BSC之间接口的利用效率。例如,三个子包的交织信息大约为3字节,而在基于互联网协议的语音业务(Voice on Internet Protocol,VoIP)中,一个反向数据包的长度才22字节,传送交织信息使得BTS和BSC之间的接口利用率降低了近10%。
作为实施例一的一种改进,步骤301中,BTS可以先不将解码后的反向数据包以及交织信息传送给BSC,而是由BTS自身执行步骤302,然后将解码后的反向数据包和计算出的等待时长一起传送给BSC。这样就可以提高BTS和BSC之间接口的利用效率。同时也分担了BSC的一部分计算量。
但是,对于反向数据包中字节的处理只能在BSC进行,这样就使得无法将步骤303到步骤311移到BTS中进行。这样,BSC的计算量还是很大,并且传送等待时长还是需要占用BTS和BSC之间接口的资源。
本发明的实施例二可以解决这个问题。请参考图4,图4是本发明提供的判断反向数据包字节丢失方法实施例二的流程图。
为了对反向数据包排序,BTS为三个交织各维护一个定时器,每个定时器的初始值都是0。每个定时器还各自对应一个启动帧序号(Frame SequenceNumber,FSN),表示启动这个定时器的子包所在反向数据包的FSN。FSN是移动终端在发送反向数据包时为每个数据包分配的编号,FSN与数据包是一一对应的关系,分配FSN是按照发送数据包的先后顺序。BTS还为维护一个反向数据包缓存队列,简称包缓存队列,包缓存队列中的反向数据包FSN由小到大排列。
步骤401,BTS收到子包。
步骤402,BTS判断是否在当前子包完成当前子包所在反向数据包的解码,如果是则执行步骤410,否则执行步骤403。
步骤403,判断当前子包所在交织的定时器是否为0,如果是则执行步骤405,否则执行步骤404。
步骤404,执行步骤420。
步骤405,判断除当前子包所在的交织外,其他两个交织的定时器是否都不为0,如果是则执行步骤407;如果除当前子包所在的交织外,其他两个交织的定时器中的任意一个为0则执行步骤406。
步骤406,判断除当前子包所在的交织外,其他两个交织的定时器是否都为0,如果是则执行步骤409;如果除当前子包所在的交织外,其他两个交织的定时器中有且只有一个为0则执行步骤408。
步骤407,比较判断除当前子包所在的交织外,其他两个交织的定时器的启动FSN,将包缓存队列中,值较小的启动FSN所对应的反向数据包之前的反向数据包发送到BSC,执行步骤420。
步骤408,将包缓存队列中,不为0的定时器的启动FSN所对应的反向数据包之前的反向数据包发送到BSC,执行步骤420。
步骤409,将包缓存队列中的反向数据包全部发送到BSC,执行步骤420。
步骤410,将当前子包所在交织的定时器清零,并将当前子包按照FSN的顺序插入包缓存队列。
步骤411,BTS根据在成功解码反向数据包时获取的当前子包、当前子包向前第一个子包和当前子包向前第二个子包的交织信息,分别计算出当前子包所在反向数据包需要等待当前子包向前第一个子包的等待时长t1,和当前子包所在反向数据包需要等待当前子包向前第二个子包的等待时长t2。
步骤412,判断t1和t2是否均为0,如果是则执行步骤414,如果t1和t2中任意一个不为0则执行步骤413。
步骤413,判断t1是否为0,如果是则t2必然不为0,执行步骤418,否则执行步骤415。
步骤414,返回执行步骤405。
步骤415,判断当前子包向前第一个子包所在交织的定时器是否为0,如果是则执行步骤416,否则执行步骤417。
步骤416,将当前子包向前第一个子包所在交织的定时器的值设为t1的值,并将当前子包向前第一个子包所在交织的定时器的启动FSN设为当前子包所在数据包的FSN。
步骤417,判断t2是否为0,如果是则执行步骤420,否则执行步骤418。
步骤418,判断当前子包向前第二个子包所在交织的定时器是否为0,如果是则执行步骤419,否则执行步骤420。
步骤419,将当前子包向前第二个子包所在交织的定时器的值设为t2的值,并将当前子包向前第二个子包所在交织的定时器的启动FSN设为当前子包所在数据包的FSN。
步骤420,将不为0的定时器减1后结束对当前子包的处理流程,准备处理下一个子包。
这样,从BTS传送到BSC的反向数据包都是按照发射端的发射顺序排好的。BSC虽然仍然要执行步骤303到步骤310,但是由于反向数据包都是经过排序的,所以BSC不用对从BTS传送来的反向数据包中的字节做任何重排缓冲处理,这样就减少了BSC的计算量,基本上不用BSC进行计算。又由于BTS只需要将数据包本身传送给BSC,这样就可以进一步提高BTS和BSC接口的利用效率。当然,如果基于其他考虑,也完全可以将对反向数据包进行排序的工作放到BSC中进行。在这种情况下,步骤407、步骤408和步骤409中所述将反向数据包发送到BSC则应该为将反向数据包从包缓存队列中发送到后续处理模块。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种判断反向数据包字节丢失的方法,其特征在于,该方法包括步骤A1,确定当前解码成功的反向数据包的等待时长,并判断在当前反向数据包中的字节之前发送的反向字节是否缺失,如果有则执行步骤B1;步骤B1,判断在步骤A1中得到的等待时长之内,是否收到在当前反向数据包中的字节之前发送的反向字节,如果没有收到则认为发生反向字节丢失,通知发送方重发丢失的反向字节。
2.根据权利要求1所述的判断反向数据包字节丢失的方法,其特征在于,步骤A1所述确定当前解码成功的反向数据包的等待时长包括步骤A11,基站收发信机BTS将当前解码成功的反向数据包,以及当前反向数据包解码成功时产生的交织信息传送给基站控制器BSC;步骤A12,BSC判断当前反向数据包是否提前结束,如果是则执行步骤A13,否则认为等待时长为0;步骤A13,BSC根据当前反向数据包解码成功时产生的交织信息,计算当前反向数据包的等待时长。
3.根据权利要求1所述的判断反向数据包字节丢失的方法,其特征在于,步骤A1所述确定当前解码成功的反向数据包的等待时长包括步骤A21,BTS判断当前反向数据包是否提前结束,如果是则执行步骤A22,否则认为等待时长为0;步骤A22,BTS根据当前反向数据包解码成功时产生的交织信息,计算当前反向数据包的等待时长;步骤A23,BTS将解码成功的反向数据包,以及计算出的等待时长传送给BSC。
4.根据权利要求1到3任意一项所述的判断反向数据包字节丢失的方法,其特征在于,步骤B1所述判断在步骤A1中得到的等待时长之内,是否收到在当前反向数据包中的字节之前发送的反向字节由BSC完成。
5.一种判断反向数据包字节丢失的方法,其特征在于,设置包缓存队列,该方法包括步骤A2,确定当前解码成功的反向数据包的等待时长,并将当前解码成功的反向数据包放入包缓存队列,然后开始为当前解码成功的反向数据包计时;步骤B2,在步骤A2中得到的等待时长到达时,将包缓存队列中,步骤A2中解码成功的反向数据包及其之前的反向数据包选出,作为排好序的反向数据包;步骤C2,判断在排好序的反向数据包中是否有字节缺失,如果是则认为发生反向字节丢失,通知发送方重发丢失的反向字节。
6.根据权利要求5所述的判断反向数据包字节丢失的方法,其特征在于,步骤A2所述将当前解码成功的反向数据包放入包缓存队列为根据当前解码成功的反向数据包所携带的帧序号,判断当前解码成功的反向数据包,与包缓存队列中已有的反向数据包,在发送时的先后顺序,然后将当前解码成功的反向数据包放入包缓存队列。
7.根据权利要求5所述的判断反向数据包字节丢失的方法,其特征在于,步骤A2所述确定当前解码成功的反向数据包的等待时长包括步骤A31,BTS将当前解码成功的反向数据包,以及当前反向数据包解码成功时产生的交织信息传送给BSC;步骤A32,BSC判断当前反向数据包是否提前结束,如果是则执行步骤A33,否则认为等待时长为0;步骤A33,BSC根据当前反向数据包解码成功时产生的交织信息,计算当前反向数据包的等待时长。
8.根据权利要求5所述的判断反向数据包字节丢失的方法,其特征在于,步骤A2所述确定当前解码成功的反向数据包的等待时长包括步骤A41,BTS判断当前反向数据包是否提前结束,如果是则执行步骤A42,否则认为等待时长为0;步骤A42,BTS根据当前反向数据包解码成功时产生的交织信息,计算当前反向数据包的等待时长。
9.根据权利要求8所述的判断反向数据包字节丢失的方法,其特征在于,步骤A2所述将当前解码成功的反向数据包放入包缓存队列,然后开始为当前解码成功的反向数据包计时为BTS将解码成功的反向数据包,以及步骤A42中计算出的等待时长传送给BSC,BSC将当前解码成功的反向数据包放入包缓存队列,然后开始为当前解码成功的反向数据包计时。
10.根据权利要求8所述的判断反向数据包字节丢失的方法,其特征在于,步骤A2所述将当前解码成功的反向数据包放入包缓存队列,然后开始为当前解码成功的反向数据包计时为BTS根据将当前解码成功的反向数据包放入包缓存队列,然后开始为当前解码成功的反向数据包计时;步骤B2所述将包缓存队列中,步骤A2中解码成功的反向数据包及其之前反向数据包选出,作为排好序的反向数据包为BTS将包缓存队列中,步骤A2中解码成功的反向数据包及其之前反向数据包选出,作为排好序的反向数据包传送给BSC。
11.根据权利要求5到10任意一项所述的判断反向数据包字节丢失的方法,其特征在于,步骤C2所述判断在排好序的反向数据包中是否有字节缺失由BSC完成。
全文摘要
本发明公开了一种判断反向数据包字节丢失的方法,该方法的一种实现方式为确定当前解码成功的反向数据包的等待时长,并判断在等待时长之内,是否收到在当前反向数据包中的字节之前发送的反向字节,如果没有收到则认为发生反向字节丢失。该方法的另一种实现方式为设置包缓存队列,包括确定当前解码成功的反向数据包的等待时长,并将该反向数据包放入包缓存队列,在等待时长到达时,将包缓存队列中,上述解码成功的反向数据包及其之前的反向数据包选出,作为排好序的反向数据包,并判断在排好序的反向数据包中是否有字节缺失,如果是则认为发生反向字节丢失。采用本发明提供的技术方案,可以避免错误的将乱序反向数据包认定为反向字节丢失。
文档编号H04L1/16GK1859072SQ200610005700
公开日2006年11月8日 申请日期2006年1月19日 优先权日2006年1月19日
发明者敬晓云 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1