摘 要: 针对近年来互联网上迅速兴起的多媒体通信应用,分析和指出了当前互联网网络层路由不适于传输多媒体数据的内在缺陷,为改善多媒体通信质量,设计并实现了一个名为CORS的覆盖层路由系统,通过构建和使用多条覆盖层路径来突破网络层单路径路由的局限性,并提供应用感知的传输层服务。利用在全球网络实验平台——PlanetLab上的真实实验验证了CORS的有效性。
关键词: 覆盖层路由;多媒体通信;端到端性能
随着互联网的日益普及和网络带宽的迅速提高,当今的互联网已经不再局限于支持FTP、Web浏览和P2P文件共享等传统的数据传输应用,各种基于音频和视频的多媒体应用也正在迅速兴起。
交互多媒体通信是通信双方利用语音和视频等多媒体手段远程地进行实时互动的通信形式,包括VoIP、视频会议和远程教学等具体应用。这类应用在近年来发展迅速,已被公认为下一代互联网的核心业务之一。与传统的数据传输应用一般只关注带宽不同,交互多媒体通信的质量(用户感受)对端到端延时、丢包和延时抖动等其他端到端性能指标也都非常敏感,并具有严格的要求。
然而,当前的互联网却仍然保留了它最初为传统的数据传输应用而设计和优化的体系结构。过去二十多年的实践证明,试图在网络层实现服务质量(QoS)保证的方案,如IntServ和DiffServ等,因需要投入大量成本升级核心路由器等基础设施,且要求相互竞争的ISP间深入合作,最终难以在实际中得到广泛部署和实施。
覆盖层路由不需要改变任何网络设备,而是利用从边缘网络接入的其他普通终端计算机在应用层转发网包,使其经由不同于网络层路径的覆盖层路径。RON[1]最早提出了利用覆盖层路由改善端到端性能的研究项目和实际系统。RON在由普通终端计算机充当的覆盖网络节点间运行一个类似于OSPF的协议,用来发掘和计算任意两节点间的最佳路径,它可能是网络层路径,也可能是经由多个终端计算机的覆盖层路径。但是,由于需要主动测量和监测大量“链路”状态,RON的致命缺点是可扩展性差,只能支持几十个覆盖网络节点。SOSR[2]提出并验证了用一跳覆盖层路径(即只用一个覆盖网络节点作为中继)绕开网络层路径局部故障的想法。尽管提高了可扩展性,但SOSR只考虑连通性,并采用随机选择中继的算法,无法保证覆盖层路径的端到端性能满足多媒体通信的要求。本文针对交互多媒体通信的数据传输特点设计和实现了一个新的覆盖层路由系统——CORS。
1 CORS系统设计
CORS的目标是利用覆盖层路由技术解决互联网的网络层路由所固有的不适于交互多媒体通信应用的下述几方面缺陷:(1)网络层仅提供“尽力而为”的服务,传输层TCP协议的重传机制难以满足多媒体通信对数据延时的要求; (2)网络层使用同一条路径传输流量,无法按照具体应用的需求特点区分网包的优先级; (3)网络层路由的连通性和可用性也有待进一步提高。
CORS的基本思想是构建和使用一条或多条一跳覆盖层路径来协助网络层路径改善数据传输的端到端性能。与RON相比,CORS节省测量开销,具有更好的可扩展性,可支持大规模覆盖网络;与SOSR相比,CORS采用启发式预选和主动测量确认相结合的方式保证所选覆盖层路径能够满足传输多媒体数据的性能要求。而且,CORS还打破了网络层路由、RON和SOSR仅使用单一路径的局限,以实现更低的延时和丢包率,以及更高的可用带宽。
1.1 系统架构
CORS的系统结构示意图如图1所示,考虑到覆盖网络中节点能力的异质性,CORS的软件实现包括Proxy和API两个组件。Proxy组件仅需要部署在计算能力强接入带宽大的超级终端节点,而API组件则要部署在所有希望享用CORS覆盖层路由服务的客户端节点上。

1.2 Proxy组件
Proxy组件是一个与特定网络端口绑定的持续运行的监听进程,它的主要功能包括:(1)维持大规模覆盖网络的连通性; (2)向本节点或其他仅安装API组件的节点推荐适当的中继候选节点; (3)充当中继节点在应用层转发流经的网包。这些功能通过3个模块具体实现。
1.2.1 Neighbor-Maintainer(NM)模块
NM模块负责用Gossip的方式发现、探测和更新邻居节点列表,从而形成并维持一个连通的覆盖网络。邻居节点是指当前节点所知的且对其进行周期性探测的安装了Proxy组件的其他节点;在覆盖网络拓扑当前节点与其邻居节点间是单向直连的。除发送和应答探测消息外,当列表中的邻居节点数目过少时,此模块还要发出特定的请求消息,从其他节点的邻居列表中获取新的节点来进行填补。
此模块算法的关键是以低开销保持覆盖网络的连通性和优秀中继节点分布的均匀性,这使当前节点与任一目标节点通信时,附近局部网络中优秀中继节点的密度与整个覆盖网络中的密度相当。
1.2.2 Relay-Advisor(RA)模块
RA模块接收本地或远程节点API组件发来的请求消息,根据源和目标节点的IP地址等信息,从自身的邻居列表中选取并推荐适当的中继候选节点。若自身邻居列表中满足条件的中继候选节点数目过少,此模块还会将请求消息转发给部分邻居节点,委托它们也推荐一定数量的中继候选节点。
此模块推荐的中继候选节点直接决定了能否用低测量开销就构建起端到端性能优秀的覆盖层路径,对整个CORS系统的可扩展性和服务性能都至关重要。为此,此模块采用了基于PoP层推断路径选取中继候选节点的启发式算法,并使用知识共享机制进行近邻节点间协作。
因篇幅所限,启发式算法的细节超出了本文讨论范畴,知识共享机制的核心思想如下:当一对源和目标节点S和D进行通信,并通过测量发现优秀中继节点R时,就将该条“知识”共享,表示为(Sp,Dp,Rp,TS,RTT,…),其中Sp、Dp和Rp分别表示节点S、D和R的IP地址前缀,TS表示该条知识的有效时间,而RTT及后续各项指明这条覆盖层路径的延时等各项端到端性能指标;当另一对源和目标节点S′和D′通信时,会首先查询是否有前两项分别为S′p和D′p的知识,如果S′和S、D′和D恰好都具有同样的IP地址前缀,则无需测量就能优先在IP地址前缀为Rp的邻居节点中推荐中继候选节点。存储知识的方式既可用中心数据库,也可用完全分布式可扩展性更高的DHT网络,如OpenDHT[3]。
1.2.3 Packet-Forwarder(PF)模块
PF模块属数据层面,负责在应用层转发经由中继节点的网包,同时保证每个会话占用的转发带宽都不超过被许可的最大值。CORS采用了源路由的方式,即把每个网包要经过的整条覆盖层路径的信息都置于网包的CORS头部。因此,此模块只需要根据头部信息转发网包,而不需像RON那样传播路由消息、计算最短路径和维护路由状态。
1.3 API组件
API组件包括两个功能模块和一组供应用软件开发者调用的类似于Socket(UDP)的编程接口。
1.3.1 Relay-Selector(RS)模块
RS模块请求本地或远程节点的Proxy组件推荐中继候选节点,并测量这些候选节点构成的覆盖层路径性能,从中选出真正满足要求的中继节点,再根据上层应用传输多媒体数据的实际需求向中继节点请求和协商该中继能够提供的转发带宽。
为避免启动延迟过长,此模块采用迭代的方式选择中继节点并建立覆盖层路径;考虑到中继节点可能离线等意外因素影响,此模块预备的覆盖层路径的总体性能之和一般会大于多媒体通信会话的实际需求,以便动态地监视和调整这些覆盖层路径。
1.3.2 Multipath-Manager(MM)模块
MM模块属于数据层面,它在发送端调度和协调多媒体数据在网络层路径和若干条覆盖层路径上的传输,既要满足数据对延时和可靠性的要求,又要确保每条覆盖层路径承载的流量不超过中继节点承诺提供的转发带宽。对经由覆盖层路径的网包,此模块还要用目标节点的IP地址、端口以及用于协助测量丢包率和延时抖动的信息等生成CORS头部。
在接收端,此模块执行与发送端相逆的过程:接收来自网络层和覆盖层路径的网包,然后根据CORS头部的源节点IP地址和端口信息,将来自同一源节点的多媒体数据恢复成正常顺序,再通知接收端的上层应用软件进行读取和播放。
2 工作过程
新节点首次加入CORS的覆盖网络时,它必须通过读取配置文件或访问某知名站点等“软状态”方式知道至少一个已处在CORS的覆盖网络中且具有Proxy组件的节点。当覆盖网络进入稳定状态后,一次基于CORS的交互多媒体通信过程如下:
(1) 用户操作应用软件期望与另一端的用户进行多媒体通信,经一系列信令交互后(如SIP),开始建立用于传输多媒体数据的数据通道。
(2) 应用软件会调用API组件提供的init()函数通知RS模块构建覆盖层路径,同时MM模块马上开始用网络层路径传输来自于应用软件的多媒体数据。
(3) RS模块先查找本地历史记录,确认是否以前曾跟同一目标节点通信并保留了优秀中继节点信息。如记录中的覆盖层路径不能满足要求,则RS模块就用RPC方式请求RA模块推荐为中继候选节点。
(4) RA模块利用启发式算法和知识共享机制推荐中继候选节点集,RS模块通过实际测量从中找到真正满足要求的中继节点,并与它们的PF模块协商构建覆盖层路径。此过程是迭代式进行的,以尽量保持所有覆盖层路径的总体能满足端到端性能要求。一条覆盖层路径的性能包括端到端延时、可用带宽和传输可靠性三项指标。前两项指标都易于理解,传输可靠性的定义为:

其中L表示丢包率,Tn表示当前时刻,Ts表示该中继节点最新上线的时刻,τ表示该中继节点历史上平均连续在线的时间。传输可靠性与丢包率的区别在于考虑了中继节点可能中途离线的因素。
(5)发送端应用软件调用sendto()函数将多媒体数据传递给MM模块,MM模块将利用网络层路径和当前可用的覆盖层路径尽可能地满足该数据对延时和传输可靠性的要求。为提高公平性和降低相关性,MM模块用一个链表存储所有可用的覆盖层路径,当要传输一段大小为S、可靠性要求为H且最大期望延时为t的多媒体数据时,MM模块从头搜索链表直到找到第一条覆盖层路径p能同时满足:

其中Ω表示所用覆盖层路径的集合。若无法找到Ω满足上述条件,MM模块将再使用网络层路径冗余传输这段多媒体数据。
(6) 接收端的MM模块将从网络层和覆盖层路径到达的网包恢复成多媒体数据,通过recvfrom()函数传递给上层应用软件,并最终播放给用户。
(7) 当用户结束此次会话时,应用软件会调用close( )函数通知API组件,发送端的RS模块将通知所有覆盖层路径的中继节点释放它们为此次会话保留的转发带宽等资源。
3 实验和性能评价
为考察CORS改善多媒体通信质量的效果,将其原型系统部署在全球规模的网络实验平台——PlanetLab[4]上进行了实验:首先从30个PlanetLab节点中随机选出若干对,然后分别使用CORS系统和默认的网络层路径在它们之间传输同一段视频流数据,最后比较不同情况下的有效丢包率和接收端视频的PSNR。PSNR是一种常用的评价视频质量的客观指标,其值越大说明视频质量的损失越小;人眼一般能感受到PSNR值相差0.5 dB以上的视频质量差别。视频流数据由一个30 s的简单背景下人物头像的视频片段按H.264编码分别在384、768、1 024和2 048 kb/s 4种不同码率下生成。
4种码率情况下都各在400多对PlanetLab节点间进行了上述实验。图2和图3分别比较了使用CORS系统和默认的网络层路径2种情况下得到的平均有效丢包率和接收端视频的平均PSNR。可以看到,在所考察的各种情况下,CORS都能够显著降低有效丢包率(2 %左右)和有效提高视频质量(1.37~2.16 dB)。证实了CORS能够改善多媒体通信质量的有效性。

针对当前互联网网络层路由不适于传输多媒体数据的内在缺陷,本文提出使用覆盖层路由技术改善交换多媒体通信质量,并设计和实现了一个具备以下特点的覆盖层路由系统CORS:(1)低开销维持覆盖网络的连通性和均匀性,按需构建覆盖层路径,因而具有高可扩展性;(2)选择中继节点时将启发式推荐和知识共享机制与主动测量相结合,既节省了测量开销又提高了准确性;(3)向上层提供应用感知的多路径传输机制,更好地满足多媒体数据对延时、丢包和带宽等端到端性能指标的特定要求。
在PlanetLab上的大规模实验结果验证CORS系统提高数据传输可靠性和改善多媒体通信质量的有效性。
参考文献
[1] ANDERSEN D, BALAKRISHNAN H, KAASHOEK F, et al. Resilient overlay networks[J]. ACM SIGOPS Operating Systems Review, 2001,35(5):131-145.
[2] GUMMADI P, MADHYASHA V, GRIBBLE D, et al. Improving the reliability of internet paths with one-hop source routing[C]. In:Proc. of OSDI'04. San Francisco, USA: [s.n],2004:13-27.
[3] RHEA S, GODFREY B, BRAD K, et al. OpenDHT: a public DHT service and its uses[C]. In:Proc. of ACM SIGCOMM’05, Philadelphia, USA:[s.n], 2005.
[4] PlanetLab. http://www.planet-lab.org
