在h.248协议栈中防止并发操作的方法及其系统的制作方法

文档序号:7652298阅读:89来源:国知局
专利名称:在h.248协议栈中防止并发操作的方法及其系统的制作方法
技术领域
本发明涉及通讯领域,特别是涉及下一代网络(NGN)接入网关(AG)设备中H.248协议栈里实现用户串行操作的处理方法及其系统。
背景技术
在下一代网络(Next Generation Network,NGN)中,接入网关(AccessGateway,AG)负责将用户接入到IP网络,实现时分复用(Time DivisionMultiplexing,TDM)交换向IP交换的转换,接入网关与软交换之间通过H.248协议交互,H.248协议是接入网关的核心协议。
H.248协议标准对信令的执行顺序作出了严格规定,即软交换针对一个用户的命令必须串行下发给接入网关(拆线命令可以例外)。串行是指一条命令执行完成前下一条命令不能下发,而一条命令执行完成的标志是完成一次三次握手。
H.248协议标准对命令的执行顺序有明确规定,摘录原文如下“在一个终结点上,一般最多只应当有一个未处理完的命令(如Add、Modify或Move),除非这些未处理完的命令包含在同一个事务中。但是Subtract命令可以随时发送。”在目前商用的软交换中,由于不同类型的信令分属于不同的进程,而这些进程之间可能缺少同步的机制,导致针对一个用户连续下发多条命令的情况经常发生,这就要求接入网关设备必须能够正常处理这些可能导致并发操作的信令。
为什么要防止针对用户的并发操作,并发操作又会导致什么后果?一般来说,接入网关设备内部是由多个模块组成的,而多个模块之间的交互可能采取停等方式,并发信令可能导致下一模块处理完一条命令之前就收到后续命令,导致出错。H.248协议是接入网关设备与软交换机的接口,在这里对并发信令进行排队处理,接入网关设备内部的模块就不需要再考虑并发问题。

发明内容
本发明所要解决的技术问题在于提供一种在H.248协议栈中防止并发处理的方法及其系统,用于防止对用户进行并发操作。
为了实现上述目的,本发明提供了一种在H.248协议栈中防止并发操作的方法,用于包括顺次连接的软交换机、接入网关设备、H.248协议栈模块的系统,其特征在于,包括一队列设置步骤,设置一用户防并发队列和一挂起状态事务队列,所述用户防并发队列用于存放用户标识和用户状态,所述挂起状态事务队列用于存放所有并发信令对应的事务;一信令解码步骤,用于对所述软交换机传送至所述接入网关设备的信令进解码处理;一事务处理步骤,用于接收经过解码处理后的信令,维护事务队列,并对不同状态的事务进行处理;及一防并发处理步骤,用于接收经过事务处理后的信令,并通过查找所述用户防并发队列判断所述信令的类别,当所述信令为串行信令时,对所述信令执行串行信令处理,或当所述信令为并发信令时,对所述信令执行防并发处理。
所述的在H.248协议栈中防止并发操作的方法,其中,所述防并发处理步骤中,还包括将所述信令分解成多条等待执行的命令,获取当前命令对应的用户标识并查找所述用户防并发队列,当在所述用户防并发队列中查找到所述用户标识时,则所述当前命令为串行命令,否则所述当前命令为并行命令。
所述的在H.248协议栈中防止并发操作的方法,其中,所述防并发处理步骤中,对所述信令执行串行信令处理的步骤具体为当所述当前命令为串行命令时,将所述用户标识存入所述用户防并发队列,将所述用户状态设置为忙,执行所述串行命令并在执行完毕后,再将所述用户标识从所述用户防并发队列删除,将所述用户状态设置为空闲。
所述的在H.248协议栈中防止并发操作的方法,其中,所述防并发处理步骤中,对所述信令执行防并发处理的步骤具体为当所述当前命令为并行命令时,将所述当前命令对应的事务从等待处理事务队列中删除,并插入至所述挂起状态事务队列中,当所述当前命令对应的用户状态变成空闲时再执行所述当前命令。
所述的在H.248协议栈中防止并发操作的方法,其中,所述防并发处理步骤中,还包括周期检查所述挂起状态事务队列获取所述当前命令对应的用户状态信息,并当所述用户状态仍为忙时,向所述软交换机周期发送一事务处理中消息的步骤。
所述的在H.248协议栈中防止并发操作的方法,其中,所述防并发处理步骤中,还包括当所述当前命令等待执行的时间超过一设定时间时,将所述当前命令对应的用户状态设置为空闲的步骤。
为了实现上述目的,本发明还提供了一种在H.248协议栈中防止并发操作的系统,包括顺次连接的软交换机、接入网关设备、H.248协议栈模块,其特征在于,所述H.248协议栈模块又包括一编解码模块,用于对所述软交换机传送至所述接入网关设备的信令进解码处理;一事务处理模块,连接所述编解码模块,用于接收经过解码处理后的信令,维护事务队列,并对不同状态的事务进行处理,所述事务队列包括一用户防并发队列和一挂起状态事务队列,所述用户防并发队列用于存放用户标识和用户状态,所述挂起状态事务队列用于存放所有并发信令对应的事务;及一语义执行模块,连接所述事务处理模块,用于接收经过事务处理后的信令,并通过查找所述用户防并发队列判断所述信令的类别,当所述信令为串行信令时,对所述信令执行串行信令处理,或当所述信令为并发信令时,对所述信令执行防并发处理。
所述的在H.248协议栈中防止并发操作的系统,其中,所述信令为文本格式的信令或二进制格式的信令。
所述的在H.248协议栈中防止并发操作的系统,其中,其特征在于,所述用户防并发队列的数据结构为单向链表。
本发明的有益技术效果在于采用本发明可以在H.248协议栈里对所有可能导致并发的信令进行拦截、缓存、排队和顺序输出,采用的数据结构简单,对H.248协议栈改动很小。将该方法在接入网关中实现,使得信令级的并发在经过H.248协议栈后变为串行;同时本发明对串行信令没有影响,只对并发信令起到将并发信令输入变串行信令输出的作用。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。


图1是本发明信令的防并发处理模块结构图;图2是本发明一条信令的防并发处理流程图。
具体实施例方式
下面结合附图和实施方式对本发明的技术方案作进一步的描述。
如图1所示,是本发明信令的防并发处理模块结构图。为了更清楚描述本发明模块结构,现对几个概念进行如下定义a1)H.248协议媒体网关控制协议,是下一代网络中的接口协议之一,它应用于下一代网络中媒体处理和信令控制分离后所产生的控制接口。
a2)终结点(Termination)是接入网关AG上的逻辑实体,它发起和/或接收媒体和/或控制流。
a3)接入网关AG是一种提供用户网络接口(User Network Interface,UNI)的媒体网关。
a4)三次握手H.248协议标准规定,一次完整的信令交互包括请求、响应、确认三条消息,又称为三次握手。
该模块结构图包括软交换机10、接入网关设备20、H.248协议栈模块30。
将H.248协议栈模块30从逻辑架构上分成三个层次,分别是编解码模块301、事务处理模块302、语义执行模块303。
编解码模块301负责把文本格式或二进制格式的信令转化为接入网关设备20的内部数据结构,以供事务处理模块302处理,或者把内部数据结构编码成信令发送;编解码模块301是一个通用的协议级模块,不对具体用户做任何操作,也不识别具体用户的TERMID;编解码模块301对用户信令是并发还是串行并不知道,只是完成编解码功能,所以防并发处理在编解码模块301中实现不合适。
事务处理模块302负责对不同状态的事务进行处理。事务处理模块302维护多个事务队列,不同的事务队列保存处于不同状态的事务;事务处理模块302对处于不同状态的事务执行不同的处理,以保证事务的可靠执行;事务处理模块302不涉及用户的操作,也不知道针对具体用户的具体命令,所以在事务处理模块302实现用户防并发处理不合适。
语义执行模块303是最终的执行模块,负责执行针对用户的具体命令;只有语义执行模块303清楚对一个用户执行了什么操作,语义执行模块303是用户级的模块,用户防并发处理在语义执行模块303实现是最合理的。
本发明H.248协议栈模块30在协议栈里增加了二个队列用户防并发队列和挂起状态事务队列。
用户防并发队列,用于保存用户的忙闲状态,并在系统执行命令时根据用户的忙闲状态来实现防并发处理。
挂起状态事务队列,用于保存所有并发的信令对应的事务,对并发信令起到缓存作用;并发的信令又称为并发信令。
用户防并发队列从数据结构来看是一个单向链表,该链表的每个单元保存的信息是用户的TERMID(标识)和忙闲状态。
对用户防并发处理的原理如下b1)定义用户的两种状态忙状态和空闲状态。忙状态表示该用户正在执行一条命令,空闲状态表示该用户当前没有执行任何命令,可以立即执行一条命令。
b2)在执行一条命令前,需要对用户的忙闲状态进行判断。如果是空闲状态,可以执行命令;如果是忙状态,则当前命令被挂起,等待用户变成空闲状态才能继续执行。
b3)当接入网关执行一条针对某个用户的命令时,就将该用户的状态设置成忙,当执行完毕时,再设置该用户的状态为空闲。
挂起状态事务队列是事务处理模块302的一个普通队列,其数据结构是一队列,该队列里保存的是所有并发信令对应的事务。
本发明通过在H.248协议栈里实现排队机制,保证了针对同一用户的命令的顺序执行。
如图2所示,是本发明一条信令的防并发处理流程图。该流程描述了H.248协议对并发信令的处理,结合一个典型实例和图1,下面详细叙述防并发处理实施的过程,具体包括步骤201,接入网关设备20收到软交换机10发来的一条请求或响应消息;步骤202,将该请求或响应消息经由编解码模块301进行解码,解码后再提交事务处理模块302处理;步骤203,事务处理模块302将当前消息对应的事务放入等待执行事务队列,这个过程中不对并发情况进行判断和处理;步骤204,周期扫描等待执行事务队列和挂起状态事务队列;步骤205,经过事务处理模块302处理后,消息进入语义执行模块303;语义执行模块303将当前消息分解成多条等待执行的命令,并取出一条命令作为当前命令;步骤206,判断当前命令对应用户的忙闲状态,若处于忙状态,则挂起事务,等待用户空闲,并返回至步骤S203,若处于空闲状态,则将对应用户的状态设置为忙;步骤207,语义执行模块303执行命令前,需判断当前命令是否会导致并发。从命令里取出当前命令对应的用户TERMID,假设是“USERA”;如果在用户防并发队列里找不到“USERA”,说明是串行信令,正常执行;如果找到“USERA”,说明用户“USERA”正在执行一条命令,这时需要进行防并发处理。具体防并发处理如下针对一条串行信令的处理,具体为m1)语义执行模块303判断一条命令是串行命令后,接下来就是执行这条命令;m2)在执行前,需要把当前用户TERMID加入到用户防并发队列中,表示当前用户正在执行一条命令,处于忙状态;m3)等到命令执行完毕时,H.248协议栈模块30会收到其他模块的执行完毕(成功或失败)的通知,这时再从用户防并发队列里把这个用户的TERMID删除,表示该用户已经空闲,到此一条串行信令执行完成;概括地讲,在执行串行信令前,把用户TERMID加入到用户防并发队列里,执行完毕,再把用户TERMID从用户防并发队列里删除。
针对一条并发信令的处理,具体为n1)语义执行模块303执行一条命令前,在用户防并发队列里搜索当前用户,若搜索成功,说明该用户忙,当前命令是一条可能导致并发的命令,需要进行防并发排队处理;n2)防并发的判断是在语义执行模块303实现的,语义执行模块303发现当前命令会导致并发,立即通知事务处理模块将对应事务挂起302;n3)事务处理模块302将当前事务从等待处理事务队列中删除,再插入到挂起状态事务队列中;挂起状态事务队列中保存的是所有并发信令对应的事务,挂起状态事务队列中的事务一直处于挂起状态,除非对应的用户状态变成空闲;n4)事务处理模块302周期检查挂起状态事务队列,一旦有挂起事务对应的用户空闲,立即执行,对因长时间处于用户忙状态得不到执行的挂起事务,周期给软交换发送Transaction Pending(事务处理中)消息,如果等待执行超时(大于设定时间),则认为当前命令执行异常,可以强制设置对应用户状态为空闲,这样后续的命令可以得到正常执行。
步骤208,在完成命令执行过程后,将用户的状态设置为空闲。
通过以上步骤在H.248协议栈里实现防并发处理后,接入网关设备内部各模块就不再需要专门针对防并发做特别处理,大大减少了系统的开销。将该方法在接入网关的H.248协议栈里实现,并随同产品发布,可用于防止并发信令导致的各类并发问题。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
1.一种在H.248协议栈中防止并发操作的方法,用于包括顺次连接的软交换机、接入网关设备、H.248协议栈模块的系统,其特征在于,包括一队列设置步骤,设置一用户防并发队列和一挂起状态事务队列,所述用户防并发队列用于存放用户标识和用户状态,所述挂起状态事务队列用于存放所有并发信令对应的事务;一信令解码步骤,用于对所述软交换机传送至所述接入网关设备的信令进解码处理;一事务处理步骤,用于接收经过解码处理后的信令,维护事务队列,并对不同状态的事务进行处理;及一防并发处理步骤,用于接收经过事务处理后的信令,并通过查找所述用户防并发队列判断所述信令的类别,当所述信令为串行信令时,对所述信令执行串行信令处理,或当所述信令为并发信令时,对所述信令执行防并发处理。
2.根据权利要求1所述的在H.248协议栈中防止并发操作的方法,其特征在于,所述防并发处理步骤中,还包括将所述信令分解成多条等待执行的命令,获取当前命令对应的用户标识并查找所述用户防并发队列,当在所述用户防并发队列中查找到所述用户标识时,则所述当前命令为串行命令,否则所述当前命令为并行命令。
3.根据权利要求2所述的在H.248协议栈中防止并发操作的方法,其特征在于,所述防并发处理步骤中,对所述信令执行串行信令处理的步骤具体为当所述当前命令为串行命令时,将所述用户标识存入所述用户防并发队列,将所述用户状态设置为忙,执行所述串行命令并在执行完毕后,再将所述用户标识从所述用户防并发队列删除,将所述用户状态设置为空闲。
4.根据权利要求2所述的在H.248协议栈中防止并发操作的方法,其特征在于,所述防并发处理步骤中,对所述信令执行防并发处理的步骤具体为当所述当前命令为并行命令时,将所述当前命令对应的事务从等待处理事务队列中删除,并插入至所述挂起状态事务队列中,当所述当前命令对应的用户状态变成空闲时再执行所述当前命令。
5.根据权利要求4所述的在H.248协议栈中防止并发操作的方法,其特征在于,所述防并发处理步骤中,还包括周期检查所述挂起状态事务队列获取所述当前命令对应的用户状态信息,并当所述用户状态仍为忙时,向所述软交换机周期发送一事务处理中消息的步骤。
6.根据权利要求5所述的在H.248协议栈中防止并发操作的方法,其特征在于,所述防并发处理步骤中,还包括当所述当前命令等待执行的时间超过一设定时间时,将所述当前命令对应的用户状态设置为空闲的步骤。
7.一种在H.248协议栈中防止并发操作的系统,包括顺次连接的软交换机、接入网关设备、H.248协议栈模块,其特征在于,所述H.248协议栈模块又包括一编解码模块,用于对所述软交换机传送至所述接入网关设备的信令进解码处理;一事务处理模块,连接所述编解码模块,用于接收经过解码处理后的信令,维护事务队列,并对不同状态的事务进行处理,所述事务队列包括一用户防并发队列和一挂起状态事务队列,所述用户防并发队列用于存放用户标识和用户状态,所述挂起状态事务队列用于存放所有并发信令对应的事务;及一语义执行模块,连接所述事务处理模块,用于接收经过事务处理后的信令,并通过查找所述用户防并发队列判断所述信令的类别,当所述信令为串行信令时,对所述信令执行串行信令处理,或当所述信令为并发信令时,对所述信令执行防并发处理。
8.根据权利要求7所述的在H.248协议栈中防止并发操作的系统,其特征在于,所述信令为文本格式的信令或二进制格式的信令。
9.根据权利要求7或8所述的在H.248协议栈中防止并发操作的系统,其特征在于,所述用户防并发队列的数据结构为单向链表。
全文摘要
本发明公开了一种在H.248协议栈中防止并发操作的方法及其系统,该方法包括一队列设置步骤,设置一用户防并发队列和一挂起状态事务队列,用户防并发队列用于存放用户标识和用户状态,挂起状态事务队列用于存放所有并发信令对应的事务;一信令解码步骤,用于对软交换机传送至接入网关设备的信令进解码处理;一事务处理步骤,用于接收经过解码处理后的信令,维护事务队列,并对不同状态的事务进行处理;及一防并发处理步骤,用于接收经过事务处理后的信令,并通过查找用户防并发队列判断信令的类别,当信令为串行信令时,对信令执行串行信令处理,或当信令为并发信令时,对信令执行防并发处理。本发明有效防止了对用户进行并发操作。
文档编号H04L12/66GK101068246SQ20071009952
公开日2007年11月7日 申请日期2007年5月23日 优先权日2007年5月23日
发明者孙小伟 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1