美章网 资料文库 移动互联网多媒体传输技术研究范文

移动互联网多媒体传输技术研究范文

本站小编为你精心准备了移动互联网多媒体传输技术研究参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。

移动互联网多媒体传输技术研究

《数字技术与应用杂志》2014年第六期

1基于P2P网络的UDP穿透

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

1.1NAT[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

1.1.1NAT原理简单的说,NAT(NetworkAddressTranslation,网络地址转换)是将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主机将协议包传送给原先发送封包的网络终端。

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

1.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设备对内转发数据限制。

1.3UDP穿透方案实现要实现处于两个不同内网之间用户之间的UDP直连,就必须突破3.2节中所提到的限制:获取公有IP信息及规避NAT对内转发数据限制,这一过程通常被称作UDP穿透或者UDP打洞技术,其系统流程如图2.3。流程说明:(1)NAT端口映射:在NATA,NATB路由上建立客户端音视频的端口,以此端口进行P2P传输,共包括音频和视频两组数据。(2)附带的NAT映射信息包括:客户端IP地址及音视频端口。客户端NAT的IP地址及在NAT上映射的音视频端口。(3)连接测试:客户端向对方发送测试信息,对方收到后立即返回给发送方。如果在一定时间内收到自己的测试信息并且收到对方的测试信息,测试通过,否则失败。

1.3.1UPnP及STUNUPnP是即插即用技术在网络环境中的扩展,他通过用户控制点向NAT设备发送控制信息添加端口映射的方式实现NAT穿透。UPnP不需要对现有设备进行改造,但要求集成NAT功能的网关或路由器支持UPnP功能。目前大多数网关都支持UPnP,因而我们可以首先尝试UPnP方式进行穿透,但也不排除部分网络环境下不支持UPnP,所以还需结合其他穿透技术才能达成目标[4]。miniupnpc[5]是基于UPnP开发的开源项目,其实现了搜索局域网中所有的UPNP设备、根据指定设备和外网端口获得内网信息、根据指定设备获得外网IP地址、根据指定设备,获取连接类型等功能,非常方便基于UPnP穿透应用。STUN(SimpleTraversalofUDPoverNATs)采用另外一种死了实现NAT穿透:内网中的主机通过位于外网具有公有IP信息的穿透服务器预先获取自己出口NAT上对应的外网IP信息,然后在与其他节点通讯时直接使用该外网IP信息自己的通讯地址[6]。RFC3489详细介绍了STUN协议及处理流程,当然,人们也可以根据STUN思想自行实现穿透流程。

1.3.2UDP穿透测试由NAT分类可知,外部网络终端需要访问处于NAT内的网终端,必须满足一定的条件。因此,当内网终端获取到NAT出口公有IP信息后,必须相互发起UDP穿透测试,以满足NAT向内转发数据的要求。NAT分类中的完全锥形、受限锥形和端口受限锥形都属于静态端口分配类型,即所有同一个内网IP和端口的请求都会被映射到同一个外部IP和端口,不同的只是NAT在向内转发数据时是否需要由内网终端首先主动发起连接。而对称型NAT则是动态端口分配类型,即同一个内网IP和端口发往不同的IP和端口时,会被映射到不同的外网IP和端口。UDP穿透测试流程如图2.4。

1.3.3UDP穿透实现由于目前大部分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。

2UDP+CDN中转

虽然UDP穿透技术能够解决大部分NAT直连障碍,但是依然存在穿透失败的可能,尤其对于这三种情况不能直接用P2P穿透,它们分别是通信两端都是对称路由,通信一方是对称路由另一方是端口限制路由,或者通信两端在同一个路由下,而路由不支持回环。因此,在UDP穿透失败情况下需要服务器转发。在中转模式下,大部分延时时间发生在终端与服务器之间,尤其是在移动互联网环境中,由于跨IDC运营商等问题,可能为中转模式带来更大的传输延时。因此,从客户端到中转服务器之间,我们仍然使用UDP传输协议。而在跨IDC之间,则使用TCP转发模式。跨IDC间的TCP转发,理论上可以在每个运营商机房建立一个中转服务器,但是这样所带来的资源消耗非常巨大,因此我们目前较为成熟的CDN(ContentDeliveryNetwork,即内容分发网络)技术,以解决不同地区、不同IDC之间传输不稳定的问题。CDN是一种新型网络内容服务体系,其基于IP网络而构建,基于内容访问与应用的效率要求、质量要求和内容秩序而提供内容的分发和服务。而从广义的角度,CDN代表了一种基于网络而构建的高质量、高效率、具有鲜明网络秩序的网络应用服务模式。CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决Internet网络拥挤的状况,提高用户访问网站的响应速度。UDP+CDN中转模式如图3。

3结语

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

作者:陈小平单位:深圳深讯和科技有限公司