《IP多播网络的设计与部署(第1卷)》——2.4 多播转发

本节书摘来异步社区《IP多播网络的设计与部署(第1卷)》一书中的第2章,第2.4节,作者:【美】Beau Williamson,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.4 多播转发

IP多播网络的设计与部署(第1卷)
在单播模型中,路由器在网络中沿着一条单一的路径从源主机向目的主机转发流量,而且目的主机的IP地址出现在IP数据包的目的地址字段。该路径上的每一个路由器使用数据包中的目的IP地址做出单播转发决策。它通过查询单播路由表中的目的地址,然后通过指示接口将数据包转发到去往目的主机的下一跳。

在多播模型中,源将流量发送到一个任意的主机组中,该主机组使用IP数据包中目的地址字段的多播组地址来表示。和单播模型不同,多播路由器不能基于数据包中的目的地址做出转发决策。通常情况下,这些路由器不得不将多播数据包从多个接口中转发出去,以到达所有的接收者。这一要求使得多播转发过程要比单播转发过程复杂得多。

本节将讲解逆向路径转发(Reverse Path Forwarding,RPF)的概念。在大多数多播路由协议中,逆向路径转发是多播转发过程的基础。本节还将讲解有关多播路径缓存、TTL阈值,以及管理范围边界的相关内容。

2.4.1 逆向路径转发

实际上,所有的IP多播路由协议利用了某些形式的RPF或者入接口校验(incoming interface check)来作为转发或丢弃到来的多播数据包的主要机制。当多播数据包到达路由器时,路由器对数据包进行RFP校验。如果RPF校验成功,则转发数据包,否则将其丢弃。

当流量沿着源树向下流动时,RPF校验机制进行如下工作。

1.路由器检查到来多播数据包的源地址,以确定此数据包是否是通过满足这样一个条件的接口到达的:该接口位于返回源主机的逆向路径上。

2.如果数据包是通过可以返回到源的接口上到达的,RPF校验成功,并将数据包转发。

3.如果RPF校验失败,则丢弃信息包。

多播路由器确定那个接口位于返回源的逆向路径上的方式,取决于所使用的路由协议。在某些情况下,多播路由协议维护一个独立的多播路由表,并使用它进行RPF校验。距离向量多播路由协议(Distance Vector Multicast Routing Protocol,DVMRP)就是一个很好的例子。该协议将在第5章详细讲述。在其他情况下,多播路由协议使用已有的单播路由表来确定位于返回源的逆向路径上的接口。通常使用单播路由表来执行RPF校验的多播协议的例子是PIM和CBT。当然,PIM和CBT也不局限于只使用单播路由表进行RPF校验。它们可以使用来自DVMRP路由表或者多播边界网关协议(Multicast Border Gateway Protocol,MBGP)路由表的可达性信息,或者也可以静态配置RPF信息。PIM和CBT协议将在后面章节详细讲解。

图2.14所示为RPF校验的过程。本例子使用单独的多播路由表。当然,如果使用单播路由表或者其他可达性表,概念相同。

《IP多播网络的设计与部署(第1卷)》——2.4 多播转发

来自源151.10.3.21的多播数据包通过接口S0被接收到。多播路由表的校验表明,返回源的逆向路径上的接口是S1,而不是S0。因此,RPF校验失败,并丢弃数据包。

图2-15是另外一个例子。在该例中,来自源151.10.3.21的多播数据包这次是通过接口S1到达路由器。

《IP多播网络的设计与部署(第1卷)》——2.4 多播转发

在本例中,由于接口S1位于返回源的逆向路径上,所以RPF校验成功,并且数据包被转发到外出接口表(outgoing interface list)中的所有接口上(需要注意的是,外出接口没有必要包括路由器上所有的接口)。

2.4.2 多播转发缓存

在本章前面的“多播分发树”一节中,介绍了构建多播分发树,以用来将多播流量通过网络转发到所有接收者的概念。从路由器的视角来看,每一棵SPT或者共享树可以在一条多播转发缓存条目(有时也称为多播路由表条目)中表示成与零个或多个外出接口相关联的入接口(incoming interface)。注意,双向共享树对该过程进行了微调。由于流量可以沿着双向共享树向上和向下流动,所以双向共享树不需要区分入接口和外出接口。

对每一个到来的多播数据包执行RPF校验会导致显著降低路由器的性能。因此,对多播路由器来说,在创建多播转发缓存的时候确定RPF接口的方式也就更加普遍。RPF接口随后成为多播转发缓存条目的入接口。如果RPF校验过程所使用的路由表发生变化,必须重新计算RFP接口,并更新多播转发缓存条目,以反映这一变化。注意到,有多种方法可以确定外出接口,这取决于正在使用的多播路由协议。

例2-1所示为一个Cisco多播路由条目。

例2-1 Cisco多播路由表条目

《IP多播网络的设计与部署(第1卷)》——2.4 多播转发

(S,G)条目描述的是(151.10.3.21/32,224.2.127.254)SPT,与在图2.14和图2.15中的路由器看到的一样。

从本例中可以看到,条目有一个入接口Serial1,以及两个外出接口Serial2和Ethernet0。不要受本例中其他术语的影响。它们将会在第10章和第11章详细介绍。现在只要关注与入接口和外出接口的概念即可。

2.4.3 TTL阈值

还记得,每当一个多播数据包被路由器转发一次,IP数据包头部的TTL值将会减1。如果数据包的TTL值见到0,路由器将丢弃数据包。

TTL阈值可用于多播路由器上的个别接口,以防止小于TTL阈值的多播数据包在该接口上被转发出去。例如,图2.16所示为其接口上应用了不同TTL阈值的多播路由器。

《IP多播网络的设计与部署(第1卷)》——2.4 多播转发

在本例中,多播数据包通过Serial0到达,其当前的TTL值为24。假设RPF校验成功,并且接口Serial1、Serial2和Ethernet0都在外出接口列表(oilist)中,因此数据包应该从这些接口中正常地转发出去。因为已经在这些接口上应用了TTL阈值,路由器在将数据包转发出去之前,必须确定数据包的TTL值(现在是23)大于或等于接口的TTL阈值。

从本例中可以看到,数据包从接口Serial1和Ethernet0转发出去。注意到TTL阈值为0则表示该接口上没有TTL阈值。由于数据包的TTL值(23)小于接口Serial2上的TTL阈值,因此数据包不能从该接口转发出去。

TTL阈值提供了一个简单的方法,以防止基于多播数据包中的TTL字段将多播流量转发到一个站点或者区域的边界之外。这一技术也被称为TTL范围(scoping)。如果多播应用必须将其流量限制在一个站点或者区域的内部,则它可以传递一个带有初始TTL值的多播流量,这样就不会跨越TTL阈值的边界了。

图2.17所示为一个TTL阈值边界的例子。该TTL阈值边界用来限制多播流量的转发。公司ABC已经在其网络周边的所有路由器接口上设置了值为128的TTL阈值。

如果多播应用想要把其流向限制在公司ABC网络内部,它必须传递初始TTL值为127的多播数据包。此外,工程和市场部门要在他们的网络周边将TTL阈值设置为16。因此,运行在这些网络内的多播应用可以防止它们的多播流量逃离其各自的网络。

《IP多播网络的设计与部署(第1卷)》——2.4 多播转发

表2-3所示为在不同的TTL边界下,典型的初始TTL值和路由器接口TTL阈值。

《IP多播网络的设计与部署(第1卷)》——2.4 多播转发

2.4.4 管理范围边界

和TTL阈值一样,管理范围边界也可以用来限制多播流量被转发到一个域(domain)或者子域(subdomain)之外。这种方法使用一个特殊的多播地址(叫做管理范围[administratively scoped]地址)范围作为边界。如果在路由器的接口上配置一个管理范围边界,其赌博组地址落入该范围的多播流量将不会被允许进入或离开该接口,从而在这一地址范围内为多播流量提供了一个防火墙。

图2-18所示为管理范围边界的工作机制。在这里,管理范围边界在接口Serial0上被设置为239.0.0.0~239.255.255.255的多播地址范围。该机制有效地设置了一个防火墙,使得该地址范围内的多播数据包不能跨越此范围。

还记得在本章前面的“管理范围多播地址”一节中,管理范围多播地址落在239.0.0.0~239.255.255.255的范围之内,并且被认为是本地分配的。也就是说,它们不能在Internet上使用。管理范围边界机制考虑到了这一约定,并防止落入这一地址范围内的多播流量进入或离开网络。

《IP多播网络的设计与部署(第1卷)》——2.4 多播转发

图2-19所示为一个使用管理范围边界的例子。在这里,公司ABC使用了不同的管理地址范围来防止多播流量转发到特定边界之外。

《IP多播网络的设计与部署(第1卷)》——2.4 多播转发

在本例中,公司ABC已经在其网络周边的所有路由器接口上配置了239.0.0.0/8的管理范围边界。该范围边界可以防止落在239.0.0.0~239.255.255.255之内的任何多播流量进入或离开无网络。同样,工程部门和市场部门也在他们各自的网络周边配置了239.128.0.0/16的管理范围边界。这范围边界可以防止落在239.128.0.0~239.128.255.255之内的多播流量进入或离开其各自的网络。这也意味着239.128.0.0~239.128.255.255范围的多播地址是由工程部门和市场部门独立使用。多播地址空间的重用使得多播地址在公司ABC内部的使用更为有效。

上一篇:如何将日志服务的数据秒级同步到表格存储


下一篇:【SpringCloud-Alibaba系列教程】10.gateway网关