1.2 单个生成树多播路由
链路层桥接器执行基于LAN地址的路由选择(链路层)功能,该LAN地址在一组互联的LAN范围内具有唯一性。
桥接器把LAN功能透明地扩展到互联的多个LAN,并且有可能跨越较长的距离。为了维持透明性,桥接器通常把每个多播和广播帧都传播到扩展LAN的每个网段。这被一些人看成是桥接器的一个缺点,因为在每个网段上的主机都会受到所有网段的全部广播和多播流量的冲击。然而这种对主机资源的威胁是由对广播帧的不当使用引起,而不是由多播帧引起。多播帧可以被主机接口的硬件过滤。因此,对于主机遭受冲击问题的解决方案是把广播应用转换成多播应用,每个应用都使用一个不同的多播地址。
一旦把应用转变成使用多播,就有可能通过仅在为到达其目的地成员所需要的那些链路上传递多播帧来保护桥接器和链路资源。在小的桥接LAN中,通常桥接器和链路资源是丰富的。然而在包括低带宽长距离链路的大的扩展LAN中,或者针对在其小的子区域中驻留的组有大量的多播流量的扩展LAN中,避免到处都发送多播帧可能是一个很大的益处。
桥接器典型地是把所有的帧流量限制到单个生成树,可以通过禁止在物理拓扑中的回路,或者通过在多个桥接器之间运行一个分布式算法,来计算一个生成树。当一个桥接器接收到一个多播或广播帧时,它简单地把帧转发到生成树中(除了从其接收的支路以外的所有附接支路)。因为该生成树跨越所有的网段,并且没有回路,所以在没有传输差错的情况下,到达每个网段的帧仅投递1次。
如果桥接器知道它们的哪些附接支路到达一个给定多播组的成员,它们就能够把前往该组的帧仅在那些支路上转发。桥接器能够通过观察进入帧的源地址获悉使用哪些支路可以到达一个个主机。如果组成员使用组地址作为源地址周期性地发布帧,那么桥接器可以把同样的自学习算法应用到组地址。
例如,假定有一个所有桥接器组B,所有的桥接器都属于该组,那么,属于一个组G的成员的每个主机可以定期地发送一个帧来向桥接器通告它的组成员关系,该帧的源地址是G,目的地址是B,帧类型是组成员报告,没有用户数据。
图1-1表示的是在一个具有单个组成员的简单桥接LAN中,该算法是如何工作的。LAN a、b和c被桥接到主干LAN d。
图1-1 具有一个组成员的桥接LAN
在LAN a上的一个组成员发布的任何组成员关系报告都被附接到a的桥接器转发到主干LAN。没有必要把组成员关系报告转发到LAN b或c,因为它们是生成树的叶,不到达任何附加桥接器。桥接器能够识别叶LAN,可以是作为它们建立生成树算法的结果,或者通过定期发布关于它们在所有桥接器组中的成员关系的报告。
如图1-1所示,在组成员关系报告到达所有桥接器之后,它们都知道在哪个方向上可以到达G这个成员。随后前往G的多播帧的传输仅在那个成员关系的方向上转发。例如,一个源于LAN b前往G的多播帧将会经过d和a,而不会经过c。源于LAN a发往G的一个多播帧就根本不会被转发。
图1-2表示的是在LAN b上的第二个成员加入该组后桥接器的知识状态。现在发给组G的多播帧将向着LAN a和b传送,而不会向LAN c传送。
图1-2 具有两个组成员的桥接LAN