专利名称:基于sip的服务器集群发布服务信息的方法及系统的制作方法
技术领域:
本发明涉及SIP (Session Initiation Protocol,会话初始化协议)应用领域,尤其涉及基于SIP的服务器集群发布服务信息的方法及系统。
背景技术:
SIP是互联网工程任务组(IETF)制定的多媒体通信应用层控制协议,用于建立、 修改和终止多媒体会话。该协议具有很好的稳定性和扩展性,因此SIP技术逐渐成为通信 行业的一种标准。互联网上已经有许多基于SIP协议的服务,比如使用音频,视频或者多媒体消息 的实时通信,音频视频会议,多媒体流等等。在基于SIP协议的网络中,按照逻辑功能划分, 由4种基本实体组成用户代理,SIP代理服务器,重定向服务器以及SIP注册服务器。SIP用户代理又称为SIP终端,是SIP系统中的最终用户,在RFC3261中将它们 定义为一个应用。根据它们在会话中扮演的不同角色,又分为UAC(用户代理客户机)和 UAS(用户代理服务器)两种。其中前者用于发起呼叫请求,后者用于响应呼叫请求。SIP代理服务器(SIP Proxy Server)是一个中间元素,它既是一个客户机又是一 个服务器,具有解析名字的能力,能够代理前面的用户向下一跳服务器发出呼叫请求,由服 务器决定下一跳的地址。重定向服务器(Redirect Server)是一个规划SIP呼叫路径的服务器,在获得了 下一跳的地址后,立刻告诉前面的用户,让该用户直接向下一跳地址发出请求,而自己则退 出对这个呼叫的控制。SIP注册服务器(SIP Register Server)用来完成对UAS的登录,在SIP系统的网 元中,所有UAS都要在某个登录服务器中登录,以便UAC通过服务器能找到它们。除去上述基本的四种基本功能实体外,还包括在网络中其它的涉及到SIP应用的 物理设备或逻辑实体。例如一切有关SIP具体应用的应用服务器,网络中进行负载均衡的 负载均衡器(load balancer),用于定位寻址的定位服务器(location server)等等。服务器集群是一种由多个服务器协作共同提供服务的技术,采用服务器集群代替 单一服务器能够分担负载,实现备份和故障切换,而且降低成本,防止单点故障,提高了可 靠性和可扩展性。在SIP应用网络中,由多个SIP服务器组成服务器集群共同提供服务能够提升整 个SIP系统的性能。在SIP网络中对于需要向服务器集群请求服务的SIP网络实体来说,需 要通过某种途径了解SIP服务器集群的服务信息以选择最适宜提供服务的SIP服务器。现 有的方法主要是RFC3263中提出的查询专门配置的域名系统(DNS)中的资源(SRV)纪录, 得到能够提供某种服务的服务器列表以及它们的相关服务信息,这种方法的特点在于需要 专门配置DNS服务器,DNS中的纪录只包含优先级,权重,地址信息,且为静态配置,当服务 器集群中的服务信息发生变化时,不能及时反映到DNS纪录中,因此查询者可能得到错误 的服务信息。
发明内容
为解决上述问题本发明提供了基于SIP的服务器集群发布服务信息的方法及系 统,应用SIP网络实体和SIP服务器集群的交互过程,SIP网络实体得到服务信息,从而能 够根据信息进行相应处理,实现服务发现,负载分担,故障切换等功能。本发明还公开了一种基于SIP的服务器集群发布服务信息的方法,所述方法包 括步骤1,SIP网络实体向SIP的服务器集群中的服务器发送请求消息,同所述服务 器建立关系;步骤2,同所述SIP网络实体建立关系的服务器周期地向所述SIP网络实体发送服 务器集群中的服务器的服务信息;并在所述服务信息发生变更时,向所述SIP网络实体发 送变更后的服务信息。所述步骤2后还包括步骤21,所述SIP网络实体接收到所述服务信息,根据所述服务信息在所述服务 器集群中选择服务器,当所述被选择的服务器同接收所述请求消息的服务器不相同时,所 述SIP网络实体解除同接收所述请求消息的服务器的关系,向所述被选择的服务器发送请 求消息,同所述被选择的服务器间建立关系;步骤22,所述被解除关系的服务器停止向所述SIP网络实体发送服务信息;并执 行所述步骤2。所述步骤2后还包括步骤31,所述SIP网络实体发现所述建立关系的服务器发生故障后,根据已接收 到的服务信息在所述服务器集群中选择服务器,向所述被选择的服务器发送请求消息,同 所述被选择的服务器间建立关系,并执行所述步骤2。所述步骤1进一步为,步骤41,所述SIP网络实体向SIP的服务器集群中的服务器发送预订请求;步骤42,所述服务器向所述SIP网络实体回复确认消息;步骤43,所述SIP网络实体接收到所述确认消息后,所述SIP网络实体同所述服务 器间关系建立。所述预订请求中包括发布时间间隔信息;所述步骤2中同所述SIP网络实体建立关系的服务器周期地向所述SIP网络实体 发送服务器集群中的服务器的服务信息进一步为,同所述SIP网络实体建立关系的服务器 按所述发布时间间隔信息周期地向所述SIP网络实体发送服务器集群中的服务器的服务
信息ο所述步骤2进一步为同所述SIP网络实体建立关系的服务器通过通知消息周期地 向所述SIP网络实体发送服务器集群中的服务器的服务信息;并在所述服务信息发生变更 时,向所述SIP网络实体发送变更后的服务信息。所述通知消息中包括事件头域,所述事件头域中包括服务信息字段,所述服务信 息字段的赋值包括请求和更新;所述请求用于表示所述通知消息中服务信息为周期性发送 的服务信息,所述更新用于表示所述通知消息中服务信息为服务器集群的服务信息发生变更后的服务信息。所述步骤21中所述SIP网络实体解除同接收所述请求消息的服务器的关系,向所述被选择的服务器发送请求消息,同所述被选择的服务器间建立关系进一步为,步骤81,所述SIP网络实体向所述服务器发送退订请求;步骤82,所述服务器向所述SIP网络实体回复确认消息,以表示同意退订;步骤83,所述SIP网络实体接收到所述确认消息后,向所述被选择的服务器发送 预订请求;步骤84,所述被选择的服务器向所述SIP网络实体回复确认消息;步骤85,所述SIP网络实体接收到所述确认消息后,所述SIP网络实体同所述被选 择的服务器间关系建立。所述步骤31中所述SIP网络实体发现所述建立关系的服务器发生故障进一步为, 所述SIP网络实体在预设的时间间隔内没有收到同其建立关系的服务器的通知消息,则判 定所述服务器发生故障。所述通知消息中包括服务信息头域,用于携带所述服务信息。所述服务信息头域包括服务器标识参数,用于记录所述服务器集群中的服务器的 ID。所述服务信息头域包括优先级参数,用于记录所述服务器集群中的服务器的优先 级。所述服务信息头域包括负载程度参数,用于记录所述服务器集群中的服务器的负 载程度;所述步骤2中根据所述服务信息在所述服务器集群中选择服务器进一步为根据 所述负载程度参数按负载选择服务器。所述服务信息头域包括地址参数,用于记录所述服务器集群中的服务器的网络地 址、使用的传输协议、SIP应用的端口号。所述服务信息头域包括网络坐标参数,用于记录所述服务器集群中的服务器同 SIP网络实体间的时延;所述步骤2中根据所述服务信息在所述服务器集群中选择服务器进一步为根据 所述网络坐标参数按时延选择服务器。所述服务信息头域包括服务类型参数,用于记录所述服务器集群中的服务器所提 供的服务;所述步骤2中根据所述服务信息在所述服务器集群中选择服务器进一步为根据 所述服务类型参数,进行服务发现,选择服务对应的服务器。所述服务信息头域包括数据存储范围参数,用于记录服务器集群中服务器所存储 的数据范围;所述步骤2中根据所述服务信息在所述服务器集群中选择服务器进一步为根据 所述数据存储范围参数按所存储的数据范围选择服务器。本发明还公开了一种基于SIP的服务器集群发布服务信息的系统,所述系统包 括SIP网络实体,用于向SIP的服务器集群中的服务器发送请求消息,同所述服务器建立关系;所述SIP的服务器集群中的服务器,用于在同所述SIP网络实体建立关系后,周期 地向所述SIP网络实体发送服务器集群中的服务器的服务信息;并在所述服务信息发生变 更时,向所述SIP网络实体发送变更后的服务信息。所述SIP网络实体,还用于在接收到所述服务信息后,根据所述服务信息在所述 服务器集群中选择服务器,当所述被选择的服务器同接收所述请求消息的服务器不相同 时,解除同接收所述请求消息的服务器的关系,向所述被选择的服务器发送请求消息,同所 述被选择的服务器间建立关系;所述服务器,还用于在同所述SIP网络实体解除关系后,停止向所述SIP网络实体 发送服务信息。所述SIP网络实体还用于在发现所述建立关系的服务器发生故障后,根据已接收 到的服务信息在所述服务器集群中选择服务器,向所述被选择的服务器发送请求消息,同 所述被选择的服务器间建立关系。所述SIP网络实体进一步用于向SIP的服务器集群中的服务器发送预订请求;所述服务器进一步用于在接收到所述预订请求后向所述SIP网络实体回复确认 消息;所述SIP网络实体接收到所述服务器回复的确认消息后,所述SIP网络实体同所述服 务器间关系建立。所述预订请求中包括发布时间间隔信息;所述服务器在周期地向所述SIP网络实体发送服务器集群中的服务器的服务信 息时进一步用于按所述发布时间间隔信息周期地向所述SIP网络实体发送服务器集群中 的服务器的服务信息。所述服务器进一步用于通过通知消息周期地向所述SIP网络实体发送服务器集 群中的服务器的服务信息;并在所述服务信息发生变更时,向所述SIP网络实体发送变更 后的服务信息。所述通知消息中包括事件头域,所述事件头域中包括服务信息字段,所述服务信 息字段的赋值包括请求和更新;所述请求用于表示所述通知消息中服务信息为周期性发送 的服务信息,所述更新用于表示所述通知消息中服务信息为服务器集群的服务信息发生变 更后的服务信息。所述SIP网络实体在解除同接收所述请求消息的服务器的关系时进一步用于向 所述服务器发送退订请求;所述服务器进一步用于在接收到所述退订请求后,向所述SIP网络实体回复确认 消息,以表示同意退订。所述SIP网络实体在发现所述建立关系的服务器发生故障时进一步为,检测到在 预设的时间间隔内没有收到同其建立关系的服务器的通知消息,则判定所述服务器发生故障。所述通知消息中包括服务信息头域,用于携带所述服务信息。所述服务信息头域包括服务器标识参数,用于记录所述服务器集群中的服务器的ID。所述服务信息头域包括优先级参数,用于记录所述服务器集群中的服务器的优先级。所述服务信息头域包括负载程度参数,用于记录所述服务器集群中的服务器的负 载程度;所述SIP网络实体在根据所述服务信息在所述服务器集群中选择服务器时进一 步用于根据所述负载程度参数按负载选择服务器。所述服务信息头域包括地址参数,用于记录所述服务器集群中的服务器的网络地 址、使用的传输协议端、SIP应用的端口号。所述服务信息头域包括网络坐标参数,用于记录所述服务器集群中的服务器同 SIP网络实体间的时延;所述SIP网络实体在根据所述服务信息在所述服务器集群中选择服务器时进一 步用于根据所述网络坐标参数按时延选择服务器。所述服务信息头域包括服务类型参数,用于记录所述服务器集群中的服务器所提 供的服务;所述SIP网络实体在根据所述服务信息在所述服务器集群中选择服务器时进一 步用于根据所述服务类型参数,进行服务发现,选择服务对应的服务器。所述服务信息头域包括数据存储范围参数,用于记录服务器集群中服务器所存储 的数据范围。所述SIP网络实体根据所述服务信息在所述服务器集群中选择服务器进一步用 于根据所述数据存储范围参数按所存储的数据范围选择服务器。本发明的有益效果在于,通过SIP网络实体与SIP服务器的交互,使得SIP网络 实体知道服务器集群的整体服务状况,从而从服务器集群中选择适宜的服务器服务,或者 进行相应的负载分担处理,提高了服务器集群的服务性能;通过在SIP消息体中可以加入 如服务类型参数,网络坐标参数来表征服务信息,使SIP网络实体能够做出更加全面的选 择;通过在服务器集群的服务信息发生变化时,由服务器主动收集并向SIP网络实体发布 更新的信息,SIP网络实体能够及时得知服务器集群的变化,从而调整自己的选择;通过在 SIP网络实体得到服务器的服务信息后,考虑所得到的服务信息中的负载等因素进行相应 处理,例如选择选择某中某一个SIP服务器,能够实现服务发现,负载分担,故障切换功能。
图1是本发明的基本场景示意图;图2是本发明服务器周期性发布服务信息的实施例流程图;图3是本发明服务器在服务信息变更时发布服务信息的实施例流程图;图4是本发明SIP网络实体切换服务器时的实施例流程图;图5是本发明SIP网络实体在服务器发生故障时切换的实施例流程图;图6是本发明在负载均衡器与服务器交互以进行负载分担的实施例流程图。
具体实施例方式下面结合附图,对本发明做进一步的详细描述。本发明是在SIP网络的服务器集群中,通过SIP消息把服务器集群的服务信息带.给SIP网络实体,SIP网络实体接收到服务信息后进行相应处理,实现服务发现,负载分担, 故障切换功能。SIP网络实体指的是在SIP网络中具有RFC3261所规定的基本功能实体,如用 户代理(UA,User Agent), SIP 代理服务器(SIP proxy server), SIP 注册服务器(SIP registrar),也包括在SIP网络中具有其他应用功能的功能实体,例如SIP应用服务器,负 载均衡器(load balancer)。本发明基于SUBSCRIBE-NOTIFY (预订-通知)消息体系,得到服务信息的SIP网 络实体发送SUBSCRIBE (预订)请求,服务器通过NOTIFY (通知)消息告知SIP网络实体服 务器集群的服务信息,当服务器集群中服务器的服务信息发生变化时,服务器通过NOTIFY 消息主动告知SIP网络实体更新后的服务器集群的服务信息。SIP网络实体可以向建立关系的服务器发送UNSUBSCRIBE(退订)请求,得到响应 后向新选择的服务器发送SUBSCRIBE请求。SIP网络实体在一段时间内没有收到建立关系的服务器的NOTIFY消息后,判定服 务器失效,从已经得到的服务信息中选择另一个服务器并向其发送SUBSCRIBE请求,重新 申请服务信息,新服务器通过NOTIFY消息告知SIP网络实体服务器集群的服务信息。本发明的方法中涉及到的SIP协议的操作包括INVITE (邀请)SIP协议中的一种请求方法,常用于发起SIP呼叫SUBSCRIBE(预订):SIP协议中一种请求方法,用于请求某种事件的发生,常和 NOTIFY搭配使用。UNSUBSCRIBE (退订):SIP协议中一种请求方法,用于取消SUBSCRIBE请求所请求 的事件的发生,与SUBSCRIBE成对使用。NOTIFY(通知)SIP协议中一种请求方法,用于通知某种事件的发生。2000K(确认)SIP协议中的一种响应方法,表示请求成功。为了能够利用SIP消息向SIP网络实体发布服务信息,本发明对SIP协议作了扩 充,扩充的内容如下。在SIP协议的Content-Type (内容类型)头域中增加一个新的类型, Application/Serverinfo (应用/服务信息)类型,用于标识在SIP协议的消息体与发布服 务信息相关的内容。当SIP网络实体或者服务器从SIP消息中的Content-Type头域中分 析得到该类型时,知道消息体是与服务信息相关的内容,解析后得到服务器集群的服务信 息交互相关信息。在SIP协议的Event (事件)头域中增加服务信息字段(pos,publsih ofservers),并给出相应的类型,用于说明服务信息是周期性发送的服务信息还是由于变 更而发送的服务信息。其中,request (请求)表示服务信息是周期性发送的服务信息和 refresh (更新)表示服务信息由于变更而发送的服务信息;当类型为request时,在头 域中给出相关的服务信息发布时间间隔,也就是每隔多少时间发布一次服务信息。例如, Event头域的形式如下Event :pos ;type = request ;notify-period = 5当SIP网络实体发送了带有该字段的SUBSCRIBE给SIP服务器时,服务器分析 Event类型,得知这是一个预订服务器的服务信息的事件,要求服务器向SIP网络实体发送服务信息,并且发送间隔为5分钟。在 SIP 消息体中增加 Server-information (月艮务信息)头域,Server—information 头域中包含用于携带服务信息的参数。服务器标识参数(identifier),用于记录服务器集群中的服务器的ID,为必选项。优先级参数(priority),用于记录服务器集群中服务器提供服务的优先程度,为 可选项。负载程度参数(load),用于记录服务器集群中服务器的负载程度,为可选项,SIP 网络实体根据此项信息可以选择轻载的服务器请求服务,实现负载分担,为可选项。地址参数(adress),用于记录服务器集群中多个服务器的网络地址,使用的传输 协议,以及SIP应用的端口号,为必选项。服务类型参数(service),用于说明服务器集群中服务器所能提供的服务,用于服 务发现,为可选项。网络坐标参数(coordinate),用于记录服务器集群中服务器与SIP网络实体的时 延,便于SIP网络实体选择时延较小的服务器请求服务,提高服务质量,为可选项。服务类型参数(service),用于记录服务器集群中服务器所能提供的服务,用 于服务发现,为可选项。如有的服务器能够提供NAT穿越功能,有的能提供应用层中继 (application relay)功能,有的能提供流媒体的编解码(transcoding)功能,SIP网络实 体如果需要某些上述服务,就可以直接根据服务信息选择某一个服务器,从而实现了服务 发现。数据存储范围参数(data range),用于记录服务器集群中服务器所存储的数据范 围,用在分布式数据存储的场景中,为可选项。SIP网络实体通过此项信息知道服务器集群 中各服务器的存储数据范围,从而能够据此从相应的服务器上获取所需数据,SIP服务器集 群成为了 一个可供快速查询的分布式数据库。例如服务器向SIP网络实体发布了 SIP消息,其中消息体内容为Server-information identifier = serverA ;priority = 3 ;load = heavy ;address = 192. 168. 0. 1/ TCP/5060 ;service = relayidentifier = serverB ;priority = 2 ;load = medium ;address = 192. 168. 0. 3/ UDP/5060identifier = serverC ;priority = 2 ;load = light ;address = 192. 168. 0. 2/UDP/5060identifier = serverD ;priority = 3 ;load = light ;address = 192. 168. 0. 5/UDP/5060SIP网络实体通过解析后得知服务器集群中至少有四台SIP服务器,并获得它们 各自的详细信息,其中,服务器A可以提供中继功能,根据此SIP网络实体可以选择某个服 务器请求服务。本发明的基本场景如图1所示。
其中,包括SIP网路实体101,5个SIP服务器102,服务器102共同组成了一个SIP 服务器集群。SIP网络实体101需要服务器集群的服务信息,则通过SIP消息的SUBSCRIBE 方式向服务器集群中两个服务器预订服务信息,两个服务器分别通过NOTIFY方式向SIP网 络实体101返回服务器集群中的服务信息。服务器102本身也可以为SIP网络实体,如图 1中一个服务器102向服务器集群中另一个服务器102请求服务信息。SIP网络实体101请求时服务器发布服务信息的实施例流程如图2所示。SIP网 络实体101需要获得服务器集群的服务信息时,向服务器集群中的某台服务器102发送请 求,具体步骤如下。步骤S201,SIP网络实体101向某服务器102发送SUBSCRIBE请求,在该请求里, 通过Event头域带上相应的类型,时间间隔,具体内容如Event :pos ;type = request ;notify-period = 5表示SIP网络实体101希望每隔5分钟服务器102发送一次服务器集群的服务信
肩、ο步骤S202,服务器102收到SUBSCRIBE请求,分析Event头域通过pos参数得知 SIP网络实体101的需求,服务器102向SIP网络实体101发送表示同意SUBSCRIBE请求的 2000K响应。步骤S203,服务器102发送2000K响应后,将自己所知的服务器集群的服务信息通 过NOTIFY消息发送给SIP网络实体101,并启动定时器,准备5分钟后再次发送NOTIFY消 息。发送的NOTIFY消息中,Event头域中参数为pos,类型是request,时间间隔为5分钟, 在Content-Type头域中类型是application/serverinfo,消息体里携带如下信息Server-information identifier = serverA ;priority = 3 ;load = heavy ;address = 192. 168. 0. 1/ TCP/5060identifier = serverB ;priority = 2 ;load = medium ;address = 192. 168. 0. 3/ UDP/5060identifier = serverC ;priority = 2 ;load = light ;address = 192. 168. 0. 2/UDP/5060identifier = serverD ;priority = 3 ;load = light ;address = 192. 168. 0. 5/UDP/5060步骤S204,SIP网络实体101收到NOTIFY消息后,通过分析Event头域,知道已 经得到服务信息,分析Content-Type头域,知道消息体中携带服务器集群的相关服务信 息。然后解析得到服务信息,也就是,服务器集群中至少包含4台SIP服务器,其ID分别为 serverA, serverB, serverC,serverD,以及它们的地址,优先级,负载情况。SIP网络实体 101向服务器101发送NOTIFY请求的2000K响应。步骤S205.当计时器到达5分钟时,服务器102会再次向SIP网络实体101通过 NOTIFY消息发布服务信息,并重置定时器,准备5分钟后再次发送NOTIFY消息。在该请求 里,Event头域中参数为pos,类型是request,时间间隔为5分钟,在Content-Type头域中 类型是application/serverinfo,消息体中携带服务信息。步骤S206,SIP网络实体101收到NOTIFY消息后,分析Event头域和消息体得到服务信息,发送2000K响应。本发明在服务器集群服务信息发生变化时服务器102主动向SIP网络实体101发布服务信息的实施例流程如图3所示。当SIP网络实体101向服务器102发送了 SUBSCRIBE请求后,服务器集群中服务 信息发生变化时,服务器102会立即向SIP网络实体101发送更新后的服务信息,具体步骤 如下步骤S301至S304的过程同步骤S201至S204相同。步骤S305,当服务器102发现服务器集群的服务信息发生变化时,服务器102会向 SIP网络实体101发送NOTIFY消息,该请求中Event头域中参数为pos,类型是refresh, 表示服务器集群服务信息发生了更新,在Content-Type头域中类型是app 1 ication/ serverinfo,消息体里携带如下信息identifier = serverA ;priority = 3 ;load = heavy ;address = 192. 168. 0. 1/ TCP/5060identifier = serverB ;priority = 2 ;load = medium ;address = 192. 168. 0. 3/ UDP/5060identifier = serverC ;priority = 2 ;load = light ;address = 192. 168. 0. 2/UDP/5060identifier = serverD ;priority = 3 ;load = medium ;address = 192. 168. 0. 5/UDP/5060identifier = serverE ;priority = 2 ;load = light ;address = 192. 168. 0. 4/UDP/5060发生的变化是知道了 ID为serverE的服务器101的服务信息,并且ID为serverD 的服务器101的负载程度由轻度变为了中度。发送NOTIFY消息后,将定时器重置为零,重 新开始计时。SIP网络实体101收到NOTIFY消息后通过分析Event头域,知道服务信息已经更 新,分析Content-Type头域,知道消息体中携带服务器集群的相关服务信息;然后解析得 到服务信息,SIP网络实体101向服务器发送NOTIFY请求的2000K响应,SIP网络实体101 得到新的服务信息后会更新原来得到的服务信息。本发明在SIP网络实体切换服务器时的实施例流程如图4所示。SIP网络实体101分析从服务器102所得到的服务器集群的服务信息后,发现服 务器集群中有更加适宜的ID为serverC的服务器101,于是决定切换到该服务器,向ID为 serverC的服务器101发送SUBSCRIBE请求,建立预订-通知关系。具体步骤如下步骤S401至S404的过程同步骤S201至S204相同。步骤S405,SIP网络实体101分析所得到的服务信息,也就是identifier = serverA ;priority = 3 ;load = heavy ;address = 192. 168. 0. 1/ TCP/5060identifier = serverB ;priority = 2 ;load = heavy ;address = 192. 168. 0. 3/ UDP/5060identifier = serverC ;priority = 1 ;load = light ;<formula>formula see original document page 15</formula>发现ID为serverB的服务器102已经处在重负载(heavy)的情况下,发现ID为 serverC的服务器102负载较轻(light),于是考虑负载分担的需要,决定向ID为serverC 的服务器102请求服务,于是SIP网络实体101向ID为serverB的服务器102发送 UNSUBSCRIBE请求,通过Event头域带上相应的参数pos,类型为request,时间间隔设置为 0。表示SIP网络实体A希望退订服务器B的服务信息。步骤S406,ID为serverB的服务器102收到SUBSCRIBE请求,分析Event头域通 过pos参数得知SIP网络实体101的退订请求,ID为serverB的服务器102向SIP网络实 体101发送表示同意UNSUBSCRIBE请求的2000K响应。步骤S407,SIP网络实体101收到2000K响应后,得知退订成功。SIP网络实体101 向ID为serverC的服务器102发送SUBSCRIBE请求,以下的步骤与图2的流程相同,从而 实现了 ID为serverC的服务器102帮助ID为serverB的服务器102分担负载的功能。本发明在服务器102发生故障时SIP网络实体101进行故障切换的实施例流程如 图5所示。SIP网络实体102在一段时间内没有收到同其建立关系的ID为serverB服务器 101发送的NOTIFY通知后,判定该服务器101发生了故障,于是根据之前从该服务器102所 得到服务信息中选择服务器集群中另一个ID为serverD的服务器101,并向该选择的ID为 serverD的服务器101请求服务并建立预订-通知关系,具体步骤如下步骤S501至S504的过程同步骤S201至S204相同。SIP网络实体101在向ID为 serverB的服务器102发送SUBSCIRBE请求并得到2000K响应后,得到该服务器的NOTIFY 通知,在发送2000K响应后,启动故障定时器,时间设置为例如20分钟。步骤S505,SIP网络实体101在故障定时器到期之前如果收到ID为serverB的服 务器101的NOTIFY请求,则将故障定时器清零,重新开始计时;如果故障定时器到期,则判 断ID为serverB的服务器101发生故障。与此同时,根据之前所得的服务信息从服务器集 群中选择ID为serverD的服务器101,发送SUBSCRIBE请求,剩余步骤与图2中所示相同。本发明在负载均衡器与服务器集群交互以进行负载分担的实施例流程如图6图 所示。负载均衡器为一个SIP网络实体101。用户A在向服务器集群请求服务前,会先将请求发到负载均衡器上,由负载均衡 器根据服务器集群中各个服务器的负载情况决定将该请求转发到某台服务器102上,实现 负载分担功能,具体步骤如下步骤S601,用户A需要向服务器集群请求服务,发送INVITE请求到负载均衡器B。步骤S602,负载均衡器B收到INVITE请求,根据所知道的服务器集群中服务器的 负载信息将该请求转发到相应的服务器102上。如果负载均衡器B所知的服务信息已经过 期,则向ID为serverC的服务器102请求服务信息。步骤S602中发送SUBSCRIBE请求的过程,步骤S603和步骤S604,同步骤S201、步 骤S202和步骤S203相同。ID为serverC的服务器102返回的服务信息为
identifier = serverA ;priority = 3 ;load = heavy ;address = 192. 168. 0. 1/ TCP/5060identifier = serverB ;priority = 2 ;load = medium ;address = 192. 168. 0. 3/ UDP/5060identifier = serverC ;priority = 2 ;load = light ;address = 192. 168. 0. 2/UDP/5060identifier = serverD ;priority = 3 ;load = medium ;address = 192. 168. 0. 5/UDP/5060identifier = serverE ;priority = 2 ;load = light ;address = 192. 168. 0. 4/UDP/5060步骤S605,负载均衡器B收到NOTIFY消息后,通过分析Event头域,知道已经得 到服务信息,分析Content-Type头域,知道消息体中携带服务器集群的相关服务信息。然 后解析得到服务信息,也就是,服务器集群中至少包含4台SIP服务器,ID分别为serverA, serverB, serverC, serverD,以及它们的地址,优先级,负载情况。负载均衡器B向ID为 serverC的服务器发送NOTIFY消息的2000K响应。步骤S606,负载均衡器B根据服务信息发现ID为serverE的服务器102的负载是 轻负载(light),则将用户A的INVITE请求转发给该服务器102。一种基于SIP的服务器集群发布服务信息的系统,包括SIP网络实体101,用于向SIP的服务器集群中的服务器102发送请求,同所述服 务器102建立关系。所述SIP的服务器集群中的服务器102,用于在同所述SIP网络实体101建立关系 后,周期地向所述SIP网络实体101发送服务器集群中的服务器的服务信息;并在所述服务 信息发生变更时,向所述SIP网络实体101发送变更后的服务信息。所述SIP网络实体101,还用于在接收到所述服务信息后,根据所述服务信息在所 述服务器集群中选择服务器102,当所述被选择的服务器102同接收所述请求的服务器102 不相同时,解除同接收所述请求的服务器102的关系,向所述被选择的服务器102发送请 求,同所述被选择的服务器102间建立关系;所述服务器102,还用于在同所述SIP网络实体101解除关系后,停止向所述SIP 网络实体101发送服务信息。所述SIP网络实体101还用于在发现所述建立关系的服务器102发生故障后,根 据已接收到的服务信息在所述服务器集群中选择服务器102,向所述被选择的服务器102 发送请求,同所述被选择的服务器102间建立关系。所述SIP网络实体101进一步用于向SIP的服务器集群中的服务器102发送预订 请求;所述服务器102进一步用于在接收到所述预订请求后向所述SIP网络实体101回复确认消息;所述SIP网络实体101接收到所述服务器102回复的确认消息后,所述SIP网 络实体101同所述服务器102间关系建立。所述预订请求中包括发布时间间隔信息;所述服务器102在周期地向所述SIP网络实体101发送服务器集群中的服务器102的服务信息时进一步用于按所述发布时间间隔信息周期地向所述SIP网络实体101发送服务器集群中的服务器102的服务信息。所述服务器102进一步用于通过通知消息周期地向所述SIP网络实体101发送服务器集群中的服务器102的服务信息;并在所述服务信息发生变更时,向所述SIP网络实体 101发送变更后的服务信息。所述通知消息中包括事件头域,所述事件头域中包括服务信息字段,所述服务信息字段的赋值包括请求和更新;所述请求用于表示所述通知消息中服务信息为周期性发送 的服务信息,所述更新用于表示所述通知消息中服务信息为服务器集群的服务信息发生变 更后的服务信息。所述SIP网络实体101在解除同接收所述请求的服务器102的关系时进一步用于向所述服务器102发送退订请求;所述服务器102进一步用于在接收到所述退订请求后,向所述SIP网络实体101回复确认消息,以表示同意退订。所述SIP网络实体101在发现所述建立关系的服务器102发生故障时进一步为,检测到在预设的时间间隔内没有收到同其建立关系的服务器102的通知消息,则判定所述 服务器102发生故障。所述通知消息中包括服务信息头域,用于携带所述服务信息。所述服务信息头域包括服务器标识参数,用于记录所述服务器集群中的服务器 102 的 ID。所述服务信息头域包括优先级参数,用于记录所述服务器集群中的服务器102的 优先级。所述服务信息头域包括负载程度参数,用于记录所述服务器集群中的服务器102 的负载程度。所述SIP网络实体101在根据所述服务信息在所述服务器集群中选择服务器 时进一步用于根据所述负载程度参数按负载选择服务器102。所述服务信息头域包括地址参数,用于记录所述服务器集群中的服务器102的网 络地址、使用的传输协议端、SIP应用的端口号。所述服务信息头域包括网络坐标参数,用于记录所述服务器集群中的服务器102 同SIP网络实体101间的时延。所述SIP网络实体101在根据所述服务信息在所述服务器 集群中选择服务器时进一步用于根据所述网络坐标参数按时延选择服务器102。所述服务信息头域包括服务类型参数,用于记录所述服务器集群中的服务器102 所提供的服务。所述SIP网络实体101在根据所述服务信息在所述服务器集群中选择服务 器时进一步用于根据所述服务类型参数,进行服务发现,选择服务对应的服务器102。所述服务信息头域包括数据存储范围参数,用于记录服务器集群中服务器102所 存储的数据范围。所述SIP网络实体101在根据所述服务信息在所述服务器集群中选择服 务器时进一步用于根据所述数据存储范围参数按所存储的数据范围选择服务器102。本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还 可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由 权利要求书的范围来确定的。
权利要求
一种基于SIP的服务器集群发布服务信息的方法,其特征在于,所述方法包括步骤1,SIP网络实体向SIP的服务器集群中的服务器发送请求消息,同所述服务器建立关系;步骤2,同所述SIP网络实体建立关系的服务器周期地向所述SIP网络实体发送服务器集群中的服务器的服务信息;并在所述服务信息发生变更时,向所述SIP网络实体发送变更后的服务信息。
2.如权利要求1所述的基于SIP的服务器集群发布服务信息的方法,其特征在于, 所述步骤2后还包括步骤21,所述SIP网络实体接收到所述服务信息,根据所述服务信息在所述服务器集 群中选择服务器,当所述被选择的服务器同接收所述请求消息的服务器不相同时,所述SIP 网络实体解除同接收所述请求消息的服务器的关系,向所述被选择的服务器发送请求消 息,同所述被选择的服务器间建立关系;步骤22,所述被解除关系的服务器停止向所述SIP网络实体发送服务信息;并执行所 述步骤2。
3.如权利要求2所述的基于SIP的服务器集群发布服务信息的方法,其特征在于, 所述步骤2后还包括步骤31,所述SIP网络实体发现所述建立关系的服务器发生故障后,根据已接收到的 服务信息在所述服务器集群中选择服务器,向所述被选择的服务器发送请求消息,同所述 被选择的服务器间建立关系,并执行所述步骤2。
4.如权利要求3所述的基于SIP的服务器集群发布服务信息的方法,其特征在于,所述 步骤1进一步为,步骤41,所述SIP网络实体向SIP的服务器集群中的服务器发送预订请求; 步骤42,所述服务器向所述SIP网络实体回复确认消息;步骤43,所述SIP网络实体接收到所述确认消息后,所述SIP网络实体同所述服务器间关系建立。
5.如权利要求4所述的基于SIP的服务器集群发布服务信息的方法,其特征在于, 所述预订请求中包括发布时间间隔信息;所述步骤2中同所述SIP网络实体建立关系的服务器周期地向所述SIP网络实体发送 服务器集群中的服务器的服务信息进一步为,同所述SIP网络实体建立关系的服务器按所 述发布时间间隔信息周期地向所述SIP网络实体发送服务器集群中的服务器的服务信息。
6.如权利要求5所述的基于SIP的服务器集群发布服务信息的方法,其特征在于,所述步骤2进一步为同所述SIP网络实体建立关系的服务器通过通知消息周期地向所 述SIP网络实体发送服务器集群中的服务器的服务信息;并在所述服务信息发生变更时, 向所述SIP网络实体发送变更后的服务信息。
7.如权利要求6所述的基于SIP的服务器集群发布服务信息的方法,其特征在于,所述通知消息中包括事件头域,所述事件头域中包括服务信息字段,所述服务信息字 段的赋值包括请求和更新;所述请求用于表示所述通知消息中服务信息为周期性发送的服 务信息,所述更新用于表示所述通知消息中服务信息为服务器集群的服务信息发生变更后 的服务信息。
8.如权利要求6所述的基于SIP的服务器集群发布服务信息的方法,其特征在于,所述步骤21中所述SIP网络实体解除同接收所述请求消息的服务器的关系,向所述被 选择的服务器发送请求消息,同所述被选择的服务器间建立关系进一步为, 步骤81,所述SIP网络实体向所述服务器发送退订请求; 步骤82,所述服务器向所述SIP网络实体回复确认消息,以表示同意退订; 步骤83,所述SIP网络实体接收到所述确认消息后,向所述被选择的服务器发送预订 请求;步骤84,所述被选择的服务器向所述SIP网络实体回复确认消息; 步骤85,所述SIP网络实体接收到所述确认消息后,所述SIP网络实体同所述被选择的 服务器间关系建立。
9.如权利要求6所述的基于SIP的服务器集群发布服务信息的方法,其特征在于,所述步骤31中所述SIP网络实体发现所述建立关系的服务器发生故障进一步为,所述 SIP网络实体在预设的时间间隔内没有收到同其建立关系的服务器的通知消息,则判定所 述服务器发生故障。
10.如权利要求6所述的基于SIP的服务器集群发布服务信息的方法,其特征在于,所 述通知消息中包括服务信息头域,用于携带所述服务信息。
11.如权利要求10所述的基于SIP的服务器集群发布服务信息的方法,其特征在于, 所述服务信息头域包括服务器标识参数,用于记录所述服务器集群中的服务器的ID。
12.如权利要求10所述的基于SIP的服务器集群发布服务信息的方法,其特征在于, 所述服务信息头域包括优先级参数,用于记录所述服务器集群中的服务器的优先级。
13.如权利要求10所述的基于SIP的服务器集群发布服务信息的方法,其特征在于, 所述服务信息头域包括负载程度参数,用于记录所述服务器集群中的服务器的负载程度;所述步骤2中根据所述服务信息在所述服务器集群中选择服务器进一步为根据所述 负载程度参数按负载选择服务器。
14.如权利要求10所述的基于SIP的服务器集群发布服务信息的方法,其特征在于, 所述服务信息头域包括地址参数,用于记录所述服务器集群中的服务器的网络地址、使用的传输协议、SIP应用的端口号。
15.如权利要求10所述的基于SIP的服务器集群发布服务信息的方法,其特征在于, 所述服务信息头域包括网络坐标参数,用于记录所述服务器集群中的服务器同SIP网络实体间的时延;所述步骤2中根据所述服务信息在所述服务器集群中选择服务器进一步为根据所述 网络坐标参数按时延选择服务器。
16.如权利要求10所述的基于SIP的服务器集群发布服务信息的方法,其特征在于, 所述服务信息头域包括服务类型参数,用于记录所述服务器集群中的服务器所提供的服务;所述步骤2中根据所述服务信息在所述服务器集群中选择服务器进一步为根据所述 服务类型参数,进行服务发现,选择服务对应的服务器。
17.如权利要求10所述的基于SIP的服务器集群发布服务信息的方法,其特征在于,所述服务信息头域包括数据存储范围参数,用于记录服务器集群中服务器所存储的数 据范围。所述步骤2中根据所述服务信息在所述服务器集群中选择服务器进一步为根据所述 数据存储范围参数按所存储的数据范围选择服务器。
18.一种基于SIP的服务器集群发布服务信息的系统,其特征在于,所述系统包括 SIP网络实体,用于向SIP的服务器集群中的服务器发送请求消息,同所述服务器建立关系;所述SIP的服务器集群中的服务器,用于在同所述SIP网络实体建立关系后,周期地 向所述SIP网络实体发送服务器集群中的服务器的服务信息;并在所述服务信息发生变更 时,向所述SIP网络实体发送变更后的服务信息。
19.如权利要求18所述的基于SIP的服务器集群发布服务信息的系统,其特征在于, 所述SIP网络实体,还用于在接收到所述服务信息后,根据所述服务信息在所述服务器集群中选择服务器,当所述被选择的服务器同接收所述请求消息的服务器不相同时,解 除同接收所述请求消息的服务器的关系,向所述被选择的服务器发送请求消息,同所述被 选择的服务器间建立关系;所述服务器,还用于在同所述SIP网络实体解除关系后,停止向所述SIP网络实体发送 服务信息。
20.如权利要求19所述的基于SIP的服务器集群发布服务信息的系统,其特征在于, 所述SIP网络实体还用于在发现所述建立关系的服务器发生故障后,根据已接收到的服务信息在所述服务器集群中选择服务器,向所述被选择的服务器发送请求消息,同所述 被选择的服务器间建立关系。
21.如权利要求20所述的基于SIP的服务器集群发布服务信息的系统,其特征在于, 所述SIP网络实体进一步用于向SIP的服务器集群中的服务器发送预订请求; 所述服务器进一步用于在接收到所述预订请求后向所述SIP网络实体回复确认消息;所述SIP网络实体接收到所述服务器回复的确认消息后,所述SIP网络实体同所述服务器 间关系建立。
22.如权利要求21所述的基于SIP的服务器集群发布服务信息的系统,其特征在于, 所述预订请求中包括发布时间间隔信息;所述服务器在周期地向所述SIP网络实体发送服务器集群中的服务器的服务信息时 进一步用于按所述发布时间间隔信息周期地向所述SIP网络实体发送服务器集群中的服 务器的服务信息。
23.如权利要求22所述的基于SIP的服务器集群发布服务信息的系统,其特征在于, 所述服务器进一步用于通过通知消息周期地向所述SIP网络实体发送服务器集群中的服务器的服务信息;并在所述服务信息发生变更时,向所述SIP网络实体发送变更后的 服务信息。
24.如权利要求23所述的基于SIP的服务器集群发布服务信息的系统,其特征在于, 所述通知消息中包括事件头域,所述事件头域中包括服务信息字段,所述服务信息字段的赋值包括请求和更新;所述请求用于表示所述通知消息中服务信息为周期性发送的服 务信息,所述更新用于表示所述通知消息中服务信息为服务器集群的服务信息发生变更后的服务信息。
25.如权利要求23所述的基于SIP的服务器集群发布服务信息的系统,其特征在于, 所述SIP网络实体在解除同接收所述请求消息的服务器的关系时进一步用于向所述服务器发送退订请求;所述服务器进一步用于在接收到所述退订请求后,向所述SIP网络实体回复确认消 息,以表示同意退订。
26.如权利要求23所述的基于SIP的服务器集群发布服务信息的系统,其特征在于, 所述SIP网络实体在发现所述建立关系的服务器发生故障时进一步为,检测到在预设的时间间隔内没有收到同其建立关系的服务器的通知消息,则判定所述服务器发生故障。
27.如权利要求23所述的基于SIP的服务器集群发布服务信息的系统,其特征在于,所 述通知消息中包括服务信息头域,用于携带所述服务信息。
28.如权利要求27所述的基于SIP的服务器集群发布服务信息的系统,其特征在于, 所述服务信息头域包括服务器标识参数,用于记录所述服务器集群中的服务器的ID。
29.如权利要求27所述的基于SIP的服务器集群发布服务信息的系统,其特征在于, 所述服务信息头域包括优先级参数,用于记录所述服务器集群中的服务器的优先级。
30.如权利要求27所述的基于SIP的服务器集群发布服务信息的系统,其特征在于, 所述服务信息头域包括负载程度参数,用于记录所述服务器集群中的服务器的负载程度;所述SIP网络实体在根据所述服务信息在所述服务器集群中选择服务器时进一步用 于根据所述负载程度参数按负载选择服务器。
31.如权利要求27所述的基于SIP的服务器集群发布服务信息的系统,其特征在于, 所述服务信息头域包括地址参数,用于记录所述服务器集群中的服务器的网络地址、使用的传输协议端、SIP应用的端口号。
32.如权利要求27所述的基于SIP的服务器集群发布服务信息的系统,其特征在于, 所述服务信息头域包括网络坐标参数,用于记录所述服务器集群中的服务器同SIP网络实体间的时延;所述SIP网络实体在根据所述服务信息在所述服务器集群中选择服务器时进一步用 于根据所述网络坐标参数按时延选择服务器。
33.如权利要求27所述的基于SIP的服务器集群发布服务信息的系统,其特征在于, 所述服务信息头域包括服务类型参数,用于记录所述服务器集群中的服务器所提供的服务;所述SIP网络实体在根据所述服务信息在所述服务器集群中选择服务器时进一步用 于根据所述服务类型参数,进行服务发现,选择服务对应的服务器。
34.如权利要求27所述的基于SIP的服务器集群发布服务信息的系统,其特征在于, 所述服务信息头域包括数据存储范围参数,用于记录服务器集群中服务器所存储的数据范围;所述SIP网络实体根据所述服务信息在所述服务器集群中选择服务器进一步用于根 据所述数据存储范围参数按所存储的数据范围选择服务器。
全文摘要
本发明涉及一种基于SIP的服务器集群发布服务信息的方法及系统,所述方法包括步骤1,SIP网络实体向SIP的服务器集群中的服务器发送请求,同所述服务器建立关系;步骤2,同所述SIP网络实体建立关系的服务器周期地向所述SIP网络实体发送服务器集群中的服务器的服务信息;并在所述服务信息发生变更时,向所述SIP网络实体发送变更后的服务信息。本发明能够根据信息进行相应处理,实现服务发现,负载分担,故障切换的功能。
文档编号H04L29/06GK101815079SQ20091007829
公开日2010年8月25日 申请日期2009年2月24日 优先权日2009年2月24日
发明者于翠波, 勾学蓉, 张勖, 张春红, 李漓春, 杨鹏, 王尧, 纪阳, 裘晓峰, 马涛 申请人:北京邮电大学