一种呼叫过程中的消息传输方法和设备
技术领域
本发明涉及通信技术领域,特别是涉及一种呼叫过程中的消息传输方法和设备。
背景技术
如图1所示,为当前SIP(Session Initiation Protocol,会话初始协议)应用的组网示意图,两个语音网关(主叫语音网关和被叫语音网关)通过SIP服务器完成呼叫的建立和拆除等过程。
一般情况下,SIP服务器并不参与主叫语音网关和被叫语音网关的媒体信息协商过程,SIP服务器只起到注册和呼叫代理的作用,对主叫语音网关和被叫语音网关之间的呼叫报文完全透传,当主叫语音网关和被叫语音网关具有相同的编解码能力时,主叫语音网关和被叫语音网关可以实现互通。
但是,当主叫语音网关和被叫语音网关具有不同的编解码能力时,为了实现主叫语音网关和被叫语音网关的互通,可以增加SIP服务器的功能,即SIP服务器支持编解码转换,以保证主叫语音网关和被叫语音网关间的互通。
例如,SIP服务器支持的编解码方式包括G729、G723、G726等,VGA和VGB分别为主叫语音网关和被叫语音网关,VGA支持的编解码方式只包括G723、G726,VGB支持的编解码方式只包括G729与G723。
当前SIP服务器的实现方式是:SIP服务器接收来自VGA的Invite(请求)消息,并向VGB发送Invite消息,该Invite消息中携带的编解码方式为SIP服务器所支持的编解码方式(G729、G723、G726),VGB收到Invite消息后从中选择一个自身支持的编解码方式(如G729),并通过200OK返回给SIP服务器协商通过。
之后,SIP服务器发现VGA并不支持编解码方式G729,根据VGA的编解码方式支持情况,SIP服务器选择一个VGA支持的编解码方式(如G723),并通过200OK返回给VGA完成协商。
在VGA与VGB的通话过程中,VGA发送给SIP服务器的RTP(Real-timeTransport Protocol,实时传送协议)报文采用G723编码,SIP服务器收到后需要先解码,再编码成G729格式的RTP报文发送给VGB;VGB发送给SIP服务器的RTP报文采用G729编码,SIP服务器收到后需要先解码,再编码成G723格式的RTP报文发送给VGA。
但是,上述处理过程中,由于VGA和VGB之间交互的RTP报文的编解码方式不同,SIP服务器需要参与到编解码的转换过程中,对VGA和VGB的RTP报文进行编解码转换,而编码解码过程是需要DSP(Digital SignalProcessing,数字信号处理)完成的,消耗了SIP服务器的DSP资源;而且如果呼叫过多,会造成DSP资源紧张。
发明内容
本发明提供一种呼叫过程中的消息传输方法和设备,以节省SIP服务器的资源。
为了达到上述目的,本发明提供一种呼叫过程中的消息传输方法,应用于包括SIP服务器、主叫语音网关和被叫语音网关的系统中,该方法包括以下步骤:
所述SIP服务器接收来自所述主叫语音网关的携带所述主叫语音网关支持的编解码方式的第一消息,并向所述被叫语音网关发送携带所述主叫语音网关支持的编解码方式的第二消息;
如果所述被叫语音网关支持的编解码方式与所述主叫语音网关支持的编解码方式相同,所述SIP服务器接收来自所述被叫语音网关的表示协商通过的第三消息,并向所述主叫语音网关发送表示协商通过的第四消息;所述第三消息和所述第四消息中携带所述被叫语音网关与所述主叫语音网关共同支持的第一编解码方式。
所述SIP服务器并向所述被叫语音网关发送携带所述主叫语音网关支持的编解码方式的第二消息,之后还包括:
如果所述被叫语音网关支持的编解码方式与所述主叫语音网关支持的编解码方式不同,所述SIP服务器接收来自所述被叫语音网关的表示协商失败的第五消息,并向所述被叫语音网关发送携带所述SIP服务器支持的编解码方式的第六消息;
所述SIP服务器接收来自所述被叫语音网关的表示协商通过的第七消息,并向所述主叫语音网关发送表示协商通过的第八消息;所述第七消息中携带所述被叫语音网关与所述SIP服务器共同支持的第二编解码方式,所述第八消息中携带所述主叫语音网关与所述SIP服务器共同支持的第三编解码方式。
在所述主叫语音网关和所述被叫语音网关的通话过程中,所述方法还包括:
所述SIP服务器接收来自所述主叫语音网关的采用第三编解码方式进行处理的RTP报文,将采用第三编解码方式进行处理的RTP报文转换为采用第二编解码方式进行处理的RTP报文,并将采用第二编解码方式进行处理的RTP报文发送给所述被叫语音网关;
所述SIP服务器接收来自所述被叫语音网关的采用第二编解码方式进行处理的RTP报文,将采用第二编解码方式进行处理的RTP报文转换为采用第三编解码方式进行处理的RTP报文,并将采用第三编解码方式进行处理的RTP报文发送给所述主叫语音网关。
在所述主叫语音网关和所述被叫语音网关的通话过程中,所述方法还包括:
所述SIP服务器接收来自所述主叫语音网关的采用第一编解码方式进行处理的RTP报文,并将所述采用第一编解码方式进行处理的RTP报文发送给所述被叫语音网关;
所述SIP服务器接收来自所述被叫语音网关的采用第一编解码方式进行处理的RTP报文,并将所述采用第一编解码方式进行处理的RTP报文发送给所述主叫语音网关。
一种SIP服务器,应用于包括所述SIP服务器、主叫语音网关和被叫语音网关的系统中,该SIP服务器包括:
第一接收模块,用于接收来自所述主叫语音网关的携带所述主叫语音网关支持的编解码方式的第一消息;
第一发送模块,用于向所述被叫语音网关发送携带所述主叫语音网关支持的编解码方式的第二消息;
第二接收模块,用于当所述被叫语音网关支持的编解码方式与所述主叫语音网关支持的编解码方式相同时,接收来自所述被叫语音网关的表示协商通过的第三消息;
第二发送模块,用于向所述主叫语音网关发送表示协商通过的第四消息;所述第三消息和所述第四消息中携带所述被叫语音网关与所述主叫语音网关共同支持的第一编解码方式。
所述第二接收模块,还用于当所述被叫语音网关支持的编解码方式与所述主叫语音网关支持的编解码方式不同时,接收来自所述被叫语音网关的表示协商失败的第五消息;以及,
接收来自所述被叫语音网关的表示协商通过的第七消息,所述第七消息中携带所述被叫语音网关与所述SIP服务器共同支持的第二编解码方式;
所述第一发送模块,还用于向所述被叫语音网关发送携带所述SIP服务器支持的编解码方式的第六消息;
所述第二发送模块,还用于向所述主叫语音网关发送表示协商通过的第八消息,所述第八消息中携带所述主叫语音网关与所述SIP服务器共同支持的第三编解码方式。
在所述主叫语音网关和所述被叫语音网关的通话过程中,
所述第一接收模块,还用于接收来自所述主叫语音网关的采用第三编解码方式进行处理的RTP报文;
所述第一发送模块,还用于将采用第三编解码方式进行处理的RTP报文转换为采用第二编解码方式进行处理的RTP报文,并将采用第二编解码方式进行处理的RTP报文发送给所述被叫语音网关;
所述第二接收模块,还用于接收来自所述被叫语音网关的采用第二编解码方式进行处理的RTP报文;
所述第二发送模块,还用于将采用第二编解码方式进行处理的RTP报文转换为采用第三编解码方式进行处理的RTP报文,并将采用第三编解码方式进行处理的RTP报文发送给所述主叫语音网关。
在所述主叫语音网关和所述被叫语音网关的通话过程中,
所述第一接收模块,还用于接收来自所述主叫语音网关的采用第一编解码方式进行处理的RTP报文;
所述第一发送模块,还用于将所述采用第一编解码方式进行处理的RTP报文发送给所述被叫语音网关;
所述第二接收模块,还用于接收来自所述被叫语音网关的采用第一编解码方式进行处理的RTP报文;
所述第二发送模块,还用于并将所述采用第一编解码方式进行处理的RTP报文发送给所述主叫语音网关。
与现有技术相比,本发明至少具有以下优点:
在主叫语音网关和被叫语音网关存在共同支持的编解码方式的情况下,SIP服务器不需要参与到编解码的转换过程中,不需要对RTP报文进行编解码转换,从而节省了SIP服务器的DSP资源,以最少的资源占用保证呼叫通话的正常进行。
附图说明
图1是现有技术中SIP应用的组网示意图;
图2是本发明提供的一种呼叫过程中的消息传输方法流程图;
图3是本发明提出的一种SIP服务器的结构图。
具体实施方式
本发明提出一种呼叫过程中的消息传输方法,应用于包括SIP服务器、主叫语音网关和被叫语音网关的系统中,以图1为参考网络模型示意图,则主叫语音网关为VGA,被叫语音网关为VGB(或主叫语音网关为VGB,被叫语音网关为VGA)。如图2所示,该方法包括以下步骤:
步骤201,SIP服务器接收来自VGA的携带VGA支持的编解码方式的第一消息(如Invite消息)。
具体的,在VGA和VGB进行协商的过程中,VGA会向SIP服务器发送Invite消息,以VGA支持的编解码方式只包括G723、G726,SIP服务器支持的编解码方式包括G729、G723、G726、G711等,VGB支持的编解码方式只包括G729与G723为例,则Invite消息中携带G723、G726的信息。
步骤202,SIP服务器向VGB发送携带VGA支持的编解码方式的第二消息(如Invite消息),即Invite消息中携带VGA支持的编解码方式G723、G726的信息。
步骤203,VGB判断自身支持的编解码方式与VGA支持的编解码方式(从Invite消息中获知)是否相同,如果是,执行步骤204,否则,执行步骤208。
步骤204,VGB向SIP服务器发送表示协商通过的第三消息(如200OK消息),第三消息中携带VGB与VGA共同支持的第一编解码方式。
具体的,由于VGB支持的编解码方式包括G729与G723,Invite消息中携带的VGA支持的编解码方式为G723、G726,则VGA和VGB共同支持编解码方式为G723;因此,VGB可选择编解码方式为G723,即200OK消息中携带G723的信息。
步骤205,SIP服务器接收来自VGB的第三消息。当接收到200OK消息后,SIP服务器确认协商通过,编解码方式为G723。
步骤206,SIP服务器向VGA发送表示协商通过的第四消息(如200OK消息),第四消息中携带VGB与VGA共同支持的第一编解码方式(如G723)。
具体的,当接收到来自VGB的200OK消息后,SIP服务器可直接将200OK消息透传给VGA(此时第四消息和第三消息相同),至此VGA与VGB协商出共同的编解码方式G723用于本次呼叫过程。
之后在VGA和VGB的通话过程中,还包括以下步骤:
步骤207,SIP服务器接收来自VGA的采用第一编解码方式(如G723)进行处理的RTP报文,并将采用第一编解码方式进行处理的RTP报文发送给VGB;SIP服务器接收来自VGB的采用第一编解码方式进行处理的RTP报文,并将采用第一编解码方式进行处理的RTP报文发送给VGA。
综上所述,当VGA和VGB支持的编解码方式存在交集G723时,则VGA和VGB有共同支持的编解码方式,SIP服务器不需要参与到编解码的转换过程中,不需要对RTP报文进行编解码转换,从而节省了SIP服务器的DSP资源,以最少的资源占用保证呼叫通话的正常进行。
步骤208,VGB向SIP服务器发送表示协商失败的第五消息(如488消息)。本发明中,当VGA和VGB没有共同支持的编解码方式时,则此次协商会失败,VGB向SIP服务器发送488消息,通知拆除呼叫。
步骤209,SIP服务器接收第五消息,并向VGB发送携带SIP服务器支持的编解码方式的第六消息(如Invite消息),即Invite消息中携带G729、G723、G726、G711的信息。
本发明中,当接收到488消息后,SIP服务器并不直接将488消息发送给VGA,而是采用SIP服务器自身支持的编解码方式重新与VGA进行协商。
步骤210,VGB向SIP服务器发送表示协商通过的第七消息(如200OK消息),第七消息中携带VGB与SIP服务器共同支持的第二编解码方式。
具体的,由于VGB支持的编解码方式包括G729与G723,Invite消息中携带的SIP服务器的编解码方式为G729、G723、G726、G711,则VGB和SIP服务器共同支持编解码方式为G729、G723,因此,VGB可选择编解码方式为G729或G723,以选择G729为例,则200OK消息中携带G729的信息。
步骤211,SIP服务器接收来自VGB的第七消息。当接收到200OK消息后,SIP服务器确认协商通过,SIP服务器与VGB之间的编解码方式为G729。
步骤212,SIP服务器向VGA发送表示协商通过的第八消息(如200OK消息),第八消息中携带VGA与SIP服务器共同支持的第三编解码方式。
具体的,SIP服务器需要根据VGA支持的编解码方式,选择一个VGA和SIP服务器共同支持的编解码方式,由于VGA和VGB没有共同支持的编解码方式,以VGA支持的编解码方式包括G726为例,则VGA与SIP服务器共同支持的编解码方式为G726,因此,200OK消息中可携带G726的信息。至此VGA与SIP服务器协商出编解码方式G726用于本次呼叫过程,SIP服务器与VGB协商出编解码方式G729用于本次呼叫过程。
之后在VGA和VGB的通话过程中,还包括以下步骤:
步骤213,SIP服务器接收来自VGA的采用第三编解码方式(如G726)进行处理的RTP报文,将采用第三编解码方式进行处理的RTP报文转换为采用第二编解码方式(如G729)进行处理的RTP报文,并将采用第二编解码方式进行处理的RTP报文发送给VGB;SIP服务器接收来自VGB的采用第二编解码方式进行处理的RTP报文,将采用第二编解码方式进行处理的RTP报文转换为采用第三编解码方式进行处理的RTP报文,并将采用第三编解码方式进行处理的RTP报文发送给VGA。
基于与上述方法同样的发明构思,本发明还提出了一种SIP服务器,应用于包括所述SIP服务器、主叫语音网关和被叫语音网关的系统中,如图3所示,该SIP服务器包括:
第一接收模块11,用于接收来自所述主叫语音网关的携带所述主叫语音网关支持的编解码方式的第一消息;
第一发送模块12,用于向所述被叫语音网关发送携带所述主叫语音网关支持的编解码方式的第二消息;
第二接收模块13,用于当所述被叫语音网关支持的编解码方式与所述主叫语音网关支持的编解码方式相同时,接收来自所述被叫语音网关的表示协商通过的第三消息;
第二发送模块14,用于向所述主叫语音网关发送表示协商通过的第四消息;所述第三消息和所述第四消息中携带所述被叫语音网关与所述主叫语音网关共同支持的第一编解码方式。
所述第二接收模块13,还用于当所述被叫语音网关支持的编解码方式与所述主叫语音网关支持的编解码方式不同时,接收来自所述被叫语音网关的表示协商失败的第五消息;以及,
接收来自所述被叫语音网关的表示协商通过的第七消息,所述第七消息中携带所述被叫语音网关与所述SIP服务器共同支持的第二编解码方式;
所述第一发送模块12,还用于向所述被叫语音网关发送携带所述SIP服务器支持的编解码方式的第六消息;
所述第二发送模块14,还用于向所述主叫语音网关发送表示协商通过的第八消息,所述第八消息中携带所述主叫语音网关与所述SIP服务器共同支持的第三编解码方式。
在所述主叫语音网关和所述被叫语音网关的通话过程中,所述第一接收模块11,还用于接收来自所述主叫语音网关的采用第三编解码方式进行处理的RTP报文;
所述第一发送模块12,还用于将采用第三编解码方式进行处理的RTP报文转换为采用第二编解码方式进行处理的RTP报文,并将采用第二编解码方式进行处理的RTP报文发送给所述被叫语音网关;
所述第二接收模块13,还用于接收来自所述被叫语音网关的采用第二编解码方式进行处理的RTP报文;
所述第二发送模块14,还用于将采用第二编解码方式进行处理的RTP报文转换为采用第三编解码方式进行处理的RTP报文,并将采用第三编解码方式进行处理的RTP报文发送给所述主叫语音网关。
在所述主叫语音网关和所述被叫语音网关的通话过程中,所述第一接收模块11,还用于接收来自所述主叫语音网关的采用第一编解码方式进行处理的RTP报文;
所述第一发送模块12,还用于将所述采用第一编解码方式进行处理的RTP报文发送给所述被叫语音网关;
所述第二接收模块13,还用于接收来自所述被叫语音网关的采用第一编解码方式进行处理的RTP报文;
所述第二发送模块14,还用于并将所述采用第一编解码方式进行处理的RTP报文发送给所述主叫语音网关。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。