[第5章
IP多播路由简介](part0008.html#ch5-1)
多播实质上就是向一组接收者发送数据的进程。将单播和广播视为多播的子集可能还存在着一定的争议,这是因为单播环境下的组成员只有一个,而对广播来说,所有可能的接收者都是组成员。本章将解释为何这样的论断仅局限于概念理解层面,因为在实际网络环境中(至少如此),多播、单播和广播之间的区别还是非常明显的。
虽然通常将无线电广播和电视节目的分发称为“广播”,但它们实质上是多播。发射器以一定的频率发送数据,通过调谐到相应的频率,部分接收组就可以接收数据,在某种意义上,这里所说的频率就是多播地址。在一定发射频率范围内的所有接收者都能接收到信号,但只有那些侦听正确频率的接收者才能真正地收到这些信号。
通过信号范围可以引出一个非常重要的概念,无线电广播和电视信号发射都有一个发射范围(scope)——它们受限于发射器的功率,不在发射范围之内的接收者都接收不到信号。通过本章内容的学习,读者将知道多播也有类似的范围。
《TCP/IP路由技术(第一卷)》中已经介绍了一些基本的IP多播知识,RIP-2、EIGRP和OSPF在交换路由信息时,都使用了多播机制以提高效率。应用程序使用多播机制的原因也是如此,即提高网络效率,节约网络资源。图5-1中有多台IP主机,其中的一台主机是数据源(S),需要将数据传送给一组(G)接收者,接收者不止一个,但该接收组也不包含全部接收者。
一种方法是源主机采取重复的单播机制来分发数据。也就是说,源主机为组中的每台目的主机均创建一个包含相同数据的独立数据包,之后以单播方式将每个数据包都发送给指定主机(如图5-2所示)。
图5-1 源主机必须将相同的数据传送给多个接收者
图5-2 利用单播将相同的数据发送给多个接收者会给源主机带来非常大的负担
如果只有少量目的地,那么该方案能工作得很好。实际上,目前很多“多播”应用采取的都是重复单播方式。但是,当接收者增加到成百上千或成千上万个时,将极大地加重主机为相同数据创建和发送多份拷贝时的负担。更重要的是,主机的接口、直连的介质、直连的路由器以及低速WAN链路都将成为潜在的瓶颈。当数据属于时延敏感型且单个数据包无法容纳全部数据时还会出现新的问题,如果所有2号数据包拷贝都必须在完成1号数据包的排队及发送工作之后才能处理,那么排队时延将会给数据流引入无法接受的间隙。
另一种可能的方法是采取广播方式来发送数据(如图5-3所示),这样可以解决源主机和本地设备的负担,此时只需为每个数据包发送一份拷贝即可。但广播方式将处理负担外延到了网络中的其他主机,这些主机都必须接收一份广播包并加以处理,非目的主机只有通过高层协议(该功能也可能由应用程序自身完成)才知道应该丢弃这些数据包。即使接收组中的主机数量仅占整个网络中主机数量的一小部分,相应的处理负担也是无法接受的。
注意: 当组成员仅占整个多播域中主机数量的一小部分时,就将该域称为稀疏式多播域(sparsely populated),在本章的后面还会遇到此概念。
广播的另一个难题在于IP路由器不会将数据包转发到广播目的地,如果图5-3中的网络云是一个路由式互联网络(而不是单一广播介质),那么这些广播包将无法到达远程主机。虽然可以使用定向广播,但这可能是最差的解决方案,不但所有的主机都要接收数据包,而且源主机还得发送重复的数据包。
图5-3 以广播方式发送数据会给网络的其余部分带来负担
多播机制可以让源主机只向单个主播目的地址发送一份数据包,从而解决了发送重复数据包的处理负担;侦听多播地址的接收者都能接收数据包,从而解决了非目的主机处理非期望数据包的负担。与广播包不同,多播路由器能够转发多播包。
IP多播机制的许多方面本章都不涉及,本书的关注点是IP路由,因而本章的重点是IP多播路由。此外,本章还会简单涉及部分与路由相关的主题。如果希望全面了解IP多播,请参考5.11节中的参考文献。