P2P流媒体服务器及客户端Octoshape简介
来源: 流媒体网 作者: 日期:2008-04-01 14:55:08 我要评论本文将首先讨论实时流媒体传输的各种技术,包括比较传统的技术,研究规模和负载的问题是如何产生的,这样,我们就可以清楚的知道目前的技术是怎么解决问题的,最后将介绍Octoshape,它提供了一种较好的解决以上两个问题的方法,也将说明Octoshape是如何在这方面获得优势的。
Octoshape是一个p2p流媒体服务器以及客户端, 使用点对点网格技术来尽可能的减少转播数据流所占用的带宽
Octoshape是目前高清晰直播视频技术的领航者,它将为日益增多的网络高清直播提供解决方案。
实时流媒体本身及其应用正变得越来越流行,个人网络连接也正在快速扩展,并且还有部分网民在利用无线网线技术随时随地得接入互联网。实时流媒体的网络传播本身存在两个问题:规模和负载。它的挑战是在不增加网络负担的条件下,使用某种协议将单个网络资源同时传送给多个用户。实时流媒体的发展给网络传输造成很多技术上的难题,可以从Franc Kozamernik的著作中看到介绍,本文的焦点是在不增加网络负载的情况下传输大规模的实时流媒体数据。实时流媒体与下载播放和点播不同,它经过网络传输对事件现场进行直播。
本文将首先讨论实时流媒体传输的各种技术,包括比较传统的技术,研究规模和负载的问题是如何产生的,这样,我们就可以清楚的知道目前的技术是怎么解决问题的,最后将介绍Octoshape,它提供了一种较好的解决以上两个问题的方法,也将说明Octoshape是如何在这方面获得优势的。
1.规模和负载问题
上面已经提到规模和负载会引发一些问题。由于网络结构设计为点对点的传输文件,且文件只能在完全下载后才能使用或观看,这与一个数据源对应多个用户的无限传输理论的观点完全相反,所以问题在逐渐增加。举例来说,多个用户同时需要一个传播者的视频信号,那么这个单一的数据源就需要同时分别向多个用户传送数据,这就是为什么需要增加带宽(代表网络性能)来应付数据流增加所带来的网络负载。
进一步说,这也是负载很难均衡的原因。向多个网络用户同时分别传输数据造成了网络瓶颈,而网络瓶颈必然引起终端用户数据的不稳定,在最坏的情况下,用户会收到“服务器忙”的消息。虽然规模和负载的问题使实时流媒体的播放质量很难达到要求,但是网民对这种新兴的技术很感兴趣,要求也越来越高。
2.大规模实时流媒体传输的解决方案
某些技术对规模和负载所引发的问题采取不均衡的解决方法,这篇文章中,我们首先介绍这些较偏颇的解决方法,然后呈现Octoshape,并对它们进行对比。
到目前为止,网格技术有几种广泛应用,如P2P的文件共享程序BT,它提供电影和音乐文件共享,用户就可以使用多个数据源互相下载文件,这样就不会造成单方面网络负载的增加。文章的最后,我们将讨论Octoshape如何均衡提到的两个问题,来提供实时流媒体文件的,简单的说就是用较小的负载传播大规模的数据文件。虽然Octoshape只是一种解决方法,但是它仍然允许用户建立个人的共享网络。
2.1 媒体服务器:单播与平衡下载

图 1 单播
单播是一种典型的实时数据流传输连接方式,如图1所示。这里,我们所指的结构使用一个或成群的服务器来管理用户请求数据,服务器群能够平衡机器下载并使这结构装更健壮,因为即使服务器群中的某台机器损坏,其它数据共享的服务器也可以向用户继续传送同样的数据,这样一种结构就称为媒体服务器,它所在网络的大小或其能力同样用带宽表示。举例来说,假设媒体服务器的网络带宽是100Mbit/s,那么一个100kbit/s的音频数据流理论上最多就可同时传送给1000个用户。一些大规模的传输网络拥有两个或三个媒体服务器,即便那样,带宽需求与用户数量仍然需要保持一定的比例,可用下面的公式表示:
Bandwidth_Needed = Size_of_Audience X Streaming_Quality
文件共享程序,如BT和Kazaa,广泛应用于电影和音乐类文件的共享,用户可以通过个人的PC机互相传输数据,包括数据请求与接收,实际上,根据报道,正是这些文件共享程序造成了70%的网络拥塞问题。BBC也正在测试以实现节目共享,它的重点就在限制带宽负载上,文件共享程序只能用于下载,而不能用于实时流媒体,如一段音乐,用户只能完全下载后才能正常播放。
服务器向用户传输数据后,用户可改变数据来减小带宽需求,一个用户不仅可以向多个用户同时传送数据,也可以同时从几个用户那里接收数据。能够同时从其它用户那里接收数据是Octoshape的目的,这对系统的整体效率是至关重要的。
在P2P树结构中,一个用户只能接收另一个用户的数据,但是Octoshape用户可以同时从多个用户1,2,3中接收数据。如图6所示:

图 6 Octoshape数据接收
这里仍然考虑用户互相传输数据的场景,在图6中,如果接收数据的用户要下载一部电影,那么向其传输数据的三个用户可分别向其传输电影的一部分,如电影中间或者最后30分钟的内容。Octoshape的两个特点是:
(1) 用户可以同时从多个用户中接收同一文件的不同部分。这就允许不同的用户同时向同一用户传输数据,能充分利用用户的下载能力。
(2) 如果某个正在传输数据的用户堵塞或者关机,文件的接收用户可以选择网络中的其它用户继续接收中断数据。通过这种方法,使用户独立于单一的数据源。
与用于文件下载相比,Octoshape技术用于实时流媒体传输比较困难。如果传输数据的用户关掉机器,它需要花费时间找到其它的数据传输用户,这对文件下载只是时间问题。但是,在实时流媒体传输中,这样会造成客户端媒体播放中断,直到找到其它合理的数据源。此外,为实时流媒体提供独立的网络也比较困难,用户不可能同时接收流媒体文件前面,中间或者最后的部分,因为对于实时流媒体文件来说,这些部分根本不存在。
Octoshape实时流媒体技术为使网络达到最大的效率包含很多方面的内容,下面我们对其中几项关键技术作出解释。一般音频或视频文件才会被作为实时数据流传输,而在实时数据流中,数据会按逻辑进行排序,没有两个数据是完全相同的。举例来说,假定实时流媒体文件的传输速率为400kbit/s,而每一个数据流的速率为100kbit/s,在Octoshape解决方式中,不同的数据流会按逻辑顺序重新排序,上面的例子中,用12个数据流描述一个画面,某用户接收到其中任意4个100kbit/s的数据流后,就可以用它们恢复出原始画面,这样就可实现用户对媒体的实时播放。如图7所示:

图 7 实时流媒体传输
下面,我们把焦点放在网络数据用户上。在Octoshape技术中,每个终端用户都有属于自己的独一无二的数据流,因此不同的数据流个数就代表了不同的终端用户数,这些数据流以共享的方式存在,不会给传播者造成负担。每个用户既可以将自己的数据流传输给0,1,2,3,甚至更多的用户,也可以从其它用户那里接收100kbit/s的数据流,然后将这些数据流重新构造出原始的实时媒体文件。图8表示一个用户从四个用户那里接收数据后又传送给三个用户:

图 8 Octoshape数据传输
下面说明这些方面为什么能使网络达到最好的效率:
稳定的连接:终端用户一般都会维护一个相邻用户的连接表,每个终端用户都会不断向邻居发出请求以确认连接,一旦有用户堵塞或停止发送数据,可以及时找到替代用户。如果这个连接表太小,可以从地址簿中添加。
避免瓶颈问题:如果某个用户陷入堵塞,与其连接的用户会从连接表中找到其它用户代替,通过对连接的不断更新维护,用户就可避免瓶颈和堵塞问题。
不存在服务器的下载:既然每个用户都有地址簿和连接表,就没有必要在传送数据的用户中断后给服务器增加负担。
灵活使用带宽:用户通过减小传输实时流媒体的数据流大小来减小自己的网络负载,这样就使整个系统变得比较灵活。用户用低于媒体数据流大小的上传能力可上传较少的数据流,用户的上传能力较高或许可以上传更多的数据。为得到完全的灵活性,数据量与流的比率应该大于4,用户使用实时数据流的平均速率发送数据就可节省97%的带宽。
做到不可能的:假设一组用户使用某种方式连接在一起,与前面那个英国的例子类似,在一个地区或城市中,这组用户通过较小的网络连接在一起,某个用户需要向其它地区的用户传输数据,一般情况下,此网络中所有的用户都需要参与数据传输,而如果使用Octoshape技术,数据只需要传给组中的一个用户就可遍布其它用户。
如果用户都能做到尽量节省数据,有稳定的连接时不从服务器下载数据,就能减少本地甚至全球的网络堵塞与瓶颈问题,就能用较小带宽实现大规模数据传输,就能实现高质量的流媒体传输。