CN105635076B - 一种媒体传输方法和设备 - Google Patents
一种媒体传输方法和设备 Download PDFInfo
- Publication number
- CN105635076B CN105635076B CN201410623767.XA CN201410623767A CN105635076B CN 105635076 B CN105635076 B CN 105635076B CN 201410623767 A CN201410623767 A CN 201410623767A CN 105635076 B CN105635076 B CN 105635076B
- Authority
- CN
- China
- Prior art keywords
- media
- data packet
- tunnel
- transmission
- user terminal
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种媒体传输方法和设备,包括:用户终端根据STUN的探测结果,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型,根据确定的隧道类型,为隧道类型对应的传输隧道分配用户终端侧的第一端口号,并将隧道类型、第一端口号和隧道数据包的载荷格式信息发送给网络侧,使网络侧根据隧道类型为隧道类型对应的传输隧道分配网络侧的第二端口号,在所述第一端口号和所述第二端口号之间建立传输隧道;接收网络侧通过建立的传输隧道传输的、按照所述隧道数据包的载荷格式信息封装的媒体的数据包,不仅能够穿越所有类型的防火墙,而且有效地提升了媒体传输效率。
Description
技术领域
本发明涉及IP通信技术领域,尤其涉及一种媒体传输方法和设备。
背景技术
在VoIP(Voice ove IP;IP承载语音)通信系统中,语音数据和视频媒体数据通常采用RTP(Real-Time Transport Protocol;实时传输协议)进行实时传输,并使用RTCP(Real-Time Transport Control Protocol;实时传输控制协议)对RTP数据包提供可靠性传输管理机制。RTP数据包和RTCP数据包依靠用户数据协议(User Datagram Protocol;UDP)传输。而在RTP数据包和RTCP数据包分别采用不同的端口传输时,要求用于传输RTCP数据包的UDP端口号比用于传输RTP数据包的UDP端口号大1、且用于传输RTCP数据包的UDP端口号为奇数。
在企业网或者局域网应用场景中,出于网络安全方面的考虑,企业网或者局域网与公网之间部署防火墙。防火墙除了提供网络地址转换之外,还常常会对允许通过的报文类型和开放的端口范围进行限制。在实际应用中,由于防火墙的限制,导致RTP数据包和RTCP数据包不能正常进行。
因此在VoIP客户端与网络侧之间VoIP通信时,需要具备穿越防火墙的能力。对于如何穿越防火墙的问题,提出了几种不同的穿越方式。
例如:交互式连接建立(Interactive Connectivity Establishment;ICE)是一个协议族,包含STUN(Session Traversal Utilities for NAT,网络地址转换会话传输应用程序)协议、TURN(Traversal Using Relay Network Address Translation;通过Relay方式穿越NAT)协议,用于解决各种NAT穿越问题。
在采用ICE/STUN协议穿越防火墙时,可以将通信双方用于传输RTP数据包和RTCP数据包的端口复用在同一个端口上,也就是说媒体网关将RTP/RTCP的端口固定地分配为80,媒体流以RTP/RTCP over TCP的形式从防火墙的443或80端口穿越。这样虽然能够支持VoIP通信中的媒体流和信令分离传输、且使用标准的ICE客户端,但是在实际应用中,这种方式只能保证穿越部分防火墙,例如:具有HTTP(Hyper Text Transport Protocol,超文本传输协议)代理功能的防火墙就无法穿越。因为具有HTTP代理功能的防火墙只允许HTTP类型的报文通过,具有HTTP代理功能的防火墙能够识别出IP(Internetwork Protocol,网际协议)包承载的上层协议数据包是不是HTTP协议数据包,如果不是HTTP协议数据包,则直接丢弃数据包。而采用RTCP/RTP协议数据包复用同一个端口,利用TCP(TransmissionControl Protocol,传输控制协议)连接方式穿越防火墙时,具有HTTP代理功能防火墙容易识别该数据包为非HTTP数据包而丢弃,造成媒体的数据包无法穿越防火墙。
进一步地,提出了ICE/TURN解决方案,在VoIP客户端与网络侧之间部署TURN服务器作为媒体中继服务器,TURN服务器除了支持从协议默认端口3478端口接收终端发送的TURN请求之外,还支持从443端口和80端口接收TURN请求。媒体通过RTP/RTCP over UDPover TURN over TCP方式从80端口,或者通过RTP/RTCP over UDP over TURN over TLS方式从443穿越防火墙,达到TURN服务器,由TURN服务器将媒体转发给对端。
这种方式虽然能够解决穿越所有防火墙的问题,但是依然存在以下问题:
1、系统中增加TURN服务器,造成媒体的数据包传输时延;
2、在媒体的数据包传输过程中,媒体的数据包封装次数过多,出现媒体的数据包的报头封装冗余,影响媒体传输效率;
3、TURN服务器和用户终端之间的TURN握手信令复杂,且每一个媒体都要进行单独握手协商建立中继通道,增加了媒体的数据包传输复杂度。
发明内容
有鉴于此,本发明实施例提供了一种媒体传输方法和设备,用于解决目前VoIP通信系统的媒体在穿越防火墙的过程中存在的传输复杂以及传输效率低等问题。
根据本发明的第一方面,提供了一种媒体传输方法,包括:
用户终端根据网络地址转换会话传输应用程序STUN的探测结果,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型,其中,所述隧道类型至少包含了传输层安全TLS隧道类型、数据报传输层安全DTLS隧道类型中的一种或者多种;
所述用户终端根据确定的所述隧道类型,为所述隧道类型对应的传输隧道分配用户终端侧的第一端口号,并将所述隧道类型、所述第一端口号和隧道数据包的载荷格式信息发送给网络侧,使网络侧根据所述隧道类型为所述隧道类型对应的传输隧道分配网络侧的第二端口号,在所述第一端口号和所述第二端口号之间建立传输隧道;
所述用户终端接收所述网络侧通过建立的所述传输隧道传输的、按照所述隧道数据包的载荷格式信息封装的媒体的数据包。
结合本发明的第一方面可能的实施方式,在第一种可能的实施方式中,所述用户终端将所述隧道类型、所述第一端口号和隧道数据包的载荷格式信息发送给网络侧,包括:
所述用户终端将所述隧道类型、所述第一端口号和隧道数据包的载荷格式信息携带在会话描述协议SDP消息中发送给IP承载语音VoIP信令服务器,由VoIP信令服务器根据所述隧道类型为所述隧道类型对应的传输隧道分配网络侧的第二端口号,并将所述第二端口号发送给媒体网关和所述用户终端;
所述用户终端通过与所述媒体网关协商,在所述第一端口号和所述第二端口号之间建立传输隧道。
结合本发明的第一方面可能的实施方式,或者结合本发明的第一方面的第一种可能的实施方式,在第二种可能的实施方式中,所述用户终端根据STUN的探测结果,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型,包括:
所述用户终端向STUN服务器发送由用户数据报协议UDP承载的地址收集请求,其中,所述地址收集请求用于获取防火墙分别为用于传输实时传输协议RTP数据包的端口和用于传输实时传输控制协议RTCP数据包的端口分配的公用地址;
所述用户终端在无法接收到STUN服务器返回的由UDP承载的地址收集响应时,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型为TLS隧道类型。
结合本发明的第一方面可能的实施方式,或者结合本发明的第一方面的第一种可能的实施方式,或者结合本发明的第一方面的第二种可能的实施方式,在第三种可能的实施方式中,所述用户终端在所述第一端口号和所述第二端口号之间建立传输隧道,具体包括:
若所述用户终端确定的隧道类型为TLS隧道类型,则所述用户终端在所述第一端口号和所述第二端口号之间建立TLS隧道。
结合本发明的第一方面可能的实施方式,或者结合本发明的第一方面的第一种可能的实施方式,在第四种可能的实施方式中,用户终端根据STUN的探测结果,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型,包括:
用户终端向STUN服务器发送由用户数据报协议UDP承载的地址收集请求,其中,所述地址收集请求用于获取防火墙分别为用于传输实时传输协议RTP数据包的端口和用于传输实时传输控制协议RTCP数据包的端口分配的公用地址;
所述用户终端在接收到STUN服务器返回的地址收集响应时,进一步通过所述用户终端的媒体端口向媒体网关对应的媒体端口发送媒体路径的STUN连通性检测请求,其中,所述STUN连通性检测请求用以确定用户终端发送的媒体的数据包是否可以直接到达所述媒体网关对应的媒体端口;
所述用户终端在尚未接收到所述媒体网关发送的STUN连通性检测响应时,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型为DTLS隧道类型。
结合本发明的第一方面可能的实施方式,或者结合本发明的第一方面的第一种可能的实施方式,或者结合本发明的第一方面的第四种可能的实施方式,在第五种可能的实施方式中,所述用户终端建立包含了所述第一端口号和所述第二端口号的传输隧道,具体包括:
若所述用户终端确定的隧道类型为DTLS隧道类型,则所述用户终端在所述第一端口号和所述第二端口号之间建立DTLS隧道。
结合本发明的第一方面可能的实施方式,或者结合本发明的第一方面的第一种可能的实施方式,或者结合本发明的第一方面的第二种可能的实施方式,或者结合本发明的第一方面的第三种可能的实施方式,或者结合本发明的第一方面的第四种可能的实施方式,或者结合本发明的第一方面的第五种可能的实施方式,在第六种可能的实施方式中,通过以下方式按照所述隧道数据包的载荷格式信息封装媒体的数据包:
若隧道类型为TLS隧道类型,则将媒体的数据包中包含的RTP协议数据包/RTCP协议数据包与UDP协议数据包报头作为所述隧道数据包的载荷格式信息封装在TLS隧道数据包中;或
若隧道类型为DTLS隧道类型,则将媒体的数据包中包含的RTP协议数据包/RTCP协议数据包与UDP协议数据包报头作为所述隧道数据包的载荷格式信息封装在DTLS隧道数据包中。
结合本发明的第一方面的第六种可能的实施方式,在第七种可能的实施方式中,所述UDP协议数据包报头中包含的端口号分别为所述用户终端分配的媒体端口、所述媒体网关分配的媒体端口。
结合本发明的第一方面的第六种可能的实施方式,或者结合本发明的第一方面的第七种可能的实施方式,在第八种可能的实施方式中,所述媒体传输方法还包括:
所述用户终端对接收到的所述媒体数据包进行解封装,获取TLS隧道数据包/DTLS隧道数据包中的媒体的数据包;
根据所述TLS隧道数据包/DTLS隧道数据包中UDP协议数据包报头中包含的端口号,将所述媒体的数据包发送给媒体处理单元。
根据本发明的第二方面,提供了一种媒体传输设备,包括:
类型确定模块,用于根据网络地址转换会话传输应用程序STUN的探测结果,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型,其中,所述隧道类型至少包含了传输层安全TLS隧道类型、数据报传输层安全DTLS隧道类型中的一种或者多种;
隧道建立模块,用于根据确定的所述隧道类型,为所述隧道类型对应的传输隧道分配用户终端侧的第一端口号,并将所述隧道类型、所述第一端口号和隧道数据包的载荷格式信息发送给网络侧,使网络侧根据所述隧道类型为所述隧道类型对应的传输隧道分配网络侧的第二端口号,在所述第一端口号和所述第二端口号之间建立传输隧道;
数据包接收模块,用于接收所述网络侧通过建立的所述传输隧道传输的、按照所述隧道数据包的载荷格式信息封装的媒体的数据包。
结合本发明的第二方面可能的实施方式,在第一种可能的实施方式中,所述隧道建立模块将所述隧道类型、所述第一端口号和隧道数据包的载荷格式信息发送给网络侧,具体用于:
将所述隧道类型、所述第一端口号和隧道数据包的载荷格式信息携带在会话描述协议SDP消息中发送给IP承载语音VoIP信令服务器,由VoIP信令服务器根据所述隧道类型为所述隧道类型对应的传输隧道分配网络侧的第二端口号,并将所述第二端口号发送给媒体网关和所述用户终端;
通过与所述媒体网关协商,在所述第一端口号和所述第二端口号之间建立传输隧道。
结合本发明的第二方面可能的实施方式,或者结合本发明的第二方面的第一种可能的实施方式,在第二种可能的实施方式中,所述类型确定模块根据STUN的探测结果,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型,具体用于:
向STUN服务器发送由用户数据报协议UDP承载的地址收集请求,其中,所述地址收集请求用于获取防火墙分别为用于传输实时传输协议RTP数据包的端口和用于传输实时传输控制协议RTCP数据包的端口分配的公用地址;
在无法接收到STUN服务器返回的由UDP承载的地址收集响应时,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型为TLS隧道类型。
结合本发明的第二方面可能的实施方式,或者结合本发明的第二方面的第一种可能的实施方式,或者结合本发明的第二方面的第二种可能的实施方式,在第三种可能的实施方式中,所述隧道建立模块在所述第一端口号和所述第二端口号之间建立传输隧道,具体用于:
若所述用户终端确定的隧道类型为TLS隧道类型,则所述用户终端在所述第一端口号和所述第二端口号之间建立TLS隧道。
结合本发明的第二方面可能的实施方式,或者结合本发明的第二方面的第一种可能的实施方式,在第四种可能的实施方式中,所述类型确定模块根据STUN的探测结果,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型,具体用于:
向STUN服务器发送由用户数据报协议UDP承载的地址收集请求,其中,所述地址收集请求用于获取防火墙分别为用于传输实时传输协议RTP数据包的端口和用于传输实时传输控制协议RTCP数据包的端口分配的公用地址;
在接收到STUN服务器返回的地址收集响应时,进一步通过所述用户终端的媒体端口向媒体网关对应的媒体端口发送媒体路径的STUN连通性检测请求,其中,所述STUN连通性检测请求用以确定用户终端发送的媒体的数据包是否可以直接到达所述媒体网关对应的媒体端口;
在尚未接收到所述媒体网关发送的STUN连通性检测响应时,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型为DTLS隧道类型。
结合本发明的第二方面可能的实施方式,或者结合本发明的第二方面的第一种可能的实施方式,或者结合本发明的第二方面的第四种可能的实施方式,在第五种可能的实施方式中,所述隧道建立模块建立包含了所述第一端口号和所述第二端口号的传输隧道,具体用于:
若所述用户终端确定的隧道类型为DTLS隧道类型,则所述用户终端在所述第一端口号和所述第二端口号之间建立DTLS隧道。
结合本发明的第二方面可能的实施方式,或者结合本发明的第二方面的第一种可能的实施方式,或者结合本发明的第二方面的第二种可能的实施方式,或者结合本发明的第二方面的第三种可能的实施方式,或者结合本发明的第二方面的第四种可能的实施方式,或者结合本发明的第二方面的第五种可能的实施方式,在第六种可能的实施方式中,通过以下方式按照所述隧道数据包的载荷格式信息封装媒体的数据包:
若隧道类型为TLS隧道类型,则将媒体的数据包中包含的RTP协议数据包/RTCP协议数据包与UDP协议数据包报头作为所述隧道数据包的载荷格式信息封装在TLS隧道数据包中;或
若隧道类型为DTLS隧道类型,则将媒体的数据包中包含的RTP协议数据包/RTCP协议数据包与UDP协议数据包报头作为所述隧道数据包的载荷格式信息封装在DTLS隧道数据包中。
结合本发明的第二方面的第六种可能的实施方式,在第七种可能的实施方式中,所述UDP协议数据包报头中包含的端口号分别为所述用户终端分配的媒体端口、所述媒体网关分配的媒体端口。
结合本发明的第二方面的第六种可能的实施方式,或者结合本发明的第二方面的第七种可能的实施方式,在第八种可能的实施方式中,所述媒体传输设备还包括:解析模块,其中:
所述解析模块,用于对接收到的所述媒体数据包进行解封装,获取TLS隧道数据包/DTLS隧道数据包中的媒体的数据包;
根据所述TLS隧道数据包/DTLS隧道数据包中UDP协议数据包报头中包含的端口号,将所述媒体的数据包发送给媒体处理单元。
本发明有益效果如下:
本发明实施例用户终端根据STUN的探测结果,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型,根据确定的所述隧道类型,为所述隧道类型对应的传输隧道分配用户终端侧的第一端口号,并将所述隧道类型、所述第一端口号和隧道数据包的载荷格式信息发送给网络侧,使网络侧根据所述隧道类型为所述隧道类型对应的传输隧道分配网络侧的第二端口号,在所述第一端口号和所述第二端口号之间建立传输隧道;接收所述网络侧通过建立的所述传输隧道传输的、按照所述隧道数据包的载荷格式信息封装的媒体的数据包。这样IP数据包在穿越防火墙时,防火墙无法获知上层协议数据包类型,同时本发明实施例的方式在不增加额外网元和节点的情形下,直接与媒体网关之间建立传输隧道,不仅能够穿越所有类型的防火墙,而且有效地避免了媒体传输中出现的时延问题,提升了媒体传输效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的一种媒体传输方法的流程示意图;
图2为穿越防火墙时TLS隧道数据包格式的示意图;
图3为穿越防火墙时DTLS隧道数据包格式的示意图;
图4为本发明实施例二提供的一种媒体传输方法的流程示意图;
图5为本发明实施例三提供的一种媒体传输方法的流程示意图;
图6为本发明实施例四提供的一种媒体传输方法的流程示意图;
图7为本发明实施例五提供的一种媒体传输设备的结构示意图;
图8为本发明实施例六提供的一种媒体传输设备的结构示意图。
具体实施方式
为了实现本发明的目的,本发明实施例提供了一种媒体传输方法和设备,用户终端根据STUN的探测结果,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型,根据确定的所述隧道类型,为所述隧道类型对应的传输隧道分配用户终端侧的第一端口号,并将所述隧道类型、所述第一端口号和隧道数据包的载荷(英文:Payload)格式信息发送给网络侧,使网络侧根据所述隧道类型为所述隧道类型对应的传输隧道分配网络侧的第二端口号,在所述第一端口号和所述第二端口号之间建立传输隧道;接收所述网络侧通过建立的所述传输隧道传输的、按照所述隧道数据包的载荷格式信息封装的媒体的数据包。这样IP数据包在穿越防火墙时,防火墙无法获知上层协议数据包类型,同时本发明实施例的方式在不增加额外网元和节点的情形下,直接与媒体网关之间建立传输隧道,不仅能够穿越所有类型的防火墙,而且有效地避免了媒体传输中出现的时延问题,提升了媒体传输效率。
需要说明的是,本发明实施例中描述的媒体的数据包包括:RTP数据包和/或RTCP数据包。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
下面结合说明书附图对本发明各个实施例作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
实施例一:
如图1所示,为本发明实施例一提供的一种媒体传输方法的流程示意图。所述方法可以如下所述。
步骤101:用户终端根据STUN的探测结果,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型。
其中,所述隧道类型至少包含了传输层安全(Transport Layer Security;TLS)隧道类型、数据报传输层安全(Datagram Transport Layer Security;DTLS)隧道类型中的一种或者多种。
在步骤101中,用户终端发起VoIP会话,运行ICE客户端,从而启动ICE/STUN穿越防火墙流程。
用户终端为待传输的RTP数据包和RTCP数据包随机分配一对端口号P1和P2,其中,RTP端口号数为偶数,且比RTCP的端口号小1。
用户终端向STUN服务器发送地址收集请求。
其中,所述地址收集请求用于获取防火墙分别为用于传输实时传输协议RTP数据包的端口和用于传输实时传输控制协议RTCP数据包的端口分配的公用地址。
需要说明的是,用户终端向STUN服务器发送由UDP(User Datagram Protocol,用户数据包协议)承载的地址收集请求。
具体地,用户终端分别通过P1端口和P2端口向STUN服务器发送由UDP承载的地址分配请求(即STUN allocate)或者STUN绑定请求(即STUN Binding)(在本发明中,为了叙述方便,STUN地址分配请求和STUN绑定请求可以被统称为地址收集请求)。
STUN服务器获取该地址收集请求的源地址,该源地址即防火墙为发送地址收集请求的用户终端的端口分配的公网地址,STUN服务器通过地址收集响应将该公网地址发送给用户终端,使得用户终端获知防火墙为其端口分配的公网地址。
情形一:
由于用户终端发送的地址收集请求由UDP承载、STUN服务器向用户终端发送的地址收集响应也由UDP承载,一旦防火墙限制UDP数据包通过、或者防火墙端口3478(STUN默认的协议端口)没有开放,防火墙将用户终端发送的地址收集请求丢弃,使得STUN服务器无法接收到用户终端发送的地址收集请求,用户终端也无法接收到STUN服务器发送的地址收集响应。
此时,用户终端确定防火墙禁止VoIP媒体传输,需要为待传输的媒体建立用于穿越防火墙的传输隧道。
在这种情形下,用户终端确定防火墙限制传输UDP数据包,需要为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型为TLS隧道类型。
情形二:
由于STUN服务器返回的由UDP承载的地址收集响应,若防火墙尚未限制UDP数据包通过、或者防火墙端口3478(STUN默认的协议端口)开放,用户终端接收到STUN服务器返回的地址收集响应,获取防火墙分别为P1端口和P2端口分配的公用地址(又被称为reflexive地址)。
用户终端继续执行ICE/STUN穿越防火墙流程:
用户终端向VoIP信令服务器发送SDP(Session Description Protocol;会话描述协议)消息,其中,所述SDP消息中包含了reflexive地址。
VoIP信令服务器将接收到的SDP消息和ICE信息发送给媒体网关,并随机为P1端口和P2端口分配对应的网络侧媒体端口(即P3端口和P4端口)。
需要说明的是,这里的网络侧媒体端口可以是指媒体网关对应的媒体端口。
VoIP信令服务器向用户终端返回SDP响应消息,其中,所述SDP响应消息包含了分配的网络侧媒体端口(即P3端口和P4端口)。
用户终端进一步地通过用户终端的媒体端口向媒体网关对应的媒体端口发送媒体路径的STUN连通性检测(STUN Connectivity check)请求,其中,所述STUN连通性检测请求用以确定用户终端发送的媒体是否可以直接到达所述媒体网关对应的媒体端口,即用户终端检查从本端媒体端口到媒体网关对应的媒体端口之间的路径是否可通。
若用户终端与媒体网关之间的防火墙没有开通通信双方的协议端口,用户终端将无法接收到所述媒体网关发送的STUN连通性检测响应,此时,用户终端确定为待传输的媒体建立用于穿越防火墙的传输隧道。
或者说,由于用户终端与媒体网关之间的防火墙具备DPI(Deep PacketInspection;深度数据包检测)功能,可以允许STUN连通性检测请求通过,但是不允许RTP/RTCP数据包通过,使得用户终端依然无法接收到来自媒体网关的媒体数据包,此时,用户终端确定为待传输的媒体建立用于穿越防火墙的传输隧道。
在这种情形下,用户终端需要为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型为DTLS隧道类型。
综上所述,若用户终端向STUN服务器发送由UDP承载的地址收集请求,在无法接收到STUN服务器返回的由UDP承载的地址收集响应时,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型为TLS隧道类型。
若用户终端向STUN服务器发送由UDP承载的地址收集请求,在接收到STUN服务器返回的由UDP承载的地址收集响应时,按照现有技术规范,分别通过P1和P2端口向媒体网关对应的媒体端口发送STUN连通性检测请求,在尚未接收到所述媒体网关发送的STUN连通性检测响应时,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型为DTLS隧道类型。
步骤102:所述用户终端根据确定的所述隧道类型,为所述隧道类型对应的传输隧道分配用户终端侧的第一端口号。
在步骤102中,用户终端在确定建立用于穿越防火墙的传输隧道时,即采用隧道数据包封装RTP/RTCP over UDP数据包的方式穿越防火墙,此时为确定的所述隧道类型对应的传输隧道分配用户终端侧的第一端口号。
若确定的隧道类型为TLS隧道类型,则用户终端侧的第一端口号为TLS隧道类型分配用户终端侧TLS客户端的端口号;
若确定的隧道类型为DTLS隧道类型,则用户终端侧的第一端口号为TLS隧道类型分配用户终端侧DTLS客户端的端口号。
步骤103:所述用户终端将所述隧道类型、所述第一端口号和隧道数据包的载荷格式信息发送给网络侧,使网络侧根据所述隧道类型为所述隧道类型对应的传输隧道分配网络侧的第二端口号,在所述第一端口号和所述第二端口号之间建立传输隧道。
在步骤103中,所述用户终端将所述隧道类型、所述第一端口号和隧道数据包的载荷格式信息携带在SDP消息中发送给IP承载语音VoIP信令服务器,由VoIP信令服务器根据所述隧道类型为所述隧道类型对应的传输隧道分配网络侧的第二端口号,并将所述第二端口号发送给媒体网关和所述用户终端。
所述用户终端还可以将所述用户终端的IP地址发送给VoIP信令服务器。
VoIP信令服务器还可以将认证参数发送给所述用户终端,所述认证参数用于在与所述媒体网关建立传输隧道时对所述媒体网关进行认证。
需要说明的是,隧道数据包的载荷格式是指RTP协议数据包/RTCP协议数据包如何承载在隧道数据包中,隧道数据包的载荷格式信息是指SDP携带的特定标识或者属性行,用于通知接收方如何将待发送的媒体的数据包封装在隧道数据包中。
情形一:
具体地,VoIP信令服务器在接收到用户终端发送的SDP消息,根据SDP消息中包含的所述隧道类型确定采用TLS隧道方式穿越的防火墙时,固定分配TLS协议默认端口号443作为TLS隧道网络侧的端口,同时随机分配RTP协议数据包/RTCP协议数据包的端口号为P4/P5;并产生用于在建立TLS传输隧道的握手协商过程中用户终端对媒体网关进行认证的认证参数,例如:认证参数可以为媒体网关数字证书指纹或者预共享密钥。
此外,VoIP信令服务器通过SDP响应消息将分配的TLS传输隧道网络侧的端口号和建立TLS隧道的认证参数发送给用户终端。
同时,VoIP信令服务器将建立TLS传输隧道的网络侧端口(即第二端口号)和隧道数据包的载荷格式信息发给媒体网关。
所述用户终端和所述媒体网关根据现有TLS协议,协商在第一端口号和第二端口号之间建立TLS传输隧道。
这里需要说明的是,在用户终端与媒体网关之间协商建立TLS传输隧道时,只需要执行单边认证即可,即用户终端对媒体网关进行认证,因为根据现有ICE协议,在建立TLS传输隧道之后,用户终端通过TLS传输隧道发送STUN连通性检测请求,此时,媒体网关采用ICE短期凭证认证机制(short-term credential)对用户终端进行认证。
情形二:
具体地,VoIP信令服务器在接收到用户终端发送的SDP消息,根据SDP消息中包含的所述隧道类型确定采用DTLS隧道方式穿越的防火墙时,固定分配STUN协议默认端口号3478作为DTLS隧道网络侧的端口,并在建立DTLS传输隧道的握手协商过程中用户终端对媒体网关进行认证的认证参数,例如:认证参数可以为媒体网关数字证书指纹或者预共享密钥。
此外,VoIP信令服务器通过SDP响应消息将DTLS隧道网络侧的端口号(即第二端口号)和建立隧道的认证参数发送给用户终端。
同时,VoIP信令服务器将建立DTLS隧道的网络侧端口和隧道数据包的载荷格式信息发给媒体网关。
所述用户终端和所述媒体网关根据现有DTLS协议,协商在第一端口号和第二端口号之间建立DTLS传输隧道。
步骤104:所述用户终端接收所述网络侧通过建立的所述传输隧道传输的、按照所述隧道数据包的载荷格式信息封装的媒体的数据包。
其中,所述媒体的数据包中包含RTP协议数据包/RTCP协议数据包和UDP协议报头,即RTP/RTCP over UDP数据包,该UDP协议报头中包含的端口号为SDP中携带的通信双方的RTP/RTCP端口。
可选的,在本发明实施例中,隧道传输的媒体的数据包即可以是采用加密形式也可以采用非加密形式封装。
具体的,根据现有协议,TLS和DTLS对承载的数据包进行封装的方式有两种,一种是采用正常的加密算法(如AES,3DES等算法)对数据进行加密,另一种是采用不加密的方式进行对数据进行明文封装。按照现有TLS/DTLS协议,即使采用明文封装方式承载数据,通信双方也要进行与采用加密封装方式一样的TLS/DTLS握手协商过程,只不过是双方协商出来的加密算法为空算法(null)。所谓空算法实际上就是不对数据进行加密,且无论是采用哪种封装方式,数据包的格式是一样的。另外由于防火墙不会对TLS/DTLS握手过程进行协议逻辑解析,无法知道TLS/DTLS将采用哪种加密算法进行加密,默认载荷部分的数据已经被加密,这样防火墙无法获知TLS/DTLS隧道承载的数据包协议类型。因此,用户终端只要能够和媒体网关建立TLS/DTLS隧道,无论采用哪种加密算法,都不影响TLS/DTLS隧道承载的媒体数据包穿越防火墙。
在步骤104中,通过以下方式按照所述隧道数据包的载荷格式信息封装媒体的数据包:
若隧道类型为TLS隧道类型,则将媒体的数据包中包含的RTP协议数据包/RTCP协议数据包与UDP协议数据包报头作为隧道数据包的载荷格式信息封装在TLS隧道数据包中;或
若隧道类型为DTLS隧道类型,则将媒体的数据包中包含的RTP协议数据包/RTCP协议数据包与UDP协议数据包报头作为隧道数据包的载荷格式信息封装在DTLS隧道数据包中。
所述UDP协议数据包报头中包含的端口号分别为所述用户终端分配的媒体端口、所述媒体网关分配的媒体端口。
可选地,所述媒体传输方法还包括:
所述用户终端对接收到的所述媒体数据包进行解封装,获取TLS隧道数据包/DTLS隧道数据包中的媒体的数据包,并根据TLS隧道数据包/DTLS隧道数据包中UDP协议数据包报头中包含的端口号,将所述媒体的数据包发送给媒体处理单元。
如图2所示,为穿越防火墙时TLS隧道数据包格式的示意图。
图2所示的为TLS隧道数据包。从图2中可以看出,TLS报文包含了隧道数据包头、隧道数据包载荷和TLS报尾。其中,隧道数据包头中包含的TCP的端口号为TLS传输隧道的源端口号和目的端口号。若媒体的数据包由用户终端发给媒体网关时,该隧道数据包的源端口号为第一端口号,目的端口为第二端口号;若媒体的数据包由媒体网关发送给用户终端时,该隧道数据包的源端口号为第二端口号,目的端口号为穿越防火墙为用户终端分配的公网地址对应的端口号,在STUN连通性检测阶段,媒体网关通过STUN连通性检测(例如:TLS握手请求消息或者STUN连通性检测请求消息)获取到防火墙分配给该用户终端的公网地址。
和正常的VoIP会议一样,通信双方通过SDP消息交换对端的媒体端口号,隧道数据包载荷中包含的UDP报头的端口号为SDP中携带的通信双方的媒体端口号,若媒体的数据包由用户终端发给媒体网关时,该UDP报头的源端口号为P1/P2,目的端口号为P3/P4;若媒体的数据包由媒体网关发送给用户终端时,该UDP报头的源端口号为P3/P4,目的端口为P1/P2。
TLS报尾部分为TLS载荷部分的完整性校验值,根据TLS协议,该值用于验证载荷部分数据是否被修改过。
这里需要指出的是,无论TLS采用哪种加密算法,即使是空(null)算法,数据包的格式都不变。
由于隧道数据包载荷部分被封装在TLS报头和报尾之间,因此防火墙无法知道隧道数据包承载的媒体的数据包的类型。
如图3所示,为穿越防火墙时DTLS隧道数据包格式的示意图。
图3所示的为DTLS隧道数据包。从图3中可以看出,DTLS报文包含了隧道数据包头、隧道数据包载荷和DTLS报尾。其中,隧道数据包头中包含的UDP的端口号为DTLS传输隧道的源端口号和目的端口。若媒体的数据包由用户终端发给媒体网关时,该隧道数据包的源端口号为第一端口号,目的端口号为第二端口号;若媒体的数据包由媒体网关发送给用户终端时,该隧道数据包的源端口号为第二端口号,目的端口号为穿越防火墙为用户终端分配的公网地址对应的端口号,在STUN连通性检测阶段,媒体网关通过STUN连通性检测(例如:DTLS握手请求消息或者STUN连通性检测消息)获取到防火墙分配给该用户终端的公网地址。
隧道数据包载荷中包含的UDP报头的端口号为SDP携带的通信双方的媒体端口号,若媒体的数据包由用户终端发给媒体网关时,该端口号为P1/P2;若媒体的数据报文由媒体网关发送给用户终端时,该端口号为P3/P4。
DTLS报尾部分为TLS载荷部分的完整性校验值,根据DTLS协议,该值用于验证载荷部分数据是否被修改过。
这里需要指出的是,无论DTLS采用哪种加密算法,即使是空(null)算法,数据包的格式都不变。由于隧道数据包载荷部分被封装在DTLS报头和DTLS报尾之间,因此防火墙无法知道隧道数据包承载的媒体的数据包的类型。
通过本发明实施例一的方案,用户终端根据STUN的探测结果,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型,根据确定的所述隧道类型,为所述隧道类型对应的传输隧道分配用户终端侧的第一端口号,并将所述隧道类型、所述第一端口号和隧道数据包的载荷格式信息发送给网络侧,使网络侧根据所述隧道类型为所述隧道类型对应的传输隧道分配网络侧的第二端口号,在所述第一端口号和所述第二端口号之间建立传输隧道;接收所述网络侧通过建立的所述传输隧道传输的、按照所述隧道数据包的载荷格式信息封装的媒体的数据包。这样IP数据包在穿越防火墙时,防火墙无法获知上层协议数据包类型,同时本发明实施例的方式在不增加额外网元和节点的情形下,直接与媒体网关之间建立传输隧道,不仅能够穿越所有类型的防火墙,而且有效地避免了媒体传输中出现的时延问题,提升了媒体传输效率。
实施例二:
如图4所示,为本发明实施例二提供的一种媒体传输方法的流程示意图。所述方法可以如下所述。
步骤401:用户终端发起VoIP会话,运行ICE客户端。
在步骤401中,用户终端启动ICE/STUN穿越防火墙流程。
步骤402:用户终端为待传输的RTP数据包和RTCP数据包随机分配一对端口号P1和P2。
其中,RTP端口号数为偶数,且比RTCP的端口号小1。
步骤403:用户终端向STUN服务器发送地址收集请求。
其中,所述地址收集请求用于获取防火墙分别为用于传输实时传输协议RTP数据包的端口和用于传输实时传输控制协议RTCP数据包的端口分配的公用地址。
需要说明的是,用户终端向STUN服务器发送由UDP(User Datagram Protocol,用户数据包协议)承载的地址收集请求。
具体地,用户终端分别通过P1端口和P2端口向STUN服务器发送由UDP承载的地址分配请求(即STUN allocate)或者STUN绑定请求(即STUN Binding)(在本发明中,为了叙述方便,地址分配请求和STUN绑定请求可以被统称为地址收集请求)。
STUN服务器获取该地址收集请求的源地址,该源地址即防火墙为发送地址收集请求的用户终端的端口分配的公网地址,STUN服务器通过地址收集响应将该公网地址发送给用户终端,使得用户终端获知防火墙为其端口分配的公网地址。
步骤404:用户终端判断是否能够接收到STUN服务器返回的地址收集响应,若接收到,则执行步骤409;若没有接收到,则执行步骤405。
步骤405:用户终端确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型为TLS隧道类型。
步骤406:用户终端根据确定的TLS隧道类型,为TLS隧道类型对应的传输隧道分配用户终端侧TLS客户端的端口号。
需要说明的是,这里的用户终端侧TLS客户端的端口号也可以被称为用户终端侧的第一端口号。
步骤407:所述用户终端将所述隧道类型、所述用户终端侧TLS客户端的端口号和隧道数据包的载荷格式信息发送给网络侧,使网络侧根据所述隧道类型为所述隧道类型对应的传输隧道分配网络侧的端口号,在所述用户终端侧TLS客户端的端口号和所述网络侧的端口号之间建立传输隧道。
需要说明的是,这里的网络侧的端口号也可以被称为网络侧的第二端口号。
在步骤407中,所述用户终端将所述隧道类型、所述用户终端侧TLS客户端的端口号和隧道数据包的载荷格式信息携带在SDP消息中发送给IP承载语音VoIP信令服务器,由VoIP信令服务器根据所述隧道类型,为所述隧道类型对应的传输隧道分配网络侧的端口号,并将所述网络侧的端口号发送给媒体网关和所述用户终端。
所述用户终端还可以将所述用户终端的IP地址发送给VoIP信令服务器。
VoIP信令服务器还可以将认证参数发送给所述用户终端,所述认证参数用于在与所述媒体网关建立传输隧道时对所述媒体网关进行认证。
具体地,VoIP信令服务器在接收到用户终端发送的SDP消息,根据SDP消息中包含的所述隧道类型确定采用TLS隧道方式穿越的防火墙时,固定分配TLS协议默认端口号443作为TLS隧道网络侧的端口,同时随机分配RTP/RTCP协议数据包的端口号为P4/P5;并产生用于在建立TLS传输隧道的握手协商过程中用户终端对媒体网关进行认证的认证参数,例如:认证参数可以为媒体网关数字证书指纹或者预共享密钥。
此外,VoIP信令服务器通过SDP响应消息将分配的TLS传输隧道网络侧的端口号和建立TLS隧道的认证参数发送给用户终端。
同时,VoIP信令服务器将建立TLS传输隧道的网络侧的端口和隧道数据包的载荷格式信息发给媒体网关。
所述用户终端和所述媒体网关根据现有TLS协议,协商在所述用户终端侧TLS客户端的端口号和所述网络侧的端口号之间建立TLS传输隧道。
这里需要说明的是,在用户终端与媒体网关之间协商建立TLS传输隧道时,只需要执行单边认证即可,即用户终端对媒体网关进行认证,因为根据现有ICE协议,在建立TLS传输隧道之后,用户终端通过TLS传输隧道发送STUN连通性检测请求,此时,媒体网关采用ICE短期凭证认证机制(short-term credential)对用户终端进行认证。
步骤408:所述用户终端接收所述网络侧通过建立的所述传输隧道传输的、按照所述隧道数据包的载荷格式信息封装的媒体的数据包。
在步骤408中,通过以下方式按照所述隧道数据包的载荷格式信息封装媒体的数据包:
在隧道类型为TLS隧道类型时,将媒体的数据包中包含的RTP协议数据包/RTCP协议数据包与UDP协议数据包报头作为隧道数据包的载荷格式信息封装在TLS隧道数据包中。
用户终端通过TLS传输隧道发送STUN连通性检检测请求,媒体网关采用短期凭证机制对用户终端执行认证。用户终端在接收到STUN连通性检测响应之后,通过update SDPoffer消息通知媒体网关,确定采用TLS传输隧道穿越防火墙。用户终端和媒体网关按照图2的TLS隧道数据包格式,通过TLS传输隧道,将RTP/RTCP over UDP协议数据包发送到对端。
步骤409:用户终端接收到STUN服务器返回的地址收集响应,获取防火墙分别为P1端口和P2端口分配的公用地址。
用户终端向VoIP信令服务器发送SDP(Session Description Protocol;会话描述协议)消息,其中,所述SDP消息中包含了该公用地址。
VoIP信令服务器将接收到的SDP消息和ICE信息发送给媒体网关,并随机为P1端口和P2端口分配网络侧对应的媒体端口(即P3端口和P4端口)。
VoIP信令服务器向用户终端返回SDP响应消息,其中,所述SDP响应消息包含了分配的网络侧对应的媒体端口(即P3端口和P4端口)。
需要说明的是,这里的网络侧媒体端口可以是指媒体网关对应的媒体端口。
步骤410:用户终端通过媒体端口P1/P2向媒体网关对应的媒体端口P3/P4发送媒体路径的STUN连通性检测请求。
其中,所述STUN连通性检测(STUN Connectivity check)请求用以确定用户终端发送的媒体是否可以直接到达所述媒体网关对应的媒体端口,即用户终端检查从本端媒体端口到媒体网关对应的媒体端口之间的路径是否可通。
步骤411:用户终端在无法接收到所述媒体网关发送的STUN连通性检测响应时,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型为DTLS隧道类型。
在步骤411中,若用户终端与媒体网关之间的防火墙没有开通通信双方的协议端口,用户终端将无法接收到所述媒体网关发送的STUN连通性检测响应,此时,用户终端确定为待传输的媒体建立用于穿越防火墙的传输隧道。
或者说,由于用户终端与媒体网关之间的防火墙具备DPI(Deep PacketInspection;深度报文检测)功能,可以允许STUN连通性检测请求通过,但是不允许RTP协议数据包/RTCP协议数据包通过,使得用户终端依然无法接收到来自媒体网关的媒体的数据包,此时,用户终端确定为待传输的媒体建立用于穿越防火墙的传输隧道。
步骤412:用户终端根据确定的DTLS隧道类型,为DTLS隧道类型分配用户终端侧DTLS客户端的端口号。
需要说明的是,这里的用户终端侧DTLS客户端的端口号也可以被称为用户终端侧的第一端口号。
步骤413:所述用户终端将所述隧道类型、所述用户终端侧DTLS客户端的端口号和载荷格式信息发送给网络侧,使网络侧根据所述隧道类型为所述隧道类型对应的传输隧道分配网络侧的端口号,在所述用户终端侧DTLS客户端的端口号和所述网络侧的端口号之间建立传输隧道。
在步骤413中,VoIP信令服务器在接收到用户终端发送的SDP消息,根据SDP消息中包含的所述隧道类型确定采用DTLS隧道方式穿越的防火墙时,固定分配STUN协议默认端口号3478作为DTLS隧道网络侧的端口,并在建立DTLS传输隧道的握手协商过程中用户终端对媒体网关进行认证的认证参数,例如:认证参数可以为媒体网关数字证书指纹或者预共享密钥。
此外,VoIP信令服务器通过SDP响应消息将DTLS隧道网络侧的端口号和建立隧道的认证参数发送给用户终端。
同时,VoIP信令服务器将建立DTLS隧道的网络侧端口和隧道数据包的载荷格式信息发给媒体网关。
所述用户终端和所述媒体网关根据现有DTLS协议,协商在所述用户终端侧DTLS客户端的端口号和所述网络侧的端口号之间建立DTLS传输隧道。
步骤414:所述用户终端接收所述网络侧通过建立的所述传输隧道传输的、按照所述隧道数据包的载荷格式信息封装的媒体的数据包。
在步骤414中,通过以下方式按照所述隧道数据包的载荷格式信息封装媒体的数据包:
在隧道类型为DTLS隧道类型时,将媒体的数据包中包含的RTP协议数据包/RTCP协议数据包与UDP协议数据包报头作为所述DTLS隧道类型对应的隧道数据包的载荷格式信息封装在DTLS隧道数据包中。
可选地,用户终端通过DTLS传输隧道发送STUN连通性检检测请求,媒体网关采用短期凭证机制对用户终端执行认证。用户终端在接收到STUN连通性检测响应之后,通过update SDP offer消息通知媒体网关,确定采用DTLS传输隧道穿越防火墙。用户终端和媒体网关按照图3的封装格式,通过DTLS传输隧道,将RTP/RTCP over UDP协议数据包发送到对端。
这样IP报文在穿越防火墙时,防火墙无法获知上层协议数据包类型,同时本发明实施例的方式在不增加额外网元和节点的情形下,直接与媒体网关之间建立传输隧道,不仅能够穿越所有类型的防火墙,而且有效地避免了媒体传输中出现的时延问题,提升了媒体传输效率。
实施例三:
如图5所示,为本发明实施例三提供的一种媒体传输方法的流程示意图。所述方法可以如下所述。
步骤501:用户终端发起VoIP会话,运行ICE客户端。
在步骤501中,用户终端启动ICE/STUN穿越防火墙流程。
步骤502:用户终端为待传输的RTP数据包和RTCP数据包随机分配一对端口号P1和P2。
其中,RTP端口号数为偶数,且比RTCP的端口号小1。
步骤503:用户终端向STUN服务器发送地址收集请求。
其中,所述地址收集请求用于获取防火墙分别为用于传输实时传输协议RTP数据包的端口和用于传输实时传输控制协议RTCP数据包的端口分配的公用地址。
需要说明的是,用户终端向STUN服务器发送由UDP(User Datagram Protocol,用户数据包协议)承载的地址收集请求。
具体地,用户终端分别通过P1端口和P2端口向STUN服务器发送由UDP承载的地址分配请求(即STUN allocate)或者STUN绑定请求(即STUN Binding)(在本发明中,为了叙述方便,地址分配请求和STUN绑定请求可以被统称为地址收集请求)。
STUN服务器获取该地址收集请求的源地址,该源地址即防火墙为发送地址收集请求的用户终端的端口分配的公网地址,STUN服务器通过地址收集响应将该公网地址发送给用户终端,使得用户终端获知防火墙为其端口分配的公网地址。
步骤504:用户终端在无法接收到STUN服务器返回的地址收集响应时,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型为TLS隧道类型。
由于用户终端发送的地址收集请求由UDP承载,一旦防火墙限制UDP报文通过、或者防火墙端口3478(STUN默认的协议端口)没有开放,防火墙将用户终端发送的地址收集请求丢弃,使得STUN服务器无法接收到用户终端发送的地址收集请求,用户终端也无法接收到STUN服务器发送的地址收集响应。
此时,用户终端确定防火墙禁止VoIP媒体传输,需要为待传输的媒体建立用于穿越防火墙的传输隧道。
在这种情形下,用户终端确定防火墙限制传输UDP报文,需要为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型为TLS隧道类型。
步骤505:用户终端根据确定的TLS隧道类型,为TLS隧道类型对应的传输隧道分配用户终端侧TLS客户端的端口号。
步骤506:用户终端通过SDP消息将所述隧道类型、所述用户终端侧TLS客户端的端口号和隧道数据包的载荷格式信息发送给VoIP信令服务器,使得VoIP信令服务器确定采用TLS隧道方式穿越的防火墙。
需要说明的是,SDP消息中还可以携带用户终端的IP地址(即用户终端的私有地址)。
在步骤506中,SDP消息中携带所述隧道类型、所述用户终端侧TLS客户端的端口号和媒体封装格式的方式包括但不限于:
第一种方式:
定义一个SDP属性行,该SDP属性行用于描述穿越防火墙的隧道类型、用户终端侧TLS客户端的端口号、媒体封装格式信息。
例如:采用的格式为a=traversal:<用户终端侧TLS客户端的端口号><隧道类型><隧道数据包的载荷格式信息>。
本实施例中可以具体描述为a=traversal:P3TLS-tunnel UDP-included,表明用户终端侧TLS客户端的端口号为P1,采用TLS隧道类型,隧道数据包的载荷格式信息为RTP协议数据包/RTCP协议数据包加上UDP报头作为TLS隧道数据包的载荷。
第二种方式:
对SDP消息中的candidate属性行进行扩展,增加标识位,描述该candidate的路径为隧道类型、隧道数据包的载荷格式信息。
例如:采用a=host candidate:<现有协议参数><隧道类型><隧道数据包的载荷格式信息>。本实例具体可以描述为a=candidate:TCP P3host candidate TLS-tunnelUDP-included。
步骤507:VoIP信令服务器在接收到用户终端发送的SDP消息,根据SDP消息中包含的所述隧道类型确定采用TLS隧道方式穿越的防火墙时,固定分配TLS协议默认端口号443作为TLS隧道服务器端(也即网络侧)的端口,同时随机分配RTP/RTCP协议数据包的端口号为P4/P5。
可选地,VoIP信令服务器产生用于在建立TLS传输隧道的握手协商过程中用户终端对媒体网关进行认证的认证参数,例如:认证参数可以为媒体网关数字证书指纹或者预共享密钥。
步骤508:VoIP信令服务器通过SDP响应消息将分配的TLS传输隧道网络侧的端口号和建立TLS隧道的认证参数发送给用户终端。
同时,VoIP信令服务器将建立TLS传输隧道的网络侧端口和隧道数据包的载荷格式信息发给媒体网关。
步骤509:所述用户终端和所述媒体网关根据现有TLS协议,协商在所述用户终端侧TLS客户端的端口号和所述网络侧的端口号之间建立TLS传输隧道。
媒体网关根据获取的防火墙为用户终端分配的公网地址和VoIP信令服务器发送的用户终端的私有地址,建立用户终端的私有地址和防火墙为其分配的公网地址之间的映射关系。
需要说明的是,后续媒体网关发送给用户终端的媒体数据报文中隧道报文对应的目的端口号为该公网地址对应的端口号。
步骤510:所述用户终端接收所述网络侧通过建立的所述传输隧道传输的、按照所述隧道数据包的载荷格式信息封装的媒体的数据包。
具体地,通过以下方式按照所述隧道数据包的载荷格式信息封装媒体的数据包:
在隧道类型为TLS隧道类型时,将媒体的数据包中包含的RTP协议数据包/RTCP协议数据包与UDP协议数据包报头作为所述TLS隧道类型对应的隧道数据包的载荷格式信息封装在TLS隧道数据包中。
用户终端通过TLS传输隧道发送STUN连通性检检测请求,媒体网关采用短期凭证机制对用户终端执行认证。用户终端在接收到STUN连通性检测响应之后,通过update SDPoffer消息通知媒体网关,确定采用TLS传输隧道穿越防火墙。用户终端和媒体网关按照图2的TLS隧道数据包格式,通过TLS传输隧道,将RTP/RTCP over UDP协议数据包发送到对端。
实施例四:
如图6所示,为本发明实施例四提供的一种媒体传输方法的流程示意图。所述方法可以如下所述。
步骤601:用户终端发起VoIP会话,运行ICE客户端。
在步骤601中,用户终端启动ICE/STUN穿越防火墙流程。
步骤602:用户终端为待传输的RTP数据包和RTCP数据包随机分配一对端口号P1和P2。
其中,RTP端口号数为偶数,且比RTCP的端口号小1。
步骤603:用户终端向STUN服务器发送地址收集请求。
其中,所述地址收集请求用于获取防火墙分别为用于传输实时传输协议RTP数据包的端口和用于传输实时传输控制协议RTCP数据包的端口分配的公用地址。
需要说明的是,用户终端向STUN服务器发送由UDP(User Datagram Protocol,用户数据包协议)承载的地址收集请求。
具体地,用户终端分别通过P1端口和P2端口向STUN服务器发送由UDP封装的地址分配请求(即STUN allocate)或者STUN绑定请求(即STUN Binding)(在本发明中,为了叙述方便,地址分配请求和STUN绑定请求可以被统称为地址收集请求)。
STUN服务器获取该地址收集请求的源地址,该源地址即防火墙为发送地址收集请求的用户终端的端口分配的公网地址,STUN服务器通过地址收集响应将该公网地址发送给用户终端,使得用户终端获知防火墙为其端口分配的公网地址。
步骤604:用户终端接收到STUN服务器返回的地址收集响应,获取防火墙分别为P1端口和P2端口分配的公用地址。
用户终端向VoIP信令服务器发送SDP(Session Description Protocol;会话描述协议)消息,其中,所述SDP消息中包含了该公用地址。
VoIP信令服务器将接收到的SDP消息和ICE信息发送给媒体网关,并随机为P1端口和P2端口分配网络侧对应的媒体端口(即P3端口和P4端口)。
VoIP信令服务器向用户终端返回SDP响应消息,其中,所述SDP响应消息包含了分配的网络侧对应的媒体端口(即P3端口和P4端口)。
需要说明的是,这里的网络侧媒体端口可以是指媒体网关对应的媒体端口。
步骤605:用户终端通过媒体端口P1/P2向媒体网关对应的媒体端口P3/P4发送媒体路径的STUN连通性检测请求。
其中,所述STUN连通性检测(STUN Connectivity check)请求用以确定用户终端发送的媒体是否可以直接到达所述媒体网关对应的媒体端口,即用户终端检查从本端媒体端口到媒体网关对应的媒体端口之间的路径是否可通。
步骤606:用户终端在无法接收到所述媒体网关发送的STUN连通性检测响应时,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型为DTLS隧道类型。
在步骤606中,若用户终端与媒体网关之间的防火墙没有开通通信双方的协议端口,用户终端将无法接收到所述媒体网关发送的STUN连通性检测响应,此时,用户终端确定为待传输的媒体建立用于穿越防火墙的传输隧道。
或者说,由于用户终端与媒体网关之间的防火墙具备DPI(Deep PacketInspection;深度报文检测)功能,可以允许STUN连通性检测请求通过,但是不允许RTP协议数据包/RTCP协议数据包通过,使得用户终端依然无法接收到来自媒体网关的媒体的数据包,此时,用户终端确定为待传输的媒体建立用于穿越防火墙的传输隧道。
步骤607:用户终端根据确定的DTLS隧道类型,为DTLS隧道类型分配用户终端侧DTLS客户端的端口号。
需要说明的是,这里的用户终端侧DTLS客户端的端口号也可以被称为用户终端侧的第一端口号。
步骤608:用户终端通过SDP消息将所述隧道类型、所述用户终端侧DTLS客户端的端口号和隧道数据包的载荷格式信息发送给VoIP信令服务器,使得VoIP信令服务器确定采用DTLS隧道方式穿越的防火墙。
在步骤608中,SDP携带所述隧道类型、所述用户终端侧DTLS客户端的端口号和隧道数据包的载荷格式信息的方式包括但不限于:
第一种方式:
定义一个SDP属性行,该SDP属性行用于描述隧道类型、用户终端侧DTLS客户端的端口号、隧道数据包的载荷格式信息。
例如:采用的格式为a=traversal:<本端分配的DTLS端口号><隧道类型><隧道数据包的载荷格式信息>。
本实施例中可以具体描述为a=traversal:P5DTLS-tunnel UDP-included,表明DTLS客户端端口号为P5,采用DTLS隧道类型,隧道数据包的载荷格式信息为RTP协议数据包/RTCP协议数据包加上UDP报头作为DTLS隧道数据包的载荷。
第二种方式:
对SDP消息中的candidate属性行进行扩展,增加标识位,描述该candidate的路径为隧道类型、隧道数据包的载荷格式信息。
例如:采用a=host candidate:<现有协议参数><隧道类型><隧道数据包的载荷格式信息>。本实例具体可以描述为a=candidate:TCP P5host candidate TLS-tunnelUDP-included。
步骤609:VoIP信令服务器在接收到用户终端发送的SDP消息,根据SDP消息中包含的所述隧道类型确定采用DTLS隧道方式穿越的防火墙时,固定分配STUN协议默认端口号3478作为DTLS隧道网络侧的端口。
可选地,VoIP信令服务器产生在建立DTLS传输隧道的握手协商过程中用户终端对媒体网关进行认证的认证参数,例如:认证参数可以为媒体网关数字证书指纹或者预共享密钥。
此外,VoIP信令服务器通过SDP响应消息将DTLS隧道网络侧的端口号和建立隧道的认证参数发送给用户终端。
同时,VoIP信令服务器将建立DTLS隧道的网络侧端口和隧道数据包的载荷格式信息发给媒体网关。
步骤610:所述用户终端和所述媒体网关根据现有DTLS协议,协商在所述用户终端侧DTLS客户端的端口号和所述网络侧的端口号之间建立DTLS传输隧道。
其中,在用户终端与媒体网关之间协商建立DTLS传输隧道时,只需要执行单边认证即可,即用户终端对媒体网关进行认证,因为根据现有ICE协议,在建立DTLS传输隧道之后,用户终端通过DTLS传输隧道发送STUN连通性检测请求,此时,媒体网关采用ICE短期凭证认证机制(short-term credential)对用户终端进行认证。
需要说明的是,所谓short-term credential实际上就是使用用户终端发送STUN连通性检测请求携带的STUN账号密码进行认证。
媒体网关获取的防火墙为用户终端中的隧道客户端分配的公网地址和VoIP信令服务器发送的所述的隧道客户端私有地址,建立用户终端的私有地址和防火墙为其分配的公网地址之间的映射关系。。
步骤611:用户终端通过DTLS传输隧道发送STUN连通性检检测请求,在接收到STUN连通性检测响应之后,通过update SDP offer消息通知媒体网关,确定采用DTLS传输隧道穿越防火墙。
步骤612:所述用户终端接收所述网络侧通过建立的DTLS隧道传输的、按照所述隧道数据包的载荷格式信息封装的媒体的数据包。
在步骤612中,通过以下方式按照所述隧道数据包的载荷格式信息封装媒体的数据包:
在隧道类型为DTLS隧道类型时,将媒体的数据包中包含的RTP协议数据包/RTCP协议数据包与UDP协议数据包报头作为所述DTLS隧道类型对应的隧道数据包的载荷格式信息封装在DTLS隧道数据包中。
用户终端和媒体网关按照图3的封装格式,通过DTLS传输隧道,将RTP/RTCP overUDP协议数据包发送到对端。
实施例五:
如图7所示,为本发明实施例五提供的一种媒体传输设备的结构示意图,所述媒体传输设备包括:类型确定模块71、隧道建立模块72和数据包接收模块73,其中:
类型确定模块71,用于根据网络地址转换会话传输应用程序STUN的探测结果,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型,其中,所述隧道类型至少包含了传输层安全TLS隧道类型、数据报传输层安全DTLS隧道类型中的一种或者多种;
隧道建立模块72,用于根据确定的所述隧道类型,为所述隧道类型对应的传输隧道分配用户终端侧的第一端口号,并将所述隧道类型、所述第一端口号和隧道数据包的载荷格式信息发送给网络侧,使网络侧根据所述隧道类型为所述隧道类型对应的传输隧道分配网络侧的第二端口号,在所述第一端口号和所述第二端口号之间建立传输隧道;
数据包接收模块73,用于接收所述网络侧通过建立的所述传输隧道传输的、按照所述隧道数据包的载荷格式信息封装的媒体的数据包。
具体地,所述隧道建立模块72将所述隧道类型、所述第一端口号和隧道数据包的载荷格式信息发送给网络侧,具体用于:
将所述隧道类型、所述第一端口号和隧道数据包的载荷格式信息携带在会话描述协议SDP消息中发送给IP承载语音VoIP信令服务器,由VoIP信令服务器根据所述隧道类型为所述隧道类型对应的传输隧道分配网络侧的第二端口号,并将所述第二端口号发送给媒体网关和所述用户终端;
通过与所述媒体网关协商,在所述第一端口号和所述第二端口号之间建立传输隧道。
具体地,所述类型确定模块71根据STUN的探测结果,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型,具体用于:
向STUN服务器发送由用户数据报协议UDP承载的地址收集请求,其中,所述地址收集请求用于获取防火墙分别为用于传输实时传输协议RTP数据包的端口和用于传输实时传输控制协议RTCP数据包的端口分配的公用地址;
在无法接收到STUN服务器返回的由UDP承载的地址收集响应时,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型为TLS隧道类型。
具体地,所述隧道建立模块72在所述第一端口号和所述第二端口号之间建立传输隧道,具体用于:
若所述用户终端确定的隧道类型为TLS隧道类型,则所述用户终端在所述第一端口号和所述第二端口号之间建立TLS隧道。
具体地,所述类型确定模块71根据STUN的探测结果,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型,具体用于:
向STUN服务器发送由用户数据报协议UDP承载的地址收集请求,其中,所述地址收集请求用于获取防火墙分别为用于传输实时传输协议RTP数据包的端口和用于传输实时传输控制协议RTCP数据包的端口分配的公用地址;
在接收到STUN服务器返回的地址收集响应时,进一步通过所述用户终端的媒体端口向媒体网关对应的媒体端口发送媒体路径的STUN连通性检测请求,其中,所述STUN连通性检测请求用以确定用户终端发送的媒体的数据包是否可以直接到达所述媒体网关对应的媒体端口;
在尚未接收到所述媒体网关发送的STUN连通性检测响应时,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型为DTLS隧道类型。
具体地,所述隧道建立模块72建立包含了所述第一端口号和所述第二端口号的传输隧道,具体用于:
若所述用户终端确定的隧道类型为DTLS隧道类型,则所述用户终端在所述第一端口号和所述第二端口号之间建立DTLS隧道。
可选地,通过以下方式按照所述隧道数据包的载荷格式信息封装媒体的数据包:
若隧道类型为TLS隧道类型,则将媒体的数据包中包含的RTP协议数据包/RTCP协议数据包与UDP协议数据包报头作为所述隧道数据包的载荷格式信息封装在TLS隧道数据包中;或
若隧道类型为DTLS隧道类型,则将媒体的数据包中包含的RTP协议数据包/RTCP协议数据包与UDP协议数据包报头作为所述隧道数据包的载荷格式信息封装在DTLS隧道数据包中。
所述UDP协议数据包报头中包含的端口号分别为所述用户终端分配的媒体端口、所述媒体网关分配的媒体端口。
可选地,所述媒体传输设备还包括:解析模块74,其中:
所述解析模块74,用于对接收到的所述媒体数据包进行解封装,获取TLS隧道数据包/DTLS隧道数据包中的媒体的数据包;
根据所述TLS隧道数据包/DTLS隧道数据包中UDP协议数据包报头中包含的端口号,将所述媒体的数据包发送给媒体处理单元。
需要说明的是,本发明实施例五所述的媒体传输设备可以通过硬件方式实现,也可以通过软件方式实现,这里不做限定。
实施例六:
如图8所示,为本发明实施例六提供的一种媒体传输设备的结构示意图。所述媒体传输设备具备本发明实例一至本发明实施例四的功能,所述媒体传输设备可以采用通用计算机系统结构,计算机系统可具体是基于处理器的计算机。所述媒体传输设备实体包括至少一个处理器81,通信总线82,存储器83以及至少一个通信接口84。
处理器81可以是一个通用中央处理器(CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本发明方案程序执行的集成电路。
其中,所述通信总线82可包括一通路,在上述组件之间传送信息。所述通信接口84,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,无线接入网(RAN),无线局域网(Wireless Local Area Networks,WLAN)等。
存储器83,可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(ElectricallyErasable Programmable Read-Only Memory,EEPROM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。这些存储器通过总线与处理器相连接。
其中,所述存储器83用于存储执行本发明方案的应用程序代码,执行本发明方案的应用程序代码保存在存储器中,并由处理器81来控制执行。所述处理器81用于执行所述存储器83中存储的应用程序。
在一种可能的实施方式中,当上述应用程序被所述处理器81执行时,实现如下功能:
根据网络地址转换会话传输应用程序STUN的探测结果,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型,其中,所述隧道类型至少包含了传输层安全TLS隧道类型、数据报传输层安全DTLS隧道类型中的一种或者多种;
根据确定的所述隧道类型,为所述隧道类型对应的传输隧道分配用户终端侧的第一端口号,并将所述隧道类型、所述第一端口号和隧道数据包的载荷格式信息发送给网络侧,使网络侧根据所述隧道类型为所述隧道类型对应的传输隧道分配网络侧的第二端口号,在所述第一端口号和所述第二端口号之间建立传输隧道;
接收所述网络侧通过建立的所述传输隧道传输的、按照所述隧道数据包的载荷格式信息封装的媒体的数据包。
在一种可能的实施方式中,所述处理器81将所述隧道类型、所述第一端口号和隧道数据包的载荷格式信息发送给网络侧,具体用于执行:
所述用户终端将所述隧道类型、所述第一端口号和隧道数据包的载荷格式信息携带在会话描述协议SDP消息中发送给IP承载语音VoIP信令服务器,由VoIP信令服务器根据所述隧道类型为所述隧道类型对应的传输隧道分配网络侧的第二端口号,并将所述第二端口号发送给媒体网关和所述用户终端;
所述用户终端通过与所述媒体网关协商,在所述第一端口号和所述第二端口号之间建立传输隧道。
在一种可能的实施方式中,所述处理器81根据STUN的探测结果,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型,具体用于执行:
所述用户终端向STUN服务器发送由用户数据报协议UDP承载的地址收集请求,其中,所述地址收集请求用于获取防火墙分别为用于传输实时传输协议RTP数据包的端口和用于传输实时传输控制协议RTCP数据包的端口分配的公用地址;
所述用户终端在无法接收到STUN服务器返回的由UDP承载的地址收集响应时,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型为TLS隧道类型。
在一种可能的实施方式中,所述处理器81在所述第一端口号和所述第二端口号之间建立传输隧道,具体用于执行:
若所述用户终端确定的隧道类型为TLS隧道类型,则所述用户终端在所述第一端口号和所述第二端口号之间建立TLS隧道。
在一种可能的实施方式中,所述处理器81根据STUN的探测结果,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型,具体用于执行:
用户终端向STUN服务器发送由用户数据报协议UDP承载的地址收集请求,其中,所述地址收集请求用于获取防火墙分别为用于传输实时传输协议RTP数据包的端口和用于传输实时传输控制协议RTCP数据包的端口分配的公用地址;
所述用户终端在接收到STUN服务器返回的地址收集响应时,进一步通过所述用户终端的媒体端口向媒体网关对应的媒体端口发送媒体路径的STUN连通性检测请求,其中,所述STUN连通性检测请求用以确定用户终端发送的媒体的数据包是否可以直接到达所述媒体网关对应的媒体端口;
所述用户终端在尚未接收到所述媒体网关发送的STUN连通性检测响应时,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型为DTLS隧道类型。
在一种可能的实施方式中,所述处理器81建立包含了所述第一端口号和所述第二端口号的传输隧道,具体用于执行:
若所述用户终端确定的隧道类型为DTLS隧道类型,则所述用户终端在所述第一端口号和所述第二端口号之间建立DTLS隧道。
具体地,通过以下方式按照所述隧道数据包的载荷格式信息封装媒体的数据包:
若隧道类型为TLS隧道类型,则将媒体的数据包中包含的RTP协议数据包/RTCP协议数据包与UDP协议数据包报头作为所述隧道数据包的载荷格式信息封装在TLS隧道数据包中;或
若隧道类型为DTLS隧道类型,则将媒体的数据包中包含的RTP协议数据包/RTCP协议数据包与UDP协议数据包报头作为所述隧道数据包的载荷格式信息封装在DTLS隧道数据包中。
具体地,所述UDP协议数据包报头中包含的端口号分别为所述用户终端分配的媒体端口、所述媒体网关分配的媒体端口。
在一种可能的实施方式中,所述处理器81,还用于对接收到的所述媒体数据包进行解封装,获取TLS隧道数据包/DTLS隧道数据包中的媒体的数据包;
根据所述TLS隧道数据包/DTLS隧道数据包中UDP协议数据包报头中包含的端口号,将所述媒体的数据包发送给媒体处理单元。
本实施例中,应用程序被处理器执行时,媒体传输设备的处理,以及与其他网元之间的交互方法可以参考上述方法实施例。这里不再详细描述。
本领域的技术人员应明白,本发明的实施例可提供为方法、装置(设备)、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (14)
1.一种媒体传输方法,其特征在于,包括:
用户终端根据网络地址转换会话传输应用程序STUN的探测结果,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型,其中,所述隧道类型至少包含了传输层安全TLS隧道类型、数据报传输层安全DTLS隧道类型中的一种或者多种;
所述用户终端根据确定的所述隧道类型,为所述隧道类型对应的传输隧道分配用户终端侧的第一端口号,并将所述隧道类型、所述第一端口号和隧道数据包的载荷格式信息发送给网络侧,使网络侧根据所述隧道类型为所述隧道类型对应的传输隧道分配网络侧的第二端口号,在所述第一端口号和所述第二端口号之间建立传输隧道;
所述用户终端接收所述网络侧通过建立的所述传输隧道传输的、按照所述隧道数据包的载荷格式信息封装的媒体的数据包;
其中,所述用户终端根据STUN的探测结果,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型,包括:
所述用户终端向STUN服务器发送由用户数据报协议UDP承载的地址收集请求,其中,所述地址收集请求用于获取防火墙分别为用于传输实时传输协议RTP数据包的端口和用于传输实时传输控制协议RTCP数据包的端口分配的公用地址;
所述用户终端在无法接收到STUN服务器返回的由UDP承载的地址收集响应时,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型为TLS隧道类型;
所述用户终端在接收到STUN服务器返回的地址收集响应时,进一步通过所述用户终端的媒体端口向媒体网关对应的媒体端口发送媒体路径的STUN连通性检测请求,其中,所述STUN连通性检测请求用以确定用户终端发送的媒体的数据包是否可以直接到达所述媒体网关对应的媒体端口;所述用户终端在尚未接收到所述媒体网关发送的STUN连通性检测响应时,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型为DTLS隧道类型。
2.如权利要求1所述的媒体传输方法,其特征在于,所述用户终端将所述隧道类型、所述第一端口号和隧道数据包的载荷格式信息发送给网络侧,包括:
所述用户终端将所述隧道类型、所述第一端口号和隧道数据包的载荷格式信息携带在会话描述协议SDP消息中发送给IP承载语音VoIP信令服务器,由VoIP信令服务器根据所述隧道类型为所述隧道类型对应的传输隧道分配网络侧的第二端口号,并将所述第二端口号发送给媒体网关和所述用户终端;
所述用户终端通过与所述媒体网关协商,在所述第一端口号和所述第二端口号之间建立传输隧道。
3.如权利要求1或2所述的媒体传输方法,其特征在于,所述用户终端在所述第一端口号和所述第二端口号之间建立传输隧道,具体包括:
若所述用户终端确定的隧道类型为TLS隧道类型,则所述用户终端在所述第一端口号和所述第二端口号之间建立TLS隧道。
4.如权利要求1或2所述的媒体传输方法,其特征在于,所述用户终端建立包含了所述第一端口号和所述第二端口号的传输隧道,具体包括:
若所述用户终端确定的隧道类型为DTLS隧道类型,则所述用户终端在所述第一端口号和所述第二端口号之间建立DTLS隧道。
5.如权利要求1或2所述的媒体传输方法,其特征在于,通过以下方式按照所述隧道数据包的载荷格式信息封装媒体的数据包:
若隧道类型为TLS隧道类型,则将媒体的数据包中包含的RTP协议数据包/RTCP协议数据包与UDP协议数据包报头作为所述隧道数据包的载荷格式信息封装在TLS隧道数据包中;或
若隧道类型为DTLS隧道类型,则将媒体的数据包中包含的RTP协议数据包/RTCP协议数据包与UDP协议数据包报头作为所述隧道数据包的载荷格式信息封装在DTLS隧道数据包中。
6.如权利要求5所述的媒体传输方法,其特征在于,所述UDP协议数据包报头中包含的端口号分别为所述用户终端分配的媒体端口、所述媒体网关分配的媒体端口。
7.如权利要求5所述的媒体传输方法,其特征在于,所述媒体传输方法还包括:
所述用户终端对接收到的所述媒体数据包进行解封装,获取TLS隧道数据包/DTLS隧道数据包中的媒体的数据包;
根据所述TLS隧道数据包/DTLS隧道数据包中UDP协议数据包报头中包含的端口号,将所述媒体的数据包发送给媒体处理单元。
8.一种媒体传输设备,其特征在于,包括:
类型确定模块,用于根据网络地址转换会话传输应用程序STUN的探测结果,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型,其中,所述隧道类型至少包含了传输层安全TLS隧道类型、数据报传输层安全DTLS隧道类型中的一种或者多种;
隧道建立模块,用于根据确定的所述隧道类型,为所述隧道类型对应的传输隧道分配用户终端侧的第一端口号,并将所述隧道类型、所述第一端口号和隧道数据包的载荷格式信息发送给网络侧,使网络侧根据所述隧道类型为所述隧道类型对应的传输隧道分配网络侧的第二端口号,在所述第一端口号和所述第二端口号之间建立传输隧道;
数据包接收模块,用于接收所述网络侧通过建立的所述传输隧道传输的、按照所述隧道数据包的载荷格式信息封装的媒体的数据包;
其中,所述类型确定模块根据STUN的探测结果,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型,具体用于:
向STUN服务器发送由用户数据报协议UDP承载的地址收集请求,其中,所述地址收集请求用于获取防火墙分别为用于传输实时传输协议RTP数据包的端口和用于传输实时传输控制协议RTCP数据包的端口分配的公用地址;
在无法接收到STUN服务器返回的由UDP承载的地址收集响应时,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型为TLS隧道类型;
在接收到STUN服务器返回的地址收集响应时,进一步通过所述用户终端的媒体端口向媒体网关对应的媒体端口发送媒体路径的STUN连通性检测请求,其中,所述STUN连通性检测请求用以确定用户终端发送的媒体的数据包是否可以直接到达所述媒体网关对应的媒体端口;在尚未接收到所述媒体网关发送的STUN连通性检测响应时,确定为待传输的媒体建立用于穿越防火墙的传输隧道的隧道类型为DTLS隧道类型。
9.如权利要求8所述的媒体传输设备,其特征在于,所述隧道建立模块将所述隧道类型、所述第一端口号和隧道数据包的载荷格式信息发送给网络侧,具体用于:
将所述隧道类型、所述第一端口号和隧道数据包的载荷格式信息携带在会话描述协议SDP消息中发送给IP承载语音VoIP信令服务器,由VoIP信令服务器根据所述隧道类型为所述隧道类型对应的传输隧道分配网络侧的第二端口号,并将所述第二端口号发送给媒体网关和所述用户终端;
通过与所述媒体网关协商,在所述第一端口号和所述第二端口号之间建立传输隧道。
10.如权利要求8或9所述的媒体传输设备,其特征在于,所述隧道建立模块在所述第一端口号和所述第二端口号之间建立传输隧道,具体用于:
若所述用户终端确定的隧道类型为TLS隧道类型,则所述用户终端在所述第一端口号和所述第二端口号之间建立TLS隧道。
11.如权利要求8或9所述的媒体传输设备,其特征在于,所述隧道建立模块建立包含了所述第一端口号和所述第二端口号的传输隧道,具体用于:
若所述用户终端确定的隧道类型为DTLS隧道类型,则所述用户终端在所述第一端口号和所述第二端口号之间建立DTLS隧道。
12.如权利要求8或9所述的媒体传输设备,其特征在于,通过以下方式按照所述隧道数据包的载荷格式信息封装媒体的数据包:
若隧道类型为TLS隧道类型,则将媒体的数据包中包含的RTP协议数据包/RTCP协议数据包与UDP协议数据包报头作为所述隧道数据包的载荷格式信息封装在TLS隧道数据包中;或
若隧道类型为DTLS隧道类型,则将媒体的数据包中包含的RTP协议数据包/RTCP协议数据包与UDP协议数据包报头作为所述隧道数据包的载荷格式信息封装在DTLS隧道数据包中。
13.如权利要求12所述的媒体传输设备,其特征在于,所述UDP协议数据包报头中包含的端口号分别为所述用户终端分配的媒体端口、所述媒体网关分配的媒体端口。
14.如权利要求12所述的媒体传输设备,其特征在于,所述媒体传输设备还包括:解析模块,其中:
所述解析模块,用于对接收到的所述媒体数据包进行解封装,获取TLS隧道数据包/DTLS隧道数据包中的媒体的数据包;
根据所述TLS隧道数据包/DTLS隧道数据包中UDP协议数据包报头中包含的端口号,将所述媒体的数据包发送给媒体处理单元。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410623767.XA CN105635076B (zh) | 2014-10-31 | 2014-11-07 | 一种媒体传输方法和设备 |
PCT/CN2015/092103 WO2016066027A1 (zh) | 2014-10-31 | 2015-10-16 | 一种媒体传输方法和设备 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410616529 | 2014-10-31 | ||
CN2014106165296 | 2014-10-31 | ||
CN201410623767.XA CN105635076B (zh) | 2014-10-31 | 2014-11-07 | 一种媒体传输方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105635076A CN105635076A (zh) | 2016-06-01 |
CN105635076B true CN105635076B (zh) | 2019-08-20 |
Family
ID=55856585
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410623767.XA Active CN105635076B (zh) | 2014-10-31 | 2014-11-07 | 一种媒体传输方法和设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105635076B (zh) |
WO (1) | WO2016066027A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9998299B2 (en) * | 2016-07-20 | 2018-06-12 | Oracle International Corporation | Efficient transport of encapsulated media traffic over restrictive networks |
US10015097B2 (en) * | 2016-08-19 | 2018-07-03 | Oracle International Corporation | Fast access telecommunication tunnel cloning |
CN110266902B (zh) * | 2019-05-27 | 2021-04-02 | 国家计算机网络与信息安全管理中心 | VoIP信令与媒体数据关联系统、方法 |
CN114338153B (zh) * | 2021-12-28 | 2023-07-25 | 杭州迪普科技股份有限公司 | 一种IPSec的协商方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1819134A1 (en) * | 2006-02-13 | 2007-08-15 | Samsung Electronics Co.,Ltd. | Symmetric network adress translation system using STUN technique and method for implementing the same |
CN101883056A (zh) * | 2010-07-23 | 2010-11-10 | 华南理工大学 | 基于udt和tcp中转实现nat穿越的系统和方法 |
CN102685141A (zh) * | 2012-05-22 | 2012-09-19 | 北京邮电大学 | 一种VoIP中基于语音可达性的融合穿越方法 |
CN103392316A (zh) * | 2013-01-11 | 2013-11-13 | 华为技术有限公司 | 穿越防火墙的方法、客户端和媒体穿越服务器 |
-
2014
- 2014-11-07 CN CN201410623767.XA patent/CN105635076B/zh active Active
-
2015
- 2015-10-16 WO PCT/CN2015/092103 patent/WO2016066027A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1819134A1 (en) * | 2006-02-13 | 2007-08-15 | Samsung Electronics Co.,Ltd. | Symmetric network adress translation system using STUN technique and method for implementing the same |
CN101883056A (zh) * | 2010-07-23 | 2010-11-10 | 华南理工大学 | 基于udt和tcp中转实现nat穿越的系统和方法 |
CN102685141A (zh) * | 2012-05-22 | 2012-09-19 | 北京邮电大学 | 一种VoIP中基于语音可达性的融合穿越方法 |
CN103392316A (zh) * | 2013-01-11 | 2013-11-13 | 华为技术有限公司 | 穿越防火墙的方法、客户端和媒体穿越服务器 |
Also Published As
Publication number | Publication date |
---|---|
CN105635076A (zh) | 2016-06-01 |
WO2016066027A1 (zh) | 2016-05-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101680955B1 (ko) | 다중 터널 가상 사설 네트워크 | |
CN102377629B (zh) | 终端穿越私网与ims核心网中服务器通信的方法、装置及网络系统 | |
US9350711B2 (en) | Data transmission method, system, and apparatus | |
CN104168173B (zh) | 终端穿越私网与ims核心网中服务器通信的方法、装置及网络系统 | |
CN109450852A (zh) | 网络通信加密解密方法及电子设备 | |
CN104993993B (zh) | 一种报文处理方法、设备和系统 | |
WO2015131609A1 (zh) | 一种实现L2TP over IPsec接入的方法 | |
CN105635076B (zh) | 一种媒体传输方法和设备 | |
CN107040446B (zh) | 一种vpn隧道协议实现方法 | |
CN108769292A (zh) | 报文数据处理方法及装置 | |
CN103051636B (zh) | 一种数据报文的传输方法和设备 | |
CN108924157B (zh) | 一种基于IPSec VPN的报文转发方法及装置 | |
CN103888334A (zh) | IP分组网中VoIP多层加密方法及系统 | |
Diab et al. | VPN analysis and new perspective for securing voice over VPN networks | |
CN114553567B (zh) | 多方安全计算中的网络传输方法、系统、存储介质及计算设备 | |
JP5151197B2 (ja) | 通信システム、パケット転送処理装置及びそれらに用いる通信セッション制御方法 | |
CN111866865B (zh) | 一种数据传输方法、5g专网建立方法及系统 | |
JP2008199497A (ja) | ゲートウェイ装置および認証処理方法 | |
CN110351308B (zh) | 一种虚拟专用网络通信方法和虚拟专用网络设备 | |
JP2011077887A (ja) | パケット転送システム、パケット転送方法、通信装置及びパケット転送プログラム | |
KR20040028329A (ko) | 차별화 서비스를 제공하는 가상 사설망 서비스 처리 방법 | |
CN112751816B (zh) | 一种隧道建立方法、装置、设备及计算机可读存储介质 | |
Nguyen et al. | Towards Secure Communications in Heterogeneous Internet of Things | |
WO2024075092A1 (en) | User interaction data transportation using real-time transport protocol header extension | |
CN116405264A (zh) | 一种单包授权的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |