专利名称:通过临时使用tcp传输协议实现sip信令消息的地址转换设备穿越的方法
技术领域:
本发明涉及通信网络。更确切地,它涉及通过地址转换设备发送信令 消息的问题,例如NAT (网络地址转换)设备。
背景技术:
目前的通信网络能够通过信令协议建立通信^",例如H.323、 MGCP (媒体网关控制协议)或SIP ( M初始协议)和SDP ( M描迷协议)。 SIP协议由IETF (因特网工程任务组)发布的RFC3261定义,它的 两个目的是
-允许两方开始联系,
-通过SDP协议,实现待建立会话的特性的协商(视频比特率,使用 哪种编码器CODEC等)。
会话特性的协商由RFC 3264规定,其题目为"SDP offer/answer model"。
希望呼叫另一方的主叫方可能发送信令消息("Invite")至信令单单 元,其称为"代理",该消息中包括其个人地址、其终端(或更一般而言 的客户端)的物理地址以及被叫方的个人地址。信令单元具有用于使被叫 方的个人地址与对应终端的物理地址相匹配的装置("寄存器")。该匹 配允许信令消息净皮路由到被叫方。
如果该方接受呼叫,则该方响应以新的信令消息,该消息包括终端或 客户端的物理地址。以这种方式,由于双方终端知道对方的物理地址,它 们可建立用于传输数据(语音、视频等)的IP (因特网协议)连接。然而,称为NAT (网络地址转换)或NAPT (网络地址端口转换)设 备的地址转换设备出现了问题,这两种设备分别定义在RFC1631: "The IP Network Address Translator",和RFC 3022 "Traditional IP Network Address Translator (Traditional NAT),,中 这些设备被设计成使第一 网络(典型地是专用网络)和第二网络(例如公用因特网)相连。
第一网络的设备(终端)具有物理IP地址,它的有效性局限于所述第 一网络。当它们希望与位于第一网络外的设备建立通信时,地址转换设备 为它们分配一个临时的第二地址,该地址对于第二网络有效,并且保存客 户端的第 一和第二地址之间的关联。
NAT地址转换i殳备因而通过以下操作即时地j奮改两个通信网络之间 所传输的消息
-在外出消息的IP报头中将终端的第 一地址转换成第二地址,所述外 出消息即那些从笫 一 网络发送到公共第二网络的消息,并且
-在ii^消息的IP报头中将终端的第二地址转换成第 一地址,所述进 入消息即那些从第二网络发送到第 一 网络的消息。
因此,地址转换设备,即NAT设备,处理用于匹配第一和第二地址 的表。这些匹配是临时的,并且当连接或会话终止时被删除。这些关联或 匹配传统上称作"绑定"。
因此,当SIP/SDP信令消息(或IL323或其它的消息)穿越地址转换 设备时会出现问题。该问题称作"NAT穿越,,。
它也在/>开的百科全书"Wikipedia "中#皮描述,地址为 http:〃en.wikipedia.or2/wiki/NAT traversal.html , 并且在IETF发布的 RFC3235中提到,题目是"Network Address Translation (NAT)-Friendly Application Design Guidelines"。
信令协议,例如SIP和SDP,被认为是应用协议。SIP/SDP协议例如 可以通过TCP或UDP协议被传输,TCP或UDP协议本身位于协议栈的 IP之上。SIP消息因此实际上是封装在TCP或UDP消息中的一系列参数, TCP或UDP消息本身封装在IP消息中。NAT地址转换设备仅编辑在IP层中发现的参数,这保持在更高层中 发现的参数完整无损。
换句话说,不像IP报头中包含的地址那样,包含在SIP和SDP消息 中的物理地址不被地址转换设备编辑。
结果,信令消息的接收方(被叫客户端)仅仅知道主叫客户端的第一 地址。然而,由于这个地址仅仅在第一网络中是有意义的,因此不能建立 通信会话。
由于这个问题是众所周知的,已经提出了许多的解决方案来解决它。 有两种主要的方法用于解决该问题基于主叫客户端的方法,以l基于通 信网络的服务器或i殳备的方法。
第一种方法特别地包括在RFC 3489中描述的STUN ( "NAT的UDP 筒单穿越")机制。该机制允许客户端(或终端)知道它的第二地址。以 这种方式,在消息净皮发送到笫二通信网络(例如z^共网络)之前,主叫客 户端发送请求至位于该第二网络中的STUN服务器。该网络用包含地址(和 端口)的消息进行答复,即它的第二地址,通过该消息它"看到"该客户
客户端能随后使用这个第二地址来通过SDP协议指示它希望使用哪 个地址来接收答复。
然而,该解决方案相当受限,因为许多NAT设备被认为是"对称的", 并且将第二地址绑定到双方上。另外,NAT设备分配给客户端的第二地址 对于与STUN服务器的通信以及对于要与另一方建立的会话而言可能是不 同的。在类似的情况下,客户端和另一方之间的通信不能^Jt立。
基于相同原理的其他提议已经被提出以改进该情形,例如TURN("通 过中继方式穿越NAT,,)机制。TURN机制的规范在可从以下网址获得 http:〃ietfreport.isoc.org/idref/draft-rosenberg-midcom画turn/。
然而,STUN机制和TURN机制均不适合于SIP协议。
另夕卜,新的机制ICE("互动式连接建立","Interactive Connectivity Establishment")已被提出以使得SIP信令消息适于穿越。它通过适配STUN和TURN才几制而基于这两个才几制。 ICE机制的规范可以在以下网址获得 http:〃ietfreport.isoc.org/idref/draft-ietf-mmusic-ice/。 第二种解决方案依靠通信网络中的设备。应当指出,最早的解决方案
实现了网络中的服务器(例如STUN服务器),但是客户端具有主动性。
然而,在这个第二类的解决方案中,NAT穿越解决方案的主动性和实现都
依赖于网络设备。
例如,属于该类的第一解决方案是将应用网关绑定到NAT地址转换 设备。这种机制称为ALG,"应用层网关"或"应用级网关",其在1999 年8月发布的RFC2663的第2.9段中被定义,题目"IP Network Address Translator (NAT) Terminology and Considerations"。
这个网关(或者具有这种网关的相同功能的NAT i殳备)具有用于理 解消息使用的应用协议的装置。特别地,它可以理解信令消息的内容,并 转换包含在SDP消息中的物理地址,以便于双方可以交换它们的第二地址 而不是它们的第一地址,并可因此建立通信会话。
该解决方案的一种变型包括使用会话控制器,或SBC ("会话边界 控制器"),它位于信令消息的路径上。这种产品使之能够控制两个网络 之间的通信会话和信令消息的传输。更确切地,SBC可以用作SIP "代理" 信令单元,其能够通过例如Megaco的协议来控制发送媒体的手段("媒 体代理"),以使得通信可以在双方之间被适当地建立。
然而这产生了另一个技术问题,因为NAT地址转换设备在连接或会 话终止后不保存第一和第二地址之间的绑定。
SIP信令消息可以由TCP (传输控制协议)或UDP (用户数据协议) 协议传输。TCP协议保存开放的连接,直到采取行动终止会话。另外,如 果使用TCP的SIP会话被使用,则NAT地址转换设备将保存绑定直到TCP 连接终止。
然而,对于UDP协议,没有连接被建立。另外,NAT地址转换设备 仅仅临时保存绑定,即直到预定时间段终止。因此,使用UDP协议来传输SIP信号对于NAT地址转换设备穿越而 言出现了严重的问题。
然而,使用TCP协议同样出现问题,因为它需要不同的参与者保存开 方的连接。在这种情况下,服务器或代理必须保持存储与正与它通信的SIP 终端或客户端一样多的开放连接。
由于每个TCP连接代表大量的上下文数据,这对于SIP代理是相当大 的负担。通信网络的设计者同样可能发现他面对着非常切实的难题,例如, 诸如Linux这样的操作系统能够处理(65536个同时发生的连接)的TCP 连接的最大限制。
另外,SIP结构的大部分目前是基于UDP传输协议的。
为了补救第一和第二地址之间的绑定的临属性,信令消息在双方之间 周期性地传输,仅仅是为了保持绑定激活。
这些信令消息通常是SIP协议的"Register (注册)"消息,其包括 了含有绑定期限值的"Expires (期限)"报头。这个期限周期可以在客户 端和服务器或代理之间协商。例如,在第一个"Register"消息中,客户端 指示第一值。服务器或代理答复以在"Expires"报头中包含第二值的"200 OK"消息。根据标准,客户端必须随后使用该第二值作为期限周期即它 将以该第二值限定的固定间隔发送"Register"消息。
这种方法称为"UDP打洞(UDP Hole Punching ),,。
然而,TCP协议具有一些优点,这使得它对于某些应用是必要的。
例如,当一个消息的大小很大时,UDP协议将它拆分成较小的数据报, 这将导致分裂问题。阈值取决于通信网络,并且由它的最大传输单元(或 MTU)来确定。该阈值对于以太网是1300字节。
如同RFC3261的第18.1.1.段中解释的那样, 一旦SIP消息超过了对 应于该阈值减去200字节的緩冲值的大小,就不能再使用UDP协议。在这 种情况下必须使用TCP协议(或另一个能够控制拥塞的协议)。
因此,使用UDP协议或TCP协议都不令人满意,需要一种解决方案 补救由这两种已知解决方案引起的问题。本发明的目的是提出这样的技术方案。
发明内容
为此,本发明的第一目的是一种用于在位于第一通信网络中的第一通 信客户端和第二通信客户端之间借助于位于第二通信网络中的信令服务器 来建立通信会话的方法,所述第二通信网络不同于所述第 一 网络并且通过 地址转换设备与该第 一 网络连接。
该方法包括这样的步骤通过使得所述第一通信客户端发送注册消息 至通信服务器而在所述地址转换i殳备中绑定该第 一通信客户端的第 一地址 和第二地址。
该方法的特征在于,所述信令服务器
-保存发送自所述第二通信客户端且去往所述第一通信客户端的ii^ 信令消息,
-用请求所迷第一通信客户端使用TCP协议发送新注册消息的答复
消息来响应所述注册消息,以及
-在已经接收新注册消息后递送之前已被保存的所述ii^信令消息。 所述第一通信网络例如可以是专用网络,而所述第二通信网络是公共
通信网络。
所述注册消息和所述答复消息可由UDP协议承载。
在本发明的一个实施例中,所述信令服务器请求使用TCP协议发送新 的注册消息,即发送"302 Moved Temporarily"消息。
这个"302临时性转移"消息包括了含有设为"TCP"的"Transport" 参数的"Contact"报头。
最终,在本发明的一个实施例中,所迷信令消息可以是根据SIP协议
的初始消息,其是从包含SIP信令消息"Invite" 、 "Subscribe" 、 "Publish"、
"Refer"和"Message"的一个组中被选出的。
本发明的另一个目的是一种信令服务器,包括
-第一接口,用于与至少一个位于第一通信网络中的通信客户端交换信令消息,所述第 一通信网络不同于信令服务器位于其中的第二通信网 络,,并且通过地址转换设备连接到所述服务器,以及
-第二接口,用于与位于第二通信网络中的其他设^送信令消息。 所述第 一接口被设计为接收注册消息,该注册消息发送自通信客户端 并且用于维持所述地址转换设备中的所述通信客户端的第一地址和第二地 址之间的绑定。
所述通信服务器的特征在于
-还包括存储器,用于存储从所述第二接口发送给所述通信客户端的 i^Vft令消息,以及
-所述笫 一接口被设计成在进入信令消息到达之后,用请求所述通信 客户端使用TCP协议发送新注册消息的答复消息来响应注册消息,然后在 接收这个新注册消息后递送之前已被保存的所述ii^信令消息。
最后,本发明的第三目的是一种IMS ( "IP多媒体子系统")结构, 其包括至少一个实现这种通信服务器的CSCF ("呼叫会话控制功能") 功能单元。
以这种方式,TCP连接仅仅在必要时被建立,并且不必为每个通信会 话同时保持一个TCP连接激活。因此,TCP连接过多引起的问题不会出 现,但是通过"根据请求"建立TCP连接解决了与UDP协议有关的不足 的问题。
该发明的解决方案的唯一缺点是由于保存进入信令消息直到TCP连 接建立所造成的潜在延时。该延时是由刷新时间确定的。
参考附图,通过阅读下面的描述,本发明、其特征以及其优点将变得 明显。
图l示出了一种结构,其中可以部署本发明的信令服务器; 图2示出了示例性对话,其可以在通信客户端和本发明的信令服务器 之间实施。
具体实施例方式
在图1描述的示例性网络结构中,两个通信客户端C,和C2连接到通
信网络N。通信客户端d属于第 一通信网络N,, &通过地址转换设备NAT, 连接到笫二通信网络N。
通信客户端d具有可在第一通信网络N,中使用的第一地址它可以 使用这个第一地址以与属于这个第一网络的设备(包^i殳备NAT,)通信, 但是不能和外部设备通信。为了和这些外部设备通信,地址转换设备NAT, 将第二地址临时分配给它。
这个地址转换设备NAT,因而维护客户端d的笫一地址和它的第二地 址之间的绑定。来自或发往该客户端d的消息被分析,并且第一地址被转 换成第二地址,反之亦然。
所述第一通信网络例如可以是专用通信网络,而所述第二通信网络可 以是公共网络。
通信客户端d可通过信令服务器S连接到通信客户端C2。该信令服 务器典型地是SIP代理服务器。利用由3GPP或TISPNA标准组织规定的 IMS (IP多媒体子系统)结构,该服务器或代理服务器可以是CSCF (呼 叫会话控制功能)单元。
信令服务器S也可以是SGC (M边界控制器)。
在下面的描述中,仅仅主要地处理客户端C,和信令服务器之间的连
接。客户端C2和服务器S之间的连接因此不详细描述。
为了更好地理解本发明,图1所示的例子代表一个非常简化的实施例。 以这种方式,通信客户端C2属于第三网络N2,其通过第二地址转换设备 NAT2连接到第二通信网络N 。
在实际的部署中,其他的设备可能存在于信令服务器S和通信客户端 C2之间。通信客户端C2可以例如连接到另 一个信令服务器,并且两个信 令服务器可直接通信或通过其他服务器通信。
然而,图1给出的例子使之能够理解本发明而不会脱离其精神,但是同样也不聚焦于本发明中不发挥直接作用的设备。
为了绑定所述第一和第二地址,通信客户端c,发送注册消息至信令服
务器s。这些消息典型地被周期性地发送,这可能是在协商之后。
图2示出了客户端d和信令服务器S之间的交换。每个垂直轴代表网
络单元d、地址转换设备NAT,和信令服务器S。时间随着线向下移动而
增加。水平箭头代表这些单元之间交换的信令消息。
注册消息M,是初始注册消息。它指定了刷新时间的第一值。该第一
值可以很高,例如3600秒。
信令服务器S用答复消息R,响应,该答复消息可包括第二值,例如
30秒。
客户端d可随后使用在答复消息R,中发送的该第二值作为基础。在 缺少第二值时,它使用先前由它自己确定的第一值作为基础。
利用与以这种方式确定的该刷新时间值相对应的间隔△,通信客户端 d发送信令消息M2,M3,M4…至信令服务器S,该信令服务器S用答复消
息R2,R3,R4…来响应。
信令服务器具有接口 I,,该接口被设计为接收这些注册消息并用答复 消息响应。
这些注册消息可以是才艮据SIP协议的"Register"消息。该刷新时间 可以包含在这些消息的"Expire"报头中。答复消息可以是SIP协议的"200 OK"消息,而刷新时间(若有的话)可包含于"Expire"报头中。
所有这些注册消息MhM2,M3,M4…和答复消息R!,R2,R3,R4…由UDP 协议承载。在"Via"报头中,注册消息指定传输协议必须是UDP。
这种Via报头可以是
Via:SIP/2.0/TCP client.a.example.com:5620;braneh-z9hG4bK74bf9。
信令服务器S因而不保持任何TCP连接开放以处理与客户端C,的连接。
在给定的时刻,信令服务器S可接收从第二通信客户端C2发送的信令 消息MI。这可以是根据SIP协议的"initial"信令消息,例如"Invite","Subscribe" , "Publish" , "Refer",或"Message"消息。"Invite"
消息的目的是邀请通信客户端d接受与主叫通信客户端C2建立通信会话。
该通信可能要求使用TCP协议。
这些请求可以是系统的,并且从客户端C2发送的每个邀请可能导致 TCP连接的创建以承栽要建立的会话。
也可以在TCP协议和UDP协议之间进行选择。这个选择可能由这个 进入信令消息MI中的参数来确定。根据SIP协议,这个参数可被插入 "contact"才艮头中。
这种选择还可以由信令服务器S确定,这可能地考虑了插入进入信令 消息MI中的^lt。
假设通信会话要求使用TCP传输协议。
ii^v信令消息由信令服务器S的接口 12接收,并且被临时保存在存储 器M中。在发送答复消息Rn-,之后,信令服务器S等待随后的注册消息 MN。用于处理ii^信令消息MI的等待时间3因此小于刷新时间A。
服务器S用答复消息RN响应注册消息MN,该答复消息请求通信客户 端d使用TCP协议发送新注册消息。
在一个实施例中,这个答复消息可以是根据SIP协议的"302 Moved Temporarily"消息。
这种类型的消息包括"Contact"报头,该报头指定了要联系的主机的 新URI (通用资源标识符)。它还包括指定了联系主机必须使用的传输协 议的参数。
这个参数可以是RFC 3261第20.10节定义的"Transport"参数。 "Contact" ^^头可以例如是
Contact :<sip: bob@192.0.2.4 ;transport=UDP>; expires=60 。
在本发明的上下文中,这不用作地址的真正改变,因此这个报头包含 了信令服务器S的地址。指定传输协议的参数值是"TCP"。
因此,"302 Moved Temporarily"消息类型的使用使之能够传输所需 要的信息而不需要将新消息类型增加到现有SIP协议中。答复消息Rn使得新注册消息Mn+1利用TCP协议而被发送。 这个新注册消息可以在收到答复消息RN后立即,皮发送,即,不必像
以前一样等待刷新时间厶期满。这使之能够减少处理i^v信令消息MI的
等待时间。
注册消息MN+1使得通信客户端Cl和信令服务器之间、通过地址转换 设备NAT!的TCP连接得以开放。
一旦TCP连接已经被建立,信令服务器就能够将信令消息MI传送到 接收通信客户端Q 。然后它可以从信令服务器S的存储器M中被删除。
当通信会话终止时(例如两个通信客户端中的一个挂机),所述信令 服务器可发送终止消息至通信客户端d。
TCP连接因而终止。
通信客户端然后可继续以频率A发送UDP协议承载的注册消息,
以维持在地址转换设备NAT,内的绑定。
如上面描述的,TCP连接满足某些TCP协议应用的需求。
另夕卜,它使得以其他方式不可能实现的ii^信令消息的传输成为可能。
事实上,某些地址转换设备有防火墙功能。它们不能传输来自公网N的消
息,除非它们是从第一网络Ni发送的消息的答复,或作为TCP连接的一部分。
在这种情况下,TCP连接的建立使得通过防火墙NAT!发送邀请消息 MI成为可能。本发明因此解决了这个附加的技术问题。
由于本发明,TCP连接仅仅在通信会话期间是开放的。在其余时间, 即当通信客户端仅仅在等待但是可用于发送以接員请消息时,普通UDP 协议交换使得保持与信令服务器的连接成为可能。
本发明因此为了受益于UDP和TCP协议各自的优点,能够在SIP协 议下优化UDP和TCP协议的使用。
权利要求
1. 一种用于通过位于第二通信网络(N)中的信令服务器(S)、在位于第一通信网络(N1)中的第一通信信客户端(C1)和第二通信客户端(C2)之间建立通信会话的方法,其中所述第二通信网络不同于所述第一通信网络(N1)并且通过地址转换设备(NAT1)连接到该第一通信网络,所述方法包括这样的步骤通过使得所述第一通信客户端发送注册消息至所述通信服务器,在所述地址转换设备中绑定所述第一通信客户端的第一地址和第二地址,其特征在于,所述信令服务器- 保存发送自所述第二通信客户端且去往所述第一通信客户端的进入信令消息,- 用请求所述第一通信客户端使用TCP协议发送新注册消息(MN+1)的答复消息(RN)来响应所述注册消息,以及- 在已接收所述注册消息后递送所述进入信令消息(MI)。
2. ##前一权利要求所述的方法,其中,所述第-"it信网络是专用网络, 而所述笫^ii信网络是公共通信网络。
3. #^权利要求1或2之一所述的方法,其中,所述注册消息和所述答复 消息由UDP协^^。
4. 才娥前i^又矛J^求之一所述的方法,其中,所述信令服务器请求^^TCP 协i5(il送新注册消息,即发送"302 Moved Temporarily"消息。
5. 才娥前一W'J^求所述的方法,其中,所述"302 Moved Temporarily" 消息包括"Contact"报头,该报头包^HU为"TCP"的"Transport"械。
6.,前i^M'J要求之一所述的方法,其中,所述信令消息是才Nt SIP协 议的初始消息,并_0^_从包括"Invite" 、 "Subscribe" 、 "Publish" 、 "Refer" 和"Message"的一个组中选出的。
7. —种信令服务器(S),包括第一接口 (Ij ,用于与位于第一"it信网 络(N!)中的至少一^it信客户端(d)交^H言令消息,所錄""it信网络不同 于所述信令服务,于其中的第二通信网织N ),并ilitiii^止转换设^( NAT,)连接到所述信令服务器,以^4口 (i2),用于与位于所錄^r^t信网络中 的其他设糾送信令消息,所錄一接口被设计为接收注册消息,该注册消息发 送自通信客户端并且用于在所ii^址转换设备中绑定所述通信客户端的第一地 Jtjbfp第ji^iit, ^#;^于,所述信令服务器还包括,器(M)用于>^#^^斤 i^二接口发往所iiii信客户端的iiA信令消息(MI),以;SJ斤^一接口被设 计^所^iiArft令消息之一到达后,它用请求所iiif信^:户端(d M^] TCP 协i5C^送新注册消息(MN+1)的答复消息(RN)来响应所述注册消息,然后在接 j]^斤述新注册消息后递i^斤iiiiA信令消息(MI)。
8. 根据前一权利要求所述的信令服务器,其中,所述第^ii信网络是专用网络,而f斤^^^"i^f言网^"A/〉共it信网络。
9. ##似']^求7或8之一所述的信令服务器,其中,所述注册消息和所 述^^复消息由UDP协"R^。
10. 才N^权矛J^求7至9之一所述的信令服务器,其中,所錄一接口被设 计为请求使用TCP协i^L送新注册消息,即发送"302 Moved Temporarily"消
11. 根据前一权利要求所述的信令服务器,其中,所述"302 Moved Temporarily"消息包括"Contact"报头,该报头包^i^为"TCP"的"Transport"
12. ##权利要求7至9之一所述的信令服务器,其中,所述信令消息是根 据SIP协议的初始消息,并ib^从包括"Invite" 、 "Subscribe" 、 "Publish"、"Refer"和"Message"的一个组中选出的。
13. —种IMS结构,包括实则^t^,J^求7至12之一的服务器的至少一 个CSCF功f傳元。
全文摘要
一种用于通过位于第二网络(N)中的信令服务器(S)在位于第一网络(N<sub>1</sub>)中的第一客户端(C<sub>1</sub>)和第二客户(C<sub>2</sub>)之间建立通信会话的方法,包括这样的步骤通过使得所述第一客户端发送注册信令消息,在地址转换设备中将该第一客户端的第一地址和第二地址绑定到一起。所述服务器保存发送自所述第二客户端的进入信令消息;用请求使用TCP协议发送新注册消息(M<sub>N+1</sub>)的答复消息(R<sub>N</sub>)来响应所述注册消息;以及在新注册消息已被接收之后递送所述进入信令消息(MI)。
文档编号H04L29/06GK101414950SQ20081017782
公开日2009年4月22日 申请日期2008年10月20日 优先权日2007年10月19日
发明者M·拉扎尔, T·弗罗门特 申请人:阿尔卡特朗讯公司