一种判断重传的简单重传协议命令帧的方法

文档序号:7597775阅读:125来源:国知局
专利名称:一种判断重传的简单重传协议命令帧的方法
技术领域
本发明涉及一种判别重传的简单重传协议(SRP)命令帧的方法,特别是涉及一种在H.324协议中判断重传的SRP命令帧的方法。
背景技术
H.324协议是低速率多媒体通信终端协议,H.324终端按照H.223协议将音频、视频、数据及控制面信令复用在一起,传送到对端,并由对端解复用,分离出音频、视频、数据以及控制面信令。控制面信令是H.245协议中定义的内容,要求必须提供可靠的链路层进行传输。
在H.324协议中,定义了简单重传协议即SRP,来保证H.245信令的可靠传输。在SRP协议下,每发送一个SRP命令帧,序列号以256为模进行累加。如果在指定的时间内没有收到SRP响应帧,需要重传SRP命令帧。重传的SRP命令帧必须和原SRP命令帧的序列号保持一致,不能累加序列号。由于SRP响应帧没有序列号,无法确定和哪一个SRP命令帧匹配。因此在SRP协议下,在下一个SRP命令帧被发送之前,当前的SRP命令帧必须得到SRP响应帧的响应。这样就导致SRP命令帧必须收到响应帧之后才能传输下一个H.245信令,影响了H.245信令协商的效率。协议后续版本增加了一个新的编号SRP响应帧(NSRP),它带有序列号。这样就可以正确匹配SRP命令帧,并行发送多个H.245消息,加快H.245协商速度。目前的3G H.324终端都支持NSRP。
H.324协议中规定了如果接收到的SRP命令帧有着和先前收到的命令帧相同的序列号,它将不被传给H.245层,因为它只是一个已经处理过的命令的重传。这就要求必须判断出重传的SRP命令帧,当使用NSRP帧响应时,如图1所示,多个SRP命令帧同时发送。在此情况下,简单、高效地判断SRP命令帧是否为重传的帧具有非常重要。
目前比较常用的一种方法是将最近一段时间内接收到的SRP命令帧的所有序列号保存在序列号位表中,并按照时间的顺序排列。如图2所示,当收到一个SRP命令帧时,从保存的序列号位表中查找并判断该命令帧的序号是否是在序列号位表中,若在列表中,则是重传的SRP命令帧,若不在列表中,则是新的SRP命令帧,将其序列号保存至列表中。
在这种方法中,按照终端的处理能力估算出每秒钟能处理的SRP命令帧数,例如是20个,SRP命令帧重发的最大间隔,例如是5S,那么只需保存最近收到的100个序列号即可以了。若当前收到的SRP命令帧序列号和前面100个均不同,则代表是新的SRP命令帧,否则就是重传的命令帧。
这种方法的优点是能够准确判断重传的SRP命令帧,但每次都需遍历查找序列号位表,当系统高负荷运行时,严重影响了系统运行效率。呼叫中保存每一个序列号(序列号范围为0-255)都需要1个字节,保存100个序列号就需要100个字节。当系统中呼叫数量很大时,要求很大的存储空间。

发明内容
为了解决上述现有技术方法中效率低下及耗费存储空间的问题,本发明的目的是提供一种简单且高效的判断重传的SRP命令帧的方法。
为了实现上述目的,本发明的判断重传的SRP命令帧的方法包括1)设置一序列号位表,所述序列号位表中的每个位对应于一个所述序列号;2)在接收到SRP命令帧时,确定所述序列号位表中与所述SRP命令帧的序列号对应的位的状态;3)根据所述对应位的状态,判断所述SRP命令帧是否为重发的SRP命令帧;4)当判断所述SRP命令帧不是重发的SRP命令帧时,改变所述SRP命令帧的序列号在所述序列号位表中的对应位的状态。
在本发明的上述方法中,通过如下方式确定所接收的SRP命令帧的序列号在所述序列号位表中的对应位确定SRP命令帧的序列号在所述位表中的偏移字节数;和确定所述序列号在所述位表中相对于所述偏移字节的偏移位数。其中,所述偏移字节数由接收到的所述SRP命令帧的序列号除以8取整得到,所述偏移位数由接收到的所述SRP命令帧的序列号除以8取余数得到。
在本发明的实施方案中,可进一步包括将所述序列号位表中与较早接收的序列号相应的位的状态清零的步骤。
本发明采用256位图方式来映射接收的SRP命令帧序列号,以直接定位的方法代替了查找过程,避免了最耗费系统资源的遍历查找算法,极大地提高了系统运行效率。本发明的每个呼叫只需占用32个字节就可以实现重传SRP命令帧的判别,从而节约了存储空间。
此外,根据本发明的方法,还可确保已收到过的SRP命令帧序列号记录会在其时效过后被正确地清除,从而保证了序列号的回卷。


图1是现有技术中多个SRP命令帧同时传送时的示意图;图2是现有技术中保存SRP命令帧的序列号的列表示意图;图3是本发明实施例的序列号位表示意图;图4是图3所示的SRP命令帧的序列号位表结构示意图;图5是本发明实施例的序列号清零示意图;图6分别是N<=128和N<=64时的序列号清零示意图。
具体实施例方式
以下参照图3至图6对本发明的实施例进行详细的描述。
在本发明的一实施方案中,建立了如图3所示的序列号位表。如图4所示,该列表占用32个字节,每个字节的8个位,共256个位。用这256个位分别对应于SRP命令帧的256个序列号。例如,用位0代表序列号1(SN1),位1代表序列号2(SN2),...,位255代表序列号256(SN256)。在本例中,设以0表示未收到对应序列号的SRP命令帧、1表示收到过对应序列号的SRP命令帧。在开始时,所有位的值都被清零。
当接收终端从发送终端接收到一个SRP命令帧时,取出其中的序列号。在序列号位表中直接找到与该序列号对应的位,判断该位的状态。如果读取该位的值为0时,表示先前未接收过该序列号的SRP命令帧,将该位的值置为1,然后接收终端对该帧进行相应的处理。若该位的值为1时,说明先前接收过该序列号的SRP命令帧,此SRP命令帧是重发的SRP命令帧,接收终端对该命令帧不作处理。
在本例中,在序列号位表中具体定位的方法可以采用如下计算公式nBytes=SNrecv/8(1)
nBits=SNrecv%8 (2)其中,nBytes表示SRP命令帧的序列号在列表中的偏移字节数,SNrecv表示接收终端接收到的SRP命令帧的序列号。nBits表示接收终端接收的SRP命令帧的序列号在列表中位置相对于对应字节的偏移位数。
式(1)表示用接收到的SRP命令帧的序列号除以8取整后得到该序列号在列表中位置的偏移字节数。
式(2)表示用接收到的序列号除以8取余数得到nBits的值。
图4是本发明的SRP命令帧的序列号定位示意图。如图所示,接收终端接收到SRP命令帧的序列号为14,用接收终端接收到SRP命令帧的序列号可以直接计算出该序列号所在列表中位置的偏移字节数和该序列号相对于对应字节的偏移位数,即,nBytes=14/8=1nBits=14%8=6即该序列号被定位在第1个字节第6个比特处,若该位置的值为零,说明以前没有接收过此SRP命令帧,若该位置的值为1,说明是重传的SRP命令帧。
上述实施例对于一个会话中的SRP命令帧的序列号的范围是0-255的情况下,其序列号位表中的位与SRP命令帧的序列号可以一一对应。但是,对于一个会话过程中的SRP命令帧的个数超过256个,序列号要重新从零开始分配时,就无法判别了。
图5显示了根据本发明的一个改进实施例的方法。
在本实施例中,采用了逐步将序列号位表中与较早以前接收到的序列号相应的位清零的方法。如图5所示,T1,T2,T3,T4之间的时间为接收终端和发送终端之间的最大SRP重传间隔。所谓重传间隔,就是指发送一个SRP命令帧,对端没有响应,又重新发送这个SRP命令帧,这两个命令帧之间的时间,就是重传间隔。这个间隔时间可以配置,当取配置最大值就是最大SRP重传间隔。一般间隔时间在几十毫秒到几秒之间。当T3时刻到来时,保留T2到T3时刻之间收到的序列号相应的位,将T2时刻之前收到的序列号对应的位清除。当T4时刻到来时,保留T3到T4时刻收到的序列号对应的位,将T3时刻之前收到的序列号对应的位清除。
为了方便程序处理,可以将时间单位转换为用SRP命令帧的个数来表示。为此,首先估算出在接收终端和发送终端之间最大重传间隔时间内最多处理的SRP命令帧的个数。该估算方法可以是,一般将最大重传间隔设为S秒,而通常一个H245呼叫有M个消息。假设不分片,大约会有M个SRP命令帧,所以在最大重传间隔时间内一般会有N=S*M个SRP命令帧。一般S小于1秒,M小于30。如果分片,则相应的M值会增大,但N的计算方法不变。假设在一个重传间隔内最多收到N个SRP命令帧,那么在当接收到第2N个SRP命令帧时,只需保留N-2N之间的序列号对应的位的状态标志即可,其它序列号的位清零。当接收到第3N个SRP命令帧时,只需保留2N-3N之间的序列号即可,其他序列号对应的位的状态标志清零,依此类推。
当然,在清除很早以前收到的序列号对应的位时,不必一定要清除256-N个,只要保证所保留的序列号大于等于N个就可以了。换言之,清除的序列号个数应小于等于256-N个。
本实施例在具体实现时,为简化程序处理,把序列号位表(协议规定共256个序列号)分段,每次只清除最早接收到的序列号对应的分段,假设M表示分段的个数,每次清除一个分段的序列号个数为256/M,因此只要保证满足下列数学关系即可,即256-256/M>=NN表示SRP命令帧最大重传间隔内最多能收到的SRP命令帧个数,因此,只要保留的序列号大于等于N就可以了。如果N<=192,则至少可以分为四段(M>=4),如果N<=128,则至少可以分为两段(M>=2),依此类推。为便于处理,最好分段的个数是2的指数倍。
图6分别是N<=128和N<=64时的序列号位表清零示意图。当N<=128时,将序列号位表分为两段,当收到SRP命令帧的序列号为127时,将128-255之间的序列号对应位清零,当收到SRP命令帧的序列号为255时,将0-127之间的序列号对应位清零。当N<=64时,将序列表分为四段,当收到SRP命令帧的序列号为63时,将64-127之间的序列号对应位清零,当收到SRP命令帧的序列号为127时,将128-191之间的序列号对应位清零,当收到SRP命令帧的序列号为191时,将192-255之间的序列号对应位清零,当收到SRP命令帧的序列号为255时,将0-63之间的序列号对应位清零。显然,上述清零的序列号段和清零顺序可以根据需要进行不同的设置,而不限于上面所提到的方式。
根据H245协议,H245消息最多有34个,因此,一般一个会话中不会超过20个H245消息,最大重发间隔一般不会超过5秒,N取值最大为100,因此优选将序列号位表划分为两段。当收到SRP命令帧的序列号是127时,将128-255之间的序列号对应的位段清零;当收到SRP命令帧的序列号是255时,将0-127之间的序列号对应的位段清零。
虽然以上结合具体实施例描述了本发明,但这些具体说明并不是对本发明的限制。本领域技术人员在不脱离本发明的精神和范围的情况下,可以对本发明做出各种修改和变换。它们均在所附的权利要求的保护范围内。
权利要求
1.一种判断重传的简单重传协议SRP命令帧的方法,包括1)设置一序列号位表,所述序列号位表中的每个位对应于一个所述序列号;2)在接收到SRP命令帧时,确定所述序列号位表中与所述SRP命令帧的序列号对应的位的状态;3)根据所述对应位的状态,判断所述SRP命令帧是否为重发的SRP命令帧;和4)当判断所述SRP命令帧不是重发的SRP命令帧时,改变所述SRP命令帧的序列号在所述序列号位表中的对应位的状态。
2.根据权利要求1所述的方法,其特征在于,通过如下方式确定所接收的SRP命令帧的序列号在所述序列号位表中的对应位确定SRP命令帧的序列号在所述位表中的偏移字节数;和确定所述序列号在所述位表中相对于所述偏移字节的偏移位数。
3.根据权利要求2所述的方法,其特征在于所述偏移字节数由接收到的所述SRP命令帧的序列号除以8后取整数部分得到,所述偏移位数由接收到的所述SRP命令帧的序列号除以8后取余数得到。
4.根据权利要求1、2或3所述的方法,其特征在于进一步包括将与在先接收的序列号相应的位清零。
5.根据权利要求4所述的方法,其特征在于,清除的序列号对应位的个数小于等于256-N,其中N为在一个SRP重传间隔内最多收到的SRP命令帧的个数。
6.根据权利要求5所述的方法,其特征在于将所述序列号置为零的步骤包括确定发送端和接收端之间的最大SRP重传间隔和在该间隔内最多收到的SRP命令帧的个数N;和当接收端收到SRP命令帧个数为N的整数倍时,在序列号位表中保留最近的N个序列号对应的位,将其余序列号的对应位清零。
7.根据权利要求6所述的方法,其特征在于,按照如下方式确定在最大SRP重传间隔内最多收到的SRP命令帧的个数N设所述最大SRP重传间隔设为S秒,每个H245呼叫有M个消息,则N=S*M。
8.根据权利要求4所述的方法,其特征在于,所述将与在先接收的序列号相应的位清零的步骤包括确定发送端和接收端的最大SRP重传间隔;和在所述序列号位表中保留距当前时刻为最大SRP重传间隔的期间内的序列号对应位,将其它序列号对应位清零。
9.根据权利要求4所述的方法,其特征在于将所述序列号置为零的步骤包括把所述序列号位表分段;确定发送端和接收端之间的最大SRP重传间隔;和清除序列号位表中最早接收到的序列段,使保留的序列号的个数大于等于所述重传间隔内收到的SRP命令帧的最多个数。
10.根据权利要求9所述的方法,其特征在于所述序列号位表的分段要满足下列关系256-256/M>=N其中,N表示SRP命令帧最大重传间隔内最多能收到的SRP命令帧个数。
全文摘要
本发明公开了一种在H.324协议中判断重传的SRP命令帧的方法,本发明的方法包括设置一序列号位表,所述序列号位表中的每个位对应于一个所述序列号;在接收到SRP命令帧时,确定所述序列号位表中与所述SRP命令帧的序列号对应的位的状态;根据所述对应位的状态,判断所述SRP命令帧是否为重发的SRP命令帧;当判断所述SRP命令帧不是重发的SRP命令帧时,改变所述SRP命令帧的序列号在所述序列号位表中的对应位的状态。本发明克服了现有技术方法中效率低下及浪费存储空间的问题,并可确保已收到过的SRP命令帧序列号记录会在时效过后被正确清除。
文档编号H04L1/08GK1756255SQ20041008036
公开日2006年4月5日 申请日期2004年9月29日 优先权日2004年9月29日
发明者高顺纪 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1