首页> 中国专利> 穿越防火墙的方法、客户端和媒体穿越服务器

穿越防火墙的方法、客户端和媒体穿越服务器

摘要

本发明提供穿越防火墙的方法、客户端和媒体穿越服务器。该方法包括:确定局域网中客户端的地址;向会话初始化协议SIP服务器发送包含所述客户端的地址的信息;接收所述SIP服务器发送的包含网络侧的媒体穿越服务器MTS地址的信息;根据所述客户端的地址以及所述MTS的地址,建立所述客户端与所述MTS之间的用于传输SIP媒体数据的隧道,所述隧道穿越所述客户端与所述MTS之间的所述局域网的防火墙,所述SIP媒体数据包括实时传输协议RTP数据和实时传输控制协议RTCP数据。本发明实施中,通过在客户端与网络侧的MTS之间的媒体平面建立一条穿越隧道,使得RTP、RTCP等媒体数据都可以通过该隧道进行传输,从而降低了呼叫过程的耗时,提高了用户体验。

著录项

  • 公开/公告号CN103392316A

    专利类型发明专利

  • 公开/公告日2013-11-13

    原文格式PDF

  • 申请/专利权人 华为技术有限公司;

    申请/专利号CN201380000069.8

  • 发明设计人 张旭武;孟斌;

    申请日2013-01-11

  • 分类号H04L12/46;H04L29/06;H04L29/12;

  • 代理机构北京龙双利达知识产权代理有限公司;

  • 代理人王君

  • 地址 518129 广东省深圳市龙岗区坂田华为总部办公楼

  • 入库时间 2024-02-19 21:10:10

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-11-30

    授权

    授权

  • 2013-12-04

    实质审查的生效 IPC(主分类):H04L12/46 申请日:20130111

    实质审查的生效

  • 2013-11-13

    公开

    公开

说明书

技术领域

本发明实施例涉及通信领域,并且更具体地,涉及一种穿越防火墙的方 法、客户端、SIP服务器和媒体穿越服务器。

背景技术

网际协议多媒体子系统(Internet Protocol Multimedia Subsystem,IMS) 作为移动网络和固定网络相融合的基石,广泛应用于各种网络环境中。IMS 采用会话初始化协议(Session Initiation Protocol,SIP)作为会话信令协议, 在客户端与IMS网络之间可以建立一个实时传输协议(Real-Time Transport  Protocol,RTP)的传输通道,以及一条实时传输控制协议(Real-time Transport  Control Protocol,RTCP)传输通道,利用该传输通道可以传输VoIP(Voice of  IP,IP承载语音)等实时数据信息;也可以建立消息会话中继协议(Message  Session Relay Protocol,MSRP)传输通道,利用该通道可以传输视频、游戏、 共享内容等IP多媒体业务。

考虑网络的安全性,企业网络或局域网与公网之间普遍部署了防火墙来 保障内网的安全性。但是,出于安全考虑,防火墙只开放少量的端口,或者 通过HTTP代理方式,只允许超文本传输协议(HTTP,Hypertext Transfer  Protocol)报文通过,造成RTP/RTCP报文无法通过防火墙,导致使得内网 中的客户端无法与IMS网络进行通信,即内网中的客户端与IMS网络之间 存在防火墙的穿越问题。

现有技术中,常见的防火墙穿越问题有:网络地址转换(Network Address  Translation,NAT)问题和限制性防火墙穿越问题。

在NAT问题中,局域网中的客户端使用私有IP地址和端口,不能够直 接与处于公网的IMS网络进行通信,而是由防火墙提供NAT功能,为客户 端分配一个公有地址,然后将此公有地址与该客户端的私有地址绑定后才可 以与公网通信。目前第三代合作伙伴计划(The3rd Generation Partnership, 3GPP)使用交互式连接建立(Interactive Connectivity Establishment,ICE) 方案解决了NAT穿越问题。ICE方案包括STUN(Simple Traversal of UDP  through NAT,UDP包的简单NAT穿越)、TURN(Traversal Using Relay  Network Address Translation,通过Relay方式穿越NAT)以及ICE等多种协 议,其核心思想都是建立客户端的私有地址和公有地址的绑定关系,利用客 户端的公有地址与IMS网络进行通信。

在限制性防火墙穿越问题中,防火墙不但可能限制允许通过的防火墙端 口,也可能限制允许通过防火墙的报文的类型。目前,提出一种ICE over TLS  (Transport Layer Security,传输层安全)穿越方案。该方案对基于TURN的 ICE方案的进行优化,UE与TURN服务器之间协商建立多条TLS隧道,不 同的媒体报文通过不同TLS隧道实现防火墙穿越。但是,由于UE与TURN 建立TLS连接的握手协商过程非常复杂,造成呼叫过程耗时长;而且,由于 不同的TLS隧道封装不同的媒体流,所以每次呼叫UE与TURN服务器之 间都需要建立多条TLS隧道,例如,要传输VoIP业务,UE至少需要与TRUN 服务器之间同时建立承载TURN控制信息的TLS隧道、传输RTP数据的TLS 隧道以及传输RTCP数据的TLS隧道,进一步增加了呼叫过程耗时,用户体 验差。

发明内容

本发明实施例提供一种穿越防火墙的方法、客户端、SIP服务器和媒体 穿越服务器,降低了呼叫过程的耗时,提高了用户体验。

第一方面,提供一种穿越防火墙的方法,包括:确定局域网中客户端的 地址;向会话初始化协议SIP服务器发送包含所述客户端的地址的信息;接 收所述SIP服务器发送的包含网络侧的媒体穿越服务器MTS的地址的信息; 根据所述客户端的地址以及所述MTS的地址,建立所述客户端与所述MTS 之间的用于传输SIP媒体数据的隧道,所述隧道穿越局域网的防火墙,所述 SIP媒体数据包括实时传输协议RTP数据和实时传输控制协议RTCP数据。

结合第一方面,在第一方面的一种实现方式中,所述确定局域网中客户 端的地址包括:确定所述客户端的地址,所述客户端的地址包括客户端的公 有网际协议IP地址和客户端的公有端口。

结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所 述接收所述SIP服务器发送的包含网络侧的MTS的地址的信息包括:接收 所述包含所述MTS的地址的信息,所述MTS的地址包括所述MTS的公有 IP地址和所述MTS的公有端口;则,所述根据所述客户端的地址以及所述 MTS的地址,建立所述客户端与所述MTS之间的用于传输SIP媒体数据的 隧道,包括:根据所述客户端的公有IP地址、所述客户端的公有端口、所 述MTS的公有IP地址以及所述MTS的公有端口,建立所述隧道。

结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,在 所述确定所述客户端的地址之前,还包括:判断所述防火墙是否需要进行网 络地址转换NAT;则,在确定所述防火墙需要进行NAT时,所述确定所述 客户端的地址包括:获取所述客户端的私有IP地址,并分配所述客户端的 私有端口;根据所述客户端的私有IP地址和所述客户端的私有端口查询所 述客户端的公有IP地址和所述客户端的公有端口。

结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所 述根据所述客户端的私有IP地址和所述客户端的私有端口查询所述客户端 的公有IP地址和所述客户端的公有端口包括:获取所述MTS的公有IP地 址;根据所述客户端的私有端口以及所述MTS的公有IP地址,与所述MTS 的特定端口建立传输控制协议TCP连接,所述特定端口的端口号与所述防 火墙允许通过的端口的端口号相同;通过所述TCP连接查询所述客户端的 地址。

结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所 述获取所述MTS的公有IP地址包括:向所述SIP服务器发送用于请求所述 MTS的公有IP地址的请求消息;接收所述SIP服务器发送的请求响应消息, 所述请求响应消息中携带所述MTS的公有IP地址。

结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,在 确定所述防火墙不需要进行NAT时,所述确定所述客户端的地址包括:获 取所述客户端的公有IP地址;探测所述防火墙允许通过的特定端口;将所 述防火墙允许通过的特定端口作为所述客户端的公有端口。

结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,还 包括:确定所述防火墙支持的传输协议,所述传输协议包括TCP和用户数 据包协议UDP中的至少一种;向所述SIP服务器发送用于指示所述传输协 议的信息;当通过所述隧道向所述MTS发送数据时,利用所述传输协议对 所述数据进行封装;当接收所述MTS通过所述隧道发送的数据时,利用所 述传输协议对所述数据进行解封装。

第二方面,提供一种穿越防火墙的方法,包括:接收包含局域网中客户 端的地址的信息;分配媒体穿越服务器MTS的公有端口;向所述客户端发 送包含MTS的地址的信息,所述MTS地址包括所述MTS的公有端口以及 获取的MTS的公有IP地址,并向所述MTS发送包含所述客户端的地址以 及所述MTS的公有端口的信息,以便所述客户端与所述MTS之间建立用于 传输会话初始化协议SIP媒体数据的隧道,所述隧道穿越所述客局域网的防 火墙,所述SIP媒体数据包括实时传输协议RTP数据和实时传输控制协议 RTCP数据。

结合第二方面,在第二方面的一种实现方式中,所述接收包含局域网中 客户端的地址的信息包括:接收所述包含所述客户端的地址的信息,所述客 户端的地址包括所述客户端的公有网际协议IP地址和所述客户端的公有端 口。

结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,所 述分配MTS的公有端口包括:将所述防火墙允许通过的端口的端口号作为 所述MTS的公有端口的端口号。

结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,在 所述接收局域网中客户端的地址之前,还包括:接收所述客户端发送的用于 请求所述MTS的公有IP地址的请求消息;向所述客户端发送请求响应消息, 所述请求响应消息中携带所述MTS的公有IP地址。

结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,还 包括:接收所述客户端发送的用于指示所述防火墙支持的传输协议的信息, 所述传输协议包括TCP和用户数据包协议UDP中的至少一种;向所述MTS 发送用于指示所述传输协议的信息。

结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,还 包括:向所述MTS发送包含媒体网关的地址以及所述客户端的地址的信息。

第三方面,提供一种穿越防火墙的方法,包括:接收会话初始化协议 SIP服务器发送的包含局域网中客户端的地址以及MTS的公有端口的信息; 根据所述客户端的地址以及所述MTS的地址,建立所述MTS与所述客户端 之间的用于传输SIP媒体数据的隧道,所述隧道穿越局域网中的防火墙,所 述SIP媒体数据包括实时传输协议RTP数据和实时传输控制协议RTCP数 据。

结合第三方面,在第三方面的一种实现方式中,所述接收SIP服务器发 送的包含局域网中客户端的地址以及MTS的公有端口的信息包括:接收所 述包含所述客户端的地址以及所述MTS的公有端口的信息,所述客户端的 地址包括所述客户端的公有IP地址和所述客户端的公有端口;则,所述根 据所述客户端的地址以及所述MTS的地址,建立所述MTS与所述客户端之 间的用于传输SIP媒体数据的隧道包括:根据所述客户端的公有IP地址、 所述客户端的公有端口以及所述MTS的地址建立所述隧道,所述MTS的地 址包括所述MTS的公有IP地址和所述MTS的公有端口。

结合第三方面及其上述实现方式,在第三方面的另一种实现方式中,在 所述接收SIP服务器发送的包含局域网中客户端的地址以及MTS的公有端 口的信息之前,还包括:与所述客户端建立传输控制协议TCP连接,以便 所述客户端根据所述TCP连接查询所述客户端的公有IP地址和所述客户端 的公有端口。

结合第三方面及其上述实现方式,在第三方面的另一种实现方式中,还 包括:接收所述SIP服务器发送的用于指示所述防火墙支持的传输协议的信 息,所述传输协议包括TCP和用户数据包协议UDP中的至少一种;当通过 所述隧道向所述客户端发送数据时,利用所述传输协议对所述数据进行封 装;当接收所述客户端通过所述隧道发送的数据时,利用所述传输协议对所 述数据进行解封装。

结合第三方面及其上述实现方式,在第三方面的另一种实现方式中,还 包括:接收所述SIP服务器发送的包含媒体网关的地址以及所述客户端的地 址的信息。

第四方面,提供一种客户端,包括:确定单元,用于确定局域网中客户 端的地址;发送单元,用于向会话初始化协议SIP服务器发送包含所述客户 端的地址的信息;接收单元,用于接收所述SIP服务器发送的包含网络侧的 媒体穿越服务器MTS的地址的信息;建立单元,用于根据所述客户端的地 址以及所述MTS的地址,建立所述客户端与所述MTS之间的用于传输SIP 媒体数据的隧道,所述隧道穿越局域网中的防火墙,所述SIP媒体数据包括 实时传输协议RTP数据和实时传输控制协议RTCP数据。

结合第四方面,在第四方面的一种实现方式中,所述确定单元具体用于 确定所述客户端的地址,所述客户端的地址包括所述客户端的公有网际协议 IP地址和所述客户端的公有端口。

结合第四方面及其上述实现方式,在第四方面的另一种实现方式中,所 述接收单元具体用于接收所述包含所述MTS的地址的信息,所述MTS的地 址包括所述MTS的公有IP地址和所述MTS的公有端口;所述建立单元具 体用于根据所述所述客户端的公有IP地址、客户端的公有端口、所述MTS 的公有IP地址以及所述MTS的公有端口建立所述隧道。

结合第四方面及其上述实现方式,在第四方面的另一种实现方式中,还 包括:判断单元,用于判断所述防火墙是否需要进行网络地址转换NAT;则, 在确定所述防火墙需要进行NAT时,所述确定单元具体用于获取所述客户 端的私有IP地址,并分配所述客户端的私有端口;根据所述客户端的私有 IP地址和所述客户端的私有端口查询所述客户端的公有IP地址和所述客户 端的公有端口。

结合第四方面及其上述实现方式,在第四方面的另一种实现方式中,所 述确定单元具体用于获取所述MTS的公有IP地址;根据所述客户端的私有 端口以及所述MTS的公有IP地址,与所述MTS的特定端口建立传输控制 协议TCP连接,所述特定端口的端口号与所述防火墙允许通过的端口的端 口号相同;通过所述TCP连接查询所述客户端的地址。

结合第四方面及其上述实现方式,在第四方面的另一种实现方式中,所 述确定单元具体用于向所述SIP服务器发送用于请求所述MTS的公有IP地 址的请求消息;接收所述SIP服务器发送的请求响应消息,所述请求响应消 息中携带所述MTS的公有IP地址。

结合第四方面及其上述实现方式,在第四方面的另一种实现方式中,在 确定所述防火墙不需要进行NAT时,所述确定单元具体用于获取所述客户 端的公有IP地址;探测所述防火墙允许通过的特定端口;将所述防火墙允 许通过的特定端口作为所述客户端的公有端口。

结合第四方面及其上述实现方式,在第四方面的另一种实现方式中,所 述确定单元还用于确定所述防火墙支持的传输协议,所述传输协议包括TCP 和用户数据包协议UDP中的至少一种;所述发送单元还用于向所述SIP服 务器发送用于指示所述传输协议的信息;所述客户端还包括:封装单元,用 于当通过所述隧道向所述MTS发送数据时,利用所述传输协议对所述数据 进行封装;解封装单元,用于当接收所述MTS通过所述隧道发送的数据时, 利用所述传输协议对所述数据进行解封装。

第五方面,提供一种会话初始化协议SIP服务器,包括:接收单元,用 于接收包含局域网中客户端的地址的信息;分配单元,用于分配媒体穿越服 务器MTS的公有端口;发送单元,用于向所述客户端发送包含所述MTS的 地址的信息,所述MTS地址包括所述MTS的公有端口以及获取的MTS的 公有IP地址,并向所述MTS发送包含所述客户端的地址以及所述MTS的 公有端口的信息,以便所述客户端与所述MTS之间建立用于传输会话初始 化协议SIP媒体数据的隧道,所述隧道穿越所述客户端与所述MTS之间的 局域网的防火墙,所述SIP媒体数据包括实时传输协议RTP数据和实时传输 控制协议RTCP数据。

结合第五方面,在第五方面的一种实现方式中,所述接收单元具体用于 接收所述包含所述客户端的地址的信息,所述客户端的地址包括所述客户端 的公有网际协议IP地址和所述客户端的公有端口;所述向所述客户端发送 所述MTS的地址包括:向所述客户端发送所述MTS的地址,所述MTS的 地址包括所述MTS的公有IP地址和所述MTS的公有端口。

结合第五方面及其上述实现方式,在第五方面的另一种实现方式中,所 述分配单元具体用于将所述防火墙允许通过的端口的端口号作为所述MTS 的公有端口的端口号。

结合第五方面及其上述实现方式,在第五方面的另一种实现方式中,所 述接收单元还用于接收所述客户端发送的用于请求所述MTS的公有IP地址 的请求消息;向所述客户端发送请求响应消息,所述请求响应消息中携带所 述MTS的公有IP地址。

结合第五方面及其上述实现方式,在第五方面的另一种实现方式中,所 述接收单元还用于接收所述客户端发送的用于指示所述防火墙支持的传输 协议的信息,所述传输协议包括TCP和用户数据包协议UDP中的至少一种; 所述发送单元还用于向所述MTS发送用于指示所述传输协议的信息。

结合第五方面及其上述实现方式,在第五方面的另一种实现方式中,所 述发送单元还用于向所述MTS发送包含媒体网关的地址以及所述客户端的 地址的信息。

第六方面,提供一种穿越隧道服务器MTS,包括:接收单元,用于接 收会话初始化协议SIP服务器发送的包含局域网中客户端的地址以及MTS 的公有端口的信息;建立单元,用于根据所述客户端的地址以及所述MTS 的地址,建立所述MTS与所述客户端之间的用于传输SIP媒体数据的隧道, 所述隧道穿越局域网的防火墙,所述SIP媒体数据包括实时传输协议RTP 数据和实时传输控制协议RTCP数据。

结合第六方面,在第六方面的一种实现方式中,所述接收单元具体用于 接收所述包含所述客户端的地址以及所述MTS的公有端口的信息,所述客 户端的地址包括所述客户端的公有IP地址和所述客户端的公有端口;则, 所述建立单元具体用于根据所述客户端的公有IP地址、所述客户端的公有 端口以及所述MTS的地址建立所述隧道,所述MTS的地址包括所述MTS 的公有IP地址和所述MTS的公有端口。

结合第六方面及其上述实现方式,在第六方面的另一种实现方式中,所 述建立单元还用于与所述客户端建立传输控制协议TCP连接,以便所述客 户端根据所述TCP连接查询所述客户端的公有IP地址和所述客户端的公有 端口。

结合第六方面及其上述实现方式,在第六方面的另一种实现方式中,所 述接收单元还用于接收所述SIP服务器发送的用于指示所述防火墙支持的传 输协议的信息,所述传输协议包括TCP和用户数据包协议UDP中的至少一 种;所述MTS还包括:封装单元,用于当通过所述隧道向所述客户端发送 数据时,利用所述传输协议对所述数据进行封装;解封装单元,用于当接收 所述客户端通过所述隧道发送的数据时,利用所述传输协议对所述数据进行 解封装。

结合第六方面及其上述实现方式,在第六方面的另一种实现方式中,所 述接收单元还用于接收所述SIP服务器发送的包含媒体网关的地址以及所述 客户端的地址的信息。

本发明实施中,通过在客户端与网络侧的MTS之间的媒体平面建立一 条穿越隧道,使得RTP、RTCP等媒体数据都可以通过该隧道进行传输,从 而降低了呼叫过程的耗时,提高了用户体验。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中 所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的 前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例的一种穿越防火墙的系统架构图。

图2是本发明一个实施例的穿越防火墙的方法的流程图。

图3是本发明另一个实施例的穿越防火墙的方法的流程图。

图4是本发明另一个实施例的穿越防火墙的方法的流程图。

图5是本发明另一个实施例的穿越防火墙的方法的流程图。

图6是本发明另一个实施例的穿越防火墙的方法的流程图。

图7是本发明另一个实施例的穿越防火墙的方法的流程图。

图8是本发明另一个实施例的穿越隧道的方法的流程图。

图9是本发明另一个实施例的穿越隧道的方法的流程图。

图10是本发明一个实施例的隧道的封装方式的示意图。

图11是本发明一个实施例的客户端的框图。

图12是本发明一个实施例的SIP服务器的框图。

图13是本发明一个实施例的MTS的框图。

图14是本发明另一个实施例的客户端的框图。

图15是本发明另一个实施例的SIP服务器的框图。

图16是本发明另一个实施例的MTS的框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行 清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不 是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创 造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。

应理解,本发明的技术方案可以应用于各种通信系统,例如:全球移动 通讯(Global System of Mobile communication,GSM)系统、码分多址(Code  Division Multiple Access,CDMA)系统、宽带码分多址(Wideband Code  Division Multiple Access,WCDMA)系统、通用分组无线业务(General Packet  Radio Service,GPRS)、长期演进(Long Term Evolution,LTE)系统、先进 的长期演进(Advanced long term evolution,LTE-A)系统、通用移动通信系 统(Universal Mobile Telecommunication System,UMTS)等。

还应理解,在本发明实施例中,客户端可以是位于局域网中的实体,例 如可以是UE,还可以是UE中的逻辑单元。。

需要说明的是,本专利申请文件中提到的限制性防火墙可以指防火墙的 端口受限也可以是报文类型受限,例如,防火墙只开放80或443等少量端 口;也可以指防火墙对允许通过的报文类型受限,例如,只允许通过TCP 报文,或只允许通过UDP报文;还可以是上述两种情况的组合。

还需要说明的是,本专利申请文件中提到的防火墙需要进行NAT,即防 火墙存在NAT穿越问题,是指局域网中的客户端使用私有IP地址,不能够 直接与公网进行通信。当需要与公网进行通信时,防火墙提供NAT功能, 为UE分配一个公有IP地址,然后将客户端私有IP地址与公有IP地址绑定, 才能与公网进行通信。

图1是本发明实施例的一种穿越防火墙的系统架构图。

如图1所述,客户端位于局域网中,MTS位于网络侧,MTS可以集成 在媒体网关中,也可以是独立的实体。

本发明实施例利用SIP服务器在客户端与MTS之间建立一条传输SIP 媒体数据的隧道,通过这条隧道既可以传输RTP数据,也可以传输RTCP 数据。

本发明实施中,通过在客户端与网络侧的MTS之间的媒体平面建立一 条穿越隧道,使得RTP、RTCP等媒体数据都可以通过该隧道进行传输,从 而降低了呼叫过程的耗时,提高了用户体验。

基于图1所示的系统架构,本发明一个实施例提供一种穿越防火墙的方 法,该方法可以由局域网中的客户端执行,例如可以是UE。如图2所示, 该方法包括:

S201、确定局域网中客户端的地址;

S202、向会话初始化协议SIP服务器发送包含客户端的地址的信息;

S203、接收SIP服务器发送的包含网络侧的媒体穿越服务器MTS的地 址的信息;

S204、根据客户端的地址以及MTS的地址,建立客户端与MTS之间的 用于传输SIP媒体数据的隧道,隧道穿越局域网的防火墙,SIP媒体数据包 括实时传输协议RTP数据和实时传输控制协议RTCP数据。

本发明实施中,通过在客户端与网络侧的MTS之间的媒体平面建立一 条穿越隧道,使得RTP、RTCP等媒体数据都可以通过该隧道进行传输,从 而降低了呼叫过程的耗时,提高了用户体验。

应理解,S201中的客户端位于局域网中,客户端的地址用于建立隧道, 即作为隧道在局域网侧的终结点的地址。其中,客户端可以是实体,例如可 以是UE,也可以是能实现图2中各个步骤的逻辑单元。本发明实施例对客 户端的地址的具体形式不作限定,例如,可以是客户端的公有IP地址和客 户端的公有端口。应理解,上述客户端的公有端口是指客户端的公有IP地 址所对应的客户端的端口。

应理解,S203中的MTS位于网络侧,MTS的地址是用于建立隧道,即 作为隧道在网络侧的终结点的地址。其中,MTS可以是独立的实体,也可 以是集成在现有IMS-AGW上的功能模块。本发明实施例对MTS的地址的 具体形式不作限定,例如,可以是MTS的公有IP地址和公有端口。应理解, 上述MTS的公有端口是指MTS的公有IP地址所对应的MTS的端口也可以 是其他可以标识该客户端位置的信息,本发明实施例以MTS的地址包括 MTS的公有IP地址和公有端口为例进行说明。

应理解,S204中的隧道用于传输媒体数据,不用于传输信令数据,这 样更符合目前3GPP标准中媒体数据与信令数据分离的架构,在媒体和信令 数据流增长不对称时,更容易扩容。

应理解,本发明实施例对确定局域网中客户端的地址(即客户端的公有 IP地址和客户端的公有端口)的具体方式不作限定。

可选地,作为一个实施例,当局域网中的防火墙需要进行NAT时,确 定客户端的公有IP地址和客户端的公有端口可包括:获取客户端的私有IP 地址,并分配客户端的私有端口;根据客户端的私有IP地址和客户端的私 有端口查询客户端的公有IP地址和客户端的公有端口。

需要说明的是,本发明实施例对上述根据私有IP地址和客户端的私有 端口查询客户端的公有IP地址和客户端的公有端口的具体方式不作限定, 例如,可以根据现有的STUN协议或TURN协议进行查询。

可选地,作为另一个实施例,还可以通过获取MTS的公有IP地址;根 据客户端的私有端口以及MTS的公有IP地址,与MTS的公有IP地址的特 定端口建立传输控制协议TCP连接,特定端口的端口号与防火墙允许通过 的端口的端口号相同;通过TCP连接查询客户端的地址。通过事先建立TCP 连接的方式查询客户端的公有IP地址和公有端口,然后在这条TCP连接的 基础上建立隧道,使得客户端侧与MTS之间建立的隧道无需执行隧道路径 探测,缩短了信令交互流程。

需要说明的是,本发明实施例对上述获取MTS的公有IP地址的具体方 式不作限定。例如,可以向SIP服务器发送用于请求MTS的公有IP地址的 请求消息;接收SIP服务器发送的请求响应消息,请求响应消息中携带MTS 的公有IP地址。应理解,上述请求消息可以是客户端向SIP服务器(在IMS 网络中为P-CSCF)发送的注册消息,也可以是呼叫请求消息。

可选地,作为另一个实施例,当局域网中的防火墙不需要进行NAT时, 确定客户端的公有IP地址和客户端的公有端口可包括:获取客户端的公有 IP地址;探测防火墙允许通过的特定端口;将防火墙允许通过的特定端口作 为客户端的公有端口。

可选地,作为一个实施例,图2的方法还可包括:确定防火墙支持的传 输协议,传输协议包括TCP和用户数据包协议UDP中的至少一种;向SIP 服务器发送用于指示传输协议的信息;当通过隧道向MTS发送数据时,利 用传输协议对数据进行封装;当接收MTS通过隧道发送的数据时,利用传 输协议对数据进行解封装。

上文中结合图2,从客户端的角度详细描述了根据本发明实施例的穿越 防火墙的方法,下面将结合图3,从SIP服务器的角度描述根据本发明实施 例的穿越防火墙的方法。

应理解,SIP服务器侧描述的客户端与SIP服务器的交互及相关特性、 功能等与客户端侧的描述相应,为了简洁,适当省略重复的描述。

图3是本发明另一个实施例的穿越防火墙的方法的流程图。图3的方法 可以由SIP服务器执行,例如可以是IMS网络中的P-CSCF。

S301、接收包含局域网中客户端的地址的信息;

S302、分配媒体穿越服务器MTS的公有端口;

S303、向客户端发送包含MTS的地址的信息,所述MTS地址包括所述 MTS的公有端口以及获取的MTS的公有IP地址,并向MTS发送包含客户 端的地址以及MTS的公有端口,以便客户端与MTS之间建立用于传输会话 初始化协议SIP媒体数据的隧道的信息,隧道穿越局域网中的防火墙,SIP 媒体数据包括实时传输协议RTP数据和实时传输控制协议RTCP数据。

本发明实施中,通过在客户端与网络侧的MTS之间的媒体平面建立一 条穿越隧道,使得RTP、RTCP等媒体数据都可以通过该隧道进行传输,从 而降低了呼叫过程的耗时,提高了用户体验。

可选地,作为一个实施例,S301中的接收包含局域网中客户端的地址 的信息包括:接收包含客户端的地址的信息,客户端的地址包括客户端的公 有网际协议IP地址和客户端的公有端口。

可选地,作为另一个实施例,S302中的分配MTS的公有端口可包括: 将防火墙允许通过的端口的端口号作为MTS的公有端口的端口号。还可以 将客户端的公有端口作为所述MTS的公有端口,本发明实施例对此并不作 限定。

可选地,作为另一个实施例,在接收局域网中客户端的地址之前,还可 包括:接收客户端发送的用于请求MTS的公有IP地址的请求消息;向客户 端发送请求响应消息,请求响应消息中携带MTS的公有IP地址。

可选地,作为另一个实施例,图3的方法还可包括:接收客户端发送的 用于指示防火墙支持的传输协议的信息,传输协议包括TCP和用户数据包 协议UDP中的至少一种;向MTS发送用于指示传输协议的信息。

可选地,作为另一个实施例,图3的方法还包括:向所述MTS发送包 含媒体网关的地址以及所述客户端的地址的信息。上述地址可包括客户端用 于进行RTP、RTCP数据传输的IP地址和端口和媒体网关用于进行RTP、 RTCP数据传输的IP地址和端口。

上文中结合图2和图3,分别从客户端和SIP服务器的角度详细描述了 根据本发明实施例的穿越防火墙的方法,下面将结合图4,从MTS的角度 描述根据本发明实施例的穿越防火墙的方法,MTS可以是集成在媒体网关 (Media Gateway,MGW)中的新增的逻辑单元,也可以是布置在网络侧的 新的实体网元。

应理解,媒体网关侧描述的媒体网关与UE以及SIP服务器的交互及相 关特性、功能等与UE侧和SIP服务器侧的描述相应,为了简洁,适当省略 重复的描述。

图4是本发明另一个实施例的穿越防火墙的方法的流程图。图4的方法 可以由MTS执行。

S401、接收会话初始化协议SIP服务器发送的包含局域网中客户端的地 址以及MTS的公有端口的信息;

S402、根据客户端的地址以及MTS的地址,建立MTS与客户端之间的 用于传输SIP媒体数据的隧道,隧道穿越局域网的防火墙,SIP媒体数据包 括实时传输协议RTP数据和实时传输控制协议RTCP数据。

本发明实施中,通过在客户端与网络侧的MTS之间的媒体平面建立一 条穿越隧道,使得RTP、RTCP等媒体数据都可以通过该隧道进行传输,从 而降低了呼叫过程的耗时,提高了用户体验。

可选地,作为一个实施例,接收SIP服务器发送的包含局域网中客户端 的地址以及MTS的公有端口的信息可包括:接收包含客户端的地址以及 MTS的公有端口的信息,客户端的地址包括客户端的公有IP地址和客户端 的公有端口;则,根据客户端的地址以及MTS的地址,建立MTS与客户端 之间的用于传输SIP媒体数据的隧道包括:根据客户端的公有IP地址、客 户端的公有端口以及MTS的地址建立隧道,MTS的地址包括MTS的公有 IP地址和MTS的公有端口。

可选地,作为另一个实施例,在接收SIP服务器发送的包含局域网中客 户端的地址以及MTS的公有端口的信息之前,还可包括:与客户端建立传 输控制协议TCP连接,以便客户端根据TCP连接查询客户端的公有IP地址 和客户端的公有端口。

可选地,作为另一个实施例,图4的方法还可包括:接收SIP服务器发 送的用于指示防火墙支持的传输协议的信息,传输协议包括TCP和用户数 据包协议UDP中的至少一种;当通过隧道向客户端发送数据时,利用传输 协议对数据进行封装;当接收客户端通过隧道发送的数据时,利用传输协议 对数据进行解封装。

可选地,作为另一个实施例,图4的方法还可包括:接收SIP服务器发 送的包含媒体网关的地址以及客户端的地址的信息。

下面结合具体例子,更加详细地描述本发明实施例。应注意,图5至图 9的例子仅仅是为了帮助本领域技术人员理解本发明实施例,而非要将本发 明实施例限于所例示的具体数值或具体场景。本领域技术人员根据所给出的 图5至图9的例子,显然可以进行各种等价的修改或变化,这样的修改或变 化也落入本发明实施例的范围内。

还应注意,图5至图9的实施例是以局域网中的客户端与公网中的IMS 网络进行通信来举例说明的,但本发明实施例并不限于此,例如,还可以是 其他非IMS网络的SIP类业务场景,如non-3GPP接入EPC应用场合中, UE使用WiFi接入方式进行非IMS的VoIP呼叫,由于网络侧部署了防火墙, 只开放了80端口,导致无法进行VoIP会话,采用本方案能够解决上述场景 下的穿越问题。

还应注意,图5至图9中的媒体穿越客户端(Media Traversal Client, MTC)可以集成在UE上,例如,可以是UE上的逻辑单元,也可以是实体 装置,本发明以UE集成MTC为例进行说明,即图5-图9中的UE可以执 行图1-图4中的由客户端执行的各个步骤;图5-图9中的MTS可以是集成 在IMS-AGW上的逻辑单元,也可以是独立的实体,本发明实施例对此不作 限定。

还应注意,图5至图9中的媒体穿越客户端(Media Traversal Client, MTC)集成在UE上。UE可以实现图1-图3中的描述的由客户端执行的各 个步骤。

图5是本发明另一个实施例的穿越防火墙的方法的流程图。在图5的实 施例中,客户端所在局域网的防火墙存在NAT穿越问题,且UE待发起的会 话类型为VoIP。

S501、UE按照现有技术从80或者443端口完成IMS注册。

S502~S503、P-CSCF根据收到UE发过来注册(REGISTER)请求判断 是否存在NAT穿越问题,如果网络层的源IP地址和传输层的源端口与请求 报文中Contact的IP地址和端口不一致,则存在NAT穿越问题,采用重量 级的防火墙穿越方案(指存在NAT穿越问题时所采用的穿越防火墙的方案), 即本发明实施例的方案,如果一致则不存在NAT穿越问题,采用轻量级的 穿越方案(指不存在NAT穿越问题时所采用的穿越防火墙的方案),即图6 实施例的穿越方案。

S504~S505、UE确定准备发起的会话类型为VoIP,则采用隧道方式进 行穿越,转S506,如果确定会话类型为MSRP会话,则采用非隧道的MSRP 穿越方法,即图6实施例中的S601至S611的方案。

S506、客户端分配客户端的私有PT1,即穿越隧道的客户端MTC的私 有IP地址P1私有端口为PT1。分配的方法为:存在NAT场景下可以使用 随机分配方式分配穿越隧道端口,不存在NAT场景下,根据UE发起会话请 求前进行防火墙可穿越端口探测结果选取端口,或者直接采用特定的端口如 80或者443端口作为穿越隧道。

S507~S509、UE中MTC模块采用STUN协议查询到MTC的公有IP地 址为IP1n,MTC的公有端口PT1n,并确定防火墙允许通过哪种传输协议, 是TCP协议还是UDP协议。

S510、UE发起VoIP的INVITE请求,在SDP中携带建立穿越隧道的 客户端信息,包括MTC公有地址、私有地址和隧道封装类型,隧道封装类 型包括UDP封装模式(UDP-encaps)、TCP封装模式(TCP-encaps),上述 隧道的封装类型与图1-图3中描述的防火墙支持的传输协议相同,当然,该 隧道还可以采用不进行隧道封装的透明传输模式(transp)。SDP通过下面两 种方式携带穿越隧道客户端信息:

1)在现有SDP协议中的a=candidate描述行,添加一个特殊的参数描述 隧道封装类型,格式为a=candidate:<现有协议的参数><tunnel><tunnel  type>。

2)在SDP body中专门添加一个SDP描述行,专门用于描述包括公有 地址、私有地址、隧道封装模式等穿越隧道相关信息,例如采用的格式为: a=tunnel:<公有地址><私有地址><tunnel type>。

S511、P-CSCF根据UE发过来的隧道封装类型信息决定是否需要为隧 道分配MTS端口,如果为透传模式,则不给MTS分配端口,只给MGW分 配端口;如果为UDP或者TCP封装模式,则根据隧道客户端地址信息判定 是否存在NAT穿越,判别方法为SDP中candidate行中如有srflx标志,则 存在NAT问题,MTS端的端口为特定的穿越端口,如HTTP协议默认端口 80或者HTTPS默认端口443;如有host标志,则认为不存在NAT问题, MTS的端口分配成和MTC一样端口或者分配特定的穿越端口,如443或者 80端口。

S512、P-CSCF通过H.248将穿越隧道双方地址和封装格式,以及将需 要封装的媒体数据的通信双方地址相关信息通过H.248协议或者其他控制协 议传给MTS,MTS根据P-CSCF发过的信息,建立媒体流和穿越隧道之间 的对应关系。

S513、和正常的IMS会话一样,P-CSCF将建立RTP/RTCP媒体信息发 给媒体网关MGW,建立RTP/RTCP连接。

S514、P-CSCF通过1xx或者200OK会话响应消息发给UE,SDP携带 MTS的公有地址和隧道封装模式。

S515、MTS判定存在NAT穿越问题,例如,可以通过SIP服务器发送 的指示防火墙是否具有NAT穿越问题的标识判定,则和UE执行连接可达性 检查,采用现有技术的STUN路径可行的检查机制。

S516、UE确认隧道连接是可达的后,发ACK消息,确认VoIP媒体协 商完成。

S517~S518、UE中MTC模块和MTS作为穿越隧道的业务终结点,执 行VoIP数据包的封装/解开处理,封装方式如图10所示,整个VoIP数据包 作为净荷被封装在隧道数据包中,隧道报头的IP地址为MTS和MTC的公 有地址。MTS/MTC解开隧道数据包后,根据原VoIP数据包的地址进行转发。

S519、通话过程中UE和MTS进行周期性NAT地址绑定保活交互。

本发明实施中,通过在客户端与网络侧的MTS之间的媒体平面建立一 条穿越隧道,使得RTP、RTCP等媒体数据都可以通过该隧道进行传输,从 而降低了呼叫过程的耗时,提高了用户体验。

图6是本发明另一个实施例的穿越防火墙的方法的流程图。在图6的实 施例中,UE所在局域网的限制性防火墙存在NAT穿越问题,且UE待发起 的会话类型为MSRP。由于MSRP能够通过HTTP端口80或者443进行传 输,因此MSRP不使用UDP/TCP隧道方式进行穿越,由UE和媒体网关直 接通过HTTP/HTTPS端口协商建立MSRP连接。

S601、UE通过注册消息确定存在NA(P)T,准备进行MSRP会话, MSRP用于传送IM、内容共享、文件传送等非实时业务数据,UE给MSRP 会话分配专门的私有端口PTx,MSRP专门的MSRP穿越端口可以根据防火 墙实际开放端口进行设置,例如设置成HTTP协议默认端口80端口等。

S602~S604、UE通过STUN方式查询到MSRP穿越隧道客户端的公有 地址为IP1n/PTxn。

S605、UE通过INVITE消息,将MSRP穿越隧道客户端私有IP地址IP1, 私有端口PTx,公有IP地址IP1n,公有端口PTxn以及隧道封装类型为透传 模式等信息通知P-CSCF。

S606、P-CSCF获知隧道封装类型为透传模式后,也像UE一样,为MGW 分配专门的MSRP穿越端口,如80端口或者443端口,不为MTS分配用于 MSRP穿越的端口,也就是说MSRP穿越不经过MTS,UE和MGW直接建 立MSRP连接。

S607、和正常IMS MSRP会话方案一样,P-CSCF将建立MSRP连接的 信息告诉MGW。

S608、P-CSCF通过1xx或者200OK响应消息,将MGW的地址和端 口信息告诉UE,并通知隧道类型为透传模式。

S609~S610、UE和MGW执行MSRP路径可达性检查,确认MSRP连 接可到达后,UE发建立MSRP通道完成确认消息。

S611、MTC对收到MSRP消息不做任何封装处理,直接透传给IMS客 户端。

S612、MSRP传输过程,UE和MGW使用STUN协议,进行周期性NA (P)T地址绑定保活交互。

本发明实施中,通过在客户端与网络侧的MTS之间的媒体平面建立一 条穿越隧道,使得RTP、RTCP等媒体数据都可以通过该隧道进行传输,从 而降低了呼叫过程的耗时,提高了用户体验。

图7是本发明另一个实施例的穿越防火墙的方法的流程图。在图7的实 施例中,UE所在局域网的限制性防火墙不存在NAT穿越问题。同图4实施 例的主要区别为省略公有地址绑定查询、连接可达性检查、STUN keep-alive 等NAT相关处理流程,分配MTS的穿越隧道端口和MTC的端口是一样的, 而不是随机分配,穿越流程包括下面步骤:

S701~S702、UE按照现有技术,通过443或者80端口完成IMS注册, P-CSCF通过检查SIP消息中网络层地址和contact中的地址为一致,则认为 防火墙没有NAT,则决定采用轻量级防火墙穿越方案。

S703~S704、UE在完成注册后采用现有的STUN技术或者其他端口扫 描技术,探测防火墙允许的端口和其传输协议,UE根据现网情况配置端口 探测范围,如443、80的端口。

S705、UE准备发起VoIP会话,为穿越隧道分配MTC的端口PT1;分 配方法为:UE确定不存在NA(P)T场景后,根据防火墙探测结果,优先选 择UDP报文可通过的端口作为穿越隧道端口,或者直接分配一个特定的专 门用于穿越隧道的端口,如80或者443端口。

S706、UE通过INVITE消息将客户端私有IP地址IP1,私有端口PT1 和隧道封装类型(即防火墙支持的传输协议)通知P-CSCF,通知的方法有 下面两种:

1)在现有SDP协议中的a=candidate行,添加一个特殊的参数描述描述 隧道封装类型,格式为a=candidate:<现有协议的参数><tunnel><tunnel  type>。

2)在SDP body中专门添加一个SDP描述行,专门用于描述穿越隧道 相关信息,例如采用的格式为:a=tunnel:<公有IP><公有port><tunnel  type>。

S707、P-CSCF根据UE发过来的隧道封装类型和隧道客户端地址信息, 获知隧道为非透传模式且为非NAT下的场景下的穿越,则给MTS分配和 MTC相同的端口号。

S708、P-CSCF通过H.248将穿越隧道双方地址和封装格式,以及将需 要封装的媒体数据的通信双方地址信息通过H.248协议或者其他控制协议传 给MTS,建立媒体流和穿越隧道之间的对应关系。

S709、和正常的IMS会话一样,P-CSCF将建立RTP/RTCP媒体信息发 给媒体网关MGW,建立RTP/RTCP连接。

S710、P-CSCF通过1xx或者200OK响应消息将穿越隧道服务器端地 址,即MTS的IP和端口即隧道封装类型发给UE。

S711、MTS根据P-CSCF转发过来的隧道客户端地址信息判定为非NAT 场景下的穿越,则不执行连接路径可达性检查。

S712、UE不执行路径可达性检查,直接发隧道建立完成和媒体协商完 成确认信息给P-CSCF。

S713~S714、UE中MTC模块和MTS作为穿越隧道的业务终结点,执 行VoIP数据包的封装/解开处理,封装方式如附图10所示,整个VoIP数据 包作为净荷被封装在隧道数据包中,隧道报头的IP地址为MTS和MTC的 公有地址。MTS/MTC解开隧道数据包后,根据原VoIP数据包的地址进行转 发。MTC和MTS不再执行NAT地址绑定保活流程。

S715、UE决定发起MSRP会话,给MSRP会话分配专门的防火墙穿越 端口PTx,MSRP专门的MSRP穿越端口可以根据防火墙实际开放端口进行 设置,例如设置成HTTP协议默认端口80端口等。

S716、UE通过INVITE消息,将MSRP穿越隧道客户端公有IP地址IP1, 公有端口PTx以及隧道封装类型为透传模式等信息通知P-CSCF。

S717、P-CSCF根据UE的穿越隧道地址和封装模式信息,获知隧道为 透传模式且非NAT场景,则给MGW分配和UE一样的MSRP端口,不分 配MTS的MSRP端口。

S718、和正常IMS MSRP会话方案一样,P-CSCF将建立MSRP连接的 信息告诉MGW。

S719、P-CSCF通过1xx或者200会话响应消息将MGW的IP和MSRP 端口已经穿越隧道为透传模式信息通知UE。

S720、UE不执行路径可达性检查,直接发送媒体协商完成确认消息给 P-CSCF。

S721、MTC根据隧道类型为透传模式,对该MSRP会话连接的报文进 行透传处理,至此UE和IMS网络的MSRP会话建立完成。

本发明实施中,通过在客户端与网络侧的MTS之间的媒体平面建立一 条穿越隧道,使得RTP、RTCP等媒体数据都可以通过该隧道进行传输,从 而降低了呼叫过程的耗时,提高了用户体验。

图8是本发明另一个实施例的穿越隧道的方法的流程图。同图4的实施 例的主要区别是UE没有发起INVITE会话请求之前,先和MTS建立TCP 连接,然后在通过SDP offer/answer方式,UE和网络协商将VoIP媒体流通 过这条事先建好的TCP连接封装,UE和MTS不用再进行穿越路径可达性 检查,但是VoIP媒体流只能采用TCP隧道封装,不能采用UDP隧道封装, MGW和MTS都要集成ICE-lite功能。

S801、UE发起IMS注册请求。

S802、P-CSCF根据REGISTER消息的地址信息判定存在NAT问题, 通过注册响应消息将MTS信息通知UE,在注册响应消息携带MTS和MGW 的IP地址信息,携带方法为在SIP消息中增加一个扩展头域或者在现有的 SIP头域基础上增加参数,携带MTS和MGW地址信息。如果判定为非NAT 问题则采用实施例二中的轻量级穿越方案。

S803、UE确定将要发起VoIP会话,准备采用TCP隧道方式穿越防火 墙,UE分配TCP穿越隧道的端口,即MTC的端口PT1。

S804~S805、MTC通过PT1端口向MTS的特定端口发起一条TCP连接, MTS的特定端口可以根据防火墙允许通过的端口范围进行配置,如设置为 HTTP协议默认端口80或者HTTPS协议默认端口443端口,这一条TCP在 通话过程中一直保持着,知道通话结束。

S806~S807、MTS集成ICE-Lite功能,UE通过步骤S805建立的TCP 连接,向MTS查询MTC的公有IP地址IP1n,公有端口PT1n或者请求分 配MTC的公有IP地址IPa,公有端口PT1n,本发明举例采用STUN方式查 询MTC公有地址,采用TURN方式申请MTC公有地址,建立穿越隧道的 方法和STUN方式类似,这里不再举例。

S808、UE起VoIP的INVITE请求,在SDP中携带建立穿越隧道的客 户端信息,包括MTC公有IP地址和公有端口(IP1n,PT1n)、私有IP地址和 私有端口(IP1,PT1)和隧道封装类型为TCP隧道封装模式,采用下面两种方 式携带穿越隧道客户端信息:

1)在现有SDP协议中的a=candidate描述行,添加一个特殊的参数描述 隧道封装类型,格式为a=candidate:<现有协议的参数><tunnel><tunnel  type>。

2)在SDP body中专门添加一个SDP描述行,专门用于描述包括公有 地址、私有地址、隧道封装模式等穿越隧道相关信息,例如采用的格式为: a=tunnel:<公有地址><私有地址><tunnel type>。

S809、P-CSCF分配设置的特定端口80为TCP隧道的端口,即TCP隧 道网络侧的地址为S805建立TCP连接的MTS地址。

S810、P-CSCF将TCP隧道的通信双方的地址和封装模式为TCP封装 以及将需要封装的媒体数据的通信双方地址相关信息通过H.248协议或者其 他控制协议传给MTS,MTS根据P-CSCF发过的信息,建立媒体和穿越隧 道之间的对应关系811、和正常的IMS会话一样,P-CSCF将建立RTP/RTCP 媒体信息发给媒体网关MGW,建立RTP/RTCP连接。

S812、P-CSCF将TCP隧道的MTS侧的地址信息和封装模式为TCP隧 道模式通过会话响应消息200OK或者1xx消息通知UE。

S813、UE和MTS无需执行路径,UE直接发会话成功确认消息ACK 给网络。

S814、UE和MTS作为TCP穿越隧道的业务终结点,执行VoIP数据包 的TCP封装/解开处理,封装方式如附图10,TCP封装格式所示,整个VoIP 数据包作为净荷被封装在TCP隧道数据包中,隧道报头的IP地址为MTS 和MTC的公有地址。MTS/MTC解开隧道数据包后,根据原VoIP数据包的 地址进行转发。

S815、通话过程中UE和MTS进行周期性NA(P)T地址绑定保活交 互。

S816、UE决定发起MSRP会话,给MSRP会话分配端口PTx。

S817、UE中MTC模块通过PTx端口和媒体网关MGW特定端口建立 一条TCP连接,这一条TCP保持长连接,知道会话结束后才终止,MGW 集成ICE-lite功能。MGW用于MSRP穿越的特定端口可以根据防火墙允许 通过的端口范围进行设置,例如设置为HTTP协议默认端口80或者HTTPS 协议默认端口443端口,本发明实施例举例为80端口。

S818、MTC通过和S806、S807相同的方法向MGW查询MSRP的公 有地址IP1n,PTxn。

S819、UE通过INVITE消息,将MSRP穿越隧道客户端私有IP地址IP1, 和私有端口PTx,公有IP地址IP1n和公有端口PTxn以及隧道封装类型为 透传模式等信息通知P-CSCF。

S820、P-CSCF获知隧道封装类型为透传模式后,为MGW分配特定的 MSRP穿越端口80,不为MTS分配用于MSRP穿越的端口,也就是说MSRP 穿越不经过MTS,UE和MGW直接建立MSRP连接。

S821、和正常IMS MSRP会话方案一样,P-CSCF将建立MSRP连接的 信息告诉MGW。

S822、P-CSCF通过1xx或者200OK响应消息,将MGW的地址信息 (IPb,80)告诉UE,并通知隧道类型为透传模式。

S823、UE和网络无需做路径可达性检查,直接发ACK会话成功确认消 息给网络。

S824、MTC对收到MSRP消息不做任何封装处理,直接透传给IMS客 户端。

本发明实施中,通过在客户端与网络侧的MTS之间的媒体平面建立一 条穿越隧道,使得RTP、RTCP等媒体数据都可以通过该隧道进行传输,从 而降低了呼叫过程的耗时,提高了用户体验。

图9是本发明另一个实施例的穿越隧道的方法的流程图。同图8的实施 例的主要区别是UE获取MTS或者MGW的方式不同,P-CSCF不通过注册 消息将MTS和MGW地址告诉UE,而是通过建立会话过程中SDP消息携 带将MTS或者MGW通知UE,UE再MTS或者MGW建立TCP连接。

S901、UE和P-CSCF完成IMS注册。

S902、UE决定发起VoIP会话,分配TCP穿越隧道端口PT1,通知准 备通知P-CSCF需要做防火墙穿越。

S903、UE通过INVITE消息中的SDP携带的专门参数或者专门SDP描 述行,通知P-CSCF需要做防火墙穿越。

S904、P-CSCF通过1xx响应消息中SDP的专门参数或者专门SDP描 述行,将MTC的地址信息告诉UE,同声明网络侧也支持防火墙穿越,。

S905、MTC通过PT1端口向MTS的特定端口发起一条TCP连接,MTS 的特定端口可以根据防火墙允许通过的端口范围进行配置,如设置为HTTP 协议默认端口80或者HTTPS协议默认端口443端口,这一条TCP在通话 过程中一直保持着,知道通话结束。

S906~S907、MTS集成ICE-Lite功能,UE通过步骤S905建立的TCP 连接,向MTS查询MTC的公有IP地址IP1n,和公有端口PT1n或者向MTS 申请MTC的公有IP地址IPa,公有端口PT1n,本发明举例采用STUN方式 查询MTC公有地址,采用TURN方式申请MTC公有地址,建立穿越隧道 的方法和STUN方式类似,这里不再举例。。

S908、UE发送PRACK消息,在PRACK消息SDP body中携带建立穿 越隧道的客户端信息,包括MTC公有IP地址和公有端口(IP1n,PT1n)、私有 IP地址和私有短裤哦(IP1,PT1)和隧道封装类型为TCP隧道封装模式,采用 下面两种方式携带穿越隧道客户端信息:

1)在现有SDP协议中的a=candidate描述行,添加一个特殊的参数描述 隧道封装类型,格式为a=candidate:<现有协议的参数><tunnel><tunnel  type>。

2)在SDP body中专门添加一个SDP描述行,专门用于描述包括公有 地址、私有地址、隧道封装模式等穿越隧道相关信息,例如采用的格式为: a=tunnel:<公有地址><私有地址><tunnel type>。

S909、P-CSCF分配设置的特定端口80为TCP隧道的端口,即TCP隧 道网络侧的地址为步骤S905建立TCP连接的MTS地址。

S910、P-CSCF将TCP隧道的通信双方的地址和封装模式为TCP封装, 以及将需要封装的媒体数据的通信双方地址相关信息通过H.248协议或者其 他控制协议传给MTS,MTS根据P-CSCF发过的信息,建立媒体和穿越隧 道之间的对应关系911、和正常的IMS会话一样,P-CSCF将建立RTP/RTCP 媒体信息发给媒体网关MGW,建立RTP/RTCP连接。

S912、P-CSCF将TCP隧道的MTS侧的地址信息和封装模式为TCP隧 道模式通过会话响应消息200OK消息通知UE。

S913、UE和MTS无需执行路径,UE直接发会话成功确认消息ACK 给网络。

S914、UE和MTS作为TCP穿越隧道的业务终结点,执行VoIP数据包 的TCP封装/解开处理,封装方式如附图10,TCP封装格式所示,整个VoIP 数据包作为净荷被封装在TCP隧道数据包中,隧道报头的IP地址为MTS 和MTC的公有地址。MTS/MTC解开隧道数据包后,根据原VoIP数据包的 地址进行转发。通话过程中UE和MTS进行周期性NA(P)T地址绑定保 活交互。

S915、UE决定发起MSRP会话,给MSRP会话分配私网端口PTx。

S916、UE通过INVITE消息中的SDP携带的专门参数或者专门SDP描 述行,通知P-CSCF需要做防火墙穿越。

S917、P-CSCF通过1xx响应消息中SDP的专门参数或者专门SDP描 述行,将MGW的地址信息告诉UE,同声明网络侧也支持防火墙穿越。

S918、UE中MTC模块通过PTx端口和媒体网关MGW特定端口建立 一条TCP连接,这一条TCP保持长连接,知道会话结束后才终止,MGW 集成ICE-lite功能。MGW用于MSRP穿越的特定端口可以根据防火墙允许 通过的端口范围进行设置,例如设置为HTTP协议默认端口80或者HTTPS 协议默认端口443端口,本发明实施例举例为80端口。

S919、MTC通过和步骤S906、S907相同的方法向MGW查询MSRP 的公有IP地址IP1n,公有端口PTxn。

S920、UE通过PRACK消息,将MSRP穿越隧道客户端私有IP地址IP1, 私有端口PTx,公有IP地址IP1n,公有PTxn以及隧道封装类型为透传模式 等信息通知P-CSCF。

S921、P-CSCF获知隧道封装类型为透传模式后,为MGW分配特定的 MSRP穿越端口80,不为MTS分配用于MSRP穿越的端口,也就是说MSRP 穿越不经过MTS,UE和MGW直接建立MSRP连接。

S922、和正常IMS MSRP会话方案一样,P-CSCF将建立MSRP连接的 信息告诉MGW。

S923、P-CSCF通过200OK响应消息,将MGW的地址信息(IPb,80)告 诉UE,并通知隧道类型为透传模式。

S924,UE和网络无需做路径可达性检查,直接发ACK会话成功确认消 息给网络。

S925,MTC对收到MSRP消息不做任何封装处理,直接透传给IMS 客户端。

本发明实施中,通过在客户端与网络侧的MTS之间的媒体平面建立一 条穿越隧道,使得RTP、RTCP等媒体数据都可以通过该隧道进行传输,从 而降低了呼叫过程的耗时,提高了用户体验。

上文中结合图1至图10,详细描述了根据本发明实施例的穿越防火墙的 方法,下面将结合图11至图16,详细描述根据本发明实施例的客户端、SIP 服务器和MTS。

图11是本发明一个实施例的客户端的框图。该客户端包括确定单元 1101、发送单元1102、接收单元1103以及建立单元1104。

确定单元1101,用于确定局域网中客户端的地址;

发送单元1102,用于向会话初始化协议SIP服务器发送包含客户端的地 址的信息;

接收单元1103,用于接收SIP服务器发送的包含网络侧的媒体穿越服务 器MTS的地址的信息;

建立单元1104,用于根据客户端的地址以及MTS的地址,建立客户端 与MTS之间的用于传输SIP媒体数据的隧道,隧道穿越局域网中的防火墙, SIP媒体数据包括实时传输协议RTP数据和实时传输控制协议RTCP数据。

本发明实施中,通过在客户端与网络侧的MTS之间的媒体平面建立一 条穿越隧道,使得RTP、RTCP等媒体数据都可以通过该隧道进行传输,从 而降低了呼叫过程的耗时,提高了用户体验。

可选地,作为一个实施例,确定单元1101具体用于确定客户端的地址, 客户端的地址包括客户端的公有网际协议IP地址和客户端的公有端口。

可选地,作为另一个实施例,接收单元1103具体用于接收包含MTS的 地址的信息,MTS的地址包括MTS的公有IP地址和MTS的公有端口;建 立单元1104具体用于根据客户端的公有IP地址、客户端的公有端口、MTS 的公有IP地址以及MTS的公有端口建立隧道。

可选地,作为另一个实施例,客户端还可包括:判断单元,用于判断防 火墙是否需要进行网络地址转换NAT;则,在确定防火墙需要进行NAT时, 确定单元1101具体用于获取客户端的私有IP地址,并分配客户端的私有端 口;根据客户端的私有IP地址和客户端的私有端口查询客户端的公有IP地 址和客户端的公有端口。

可选地,作为另一个实施例,确定单元1101具体用于获取MTS的公有 IP地址;根据客户端的私有端口以及MTS的公有IP地址,与MTS的公有 IP地址的特定端口建立传输控制协议TCP连接,特定端口的端口号与防火 墙允许通过的端口的端口号相同;通过TCP连接查询客户端的地址。

可选地,作为另一个实施例,确定单元1101具体用于向SIP服务器发 送用于请求MTS的公有IP地址的请求消息;接收SIP服务器发送的请求响 应消息,请求响应消息中携带MTS的公有IP地址。

可选地,作为另一个实施例,在确定防火墙不需要进行NAT时,确定 单元1101具体用于获取客户端的公有IP地址;探测防火墙允许通过的特定 端口;将防火墙允许通过的特定端口作为客户端的公有端口。

可选地,作为另一个实施例,确定单元1101还用于确定防火墙支持的 传输协议,传输协议包括TCP和用户数据包协议UDP中的至少一种;发送 单元1102还用于向SIP服务器发送用于指示传输协议的信息;

客户端还包括:封装单元,用于当通过隧道向MTS发送数据时,利用 传输协议对数据进行封装;解封装单元,用于当接收MTS通过隧道发送的 数据时,利用传输协议对数据进行解封装。

图12是本发明一个实施例的SIP服务器的框图。该SIP服务器包括接 收单元1201、分配单元1202以及发送单元1203。

接收单元1201,用于接收包含局域网中客户端的地址的信息;

分配单元1202,用于分配媒体穿越服务器MTS的公有端口;

发送单元1203,用于向客户端发送包含MTS的地址的信息,所述MTS 地址包括所述MTS的公有端口以及获取的MTS的公有IP地址,并向MTS 发送包含客户端的地址以及MTS的公有端口的信息,以便客户端与MTS之 间建立用于传输会话初始化协议SIP媒体数据的隧道,隧道穿越局域网中的 防火墙,SIP媒体数据包括实时传输协议RTP数据和实时传输控制协议RTCP 数据。

本发明实施中,通过在客户端与网络侧的MTS之间的媒体平面建立一 条穿越隧道,使得RTP、RTCP等媒体数据都可以通过该隧道进行传输,从 而降低了呼叫过程的耗时,提高了用户体验。

可选地,作为一个实施例,接收单元1201具体用于接收包含客户端的 地址的信息,客户端的地址包括客户端的公有网际协议IP地址和客户端的 公有端口;向客户端发送MTS的地址包括:向客户端发送MTS的地址, MTS的地址包括MTS的公有IP地址和MTS的公有端口。

可选地,作为另一个实施例,分配单元1202具体用于将防火墙允许通 过的端口的端口号作为MTS的公有端口的端口号。

可选地,作为另一个实施例,接收单元1201还用于接收客户端发送的 用于请求MTS的公有IP地址的请求消息;向客户端发送请求响应消息,请 求响应消息中携带MTS的公有IP地址。

可选地,作为另一个实施例,接收单元1201还用于接收客户端发送的 用于指示防火墙支持的传输协议的信息,传输协议包括TCP和用户数据包 协议UDP中的至少一种;发送单元1203还用于向MTS发送用于指示传输 协议的信息。

可选地,作为另一个实施例,发送单元1203还用于向所述MTS发送包 含媒体网关的地址以及所述客户端的地址的信息。

图13是本发明一个实施例的MTS的框图。该MTS包括接收单元1301 和建立单元1302。

接收单元1301,用于接收会话初始化协议SIP服务器发送的包含局域网 中客户端的地址以及MTS的公有端口的信息;

建立单元1302,用于根据客户端的地址以及MTS的地址,建立MTS 与客户端之间的用于传输SIP媒体数据的隧道,隧道穿越局域网的防火墙, SIP媒体数据包括实时传输协议RTP数据和实时传输控制协议RTCP数据。

本发明实施中,通过在客户端与网络侧的MTS之间的媒体平面建立一 条穿越隧道,使得RTP、RTCP等媒体数据都可以通过该隧道进行传输,从 而降低了呼叫过程的耗时,提高了用户体验。

可选地,作为一个实施例,接收单元1301具体用于接收包含客户端的 地址以及MTS的公有端口的信息,客户端的地址包括客户端的公有IP地址 和客户端的公有端口;建立单元1302具体用于根据客户端的公有IP地址、 客户端的公有端口以及MTS的地址建立隧道,MTS的地址包括MTS的公 有IP地址和MTS的公有端口。

可选地,作为另一个实施例,建立单元1302还用于与客户端建立传输 控制协议TCP连接,以便客户端根据TCP连接查询客户端的公有IP地址和 客户端的公有端口。

可选地,作为另一个实施例,接收单元1301还用于接收SIP服务器发 送的用于指示防火墙支持的传输协议的信息,传输协议包括TCP和用户数 据包协议UDP中的至少一种;

MTS还包括:封装单元,用于当通过隧道向客户端发送数据时,利用 传输协议对数据进行封装;解封装单元,用于当接收客户端通过隧道发送的 数据时,利用传输协议对数据进行解封装。

可选地,作为另一个实施例,接收单元1301还用于接收所述SIP服务 器发送的包含媒体网关的地址以及所述客户端的地址的信息。

图14是本发明另一个实施例的客户端的框图。该客户端包括处理器 1401、发送器1402以及接收器1403。

处理器1401,用于确定局域网中客户端的地址;

发送器1402,用于向会话初始化协议SIP服务器发送包含客户端的地址 的信息;

接收器1403,用于接收SIP服务器发送的包含网络侧的媒体穿越服务器 MTS的地址的信息;

处理器1401还用于根据客户端的地址以及MTS的地址,建立客户端与 MTS之间的用于传输SIP媒体数据的隧道,隧道穿越局域网中的防火墙, SIP媒体数据包括实时传输协议RTP数据和实时传输控制协议RTCP数据。

本发明实施中,通过在客户端与网络侧的MTS之间的媒体平面建立一 条穿越隧道,使得RTP、RTCP等媒体数据都可以通过该隧道进行传输,从 而降低了呼叫过程的耗时,提高了用户体验。

可选地,作为一个实施例,处理器1401具体用于确定客户端的地址, 客户端的地址包括客户端的公有网际协议IP地址和客户端的公有端口。

可选地,作为另一个实施例,接收器1403具体用于接收包含MTS的地 址的信息,MTS的地址包括MTS的公有IP地址和MTS的公有端口;处理 器1401具体用于根据客户端的公有IP地址、客户端的公有端口、MTS的公 有IP地址以及MTS的公有端口建立隧道。

可选地,作为另一个实施例,处理器1401还用于判断防火墙是否需要 进行网络地址转换NAT;在确定防火墙需要进行NAT时,处理器1401具体 用于获取客户端的私有IP地址,并分配客户端的私有端口;根据客户端的 私有IP地址和客户端的私有端口查询客户端的公有IP地址和客户端的公有 端口。

可选地,作为另一个实施例,处理器1401具体用于获取MTS的公有IP 地址;根据客户端的私有端口以及MTS的公有IP地址,与MTS的特定端 口建立传输控制协议TCP连接,特定端口的端口号与防火墙允许通过的端 口的端口号相同;通过TCP连接查询客户端的地址。

可选地,作为另一个实施例,处理器1401具体用于向SIP服务器发送 用于请求MTS的公有IP地址的请求消息;接收SIP服务器发送的请求响应 消息,请求响应消息中携带MTS的公有IP地址。

可选地,作为另一个实施例,在确定防火墙不需要进行NAT时,处理 器1401具体用于获取客户端的公有IP地址;探测防火墙允许通过的特定端 口;将防火墙允许通过的特定端口作为客户端的公有端口。

可选地,作为另一个实施例,处理器1401还用于确定防火墙支持的传 输协议,传输协议包括TCP和用户数据包协议UDP中的至少一种;发送单 元1402还用于向SIP服务器发送用于指示传输协议的信息;

处理器还用于当通过隧道向MTS发送数据时,利用传输协议对数据进 行封装;处理器还用于当接收MTS通过隧道发送的数据时,利用传输协议 对数据进行解封装。

图15是本发明另一个实施例的SIP服务器的框图。该SIP服务器包括 接收器1501、处理器1502以及发送器1503。

接收器1501,用于接收包含局域网中客户端的地址的信息;

处理器1502,用于分配媒体穿越服务器MTS的公有端口;

发送器1503,用于向客户端发送包含MTS的地址的信息,MTS地址 包括MTS的公有端口以及获取的MTS的公有IP地址,并向MTS发送包含 客户端的地址以及MTS的公有端口的信息,以便客户端与MTS之间建立用 于传输会话初始化协议SIP媒体数据的隧道,隧道穿越局域网中的防火墙, SIP媒体数据包括实时传输协议RTP数据和实时传输控制协议RTCP数据。

本发明实施中,通过在客户端与网络侧的MTS之间的媒体平面建立一 条穿越隧道,使得RTP、RTCP等媒体数据都可以通过该隧道进行传输,从 而降低了呼叫过程的耗时,提高了用户体验。

可选地,作为一个实施例,接收器1501具体用于接收包含客户端的地 址的信息,客户端的地址包括客户端的公有网际协议IP地址和客户端的公 有端口。

可选地,作为另一个实施例,处理器1502具体用于将防火墙允许通过 的端口的端口号作为MTS的公有端口的端口号。

可选地,作为另一个实施例,接收器1501还用于接收客户端发送的用 于请求MTS的公有IP地址的请求消息;向客户端发送请求响应消息,请求 响应消息中携带MTS的公有IP地址。

可选地,作为另一个实施例,接收器1501还用于接收客户端发送的用 于指示防火墙支持的传输协议的信息,传输协议包括TCP和用户数据包协 议UDP中的至少一种;发送器1503还用于向MTS发送用于指示传输协议 的信息。

可选地,作为另一个实施例,发送器1503还用于向所述MTS发送包含 媒体网关的地址以及所述客户端的地址的信息。

图16是本发明另一个实施例的MTS的框图。该MTS包括接收器1601 和处理器1602。

接收器1601,用于接收会话初始化协议SIP服务器发送的包含局域网中 客户端的地址以及MTS的公有端口的信息;

处理器1602,用于根据客户端的地址以及MTS的地址,建立MTS与 客户端之间的用于传输SIP媒体数据的隧道,隧道穿越客局域网中的防火墙, SIP媒体数据包括实时传输协议RTP数据和实时传输控制协议RTCP数据。

本发明实施中,通过在客户端与网络侧的MTS之间的媒体平面建立一 条穿越隧道,使得RTP、RTCP等媒体数据都可以通过该隧道进行传输,从 而降低了呼叫过程的耗时,提高了用户体验。

可选地,作为一个实施例,接收器1601具体用于接收包含客户端的地 址以及MTS的公有端口的信息,客户端的地址包括客户端的公有IP地址和 客户端的公有端口;处理器1602具体用于根据客户端的公有IP地址、客户 端的公有端口以及MTS的地址建立隧道,MTS的地址包括MTS的公有IP 地址和MTS的公有端口。

可选地,作为另一个实施例,处理器1602还用于与客户端建立传输控 制协议TCP连接,以便客户端根据TCP连接查询客户端的公有IP地址和客 户端的公有端口。

可选地,作为另一个实施例,接收器1601还用于接收SIP服务器发送 的用于指示防火墙支持的传输协议的信息,传输协议包括TCP和用户数据 包协议UDP中的至少一种;

处理器1602还用于当通过隧道向客户端发送数据时,利用传输协议对 数据进行封装;当接收客户端通过隧道发送的数据时,利用传输协议对数据 进行解封装。

可选地,作为另一个实施例,接收器1601还用于接收所述SIP服务器 发送的包含媒体网关的地址以及所述客户端的地址的信息。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各 示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结 合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特 定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方 法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描 述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应 过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和 方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示 意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可 以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个 系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间 的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合 或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作 为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方, 或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或 者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元 中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一 个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使 用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明 的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部 分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质 中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器, 或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前 述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、 随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可 以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限 于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易 想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护 范围应所述以权利要求的保护范围为准。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号