Multicast 组播路由

在 组播简介 文章中,我们讨论了与主机组播路由器进行通信,然后如何决定是转发还是停在一个子网的数据流量。但是多播路由器如何接收组流量?如何从源转发多播流量,以便所有组用户都接收到它?本章提供了这些问题的答案。

本文首先概述了包括Dence模式和Spars模式的多播路由协议的方法,并说明了反向路径转发(RPF)检查的用法。

组播路由协议概述

路由器可以使用密集模式组播路由协议或稀疏模式组播路由协议来转发组播数据包。本文的本节介绍了使用密集模式的多播转发,反向路径转发(RPF)检查和使用稀疏模式的多播转发的基本概念,所有这些都有助于解决多播路由问题。

使用密集模式的组播转发

密集模式路由协议假定多播组应用程序如此流行,以至于网络中的每个子网都有至少一个接收器想要接收组通信。因此,密集模式路由协议的设计指示路由器在所有已配置的接口上转发多播流量,但为了防止循环会有些例外。

例如,多播数据包从不转发到接收它的接口。下图显示了密集模式路由协议如何在一个接口上接收多播,然后将副本转发出所有其他接口。

组播密集模式

上图显示了R1上的密集模式逻辑,其中R1将包的副本泛洪到除了接收包的那个接口之外的所有接口上。尽管图中仅显示了一个路由器,但其他路由器可以接收这些多播并重复相同的过程。所有子网都将收到原始多播数据包的副本。

密集模式协议假定所有子网都需要接收数据包的副本。但是,密集模式协议确实允许路由器请求不接收发送到特定多播组的流量。如果满足以下两个条件,则密集模式路由器通常不希望接收特定组的多播数据包:

  • 该路由器没有任何活动的下游路由器,需要该组的数据包。
  • 路由器不知道已加入该组的直接连接的子网中的任何主机。

当这两个条件都成立时,路由器需要通知其上游路由器不要为该组发送流量,这是通过使用称为Prune消息的特殊消息来完成的。诸如DVMRP,PIM-DM和MOSPF之类的协议是密集模式路由协议。

反向路径转发检查

路由器不能简单地使用逻辑来接收组播数据包,然后将其副本转发到所有其他接口,而不会导致组播数据包绕网络互连。为防止此类循环,路由器不会将多播转发到接收它们的同一接口。组播路由器使用反向路径转发(RPF)检查来防止环路。RPF检查将此额外步骤添加到密集模式路由器的转发逻辑中:

RPF查看多播数据包的源IP地址。如果与源匹配的我的路由列出了传出接口,该接口是接收到数据包的实际接口,则该数据包通过RPF检查。如果不是,请不要复制和转发数据包。

下图显示了一个示例,其中R3对同一原始多播数据包的两个单独副本使用RPF检查。

RPF检查

除非组播路由器通过了RPF检查,否则组播路由器不会转发任何组播数据包。RPF检查实现了一种策略,路由器通过该策略接受通过最短路径到达的数据包,并丢弃通过较长路径到达的数据包。组播路由协议不能使用目标地址来帮助路由器转发数据包,因为该地址表示组流量。因此,多播路由协议使用RPF检查来确定数据包是否使用从源到路由器的最短路径路由到达路由器。

使用稀疏模式进行组播转发

密集模式和稀疏模式路由协议之间的根本区别与它们的默认行为有关。默认情况下,除非下游路由器发送一条消息表明它不希望该流量,否则密集模式协议将继续转发组流量。

稀疏模式协议不会将组流量转发到任何其他路由器,除非它从该路由器接收到一条消息,请求发送到特定多播组的数据包副本。下游路由器仅出于以下两个原因之一请求接收数据包:

  • 路由器已收到从某个下游路由器接收数据包的请求。
  • 直接连接的子网上的主机已发送该组的Internet组管理协议(IGMP)加入消息。

PIM稀疏模式操作始于将数据包转发到称为集合点(RP)的特殊路由器。当组流量到达RP时(与密集模式设计不同),RP不会自动将组流量转发到任何路由器。组流量必须由路由器专门请求。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁