实现会话发起协议分布式系统中动态负载均衡的方法

文档序号:7957993阅读:224来源:国知局
专利名称:实现会话发起协议分布式系统中动态负载均衡的方法
技术领域
本发明涉及SIP (SESSION INITIATION PROTOCOL,会话发起协议)分布式系 统中的负载均衡。
背景技术
SIP是一类多媒体通信控制协议,目前已经在软交换、IMS (IP MULTIMEDIA SUBSYSTEM, IP多媒体子系统)等网络中广泛应用。SIP采用文本编码方式,利用 跟踪分析,但同时也造成其消息体量过大,给处于核心位置的SIP服务器带来了沉重的负担。大型系统中一般采用分布式系统处理,对于无呼叫状态服务器而言,其负载 均衡相对简单,而对于SoftSwitch、 CSCF (CALL SESSION CONTROL FUNCTION,呼 叫会话控制功能)这些有呼叫状态的SIP服务器来说负载均衡是一个复杂的问题。 在分析SIP分布式处理之前,我们可以根据分布式负载均衡的功能划分,将SIP 分布式处理节点分为三个逻辑实体l)ILBU (ILBU: IP Load-Balance Unit, IP 负载均衡单元),2) PLBU (PROTOCOL LOAD BALANCE UNIT,协议负载均衡单元), 3)PPU (PROTOCOL PROCESS UNIT,协议处理单元)。一般来说分布式方案有三种一是基于用户的分布式处理,也就是采用用户标识作为负载均衡的关键字, 它的缺点是系统的负载均衡部件必须要存储用户的状态,当系统容量较大时,入 口的负载均衡部件往往需要多个,在多个节点之间同步状态开销过大。二是采用不同的IP地址或传输层端口来标识不同的处理节点号,例如采用5060端口作为SIP节点的知名端口,每一个节点再各分配一个唯一的端口,当SIP 消息经过本节点时,根据内部复杂均衡算法为其分配一个节点,然后节点进行 Record-Route操作记录下本节点的端口号,对方网元收到200 OK后将按照新的端 口发送请求,这一方法的缺点是当采用有连接传输时,上游SIP网元必须要与本 端重建连接,增加了底层的开销。三是采用每个SIP消息中必备的头字段或参数作为负载均衡HASH的关键字 (比如Call-ID)其实现方式如图2所示,包括以下步骤
步骤201 ,外部SIP实体发起INVITE请求,ILBU收到该请求;步骤202, ILBU根据源、目的IP地址或端口号及实现的负载均衡策略获得一 个PLBU的节点号;步骤203, ILBU将该请求发送到该PLBU节点;步骤204, PLBU根据SIP请求的呼叫标识(Ca11-ID)进行HASH处理,结合本 地节点信息,得到可用的PPU节点号。 步骤205, PLBU将消息发往该PPU;步骤206, PPU处理完SIP INVITE请求消息后将消息转发出去; 步骤207 208,被叫用户对请求应答,应答消息经ILBU到达PLBU; 步骤209, PLBU根据呼叫标识HASH得到PPU节点号; 步骤210-211,应答消息经PPU、 ILBU转发给主叫用户; 步骤212 213,用户发起对话内消息经ILBU到达PLBU; 步骤214, PLBU根据呼叫标识号进行HASH,得到PPU节点号; 步骤215, PLBU将消息转发给PPU。上述各步骤描述了 SIP分布式系统内采用固定HASH算法的一次基本流程,所 有的SIP消息必须首先经过ILBU-〉PLBU进行消息预解码,得到每一个呼叫恒定不 变的成分(如Call-ID)进行HASH取模得到应该处理的节点号,模数为系统总节点 总数,这样负载均衡部件可以实现无状态工作,系统吞吐量及可靠性大大提高。 同时这一方案的缺点也显而易见,由于呼叫处理是有状态的,同一个呼叫必须在 -一个节点中进行处理,当系统中增加节点或因故障减少节点时,HASH模数发生变 化,已经建立的通话后续SIP消息无法保证分发到同一节点进行处理,也无法实 现动态负载均衡。比如某一呼叫Call-ID=C1, HASH(C1X8,系统总节点数为5, 那么该呼叫的处理节点为18 Mod 5 + 1=4,在该呼叫保持阶段系统增加了一个节 点,总节点数变为6,那么后续消息被错误的发往节点1(18 Mod 6 + 1)(因为布i 定节点号从l开始编号,取模后需要加l, 18 mod 6=0),致使该呼叫不能正常继 续或释放。实际系统中分发器可能采用一定的负载均衡策略,但在不存储每一个 呼叫状态的条件下,上述缺陷仍然存在。发明内容本发明要解决的技术问题是提供一种分布式SIP系统中实现动态负载均衡的 方法,既不需本地存储任何状态,又可以适应增删节点及动态负载均衡的要求。本发明一种实现会话发起协议分布式系统中动态负载均衡的方法,包括以下 步骤1. 1、外部会话发起协议(SIP)实体发起会话发起协议(SIP)请求消息, IP负载均衡单元(ILBU)收到会话发起协议(SIP)报文并根据报文地址或端口号 将报文发送到某一协议负载均衡单元(PLBU)处理节点;1. 2、协议负载均衡单元(PLBU)对会话发起协议(SIP)消息进行解码,判 断该消息是对话内、外请求还是响应,分别进行不同的处理;1. 2. 1、如果是对话外请求,对会话发起协议(SIP)呼叫中必须携带且保 持不变的值(Al)进行散列计算(HASH)得到协议处理单元(PPU)节点号并发送 到相应节点进行处理;该节点处理完毕后在被叫方响应的头部中返回的特定值中 添加一个私有分发参数(Bl),参数中包括对本节点号的编码,并标识为本节点 所添加;协议处理单元(PPU)转发或主动发起的请求在响应消息与请求消息中必 须相同的某一标识(CI)中记录其节点号;1. 2. 2、如果非对话外请求,转下一步处理;1. 3如果是对话内请求,根据将所述私有分发参数(Bl)确定的节点号进行 分发,如该节点不可用,则请求失败;如果非对话内请求,转下一步处理;1. 4对于响应消息,则取所述在响应消息与请求消息中必须相同的某一消息 成分(CI)进行解码得到节点号,根据解码后的节点号进行分发,如该节点不可 用,则请求失败。当系统为UDP承载时,系统的协议负载均衡单元(PLBU)、协议处理单元(PPU) 可以合设,初始分发限定在本节点。在上述方案中,所述会话发起协议(SIP)呼叫中必须携带且保持不变的值可 以是呼叫标识(Call-ID);所述被叫方响应的头部中返回的特定值可以是路由记 录(Record-Route)请求的路由(Route)字段;所述在响应消息与请求消息中必 须相同的标识可以是经由(Via)头部中的部分参数。
在一个更具体的方案中,本发明包括以下步骤步骤301,外部会话发起协议(SIP)实体发起邀请(INVITE)请求,IP负载 均衡单元(ILBU)收到该请求;步骤302, IP负载均衡单元(ILBU)根据源、目的IP地址或端口号及实现的 负载均衡策略获得一个协议负载均衡单元(PLBU)的节点号;步骤303, IP负载均衡单元(ILBU)将该请求发送到该协议负载均衡单元(PLBU) 节点;步骤304,协议负载均衡单元(PLBU)判断INVITE消息类型,若为初始INVITE, 则根据会话发起协议(SIP)请求的呼叫标识(Call-ID)或会话发起协议(SIP) 消息中请求统一资源标识符(Request-URI)中携带的用户标识进行HASH处理, 结合本地节点信息,得到可用的协议处理单元(PPU)节点号;否则根据Route头 部的分发参数解码得到处理节点号;步骤305,协议负载均衡单元(PLBU)将消息发往该协议处理单元(PPU);步骤306,协议处理单元(PPU)处理完会话发起协议(SIP) INVITE请求消 息后、转发消息之前,在转发请求的VIA中及插入的路由记录(Record-Route) 中的一个扩展参数共两处标记自己的节点号,前者是为了方便响应消息的分发处 理,后者则是解决请求消息的分发步骤307协议处理单元(PPU)将消息转发出去;步骤308 309,被叫用户对请求应答,应答消息经IP负载均衡单元(ILBU) 到达协议负载均衡单元(PLBU);步骤310,协议负载均衡单元(PLBU)根据应答消息中的VIA头部字段的内容 解码得到呼叫处理协议处理单元(PPU)节点号;步骤311-312,应答消息经协议处理单元(PPU) 、 IP负载均衡单元(ILBU) 转发给主叫用户;步骤313 314,用户发起对话内消息经IP负载均衡单元(ILBU)到达协议负 载均衡单元(PLBU);步骤315,协议负载均衡单元(PLBU)根据请求中首个路由(TOP Route)头 部字段(此字段为协议处理单元(PPU)在初始INVITE中插入的路由记录 (Record-Route)字段转换而来)中的扩展私有参数得到协议处理单元(PPU)节 点号;
歩骤316,协议负载均衡单元(PLBU)将消息转发给协议处理单元(PPU)。 采用本发明方法可以改进现有固定式HASH算法的缺陷,同时保持分发过程本身的无状态特性,比如当会话已经建立后是需要该会话的所有后续消息必须在该 节点处理,若此时某个其它节点因故障退出服务、或需手动增加节点将使系统中总的节点数目变化,从而导致固定HASH算法得出的节点号发生变化,使已经建立 的会话其后续消息分发产生紊乱。而采用本发明实际上相当于将一个会话相关的 消息看做一个任务,从第一条消息根据某个特征分配处理资源, 一旦分配了处理 节点,便为该会话贴上标签,后续消息根据标签进行分发,而不再根据初始的任 务分配关键字进行分发,这样就可以保证会话一旦建立(处理节点已分配),只 要该节点不停机,系统内的节点无论增减或者调整系统的分发策略均不影响该会 话的消息处理,从而大大提高系统的可靠性、可伸縮性。


图1是分布式SIP系统的逻辑框架图;图2是现有技术中采用固定HASH算法的分布式SIP系统中的负载均衡算法流 程图;图3是本发明实施例分布式SIP系统中的负载均衡算法流程图。
具体实施方式
图1是分布式SIP系统的逻辑框架图,示出了 ILBU (IP负载均衡部件)、PLBU (协 议负载均衡部件)、PPU(协议处理部件)等逻辑节点及其连接关系。实际系统设计 时可以根据系统节点数量、采用的负载均衡算法或部件特性将上述三个逻辑功能 进行组合、归并,部署在2个或1个物理节点中实现。如ILBU采用通用网络处理 器实现,很难对SIP消息进行解码,则ILBU必须独立设置;当系统规模较小时为 了节省成本,可以将PLBU与PPPU合设。图2是现有技术中采用固定HASH算法的分布式SIP系统中的负载均衡算法流 程图,在背景技术部分已有详细介绍。本发明利用了 SIP协议的三种特性a)在一次SIP呼叫中存在某些值是必须 携带且保持不变的,比如Call-ID; b)被叫方可以在响应的某个头部中返回特定的
值,而这个值对方必须在后续消息的某个字段中不变地带回来,如响应中的 Record-Route请求的Route字段;c)在一个SIP事务中,响应消息中的某些标识 必须与请求消息中相同,如Via头部中的部分参数。本发明的步骤为1、 外部SIP实体发起SIP请求消息,ILBU收到消息。2、 ILBU收到SIP报文根据报文地址或端口号将报文发送到某一 PLBU处理节点。3、 PLBU对SIP消息进行解码,判断该消息是对话内、外请求还是响应分别进 行不同的处理如果是对话外请求,根据符合特性a)的的SIP消息成分Al进行HASH得到PPU 节点号并发送到相应节点进行处理,该节点SIP进行处理完毕后在具备特性b)的 头部中添加一个私有分发参数B1 (形式任意,只要符合SIP协议编码、语法要求, 如did- ),参数中包括对本节点号的编码,并标识为本节点所添加。PPU转发或 主动发起的请求在符合特性c)的某一消息成分CI中(如Via的branch或其它私 有参数)记录其节点号。如果非对话外请求,转下一步处理。4、 如果是对话内请求,根据将Bl分发参数确定的节点号进行分发,如该节 点不可用,则请求失败。如果非对话内请求,转下一步处理。5、 对于响应消息,则取CI进行解码得到节点号,根据解码后的节点号进行 分发,如该节点不可用,则请求失败。本发明能带来以下优点 a)动态负载均衡。利用SIP协议的特性在初始请求中记录下系统实际为其分 配的节点号,保证了已经建立的SIP呼叫不再受负载均衡函数更改的影响,初始 呼叫SIP消息以Al的散列值分配一个处理节点k,后续的消息分发均使用消息中 携带的节点k信息,此时如修改以Al为关键字HASH分发表只会影响新到达的呼 叫,对已建立的呼叫没有不良影响。采用该算法的系统可以根据系统当前的性能 度量结果动态修改系统分发表,从而实现了系统动态负载均衡。b)容错由于会话一旦建立,本发明中即通过返回的参数确定了处理节点, 后续消息中必然携带节点信息,因此会话后续消息可以利用此信息找到原始会话 处理节点,不会因为节点增减造成分发错误,因此即具备以下容错特性n-节点 的分布式系统检测节点k失效,此时将所有应分发到该节点的Al的模值均匀分布9
到其它n-1个节点上,故障期间携带k节点信息的对话内SIP消息均被正确丢弃, 初始SIP消息被分发到其它节点之上;故障恢复后,系统重新调整A1分发表,新 的呼叫可以到达节点k,而呼叫后续消息则仍然在原有节点上处理。图3是本发明一个具体实施例的流程图。步骤301,外部SIP实体发起INVITE请求,ILBU收到该请求;步骤302, ILBU根据源、目的IP地址或端口号及实现的负载均衡策略获得一 个PLBU的节点号;步骤303, ILBU将该请求发送到该PLBU节点;步骤304, PLBU判断INVITE消息类型,若为初始INVITE则根据SIP请求的 呼叫标识(Ca11-ID)进行HASH处理,结合本地节点信息,得到可用的PPU节点号 (也可以根据初始SIP消息中Request-URI中携带的用户标识HASH得到节点号)。 否则根据Route头部的分发参数解码得到处理节点号。步骤305, PLBU将消息发往该PPU;步骤306, PPU处理完SIP INVITE请求消息后、转发消息之前,在转发请求 的VIA中及插入的Record-Route(路由记录)中的一个扩展参数共两处标记自己的 节点号,前者是为了方便响应消息的分发处理,后者则是解决请求消息的分发步骤307 PPU将消息转发出去;步骤308 309,被叫用户对请求应答,应答消息经ILBU到达PLBU;步骤310, PLBU根据应答消息中的VIA头部字段的内容解码得到呼叫处理PPU 节点号;步骤311-312,应答消息经PPU、 ILBU;步骤313~314,用户发起对话内消息经ILBU到达PLBU;步骤315, PLBU根据请求中TOP Route头部字段(此字段为PPU在初始INVITE 中插入的Record-Route字段转换而来)中的扩展私有参数得到PPU节点号;步骤316, PLBU将消息转发给PPU。
权利要求
1、一种实现会话发起协议分布式系统中动态负载均衡的方法,包括以下步骤1.1、外部会话发起协议实体发起会话发起协议请求消息,IP负载均衡单元收到会话发起协议报文并根据报文地址或端口号将报文发送到某一协议负载均衡单元处理节点;1.2、协议负载均衡单元对会话发起协议消息进行解码,判断该消息是对话内、外请求还是响应,分别进行不同的处理;1.2.1、如果是对话外请求,对会话发起协议呼叫中必须携带且保持不变的值进行散列计算得到协议处理单元节点号并发送到相应节点进行处理;该节点处理完毕后在被叫方响应的头部中返回的特定值中添加一个私有分发参数,参数中包括对本节点号的编码,并标识为本节点所添加;协议处理单元转发或主动发起的请求在响应消息与请求消息中必须相同的某一标识中记录其节点号;1.2.2、如果非对话外请求,转下一步处理;1.3如果是对话内请求,根据将所述私有分发参数确定的节点号进行分发,如该节点不可用,则请求失败;如果非对话内请求,转下一步处理;1.4对于响应消息,则取所述在响应消息与请求消息中必须相同的某一消息成分进行解码得到节点号,根据解码后的节点号进行分发,如该节点不可用,则请求失败。
2、 权利要求1所述的实现会话发起协议分布式系统中动态负载均衡的方法, 其特征在于,系统的协议负载均衡单元、协议处理单元合设,初始分发限定在本节点。
3、 权利要求1或2所述的实现会话发起协议分布式系统中动态负载均衡的方法,其特征在于,所述会话发起协议呼叫中必须携带且保持不变的值为呼叫标识; 所述被叫方响应的头部中返回的特定值为路由记录请求的路由字段;所述在响应 消息与请求消息中必须相同的标识为经由头部中的部分参数。
4、 权利要求3所述的实现会话发起协议分布式系统中动态负载均衡的方法, 其特征在于,步骤为步骤301,外部会话发起协议实体发起邀请请求,IP负载均衡单元收到该请求;步骤302, IP负载均衡单元根据源、目的IP地址或端口号及实现的负载均衡 策略获得一个协议负载均衡单元的节点号;步骤303, IP负载均衡单元将该请求发送到该协议负载均衡单元节点;步骤304,协议负载均衡单元判断邀请消息类型,若为初始邀请,则根据会 话发起协议请求的呼叫标识或会话发起协议消息中请求的统一资源标识符中携带 的用户标识进行散列计算处理,结合本地节点信息,得到可用的协议处理单元节 点号;否则根据路由头部的分发参数解码得到处理节点号;步骤305,协议负载均衡单元将消息发往该协议处理单元;步骤306,协议处理单元处理完会话发起协议邀请请求消息后、转发消息之前, 在转发请求的经由中及插入的路由记录中的一个扩展参数共两处标记自己的节点 号,前者是为了方便响应消息的分发处理,后者则是解决请求消息的分发步骤307协议处理单元将消息转发出去;步骤308 309,被叫用户对请求应答,应答消息经IP负载均衡单元到达协议 负载均衡单元;步骤310,协议负载均衡单元根据应答消息中的经由头部字段的内容解码得到 呼叫处理协议处理单元节点号;步骤311-312,应答消息经协议处理单元、IP负载均衡单元转发给主叫用户;步骤313,14,用户发起对话内消息经IP负载均衡单元到达协议负载均衡单元;步骤315,协议负载均衡单元根据请求中首个路由头部字段中的扩展私有参数 得到协议处理单元节点号;步骤316,协议负载均衡单元将消息转发给协议处理单元。
全文摘要
一种实现会话发起协议分布式系统中动态负载均衡的方法,SIP实体发起SIP请求消息,ILBU收到SIP报文并根据报文地址或端口号将报文发送到某一PLBU处理节点;PLBU对SIP消息进行解码,判断是对话内、外请求还是响应,分别进行不同的处理。采用本发明方法可以改进现有固定式HASH算法的缺陷,同时保持分发过程本身的无状态特性。系统内的节点无论增减或者调整系统的分发策略均不影响该会话的消息处理,从而大大提高系统的可靠性、可伸缩性。
文档编号H04L29/06GK101166176SQ20061006322
公开日2008年4月23日 申请日期2006年10月19日 优先权日2006年10月19日
发明者张宝健, 杨小明, 军 汪 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1