首页> 中国专利> 基于SIP媒体能力重协商的NAT穿越方法、代理服务器和系统

基于SIP媒体能力重协商的NAT穿越方法、代理服务器和系统

摘要

本发明公开了一种基于SIP媒体能力重协商的NAT穿越方法、代理服务器和系统,第一终端和第二终端中的至少一个位于私网,代理服务器位于公网,该方法包括:代理服务器分别接收来自第一终端和第二终端的媒体码流,并获取第一终端和第二终端的公网地址和公网端口号;代理服务器发起媒体能力重协商,将获取的第一终端的公网地址和公网端口号通知给第二终端,将获取的第二终端的公网地址和公网端口号通知给第一终端。

著录项

  • 公开/公告号CN103916382A

    专利类型发明专利

  • 公开/公告日2014-07-09

    原文格式PDF

  • 申请/专利权人 三亚中兴软件有限责任公司;

    申请/专利号CN201310728499.3

  • 发明设计人 姚刚;张强;刘志鹏;

    申请日2013-12-25

  • 分类号H04L29/06(20060101);H04L29/12(20060101);

  • 代理机构北京派特恩知识产权代理有限公司;

  • 代理人张颖玲;任媛

  • 地址 572000 海南省三亚市荔枝沟海润路33号

  • 入库时间 2024-02-20 00:11:30

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-05-01

    授权

    授权

  • 2015-06-24

    实质审查的生效 IPC(主分类):H04L29/06 申请日:20131225

    实质审查的生效

  • 2014-07-09

    公开

    公开

说明书

技术领域

本发明涉及NAT穿越技术领域,特别是指一种基于SIP媒体能力重协商的 NAT穿越方法、代理服务器和系统。

背景技术

现有的SIP(Session Initiation Protocol,会话启动协议)穿越NAT(Network  Address Translation,网络地址转换)技术,主要基于以下的思路:SIP信令通 道通过终端的注册请求打穿NAT,后续通过注册刷新维持信令通道。终端发送 的后续所有信令消息共用注册通道传送,而服务器则沿着注册通道的反向路径 传送消息。媒体码流也采用类似技术,首先是终端向服务器发送RTP(Real-time  Transport Protocol,实时传输协议)包,NAT将会给此RTP流打开一个端口, 然后服务器将沿着此RTP流的方向路径发送RTP包。

目前,NAT穿越技术的方案有以下几种:

1、STUN(Simple Traversal of UDP over NATs,NAT的UDP简单穿越) 协议,终端与STUN服务器进行交互,从而确定NAT分配给它们的公网地址和 端口号;

2、TURN(Traversal Using Relay NAT)协议,是一种通过中继方式穿越 NAT的方式,私网终端发出的报文都要经过TURN服务器进行中继转发;

3、ICE(Interactive Connectivity Establishment,互动式连接建立),是一个 综合解决方案,它通过连接性测试来选取传输通道,它所提供的是一种框架, 使各种NAT穿透技术可以实现统一;

4、SBC(Session Border Controller,会话边缘控制器)是一种比较完善的 解决方案,它对原有网络没有任何要求,不需要终端做任何改造,终端的信令、 媒体码流都需要经过SBC进行媒体转发。

上述方案存在以下几点不足:

1、需要对现有网络进行改造,根据上述不同的NAT穿越技术,终端必须 要支持STUN、TURN或ICE协议,并且要部署穿越服务器(与一般的NAT设 备不同,需要独立部署),它实现了STUN或TURN服务器或SBC功能,代价 较高。

2、需要穿越服务器进行媒体码流中转,无法在终端之间建立直连的媒体码 流。

发明内容

有鉴于此,本发明实施例的主要目的在于提供一种基于SIP媒体能力重协 商的NAT穿越方法、代理服务器和系统,以解决现有适用SIP的NAT穿越技 术方案中存在的需要部署代价较高的穿越服务器以及无法在终端之间建立直连 的媒体码流的问题。

为达到上述目的,本发明的技术方案是这样实现的:

本发明实施例提供了一种基于SIP媒体能力重协商的NAT穿越方法,第一 终端和第二终端中的至少一个位于私网,代理服务器位于公网,该方法包括:

所述代理服务器分别接收来自第一终端和第二终端的媒体码流,并获取所 述第一终端和第二终端的公网地址和公网端口号;

所述代理服务器发起媒体能力重协商,将获取的所述第一终端的公网地址 和公网端口号通知给所述第二终端,将获取的所述第二终端的公网地址和公网 端口号通知给所述第一终端。

本发明实施例还提供了一种代理服务器,所述代理服务器位于公网,包括:

获取模块,用于分别接收来自第一终端和第二终端的媒体码流,并获取第 一终端和第二终端的公网地址和公网端口号;所述第一终端和第二终端中的至 少一个位于私网;

媒体能力重协商模块,用于发起媒体能力重协商,将获取的所述第一终端 的公网地址和公网端口号通知给所述第二终端,将获取的所述第二终端的公网 地址和公网端口号通知给所述第一终端。

本发明实施例还提供了一种基于SIP媒体能力重协商的NAT穿越系统,包 括上述的代理服务器、第一终端和第二终端,其中:

所述代理服务器,用于分别接收来自第一终端和第二终端的媒体码流,并 获取所述第一终端和第二终端的公网地址和公网端口号;还用于发起媒体能力 重协商,将获取的所述第一终端的公网地址和公网端口号通知给所述第二终端, 将获取的所述第二终端的公网地址和公网端口号通知给所述第一终端;

所述第一终端,用于向所述第二终端的公网地址和公网端口号发送媒体码 流;

所述第二终端,用于向所述第一终端的公网地址和公网端口号发送媒体码 流。

本发明实施例还提供了一种基于SIP媒体能力重协商的NAT穿越装置,该 装置包括硬件处理服务器,其中:

所述硬件处理服务器,用于分别接收来自第一终端和第二终端的媒体码流, 并获取所述第一终端和第二终端的公网地址和公网端口号;还用于发起媒体能 力重协商,将获取的所述第一终端的公网地址和公网端口号通知给所述第二终 端,将获取的所述第二终端的公网地址和公网端口号通知给所述第一终端。

本发明上述基于SIP媒体能力重协商的NAT穿越方法、代理服务器和系统 中:第一终端和第二终端中的至少一个位于私网,代理服务器位于公网;代理 服务器分别接收来自第一终端和第二终端的媒体码流,并获取第一终端和第二 终端的公网地址和公网端口号;代理服务器发起媒体能力重协商,将获取的第 一终端的公网地址和公网端口号通知给第二终端,将获取的第二终端的公网地 址和公网端口号通知给第一终端。之后,第一终端和第二终端可以基于对方的 公网地址和公网端口号直接进行通信,无需代理服务器的转发;另外,上述技 术方案的实现是基于现有的网络架构,无需对其进行改进,也无需设置专门的 穿越服务器就实现了终端间的直接通信,节约了成本。

附图说明

图1为本发明实施例提供的基于SIP媒体能力重协商的NAT穿越过程示意 图;

图2为本发明实施一的媒体能力协商示意图;

图3为本发明实施一的代理服务器接收媒体码流示意图;

图4为本发明实施例一的媒体能力重协商示意图;

图5为本发明实施二的媒体能力协商示意图;

图6为本发明实施二的代理服务器接收媒体码流示意图;

图7为本发明实施例二的媒体能力重协商示意图;

图8为本发明实施例提供的代理服务器的结构示意图;

图9为本发明实施例提供的基于SIP媒体能力重协商的NAT穿越系统示意 图。

具体实施方式

下面结合附图和具体实施例对本发明的技术方案进一步详细阐述。

在SIP会议电视的实际应用场景中,都会要求开放一定范围的媒体端口号, 所以终端、MCU设备绝大部分都是处于完全锥形NAT(Full Cone NAT)中, 也就是同一个媒体私网地址和媒体私网端口号发送过来的请求都会被映射到同 一个媒体公网地址和媒体公网端口号,并且任何一个公网设备都可以通过这个 映射的媒体公网地址和媒体公网端口号向这台私网设备发包。另外终端的媒体 码流收发端口是相同的,即在同一个端口进行收发。如后续无特殊说明,本发 明实施例所涉及的地址及端口(私网、公网)均为媒体码流收发地址和端口。

基于这些特点,可以采用媒体能力重协商的方式通知终端设备,告知其对 端的媒体码流收发地址及端口号,只要终端在进行媒体能力重协商时不改变本 端的媒体码流收发端口,就可以实现媒体码流的NAT穿越。大致过程为:代理 服务器(该代理服务器为SIP会议系统中的必备网元,负责终端的注册、信令 的转发等功能,其本身不具备NAT穿越功能)通过接收第一终端发送的第一个 媒体码流数据包学习到该终端的公网地址和公网端口号,然后,在对应的呼叫 会话上代理服务器向对端终端(第二终端)发起媒体能力重协商(reinvite消息 或update消息),对应的SDP(Session Description Protocol,会话描述协议)信 息中携带第一终端的公网地址和公网端口号;同样的方式,代理服务器收到第 二终端的第一个媒体码流数据包后,也向第一终端发起媒体能力重协商,对应 的SDP信息中携带第二终端的公网地址和公网端口号,如此媒体能力重协商完 成。之后,第一、第二叫终端可以直接通过对方的公网地址和公网端口号发送 媒体码流,无需经过代理服务器的转发,实现了终端之间媒体码流的直接传输, 大大提高了效率;并且上述过程基于现有的网络架构,无需部署专门的穿越服 务器,节省了成本。

为了在不对现有网络设备进行改造的前提下实现媒体码流的NAT穿越,以 及不经过穿越服务器的媒体中转、直接在主被叫终端之间建立媒体码流,减轻 穿越服务器的负载,降低数据传输的延时,提高数据传输效率,本发明实施例 提出了一种基于SIP媒体能力重协商的NAT穿越方案,在该方案中:第一终端 和第二终端中的至少一个位于私网,代理服务器位于公网,如图1所示,详细 的实现过程包括:

步骤101,代理服务器分别接收来自第一终端和第二终端的媒体码流,并 获取第一终端和第二终端的公网地址和公网端口号。

在媒体能力协商过程中,代理服务器分别为第一终端和第二终端分配端口 号,并将为第一终端分配的端口号通知给第二终端,将为第二终端分配的端口 号通知给第一终端;

代理服务器在为第二终端分配的端口号监听、并接收来自第一终端的媒体 码流;在为第一终端分配的端口号监听、并接收来自第二终端的媒体码流;

代理服务器从来自第一终端或第二终端的媒体码流中提取并记录第一终端 或第二终端的公网地址和公网端口号(这里的媒体码流为第一终端和第二终端 向代理服务器发送的第一个媒体码流)具体的:

第一终端或第二终端位于私网时,第一终端或第二终端的公网地址和公网 端口号是由对应的私网地址和私网端口号转换得到的,具体的:在NAT设备截 获到第一终端或第二终端发送给代理服务器的媒体码流时,将其中的源地址和 源端口号(即私网地址和私网端口号)转换为公网地址和公网端口号;

第一终端或第二终端位于公网时,对应的媒体码流的源地址和源端口号即 为第一终端或第二终端的公网地址和公网端口号。

优选地,代理服务器建立第一终端的公网地址、公网端口号与第二终端的 公网地址、公网端口号的映射关系。

上述媒体能力协商过程包括:代理服务器接收来自第一终端的请求消息, 为第一终端分配端口号,并将请求消息转发给第二终端;转发给第二终端的请 求消息中携带代理服务器的公网地址和为第一终端分配的端口号;代理服务器 接收来自第二终端的响应消息,为第二终端分配端口号,并将响应消息转发给 第一终端;转发给第一终端的响应消息中携带代理服务器的公网地址和为第二 终端分配的端口号。

步骤102,代理服务器发起媒体能力重协商,将获取的第一终端的公网地 址和公网端口号通知给第二终端,将获取的第二终端的公网地址和公网端口号 通知给第一终端。

本发明实施例中,代理服务器通过请求消息分别向第一终端和第二终端发 起媒体能力重协商;发送给第一终端的请求消息中携带第二终端的公网地址和 公网端口号;发送给第二终端的请求消息中携带第一终端的公网地址和公网端 口号。

下面以两个场景中的终端点对点呼叫为例,来进一步说明上述技术方案。

场景一:终端A位于完全锥形NAT,终端B与Proxy(代理服务器)位于 公网中。

在该场景下,终端A和B之间直接的媒体码流传输的实现过程包括如下几 个阶段:1、终端间媒体能力协商;2、代理服务器接收媒体码流;3终端间媒 体能力重协商。

如图2所示为终端间媒体能力协商过程,包括:

(1)终端A发起请求呼叫(例如该请求消息可以是Invite消息),SDP信 息中携带本地媒体能力。本发明实施例所关注的SDP信息中描述媒体能力的信 息有:c行、m行。其中,c行携带的是连接信息;m行携带的是媒体名称和传 输地址。在本步骤中,c行携带终端A的本地地址(这里为终端A的私网地址), m行携带终端A各类型媒体码流(例如音频、视频、图片等)的本地端口号(这 里为终端A的私网端口号)。

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分配的新的端口号。

(2)终端B收到Proxy转发的Invite消息后,向Proxy返回响应消息(例 如200 OK消息),该消息中SDP信息c行携带终端B的本地地址(这里为公 网地址),m行携带终端B的本地端口号(这里为公网端口号)。

返回200 OK消息直接到达Proxy。由于媒体码流还未建立,Proxy无法获 取到终端B的公网地址及公网端口号,为了让来自终端B的媒体码流经过 Proxy,Proxy为终端B分配新的端口号,然后将200 OK消息转发给终端A: 其SDP信息c行携带的终端B的公网地址被替换为Proxy的公网地址,m行 携带的终端B的公网端口号被替换为Proxy为终端B分配的新的端口号。

(3)终端A收到Proxy转发的200 OK消息后,终端A和B之间的媒体 能力协商完成,终端A返回响应消息(例如ACK消息),Proxy转发ACK到终 端B,呼叫连接建立完成。

在图2所示的媒体能力协商过程之后,Proxy开始在为终端B分配的端口 监听、并接收来自终端A的媒体码流;在为终端A分配的端口监听、并接收来 自终端B的媒体码流,执行如图3所示的代理服务器接收媒体码流的过程:

(1)终端A根据200 OK消息中SDP的相关描述,将媒体码流发往Proxy 的公网地址、Proxy为终端B分配的端口;同时在本地地址(即私网地址)监 听本地端口(即私网端口)。

上述终端A发送的媒体码流需经过NAT设备到达Proxy,NAT设备截获终 端A发送的媒体码流后,对其源地址(即终端A的本地地址,该实施例为私网 地址)和源端口号(即终端A的本地端口号,该实施例为私网端口号)进行转 换,得到公网地址和公网端口号;Proxy接收到终端A发送的媒体码流后,记 录下转换后的公网地址、公网端口号与终端A的映射关系。Proxy丢弃第一个 媒体码流数据包,不作转发。

(2)终端B根据Invite消息中SDP的相关描述,将媒体码流发往Proxy 的公网地址、Proxy为终端A分配的端口;同时在本地地址(即公网地址)监 听本地端口(即公网端口)。

终端B发送的媒体码流可以直接到达Proxy,Proxy接收到终端B发送的 媒体码流后,记录下该媒体码流的源地址和源端口号,即终端B的公网地址和 公网端口号,对于该媒体码流数据包Proxy同样不作转发。

Proxy将记录的终端A和公网地址、公网端口号与终端B的公网地址、公 网端口号建立映射,并记录该映射。

在图3所示的代理服务器接收媒体码流的过程之后,执行如图4所示的媒 体能力重协商过程:

为了将终端A、B各自的公网地址、公网端口号通知给对方,Proxy通过请 求消息(例如reinvite消息)分别向终端A、B发起媒体能力重协商。

Proxy向终端A发送reinvite消息,其SDP信息中c行携带终端B的公网 地址,m行携带终端B的公网端口号。

Proxy向终端B发送reinvite消息,其SDP信息中c行携带终端A的公网 地址,m行携带终端A的公网端口号。

至此媒体能力重协商完成。

终端A与终端B的媒体能力重协商完成后,都更新了对端的媒体码流收发 地址地址与端口号,后续终端A、B可以直接将媒体码流发送到对端的媒体码 流收发地址与端口号即可,实现了NAT的媒体码流穿越,并且无需再经过Proxy 转发。

场景二:终端A、终端B都处于完全锥形NAT中,Proxy位于公网中。

在该场景下,终端A和B之间直接的媒体码流传输的实现过程包括如下几 个阶段:1、终端间媒体能力协商;2、代理服务器接收媒体码流;3终端间媒 体能力重协商。

如图5所示为终端间媒体能力协商过程,包括:

(1)终端A发起Invite呼叫,SDP信息中携带本地媒体能力。其中c行携 带终端A的本地地址(这里为终端A的私网地址),m行携带终端A各类型媒 体码流(例如音频、视频、图片等)的本地端口号(这里为终端A的私网端口 号)。

Invite消息经过NAT设备到达Proxy,由于媒体码流还未建立,Proxy无法 获取到终端A的媒体码流收发的公网地址及公网端口号,为了让来自终端A的 媒体码流经过Proxy,Proxy为终端A分配新的端口号,然后Proxy需将Invite 消息转发给终端B,该消息经过NAT设备到达终端B。转发给终端B的Invite 消息中SDP信息c行携带地址被换成Proxy的公网地址,m行携带的端口号被 替换为Proxy为终端A分配的新的端口号。

(2)终端B收到Proxy转发的Invite消息后,向Proxy返回200 OK消息, 该消息中SDP信息c行携带终端B的本地地址(这里为私网地址),m行携带 终端B的本地端口号(这里为私网端口号)。

200 OK消息经过NAT设备到达Proxy,由于媒体码流还未建立,Proxy无 法获取到终端B的公网地址及公网端口号,为了让来自终端B的媒体码流经过 Proxy,Proxy为终端B分配新的端口号,然后将200 OK消息经过NAT设备转 发给终端A。转发给终端A的200 OK消息中SDP信息c行携带地址被换成 Proxy的公网地址,m行携带的端口号被替换为Proxy为终端B分配的新的端 口号。

(3)终端A收到200 OK消息后,终端A和B之间的媒体能力协商完成, 终端A返回ACK消息,Proxy转发ACK到终端B,呼叫连接建立完成。

在图5所示的媒体能力协商过程之后,Proxy开始在为终端B分配的端口 监听、并接收来自终端A的媒体码流;在为终端A分配的端口监听、并接收来 自终端B的媒体码流,执行如图6所示的代理服务器接收媒体码流的过程:

(1)终端A根据200 OK消息中SDP的相关描述,将媒体码流发往Proxy 的公网地址、Proxy为终端B分配的端口;同时在本地地址(即私网地址)监 听本地端口(即私网端口)。

上述终端A发送的媒体码流需经过NAT设备到达Proxy,NAT设备截获终 端A发送的媒体码流后,对其源地址(即终端A的本地地址,该实施例为私网 地址)和源端口号(即终端A的本地端口号,该实施例为私网端口号)进行转 换,得到公网地址和公网端口号;Proxy接收到终端A发送的媒体码流后,记 录下转换后的公网地址、公网端口号与终端A的映射关系。Proxy丢弃第一个 媒体码流数据包,不作转发。

(2)终端B根据Invite消息中SDP的相关描述,将媒体码流发往Proxy 的公网地址、Proxy为终端A分配的端口;同时在本地地址(即私网地址)监 听本地端口(即私网端口)。

上述终端B发送的媒体码流需经过NAT设备到达Proxy,NAT设备截获终 端B发送的媒体码流后,对其源地址(即终端B的本地地址,该实施例为私网 地址)和源端口号(即终端B的本地端口号,该实施例为私网端口号)进行转 换,得到公网地址和公网端口号;Proxy接收到终端B发送的媒体码流后,记 录下转换后的公网地址、公网端口号与终端B的映射关系,对于该媒体码流数 据包Proxy同样不作转发。

Proxy将记录的终端A的公网地址、公网端口号与终端B的公网地址、公 网端口号建立映射,并记录该映射。

在图6所示的代理服务器接收媒体码流的过程之后,执行如图7所示的媒 体能力重协商过程:

为了将终端A、B各自的公网地址、公网端口号通知给对方,Proxy通过 reinvite消息分别向终端A、B发起媒体能力重协商。

Proxy向终端A发送reinvite消息,其SDP信息中c行携带终端B的公网 地址,m行携带终端B的公网端口号。

Proxy向终端B发送reinvite消息,其SDP信息中c行携带终端A的公网 地址,m行携带终端A的公网端口号。

至此媒体能力重协商完成。

终端A与终端B的媒体能力重协商完成后,都记录了对端的(媒体码流收 发)公网地址与公网端口号,后续终端A、B可以直接将媒体码流发送到对端 的公网地址与公网端口号即可,实现了NAT的媒体码流穿越,并且无需再经过 Proxy转发。

为使本发明的目的、技术方法和优点表达的更清楚,下面结合附图和场景 2(两个终端都在NAT中)实施例对本发明做更进一步的说明。

终端A位于完全锥形NAT中,本地地址、即私网地址为10.1.1.2,经过 NAT映射的公网地址为192.0.2.1(信令地址与媒体地址相同);本地音频端口 为10200,本地视频端口为10202。

终端B位于完全锥形NAT中,本地地址、即私网地址为10.0.1.3,经过 NAT映射的公网地址为192.0.2.3(信令地址与媒体地址相同);本地音频端口 为10000,本地视频端口为10002。

Proxy位于公网中,公网地址为192.0.2.2。

基于SIP媒体能力重协商的NAT穿越的过程包括:

(1)终端A发起Invite呼叫,SDP信息中携带本地媒体能力,其中c行携 带终端A的本地地址、即私网地址为10.1.1.2;m行携带的本地音频端口为 10200,本地视频端口为10202,相关SDP描述如下:

c=IN IP4 10.1.1.2

m=audio 10200 RTP/AVP980

m=video 10202 RTP/AVP 109 34

(2)Invite消息经过NAT设备到达Proxy,由于媒体码流还未建立,Proxy 无法获取到终端A的媒体码流对应的公网收发地址及端口号,为了让媒体码流 经过Proxy,Proxy为终端A分配一个新的音频端口8510,一个新的视频端口 8512,并将SDP信息c行中的地址替换成Proxy的公网地址,更新后的Invite 消息中SDP相关描述如下:

c=IN IP4 192.0.2.2

m=audio 8510 RTP/AVP 980

m=video 8512 RTP/AVP 109 34

(3)Proxy转发Invite消息到终端B,终端B响应200 OK消息,该消息 中SDP信息携带本地媒体能力,其中c行携带终端B的本地地址、即私网地址 为10.0.1.3,m行携带的本地音频端口为10000,本地视频端口为10002,相关 SDP描述如下:

c=IN IP4 10.0.1.3

m=audio 10000 RTP/AVP 980

m=video 10002 RTP/AVP 109 34

(4)Proxy收到终端的B的200 OK消息,由于媒体码流还未建立,Proxy 无法获取到终端B的媒体码流对应的公网收发地址及端口号,为了让媒体码流 经过Proxy,Proxy同样为终端B分配一个新的音频端口9510,一个新的视频 端口9512,并将SDP信息c行中的地址替换成Proxy的公网地址,更新后的 200 OK消息中SDP相关描述如下:

c=IN IP4 192.0.2.2

m=audio 9510 RTP/AVP 980

m=video 9512 RTP/AVP 109 34

(5)终端A收到Proxy转发的200 OK消息,终端A和B之间的媒体能 力协商完成,终端A返回ACK消息,Proxy转发ACK到终端B,呼叫连接建 立完成。此时Proxy开始在9510、9512端口监听、并接收来自终端A的媒体 码流;在8510、8512端口监听,接收来自终端B的媒体码流;

(6)呼叫连接建立完成后,终端A根据200 OK消息中SDP的相关描述, 将音频、视频码流发往地址192.0.2.2,端口9510、9512;同时在本地地址10.1.1.2 监听10200、10202端口。

上述终端A发送的媒体码流需经过NAT设备到达Proxy,NAT设备截获终 端A发送的媒体码流后,对其源地址(10.1.1.2)和源端口号(10200、10202) 进行转换,得到的公网地址为192.0.2.1,公网端口号分别为38100、38102;Proxy 接收到终端A发送的媒体码流后,记录下转换后的公网地址、端口号与终端A 的映射关系。Proxy丢弃第一个媒体码流数据包,不作转发。

(7)呼叫连接建立完成后,终端B根据Invite消息中SDP的相关描述, 将音频、视频码流发往地址192.0.2.2,端口号分别为8510、8512;同时在本地 地址10.0.1.3监听10000、10002端口。

上述终端B发送的媒体码流需经过NAT设备到达Proxy,NAT设备截获终 端B发送的媒体码流后,对其源地址(10.0.1.3)和源端口号(10000、10002) 进行转换,得到的公网地址为192.0.2.3,公网端口号分别39100、39102;Proxy 接收到终端B发送的媒体码流后,记录下转换后的公网地址、端口号与终端B 的映射关系,对于该媒体码流数据包Proxy同样不作转发。

(8)通过步骤(6)和(7)Proxy收集到了终端A、B各自的(媒体码流 收发)公网地址和公网端口号,建立两者之间的映射关系。

Proxy记录的终端B对应的公网地址是192.0.2.3,公网端口号分别为39100、 39102,为了将该公网地址和公网端口号(即终端A发送媒体码流的目的地址 和目的端口号)通知到终端A,Proxy通过reinvite消息向终端A发起媒体能力 重协商,reinvite消息中SDP相关描述如下:

c=IN IP4 192.0.2.3

m=audio 39100 RTP/AVP 980

m=video 39102 RTP/AVP 109 34

同样的,Proxy记录的终端A的公网地址是192.0.2.1,公网端口号分别为 38100、38102,为了将该公网地址和公网端口号(即终端B发送媒体码流的目 的地址和目的端口号)通知到终端B,Proxy通过reinvite消息向终端B发起媒 体能力重协商,reinvite消息中SDP相关描述如下:

c=IN IP4 192.0.2.1

m=audio 38100 RTP/AVP 980

m=video 38102 RTP/AVP 109 34

如此完成了媒体能力重协商。

(9)终端A收到Proxy的reinvite消息,停止向Proxy(地址192.0.2.2, 端口号9510、9512)发送媒体码流,开始向终端B对应的公网地址192.0.2.3, 公网端口号39100、39102发送媒体码流;终端B收到Proxy的reinvite消息, 停止向Proxy(地址192.0.2.2,端口号8510、8512)发送媒体码流,开始向终 端A的对应的公网地址192.0.2.1,端口号38100、38102发送媒体码流。至此 终端A与终端B实现了媒体码流的直接传输,不再经过Proxy中转。

本发明上述实施例提供的方案在主、被叫双方或其中之一处于完全锥形 NAT时,能够不对现有网络设备进行改造的前提下,通过Proxy实现两个终端 媒体之间直接的通信,节约了升级网络设备的成本,并且降低了数据传输的延 时,减轻了服务器的负载,提高了效率。

为了更好的实现上述技术方案,本发明实施例还提供了一种代理服务器 10,其位于公网,如图8所示,该代理服务器包括:

获取模块11,用于分别接收来自第一终端和第二终端的媒体码流,并获取 第一终端和第二终端的公网地址和公网端口号;第一终端和第二终端中的至少 一个位于私网;

媒体能力重协商模块12,用于发起媒体能力重协商,将获取的第一终端的 公网地址和公网端口号通知给第二终端,将获取的第二终端的公网地址和公网 端口号通知给第一终端。

端口分配模块13,用于通过媒体能力协商过程,分别为第一终端和第二终 端分配端口号,并将为第一终端分配的端口号通知给第二终端,将为第二终端 分配的端口号通知给第一终端;

监听模块14,用于在为第二终端分配的端口号监听、并接收来自第一终端 的媒体码流;在为第一终端分配的端口号监听、并接收来自第二终端的媒体码 流;

获取模块11,还用于从来自第一终端或第二终端的媒体码流中提取并记录 第一终端或第二终端的公网地址和公网端口号。具体的:第一终端或第二终端 位于私网时,第一终端或第二终端的公网地址和公网端口号是由对应的私网地 址和私网端口号转换得到的,具体的:在NAT设备截获到第一终端或第二终端 发送给代理服务器的媒体码流时,将其中的源地址和源端口号(即私网地址和 私网端口号)转换为公网地址和公网端口号;第一终端或第二终端位于公网时, 对应的媒体码流的源地址和源端口号即为第一终端或第二终端的公网地址和公 网端口号。

交互模块15,用于接收来自第一终端的请求消息,通知端口分配模块13 为第一终端分配端口号,并将请求消息转发给第二终端;转发给第二终端的请 求消息中携带代理服务器的公网地址和为第一终端分配的端口号;还用于接收 来自第二终端的响应消息,通知端口分配模块13为第二终端分配端口号,并将 响应消息转发给第一终端;转发给第一终端的响应消息中携带代理服务器的公 网地址和为第二终端分配的端口号。

映射模块16,用于建立第一终端的公网地址、公网端口号与第二终端的公 网地址、公网端口号的映射关系。

媒体能力重协商模块12,还用于通过请求消息分别向第一终端和第二终端 发起媒体能力重协商;发送给第一终端的请求消息中携带第二终端的公网地址 和公网端口号;发送给第二终端的请求消息中携带第一终端的公网地址和公网 端口号。

如图9所示,本发明实施例还提供了一种基于SIP媒体能力重协商的NAT 穿越系统,包括图8所示的代理服务器10、第一终端20和第二终端30,其中:

代理服务器10,用于获取第一终端20和第二终端30的公网地址和公网端 口号;还用于发起媒体能力重协商,将获取的第一终端20的公网地址和公网端 口号通知给第二终端30,将获取的第二终端30的公网地址和公网端口号通知 给第一终端20;

第一终端20,用于向第二终端的公网地址和公网端口号发送媒体码流;

第二终端30,用于向第一终端的公网地址和公网端口号发送媒体码流。

本发明还提供了一种基于SIP媒体能力重协商的NAT穿越装置,包括硬件 处理服务器,用于分别接收来自第一终端和第二终端的媒体码流,并获取第一 终端和第二终端的公网地址和公网端口号;还用于发起媒体能力重协商,将获 取的第一终端的公网地址和公网端口号通知给第二终端,将获取的第二终端的 公网地址和公网端口号通知给第一终端。

以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范 围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号