基于sip媒体能力重协商的nat穿越方法、代理服务器和系统的制作方法
【专利摘要】本发明公开了一种基于SIP媒体能力重协商的NAT穿越方法、代理服务器和系统,第一终端和第二终端中的至少一个位于私网,代理服务器位于公网,该方法包括:代理服务器分别接收来自第一终端和第二终端的媒体码流,并获取第一终端和第二终端的公网地址和公网端口号;代理服务器发起媒体能力重协商,将获取的第一终端的公网地址和公网端口号通知给第二终端,将获取的第二终端的公网地址和公网端口号通知给第一终端。
【专利说明】基于SIP媒体能力重协商的NAT穿越方法、代理服务器和系
统【技术领域】
[0001]本发明涉及NAT穿越【技术领域】,特别是指一种基于SIP媒体能力重协商的NAT穿越方法、代理服务器和系统。
【背景技术】
[0002]现有的SIP (Session Initiation Protocol,会话启动协议)穿越 NAT (NetworkAddress Translation,网络地址转换)技术,主要基于以下的思路:SIP信令通道通过终端的注册请求打穿NAT,后续通过注册刷新维持信令通道。终端发送的后续所有信令消息共用注册通道传送,而服务器则沿着注册通道的反向路径传送消息。媒体码流也采用类似技术,首先是终端向服务器发送RTP (Real-time Transport Protocol,实时传输协议)包,NAT将会给此RTP流打开一个端口,然后服务器将沿着此RTP流的方向路径发送RTP包。
[0003]目前,NAT穿越技术的方案有以下几种:
[0004]KSTUN(Simple Traversal of UDP over NATs,NAT 的 UDP 简单穿越)协议,终端与STUN服务器进行交互,从而确定NAT分配给它们的公网地址和端口号;
[0005]2、TURN (Traversal Using Relay NAT)协议,是一种通过中继方式穿越NAT的方式,私网终端发出的报文都要经过TURN服务器进行中继转发;
[0006]3、ICE (Interactive Connectivity Establishment,互动式连接建立),是一个综合解决方案,它通过连接性测试来选取传输通道,它所提供的是一种框架,使各种NAT穿透技术可以实现统一;
[0007]4、SBC(Session Border Controller,会话边缘控制器)是一种比较完善的解决方案,它对原有网络没有任何要求,不需要终端做任何改造,终端的信令、媒体码流都需要经过SBC进行媒体转发。
[0008]上述方案存在以下几点不足:
[0009]1、需要对现有网络进行改造,根据上述不同的NAT穿越技术,终端必须要支持STUN,TURN或ICE协议,并且要部署穿越服务器(与一般的NAT设备不同,需要独立部署),它实现了 STUN或TURN服务器或SBC功能,代价较高。
[0010]2、需要穿越服务器进行媒体码流中转,无法在终端之间建立直连的媒体码流。
【发明内容】
[0011]有鉴于此,本发明实施例的主要目的在于提供一种基于SIP媒体能力重协商的NAT穿越方法、代理服务器和系统,以解决现有适用SIP的NAT穿越技术方案中存在的需要部署代价较高的穿越服务器以及无法在终端之间建立直连的媒体码流的问题。
[0012]为达到上述目的,本发明的技术方案是这样实现的:
[0013]本发明实施例提供了一种基于SIP媒体能力重协商的NAT穿越方法,第一终端和第二终端中的至少一个位于私网,代理服务器位于公网,该方法包括:[0014]所述代理服务器分别接收来自第一终端和第二终端的媒体码流,并获取所述第一终端和第二终端的公网地址和公网端口号;
[0015]所述代理服务器发起媒体能力重协商,将获取的所述第一终端的公网地址和公网端口号通知给所述第二终端,将获取的所述第二终端的公网地址和公网端口号通知给所述
第一终端。
[0016]本发明实施例还提供了 一种代理服务器,所述代理服务器位于公网,包括:
[0017]获取模块,用于分别接收来自第一终端和第二终端的媒体码流,并获取第一终端和第二终端的公网地址和公网端口号;所述第一终端和第二终端中的至少一个位于私网;
[0018]媒体能力重协商模块,用于发起媒体能力重协商,将获取的所述第一终端的公网地址和公网端口号通知给所述第二终端,将获取的所述第二终端的公网地址和公网端口号通知给所述第一终端。
[0019]本发明实施例还提供了一种基于SIP媒体能力重协商的NAT穿越系统,包括上述的代理服务器、第一终端和第二终端,其中:
[0020]所述代理服务器,用于分别接收来自第一终端和第二终端的媒体码流,并获取所述第一终端和第二终端的公网地址和公网端口号;还用于发起媒体能力重协商,将获取的所述第一终端的公网地址和公网端口号通知给所述第二终端,将获取的所述第二终端的公网地址和公网端口号通知给所述第一终端;
[0021]所述第一终端,用于向所述第二终端的公网地址和公网端口号发送媒体码流;
[0022]所述第二终端,用于向所述第一终端的公网地址和公网端口号发送媒体码流。
[0023]本发明实施例还提供了一种基于SIP媒体能力重协商的NAT穿越装置,该装置包括硬件处理服务器,其中:
[0024]所述硬件处理服务器,用于分别接收来自第一终端和第二终端的媒体码流,并获取所述第一终端和第二终端的公网地址和公网端口号;还用于发起媒体能力重协商,将获取的所述第一终端的公网地址和公网端口号通知给所述第二终端,将获取的所述第二终端的公网地址和公网端口号通知给所述第一终端。
[0025]本发明上述基于SIP媒体能力重协商的NAT穿越方法、代理服务器和系统中:第一终端和第二终端中的至少一个位于私网,代理服务器位于公网;代理服务器分别接收来自第一终端和第二终端的媒体码流,并获取第一终端和第二终端的公网地址和公网端口号;代理服务器发起媒体能力重协商,将获取的第一终端的公网地址和公网端口号通知给第二终端,将获取的第二终端的公网地址和公网端口号通知给第一终端。之后,第一终端和第二终端可以基于对方的公网地址和公网端口号直接进行通信,无需代理服务器的转发;另外,上述技术方案的实现是基于现有的网络架构,无需对其进行改进,也无需设置专门的穿越服务器就实现了终端间的直接通信,节约了成本。
【专利附图】
【附图说明】
[0026]图1为本发明实施例提供的基于SIP媒体能力重协商的NAT穿越过程示意图;
[0027]图2为本发明实施一的媒体能力协商示意图;
[0028]图3为本发明实施一的代理服务器接收媒体码流示意图;
[0029]图4为本发明实施例一的媒体能力重协商示意图;[0030]图5为本发明实施二的媒体能力协商示意图;
[0031]图6为本发明实施二的代理服务器接收媒体码流示意图;
[0032]图7为本发明实施例二的媒体能力重协商示意图;
[0033]图8为本发明实施例提供的代理服务器的结构示意图;
[0034]图9为本发明实施例提供的基于SIP媒体能力重协商的NAT穿越系统不意图。
【具体实施方式】
[0035]下面结合附图和具体实施例对本发明的技术方案进一步详细阐述。
[0036]在SIP会议电视的实际应用场景中,都会要求开放一定范围的媒体端口号,所以终端、MCU设备绝大部分都是处于完全锥形NAT (Full Cone NAT)中,也就是同一个媒体私网地址和媒体私网端口号发送过来的请求都会被映射到同一个媒体公网地址和媒体公网端口号,并且任何一个公网设备都可以通过这个映射的媒体公网地址和媒体公网端口号向这台私网设备发包。另外终端的媒体码流收发端口是相同的,即在同一个端口进行收发。如后续无特殊说明,本发明实施例所涉及的地址及端口(私网、公网)均为媒体码流收发地址和端口。
[0037]基于这些特点,可以采用媒体能力重协商的方式通知终端设备,告知其对端的媒体码流收发地址及端口号,只要终端在进行媒体能力重协商时不改变本端的媒体码流收发端口,就可以实现媒体码流的NAT穿越。大致过程为:代理服务器(该代理服务器为SIP会议系统中的必备网元,负责终端的注册、信令的转发等功能,其本身不具备NAT穿越功能)通过接收第一终端发送的第一个媒体码流数据包学习到该终端的公网地址和公网端口号,然后,在对应的呼叫会话上代理服务器向对端终端(第二终端)发起媒体能力重协商(reinvite 消息或 update 消息),对应的 SDP (Session Description Protocol,会话描述协议)信息中携带第一终端的公网地址和公网端口号;同样的方式,代理服务器收到第二终端的第一个媒体码流数据包后,也向第一终端发起媒体能力重协商,对应的SDP信息中携带第二终端的公网地址和公网端口号,如此媒体能力重协商完成。之后,第一、第二叫终端可以直接通过对方的公网地址和公网端口号发送媒体码流,无需经过代理服务器的转发,实现了终端之间媒体码流的直接传输,大大提高了效率;并且上述过程基于现有的网络架构,无需部署专门的穿越服务器,节省了成本。
[0038]为了在不对现有网络设备进行改造的前提下实现媒体码流的NAT穿越,以及不经过穿越服务器的媒体中转、直接在主被叫终端之间建立媒体码流,减轻穿越服务器的负载,降低数据传输的延时,提高数据传输效率,本发明实施例提出了一种基于SIP媒体能力重协商的NAT穿越方案,在该方案中:第一终端和第二终端中的至少一个位于私网,代理服务器位于公网,如图1所示,详细的实现过程包括:
[0039]步骤101,代理服务器分别接收来自第一终端和第二终端的媒体码流,并获取第一终端和第二终端的公网地址和公网端口号。
[0040]在媒体能力协商过程中,代理服务器分别为第一终端和第二终端分配端口号,并将为第一终端分配的端口号通知给第二终端,将为第二终端分配的端口号通知给第一终端;
[0041]代理服务器在为第二终端分配的端口号监听、并接收来自第一终端的媒体码流;在为第一终端分配的端口号监听、并接收来自第二终端的媒体码流;
[0042]代理服务器从来自第一终端或第二终端的媒体码流中提取并记录第一终端或第二终端的公网地址和公网端口号(这里的媒体码流为第一终端和第二终端向代理服务器发送的第一个媒体码流)具体的:
[0043]第一终端或第二终端位于私网时,第一终端或第二终端的公网地址和公网端口号是由对应的私网地址和私网端口号转换得到的,具体的:在NAT设备截获到第一终端或第二终端发送给代理服务器的媒体码流时,将其中的源地址和源端口号(即私网地址和私网端口号)转换为公网地址和公网端口号;
[0044]第一终端或第二终端位于公网时,对应的媒体码流的源地址和源端口号即为第一终端或第二终端的公网地址和公网端口号。
[0045]优选地,代理服务器建立第一终端的公网地址、公网端口号与第二终端的公网地址、公网端口号的映射关系。
[0046]上述媒体能力协商过程包括:代理服务器接收来自第一终端的请求消息,为第一终端分配端口号,并将请求消息转发给第二终端;转发给第二终端的请求消息中携带代理服务器的公网地址和为第一终端分配的端口号;代理服务器接收来自第二终端的响应消息,为第二终端分配端口号,并将响应消息转发给第一终端;转发给第一终端的响应消息中携带代理服务器的公网地址和为第二终端分配的端口号。
[0047]步骤102,代理服务器发起媒体能力重协商,将获取的第一终端的公网地址和公网端口号通知给第二终端,将获取的第二终端的公网地址和公网端口号通知给第一终端。
[0048]本发明实施例中,代理服务器通过请求消息分别向第一终端和第二终端发起媒体能力重协商;发送给第一终端的请求消息中携带第二终端的公网地址和公网端口号;发送给第二终端的请求消息中携带第一终端的公网地址和公网端口号。
[0049]下面以两个场景中的终端点对点呼叫为例,来进一步说明上述技术方案。
[0050]场景一:终端A位于完全锥形NAT,终端B与Proxy (代理服务器)位于公网中。
[0051]在该场景下,终端A和B之间直接的媒体码流传输的实现过程包括如下几个阶段:1、终端间媒体能力协商;2、代理服务器接收媒体码流;3终端间媒体能力重协商。
[0052]如图2所示为终端间媒体能力协商过程,包括:
[0053](I)终端A发起请求呼叫(例如该请求消息可以是Invite消息),SDP信息中携带本地媒体能力。本发明实施例所关注的SDP信息中描述媒体能力的信息有:c行、m行。其中,c行携带的是连接信息;m行携带的是媒体名称和传输地址。在本步骤中,c行携带终端A的本地地址(这里为终端A的私网地址),m行携带终端A各类型媒体码流(例如音频、视频、图片等)的本地端口号(这里为终端A的私网端口号)。
[0054]Invite消息经过NAT设备到达Proxy,由于媒体码流还未建立,Proxy无法获取到终端A的公网地址及公网端口号,为了让来自终端A的媒体码流经过Proxy,Proxy为终端A分配新的端口号,然后Proxy需将Invite消息转发给终端B:由于终端B和Proxy同位于公网中,则在注册阶段Proxy已经知道了终端B的地址和端口号(这里是指信令地址和端口号,与媒体收发地址和端口号不同),所以Proxy可以直接将来自终端A的Invite消息转发给终端B。转发给终端B的Invite消息中SDP信息c行携带地址被换成Proxy的公网地址,m行携带的端口号被替换为Proxy为终端A分配的新的端口号。[0055](2)终端B收到Proxy转发的Invite消息后,向Proxy返回响应消息(例如200OK消息),该消息中SDP信息c行携带终端B的本地地址(这里为公网地址),m行携带终端B的本地端口号(这里为公网端口号)。
[0056]返回200 OK消息直接到达Proxy。由于媒体码流还未建立,Proxy无法获取到终端B的公网地址及公网端口号,为了让来自终端B的媒体码流经过Proxy,Proxy为终端B分配新的端口号,然后将200 OK消息转发给终端A:其SDP信息c行携带的终端B的公网地址被替换为Proxy的公网地址,m行携带的终端B的公网端口号被替换为Proxy为终端B分配的新的端口号。
[0057](3)终端A收到Proxy转发的200 OK消息后,终端A和B之间的媒体能力协商完成,终端A返回响应消息(例如ACK消息),Proxy转发ACK到终端B,呼叫连接建立完成。
[0058]在图2所示的媒体能力协商过程之后,Proxy开始在为终端B分配的端口监听、并接收来自终端A的媒体码流;在为终端A分配的端口监听、并接收来自终端B的媒体码流,执行如图3所示的代理服务器接收媒体码流的过程:
[0059](I)终端A根据200 OK消息中SDP的相关描述,将媒体码流发往Proxy的公网地址、Proxy为终端B分配的端口 ;同时在本地地址(即私网地址)监听本地端口(即私网端Π )。
[0060]上述终端A发送的媒体码流需经过NAT设备到达Proxy,NAT设备截获终端A发送的媒体码流后,对其源地址(即终端A的本地地址,该实施例为私网地址)和源端口号(即终端A的本地端口号,该实施例为私网端口号)进行转换,得到公网地址和公网端口号;Proxy接收到终端A发送的媒体码流后,记录下转换后的公网地址、公网端口号与终端A的映射关系。Proxy丢弃第一个媒体码流数据包,不作转发。
[0061](2)终端B根据Invite消息中SDP的相关描述,将媒体码流发往Proxy的公网地址、Proxy为终端A分配的端口 ;同时在本地地址(即公网地址)监听本地端口(即公网端Π )。
[0062]终端B发送的媒体码流可以直接到达Proxy, Proxy接收到终端B发送的媒体码流后,记录下该媒体码流的源地址和源端口号,即终端B的公网地址和公网端口号,对于该媒体码流数据包Proxy同样不作转发。
[0063]Proxy将记录的终端A和公网地址、公网端口号与终端B的公网地址、公网端口号建立映射,并记录该映射。
[0064]在图3所示的代理服务器接收媒体码流的过程之后,执行如图4所示的媒体能力重协商过程:
[0065]为了将终端A、B各自的公网地址、公网端口号通知给对方,Proxy通过请求消息(例如reinvite消息)分别向终端A、B发起媒体能力重协商。
[0066]Proxy向终端A发送reinvite消息,其SDP信息中c行携带终端B的公网地址,m行携带终端B的公网端口号。
[0067]Proxy向终端B发送reinvite消息,其SDP信息中c行携带终端A的公网地址,m行携带终端A的公网端口号。
[0068]至此媒体能力重协商完成。
[0069]终端A与终端B的媒体能力重协商完成后,都更新了对端的媒体码流收发地址地址与端口号,后续终端A、B可以直接将媒体码流发送到对端的媒体码流收发地址与端口号即可,实现了 NAT的媒体码流穿越,并且无需再经过Proxy转发。
[0070]场景二:终端A、终端B都处于完全锥形NAT中,Proxy位于公网中。
[0071]在该场景下,终端A和B之间直接的媒体码流传输的实现过程包括如下几个阶段:
1、终端间媒体能力协商;2、代理服务器接收媒体码流;3终端间媒体能力重协商。
[0072]如图5所示为终端间媒体能力协商过程,包括:
[0073](I)终端A发起Invite呼叫,SDP信息中携带本地媒体能力。其中c行携带终端A的本地地址(这里为终端A的私网地址),m行携带终端A各类型媒体码流(例如音频、视频、图片等)的本地端口号(这里为终端A的私网端口号)。
[0074]Invite消息经过NAT设备到达Proxy,由于媒体码流还未建立,Proxy无法获取到终端A的媒体码流收发的公网地址及公网端口号,为了让来自终端A的媒体码流经过Proxy, Proxy为终端A分配新的端口号,然后Proxy需将Invite消息转发给终端B,该消息经过NAT设备到达终端B。转发给终端B的Invite消息中SDP信息c行携带地址被换成Proxy的公网地址,m行携带的端口号被替换为Proxy为终端A分配的新的端口号。
[0075](2)终端B收到Proxy转发的Invite消息后,向Proxy返回200 OK消息,该消息中SDP信息c行携带终端B的本地地址(这里为私网地址),m行携带终端B的本地端口号(这里为私网端口号)。
[0076]200 OK消息经过NAT设备到达Proxy,由于媒体码流还未建立,Proxy无法获取到终端B的公网地址及公网端口号,为了让来自终端B的媒体码流经过Pr0Xy,Pr0Xy为终端B分配新的端口号,然后将200 OK消息经过NAT设备转发给终端A。转发给终端A的200 OK消息中SDP信息c行携带地址被换成Proxy的公网地址,m行携带的端口号被替换为Proxy为终端B分配的新的端口号。
[0077](3)终端A收到200 OK消息后,终端A和B之间的媒体能力协商完成,终端A返回ACK消息,Proxy转发ACK到终端B,呼叫连接建立完成。
[0078]在图5所示的媒体能力协商过程之后,Proxy开始在为终端B分配的端口监听、并接收来自终端A的媒体码流;在为终端A分配的端口监听、并接收来自终端B的媒体码流,执行如图6所示的代理服务器接收媒体码流的过程:
[0079](I)终端A根据200 OK消息中SDP的相关描述,将媒体码流发往Proxy的公网地址、Proxy为终端B分配的端口 ;同时在本地地址(即私网地址)监听本地端口(即私网端Π )。
[0080]上述终端A发送的媒体码流需经过NAT设备到达Proxy,NAT设备截获终端A发送的媒体码流后,对其源地址(即终端A的本地地址,该实施例为私网地址)和源端口号(即终端A的本地端口号,该实施例为私网端口号)进行转换,得到公网地址和公网端口号;Proxy接收到终端A发送的媒体码流后,记录下转换后的公网地址、公网端口号与终端A的映射关系。Proxy丢弃第一个媒体码流数据包,不作转发。
[0081](2)终端B根据Invite消息中SDP的相关描述,将媒体码流发往Proxy的公网地址、Proxy为终端A分配的端口 ;同时在本地地址(即私网地址)监听本地端口(即私网端Π )。
[0082]上述终端B发送的媒体码流需经过NAT设备到达Proxy,NAT设备截获终端B发送的媒体码流后,对其源地址(即终端B的本地地址,该实施例为私网地址)和源端口号(即终端B的本地端口号,该实施例为私网端口号)进行转换,得到公网地址和公网端口号;Proxy接收到终端B发送的媒体码流后,记录下转换后的公网地址、公网端口号与终端B的映射关系,对于该媒体码流数据包Proxy同样不作转发。
[0083]Proxy将记录的终端A的公网地址、公网端口号与终端B的公网地址、公网端口号建立映射,并记录该映射。
[0084]在图6所示的代理服务器接收媒体码流的过程之后,执行如图7所示的媒体能力重协商过程:
[0085]为了将终端A、B各自的公网地址、公网端口号通知给对方,Proxy通过reinvite消息分别向终端A、B发起媒体能力重协商。
[0086]Proxy向终端A发送reinvite消息,其SDP信息中c行携带终端B的公网地址,m行携带终端B的公网端口号。
[0087]Proxy向终端B发送reinvite消息,其SDP信息中c行携带终端A的公网地址,m行携带终端A的公网端口号。
[0088]至此媒体能力重协商完成。
[0089]终端A与终端B的媒体能力重协商完成后,都记录了对端的(媒体码流收发)公网地址与公网端口号,后续终端A、B可以直接将媒体码流发送到对端的公网地址与公网端口号即可,实现了 NAT的媒体码流穿越,并且无需再经过Proxy转发。
[0090]为使本发明的目的、技术方法和优点表达的更清楚,下面结合附图和场景2(两个终端都在NAT中)实施例对本发明做更进一步的说明。
[0091]终端A位于完全锥形NAT中,本地地址、即私网地址为10.1.1.2,经过NAT映射的公网地址为192.0.2.1 (信令地址与媒体地址相同);本地音频端口为10200,本地视频端口为 10202。
[0092]终端B位于完全锥形NAT中,本地地址、即私网地址为10.0.1.3,经过NAT映射的公网地址为192.0.2.3 (信令地址与媒体地址相同);本地音频端口为10000,本地视频端口为 10002。
[0093]Proxy位于公网中,公网地址为192.0.2.2。
[0094]基于SIP媒体能力重协商的NAT穿越的过程包括:
[0095](I)终端A发起Invite呼叫,SDP信息中携带本地媒体能力,其中c行携带终端A的本地地址、即私网地址为10.1.1.2 ;m行携带的本地音频端口为10200,本地视频端口为10202,相关SDP描述如下:
[0096]c=IN IP4 10.1.1.2
[0097]m=audio 10200 RTP/AVP980
[0098]m=video 10202 RTP/AVP 109 34
[0099](2) Invite消息经过NAT设备到达Proxy,由于媒体码流还未建立,Proxy无法获取到终端A的媒体码流对应的公网收发地址及端口号,为了让媒体码流经过Proxy,Proxy为终端A分配一个新的音频端口 8510,一个新的视频端口 8512,并将SDP信息c行中的地址替换成Proxy的公网地址,更新后的Invite消息中SDP相关描述如下:
[0100]C=IN IP4 192.0.2.2[0101]m=audio 8510 RTP/AVP 980
[0102]m=video 8512 RTP/AVP 109 34
[0103](3) Proxy转发Invite消息到终端B,终端B响应200 OK消息,该消息中SDP信息携带本地媒体能力,其中c行携带终端B的本地地址、即私网地址为10.0.1.3,m行携带的本地音频端口为10000,本地视频端口为10002,相关SDP描述如下:
[0104]c=IN IP4 10.0.1.3
[0105]m=audio 10000 RTP/AVP 980
[0106]m=video 10002 RTP/AVP 109 34
[0107](4) Proxy收到终端的B的200 OK消息,由于媒体码流还未建立,Proxy无法获取到终端B的媒体码流对应的公网收发地址及端口号,为了让媒体码流经过Proxy,Proxy同样为终端B分配一个新的音频端口 9510,一个新的视频端口 9512,并将SDP信息c行中的地址替换成Proxy的公网地址,更新后的200 OK消息中SDP相关描述如下:
[0108]c=IN IP4 192.0.2.2
[0109]m=audio 9510 RTP/AVP 980
[0110]m=video 9512 RTP/AVP 109 34
[0111](5)终端A收到Proxy转发的200 OK消息,终端A和B之间的媒体能力协商完成,终端A返回ACK消息,Proxy转发ACK到终端B,呼叫连接建立完成。此时Proxy开始在9510,9512端口监听、并接收来自终端A的媒体码流;在8510、8512端口监听,接收来自终端B的媒体码流;
[0112](6)呼叫连接建立完成后,终端A根据200 OK消息中SDP的相关描述,将音频、视频码流发往地址192.0.2.2,端口 9510,9512 ;同时在本地地址10.1.1.2监听10200、10202端口。
[0113]上述终端A发送的媒体码流需经过NAT设备到达Proxy,NAT设备截获终端A发送的媒体码流后,对其源地址(10.1.1.2)和源端口号(10200、10202)进行转换,得到的公网地址为192.0.2.1,公网端口号分别为38100、38102 ;Proxy接收到终端A发送的媒体码流后,记录下转换后的公网地址、端口号与终端A的映射关系。Proxy丢弃第一个媒体码流数据包,不作转发。
[0114](7)呼叫连接建立完成后,终端B根据Invite消息中SDP的相关描述,将音频、视频码流发往地址192.0.2.2,端口号分别为8510、8512 ;同时在本地地址10.0.1.3监听10000、10002 端口。
[0115]上述终端B发送的媒体码流需经过NAT设备到达Proxy,NAT设备截获终端B发送的媒体码流后,对其源地址(10.0.1.3)和源端口号(10000、10002)进行转换,得到的公网地址为192.0.2.3,公网端口号分别39100、39102 ;Proxy接收到终端B发送的媒体码流后,记录下转换后的公网地址、端口号与终端B的映射关系,对于该媒体码流数据包Proxy同样不作转发。
[0116](8)通过步骤(6)和(7)PiOXy收集到了终端A、B各自的(媒体码流收发)公网地址和公网端口号,建立两者之间的映射关系。
[0117]Proxy记录的终端B对应的公网地址是192.0.2.3,公网端口号分别为39100、39102,为了将该公网地址和公网端口号(即终端A发送媒体码流的目的地址和目的端口号)通知到终端A, Proxy通过reinvite消息向终端A发起媒体能力重协商,reinvite消息中SDP相关描述如下:
[0118]c=IN IP4 192.0.2.3
[0119]m=audio 39100 RTP/AVP 980
[0120]m=video 39102 RTP/AVP 109 34
[0121]同样的,Proxy记录的终端A的公网地址是192.0.2.1,公网端口号分别为38100、38102,为了将该公网地址和公网端口号(即终端B发送媒体码流的目的地址和目的端口号)通知到终端B, Proxy通过reinvite消息向终端B发起媒体能力重协商,reinvite消息中SDP相关描述如下:
[0122]c=IN IP4 192.0.2.1
[0123]m=audio 38100 RTP/AVP 980
[0124]m=video 38102 RTP/AVP 109 34
[0125]如此完成了媒体能力重协商。
[0126](9)终端 A 收至Ij Proxy 的 reinvite 消息,停止向 Proxy (地址 192.0.2.2,端口号9510,9512)发送媒体码流,开始向终端B对应的公网地址192.0.2.3,公网端口号39100、39102发送媒体码流;终端B收至Ij Proxy的reinvite消息,停止向Proxy (地址192.0.2.2,端口号8510、8512)发送媒体码流,开始向终端A的对应的公网地址192.0.2.1,端口号38100,38102发送媒体码流。至此终端A与终端B实现了媒体码流的直接传输,不再经过Proxy中转。
[0127]本发明上述实施例提供的方案在主、被叫双方或其中之一处于完全锥形NAT时,能够不对现有网络设备进行改造的前提下,通过Proxy实现两个终端媒体之间直接的通信,节约了升级网络设备的成本,并且降低了数据传输的延时,减轻了服务器的负载,提高了效率。
[0128]为了更好的实现上述技术方案,本发明实施例还提供了一种代理服务器10,其位于公网,如图8所示,该代理服务器包括:
[0129]获取模块11,用于分别接收来自第一终端和第二终端的媒体码流,并获取第一终端和第二终端的公网地址和公网端口号;第一终端和第二终端中的至少一个位于私网;
[0130]媒体能力重协商模块12,用于发起媒体能力重协商,将获取的第一终端的公网地址和公网端口号通知给第二终端,将获取的第二终端的公网地址和公网端口号通知给第一终端。
[0131]端口分配模块13,用于通过媒体能力协商过程,分别为第一终端和第二终端分配端口号,并将为第一终端分配的端口号通知给第二终端,将为第二终端分配的端口号通知给第一终端;
[0132]监听模块14,用于在为第二终端分配的端口号监听、并接收来自第一终端的媒体码流;在为第一终端分配的端口号监听、并接收来自第二终端的媒体码流;
[0133]获取模块11,还用于从来自第一终端或第二终端的媒体码流中提取并记录第一终端或第二终端的公网地址和公网端口号。具体的:第一终端或第二终端位于私网时,第一终端或第二终端的公网地址和公网端口号是由对应的私网地址和私网端口号转换得到的,具体的:在NAT设备截获到第一终端或第二终端发送给代理服务器的媒体码流时,将其中的源地址和源端口号(即私网地址和私网端口号)转换为公网地址和公网端口号;第一终端或第二终端位于公网时,对应的媒体码流的源地址和源端口号即为第一终端或第二终端的公网地址和公网端口号。
[0134]交互模块15,用于接收来自第一终端的请求消息,通知端口分配模块13为第一终端分配端口号,并将请求消息转发给第二终端;转发给第二终端的请求消息中携带代理服务器的公网地址和为第一终端分配的端口号;还用于接收来自第二终端的响应消息,通知端口分配模块13为第二终端分配端口号,并将响应消息转发给第一终端;转发给第一终端的响应消息中携带代理服务器的公网地址和为第二终端分配的端口号。
[0135]映射模块16,用于建立第一终端的公网地址、公网端口号与第二终端的公网地址、公网端口号的映射关系。
[0136]媒体能力重协商模块12,还用于通过请求消息分别向第一终端和第二终端发起媒体能力重协商;发送给第一终端的请求消息中携带第二终端的公网地址和公网端口号;发送给第二终端的请求消息中携带第一终端的公网地址和公网端口号。
[0137]如图9所示,本发明实施例还提供了一种基于SIP媒体能力重协商的NAT穿越系统,包括图8所示的代理服务器10、第一终端20和第二终端30,其中:
[0138]代理服务器10,用于获取第一终端20和第二终端30的公网地址和公网端口号;还用于发起媒体能力重协商,将获取的第一终端20的公网地址和公网端口号通知给第二终端30,将获取的第二终端30的公网地址和公网端口号通知给第一终端20 ;
[0139]第一终端20,用于向第二终端的公网地址和公网端口号发送媒体码流;
[0140]第二终端30,用于向第一终端的公网地址和公网端口号发送媒体码流。
[0141]本发明还提供了一种基于SIP媒体能力重协商的NAT穿越装置,包括硬件处理服务器,用于分别接收来自第一终端和第二终端的媒体码流,并获取第一终端和第二终端的公网地址和公网端口号;还用于发起媒体能力重协商,将获取的第一终端的公网地址和公网端口号通知给第二终端,将获取的第二终端的公网地址和公网端口号通知给第一终端。
[0142]以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
【权利要求】
1.一种基于SIP媒体能力重协商的NAT穿越方法,其特征在于,第一终端和第二终端中的至少一个位于私网,代理服务器位于公网,该方法包括: 所述代理服务器分别接收来自第一终端和第二终端的媒体码流,并获取所述第一终端和第二终端的公网地址和公网端口号; 所述代理服务器发起媒体能力重协商,将获取的所述第一终端的公网地址和公网端口号通知给所述第二终端,将获取的所述第二终端的公网地址和公网端口号通知给所述第一终端。
2.根据权利要求1所述基于SIP媒体能力重协商的NAT穿越方法,其特征在于,所述代理服务器分别接收来自第一终端和第二终端的媒体码流,并获取所述第一终端和第二终端的公网地址和公网端口号,包括: 在媒体能力协商过程中,所述代理服务器分别为所述第一终端和第二终端分配端口号,并将为所述第一终端分配的端口号通知给所述第二终端,将为所述第二终端分配的端口号通知给所述第一终端; 所述代理服务器在为所述第二终端分配的端口号监听、并接收来自所述第一终端的媒体码流;在为所述第一终端分配的端口号监听、并接收来自所述第二终端的媒体码流; 所述代理服务器从来自所述第一终端或第二终端的媒体码流中提取并记录所述第一终端或第二终端的公网地址和公网端口号。
3.根据权利要求2所述基于SIP媒体能力重协商的NAT穿越方法,其特征在于,在媒体能力协商过程中,所述代理服务器分别为所述第一终端和第二终端分配端口号,并将为所述第一终端分配的端口号通知给所述第二终端,将为所述第二终端分配的端口号通知给所述第一终端,包括: 所述代理服务器接收来自第一终端的请求消息,为所述第一终端分配端口号,并将所述请求消息转发给所述第二终端;所述转发给所述第二终端的请求消息中携带所述代理服务器的公网地址和为所述第一终端分配的端口号; 所述代理服务器接收来自所述第二终端的响应消息,为所述第二终端分配端口号,并将所述响应消息转发给所述第一终端;所述转发给所述第一终端的响应消息中携带所述代理服务器的公网地址和为所述第二终端分配的端口号。
4.根据权利要求2所述基于SIP媒体能力重协商的NAT穿越方法,其特征在于,所述代理服务器从来自所述第一终端或第二终端的媒体码流中提取并记录的所述第一终端或第二终端的公网地址和公网端口号为: 所述第一终端或第二终端位于私网时,由所述第一终端或第二终端的私网地址和私网端口号转换得到的公网地址和公网端口号; 所述第一终端或第二终端位于公网时,对应的所述媒体码流的源地址和源端口号为第一终端或第二终端的公网地址和公网端口号。
5.根据权利要求1或4所述基于SIP媒体能力重协商的NAT穿越方法,其特征在于,在所述代理服务器获取所述第一终端和第二终端的公网地址和公网端口号之后;该方法还包括:所述代理服务器建立所述第一终端的公网地址、公网端口号与所述第二终端的公网地址、公网端口号的映射关系。
6.根据权利要求1所述基于SIP媒体能力重协商的NAT穿越方法,其特征在于,所述代理服务器通过请求消息分别向所述第一终端和第二终端发起媒体能力重协商; 发送所述给所述第一终端的请求消息中携带所述第二终端的公网地址和公网端口号;发送所述给所述第二终端的请求消息中携带所述第一终端的公网地址和公网端口号。
7.—种代理服务器,其特征在于,所述代理服务器位于公网,包括: 获取模块,用于分别接收来自第一终端和第二终端的媒体码流,并获取第一终端和第二终端的公网地址和公网端口号;所述第一终端和第二终端中的至少一个位于私网; 媒体能力重协商模块,用于发起媒体能力重协商,将获取的所述第一终端的公网地址和公网端口号通知给所述第二终端,将获取的所述第二终端的公网地址和公网端口号通知给所述第一终端。
8.根据权利要求7所述代理服务器,其特征在于,还包括: 端口分配模块,用于通过媒体能力协商过程,分别为所述第一终端和第二终端分配端口号,并将为所述第一终端分配的端口号通知给所述第二终端,将为所述第二终端分配的端口号通知给所述第一终端; 监听模块,用于在为所述第二终端分配的端口号监听、并接收来自所述第一终端的媒体码流;在为所述第一终端分配的端口号监听、并接收来自所述第二终端的媒体码流; 所述获取模块,还用于从来自所述第一终端或第二终端的媒体码流中提取并记录所述第一终端或第二终端的公 网地址和公网端口号。
9.根据权利要求8所述代理服务器,其特征在于,还包括: 交互模块,用于接收来自第一终端的请求消息,通知所述端口分配模块所述第一终端分配端口号,并将所述请求消息转发给所述第二终端;所述转发给所述第二终端的请求消息中携带所述代理服务器的公网地址和为所述第一终端分配的端口号;还用于接收来自所述第二终端的响应消息,通知所述端口分配模块为所述第二终端分配端口号,并将所述响应消息转发给所述第一终端;所述转发给所述第一终端的响应消息中携带所述代理服务器的公网地址和为所述第二终端分配的端口号。
10.根据权利要求7所述代理服务器,其特征在于,还包括: 映射模块,用于建立所述第一终端的公网地址、公网端口号与所述第二终端的公网地址、公网端口号的映射关系。
11.根据权利要求7所述代理服务器,其特征在于, 所述媒体能力重协商模块,还用于通过请求消息分别向所述第一终端和第二终端发起媒体能力重协商;发送所述给所述第一终端的请求消息中携带所述第二终端的公网地址和公网端口号;发送所述给所述第二终端的请求消息中携带所述第一终端的公网地址和公网端口号。
12.—种基于SIP媒体能力重协商的NAT穿越系统,其特征在于,包括权利要求7至10任一所述的代理服务器、第一终端和第二终端,其中: 所述代理服务器,用于分别接收来自第一终端和第二终端的媒体码流,并获取所述第一终端和第二终端的公网地址和公网端口号;还用于发起媒体能力重协商,将获取的所述第一终端的公网地址和公网端口号通知给所述第二终端,将获取的所述第二终端的公网地址和公网端口号通知给所述第一终端; 所述第一终端,用于向所述第二终端的公网地址和公网端口号发送媒体码流;所述第二终端,用于向所述第一终端的公网地址和公网端口号发送媒体码流。
13.一种基于SIP媒体能力重协商的NAT穿越装置,其特征在于,该装置包括硬件处理服务器,其中: 所述硬件处理服务器,用于分别接收来自第一终端和第二终端的媒体码流,并获取所述第一终端和第二终端的公网地址和公网端口号;还用于发起媒体能力重协商,将获取的所述第一终端的公网地址和公网端口号通知给所述第二终端,将获取的所述第二终端的公网地址和公网 端口号通知给所述第一终端。
【文档编号】H04L29/12GK103916382SQ201310728499
【公开日】2014年7月9日 申请日期:2013年12月25日 优先权日:2013年12月25日
【发明者】姚刚, 张强, 刘志鹏 申请人:三亚中兴软件有限责任公司