一种SIP消息的传递系统及方法与流程

文档序号:12134820阅读:201来源:国知局
一种SIP消息的传递系统及方法与流程

本发明属于通信技术领域,尤其涉及一种SIP消息的传递系统及方法。



背景技术:

当前,SIP(Session Initiation Protocol,会话初始协议)消息的传递处理是将一个物理主机作为一个SIP服务器设备来使用,即SIP服务器与物理主机都是一对一的关系,用户在向SIP服务器发送SIP消息时,物理主机会根据SIP消息的地址信息,将SIP消息发送给指定的SIP服务器。现有技术中,每个SIP服务器上注册的用户数都是相对有限的,要增加SIP服务器的数量必须通过增加物理主机的数量来实现。



技术实现要素:

本发明提供一种SIP消息的传递系统及方法,在不增加物理主机的前提下,增加注册用户数。

为达到上述目的,本发明采用如下技术方案予以实现。

技术方案一:

一种SIP消息的传递系统,所述系统基于一个物理主机,以及在所述一个物理主机上扩展出的多个虚拟主机,且每个虚拟主机作为一个SIP服务器;

所述物理主机上设置有存储模块、消息接收模块、查询模块以及消息传递模块;

所述存储模块,用于存储SIP服务器选择判定表;所述SIP服务器选择判定表中至少记录了从物理主机上扩展出的每个SIP服务器所对应的地址标识;

所述消息接收模块,用于接收SIP消息;所述SIP消息中包含该SIP消息的源地址和目的地址;所述SIP消息的源地址为发送该SIP消息的用户所注册的SIP服务器的地址;所述SIP消息的目的地址为发送该SIP消息的用户要求访问的SIP服务器的地址;

所述查询模块,用于根据SIP消息的源地址,从所述SIP服务器选择判定表中确定发送该SIP消息的用户所注册的SIP服务器;或者,用于根据SIP消息的目的地址,从所述SIP服务器选择判定表确定发送该SIP消息的用户要求访问的SIP服务器;

所述消息传递模块,用于根据SIP消息的源地址,将所述SIP消息转发到发送该SIP消息的用户所注册的SIP服务器;或者,用于根据SIP消息的目的地址,将所述SIP消息转发到发送该SIP消息的用户要求访问的SIP服务器。

技术方案二:

一种SIP消息的传递方法,所述传递方法应用于如技术方案以所述的传递系统,所述方法包括如下步骤:

步骤1,在一个物理主机上扩展出多个虚拟主机,每个虚拟主机作为一个SIP服务器;

步骤2,所述物理主机接收SIP消息,所述SIP消息中包含该SIP消息的源地址和目的地址;

步骤3,所述物理主机根据所述SIP消息中的目的地址,从SIP服务器选择判定表中确定发送该SIP消息的用户要求访问的SIP服务器;

若所述物理主机在所述SIP消息中未匹配到目的地址,物理主机根据所述SIP消息中的源地址,从SIP服务器选择判定表中确定发送该SIP消息的用户所注册的SIP服务器;

其中,所述SIP服务器选择判定表存储于所述物理主机的存储模块中,且所述SIP服务器选择判定表中至少记录了从物理主机上扩展出的每个SIP服务器所对应的地址标识;

步骤4,所述物理主机根据所述SIP消息的目的地址,将所述SIP消息转发到发送该SIP消息的用户要求访问的SIP服务器;

或者,所述物理主机根据所述SIP消息的源地址,将所述SIP消息转发到发送该SIP消息的用户所注册的SIP服务器。

技术方案二的特点和进一步的改进为:

(1)在步骤1之后,且在步骤2之前,所述方法还包括:

每个SIP服务器接收多个用户的注册信息,完成用户注册;每个用户发送的SIP消息的源地址为该用户注册的SIP服务器的地址。

(2)步骤4中,所述物理主机根据所述SIP消息的源地址,将所述SIP消息转发到发送该SIP消息的用户所注册的SIP服务器之后,所述方法还包括:

发送该SIP消息的用户所注册的SIP服务器根据该SIP消息中的目的地址,将该SIP消息转发到所述目的地址对应的SIP服务器。

(3)所述SIP消息的源地址通过register字段记录,或者所述SIP消息的源地址通过route字段记录,或者所述SIP消息的源地址通过from字段记录;

所述SIP消息的目的地址通过to字段记录;

步骤3中,所述物理主机从所述SIP消息中查找register字段所携带的源地址,并根据所述SIP消息中register字段所携带的源地址,将所述SIP消息发送给该register字段所携带的源地址对应的SIP服务器;

若所述物理主机从所述SIP消息中未查找到register字段,则所述物理主机从所述SIP消息中查找route字段所携带的源地址,并根据所述SIP消息中route字段所携带的源地址,将所述SIP消息发送给该route字段所携带的源地址对应的SIP服务器;

若所述物理主机从所述SIP消息中未查找到route字段,则所述物理主机从所述SIP消息中查找to字段所携带的目的地址,并根据所述SIP消息中to字段所携带的目的地址,将所述SIP消息发送给该to字段所携带的目的地址对应的SIP服务器;

若所述物理主机从所述SIP消息中未查找到to字段,则所述物理主机从所述SIP消息中查找from字段所携带的源地址,并根据所述SIP消息中from字段所携带的源地址,将所述SIP消息发送给该from字段所携带的源地址对应的SIP服务器。

本发明技术方案通过在一个物理主机上扩展多个虚拟主机,并将每个虚拟主机作为一个SIP服务器,用一个物理主机控制多个SIP服务器,从而实现在不增加物理主机的前提下,增加注册用户数;实现该物理主机上所有注册用户之间的SIP消息传递。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的SIP消息的传递系统的结构示意图;

图2为本发明实施例提供的物理主机的结构示意图;

图3为本发明实施例提供的SIP消息的传递方法的流程示意图一;

图4为本发明实施例提供的SIP消息的传递方法的流程示意图二。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

SIP协议是一个基于文本的协议,使用UTF-8字符集。SIP消息用于会话连接的建立及修改,格式与HTTP协议的格式很相像。一个SIP消息既可以是从一个客户端到服务器的请求,也可以是一个服务器到客户端的应答。SIP消息的类型是由一个起始行、一个或者多个包头域,一个可选的消息文本组成。

SIP消息包括三个部分:起始行,位于消息的最开始,包含消息的类型和协议版本等内容。消息头,描述消息的属性,类似于HTTP消息头的语法和语义,在一个消息中,头可以有多行。SIP消息分为REQUSET(请求)和RESPONSE(响应)两类。REQUEST消息有6个基本类型,包括:INVITE(发起呼叫)、ACK(对应答作出回应)、BYE(拆除连接)、CANCLE(取消)、OPTION(查询对方的能力)、REGISTER(注册)。

本发明实施例提供一种SIP消息的传递系统,如图1所示,所述系统基于一个物理主机,以及在所述一个物理主机上扩展出的多个虚拟主机,且每个虚拟主机作为一个SIP服务器;

如图2所示,所述物理主机上设置有存储模块、消息接收模块、查询模块以及消息传递模块;

所述存储模块,用于存储SIP服务器选择判定表;所述SIP服务器选择判定表中至少记录了从物理主机上扩展出的每个SIP服务器所对应的地址标识;

所述消息接收模块,用于接收SIP消息;所述SIP消息中包含该SIP消息的源地址和目的地址;所述SIP消息的源地址为发送该SIP消息的用户所注册的SIP服务器的地址;所述SIP消息的目的地址为发送该SIP消息的用户要求访问的SIP服务器的地址;

所述查询模块,用于根据SIP消息的源地址,从所述SIP服务器选择判定表中确定发送该SIP消息的用户所注册的SIP服务器;或者,用于根据SIP消息的目的地址,从所述SIP服务器选择判定表确定发送该SIP消息的用户要求访问的SIP服务器;

所述消息传递模块,用于根据SIP消息的源地址,将所述SIP消息转发到发送该SIP消息的用户所注册的SIP服务器;或者,用于根据SIP消息的目的地址,将所述SIP消息转发到发送该SIP消息的用户要求访问的SIP服务器。

本发明实施例还提供一种SIP消息的传递方法,所述传递方法应用于上述实施例所述的传递系统,如图3所示,所述方法包括如下步骤:

步骤1,在一个物理主机上扩展出多个虚拟主机,每个虚拟主机作为一个SIP服务器;

步骤2,所述物理主机接收SIP消息,所述SIP消息中包含该SIP消息的源地址和目的地址;

步骤3,所述物理主机根据所述SIP消息中的目的地址,从SIP服务器选择判定表中确定发送该SIP消息的用户要求访问的SIP服务器;

若所述物理主机在所述SIP消息中未匹配到目的地址,物理主机根据所述SIP消息中的源地址,从SIP服务器选择判定表中确定发送该SIP消息的用户所注册的SIP服务器;

其中,所述SIP服务器选择判定表存储于所述物理主机的存储模块中,且所述SIP服务器选择判定表中至少记录了从物理主机上扩展出的每个SIP服务器所对应的地址标识;

具体的,所述SIP消息的源地址通过register字段记录,或者所述SIP消息的源地址通过route字段记录,或者所述SIP消息的源地址通过from字段记录;

所述SIP消息的目的地址通过to字段记录;

步骤3中,所述物理主机从所述SIP消息中查找register字段所携带的源地址,并根据所述SIP消息中register字段所携带的源地址,将所述SIP消息发送给该register字段所携带的源地址对应的SIP服务器;

若所述物理主机从所述SIP消息中未查找到register字段,则所述物理主机从所述SIP消息中查找route字段所携带的源地址,并根据所述SIP消息中route字段所携带的源地址,将所述SIP消息发送给该route字段所携带的源地址对应的SIP服务器;

若所述物理主机从所述SIP消息中未查找到route字段,则所述物理主机从所述SIP消息中查找to字段所携带的目的地址,并根据所述SIP消息中to字段所携带的目的地址,将所述SIP消息发送给该to字段所携带的目的地址对应的SIP服务器;

若所述物理主机从所述SIP消息中未查找到to字段,则所述物理主机从所述SIP消息中查找from字段所携带的源地址,并根据所述SIP消息中from字段所携带的源地址,将所述SIP消息发送给该from字段所携带的源地址对应的SIP服务器。

步骤4,所述物理主机根据所述SIP消息的源地址,将所述SIP消息转发到发送该SIP消息的用户所注册的SIP服务器;

或者,所述物理主机根据所述SIP消息的目的地址,将所述SIP消息转发到发送该SIP消息的用户要求访问的SIP服务器。

具体的,步骤4中,所述物理主机根据所述SIP消息的源地址,将所述SIP消息转发到发送该SIP消息的用户所注册的SIP服务器之后,所述方法还包括:

发送该SIP消息的用户所注册的SIP服务器根据该SIP消息中的目的地址,将该SIP消息转发到所述目的地址对应的SIP服务器。

需要补充的是,在步骤1之后,且在步骤2之前,所述方法还包括:每个SIP服务器接收多个用户的注册信息,完成用户注册;每个用户发送的SIP消息的源地址为该用户注册的SIP服务器的地址。

示例性的,

用户在使用SIP服务器之前首先要完成注册功能,假设用户A的注册请求为:

Register SIP:aaa.com/2.0

Via:SIP/2.0/UDP sip.aaa.com

From:SIP:1234@aaa.com

To:SIP:1234@aaa.com

Call-id:12345@sip.aaa.com

CSeq:1 register

Content:

Expires:3600

INVITE请求是SIP消息中最基本的一种,用来发起一个会话,当用户A向用户B发出一个INVITE请求时,在此消息里包含了INVITE、ROUTE、Via、To、From、Call-ID、Cseq、Subject以及Content字段,其中To和INVITE字段是相同的,都是被呼叫方的地址,这些字段上的文本附加信息可以被SIP解释器解析。

用户与SIP服务器之间的交互是通过向指定的SIP服务器上发送标准的INVITE消息,SIP消息的传递处理是根据SIP消息的数据格式来区分的,标准的格式如下:

INVITE sip:1002@aaa.com SIP/2.0

ROUTE:sip:aaa.com

Via:SIP/2.0/UDP aaa.com;branch=z9hG4bKnas

Max-Forwards:70

Contact:<sip:1001@aaa.com>

TO:”1002”<sip:1002@bbb.com>

From:”1001”<sip:1002@aaa.com>;tag=5e6f8316

Call-ID:XXXXXXXXXXXXXX

Cseq:1 INVITE

Content-Type:application/sdp

Content-Length:415

V=

O=

S=

……

首行的INVITE作为SIP消息的起始行,To头字段指定请求消息的逻辑接收者或者是资源的注册地址。From字段是指示请求发起方的逻辑标识。通过这些SIP消息字段中的内容,可以将SIP消息传递给在一台物理主机上运行的指定的虚拟SIP服务器。

每一台物理主机的硬件组成大致都包含:CPU处理器,外围存储设备,内部存储器等。一台物理主机上可以运行多个虚拟主机,假设运行了3个虚拟主机,每一台虚拟主机都相对独立的作为一个SIP服务器。在SIP消息的传递过程中涉及到的功能模块有:消息接收模块、查询模块、消息传递模块。消息接收模块可以接收来自网络的SIP消息;查询模块是根据SIP消息的格式逐一查询存储设备中的SIP服务器选择判定表,根据SIP服务器选择判定表中的记录查询到与接收的SIP消息判定条件相匹配的SIP服务器,消息传递模块是根据查询模块的结果,将SIP消息传递给指定的SIP服务器。

又示例性的,如图4所示,假设SIP服务器1上的用户A要与SIP服务器2上的用户B发起会话消息。首先用户A应当注册到一个SIP服务器上,消息接收模块根据用户A的注册消息内容,将注册消息中的register字段的信息在SIP服务器选择判定表(SIP服务器选择判定表的内容如表1所示)进行查询,得知用户A是要注册到sip:aaa.com的SIP服务器,消息传递模块就会根据SIP服务器选择判定表中的内容,将注册消息发送给对应的SIP服务器1上。同理,用户B注册到SIP服务器2上。

当用户A要向用户B发起会话请求时,根据INVITE消息的内容,消息接收模块接收来自用户A的INVITE消息后,查询模块根据SIP服务器选择判定表,首要的判定条件是route信息,将SIP消息中route字段中的地址提取出来与SIP服务器选择判定表中的第一个判定条件比较,如果地址一致,则将SIP消息传递至与判定条件相对应的SIP服务器上,进行消息的传递。由于用户A发送INVITE消息中ROUTE:sip:aaa.com,消息传递模块将会把该INVITE消息传递给SIP服务器1,SIP服务器1根据INVITE消息中的TO字段携带的用户B的地址,将该消息转发给在同一台主机上的另外一个SIP服务器2。当INVITE消息成功发往SIP服务器2时,SIP服务器2会给用户A返回状态码为100(TRYING)的临时消息。

表1 SIP服务器选择判定表

判定表中的内容根据sip消息格式构造,根据SIP消息的格式,以及对常用SIP消息的分析,提取出在SIP用户注册、发起会话请求时常用到的消息格式,将register、route、to、from作为判定条件的关键项。

具体的SIP消息传递流程根据判定表中的判定条件来实现,具体流程见图4所示。SIP消息接收模块接收到来自网络的SIP消息后,根据判定表的判定条件先后顺序,首先提取SIP消息中的register字段与判定表中的判定条件1相比较,比较的结果为真的话,就按照判定表中指定的SIP server完成SIP消息的传递,若比较结果为假的话,提取SIP消息中的route字段与判定表中的判定条件2相比较,比较的结果为真的话,就按照判定表中指定的SIP server完成SIP消息的传递,若比较结果为假的话,提取SIP消息中的to字段与判定表中的判定条件3相比较,比较的结果为真的话,就按照判定表中指定的SIP server完成SIP消息的传递,若比较结果为假的话,提取SIP消息中的from字段与判定表中的判定条件4相比较,若没有找到与判定表中相匹配的内容,提示消息退出。

SIP服务器选择判定表的条件可以根据不同的应用场景动态的配置,能够增加不同SIP消息传递的灵活性。

由于现有的交换技术是在一台物理主机上运行一个SIP服务器,子网内的所有用户注册到一个主机上,那么一个主机上注册的用户数就相对有限。本发明实施例通过在一个物理主机上扩展出多个虚拟主机,每一个虚拟主机作为一个SIP服务器,那么注册到同一个物理主机上的用户就会根据虚拟主机的数量递增。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1