一种VoIP应用进行NAT穿越的方法及系统的制作方法

文档序号:7887235阅读:113来源:国知局
专利名称:一种VoIP应用进行NAT穿越的方法及系统的制作方法
技术领域
本发明涉及通信领域,更具体地涉及一种VoIP应用进行NAT穿越的方法和系统。
背景技术
网络地址转换(NAT,Network Address Translation)属接入广域网(WAN)技术, 是一种将私有(保留)地址转化为合法IP地址的转换技术,它被广泛应用于各种类型因特网(Internet)接入方式和各种类型的网络中。NAT能够解决IP地址不足的问题。家庭网关是伴随家庭网络概念提出而诞生的,是家庭网络设备汇聚,并与互联网互联的智能接入网关。典型的家庭网关包括但不限于家庭SOHO路由器、DSL modem网关、 IPTV机顶盒、家庭安全网关等。运营商级网络转换(CGN,Carrier Grade Network Address Translation)是一种在运营商网络中进行地址信息转换的技术。随着IPv4地址资源的枯竭,运营商迫切需要解决地址资源问题。运营商在内部使用私有(保留)地址,在运营商hternet的入口处部署 CGN设备,当用户访问hternet,内部IPv4地址在CGN设备上转换成公网地址,从hternet 访问运营商网络,公网地址在CGN设备上转换成运营商的内部地址。典型的CGN设备包括但不限于业务路由器、宽带接入服务器、防火墙、核心路由器、无线核心网网关(GGSN/PGW)寸。端口控制协议(PCP,Port Control Protocol)是解决NAT内部网络数据流接收的一种协议。当NAT内部网络的节点接收外部网络的流量时,如果内部节点没有和该流量的源端进行过连接,那么该流量在NAT设备上被丢弃。当流量经过NAT网络之前,使用PCP技术在NAT网络上建立关于该流量的NAT映射条目,当流量到来时,能够穿过NAT网络而到达到其内部接收节点。PCP分为PCP客户端和PCP服务器端,PCP客户端通过PCP请求消息向 PCP服务器端申请或者释放NAT映射条目。网络电话(VoIP,Voice over Internet Protocol),即指在 IP 网络上使用 IP 协议以数据包的方式传输语音。使用VoIP协议,不管是因特网、企业内部互连网还是局域网都可以实现语音通信。VoIP信令协议用于建立和取消呼叫,传输用于定位用户以及协商能力所需的信息。VoIP常用的信令协议是H. 323和会话发起协议(SIP,SeSSi0n Initiation Protocol) 0在信令阶段,通信双方会协商包含语音传输阶段的地址、协议和端口信息。信令阶段结束后,进行语音传输。VoIP在语音传输阶段的协议一般是实时传送协议(RTP, Real-time Transport Protocol)。H. 323是一种国际电信联盟远程通信标准化组织(ITU-T,ITU-T for ITU Telecommunication Standardization Sector) t示}t,MtJffi(LAN)
会议,后来扩展至覆盖VoIP。H. 323广泛用于软交换IP多媒体系统(IMS,IP Multimedia Subsystem)等语音视频通信技术中。SIP是建立VoIP连接的 hternet 工程任务组(IETFJnternet Engineering Task Force)标准。SIP是一种应用层控制协议,用于和一个或多个参与者创建、修改和终止会
4话。SIP的结构与客户-服务器协议(HTTP)相似。客户机发出请求,并发送给服务器,服务器处理这些请求后给客户机返回一个响应。该请求与响应形成一次事务。SIP消息的正文一般用会话描述协议(SDP)来进行媒体协商,如传输语音所使用的协议、IP地址和端口以及采用的编码方式。SIP广泛用于软件换、IMS等语音视频通信技术中。在CGN网络中,VoIP的终端在内部网络、终端和服务器以及终端和终端之间的通信需要经过CGN设备。VoIP的信令报文中包含终端信令连接的地址和端口信息、以及语音传输阶段的地址、协议类型和端口信息。当信令报文到达服务器或者另一个终端后,目的端从报文中解析出这些地址信息。由于地址和端口属于内部地址信息,地址标示的目的不可达,所以这些地址信息不能进行后续通信。因此,对于VoIP应用在CGN网络中的场景,信令协议需要进行NAT穿越。对于VoIP应用在CGN网络中进行NAT穿越的方式可以是在CGN上部署VoIP信令协议的应用层网关(ALG,Application Level Gateway)功能,即 SIP ALG 禾Π H. 323 ALG, 实现NAT穿越;或者,部署专门用于进行NAT穿越的服务器,如对于SIP协议,部署SIP会话边界控制器(SBC, Session Border Controller),实现 NAT 穿越。CGN设备部署在运营商网络和hternet的出口处,流量较大,如果在CGN部署ALG 功能,会加重CGN设备的处理负担,容易造成拥塞,并且降低处理效率。架设专门用于NAT 的服务器,不仅会增加建网成本,而且对于服务器的处理性能、安全性也有较高要求。

发明内容
有鉴于此,本发明的主要目的在于提供一种VoIP应用进行NAT穿越的方法及系统,解决VoIP应用在CGN网络场景下进行NAT穿越成本高、容易拥塞以及效率低的问题。为达到上述目的,本发明的技术方案是这样实现的本发明提供了一种VoIP应用进行网络地址转换NAT穿越的方法,所述方法包括家庭网关根据VoIP信令报文载荷中的内部地址、内部端口和协议类型,分配外部地址和外部端口,并将所述内部地址、内部端口和协议类型、以及所分配到的外部地址和外部端口发送给运营商级网络转换CGN设备;CGN设备在本地建立包含有所述内部地址、内部端口、协议类型、外部地址和外部端口的NAT映射条目。在上述方案中,所述家庭网关根据所接收VoIP信令报文载荷中的内部地址、内部端口和协议类型,分配外部地址和外部端口,包括所述家庭网关预先从所述CGN设备上申请外部端口资源块并保存到本地;根据所述VoIP信令报文载荷中的内部地址、内部端口和协议类型,从本地保存的所述外部端口资源块中分配所述外部地址和外部端口。在上述方案中,所述从所述CGN设备上申请外部端口资源块,包括家庭网关向所述CGN设备发送包含有需申请外部端口资源块信息的外部端口资源块请求消息;所述CGN设备接收所述外部端口资源块请求消息,为所述家庭网关分配外部端口资源块,并向所述家庭网关返回包含有所分配外部端口资源块信息的PCP响应消息;所述家庭网关接收所述PCP响应消息,获取所述CGN设备分配的外部端口资源块并保存到本地。在上述方案中,所述将所述内部地址、内部端口和协议类型、以及所分配到的外部地址和外部端口发送给CGN设备,包括所述家庭网关生成包含有所述内部地址、内部端口、协议类型、外部地址和外部端口的本地映射条目,将所述本地映射条目保存到本地并封装到端口控制协议PCP映射请求消息中发送给所述CGN设备。在上述方案中,所述分配外部地址和外部端口之后,所述方法还包括所述家庭网关将所述VoIP信令报文载荷中的内部地址和内部端口替换成所分配的所述外部地址和外部端口,并发送所述VoIP信令报文。在上述方案中,所述家庭网关根据VoIP信令报文载荷中的内部地址、内部端口和协议类型,分配外部地址和外部端口之前,所述方法还包括所述家庭网关监听所述VoIP信令报文,并对所述VoIP信令报文进行解析,得到所述VoIP信令报文载荷中携带的内部地址、内部端口和协议类型。本发明还提供了一种VoIP应用进行NAT穿越的系统,所述系统包括家庭网关和 CGN设备,家庭网关包括PCP客户端,CGN设备包括PCP服务器;其中,PCP客户端,用于根据Vo IP信令报文载荷中的内部地址、内部端口和协议类型,分配外部地址和外部端口,并将所述内部地址、内部端口和协议类型、以及所分配到的外部地址和外部端口发送给CGN设备的PCP服务器;PCP服务器,用于接收所述PCP客户端发送的所述内部地址、内部端口、协议类型、 外部地址和外部端口,在本地建立包含有所述内部地址、内部端口、协议类型、外部地址和外部端口的NAT映射条目。在上述方案中,所述PCP客户端,具体用于预先从所述CGN设备的PCP服务器上申请外部端口资源块并保存到本地;根据所述VoIP信令报文载荷中的内部地址、内部端口和协议类型,从本地保存的所述外部端口资源块中分配所述外部地址和外部端口。在上述方案中,所述PCP客户端,具体用于向所述PCP服务器发送包含有需申请外部端口资源块信息的外部端口资源块请求消息;接收所述PCP服务器返回的PCP响应消息, 获取所述PCP服务器分配的外部端口资源块并保存到本地。所述PCP服务器,具体用于接收所述PCP客户端发送的外部端口资源块请求消息, 为所述PCP客户端分配外部端口资源块,并向所述PCP客户端返回包含有所分配外部端口资源块信息的PCP响应消息。在上述方案中,所述PCP客户端,具体用于生成包含有所述内部地址、内部端口、 协议类型、外部地址和外部端口的本地映射条目,将所述本地映射条目保存到本地并封装到PCP映射请求消息中发送给所述CGN设备的PCP服务器。在上述方案中,所述家庭网关还包括VoIP代理单元,用于将所述VoIP信令报文载荷中的内部地址和内部端口替换成所述PCP客户端分配的所述外部地址和外部端口,并发送所述VoIP信令报文;所述PCP客户端,还用于将所分配的所述外部地址和外部端口返回给所述VoIP代理单元。在上述方案中,所述VoIP代理单元,还用于监听所述VoIP信令报文,对所述VoIP 信令报文进行解析,得到所述VoIP信令报文载荷中携带的内部地址、内部端口和协议类型,并向所述PCP客户端发送外部地址和外部端口申请消息,所述外部地址和外部端口申请消息包含有所述VoIP信令报文载荷中的内部地址、内部端口和协议类型;所述PCP客户端,还用于接收所述VoIP代理单元发送的外部地址和外部端口申请消息。本发明中,由家庭网关实现针对VoIP信令报文载荷的外部地址和外部端口的分配,并通知CGN设备建立相应的NAT映射条目,从而可以通过家庭网关实现VoIP信令报文载荷部分的NAT处理,不需要在CGN设备上部署VoIP的ALG功能,减轻了 CGN设备的处理负担,避免拥塞,并且提高了 NAT处理效率;同时,也不需要架设专门用于NAT穿越的服务器, 从而节约成本。


图1为本发明实施例一 VoIP应用进行NAT穿越的系统组成结构示意图;图2为本发明实施例一 VoIP应用进行NAT穿越的具体实现流程示意图;图3为不同运营商时CGN网络的架构示意图;图4为相同运营商时CGN网络的架构示意图;图5为本发明实施例二外部端口资源块申请阶段的具体实现流程示意图;图6为本发明实施例二注册阶段的具体实现流程图;图7为本发明实施例二邀请阶段的具体实现流程图。
具体实施例方式VoIP具体实现过程包括信令阶段和语音传输阶段。其中,在信令阶段,VoIP信令报文的载荷携带语音传输阶段用于接收语音数据的地址和端口。当VoIP信令报文达到另一个终端后,在语音数据传输阶段,另一个终端使用VoIP信令报文载荷携带的地址和端口发送语音数据。如果VoIP终端在私网中,需要在信令阶段把VoIP信令报文载荷中携带的、用于语音数据传输阶段使用的内部地址和内部端口转换成外部地址和外部端口,并在CGN设备上生成相应的NAT映射条目。在进行语音数据传输时,CGN设备根据该NAT映射条目将语音数据使用的外部地址和外部端口转换成相应的内部地址和内部端口,这样,私网中的终端才能够接收所述语音数据。本发明的基本思想是在信令阶段,由家庭网关将VoIP信令报文载荷中携带的、 用于语音数据传输阶段使用的内部地址和内部端口转换成外部地址和外部端口,并通知 CGN设备生成相应的NAT映射条目。实施例一本实施例对于本发明VoIP应用进行NAT穿越的系统组成结构、以及方法的具体实现过程做详细说明。本实施例中,如图1所示,VoIP应用进行NAT穿越的系统可以包括家庭网关和 CGN设备,所述家庭网关包括PCP客户端和VoIP代理单元;所述CGN设备包括PCP服务器。 这里,所述家庭网关与所述CGN设备属于同一 CGN网络。其中,家庭网关的PCP客户端具体可以用于向CGN设备上的PCP服务器发送外部端口资源块请求消息,所述外部端口资源块消息中可以包括需申请的外部端口资源块的相关信息,例如,可以包含需申请的外部端口个数和相应的外部端口描述等信息;接收CGN 设备上PCP服务器返回的外部端口资源块响应消息,获取所述PCP服务器分配给自身的外部端口资源块并保存到本地,所述外部端口资源块响应消息中包括分配给所述PCP客户端的外部端口资源块的相关信息,例如,可以包含所分配的外部端口个数、外部地址和外部端口列表;接收所述VoIP代理单元发送的外部地址和外部端口申请消息,从本地保存的外部端口资源块中分配外部地址和外部端口,将所分配的外部地址和外部端口返回给所述VoIP 代理单元,并生成包含内部地址、内部端口、协议类型、外部地址、外部端口的本地映射条目保存到本地;将所述本地映射条目封装到PCP映射请求消息中发送给所述CGN设备的PCP 服务器。家庭网关的VoIP代理单元具体可以用于监听VoIP信令报文并解析,标示VoIP 终端的地址和端口信息;向PCP客户端发送外部地址和外部端口的申请消息,所述申请消息包括内部地址、内部端口和协议类型等信息;接收PCP客户端返回的外部地址和外部端口,并将所述VoIP信令报文载荷中的内部地址和内部端口替换成所述外部地址和外部端口后,发送所述VoIP信令报文给所述CGN设备。CGN设备的PCP服务器具体可以用于接收家庭网关的PCP客户端发送的外部端口资源块请求消息,从CGN设备的地址池中批量申请外部端口资源块分配给所述PCP客户端,向所述PCP客户端返回所述外部端口资源块响应消息,并将已分配的外部端口资源块在CGN设备上设置为不可用;接收家庭网关的PCP客户端发送的PCP映射请求消息,根据所述PCP映射请求消息中的本地映射条目在本地建立相应的NAT映射条目并保存。家庭网关的VoIP代理单元可以针对各个H. 323开启或者关闭,针对各个H. 323开启或关闭的状态可以通过预配置的方式进行设置,具体的,可以通过WEB界面配置、网管配置、或命令行配置的方式进行设置。家庭网关的VoIP代理单元可以针对各个SIP开启或者关闭,针对各个SIP开启或者关闭的状态可以通过预配置的方式进行设置,具体的,可以通过WEB界面配置、网管配置、或命令行配置的方式进行设置。如图2所示,在VoIP信令报文的传输过程中,VoIP应用进行NAT穿越的具体实现流程可以包括如下步骤步骤201 家庭网关的PCP客户端发送外部端口资源块请求消息给PCP服务器,申请外部端口资源块;这里,所述外部端口资源块请求消息中可以包含需申请的外部端口资源块的相关信息。例如,可以包含需申请的外部端口数量N。步骤202 =CGN设备上的PCP服务器接收所述外部端口资源块请求消息,为所述 PCP客户端分配外部端口资源块,PCP客户端获取PCP服务器分配的外部端口资源块并保存到本地。 具体地,CGN设备上的PCP服务器接收所述外部端口资源块请求消息,根据所述外部端口资源块请求消息中需申请的外部端口资源块的相关信息(如需申请的外部端口数量N),从CGN设备上的地址池中申请相应的外部端口资源块(如,个数为N的外部端口和相应的外部地址),将申请到的外部端口资源块封装到PCP响应消息中返回给所述PCP客户端,PCP客户端接收所述PCP响应消息,从中获取申请到的外部端口资源块并保存到本地,
8至此,完成外部端口资源块到所述PCP客户端的分配。之后,CGN设备上的PCP服务器还将所述地址池中已分配的外部端口资源块设置为不可用。这里,所述外部端口资源块的相关信息可以包括外部端口个数N、外部地址和外部端口列表。步骤203 =VoIP终端发送VoIP信令报文。步骤204 家庭网关上的VoIP代理单元监听到所述VoIP信令报文,并基于所述 VoIP信令报文中载荷的内部地址、内部端口和协议类型,从家庭网关上的PCP客户端上获取外部地址和外部端口。具体地,家庭网关上的VoIP代理单元监听到所述VoIP信令报文并解析所述VoIP 信令报文的载荷,得到其内部地址、内部端口和协议类型,并向家庭网关上的PCP客户端申请相应的外部地址和外部端口(发送外部地址和外部端口申请消息,该申请消息中包含解析所述VoIP信令报文的载荷所得到的内部地址、内部端口和协议类型),PCP客户端从本地保存的外部端口资源块中分配外部地址和外部端口,将所分配的外部地址和外部端口返回给所述VoIP代理单元,并在本地生成包含所述内部地址、内部端口、外部地址、外部端口、 协议类型的本地映射条目。步骤205 家庭网关上的VoIP代理单元将所述VoIP信令报文中的内部地址和内部端口替换为所述PCP客户端分配的外部地址和外部端口。步骤206 家庭网关上的VoIP代理单元将所述VoIP信令报文发送给CGN设备。步骤207 为了能够在CGN设备上生成语音数据传输阶段需要的NAT映射条目,家庭网关上的PCP客户端将步骤204中生成的本地映射条目封装到PCP映射请求消息中,发送给CGN设备上的PCP服务器。步骤208 =CGN设备上的PCP服务器接收所述PCP映射请求消息,解析出包含有所述内部地址、内部端口、协议类型、外部地址和外部端口的本地映射条目,建立相应的NAT 映射条目并保存到本地。这里,所述NAT映射条目包含有所述本地映射条目中的内部地址、内部端口、协议类型、外部地址和外部端口。步骤209 =CGN设备接收所述VoIP代理单元发送的VoIP信令报文,对所述VoIP信令报文中IP头部的内部地址和传输层的内部端口进行NAT处理,并发送处理后的所述VoIP 信令报文给VoIP服务器/VoIP终端。实施例二本实施例以实施例一为基础,将本发明在VoIP的SIP呼叫流程中的具体应用过程做详细说明。图3和图4为不同CGN网络的网络架构示意图,图3是不同运营商CGN网络的架构示意图,图4是相同运营商CGN网络的结构示意图。其中,不同运营商的CGN设备之间通过因特网连接。在CGN网络中,SIP终端在运营商的内部网络中,使用的地址为内部地址,连接家庭网关。SIP代理服务器连接在因特网上,使用的地址是公网地址。SIP终端访问SIP 代理服务器时需要经过家庭网关、运营商的CGN设备以及因特网。本实施例中,SIP呼叫流程包括三个阶段外部端口资源块申请阶段、注册阶段和邀请阶段。其中,首先进行外部端口资源块申请阶段。如图5所示,家庭网关1与CGN_1之间
9进行外部端口资源块申请,家庭网关2与CGN_2之间进行外部端口资源块申请,具体地,外部端口资源块申请的流程可以包括如下步骤步骤501 家庭网关上的PCP客户端发送外部端口资源块请求消息到CGN上申请外部端口资源块。步骤502 :CGN上的PCP服务器接收所述外部端口资源块请求消息,从本地的地址池中分配外部端口资源块,将所分配的外部端口资源块封装到PCP外部端口资源块响应消息中返回给家庭网关,并将已分配的所述外部端口资源块设置为不可用;家庭网关上的 PCP客户端接收所述PCP外部端口资源块响应消息,获取所述CGN分配的外部端口资源块并保存到本地。其中,所述外部端口资源块具体可以包括如下信息外部端口个数、外部地址和外部端口列表。这里,外部端口列表中可以包含多条外部端口信息,其中,外部端口列表中所包含外部端口信息的数目与所述“外部端口个数”相同。这里,需要说明的是,“外部端口个数”的指定方式可以是在家庭网关通过预配置的方式指定或者在CGN通过预配置的方式指定。其中,当在家庭网关上指定所述外部端口个数时,所述外部端口资源块请求消息中携带所述外部端口个数,CGN以所述外部端口资源块请求消息中携带的外部端口个数为准进行外部端口资源块的分配;如果在CGN上指定所述外部端口个数,无论所述外部端口资源块请求消息中是否携带外部端口个数或者无论所携带的外部端口个数取值为何,CGN都以自身的配置为准进行外部端口资源块的分配。其中,第二个阶段是注册阶段,SIP终端1和SIP终端2分别到SIP服务器上注册。 如图6所示,其中,注册的流程具体可以包括如下步骤步骤601 :SIP终端1发送注册报文给自身所在网络中的家庭网关1,所述注册报文的载荷中包含其内部地址A’和内部端口 a’ ;SIP终端2发送注册报文给自身所在网络中的家庭网关2,所述注册报文的载荷中包含其内部地址B ’和内部端口 b ’。步骤602 家庭网关1上的VoIP代理单元监听到注册报文,从所述注册报文的载荷中提取到SIP终端1的内部地址A’和内部端口 a’,向家庭网关1上的PCP客户端申请到相应的外部地址A和外部端口 a,PCP客户端从本地保存的外部端口资源块中分配外部地址A和外部端口 a,生成相应的本地映射条目并保存,将所分配的外部地址A和外部端口 a 返回给VoIP代理单元,VoIP代理单元将所述注册报文的载荷中内部地址Α’和内部端口 a’ 替换成所申请到的外部地址A和外部端口 a后发送给CGN_1 ;同理,家庭网关2上也进行相同的处理,具体地,家庭网关2上的VoIP代理单元从家庭网关2上的PCP客户端上申请到外部地址B和外部端口 b,将所述注册报文的载荷中内部地址B’和内部端口 b’替换成所述外部地址B和外部端口 b后发送给CGN_2,家庭网关2 上的PCP客户端生成本地映射条目并保存。这里,所述PCP客户端生成的本地映射条目中包含针对报文载荷的外部地址、外部端口、内部地址、内部端口和协议类型等信息,其中,外部地址与所述内部地址对应,外部端口与所述内部端口对应。本实施例中,家庭网关1上的PCP客户端所生成的本地映射条目具体包含外部地址A、外部端口 a、内部地址A’、内部端口 a’和协议类型UDP。家庭网关2上的PCP客户端所生成的本地映射条目具体包含外部地址B、外部端口 b、内部地址B’、内部端口 b’和协议类型UDP。步骤603 家庭网关1上的PCP客户端将所生成的本地映射条目封装到PCP映射请求消息中发送给CGN_1,CGN_1接收所述PCP映射请求消息,在本地建立用于报文中载荷的NAT转换的第一 NAT映射条目;同理,家庭网关2上的PCP客户端将所生成的本地映射条目封装到PCP映射请求消息中发送给CGN_2,CGN_2接收所述PCP映射请求消息,在本地建立用于报文中载荷的NAT 转换的第一 NAT映射条目;具体地,CGN_1所建立的第一 NAT映射条目中包含外部地址A、外部端口 a、内部地址A’、内部端口 a’和协议类型UDP ;CGN_2所建立的第一 NAT映射条目中包含外部地址B、 外部端口 b、内部地址B’、内部端口 b’和协议类型UDP。步骤604 :CGN_1接收家庭网关1的VoIP代理单元发送的注册报文,为了私网中的 SIP终端1能够接收信令响应协议报文,CGN_1对所述注册报文的IP头部的内部地址和传输层的内部端口进行NAT转换,并将转换后的注册报文发送给SIP服务器;CGN_2接收家庭网关2的VoIP代理单元发送的注册报文,为了私网中的SIP终端 2能够接收信令响应协议报文,CGN_2对所述注册报文的IP头部的内部地址和传输层的内部端口进行NAT转换,并将转换后的注册报文发送给SIP服务器;这里,CGN对注册报文的IP头部的内部地址和传输层的内部端口进行NAT转换, 可以包括CGN从自身的地址池中申请并分配相应的外部地址和外部端口,将所述注册报文中IP头部的内部地址和传输层的内部端口替换成所分配的外部地址和外部端口后发送给SIP服务器,同时生成包含所述IP头部的内部地址、传输层的内部端口、协议类型、IP头部的外部地址和传输层的外部端口的第二 NAT映射条目并保存到本地。这里,针对注册报文的IP头部的内部地址和传输层的内部端口进行的NAT转换, 与相关的现有技术相同,不再赘述,在图6中未示出该NAT转换。步骤605 如果需要认证,则进行认证。步骤606 =SIP服务器响应0K。需要说明的是,图6中SIP终端1的注册与SIP终端2的注册可以分别进行,也可以同时进行。第三阶段是邀请阶段,SIP终端1通过邀请消息呼叫SIP终端2,如图7所示,该邀请阶段的具体实现流程包括如下步骤步骤701 =SIP终端1发送邀请消息,所述邀请消息的报文载荷中包含被叫SIP终端2的外部地址B和外部端口 b、SIP终端1自身的内部地址A’和内部端口 a’、和主叫RTP 连接的地址C’和端口 c’。步骤702 家庭网关1的VoIP代理单元接收所述邀请消息,根据家庭网关1的PCP 客户端所保存的所述本地映射条目,将所述邀请消息的报文载荷中的内部地址和内部端口 (A’a’)替换成相应的外部地址和外部端口(A:a);之后,对于主叫RTP连接的内部地址和内部端口(C’ c’),VoIP代理单元向家庭网关1上的PCP客户端上申请外部地址和外部端口(C:c),PCP客户端基于自身保存的外部端口资源块分配外部地址和外部端口(C:c), 生成对应所述主叫RTP连接的本地映射条目,并将所分配的外部地址和外部端口(C:c)返回给VoIP代理单元,VoIP代理单元将所述邀请消息的报文载荷中内部地址和内部端口(C’ :c')替换成相应的外部地址和外部端口(C:c);最后,VoIP代理单元将所述邀请消息发送给CGN_1。这里,家庭网关1上的PCP客户端针对主叫RTP连接所生成的本地映射条目具体包括外部地址和外部端口(C:c)、内部地址和内部端口(C’ :c')和协议类型UDP。需要说明的是,本步骤中,将所述邀请消息的报文载荷中的内部地址和内部端口 (A’ :a')替换成相应的外部地址和外部端口(A:a)、与将所述邀请消息的报文载荷中内部地址和内部端口(C’ :c')替换成相应的外部地址和外部端口(C:c)的两个动作,可以同时进行,也可以分别进行,不分先后。步骤703 家庭网关1上的PCP客户端将步骤702中所生成的本地映射条目封装到PCP映射请求消息中,并将所述PCP映射请求消息发送给CGN_1,CGN_1接收所述PCP映射请求消息,生成主叫RTP连接所需要的、用于对报文的载荷进行NAT转换的第一 NAT映射条目,该第一 NAT映射条目具体可以包括外部地址和外部端口(C: c)、内部地址和内部端口(C’ c’)和协议类型UDP。步骤704 :CGN_1接收所述邀请消息,对所述邀请消息中报文的IP头部的内部地址和传输层的内部端口进行NAT转换,并将转换后的所述邀请消息发送给SIP服务器。这里,由于SIP终端1使用了与注册阶段相同的内部地址和内部端口,并且CGN_1 在步骤604进行相应NAT转换时,已生成了相应的第二 NAT映射条目,这里,直接把从私网到公网的所述邀请消息的IP头部的内部地址和传输层的内部端口替换成所述第二 NAT映射条目中的外部地址和外部端口即可。步骤705 =SIP服务器转发所述邀请消息给CGN_2。步骤706 :CGN_2接收所述邀请消息,由于注册阶段和邀请阶段SIP终端使用相同的内部地址和内部端口,对所述邀请消息中报文的IP头部的外部地址和传输层的外部端口进行NAT转换,并将转换后的所述邀请消息发送给家庭网关2。这里,CGN_2将所述邀请消息中报文的IP头部的外部地址和传输层的外部端口替换成相应的第二 NAT映射条目中IP头部的内部地址和传输层的内部端口。步骤707 家庭网关2的VoIP代理单元接收所述邀请消息,查询从家庭网关2的 PCP客户端所保存的本地映射条目,把所述邀请消息报文载荷中的外部地址B和外部端口 b 修改成相应的内部地址B’和内部端口 b’,并把所述邀请消息发送给被叫SIP终端2。步骤708 被叫SIP终端2接收所述邀请消息,从所述邀请消息中获取主叫SIP终端1在语音数据传输阶段使用的主叫RTP连接的地址和端口,并向SIP服务器返回ringing 响应。步骤709 =SIP服务器转发ringing响应到主叫SIP终端1。步骤710 被叫SIP终端2发送OK消息给家庭网关2,所述OK消息的报文载荷中包含主叫SIP终端1的外部地址A和外部端口 a、SIP终端2本身的内部地址B’和内部端口 b’、被叫RTP连接的内部地址D’和内部端口 d’。步骤711 家庭网关2的VoIP代理单元接收所述OK消息,查询家庭网关2的PCP 客户端所保存的本地映射条目,将所述OK消息报文载荷中的内部地址B’和内部端口 b’替换成相应的外部地址B和外部端口 b ;之后,家庭网关2上的VoIP代理单元为被叫RTP连接的内部地址D’和外部端口 d’向家庭网关2上的PCP客户端申请外部地址D和外部端口d,家庭网关2上的PCP客户端从本地保存的外部端口资源块中分配外部地址D和外部端口 d,生成对应被叫RTP连接的本地映射条目,并将所分配的外部地址D和外部端口 d返回家庭网关2上的VoIP代理单元,家庭网关2上的VoIP代理单元将所述OK消息报文载荷中的内部地址D’和外部端口 d’替换成相应的外部地址D和外部端口 d ;最后,VoIP代理单元将所述OK消息发送给CGN_2。这里,家庭网关2上的PCP客户端针对被叫RTP连接所生成的本地映射条目具体包括外部地址D和外部端口 d、内部地址D’和外部端口 d’和协议类型UDP。需要说明的是,本步骤中,将所述OK消息报文载荷中的内部地址D’和外部端口 d’ 替换成相应的外部地址D和外部端口 d、与将所述OK消息报文载荷中的内部地址B’和内部端口 b’替换成相应的外部地址B和外部端口 b的两个动作,可以同时进行,也可以分别进行,没有先后顺序。步骤712 家庭网关2上的PCP客户端将步骤711中所生成的本地映射条目封装到PCP映射请求消息中,并将所述PCP映射请求消息发送给CGN_2,CGN_2接收所述PCP映射请求消息,生成被叫RTP连接所需要的、用于对报文的载荷进行NAT转换的第一 NAT映射条目,该第一 NAT映射条目具体可以包括外部地址和外部端口(D:d)、内部地址和内部端口(D’ d’)和协议类型UDP。步骤713 :CGN_2接收所述家庭网关2上的VoIP单元所发送的OK消息,对所述OK 消息中报文的IP头部的内部地址和传输层的内部端口进行NAT转换,并将转换后的所述邀请消息发送给SIP服务器。这里,步骤713的具体过程与步骤704中相似,不再赘述。步骤714 =SIP服务器转发所述OK消息给CGN_1。步骤715 :CGN_1接收所述OK消息,对所述OK消息中报文的IP头部的外部地址和传输层的外部端口进行NAT转换,并将转换后的所述OK消息发送给家庭网关1。这里,步骤714的具体过程与步骤706中相似,不再赘述。步骤716 家庭网关1的VoIP代理单元接收所述OK消息,查询从家庭网关1的PCP 客户端所保存的本地映射条目,把所述OK消息报文载荷中的外部地址A和外部端口 a修改成相应的内部地址A’和内部地址a’,并把所述OK消息发送给主叫SIP终端1。步骤717 主叫SIP终端1接收所述OK消息,从所述OK消息中获取被叫SIP终端 2在语音数据传输阶段使用的被叫RTP连接的地址和端口,并直接向被叫SIP终端2返回 ACK消息。步骤718 主叫SIP终端1向被叫SIP终端2发送语音数据报文,采用的协议为 RTP,目的地址为被叫RTP连接的外部地址D,目的端口为被叫RTP连接的外部端口 d。步骤719 当主叫SIP终端1的语音数据报文到达被叫网络上的CGN_2上时,CGN_2 根据本地保存的、对应被叫RTP连接的第一 NAT映射条目,将所述语音数据报文的目的地址 D和目的端口 d(设置在IP头部和UDP头部)修改成相应的内部地址D’和内部端口 d’,并把修改后的所述语音数据报文发送给被叫SIP终端2。步骤720 被叫SIP终端2向主叫SIP终端1发送语音数据报文,采用的协议为 RTP,目的地址为主叫RTP连接的外部地址C,目的端口为主叫RTP连接的外部端口 c。步骤721 被叫SIP终端2发送的语音数据报文到达主叫网络上的CGN_1上时,CGN_1根据本地保存的、对应主叫RTP连接的第一 NAT映射条目,将所述语音数据报文中目的地址C和目的端口 c (设置在IP头部和UDP头部)修改成相应的内部地址C’和内部端口 C’,并把修改后的所述语音数据报文发送给主叫SIP终端1。至此,SIP终端1与SIP终端2之间呼叫成功。 以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
权利要求
1.一种VoIP应用进行网络地址转换NAT穿越的方法,其特征在于,所述方法包括家庭网关根据VoIP信令报文载荷中的内部地址、内部端口和协议类型,分配外部地址和外部端口,并将所述内部地址、内部端口和协议类型、以及所分配到的外部地址和外部端口发送给运营商级网络转换CGN设备;CGN设备在本地建立包含有所述内部地址、内部端口、协议类型、外部地址和外部端口的NAT映射条目。
2.根据权利要求1所述VoIP应用进行NAT穿越的方法,其特征在于,所述家庭网关根据所接收VoIP信令报文载荷中的内部地址、内部端口和协议类型,分配外部地址和外部端口,包括所述家庭网关预先从所述CGN设备上申请外部端口资源块并保存到本地;根据所述 VoIP信令报文载荷中的内部地址、内部端口和协议类型,从本地保存的所述外部端口资源块中分配所述外部地址和外部端口。
3.根据权利要求2所述VoIP应用进行NAT穿越的方法,其特征在于,所述从所述CGN 设备上申请外部端口资源块,包括家庭网关向所述CGN设备发送包含有需申请外部端口资源块信息的外部端口资源块请求消息;所述CGN设备接收所述外部端口资源块请求消息,为所述家庭网关分配外部端口资源块,并向所述家庭网关返回包含有所分配外部端口资源块信息的PCP响应消息;所述家庭网关接收所述PCP响应消息,获取所述CGN设备分配的外部端口资源块并保存到本地。
4.根据权利要求1所述VoIP应用进行NAT穿越的方法,其特征在于,所述将所述内部地址、内部端口和协议类型、以及所分配到的外部地址和外部端口发送给CGN设备,包括所述家庭网关生成包含有所述内部地址、内部端口、协议类型、外部地址和外部端口的本地映射条目,将所述本地映射条目保存到本地并封装到端口控制协议PCP映射请求消息中发送给所述CGN设备。
5.根据权利要求1所述VoIP应用进行NAT穿越的方法,其特征在于,所述分配外部地址和外部端口之后,所述方法还包括所述家庭网关将所述VoIP信令报文载荷中的内部地址和内部端口替换成所分配的所述外部地址和外部端口,并发送所述VoIP信令报文。
6.根据权利要求1所述VoIP应用进行NAT穿越的方法,其特征在于,所述家庭网关根据VoIP信令报文载荷中的内部地址、内部端口和协议类型,分配外部地址和外部端口之前,所述方法还包括所述家庭网关监听所述VoIP信令报文,并对所述VoIP信令报文进行解析,得到所述 VoIP信令报文载荷中携带的内部地址、内部端口和协议类型。
7.一种VoIP应用进行NAT穿越的系统,其特征在于,所述系统包括家庭网关和CGN设备,家庭网关包括PCP客户端,CGN设备包括PCP服务器;其中,PCP客户端,用于根据Vo IP信令报文载荷中的内部地址、内部端口和协议类型,分配外部地址和外部端口,并将所述内部地址、内部端口和协议类型、以及所分配到的外部地址和外部端口发送给CGN设备的PCP服务器;PCP服务器,用于接收所述PCP客户端发送的所述内部地址、内部端口、协议类型、外部地址和外部端口,在本地建立包含有所述内部地址、内部端口、协议类型、外部地址和外部端口的NAT映射条目。
8.根据权利要求7所述VoIP应用进行网络地址转换NAT穿越的系统,其特征在于,所述PCP客户端,具体用于预先从所述CGN设备的PCP服务器上申请外部端口资源块并保存到本地;根据所述VoIP信令报文载荷中的内部地址、内部端口和协议类型,从本地保存的所述外部端口资源块中分配所述外部地址和外部端口。
9.根据权利要求8所述VoIP应用进行网络地址转换NAT穿越的系统,其特征在于, 所述PCP客户端,具体用于向所述PCP服务器发送包含有需申请外部端口资源块信息的外部端口资源块请求消息;接收所述PCP服务器返回的PCP响应消息,获取所述PCP服务器分配的外部端口资源块并保存到本地;所述PCP服务器,具体用于接收所述PCP客户端发送的外部端口资源块请求消息,为所述PCP客户端分配外部端口资源块,并向所述PCP客户端返回包含有所分配外部端口资源块信息的PCP响应消息。
10.根据权利要求7至9任一项所述VoIP应用进行网络地址转换NAT穿越的系统,其特征在于,所述PCP客户端,具体用于生成包含有所述内部地址、内部端口、协议类型、外部地址和外部端口的本地映射条目,将所述本地映射条目保存到本地并封装到PCP映射请求消息中发送给所述CGN设备的PCP服务器。
11.根据权利要求7所述VoIP应用进行网络地址转换NAT穿越的系统,其特征在于,所述家庭网关还包括=VoIP代理单元,用于将所述VoIP信令报文载荷中的内部地址和内部端口替换成所述PCP客户端分配的所述外部地址和外部端口,并发送所述VoIP信令报文;所述PCP客户端,还用于将所分配的所述外部地址和外部端口返回给所述VoIP代理单兀。
12.根据权利要求11所述VoIP应用进行网络地址转换NAT穿越的系统,其特征在于, 所述VoIP代理单元,还用于监听所述VoIP信令报文,对所述VoIP信令报文进行解析,得到所述VoIP信令报文载荷中携带的内部地址、内部端口和协议类型,并向所述PCP客户端发送外部地址和外部端口申请消息,所述外部地址和外部端口申请消息包含有所述VoIP 信令报文载荷中的内部地址、内部端口和协议类型;所述PCP客户端,还用于接收所述VoIP代理单元发送的外部地址和外部端口申请消肩、O
全文摘要
本发明公开了一种VoIP应用进行NAT穿越的方法,所述方法包括家庭网关根据VoIP信令报文载荷中的内部地址、内部端口和协议类型,分配外部地址和外部端口,并将所述内部地址、内部端口和协议类型、以及所分配到的外部地址和外部端口发送给运营商级网络转换CGN设备;CGN设备在本地建立包含有所述内部地址、内部端口、协议类型、外部地址和外部端口的NAT映射条目。相应的,本发明还公开了一种VoIP应用进行NAT穿越的系统,减轻了CGN设备的处理负担,避免拥塞,提高了NAT处理效率,还可以节约成本。
文档编号H04L29/12GK102447751SQ201210010899
公开日2012年5月9日 申请日期2012年1月13日 优先权日2012年1月13日
发明者兰光华, 郑坤 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1