您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页基于移动互联网多媒体实时传输技术研究与应用

基于移动互联网多媒体实时传输技术研究与应用

来源:意榕旅游网
基于移动互联网多媒体实时传输技术研究与应用

陈小平

【摘 要】移动互联网行业在近几年取得了蓬勃发展,同时随着智能设备的普及,使得以文字、图形、图像、声音、视频等多媒体实时交互方式成为可能,人与人之间的沟通更为多元化。而互动多媒体则在此基础上更进一步,具有更强的实时互动性,是集成“视频、语音、文字、数据、流媒体”的互动通讯。然而与国外相比,中国的移动互联网存在网络差异化和设备异构化问题,严重制约着视频通话产品的发展。如何通过技术手段来解决网络异构化和设备差异化,是新一代通讯产品面临的问题。本文通过针对移动互联网特性,提出了基于P2P的UDP穿透技术与UDP+CDN转发技术相结合的传输方案,能够有效解决多媒体传输的实时性和稳定性,为基于多媒体实时交互产品提供良好的用户体验。 【期刊名称】《数字技术与应用》 【年(卷),期】2014(000)006 【总页数】4页(P25-28)

【关键词】移动互联网;多媒体交互;P2P传输;UDP穿透;CDN技术 【作 者】陈小平

【作者单位】深圳深讯和科技有限公司 广东深圳 518000 【正文语种】中 文 【中图分类】TP393.03

随着现代经济的发展,移动通讯和互联网日益成为当今世界发展最快、市场潜力最大、前景最诱人的两大业务。国际电信联盟(ITU)统计信息显示:2013年全球移动用户数已达到68.35亿,互联网用户也达到27.49亿,中国移动通讯用户总数超过11亿,移动互联网用户数超过4.6亿。越来越多的人希望在移动的过程中高速地接入互联网,获取急需的信息,完成想做的事情,移动与互联网相结合的趋势成为必然。目前,移动互联网正逐渐渗透到人们生活、工作的各个领域,短信、铃图下载、移动音乐、手机游戏、视频应用、手机支付、位置服务等丰富多彩的移动互联网应用迅猛发展,正在深刻改变信息时代的社会生活,移动互联网经过几年的曲折前行,终于迎来了新的发展高潮。

随着移动互联网行业的蓬勃发展,传统的通讯业务受到挑战,以往的只见文字和声音的通讯模式正悄然发生变化,取而代之的是整合了文字、图形、图像、声音等多种内容的交互方式,人使得人与人之间的沟通更为多元化。而互动多媒体则在此基础上更进一步,具有更强的实时互动性,是集成“视频、语音、文字、数据、流媒体”的互动通讯。以facetime为代表的集声音视频为一体的新一代视频聊天技术正悄然崛起。

然而与国外相比,中国的移动互联网存在网络差异化和设备异构化问题,严重制约着视频通话产品的发展。如何通过技术手段来解决网络异构化和设备差异化,是新一代通讯产品面临的问题。

图1展示了多媒体交互系统架构的基本模块,其主要包含两个重要组成部分:音视频处理模块和网络传输处理模块。 2.1 音视频处理模块

音视频处理模块主要负责音视频的采集、编码、显示,以及媒体数据后处理等。 2.2 网络传输处理模块

网络传输处理模块主要负责终端与服务器以及用户之间信令传输、P2P穿透、P2P

直连传输以及服务器中转:(1)消息信令传输模块。完成用户信息注册、登录、P2P穿透信令以及网络状态反馈等协议传输。(2)P2P网络下UDP穿透模块。对于绝大多数移动终端来说,其网络连接时都处于某个NAT局域网内,其IP和端口是局域网私有而不是全球唯一的。所以,两个处于局域网内的终端是不能直接连接的,而必须通过NAT穿透技术获取双方在公网上的IP和端口映射,才能够直连并传输媒体数据。(3)音视频媒体数据P2P直连传输模块。如果NAT穿透成功,则终端直接可以直接传输音视频媒体数据。这不仅能够大大减轻服务器中转负担,更能够提高媒体数据传输的实时性,获得更好的用户体验。(4)音视频媒体数据服务器中转模块。在某些NAT穿透失败的情况下,我们必须保证用户能够正常连接(可能损失一些实时性),此时必须借助中转服务器,分发双方媒体数据。

由图1可以看出,网络传输模块在系统中占用重要地位。网络传输模块的稳定性、实时性,直接影响着用户体验。因此,网络模块的设计与实现,尤其是在移动互联网环境下的稳定性和实时性,是每个互联网络应用需要重点关注并解决的问题。 由上述系统分析可知,网络模块主要包含两部分:(1)信令传输模块。信令传输模块完成用户注册、登录、邀请、P2P穿透信息的传输。这些协议与相应的业务流程有着密切关系,因此要求传输可靠性,但实时性可以适当放宽。因而这一模块采用TCP协议完成。(2)媒体数据传输模块。媒体数据传输模块完成双方音视频数据交互。用户建立通讯连接后,对媒体数据的实时性就有很高的期望,而稳定性可以适当降低(即容忍一定丢包率)。而由于TCP协议本身特性限制并不能满足实时性的要求,因此UDP传输则成为媒体数据的首先传输协议。

而两个客户端在通讯前一般处于各自的内网环境(NAT),通讯时需要经过各自的路由器到达外网,然后传送到目的地。如果两端的路由器通过某种方式可以直接连接并通讯,即为穿透。穿透的主要工作是客户端在两端的路由之间建立彼此的映射,传输时直接通过路由发往至另一端的路由。

3.1 NAT[1]简介

随着互联网络及各种联网终端的迅速发展,绝大多数家庭及企事业单位的用户都有上网需求,导致IP地址及路由急剧膨胀。但是,现行的IPV4协议使用公有的32bit的IP地址空间(虽然IPV6标准早已提出,但总体推进进度却依然缓慢),使得公有IP地址远远不能满足快速发展的网络需求。NAT技术的合理使用能够在在IPV4协议的基础上,很好的解决这个问题。

NAT的最初设计目的是用来增加似有组织可用地址控件和解决将现有的私有网络(通俗的讲就是大家熟知的局域网、内网)连接到互联网上的问题。互联网拨号机构(IANA)将地址划分为公有IP地址和私有IP地址,公有IP地址是指在因特网上全球唯一的IP地址,而私有IP地址是指只能作为内部网络拨号使用,不能在互联网络上直接使用,因此可以不必向ISP或注册中心申请。RFC1918为私有网络预留除了三个IP地址段,如下[2]:

A类:10.0.0.0~10.255.255.255;B类:172.16.0.0~172.31.255.255;C类:192.168.0.0~192.168.255.255 3.1.1 NAT原理

简单的说,NAT(Network Address Translation,网络地址转换)是将IP数据包头中的IP地址转换为另一个IP地址的过程,它可以在路由器、防火墙或者单独的NAT设备等多种网络设备上进行配置,能够有效解决IP地址不足的问题。 如图2.1所示,NAT的工作流程简单大致有四个步骤[3]:

第1步:网络终端设备的网关设定为NAT主机,当其需要连上Internet的时候,网络终端设备上的协议包就会被发送到NA主机,这个时候的协议包头的源IP地址信息为10.0.0.172:80;第2步:透过NAT主机,将网络终端设备的对外协议包的IP地址信息(10.0.0.172:80)修改成NAT设备所具有的公共IP地址信息,因为是公共IP,所以这个封包就可以连上Internet了,同NAT主机并且会记忆这个协议包

是由哪一个(10.0.0.172:80)终端设备传送来的;第3步:由Internet传送回来的协议包,由NAT主机接收到了,这个时候,NAT主机会去查询原本记录的IP地址信息,并将目标IP信息由公共IP改回原来的10.0.0.172:80;第4步:最后则由NAT主机将协议包传送给原先发送封包的网络终端。 3.1.2 NAT的分类

根据NAT对内转发数据限制程度来看,可将NAT分为以下几种类型:(1)完全锥形(Full Cone):在一个完全锥形NAT中,所有从同一个内部IP地址和端口过来的请求都被映射到同一个外部IP和端口,此外,任务外部主机可以通过映射在NAT上的外部地址发包给内部主机。(2)受限锥形(Restricted Cone):在一个受限锥形NAT,同样所有从同一个内部IP和端口发出的请求都会被映射到同一个外部IP和端口,但有完全锥形NAT不同,只有内部主机向其发送过包的外部主机才可以对这个内部主机发包。(3)端口受限锥形(Port Restricted Cone):与受限锥形NAT类似,但是增加了对端口的限制,如内部主机向一个IP为X和端口为P的外部主机发送过包,那么只有从这个主机的IP为X端口为P发出的包才能被发送到内部主机上去。(4)对称(Symmetric):在一个对称NAT上,从同一个内部主机的IP和端口发送到某个目标IP和端口的所有请求会被映射到同一个外部IP和端口上,如果同一个内部主机从同一个源IP和端口发送到不同的目标主机时,会被映射到不同的外部端口上去。另外,只有收到过包的外部主机才能发送包给内部主机。 3.2 基于UDP的P2P传输限制

由3.1节分析可知,处于不同内网间的用户之前需要通讯,其地址必须通过各自NAT设备转换成公有IP。然而,如图2.2,NAT设备之间也并不知道目标设备的内网IP地址对应的公有IP地址信息,因此还是无法直接将发给对方,因此,通常的设计还会有一个具有公有IP的中转服务器,双方的数据有NAT发送给中转服务器,由中转服务器分发给双方。

因此,由NAT的分类介绍及图2.2分析可知,限制基于UDP的P2P传输的原因无外乎两个:(1)终端设备A和终端设备B之间在连接建立之前,并不知道对方的公有IP信息(NAT转后的公有IP信息)。(2) NAT设备对内转发数据限制。 3.3 UDP穿透方案实现

要实现处于两个不同内网之间用户之间的UDP直连,就必须突破3.2节中所提到的限制:获取公有IP信息及规避NAT对内转发数据限制,这一过程通常被称作UDP穿透或者UDP打洞技术,其系统流程如图2.3。

流程说明:(1)NAT端口映射:在NAT A,NAT B路由上建立客户端音视频的端口,以此端口进行P2P传输,共包括音频和视频两组数据。(2)附带的NAT映射信息包括:客户端IP地址及音视频端口。客户端NAT的IP地址及在NAT上映射的音视频端口。(3)连接测试:客户端向对方发送测试信息,对方收到后立即返回给发送方。如果在一定时间内收到自己的测试信息并且收到对方的测试信息,测试通过,否则失败。 3.3.1 UPnP及STUN

UPnP是即插即用技术在网络环境中的扩展,他通过用户控制点向NAT设备发送控制信息添加端口映射的方式实现NAT穿透。UPnP不需要对现有设备进行改造,但要求集成NAT功能的网关或路由器支持UPnP功能。目前大多数网关都支持UPnP,因而我们可以首先尝试UPnP方式进行穿透,但也不排除部分网络环境下不支持UPnP,所以还需结合其他穿透技术才能达成目标[4]。

miniupnpc[5]是基于UPnP开发的开源项目,其实现了搜索局域网中所有的UPNP设备、根据指定设备和外网端口获得内网信息、根据指定设备获得外网IP地址、根据指定设备,获取连接类型等功能,非常方便基于UPnP穿透应用。

STUN(Simple Traversal of UDP over NATs)采用另外一种死了实现NAT穿透:内网中的主机通过位于外网具有公有IP信息的穿透服务器预先获取自己出口NAT上对应的外网IP信息,然后在与其他节点通讯时直接使用该外网IP信息自己的通讯

地址[6]。RFC 3489详细介绍了STUN协议及处理流程,当然,人们也可以根据STUN思想自行实现穿透流程。 3.3.2 UDP穿透测试

由NAT分类可知,外部网络终端需要访问处于NAT内的网终端,必须满足一定的条件。因此,当内网终端获取到NAT出口公有IP信息后,必须相互发起UDP穿透测试,以满足NAT向内转发数据的要求。

NAT分类中的完全锥形、受限锥形和端口受限锥形都属于静态端口分配类型,即所有同一个内网IP和端口的请求都会被映射到同一个外部IP和端口,不同的只是NAT在向内转发数据时是否需要由内网终端首先主动发起连接。而对称型NAT则是动态端口分配类型,即同一个内网IP和端口发往不同的IP和端口时,会被映射到不同的外网IP和端口。 UDP穿透测试流程如图2.4。 3.3.3 UDP穿透实现

由于目前大部分NAT设备已经支持UPnP,因此我们采取UPnP及STUN双重方案,以提高UDP穿透成功率,具体实现流程如图2.5。

(1)UPnP检测接口。1)首先调用upnpDiscover启动搜索局域网中所有的UPNP设备;2)然后调用UPNP_GetValidIGD()在UPNP列表中查看有效IGD设备,其返回值含义为:=0没有IGD设备;=1有一个连接;=2有设备但没有连接;=3有UPNP但不是ICG设备;3)如果返回1,则调用UPNP_AddPortMapping将内外IP,port在路由器上做一个映射;4)映射成功后,则UPnP检测流程结束。

(2)UDP穿透实现流程。1)用户登录控制服务器并向控制服务器发送UDP心跳包,服务器收到后将映射信息通过TCP转发给对方; 2)在收到对方映射信息前,必须保持向控制服务器发送UDP包,以维持映射信息;3)收到对方映射信息后,开始向对方Port及Port+1端口发送UDP测试数据,并通知控制服务器已经开始UDP测试,控

制服务器将该信令转发给对方;4)当对方也启动UDP测试后,启动超时定时器;5)在超时时间内,是否收到对方UDP响应,如收到,则测试成功,否则测试失败;6)UDP穿透测试过程中,一般需要双方同时向对方发送UDP测试包,为避免因映射信令通过TCP传输而造成的启动UDP测试不同步,我们在收到双方的启动测试通知后,才启动超时定时器,以避免一方已经测试超时,而另一方则还没有开始测试的问题。具体流程图如图2.6。

虽然UDP穿透技术能够解决大部分NAT直连障碍,但是依然存在穿透失败的可能,尤其对于这三种情况不能直接用P2P穿透,它们分别是通信两端都是对称路由,通信一方是对称路由另一方是端口限制路由,或者通信两端在同一个路由下,而路由不支持回环。因此,在UDP穿透失败情况下需要服务器转发。

在中转模式下,大部分延时时间发生在终端与服务器之间,尤其是在移动互联网环境中,由于跨IDC运营商等问题,可能为中转模式带来更大的传输延时。因此,从客户端到中转服务器之间,我们仍然使用UDP传输协议。而在跨IDC之间,则使用TCP转发模式。

跨IDC间的TCP转发,理论上可以在每个运营商机房建立一个中转服务器,但是这样所带来的资源消耗非常巨大,因此我们目前较为成熟的CDN(Content Delivery Network,即内容分发网络)技术,以解决不同地区、不同IDC之间传输不稳定的问题。

CDN是一种新型网络内容服务体系,其基于IP网络而构建,基于内容访问与应用的效率要求、质量要求和内容秩序而提供内容的分发和服务。而从广义的角度,CDN代表了一种基于网络而构建的高质量、高效率、具有鲜明网络秩序的网络应用服务模式。CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决Internet网络拥挤的状况,提高用户访问网

站的响应速度。

UDP+CDN中转模式如图3。

通过UDP穿透及UDP+CDN转发模式,系统较好的解决了基于移动互联网的多媒体交互实时性和稳定性的矛盾。当然,由于系统中使用UDP传输协议以最大程度的到达实时性要求,而UDP协议本身是不可靠传输协议,存在一定丢包概率。在实际测试过程中,同一个内网之间基本不会出现丢包现象,而同一个运营商之间丢包率在3%以内,不同运营商之间丢包率在5-7%之间,但这并不会影响用户体验。

【相关文献】

[1]RFC 1632.

[2](美)J.D.Wegner,(美)Robert Rockell等著,赵英等译. IP地址管理与子网划分.机械工业出版社,2001.

[3]韩毅刚,李亚娜,王欢编著.计算机网络技术实践教程.机械工业出版社,2012.04.

[4]任浩,王劲林,鲁逸峰.UPnP和STUN相结合的NAT穿越技术研究.计算机工程与应用,2009,45(2). [5]http://miniupnp.free.fr/,MiniUPnP Project HomePage. [6]RFC 3489.

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- yrrf.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务