一种在sip多处理器系统中实现会话调度的方法

文档序号:7615018阅读:186来源:国知局
专利名称:一种在sip多处理器系统中实现会话调度的方法
技术领域
本发明涉及通讯领域的会话调度技术,尤其涉及多处理器系统中的会话调度技术。
背景技术
随着互联网和宽带技术的发展,基于IP网络的语音传输(VOIP)技术在企业网和公共网络中得到了越来越多的应用,其中SIP网络体系由于SIP协议简单,易扩充等特性,从而在通讯网中得到越来越多的应用。对于电信级的通讯网络来说,其必然需要具备大容量的处理能力,而如何实现大容量处理能力,分布式多处理器处理技术正是解决这个问题的一个好方法。
现有技术中,在SIP多处理器系统中实现会话调度的方法是将每个会话与处理器对应关系存放起来,根据对应关系进行调度分发处理,这种方式比较消耗系统的存储资源,调度效率和可靠性也不是很高,并且对于多处理器之间的负荷均衡也没有考虑,需要改进的方法来解决这些问题。

发明内容
本发明要解决的问题是克服现有技术存在的系统资源利用率低和处理器负荷均衡性差的缺陷,进而提供一种在SIP多处理器系统中实现会话调度的方法,提高系统的稳定性和可靠性,并能实现系统资源的高效利用。
本发明采用以下技术方案一种在SIP多处理器系统中实现会话调度的方法,包括以下步骤
步骤一SP将SIP消息解码,获取对应的会话标识,将会话标识分别映射到各UAP列表上,所获取的UAP形成下一跳UAP列表;步骤二SP将SIP消息转发给下一跳UAP列表中第一UAP处理,并将其余下一跳UAP信息通知该第一UAP;步骤三该第一UAP收到SIP消息后,检查是否处理该SIP消息对应的会话;步骤四如果该第一UAP不处理,则SP根据获得的下一跳UAP信息,继续将该SIP消息转发给下一跳UAP列表中第二UAP处理,并将其余下一跳UAP信息通知此第二UAP,直到下一跳UAP列表信息为空。
进一步地,UAP处理完SIP消息后,需发送响应给SP;若需回复消息给外部UA,则SP发送回复消息给外部UA。
进一步地,上述的UAP列表形成UAP列表池;在该UAP列表池中,最上面的UAP列表存放当前可用的所有UAP,即当前可用UAP列表,当某个UAP发生状态变化时,除了池底的UAP列表被丢弃外,SP将池中其他各UAP列表,依次存放到其下面的UAP列表中进行保存,然后修改当前可用UAP列表当某个UAP进入服务状态,则SP将此UAP加入到当前可用UAP列表中;而当某个UAP退出服务状态,则SP将此UAP从当前可用UAP列表移走。
进一步地,在SP的UAP列表中,某个UAP可以存放在其中的多个位置。
进一步地,当某个UAP从可用状态变为不可用状态时,SP可以用其他可用UAP替代掉当前可用UAP列表中的该不可用UAP。
进一步地,当某个UAP从不可用状态变为可用状态时,SP可以用该UAP替代掉当前可用UAP列表中的部分其他可用UAP。
进一步地,SP通过调整UAP列表中UAP的分布和分布数量,调整各UAP的负荷。
进一步地,除了当前可用UAP列表外,其他UAP列表池中的列表都有一个老化过程,具有一定的生命周期,当其生命周期到达时,将该列表从UAP列表池中移除。
进一步地,上述步骤一中,采用如下方法将会话标识映射到UAP列表中首先对会话标识组成的字节进行运算,获得一个中间数;然后对此中间数进行取模运算,模值大小为UAP列表长度,从而获得一个余数;以此余数为UAP在UAP列表中的位置,则可以获得相应的UAP。
相较与现有技术,采用本发明方法具备以下有益效果在资源占用不多的情况下,提供高效的多处理器SIP会话调度;实现多个处理器之间负荷均衡处理;可平滑地增加处理器,自动升级整个SIP服务系统处理能力;提高SIP服务系统的可靠性。


图1是应用本发明的SIP服务系统网络结构图;图2是本发明的调度处理单元的会话调度流程图;图3是本发明的用户代理处理单元的消息处理流程图。
具体实施例方式
下面结合附图对技术方案的实施作进一步的详细描述在应用本发明的SIP多处理器系统中,存在至少两个或两个以上充当UA(用户代理)的UAP(UAProcessor,用户代理处理单元);至少一个充当SIP会话消息调度的SP(Scheduler Processor,调度处理单元);至少一个LS(Location Service,位置服务单元)。SP、UAP和LS一起组成一个SIP多处理器系统(或称SIP服务系统),为外部UA提供服务。在应用本发明的SIP服务系统中,SP与所有UAP之间存在通信链路,而各UAP之间也存在通信链路,它们之间可以相互转发会话SIP消息。SP管理维护所有UAP是否可用的状态,将所有可用的UAP放在列表中;SP根据UAP的可用状态进行会话调度。LS则为所有的UAP提供位置服务。
图1是应用本发明的SIP服务系统一个实施例的网络结构图,在本实施例中,应用本发明的SIP服务系统网络结构包括一个SP、三个UAP(UAP:1、UAPL:2、UAP:3)和一个LS;用户代理(或称终端)UA1和UA2通过网络接入到SP服务系统上;UA1和UA2注册到SP服务系统中,注册地址记录到LS中。SP可以与某个UAP共存于同一个物理实体中,在实际使用中一个SIP服务系统可以有多个SP。
在SP收到的外部UA发送过来的SIP会话消息中,包括本地UAP主动发起的会话和外部UA主动发起的会话。对于外部UA主动发起的会话,SP调度指派一个UAP处理这个会话的所有SIP消息;对于本地UAP主动发起的会话,SP收到的外部UA所发送的该会话的所有SIP消息,必须转交给该发起会话的本地UAP处理。在下面的会话调度方案描述中,将分别针对本地UAP主动发起的会话和外部UA主动发起的会话这两种情况进行描述。
对于本地UAP主动发起的会话,UAP在会话标识中携带UAP信息如果会话标识是每次会话启动时动态产生的(如Call-ID等),则在会话标识中直接加入UAP信息;如果会话标识是由固定的信息组成(如From等),则要求该固定信息与UAP之间存在一个映射对应关系,会话必须由映射对应关系对应的UAP发起。其中,会话标识是指SIP消息中与会话相关的信息,该信息在整个会话消息交互过程中将保持不变,比如Call-ID、From等属性。对于本地UAP主动发起的会话和外部UA主动发起的会话,在调度时可以采用不同的会话标识类型。
在本发明中,对于外部UA主动发起的SIP会话,SP采用将会话标识映射到一个可用UAP列表中而获取一个UAP的方式来实现会话调度,但由于运行过程中会发生UAP进入/退出服务的情况,这样对于同一个会话,其会话过程中的各SIP消息映射的结果就可能不一样。为了保证SIP会话中每个消息都能正确映射到相同UAP上处理,SP将使用两个或两个以上的UAP列表来记录UAP变动发生前后的可用UAP信息,这样当SP收到某个外部UA发送的SIP消息后,SIP服务系统按照如下步骤执行步骤一SP将SIP消息解码,获取对应的会话标识,将会话标识分别映射到各UAP列表上,所获取的UAP形成下一跳UAP列表。SP可以在获取会话标识和会话发起方的情况下,对SIP消息进行部分解码。将会话标识映射到UAP列表中,可以采用如下方法首先对会话标识组成的字节进行简单的数学运算(如加法等),获得一个中间数;然后对此中间数进行取模运算,模值大小为UAP列表长度,从而获得一个余数;以此余数为UAP在UAP列表中的位置,则可以获得相应的UAP。
步骤二SP将SIP消息转发给下一跳UAP列表中第一UAP处理,并将其余下一跳UAP信息通知该第一UAP。下一跳UAP列表信息可以放在SIP消息中的Route属性中携带给UAP;或者SP可以将其信息增加到SIP消息中的Via属性中,由此其他下一跳的UAP可以获知响应消息通过哪个SP发送出去。SP可以按照自定义的消息格式将SP信息、下一跳UAP列表信息和SIP消息转发给UAP。
步骤三该第一UAP收到SIP消息后,检查是否处理该SIP消息对应的会话;步骤四如果该第一UAP不处理,则SP根据获得的下一跳UAP信息,继续将该SIP消息转发给下一跳UAP列表中第二UAP处理,并将其余下一跳UAP信息通知此第二UAP,直到下一跳UAP列表信息为空。UAP可以将SP信息、下一跳UAP列表信息和SIP消息等内容按照自定义的消息格式转发给下一跳UAP C(即第一UAP转发给第二UAP,以此类推)。
UAP处理完SIP消息后,需发送响应给SP;若需回复消息给外部UA,则SP发送回复消息给外部UA。
本发明中,所有UAP列表形成一个UAP列表池;在这个UAP列表池中,最上面的UAP列表存放当前可用的所有UAP(称之为“当前可用UAP列表”),各列表之间存在一个序列关系。当某个UAP发生状态变化时,除了池底的UAP列表被丢弃外,SP将池中其他各UAP列表,依次存放到其下面的UAP列表中进行保存,然后修改当前可用UAP列表当某个UAP进入服务状态,则SP将此UAP加入到当前可用UAP列表中;而当某个UAP退出服务状态,则SP将此UAP从当前可用UAP列表移走。在SP的UAP列表中,某个UAP可以存放在其中的多个位置。当某个UAP从可用状态变为不可用状态时,SP可以用其他可用UAP替代掉当前可用UAP列表中的该UAP。当某个UAP从不可用状态变为可用状态时,SP可以用该UAP替代掉当前可用UAP列表中的部分其他可用UAP。SP通过调整UAP列表中UAP的分布和分布数量,达到调整各UAP的负荷。
除了当前可用UAP列表外,其他UAP列表池中的列表都有一个老化过程,具有一定的生命周期,当其生命周期到达时,将该列表从UAP列表池中移除。UAP列表的生命周期可以按照一个经验值事先设定好,如一个通话通常不会保持超过1个小时,则可以将其生命周期设定为1小时。UAP列表的存储形式可以采用各种数据结构进行存储,最简单的是采用数组方式进行描述。
SP可以根据UAP的响应对UAP处理分布进行统计分析,从而在步骤二中对下一跳UAP列表中的UAP进行调整排序,以达到最佳调度效果。SP可以根据UAP的回应消息对UAP处理分布进行统计分析,当下一跳UAP列表中根据某个UAP列表(除当前可用UAP列表)计算出来的UAP,在某个时间段内达到0%的调度命中后,则将其进行老化处理,从UAP列表池中移除。
如图2所示,SP的会话调度流程如下步骤201SP收到外部UA发送过来的SIP消息;步骤202SP对该SIP消息进行解码;步骤203SP判断其是否会话消息,如果不是的话执行步骤204;否则执行步骤205;步骤204SP转到其他流程处理,退出本流程;步骤205SP获取SIP消息中的Call-ID和会话发起方信息;步骤206SP判断会话发起方是否为外部UA,如果是的话,执行步骤207;否则执行步骤214;步骤207SP将Call-ID转换成BYTE类型数组,所有数组成员进行相加,获得数值A;步骤208SP获取第一个可用UAP列表;步骤209SP以该UAP列表长度为模,对数值A取模获余数B,以余数B为下标获取UAP列表对应的UAP,放入下一跳UAP列表;步骤210SP判断是否还有下一个UAP列表,如果有执行步骤211,否则执行步骤212;步骤211SP获取下一个可用UAP列表,重复步骤209;步骤212SP移除下一跳UAP列表中的重复信息;获取其中的第一个UAP C,将C从下一跳UAP列表中移除;步骤213SP将SP地址、下一跳UAP列表、以及SIP消息以自定义结构方式发送给UAP C处理,执行步骤216;步骤214SP根据Call-ID中的UAP信息,获取UAP C;步骤215SP将SIP消息发送给UAP C处理;步骤216流程处理结束。
如图3所示,当UAP接收到会话消息后,进入UAP的处理流程,包括以下步骤步骤301UAP收到SP转发的会话消息;步骤302UAP对其中的SIP消息解码;步骤303UAP判断是否应该处理会话,若否,执行步骤306;若是,执行步骤304;步骤304UAP进行会话处理;步骤305UAP向SP回应处理结果信息,执行步骤310;步骤306UAP判断下一跳UAP列表是否为空,如果是的话,执行步骤309;步骤307UAP获取下一跳UAP列表中第一个UAP C,并将C从下一跳UAP列表中移除;步骤308将SP地址、下一跳UAP列表、以及SIP消息以自定义结构方式发送给UAP C处理;执行步骤310;步骤309UAP向SP回应失败信息;步骤310流程处理结束。
在本实施例中,当UAP处理完SIP消息后,根据SIP消息种类进行相应的处理当SIP消息找到相应的UAP处理时如果SIP消息为响应消息(Response)时,该UAP处理完毕后,发送自定义消息响应SP,以告知该消息以被处理;如果SIP消息为请求消息(Request)时,该UAP处理完毕后,发送SIP响应消息给SP,SP将该消息转发出去,响应外部UA;当SIP消息找不到相应的UAP处理时如果SIP消息为响应消息(Response)时,最后一跳的UAP发送自定义消息响应SP,以告知该消息未被处理;如果SIP消息为请求消息(Request)时,最后一跳的UAP发送SIP失败响应消息给SP,SP将该消息转发出去,响应外部UA。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
1.一种在SIP多处理器系统中实现会话调度的方法,包括以下步骤步骤一调度处理单元将SIP消息解码,获取对应的会话标识,将会话标识分别映射到各用户代理处理单元列表上,所获取的用户代理处理单元形成下一跳用户代理处理单元列表;步骤二调度处理单元将SIP消息转发给下一跳用户代理处理单元列表中第一用户代理处理单元处理,并将其余下一跳用户代理处理单元信息通知该第一用户代理处理单元;步骤三该第一用户代理处理单元收到SIP消息后,检查是否处理该SIP消息对应的会话;步骤四如果该第一用户代理处理单元不处理,则调度处理单元根据获得的下一跳用户代理处理单元信息,继续将该SIP消息转发给下一跳用户代理处理单元列表中第二用户代理处理单元处理,并将其余下一跳用户代理处理单元信息通知此第二用户代理处理单元,直到下一跳用户代理处理单元列表信息为空。
2.根据权利要求1所述的方法,其特征在于,用户代理处理单元处理完SIP消息后,需发送响应给调度处理单元;若需回复消息给外部用户代理,则调度处理单元发送回复消息给外部用户代理。
3.根据权利要求1所述的方法,其特征在于,所述的用户代理处理单元列表形成用户代理处理单元列表池;在该用户代理处理单元列表池中,最上面的用户代理处理单元列表存放当前可用的所有用户代理处理单元,即当前可用用户代理处理单元列表,当某个用户代理处理单元发生状态变化时,除了池底的用户代理处理单元列表被丢弃外,调度处理单元将池中其他各用户代理处理单元列表,依次存放到其下面的用户代理处理单元列表中进行保存,然后修改当前可用用户代理处理单元列表当某个用户代理处理单元进入服务状态,则调度处理单元将此用户代理处理单元加入到当前可用用户代理处理单元列表中;而当某个用户代理处理单元退出服务状态,则调度处理单元将此用户代理处理单元从当前可用用户代理处理单元列表移走。
4.根据权利要求3所述的方法,其特征在于,在调度处理单元的用户代理处理单元列表中,一个用户代理处理单元可以存放在其中的多个位置。
5.根据权利要求4所述的方法,其特征在于,当某个用户代理处理单元从可用状态变为不可用状态时,调度处理单元可以用其他可用用户代理处理单元替代掉当前可用用户代理处理单元列表中的该不可用用户代理处理单元。
6.根据权利要求4所述的方法,其特征在于,当某个用户代理处理单元从不可用状态变为可用状态时,调度处理单元可以用该用户代理处理单元替代掉当前可用用户代理处理单元列表中的部分其他可用用户代理处理单元。
7.根据权利要求3所述的方法,其特征在于,调度处理单元通过调整用户代理处理单元列表中用户代理处理单元的分布和数量,调整各用户代理处理单元的负荷。
8.根据权利要求3所述的方法,其特征在于,除了当前可用用户代理处理单元列表外,其他用户代理处理单元列表池中的列表都有一个老化过程,具有一定的生命周期,当其生命周期到达时,将该列表从用户代理处理单元列表池中移除。
9.根据权利要求1所述的方法,其特征在于,所述步骤一中,采用如下方法将会话标识映射到用户代理处理单元列表中首先对会话标识组成的字节进行运算,获得一个中间数;然后对此中间数进行取模运算,模值大小为用户代理处理单元列表长度,从而获得一个余数;以此余数为用户代理处理单元在用户代理处理单元列表中的位置,获得相应的用户代理处理单元。
全文摘要
本发明旨在提供一种在SIP多处理器系统中实现会话调度的方法,用于通讯领域的会话调度,包括调度处理单元SP将SIP消息解码,获取对应的会话标识,分别映射到各用户代理处理单元UAP列表上,所获取的UAP形成下一跳UAP列表;SP将SIP消息转发给下一跳UAP列表中第一UAP处理,并通知第一UAP其余下一跳UAP信息;第一UAP收到SIP消息后,检查是否处理该会话;如不处理,则SP继续将该SIP消息转发给下一跳UAP列表中第二UAP处理,并通知第二UAP其余下一跳UAP信息,直到下一跳UAP列表信息为空。本发明占用资源不多,可提供高效的多处理器SIP会话调度,并提高了SIP服务系统的可靠性。
文档编号H04L29/06GK1838658SQ200510038559
公开日2006年9月27日 申请日期2005年3月24日 优先权日2005年3月24日
发明者胡宪利 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1