1.3 局域网多播路由的性能
上述局域网多播路由(链路层)算法只需用桥接器中很少的附加工作或附加空间。典型的自学习桥接器维持一个单播地址表,每个表项是一个三元组:
(地址,(外出支路,历时))
这里的历时域用以检测过时数据。每个输入帧的源地址和源支路都被安装在该表中,分别填进对应的地址域和外出支路域。而对于每个到达的单播帧也都在该表中查找其目的地址,从而确定其外出支路。
为了支持多播,该表也必须包含多播地址。由于单个多播地址可能有多个外出支路(和历时域),因此相关的表项变成具有下列形式的可变长记录:
(地址,(外出支路,历时),…,(外出支路,历时))
一个到达的组成员关系报告会引发对应其源地址的表项的安装和更新。对于一个到达的多播帧,会在该表中查找其目的地址,以确定一组外出支路。在转发之前,该帧从其到达的支路总是会被从查得的一组外出支路中除去。
对在多播地址表项中的历时域的处理跟单播地址有些不同。当桥接器收到一个单播帧时,如果其目的地址在表中不存在,或者其表项已经期满(即其历时值超过了某个门槛值),那么该帧在除输入支路以外的所有支路上转发出去。可以期待,来自目的地的对应流量随后将允许桥接器获悉其位置。然而当桥接器接收到一个多播帧时,它仅在用没有期满表项标识的支路上转发。期满表项被看成是在那条支路上不再有任何成员的迹象。因此,组成员必须以小于成员关系期满门槛值的间隔时间定期报告它们的成员关系。
成员关系报告流量的开销由报告间隔时间Treport决定,Treport越大,报告开销越小。选择大的Treport具有下列缺点。
(1)为了容许偶尔的成员报告丢失,期满门槛值Texpire应该等于Treport的若干倍。Texpire越大,在沿着一条特别的支路不再有可达的组成员之后,桥接器继续在那条支路上转发多播帧的时间就越长。这不是一个特别严重的问题,因为主机可以使用地址过滤器拒绝不想要的流量。
(2)如果一个主机是在一个特别的LAN上的第一个成员,并且它的开头1个或2个成员关系报告由于传输差错丢失了,那么桥接器将不知道它的成员关系,直到延迟1个或2个Treport时间为止。这就满足不了低的加入延迟的目标。可以通过让主机开始加入一个组时一个紧接着一个地发送多个成员报告得以避免。
(3)如果由于桥接器或LAN的开启或关闭引起生成树改变,那么在桥接器中的多播登记项可能在长至Texpire的时间内变得无效。这个问题可以通过在拓扑改变之后在Texpire时间内让桥接器恢复到广播方式的转发来避免。
因此这些问题中的任何一个都不是那么严重,都不会阻止对相对大的Treport值(比如说在几分钟的量级,而不是几秒钟)的使用。
除了增加Treport值,还有一种技术可以用来减少报告流量。当发布关于组G的成员报告时,主机把目的地址初始化成G,而不是所有桥接器地址。然后直接附接到在做成员报告的LAN上的桥接器在把报告帧转发到其他桥接器之前,把G用所有桥接器地址替换。一个桥接器可以根据源和目的地址是相同的组地址的事实来识别这样的报告。这样做的结果就使得在同一LAN上的同一组的其他成员能听到这个成员报告,从而禁止它们自己的多余报告。为了避免不希望有的组成员报告同步,每当有一个这样的报告在一个LAN上发送时,在那个LAN上被报告的组的所有成员都把它们的下一次报告定时器设置成在大约Treport范围内的一个随机值。对于该组的下一次报告由首先超时的成员发送,此时再次选择新的随机定时值。这样在每个LAN上起始的报告流量减少到在每个Treport期间对于存在的每个组发送一个报告,而不是对于存在的每个组的每个成员都发送一个报告。这在每个LAN上有多个成员的一般情况下是一个显著的流量减少。
为了对这种算法的代价有一个概念,假定一个典型扩展LAN由10个网段构成,一个网段上的每个主机都属于5个组,每个网段上都有20个不同的组的成员,总共有50个组,成员关系报告的间隔时间Treport等于200秒。
(1)主机上的开销是每40秒发送或接收一个成员报告帧(200÷5=40)。
(2)在叶网段上和通往叶网段的桥接器接口上的开销是每10秒一个成员报告帧(200÷20=10)。
(3)在非叶网段上和通往非叶网段的桥接器接口上的开销是来自每个网段的报告流量的和,即每秒一个成员报告帧。
(4)在每个桥接器中的存储开销是50个组地址登记项。
这样的代价跟在当前安装的扩展LAN中可提供的带宽和桥接器的能力相比不是显著的。而且在主机和叶网段上的开销是独立于总的网段数目的,具有数百个网段的扩展LAN仅在主干网段上有较大的开销,而不是在大部分主机通常连接的更多数目的叶网段上。
上述桥接器多播路由算法需要主机为它们所属的组发布成员关系报告。这就影响了作为链路层桥接器的重要特征之一的透明性(对主机而言)。然而,如果把主机修改成使用多播而不是广播,那么让它同时也实现组成员报告协议可能是合理的。为了尽可能把对主机的开销减至最小,最好在主机操作系统的最底层,例如LAN设备驱动程序,处理组成员报告。而且,LAN接口可以自动地提供组成员报告服务,不用主机介入。这实际上是设置多播地址过滤器的顺带功能。相反地,如果主机不打算支持这个功能,那么可以通过允许在桥接器中手动插入组成员关系信息来迁就。