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

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

Info

Publication number
CN103392316B
CN103392316B CN201380000069.8A CN201380000069A CN103392316B CN 103392316 B CN103392316 B CN 103392316B CN 201380000069 A CN201380000069 A CN 201380000069A CN 103392316 B CN103392316 B CN 103392316B
Authority
CN
China
Prior art keywords
address
client
mts
port
publicly
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201380000069.8A
Other languages
English (en)
Other versions
CN103392316A (zh
Inventor
张旭武
孟斌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority claimed from PCT/CN2013/070395 external-priority patent/WO2014107894A1/zh
Publication of CN103392316A publication Critical patent/CN103392316A/zh
Application granted granted Critical
Publication of CN103392316B publication Critical patent/CN103392316B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

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

Description

穿越防火墙的方法、客户端和媒体穿越服务器
技术领域
本发明实施例涉及通信领域,并且更具体地,涉及一种穿越防火墙的方法、客户端、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 AddressTranslation,NAT)问题和限制性防火墙穿越问题。
在NAT问题中,局域网中的客户端使用私有IP地址和端口,不能够直接与处于公网的IMS网络进行通信,而是由防火墙提供NAT功能,为客户端分配一个公有地址,然后将此公有地址与该客户端的私有地址绑定后才可以与公网通信。目前第三代合作伙伴计划(The3rdGeneration Partnership,3GPP)使用交互式连接建立(Interactive ConnectivityEstablishment,ICE)方案解决了NAT穿越问题。ICE方案包括STUN(Simple Traversal ofUDP through NAT,UDP包的简单NAT穿越)、TURN(Traversal Using Relay NetworkAddress Translation,通过Relay方式穿越NAT)以及ICE等多种协议,其核心思想都是建立客户端的私有地址和公有地址的绑定关系,利用客户端的公有地址与IMS网络进行通信。
在限制性防火墙穿越问题中,防火墙不但可能限制允许通过的防火墙端口,也可能限制允许通过防火墙的报文的类型。目前,提出一种ICE over TLS (Transport LayerSecurity,传输层安全)穿越方案。该方案对基于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 DivisionMultiple Access,CDMA)系统、宽带码分多址(Wideband Code Division MultipleAccess,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)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (30)

1.一种穿越防火墙的方法,其特征在于,包括:
确定局域网中客户端的地址,所述客户端的地址包括所述客户端的公有网际协议IP地址和所述客户端的公有端口;
向会话初始化协议SIP服务器发送包含所述客户端的地址的信息;
接收所述SIP服务器发送的包含网络侧的媒体穿越服务器MTS的地址的信息,所述MTS的地址包括所述MTS的公有IP地址和所述MTS的公有端口;
根据所述客户端的地址以及所述MTS的地址,建立所述客户端与所述MTS之间的用于传输SIP媒体数据的隧道,所述隧道穿越所述局域网中的防火墙,所述SIP媒体数据包括实时传输协议RTP数据和实时传输控制协议RTCP数据,其中,所述防火墙为端口或允许通过的报文类型受限的限制性防火墙,包含所述RTP数据和所述RTCP数据的数据包作为净荷封装在所述隧道的隧道数据包中,所述隧道数据包的隧道包头包括所述MTS的公有IP地址和公有端口,以及所述客户端的公有IP地址和公有端口,所述隧道数据包的封装类型为所述防火墙允许通过的报文类型。
2.如权利要求1所述的方法,其特征在于,在所述确定局域网中客户端的地址之前,还包括:
判断所述防火墙是否需要进行网络地址转换NAT;
则,在确定所述防火墙需要进行NAT时,所述确定局域网中客户端的地址包括:
获取所述客户端的私有IP地址,并分配所述客户端的私有端口;
根据所述客户端的私有IP地址和所述客户端的私有端口,查询所述客户端的公有IP地址和所述客户端的公有端口。
3.如权利要求2所述的方法,其特征在于,所述根据所述客户端的私有IP地址和所述客户端的私有端口,查询所述客户端的公有IP地址和所述客户端的公有端口包括:
获取所述MTS的公有IP地址;
根据所述客户端的私有端口以及所述MTS的公有IP地址,与所述MTS的特定端口建立传输控制协议TCP连接,所述特定端口的端口号与所述防火墙允许通过的端口的端口号相同;
通过所述TCP连接查询所述客户端的地址。
4.如权利要求3所述的方法,其特征在于,所述获取所述MTS的公有IP地址包括:
向所述SIP服务器发送用于请求所述MTS的公有IP地址的请求消息;
接收所述SIP服务器发送的请求响应消息,所述请求响应消息中携带所述MTS的公有IP地址。
5.如权利要求2-4中任一项所述的方法,其特征在于,
在确定所述防火墙不需要进行NAT时,所述确定局域网中客户端的地址包括:
获取所述客户端的公有IP地址;
探测所述防火墙允许通过的特定端口;
将所述防火墙允许通过的特定端口作为所述客户端的公有端口。
6.如权利要求1-4中任一项所述的方法,其特征在于,还包括:
确定所述防火墙支持的传输协议,所述传输协议包括TCP和用户数据包协议UDP中的至少一种;
向所述SIP服务器发送用于指示所述传输协议的信息;
当通过所述隧道向所述MTS发送数据时,利用所述传输协议对所述数据进行封装;
当接收所述MTS通过所述隧道发送的数据时,利用所述传输协议对所述数据进行解封装。
7.一种穿越防火墙的方法,其特征在于,包括:
接收包含局域网中客户端的地址的信息,所述客户端的地址包括所述客户端的公有网际协议IP地址和所述客户端的公有端口;
分配媒体穿越服务器MTS的公有端口;
向所述客户端发送包含MTS的地址的信息,所述MTS地址包括所述MTS的公有端口以及获取的MTS的公有IP地址,并向所述MTS发送包含所述客户端的地址以及所述MTS的公有端口的信息,以便所述客户端与所述MTS之间建立用于传输会话初始化协议SIP媒体数据的隧道,所述隧道穿越所述局域网中的防火墙,所述SIP媒体数据包括实时传输协议RTP数据和实时传输控制协议RTCP数据,其中,所述防火墙为端口或允许通过的报文类型受限的限制性防火墙,包含所述RTP数据和所述RTCP数据的数据包作为净荷封装在所述隧道的隧道数据包中,所述隧道数据包的隧道包头包括所述MTS的公有IP地址和公有端口,以及所述客户端的公有IP地址和公有端口,所述隧道数据包的封装类型为所述防火墙允许通过的报文类型。
8.如权利要求7所述的方法,其特征在于,所述分配MTS的公有端口包括:
将所述防火墙允许通过的端口的端口号作为所述MTS的公有端口的端口号。
9.如权利要求7或8所述的方法,其特征在于,在所述接收包含局域网中客户端的地址的信息之前,还包括:
接收所述客户端发送的用于请求所述MTS的公有IP地址的请求消息;
向所述客户端发送请求响应消息,所述请求响应消息中携带所述MTS的公有IP地址。
10.如权利要求7或8所述的方法,其特征在于,还包括:
接收所述客户端发送的用于指示所述防火墙支持的传输协议的信息,所述传输协议包括TCP和用户数据包协议UDP中的至少一种;
向所述MTS发送用于指示所述传输协议的信息。
11.如权利要求7或8所述的方法,其特征在于,还包括:
向所述MTS发送包含媒体网关的地址以及所述客户端的地址的信息。
12.一种穿越防火墙的方法,其特征在于,包括:
接收会话初始化协议SIP服务器发送的包含局域网中客户端的地址以及MTS的公有端口的信息,所述客户端的地址包括所述客户端的公有网际协议IP地址和所述客户端的公有端口;
根据所述客户端的地址以及所述MTS的地址,建立所述MTS与所述客户端之间的用于传输SIP媒体数据的隧道,所述MTS的地址包括所述MTS的公有IP地址和所述MTS的公有端口,所述隧道穿越所述局域网中的防火墙,所述SIP媒体数据包括实时传输协议RTP数据和实时传输控制协议RTCP数据,其中,所述防火墙为端口或允许通过的报文类型受限的限制性防火墙,包含所述RTP数据和所述RTCP数据的数据包作为净荷封装在所述隧道的隧道数据包中,所述隧道数据包的隧道包头包括所述MTS的公有IP地址和公有端口,以及所述客户端的公有IP地址和公有端口,所述隧道数据包的封装类型为所述防火墙允许通过的报文类型。
13.如权利要求12所述的方法,其特征在于,在所述接收SIP服务器发送的包含局域网中客户端的地址以及MTS的公有端口的信息之前,还包括:
与所述客户端建立传输控制协议TCP连接,以便所述客户端根据所述TCP连接查询所述客户端的公有IP地址和所述客户端的公有端口。
14.如权利要求12或13所述的方法,其特征在于,还包括:
接收所述SIP服务器发送的用于指示所述防火墙支持的传输协议的信息,所述传输协议包括TCP和用户数据包协议UDP中的至少一种;
当通过所述隧道向所述客户端发送数据时,利用所述传输协议对所述数据进行封装;
当接收所述客户端通过所述隧道发送的数据时,利用所述传输协议对所述数据进行解封装。
15.如权利要求12或13所述的方法,其特征在于,还包括:
接收所述SIP服务器发送的包含媒体网关的地址的信息。
16.一种客户端,其特征在于,包括:
确定单元,用于确定局域网中客户端的地址,所述客户端的地址包括所述客户端的公有网际协议IP地址和所述客户端的公有端口;
发送单元,用于向会话初始化协议SIP服务器发送包含所述客户端的地址的信息;
接收单元,用于接收所述SIP服务器发送的包含网络侧的媒体穿越服务器MTS的地址的信息,所述MTS的地址包括所述MTS的公有IP地址和所述MTS的公有端口;
建立单元,用于根据所述客户端的地址以及所述MTS的地址,建立所述客户端与所述MTS之间的用于传输SIP媒体数据的隧道,所述隧道穿越所述局域网中的防火墙,所述SIP媒体数据包括实时传输协议RTP数据和实时传输控制协议RTCP数据,其中,所述防火墙为端口或允许通过的报文类型受限的限制性防火墙,包含所述RTP数据和所述RTCP数据的数据包作为净荷封装在所述隧道的隧道数据包中,所述隧道数据包的隧道包头包括所述MTS的公有IP地址和公有端口,以及所述客户端的公有IP地址和公有端口,所述隧道数据包的封装类型为所述防火墙允许通过的报文类型。
17.如权利要求16所述的客户端,其特征在于,还包括:
判断单元,用于判断所述防火墙是否需要进行网络地址转换NAT;
则,在确定所述防火墙需要进行NAT时,所述确定单元具体用于获取所述客户端的私有IP地址,并分配所述客户端的私有端口;根据所述客户端的私有IP地址和所述客户端的私有端口查询所述客户端的公有IP地址和所述客户端的公有端口。
18.如权利要求17所述的客户端,其特征在于,所述确定单元具体用于获取所述MTS的公有IP地址;根据所述客户端的私有端口以及所述MTS的公有IP地址,与所述MTS的特定端口建立传输控制协议TCP连接,所述特定端口的端口号与所述防火墙允许通过的端口的端口号相同;通过所述TCP连接查询所述客户端的地址。
19.如权利要求18所述的客户端,其特征在于,所述确定单元具体用于向所述SIP服务器发送用于请求所述MTS的公有IP地址的请求消息;接收所述SIP服务器发送的请求响应消息,所述请求响应消息中携带所述MTS的公有IP地址。
20.如权利要求17-19中任一项所述的客户端,其特征在于,
在确定所述防火墙不需要进行NAT时,所述确定单元具体用于获取所述客户端的公有IP地址;探测所述防火墙允许通过的特定端口;将所述防火墙允许通过的特定端口作为所述客户端的公有端口。
21.如权利要求16-19中任一项所述的客户端,其特征在于,所述确定单元还用于确定所述防火墙支持的传输协议,所述传输协议包括TCP和用户数据包协议UDP中的至少一种;
所述发送单元还用于向所述SIP服务器发送用于指示所述传输协议的信息;
所述客户端还包括:
封装单元,用于当通过所述隧道向所述MTS发送数据时,利用所述传输协议对所述数据进行封装;
解封装单元,用于当接收所述MTS通过所述隧道发送的数据时,利用所述传输协议对所述数据进行解封装。
22.一种会话初始化协议SIP服务器,其特征在于,包括:
接收单元,用于接收包含局域网中客户端的地址的信息,所述客户端的地址包括所述客户端的公有网际协议IP地址和所述客户端的公有端口;
分配单元,用于分配媒体穿越服务器MTS的公有端口;
发送单元,用于向所述客户端发送包含MTS的地址的信息,所述MTS地址包括所述MTS的公有端口以及获取的MTS的公有IP地址,并向所述MTS发送包含所述客户端的地址以及所述MTS的公有端口的信息,以便所述客户端与所述MTS之间建立用于传输会话初始化协议SIP媒体数据的隧道,所述隧道穿越所述局域网的防火墙,所述SIP媒体数据包括实时传输协议RTP数据和实时传输控制协议RTCP数据,其中,所述防火墙为端口或允许通过的报文类型受限的限制性防火墙,包含所述RTP数据和所述RTCP数据的数据包作为净荷封装在所述隧道的隧道数据包中,所述隧道数据包的隧道包头包括所述MTS的公有IP地址和公有端口,以及所述客户端的公有IP地址和公有端口,所述隧道数据包的封装类型为所述防火墙允许通过的报文类型。
23.如权利要求22所述的SIP服务器,其特征在于,所述分配单元具体用于将所述防火墙允许通过的端口的端口号作为所述MTS的公有端口的端口号。
24.如权利要求22或23所述的SIP服务器,其特征在于,所述接收单元还用于接收所述客户端发送的用于请求所述MTS的公有IP地址的请求消息;向所述客户端发送请求响应消息,所述请求响应消息中携带所述MTS的公有IP地址。
25.如权利要求22或23所述的SIP服务器,其特征在于,所述接收单元还用于接收所述客户端发送的用于指示所述防火墙支持的传输协议的信息,所述传输协议包括TCP和用户数据包协议UDP中的至少一种;
所述发送单元还用于向所述MTS发送用于指示所述传输协议的信息。
26.如权利要求22或23所述的SIP服务器,其特征在于,所述发送单元还用于向所述MTS发送包含媒体网关的地址以及所述客户端的地址的信息。
27.一种穿越隧道服务器MTS,其特征在于,包括:
接收单元,用于接收会话初始化协议SIP服务器发送的包含局域网中客户端的地址以及MTS的公有端口的信息,所述客户端的地址包括所述客户端的公有网际协议IP地址和所述客户端的公有端口;
建立单元,用于根据所述客户端的地址以及所述MTS的地址,建立所述MTS与所述客户端之间的用于传输SIP媒体数据的隧道,所述MTS的地址包括所述MTS的公有IP地址和所述MTS的公有端口,所述隧道穿越局域网的防火墙,所述SIP媒体数据包括实时传输协议RTP数据和实时传输控制协议RTCP数据,其中,所述防火墙为端口或允许通过的报文类型受限的限制性防火墙,包含所述RTP数据和所述RTCP数据的数据包作为净荷封装在所述隧道的隧道数据包中,所述隧道数据包的隧道包头包括所述MTS的公有IP地址和公有端口,以及所述客户端的公有IP地址和公有端口,所述隧道数据包的封装类型为所述防火墙允许通过的报文类型。
28.如权利要求27所述的MTS,其特征在于,所述建立单元还用于与所述客户端建立传输控制协议TCP连接,以便所述客户端根据所述TCP连接查询所述客户端的公有IP地址和所述客户端的公有端口。
29.如权利要求27或28所述的MTS,其特征在于,所述接收单元还用于接收所述SIP服务器发送的用于指示所述防火墙支持的传输协议的信息,所述传输协议包括TCP和用户数据包协议UDP中的至少一种;
所述MTS还包括:
封装单元,用于当通过所述隧道向所述客户端发送数据时,利用所述传输协议对所述数据进行封装;
解封装单元,用于当接收所述客户端通过所述隧道发送的数据时,利用所述传输协议对所述数据进行解封装。
30.如权利要求27或28所述的MTS,其特征在于,所述接收单元还用于接收所述SIP服务器发送的包含媒体网关的地址的信息。
CN201380000069.8A 2013-01-11 穿越防火墙的方法、客户端和媒体穿越服务器 Active CN103392316B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2013/070395 WO2014107894A1 (zh) 2013-01-11 2013-01-11 穿越防火墙的方法、客户端和媒体穿越服务器

Publications (2)

Publication Number Publication Date
CN103392316A CN103392316A (zh) 2013-11-13
CN103392316B true CN103392316B (zh) 2016-11-30

Family

ID=

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101465844A (zh) * 2007-12-18 2009-06-24 华为技术有限公司 一种防火墙穿越方法、系统和设备
CN101873359A (zh) * 2010-06-28 2010-10-27 北京神州泰岳软件股份有限公司 实现udp打洞的方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101465844A (zh) * 2007-12-18 2009-06-24 华为技术有限公司 一种防火墙穿越方法、系统和设备
CN101873359A (zh) * 2010-06-28 2010-10-27 北京神州泰岳软件股份有限公司 实现udp打洞的方法

Similar Documents

Publication Publication Date Title
US10237089B2 (en) Packet tunneling method, switching device, and control device
CN102763435B (zh) 用户设备与3gpp演进分组核心网间的多宿服务相关信息传输
EP2880902B1 (en) Communication path switching for mobile devices
EP3850814B1 (en) Method and system for network routing
JP2016508308A (ja) 通信ネットワークにおけるマルチパス伝送制御プロトコル信号伝達の処理
US9455910B2 (en) Exchanging internet protocol version capability information between client devices over a communications network
KR20140099598A (ko) 모바일 vpn 서비스를 제공하는 방법
JP6101997B2 (ja) リアルタイム通信セッションを確立する通信システム
WO2016141591A1 (zh) 实现业务连续性的方法、装置及系统
CN107810647A (zh) 在服务客户端和ran之间建立交互会话
CN106537854A (zh) 网络通信和直接通信之间的切换方法和装置
CN103392316B (zh) 穿越防火墙的方法、客户端和媒体穿越服务器
TW201440464A (zh) 建立通訊
KR20240000579A (ko) 셀룰러 데이터 패킷들의 라우팅을 위한 ip 네트워크들의 개선된 사용
WO2014067065A1 (zh) 实现隧道处理的方法、装置和系统
CN103392316A (zh) 穿越防火墙的方法、客户端和媒体穿越服务器
JP4506883B2 (ja) 移動通信システム、トラヒック転送装置、トラヒック転送方法及びプログラム
CN106792933B (zh) 一种链路建立方法、基站、网关及系统
JP5782407B2 (ja) ネットワークシステムおよびnapt実施回数低減方法
US20150365879A1 (en) Communication method implemented by a relay node
JP7173461B2 (ja) ゲートウェイ装置
JP5103031B2 (ja) ネットワーク通信方法及びそのシステム
JP2008104105A (ja) 無線通信システムおよび移動端末
KR20240001195A (ko) 셀룰러 데이터 패킷들의 라우팅을 위한 ip 네트워크들의 개선된 사용
KR20230175283A (ko) 셀룰러 데이터 패킷들의 라우팅을 위한 ip 네트워크들의 사용

Legal Events

Date Code Title Description
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant