1.2 IP多播的优点
IP多播网络的设计与部署(第1卷)
Internet和公司内部网络(后者更为常见)由于连接用户数量的增加而规模见长,大量的用户经常需要在大致相同的时间内访问同一信息。使用IP多播技术来分发这一信息可以充分减小网络上的总需求带宽。该方法在迅速增长的音频和视频Web内容领域内具有良好的应用。
这里有一个例子:ACME公司正在使用一堆音频服务器将受欢迎的无线脱口秀节目内容(例如Rush Limbaugh和Howard Stem脱口秀)实时传输给Internet上的已连接用户。这只是IP多播可以发挥显著优势的众多领域中的一个。在这些领域中,IP多播可以在Internet上或公司内部网络上为网络提供商以及内容提供商展示其自身的优势。但值得怀疑的是,通过本公司的Internet连接来收听Howard Stem的员工实际上正在执行一项关键任务。当然,如果他们恰好在娱乐企业中工作或为FCC工作,这可能就成为一个与工作相关的重要任务。
在下面几节,将使用ACME公式的例子来解释IP多播的优点。IP多播的优点包括(但不限于)带宽、服务器负载和网络负载。
1.2.1 带宽
来考虑这样一个例子:ACME通过音频压缩技术来实时传送Rush Limbaugh脱口秀节目,该音频压缩技术需要8kbit/s的数据流来传递节目。在图1-3中,虚线表示当已连接的单播用户数目增加时,网络带宽的数量也线性增长。另一方面,如果用多播来传递相同的节目(用实线表示),一个8kbit/s的多播数据流就能够向用户传递节目信息。
假设ACME公司的收入是基于用户数量的(这在一定程度上与任一时刻活跃客户端的数量有关),则ACME销售部门希望看到有数万的用户数量也就在情理之中了。为了满足这一目标,需要设计网络,使得它可以提供100Mbit/s范围的网络带宽,来支持这个场景。
现在,假定ACME在该产品服务上取得了巨大成功,并且想要扩展其服务,使得它在提供8kbit/s的音频节目的同时,也能够提供高压缩、低速率的120kbit/s的视频流。如果使用单播模型来用作传递方法,所需要的带宽将会更高,如图1-4所示。
假设在将来,越来越多的连接到Internet的用户具使用ISDN、ADSL或其他中速率的Internet连接来观看ACME的节目内容,则带宽的需求将会接近每秒几兆比特的范围。
如果进一步考虑到市场中存在的其他形式的竞争,ACME将不会是这类节目内容的唯一提供商。其他公司也可以通过Internet来提供与ACME相似的服务,这将会对Internet的基础设施增加额外的要求。
在本书写作之时,几家电影服务机构开始调查通过数据网络来传输电影的可能性。考虑到典型的MPEG-2视频流需要大约1.5Mbit/s的带宽才能提供逼真的视频,因此IP多播无疑传输这些节目内容的最好选择。尽管在你通过Internet连接在家观看阿诺德·施瓦辛格的终结者III之前,还需要等待一段时间,但是你已经完全可以通过你们公司的IP网络来接收公司重要事件的MPEG-2多播信息。
1.2.2 服务器负载
现在回到ACME公司通过Internet向已连接用户传输实时音频的例子。如果ACME公司继续使用单播传输机制,它将需要增加其实时音频服务器的功率和数量,以满足日益增长的已连接用户数量。
在图1-5所示的例子中,显示了实时音频服务器为了将Rush Limbaugh的脱口秀节目传输给3个客户,而需要发起的流的数量。注意到,在单播情况下(见图1-5顶部),服务器必须为收听节目的每一个客户发起一个单独的流。
随着已连接客户端数量的增加,服务器的负载也随之增加,直到服务器不能以传输不间断音频所需的8kbit/s的数据速率来发起流。此时,ACME的用户将开始抱怨低劣的音频质量,并可能因此取消该服务的订阅。这是一个典型的成功/失败情形,在该情形中,服务是如此成功,以至于它超出了技术或网络基础设施处理需求的实际能力。在这一情况下,ACME不得不增加服务器的CPU的数量及其网络接口的带宽,以适应越来越多的客户端。最后,ACME不得不提供多个实时音频服务器来满足用户日益增长的需求。
另一方面,如果ACME使用IP多播来传输其节目内容(见图1.5底部),只需要发起一个单一的实时数据流,即可将节目传输给所有已连接的客户端。这样,ACME将不需要通过购买更多的实时音频服务器来应对客户端数量的增长。很明显,IP多播在降低服务器功率方面具有显著优势。
1.2.3 网络负载
鉴于在传递相同内容到多个客户端时,使用IP多播可以显著降低带宽需求,因此可以假设消耗带宽的降低应该等同于网络中路由器上负载的降低。一般而言,这一假设是正确的,但是有必要注意到,在某些情况下,网络中某些点处的路由器的工作负载反而增加。
再来看图1-5中的多播部分,可以看到,第一跳路由器(直连到服务器的路由器)正在接收来自服务器的单一数据流。然而,第一跳路由器需要将单一的数据流复制为两份外出(outgoing)数据流,以便将数据传输到下游的客户端。这一复制过程增加了该路由器的工作负载。在进行全面的网络设计时需要考虑到这一点。如果路由器没有一个高效的复制机制,当该路由器的外出接口的数量很大时,其负载将会显著增加。
例如,一些旧的多播转发代码的实施需要路由器为每个附加的外出接口复制多播数据包。该复制过程需要一个从内存中分配的新的数据缓存,原始数据包中的数据也需要复制到这一新的缓存中,以便从外出接口中传输出去。如果外出接口的数量很大,该复制过程将给路由器的CPU和内存资源带来很大负担。而较新版本的转发代码通过为每一个外出接口安排一个指向原始数据包中数据的指针,使得每一个接口共享同一个数据缓存,从而避免了该复制过程。这实际上消除了为每个外出接口复制数据的需要,因此显著降低了转发多播数据包所需要的CPU和内存资源。