一种自适应协议版本的探测方法

文档序号:7649403阅读:146来源:国知局
专利名称:一种自适应协议版本的探测方法
技术领域
本发明涉及一种自适应协议版本探测方法,特别涉及第三代移动通信终端自适应协议版本探测方法。
背景技术
第三代移动通信系统中各接口的协议消息,包括空中接口的网络层(简称为层三,通常用L3表示)消息,都是利用抽象语法名称(英文Abstract SyntaxNotation One,通常简称为ASN.1)进行描述。随着不断发展,第三代移动通信合作项目组织(3GPP)已经提出了很多协议版本,如R99版本、R4版本、R5版本、R6版本和R7版本。这些协议版本中针对协议消息ASN.1的描述并不是完全相同的,而且即使针对某个Rx版本而言,其ASN.1描述也是逐步演进的。例如3GPP25.331-4h0版本(所谓R4-4h0版本)和在其基础上增加了上行引导信道偏移(即UpPCH Shifting)功能后的版本(所谓R4-4h0-shift版本)对应的ASN.1描述也不尽完全相同。对于某些L3消息,如小区更新证实(即Cell UpdateConfirm)、物理信道重配置(即Physical Channel Reconfiguration)等消息,R4-4h0-shift版本在R4-4h0版本基础上增加了和UpPCH Shifting功能相关的上行引导信道位置信息(即IE“upPCHpositionInfo”)。这样,对于其中任何一条L3消息,使用R4-4h0版本和R4-4h0-shift版本经过ASN.1编码的消息是不同的,而使用其中某个协议版本的通讯设备可能无法完全正确解析出使用另一个协议版本编码的消息,不同协议版本间的ASN.1描述不能完全兼容。
如果一个用户终端需要和使用不同协议版本的网络进行通信,现有技术一般需要提前从网络设备提供商获知其使用的ASN.1协议版本,然后手动加载对应的ASN.1编解码模块,重新生成目标代码运行。很显然,这种方式无法解决用户终端不做任何改动的前提下与使用不同协议版本的网络进行通信的问题。

发明内容
本发明的主要目的是提供一种自适应协议版本探测方法,能让用户终端自适应地和使用不同协议版本的网络互通。
本发明探测方法的技术方案包括1、用户终端定义相关标识和列表①定义协议版本标识protocolVersionFlag用于存储协议版本标识,根据所支持的协议版本等具体需要设定其取值范围,每一种取值表示一个特定的ASN.1协议版本并对应一个ASN.1编解码模块(以下将该取值简称为协议版本值);②根据3GPP定义的每个L3消息定义其对应的一个版本分组列表versionGroupList该列表是根据protocolVersionFlag的所有可能的协议版本值所对应的该消息的ASN.1描述是否完全相同进行分组,并将ASN.1描述完全相同的各protocolVersionFlag的协议版本值分成一组;③定义一个协议版本尝试列表protocolVersionTryList该列表用于存储尝试过的协议版本值。
2、初始化根据需要初始化protocolVersionFlag为某个协议版本值,初始化protocolVersionTryList为空;3、根据protocolVersionFlag的协议版本值加载对应的ASN.1解码模块,对用户终端接收到的网络侧消息(简称为message)进行解码,并将protocolVersionFlag的值存入protocolVersionTryList,判断解码结果;4、如果解码成功,确定最终协议版本为protocolVersionFlag当前协议版本值所对应的ASN.1版本,加载对应的ASN.1编码模块,执行步骤6;如果解码不成功,则判断message对应的versionGroupList中是否存在满足以下条件的其他分组非当前protocolVersionFlag所在分组,并且其中任何一个协议版本值都不在protocolVersionTryList中;5、如果存在满足条件的其他分组,就从其中任意一个分组中取出任意一个协议版本值赋给protocolVersionFlag,返回执行步骤3,否则message的ASN.1解码失败,将protocolVersionFlag重新置为初始值,执行下一步骤;6、将protocolVersionTryList清空,协议版本探测过程结束,用户终端根据协议进行后续处理。
本发明与现有技术相比,不需要提前获知网络侧使用的协议版本,也不需要手动加载对应的ASN.1编解码模块重新生成目标代码,而是通过在收到网络侧的L3消息后,自动进行尝试,遍历该消息所有对应的不同ASN.1描述的协议版本,直到该版本对应的ASN.1解码模块能够正确解析出该消息,达到了自适应探测协议版本的目的,极大地提高了用户终端的灵活性以及对使用不同协议版本的网络兼容性。


图1现有技术中用户终端与使用不同协议版本的网络实现互通的流程框图;图2本发明自适应协议版本探测方法实施例的流程框图。
下面结合附图对本发明探测方法作进一步的说明。
附图1现有技术中用户终端与使用不同协议版本的网络实现互通的流程框图。由图可知,在现有技术中,需要知道网络所使用的协议版本,并且还需要手动加载对应的ASN.1编解码模块,如果有n个协议版本,则可能需要n次手动加载对应的ASN.1编解码模块。否则,用户终端可能无法在某些网络中正常运行。
附图2是本发明自适应协议版本探测方法实施例的流程图。在此实施例中设定protocolVersionFlag的所有可能取值为{v1,v2,v3,v4},设定消息A对应的versionGroupList为{(v1,v2),(v3,v4)}(v1和v2为同一分组,v3和v4为另一分组),每一种取值对应一种ASN.1描述以及一个ASN.1编解码模块。具体包括以下步骤1、初始化protocolVersionFlag为某一版本值,此实施例为v1;初始化versionGroupList为空;
2、用户终端从网络侧接收到一条L3消息,实施例中为消息A;3、根据protocolVersionFlag的值加载对应的ASN.1解码模块对消息A进行ASN.1解码,并将protocolVersionFlag的值存入protocolVersionTryList,判断解码结果;4、如果解码成功,确定最终协议版本为protocolVersionFlag的当前协议版本值所对应的ASN.1版本,执行步骤6;否则进一步判断消息A对应的versionGroupList中是否存在满足以下条件的其他分组非当前protocolVersionFlag所在分组,并且其中任何一个协议版本值都不在protocolVersionTryList中;5、如果存在满足条件的分组,就从其中任意一个分组中取出任意一个协议版本值赋给protocolVersionFlag,返回到步骤3执行;否则消息A的ASN.1解码失败,将protocolVersionFlag重新置为初始值,执行步骤6;对于此实施例,若第一次执行到步骤5,由于消息A的versionGroupList中存在满足条件的分组(v3,v4),因此将把v3或者v4赋给protocolVersionFlag,返回到步骤3执行。若第二次执行到步骤5,则消息A的versionGroupList中就找不到满足条件的分组,意味着用户终端所有支持的协议版本所对应的ASN.1解码模块都无法正确解析消息A,用户终端将protocolVersionFlag重新置为初始值,执行步骤6。
6、将protocolVersionTryList清空,协议版本探测过程结束,用户终端根据协议进行后续处理。
本发明方法还可有其他多种实施例,在不背离本发明方法的精神及其实质的情况下,本领域技术人员当可相据本发明方法作出各种相应的改变或变形,但这些相应的改变或变形均属于本发明方法的权利要求保护范围。
权利要求
1.一种自适应协议版本探测方法,其特征在于定义用于存储协议版本标识的protocolVersionFlag,其每一种取值表示一个特定的ASN.1协议版本并对应一个ASN.1编解码模块(以下将该取值简称为协议版本值);根据3GPP定义的每个L3消息定义其对应的一个版本分组列表versionGroupList,并将ASN.1描述完全相同的各protocolVersionFlag的协议版本值分成一组;定义一个用于存储尝试过的协议版本值列表protocolVersionTryList。初始化protocolVersionFlag为某个协议版本值,初始化protocolVersionTryList为空,根据protocolVersionFlag的协议版本值加载对应的ASN.1解码模块,对终端接收到的网络侧消息(简称为message)进行解码,并将protocolVersionFlag的值存入protocolVersionTryList中,对解码结果进行判断,如果解码成功,确定最终协议版本为protocolVersionFlag当前协议版本值所对应的ASN.1版本,加载对应的ASN.1编码模块,否则判断message对应的versionGroupList中是否存在满足非当前protocolVersionFlag所在分组且其中任何一个协议版本值都不在protocolVersionTryList中的条件的其他分组,如存在其他分组就从其中任意一个分组中取出任意一个协议版本值赋给protocolVersionFlag,并根据protocolVersionFlag新赋予的协议版本值加载对应的ASN.1解码模块,对终端接收到的网络侧消息(简称为message)进行解码,并将protocolVersionFlag的值存入protocolVersionTryList中,再次对解码结果进行判断,依此往复进行,直至探测到最终协议版本为protocolVersionFlag当前协议版本值所对应的ASN.1版本或message的ASN.1解码失败。
2.根据权利要求1所述探测方法,其特征在于message的ASN.1解码失败,将protocolVersionFlag重新置为初始值,将protocolVersionTryList清空,协议版本探测过程结束,用户终端根据协议进行后续处理。
全文摘要
本发明与现有技术相比,不需要提前获知网络侧使用的协议版本,也不需要手动加载对应的ASN.1编解码模块重新生成目标代码,而是通过在收到网络侧的L3消息后,自动进行尝试,遍历该消息所有对应的不同ASN.1描述的协议版本,直到该版本对应的ASN.1解码模块能够正确解析出该消息,达到了自适应探测协议版本的目的,极大地提高了用户终端的灵活性以及对使用不同协议版本的网络兼容性。
文档编号H04L29/02GK101018231SQ20071007818
公开日2007年8月15日 申请日期2007年2月7日 优先权日2007年2月7日
发明者李贵勇, 王小华, 陈贤亮, 何兰 申请人:重庆重邮信科股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1