翻译: 默难 ( monnand@gmail.com ). DriftingLeaves ( driftingleaves@yahoo.com )
原文参见: http://citeseer.ist.psu.edu/zhang05coolstreamingdonet.html
本文其他部分参见: http://blog.csdn.net/monnand/category/261378.aspx
在 DONet 的基础上, 一个基于 Internet 的实现 - - - CoolStreaming在2004年5月30日发布了第一个公开版 ( v.0.9 ). CoolStreaming v.0.9 包含了2000行 Python 源代码, 这个版本源于以 PlanetLab 为基础的实验原型, 并且在实验完成的两星期之内就发布了. 这也再一次说明了 DONet的简单. 它目前支持 RealVideo 和 Windows Media 格式, 不过只要用户安装了支持其他视频格式的播放器, 就可以实现其他格式视频的播放. 此外, 它的实现与平台无关. 无论是 Unix, Windows, 或者其他的操作系统, 只要是支持 Python 和所播放的视频格式, 均可以使用它.
像其他的 Internet 应用一样, CoolStreaming 能否成功依赖于它所传送的内容. 然而, 又不像传统的用户/服务器模型, 重叠网络没有一个拥有丰富资源, 并由其所有者完成升级的专用结点. 此外, 它还会涉及到许多诸如版权问题, 以及关于它们的深入研究, 但这些超出了本文所研究的范围. 更重要的是, 我们没有意图, 也没有能力成为内容提供者. 那么, 有一个实际且快速的解决方案: 使 DONet ( CoolStreaming ) 成为内容提供者和用户之间的能力放大器 ( Capacity Amplifier ). 换句话说, 它会最终成为网络基础设施的一部分.
到现在为止, CoolStreaming 已经用来播放实时体育节目 ( 450Kbps – 755Kbps RealVideo/Windows media 格式 ), 资源是由一个免费的视频服务器提供的. 这个服务器接受匿名访问, 但是它的能力有限. 结果, 许多迟来的用户在高峰时段不能直接与服务器建立连接, 这也给用户和服务器操作人员带来了许多不愉快的经历. 而现在, 通过安装 CoolStreaming 和重定向 Realplay , 用户能够在不使服务器超载的情况下欣赏视频. 虽然这样会有一些延迟, 但却能收到源图像和广告的所有内容. (3)
这个软件最初只吸引了20个用户, 但是截至本文发布, 超过30000的用户 ( 从独立IP的统计上看 ) 已经使用过这个流媒体软件, 在一些高峰时间甚至达到4000多用户同时在线. 如果由服务器直接提供服务, 那么将需要一个 3Gbps 的上传带宽, 而这对于 Internet 目前的接入技术来说是很困难的.
Table-1 CoolStreaming 用户 IP 分布 ( 近似值 )
在 Table-1 中概括了 CoolStreaming 用户的 IP 地址分布情况. Fig-17 列出了8月21日播放过程中的结点数量和连续性指标的统计. 能够看到, CoolStreaming 在大多数时间能够平稳地播放. 更重要的是, 先前的两个结果透露了两个重要的事实:
1.现在的 Internet 已经有足够的带宽来支持电视质量的数据流 ( >= 450 Kbps )
事实上, 超过80%的 CoolStreaming 用户表示 ( 通过 e-mail 或在线统计 ) 能够在总体上稳定地播放视频. 这也证明了一个推测: 是视频服务器有限的处理能力和上传带宽限制了 Internet 上流服务的发展, 而不一定是主干网络. 像 DONet/CoolStreaming 这样以重叠网络为基础的流传播方式, 将是一个可靠的解决方案.
2.数据驱动网络越大, 所传送的数据流质量将会越好
在发布了第一个版本之后, 我们并没有提供主要的升级服务. 而有趣的是, 随着用户的增加, 统计结果和用户反馈反而比初期的更好. 从 Fig-17 中也可看出, 随着结点数量的增加, 连续性指标在总体上会变好 - - - 在大多数时间达到0.95以上. 这主要是因为合作程度会随着网络规模的增大而加大, 因为每个结点都会有更大的弹性去使用伙伴筛选算法来定位更好的伙伴. 我们非常关心是否能找到一个数据驱动网络的最优大小, 并且正在测试.
还有许多在实际 Internet 环境中存在的问题. 例如, NAT 部分解决了 IPv4 中的地址冲突问题, 但却为 P2P 网络带来了许多问题. 在一些现存的 P2P 工具中, NAT 网关后面的结点往往只会作为资源的接收者, 而不能成为提供者. 而根据日志显示, 大约30%的 CoolStreaming 结点是在 NAT 网关后的. 如果只使用简单的策略, CoolStreaming 的有效性将受到质疑. 实际上, CoolStreaming 通过提供 TCP 连接解决了这个问题. 因为 TCP 连接是双向的, 只要一队伙伴结点有一个不在 NAT 网关后, 它们就都会成为资源的接收者, 同时也会成为资源的提供者. 统计显示大于 95% 的结点会因为这个解决方案而成为依赖结点.
另一个问题是如何支持 VBR 视频和类 VCR 功能. 在数据驱动设计中, VBR视频能够在视频服务器支持 VBR 编码的情况下直接传送, 而不用附加其他操作. 但目前还没有实现类 VCR 功能. 但是, 可以看到, 数据的可用性信息可以帮助结点定位合适的伙伴以便完成快进, 快退和跳至等类 VCR 操作. 因此将这些功能嵌入 CoolStreaming 中比嵌入结构化网络中更加简单.
VII. 结论和将来的工作 ( 本节翻译: DriftingLeaves )
在这篇论文中, 描述了 DONet - - - 一种用于流媒体的数据驱动网络. DONet 不需要维护一个清晰的网络结构, 但却能根据数据可用性信息和需求信息, 灵活地传递数据. 本文讨论了 DONet 在设计的主要问题, 并提出了一个可扩展的成员关系和伙伴关系算法以及一个智能调度算法. 这些设计将在低控制开销的情况下, 为用户高效地提供中高带宽的流传输.
我们在 PlanetLab 中多方面地评估了 DONet 的性能. 这些实验几乎动用了 PlanetLab 的所有可用结点, 它们证明了即使在很差的网络条件下, DONet 也能够达到很好的传输质量. 与以树结构为基础的网络相比, 在可比较的延迟下, DONet 会获得更好的流的连续性.
一个基于Internet 的 DONet 的实现 - - - CoolStreaming v.0.9也公开发布了, 并用来播放实时体育节目. 它已经吸引了超过30000的用户, 并且在一些高峰时间创下了4000人同时在线的记录.
由于用户的积极反馈和良好的统计资料, 我们正在努力改进 DONet 的实现, 并准备发布下一个版本. 我们期待着发现更多潜在的问题, 并打算在将来的发展中找到解决方案. 实际上, 最近已经发现成员管理算法和调度算法能够大幅度简化, 并在相同播放连续性的情况下使用更小的开销. 此外, 通过将一个流拆分成多个子流的方法, 系统的健壮性和适应性也能提高.