[翻译]CoolStreaming/DONet: 实时流媒体传输的数据重叠网络 (3)

来源:互联网 发布:unity骨骼动画优化 编辑:程序博客网 时间:2024/05/01 20:13
CoolStreaming/DONet: 实时流媒体传输的数据重叠网络
作者: Xinyan Zhang, Jiangchuan Liu, Bo Li, Tak-Shing Peter Yum
翻译: 默难 ( monnand@gmail.com ). DriftingLeaves ( driftingleaves@yahoo.com )
原文参见: http://citeseer.ist.psu.edu/zhang05coolstreamingdonet.html
本文其他部分参见: http://blog.csdn.net/monnand/category/261378.aspx


 V.    基于全球范围的性能评估   ( 本节翻译: A-C由DriftingLeaves翻译; D和E由默难翻译 )

关于DONet 的原型, 已经进行过多方面实验. 这一部分中, 将会首先说明在 PlanetLab [30] 环境下, 实验系统是如何设计. 其次会列出一些典型的结果. 最后, 本文会指出在实验中所遇到的一些典型问题, 并讨论它们对实验结果的影响.


Fig-5 结点地理分布的快照

A.    实验系统的设计


这些实验几乎动用了 PlanetLab 的所有可用结点,  而结点的总量在实验期间 (2004年5月到2004年6月), 达到了200个到300个. 每一个结点都运行一个程序原型, 扮演 DONet 结点的角色. 源结点被设置在美国 ( planetlab2.lcs.mit.edu, IP : 128.31.1.12 ), 而借助远程登录, 通过在香港 ( planetlab2.ie.cuhk.edu.hk, IP : 137.189.97.18 ) 的结点控制整个系统, 它也就是所谓的监控结点 ( Monitoring Node ) . 实际上这也是亚洲第一个接入 PlanetLab 的结点 ( 从2003年1月开始 ). Fig-5展示了一个在5月进行的实验所动用结点的地理分布快照.
对于这样一个大范围分布的实验台, 如何有效地控制结点和收集报告, 将会是一个挑战, 因为无论是启动或升级程序, 还是收集实验结果, 所有的结点都将会集中地完成登录, 上传或下载操作. 所以设计一个自动控制系统是很必要的. 而同时实验系统应该具有高度的可扩展性, 以便加入新的结点和性质. 有趣的是, 借助 PlanetLab 所提供的工具, 以上目的也可以通过使用重叠网络来达到.

下面将简要描述实验系统的模块, Fig-6描述了这一模块的构成. 


Fig-6 实验系统的模块结构图

DONet 模块: DONet 是使用 Python - - - 也就是 Planet 的编程语言, 来实现的. 在这一模块中, 对于并行事件的处理是采用具有非阻塞模式套接字的事件队列来完成的, 而不是多线程. 正因为程序是单线程的, 可以避免许多在多线程编程下的复杂问题, 因此程序的调试和实现会更加简单, 这也会使得原型的设计变得快捷.

控制台和自动机模块: 控制台通过交互命令来便控制整个系统. 这些命令会是诸如加入, 离开 DONet 或改变参数. 而 Python 的突出性质是能够动态地执行指令. 那么, 新的特性和功能就能够在避免重写和重新装入整个程序的情况下加入. 在控制台中, 同时设计了自动机的模块, 它能够自动地开始实验并执行一系列在队列中事先定义好的指令. 这样不仅能完成精确的时间控制, 还能够减轻长时间实验 ( 许多实验经常会持续5个小时 ) 的监控工作.

指令分发和报告收集模块: 由监控结点直接连接到每一个结点来分发指令和收集报告, 这样的设计是不具有可扩展性的. 而使用另一个网络来实现命令的分发将会很好地缓和这个问题. 在实际中, 每一个指令都有唯一的序号; 一个结点接收到命令后, 会把它转发给一列自己已知的结点, 而这列结点就是先前在 DONet 模块的 mCache 中获取的那一列. 由于指令在数量上是有限的, 并且对于延迟敏感, 采用泛洪式的方式来广播指令是一个合理的选择. 这样的作法同时会有助于建立一个, 用于收集报告的逆向树结构. 在这个结构中, 有关丢失和路径长度等信息能在一些交叉结点 ( Juncion Node ) 处分类合并, 然后再传回监控结点. 综上所述, 就能在不让监控结点过重负载的情况下完成在线统计 .

在能自动控制系统的情况下, 创造一个稳定的 ( 使用持续结点 ) 或动态的 ( 使用动态加入, 离开或异常退出的结点 ) 环境并不困难. 下面将通过列举一组有代表性的结果来说明 DONet 在这两种环境中的性能, 并且指出一些关键的影响因素.

 B.    稳定环境下的性能

在第一组实验当中, 所有的结点都将会在一段初始化时段 ( 1分钟左右 ) 内加入, 并在某个流的播放时间内 ( 120分钟, 一部电影的典型长度 ) 保持可用. 默认的流速率是500Kbps, 每个分段都包含长度为一秒钟的流. 每个结点会维持一个含有60个分段的划动窗口, 或者说是长度为60秒的数据流, 并会在接受到第一个分段10秒钟后开始播放.

控制开销: 成员关系管理使用了轻量级的 gossip 协议, DONet 中的大多数控制信息是用来交换数据可用性信息的. 因此伙伴数量成为决定控制开销的关键因素. Fig-7 将控制流量描述为平均伙伴数量的函数. 开销自然会随着伙伴数量的增长而变大, 但是相比于视频流量,  甚至在伙伴超过5,6个情况下 ( 控制流量少于总流量的2% ), 控制流量也是次要的. 这个结果也给人一种直观的印象 - - - 每个分段的可用性信息仅由1比特表示.

Fig-7 在不同网络规模下控制负载关于伙伴数量的函数. ( 控制负载 = 每个结点控制流量/每个结点视频流量 ).


Fig-8 连续性信息关于伙伴数量的函数.

播放连续性: 维持播放的连续性是流应用的首要目标. 为了评估连续性, 这里定义了连续性指标, 它表示能在播放的截止时间前到达的分段数量与分段总量的比值. Fig-8 将连续性指标表示为伙伴数量 M 的函数. 连续性会随着 M 的增长而加大, 因为每个结点都会有更多的资源提供者以供选择. 但是在伙伴超过4个之后, 这种增长将变得不再明显. 在 Fig-9 中将连续性指标表示为流速率的函数, 可以看到, 即使在高速率下, 伙伴数量为4时仍然会达到很好的效果. 考虑到控制开销会随着伙伴数量的增长而加大, M = 4在实际中将会是一个很好的选择, 这一点在下面的实验中也同样适用.


Fig-9 连续性信息关于流速率的函数. 网络规模 = 200 结点.

可扩展性: 从 Fig-7 中可以看出每个结点的控制开销几乎与网络规模无关, 这是因为数据的可用性信息 ( BM ) 只在本地交换. 同样, 相比于较小的网络, 连续性指标在大规模网络中也没有太大的变化. 实际上, 后文将会说明, 随着网络规模的增大, 合作的程度将会增加, 这往往会导致更好的播放连续性. 一句话, DONet 无论在网络规模上还是流速率上都具有可扩展性.

C.    动态环境下的性能


下面将要检测 DONet 在有结点动态加入, 离开或意外退出时的性能. 大多数的参数设置与前一组实验相同, 只是在这里, 每个结点会按照 ON/OFF 模型来改变它的状态: 在 ON 时段, 结点会在网络中保持活跃, 而在 OFF 时段, 结点会离开 ( 或意外退出 ). ON 和 OFF 都在平均为 T 的时间内呈指数分部.


Fgi-10 在不同网络规模下控制流量关于ON/OFF 平均周期的函数

Fig-10 将不同网络规模下的控制流量表示为 ON/OFF 周期的函数. 可以看到, 控制流量会随着 ON/OFF 周期的缩短 ( 例如, 动态结点执行更多动作 ) 而有轻微的增长. 这些附加的控制流量主要是由离开或意外退出的声明引起的, 但是像前面所提到的, 相对于总体流量, 这只是次要部分.


Fig-11 在不同网络规模下连续性指标关于 ON/OFF 平均周期的函数

Fig-11描述了连续性指标在不同 ON/OFF 周期下的变化. 更短的 ON/OFF 周期肯定会导致更低的连续性指标, 但是下降不是很明显. 在使用 DONet 内部一些恢复机制的情况下, 即使在高动态的网络, DONet 的连续性指标仍然是可以接受的 ( 在1分钟之内找到新的资源结点 ).

D.    与基于树结构网络的比较

本节将把DONet与传统的树结构网络进行一个比较. 公平起见, 树中的每个结点的度被限制在三个以内. 这就是说, 除了源结点可以拥有四棵子树以外, 其他非叶子结点最多只能拥有三棵子树 ( 加上一个父结点, 则总度数为4. 这与DONet中每个结点的度数相同 ).  然而, 考虑到异构能力和带宽的约束, 让每个结点都支持三个子树似乎并不现实. 在这种情况下, 一些子树将被移到更底的层次, 直到约束条件解除. 同时, 会使用一种树修复算法, 使得在结点异常退出的时候, 把一些下游结点移到上游.

首先比较的是端到端的延迟 ( end-to-end delay ). 由于 PlanetLab 中结点的时钟并非完全同步, 所以准确地计算出每个分段的端到端延迟并非是件易事. 因此, 使用了一种更简单的方法来衡量延迟 --- 计算跳数 ( hop-count ) 的方法. 利用这种方法的衡量结果被显示在 Fig-13 中. 尽管树结构经常被认为可以实现最短的延迟, 但测试结果显示, 无论是在稳定的还是动态的网络中, 基于树结构的网络都表现的不那么尽如人意. 如前所述, 这是由于上传带宽的限制可以在很大程度上增加树的高度. Fig-12 显示了本次实验中的树结构. 结点总数是231, 但是树的高度却是19 --- 而一颗231个结点的满平衡三叉树的高度却只有五层.



Fig-12 一个包含231个结点的基于树结构的网络



Fig-13 DONet 和基于树结构的网络中的平均跳数延迟.



Fig-14 在连续性指标方面, DONet网络和基于树结构的网络的比较. ( Y轴: 连续性指标; X轴: ON/OFF周期; 网络大小分别为50和200个结点 )


Fig-15 在一段时间内, DONet 和基于树结构的网络中的连续性指标的采样 ( 采样自从第10分钟起至第20分钟 )

如 Fig-14 所示, 在连续性指标方面, 采用树的拓扑结构远不如 DONet 网络. 特别是在较大的动态网络中. 这是因为树结构的网络对于非叶子结点的异常退出非常敏感. 从 Fig-12 中可以看到, 有些非叶子结点在树结构中起到了至关重要的作用. 比如根结点的最右边那个子结点, 它仅仅拥有一颗子树 --- 它或者它的子结点的异常退出, 都可以导致下游结点的缓冲区不足, 而这就意味着网络中会有大约3/4的结点受到影响. 为了更进一步指出树结构的易损性, Fig-15 显示了在一段时间内, 200个结点的网络中的连续性指标. 显然, 在连续性指标方面, 树结构的网络不仅比 DONet 网络的低, 而且还表现出了很大的波动性. 比如, 在800至900秒区间, 连续性指标严重下跌, 甚至低于了0.4. 根据当时的记录显示, 这是根结点的一个子结点离开所导致的. 而这种情况在 DONet 中则很少见. 因为结点的负载被平等地分担开, 并且传输的路径是根据数据的可用性动态确定的.

值得注意的是, 哪怕树结构是满且平衡的, 它在动态网络中依然比 DONet 网络更加易损. 为此, 对于由结点离开或崩溃而导致的播放间断, 作一个简单的分析, 为了方便描述, 将结点的离开或崩溃统称为结点失效 ( Node failure ). 假设失效的概率为Pf. 引入另一个变量P0, 表示一个相关结点 ( 在树结构中指失效节点的一个子结点, 在 DONet 中指它的一个伙伴 ) 在 t 时间内无法找到新的资源提供者的概率. Ps 表示一个结点可以在它的相关结点提出请求后便马上提供上传的概率. P0 和 Ps 的值都依赖于网络维护的算法, 和网络/结点的性能. 比如修复算法, 缓冲区大小, 上传带宽等. 在实际中, 假设树结构中的绝大部分非叶子结点都给 M-1 个子结点提供服务, 那么Ps可以适当高一些, 比如等于0.5.

在 DONet 网络中, 每个结点拥有 M 个伙伴. 假设只能有一个结点可能替换失效节点成为资源提供者, 那么一个非失效节点在 delta_t 时间内找不到新的资源提供者的概率为:


那么, 出现流间断的结点数量的期望是:



上述的结果显然是低估了. 因为我们忽略了一个事实: 活跃的伙伴结点可以协同工作为一个结点提供资源. 这已经在之前的调度算法中提及了. 同样, 在树结构的网络中, 出现流间断的结点数量的期望是 ( 推导的细节参见附录 ):


这里, h表示一颗满且平衡的树的高度.

Fig-16 在 t  时间内, 出现流间断结点的比例的期望

Fig-16 在数值上显示了两个网络的性能. 这显示了, 哪怕树是满且平衡的, DONet 网络依然可以在播放的连续性上表现得更好些. 在大规模, 并且结点失效概率较高的网络中, 差距则更为明显. 值得注意的是, 由于在网络层次上 DONet 与基于树结构的结点没有差别, 因此, 基于DONet 算法的结点可以与基于树结构算法的结点协同工作, 而运算的复杂度方面, DONet显然更加简便.

E.    总结及展望

总体说来, DONet 的性能足以用于实时的流媒体传输. 它在控制上的额外开销非常低, 大约仅相当于视频流量的1%, 并且这一比值不会随着网络的扩大而增长. 和基于树结构的网络相比, DONet的播放连续性更佳, 特别是在一种高度动态的网络环境中. 并且端到端延迟也比树结构的网络要小.

实践中也表明, 实现一个 DONet 的原型并不难. 这即是由于它本身的简单性, 也因为 PlanetLab 提供的出色支持. 毕竟, PlanetLab 计划依然在发展中并且还未成熟. 在此讨论一些有代表性的观点以及由此得到的启示.

可扩展性 ( Scalability ): 命令分发和报告收集系统的实现, 使得 DONet 可以运行于更多的结点之上. 如今限制它规模的仅仅是 PlanetLab 中的结点数量. 而且, 如 Fig-7 所示, 大多数的 PlanetLab 结点都分布于北美和欧洲. 这仅仅能反映出当今部分因特网的情况. 为了创造一个更接近于因特网的网络环境, 我们期待着有更多其他国家结点的加入.

可再现性 ( Reproducibility ): 与前人在这种非完全控制 ( not-fully-controlled ) 的环境下所遇到的问题相同, 基于 PlanetLab 的实验同样面临着可再现性的问题. 但是不管怎么样, PlanetLab 网络在几个小时之内是可以保持相对稳定的. 所以这个问题并没有那么严重, 并且连续的几次实验在总体上是具有可比性的.

可描述性 ( Representability ): PlanetLab 的稳定性在一定程度上是由于网络中的应用较少, 因此额外的流量较少. 实验尽量模拟了当前因特网的环境, 因此有意地加入了一些额外流量, 并且抑制了注入速率以防超出了规定带宽. 另一点需要考虑的就是源结点的为止. 在本次实验中, 选择的源结点几本都在美国, 因为大多数 PlanetLab 结点都在那里. 同时也使用了香港的结点, 尽管与其他结点相隔较远, 但由于香港与美国/欧洲之间的连接较通畅, 因此得到的结果也类似. 现在正在联系更多的位于其他大洲的结点, 以它们为源结点, 用于更深入的实验.
( 译者注: 三条性质的翻译显得有些生硬, 特别是最后一条的翻译. 希望读者能提出更好的建议 )
原创粉丝点击