具有NAT的网络中的SIP服务方法 本申请要求了2002年12月27日申请的韩国专利申请号为10-2002-0084994的优先权,在此引入其主要内容作为参考。
【发明背景】
【发明领域】
本发明的实施方案涉及一种在具有网络地址转换(NAT)的网络中的会话启动协议(SIP)服务方法。更具体而言,本发明的实施方案涉及在具有网络地址转换的网络中的一种SIP服务方法,它能通过实时协议(RTP)中继器和NAT地静态映射表来实现SIP服务。
相关背景技术
网络地址转换(NAT)可以作为一种用于解决有关因特网协议(IP)消耗以及大的路由规模的问题的方法。在一个通信网络中,NAT在网络层,也就是OSI模型的第三层,把专用IP地址转换成公共IP地址。NAT使多路专用IP地址转换成有限数量的公共IP地址成为可能,反之亦然,从而使多路用户共享公共IP地址。
NAT将内部访问信息(即,内部IP地址/端口对)映射到外部的或者公共的访问信息(即,外部的或公共的IP地址/端口对)。依据是否为任一和每一个目的地址产生一个新的映射值(即,一个映射值不可以用于另一个地址)或者是否为一个目的地址产生的一个映射值可以被用于另一个目的地址,NAT可能是四种类型中的一种:完整体,受限体,端口受限体和对称(symmetric)。
四种类型的NAT中,前三种可为另一个目的地址使用一为连接某一目的地址而产生的映射值。至于对称的NATs,为某一目的地址产生的映射值不可被用作其它任何一个目的地址。因此,可为各个目的地址产生一个映射值。
SIP是一个可供多媒体数据传输和因特网电话呼叫等使用的标准的协议。SIP可用于初始化、修改和终止一个包括一个或多个参与者的会话。另一方面,一个会话描述协议(SDP)可用于在相关会话中为多媒体服务通信描述会话信息。
图1是解释一个在呼叫建立完成之前实现的信号处理过程和一个媒介流过程,其中,在通过NAT提供SIP服务的情况下连接呼叫和发送RTP数据。
图1中,代理(X’,Y’)(130,230)安装于NATs的外部(120,220)。如果相关域(域A,域B)的用户代理商(X,Y)(110,210)发出SIP请求,代理(130,230)决定这样的呼叫请求应该发送到哪一个目的。代理(130,230)可能也修改相关的报头和前述的行为。
图1中,用户代理商X(SIP UA X,110)属于域A(域A,100),用户代理商Y(SIP UA Y,120)属于域B(域B,200)。如果用户代理商X(110)向属于不同域的用户代理商Y(120)发出一个呼叫请求,那么信号处理过程就会如下进行。
首先,如果用户代理商X(110)经由NAT(120)向代理X’(SIP代理X’)(130)发送一个呼叫请求,代理X’(SIP代理X’)(130)通过把转接报头参数(接收的,报告)加到SIP报文中从而发出一个呼叫请求。在发信号的步骤中,为了促进NAT流通,从一个请求报文(用于初始的呼叫请求)到一个结束报文(用于最后的呼叫结束)的所有SIP报文必须通过那些代理。因此,要用到代理需求和记录路由报头。
另一方面,通过相关的NAT220从代理Y’(代理Y’)(230)到用户代理商Y(210)的呼叫请求的传输以及此外的一个响应的接收,均是由用户代理商Y(210)以代理Y,(230)注册的方式解决的。如果代理Y’(230)和用户代理商Y(210)一直是连接的或处于UDP情况,那么NAT的问题可以采用如下方式解决:一种信号脉冲方法,转换报头,无效报头,以及与转接报头的参数一起的选项要求,等。这时,代理Y’(230)存储转接报头的参数(接收,报告),该参数是在报文接头域中的注册期间而不是信息期间获得的。以此方式,NAT中的用户代理商Y(210)通过使用存储的信息可能被又一次的连接以用于将来的传输。
这种连接方式下,由于NAT的一个UDP绑定的有效期通常是大约1分钟,用户代理商Y(210)必须以小于1分钟的时间间隔不断的发送注册报文来保持激活NAT UDP绑定。
一旦SIP信号结束,用户代理商X(110)和用户代理商Y(210)之间借助于相互传输RTP数据来通信,从而媒介流通过NAT。
为了与用户代理商Y(210)通信,用户代理商X(110)包括接收一个SDP报文中的媒介流所需要的信息,该SDP报文是在SIP报文本体中包含的(即,包括IP地址,端口和媒介数据,等。在域中m=(媒介)及c=(连接))。用户代理商X(110)发送这个报文。因此,可以利用不同的方法。如果NAT是完整体类型,受限体类型或端口受限体类型,则,使用了由微软提议的一通用插件和播放(UPnP)和某一具体服务器(NAT探测器或STUN服务器)等的一个外部查询和STUN(通过NATs的UDP的简单遍历)协议将被利用。
根据该方法,相关的终端可以直接向NAT请求NAT的外部访问信息(外部IP:端口),该外部访问信息在信号或相关终端向其它服务器(NAT探测器或STUN服务器)请求提供信息之前映射到NAT的内部访问信息(内部IP:端口)。接着,终端包括在SDP的m=(媒介)和c=(连接)域中的NAT的外部IP和端口信息(外部IP:端口)并且发送这个信息。以这种方式可以解决媒介流的NAT问题。
然而,上述方法(即,使用NAT探测器或STUN服务器的方法)只能适用于NATs的三种类型。对称的NAT情况下,外部用户代理商(210)只有从用户代理商X(110)接收到大量的RTP数据后才可能识别出相关访问信息(IP:端口)(NAT绑定)。因此,外部用户代理商必须一直等到它接收到RTP数据。这就是所谓的“连接定向媒介”。
这时,内部用户代理商包括SDP报文中的a=方向:激活行(零或更多的媒介属性)并且发送这个信息。因此,外部代理商忽略SDP报文中的访问信息(IP:端口)。
上述在具有NAT的网络中的SIP服务方法可能有如下问题。首先,为了与信号连接,在SIP标准文件RFC2543中,没有把转接报头参数的报告定义成一个必要的应用项目。因此,大部分的代理不能使用报告来解决NTP问题,这是因为即使报告包括在SIP报文中他们也会忽略报告。
更进一步,即使通过RFC3261的TCP连接是RFC2543中建议的,UDP也是缺省值并且TCP支持不是一个必要的条件。这样,许多SIP终端可能不支持TCP。因此,为了用UDP提供服务,NAT UDP绑定需要连续地被激活以使代理与NAT中的终端连接。为了这个目的,终端必须在接下来的通用存活期结束之前连续的发送注册报文。从而,这些方法在网络中产生了大量的数据流并且使得网络负载很重。
此外,上面提到的信号脉冲方法和转换报头等不是RFC2543的必要条件,因此终端不支持这样的方法或报头。
另一方面,出现下列RTP媒介流的问题。在RTP步骤中的问题可能有所不同,这取决于应用的方法或协议。微软建议的通用插件和播放(UPnP)在NATs中不能运行,而且,为了支持插件和播放(UPnP)协议,需要在普通的NATs中应用通用的插件和播放协议。这就需要大量的花费来实现这个目的。
假设在外部查询方法中,用于发送RTP的端口必须与接收RTP的端口相同。而且,在通过连接NAT探测器获得的映射值变成另外的某时段通路上的值之前,必须使用映射值将SIP报文发送到相关的目的地。假设NAT的受限体类型或NAT的端口受限体类型中,在从另外一个组接收媒介数据之前,相关媒介路径必须通过发送媒介数据来激活。此外,假设在对称的NAT中,每一个目的地址的映射值是不同的。这样,通过连接NAT探测器或STUN服务器获得的映射值不能被用于连接其它的任意组。因此,上述方法可能不适用。
同样,假设在一个对称的NAT中,如果外部用户代理商不在NAT中,那么外部用户代理商必须支持a=方向:有效接头。然而,这不是RFC2543中必须应用的必要条件,并且许多终端不支持这个特点。而且,如果外部用户代理商在对称的NAT中,那么一个叫做RTP中继器的具体组件必须被插入到两个用户代理商之间的RTP流量的中间。
发明概述
本发明的目标是至少解决上述问题和/或缺点以及至少提供以下所述的优点。
本发明的实施方案试图解决下列相关问题:用于NAT通路的先前SIP组件中的软件升级问题,网络流量增加问题,SIP方法或新的NATs报头的补充问题,不同公司的SIP组件的不兼容性以及现有的NATs的升级与替换问题。更进一步,本发明的实施方案试图提供一种可应用到所有类型的NATs中的SIP服务方法。
本发明的实施方案可在具有NAT的网络中提供一种SIP服务方法。这可能包括在一个静态映射表中注册一个在NAT中的代理专用地址/端口以致于可从NAT的外部访问NAT内的代理。如果报文到达NAT的公共IP地址/端口,该NAT的公共IP地址/端口映射到代理专用的IP地址/端口,那么所有的SIP报文可被自动发送到映射到公共地址的代理专用IP地址/端口。如果代理要把报文发送到NAT的外部,就可能要用映射到代理专用IP地址/端口的公共IP地址/端口在NAT建立一个到外部的连接。
如果NAT内的代理要把报文发送到NAT的外部,SIP服务方法可以增加转接报头的参数,包括在相关NAT静态映射表中注册的代理的公共IP地址和端口而不是代理的专用IP地址和端口。接着就可以发送报文了。
本发明的实施方案还可包括:一个第一用户代理商为一个第二用户代理商发送一个SIP请求报文到一个第一代理,第一代理是在和第一用户代理商位于同一域的NAT的静态映射表中注册的。在位于域外部的RTP中继器中,通过第一代理的内部操作可以为媒介处理过程创建和保存多路公共地址/端口对。第一代理可以将SDP报文中的专用访问信息(IP地址/端口对)改变成一个多路公共访问信息值,该SDP报文是从第一用户代理商接收到的。通过一个在另外的NAT中的静态映射表中注册的第二代理,SIP请求报文可被发送到第二用户代理商。通过位于和第二用户代理商相同的NAT中的第二代理,第二用户代理商发送一个对应于请求报文的响应报文给第一代理。基于从第二用户代理商接收到的响应报文,第一代理可在SDP中将专用访问信息值(IP地址/端口对)修改成一个在RTP中继器中创建的剩余的公共访问信息值并且把响应报文发送到第一用户代理商。为了得到NAT绑定值以建立一个语音通信路径,每个用户代理商可向请求报文或响应报文中修改过的公共访问信息值发送具体媒介因此就创建了NAT绑定值。创建的NAT绑定值可被映射到先前在RTP中继器中创建的多路公共访问信息值。这些绑定值被存储起来。基于接收到的响应报文,第一用户代理商为响应报文发送一个确认。然后如此设置的呼叫结束。
设置的呼叫之后,SIP服务方法进一步包括RTP中继器,它能使两个用户代理商相互之间通过公共访问信息和映射的NAT绑定值发送和接收媒介,所述的NAT绑定值是RTP中继器本身具有的。
本发明的其他优点、目的、特性和具体实施例将会在下面的描述中分部地阐明并且分部地对于那些本领域的普通技术人员来说;基于下面的分析是清楚的或可从本发明的实例中得到。
附图简述
下面是附图的简述,其中相同的参考数字表示相同的元件。其中:
图1描述了在具有NAT的网络中的SIP服务的网络结构和根据一个实施例的SIP服务的例子;
图2描述了根据本发明的一个实施例,具有SIP服务方法的一种网络结构;及
图3是一个流程图,描述了根据本发明的一个实施例,在具有NAT的网络中的SIP服务方法。
优选实施例的详细描述
现在参照相应的图来描述在具有NAT的一个网络中的一种SIP服务方法的优选实施例。
因为没有任何的修改就在终端间用SIP协议在IP网络上通信是有难度的,网络工程任务组(IETF)内的不同工作组可能会通过网络草案等提出解决这个问题的方法。
IETF提议了三种方法来解决上述问题。一种是在NAT中包括一个可以识别SIP协议的应用层网关(ALG)。另一种是使用IPv6协议。另外一种是使用中间盒体通信(MIDCOM)来控制NAT。然而,这些提议方法真正要实现需要很长的时间。于是,每个SIP工作组或每个相关的公司可能设计自己的短期方法并且使用该方法在NAT环境中提供SIP服务。
各自的短期方法依靠相关公司使用的协议或NAT支持这个协议。因此,这些方法可以被用于在有关领域中已经使用过的NAT环境中。代替地,可通过更新或替换现有的NATs提供SIP服务。
进一步,RFC2543,也就是SIP的一个标准建议,不会给NAT通路提供足够的标准。因此,为了用上述方法提供服务,依照RFC2543制作的许多代理或代理商可给RFC3261实施一个更新情报,或实施部分的修改,其中,RFC3261是现有的标准。
而且,使用的协议或方法可能因为NAT的类型而有所不同。在这些情况下,本发明提供了一种方法,用于在一个NAT环境中使用SIP代理商或代理提供SIP服务,这些SIP代理商或代理可以在所有的NAT类型中通用并且是依照RFC2543的。本发明的实施例为信号处理使用NAT的一个静态映射表以及为媒介处理使用NAPT功能的RTP中继器。
NATs通过使用静态映射表而不考虑NATs的类型把内部访问信息(内部IP地址:端口对)存储为映射到相关公共访问信息(公共IP地址:端口对)的信息。本发明的实施例通过事先映射代理,存储相关信息以及不用任何修改的使用该信息来提供SIP服务。
在SIP协议中,DNS查询用于查找某一代理。因此,在相关NAT中注册的代理的公共访问信息(公共IP地址:端口)会事先在DNS域名服务器中注册。
本发明的实施例将参照一个对称的NAT类型来解释,这种对称的NAT类型是在大学和公司中应用最广泛的方法。
图2描述了应用本发明实施方案的一种网络结构。更确切的说,图2描述了一种SIP服务方法,用于具有NAT的网络中。图2还描述了一个NAT网络域A(300)中的一个用户代理商UA X(310)和一个NAT网络域B(400)中的一个用户代理商UAY(410)之间的数据交换。
如图2所示,域A(300)和或B(400)分别包括NATs(330,430)。SIP代理(320,420)包括在NATs(330,430)中,用于信号处理。SIP代理X’和Y’(320,420)的专用Ips在各自的NATs(330,430)中的静态映射表(340,440)中注册。在NATs(330,430)的外部提供一个RTP中继器(350)用于在NATs(330,430)间传输媒介数据。
代理(SIP代理X’,SIP代理Y’)(320,420)位于NATs的内部,有效的注册NAT内部用户(310,410)和实施通过NATs的设备的通路。代理(320,420)有用于访问NAT内部用户(310,410)的专用IP地址/端口信息。在图2所示的例子中,域A(300)中的代理(320)有专用IP10.0.0.1,域B(400)中的代理(420)有专用1P20.0.0.1。代理(320,420)发送和接收基于静态映射表(340,440)的信号报文并且创建和重置与RTP中继器(350)有关的IP地址/端口。
为了传输媒介流,代理(320,420)检测接收者UAY(410)是否和UAX(310)属于同一个域,并且决定是否使用RTP中继器(350)。如果确定接收者UAY(410)属于不同的域,代理(320,420)通过专用信号与NATs外部的RTP中继器(350)交换信号。
因此,为了从NAT的外部访问相关的代理,可在NAT的静态映射表中注册NAT内部的代理的专用IP地址/端口。这个时候分配的NAT的专用IP地址/端口可以用于连接到NAT的外部。因此,到达NAT的专用IP地址/端口的所有报文被自动发送到映射到相关公共IP地址的代理的专用IP地址/端口。
此外,如果一个代理向NAT的外部发送报文,用映射到代理的专用IP地址/端口的公共IP地址/端口使NAT连接到外部。优选的,代理在要传送到外部的报文中增加转接报头。要传送的转接报头参数,包括在相关NAT的静态映射表中注册的公共IP地址/端口信息(不是相关代理的专用IP地址/端口信息)。
RTP中继器(350)位于NATs(330,430)的外部,促进NATs(330,430)间的媒介传输并且控制从专用侧到公共侧的媒介流的流量。对于这样的RTP中继器(350),在接收到媒介流之前,在呼叫建立时或在呼叫步骤之前分配IP地址/端口。RTP中继器(350)实施关于源地址/端口和目的地址/端口的NAPT功能。为了实现该目的,NATs(330,430)内部的用户代理商(SIPUAX,SIPUAY)(310,410)有相同的端口用于发送和接收媒介流。
图3根据本发明的一个实施例描述了在具有NATs的网络中的一种用于SIP服务的信号方法。其它的实施例也在本发明的范围之内。图3还描述了从呼叫建立的信号到图2所示网络的媒介流连接过程中的SIP报文的流程图。
用户代理商UA X(310)为用户代理商UAY(410)向代理X’(320)发送SIP请求报文(S301),代理X’(320)是在和用户代理商UA X(310)位于同一个域的NAT的静态映射表中注册的。SDP报文包括专用IP地址/端口(PXA:px)上的信息,而用户代理商UAX(310)要通过该专用IP地址端口接收RTP数据。
基于代理X’(320)接收到请求报文,RTP中继器(350)建立和存储多路公共IP地址/端口对。这是用于要实施的与代理X’(320)相关的媒介处理的访问信息(S303)。创建的访问信息可能是用在用户代理商UAX(310)的内部操作中的地址/端口(A:py*)和用在用户代理商UAY(410)的内部操作中的地址/端口(A:px*)。RTCP也可以建立基于RTP的绑定。这时,RTP中继器(350)不能识别出NATs的地址/端口信息,用户(310,410)将被绑定。
代理X’(320)在从用户代理商UAX(310)接收到的SDP报文中将专用访问信息(IP地址/端口对)修改成一个多路公共IP地址/端口对并且通过代理Y’(420)向用户代理商UAY(410)发送SIP请求报文(S305),其中所述的多路公共IP地址/端口对是由RTP中继器(350)创建的,代理Y’(420)是在其它NAT中的静态映射表中注册的。这时候,SDP报文包括由代理X’(320)修改过的RTP中继器(350)的地址/端口(A:px*)。
用户代理商UA Y(410)通过NAT内部的代理Y’(420)向代理X’(320)发送一个响应报文(200 OK)来对请求报文作出响应,这里的NAT就是用户代理商UA Y(410)本身所属的NAT。这时,SDP报文包括专用IP地址/端口(PYA:py),用户代理商UAY(410)要通过该专用IP地址/端口接收数据。
当代理X’(320)接收到用户代理商UAY(410)的响应报文(200 OK)时,用预先由RTP中继器(350)建立的公共IP地址:端口对中剩余的一个(A:py*)对SDP报文中的专用访问信息(IP地址:端口对)进行修改并且将其发送到用户代理商UAX(310)(S309)。
用户代理商UAX(310)接收到响应报文后(S309),为了获得NAT绑定值以用于建立语音通信路径,每个用户代理商(310,410)通过向修改过的公共访问信息值发送某个媒介来创建NAT绑定值,该公共访问信息值是在请求报文或响应报文中的SDP报文内的。RTP中继器(350)将以这种方式创建的NAT绑定值映射到先前创建的多路公共值并且这些值被存储起来(S311,S313)。
换言之,用户代理商UAX(310)一接收到响应报文(200 OK)就立刻(或充分的立刻)向RTP中继器(350)发送媒介(如,背景噪音)(S311)。当第一个RTP包被发送到RTP中继器(350)时,RTP中继器(350)存储在RTP包通过NAT期间建立的NAT源地址/端口(NX:px‘)。然后,假设这个地址/端口值是用于到用户代理商UAX(310)的媒介传输的外部代表值,RTP中继器(350)就将来自用户代理商UA Y(410)的所有RTP数据都传送到这个地址/端口(NX:px‘)。
用户代理商UAY(410)在传送响应报文(200 OK)后也立刻(或充分的立刻)传送媒介(S313)。RTP中继器(350)存储NAT源地址/端口(NY:py‘)并且将来自用户代理商UAX(310)的所有RTP数据都传送到这个地址/端口(NY:py‘)。
因此,用户代理商UAX(310)为响应报文发送一个确认(ACK)(S315)然后呼叫建立结束。
接下来,通过使用公共访问信息和RTP中继器(350)所拥有的映射的NAT绑定值,在两个用户代理商(310,410)之间进行媒介传输和接收(S317)。
一旦建立起通过NATs(330,430)的媒介路径,即使相关用户没有行为(如,即使没有语音包传输),有效报文也会为已建立的绑定的连续激活而定期的被发送出去。
如果用户代理商UAX(310)发送一个结束报文来结束呼叫(S319),代理X‘(320)把这个结束报文发送给RTP中继器(350)并且在这个RTP中继器中创建的所有相关呼叫的映射绑定值都被删除(删除端口绑定)(S321)。
此外,另一方面,代理X‘(320)把这个结束报文发送给代理Y‘(420),相应的通知用户代理商UAY(410)。一旦从用户代理商UAY(410),经过代理Y‘和代理X‘,到用户代理商UAX(310)发送一个响应于这个结束报文的响应报文(200 OK),媒介可能不会再被传送了。
如上所述,根据本发明,用SIP组件和NATs以及借助于包括一个NAPT功能的RTP中继器来提供SIP方法,其中的NATs不用通过NAT的静态映射表修改或置换。SIP方法可以应用于所有类型的NAT。
前述的实施例和优点仅仅是作为举例,不用于限制本发明。本发明所教导的内容可以容易的应用到其它类型的装置中。本发明的描述只是例证式的,不是用来限制权利要求的范围。对于本领域的技术人员来说多种选择,修改,和变化是显而易见的。