「Network」- 组播,反向路径检查,Reverse Path Forwarding

  CREATED BY JENKINSBOT

问题描述

组播数据转发需要依赖路由表项。但是,基于目的网络的路由表在转发组播数据时存在一定问题:

解决方案

由于组播转发容易产生环路,次优,重复报文,所以组播路由表项除了 目的网络出接口 外,还需要添加 组播源入接口 信息。

设备仅转发从特定唯一的入接口收到的组播数据,并丢弃非期望接口接收的数据,从而避免组播转发时产生环路,次优,重复报文(部分解决)等问题。

组播路由表项

路由格式

(192.168.0.2, 239.0.0.1)                   // 组播源,目的网络
Upstream Interface: GigabitEthernet1/0/0   // 入接口(唯一)
Downstream interfaces                      // 出接口
           1:  GigabitEthernet2/0/0
           2:  GigabitEthernet3/0/0

组播路由表项包含 组播源组播组(目的网络),所以又被称为(S,G)表项
组播路由表项出接口,一般需要通过组播路由协议确定。

产生方法

与单播路由不同,并非先产生组播路由:
1)流量触发产生:进行 RPF 检查,然后生成组播路由表项;
2)控制层面申请加入,来产生路由表项,但是依旧需要流量触发。

反向路径转发(RPF)

用于确定 组播路由表项组播源入接口。如上路由表项,通过 RPF 检查,以确定组播路由表项的 组播源(192.168.0.2)入接口(Upstream Interface: GigabitEthernet1/0/0)

对于相同的组播源,设备通过 RPF(Reverse Path Forwarding,反向路径转发)检查,来确定设备上唯一的组播流量入接口。当 RPF 检查成功后,入接口将被写入组播路由表项中,其他接口便不再能作为入接口。

检查原理

当组播路由协议运行后:
设备上便(利用单播路由表、MBGP路由表、组播静态路由表)生成 RPF Route,以用于检查。
当收到数据后,便直接利用 RPF Route 进行 RPF 检查。(注意:组播网络不能独立运行,组播网络需要使用单播网络的某些信息)

当设备收到组播数据后:
假设源地址为 SRC-Address,RPF 将利用 RPF Route 来检查去往该 SRC-Address 的路由:
1)如果 在 RPF Route 中去往 SRC-Address 的出接口收到该组报文的接口 是同个接口, 则接收该组播报文;
2)否则,丢弃该组播报文;

这很容易理解:去往 SRC-Address 的路径,也应该是收到 SRC-Address 报文路径,即往/返都应该是最优路径(整个转发路径 正确性和唯一性的)。而其他路径都是次优的,因此收到数据包则立即丢弃。

RPF Route

RPF路由可以从单播路由、MBGP路由、组播静态路由中选举产生。

当路由器收到一份组播报文后,如果这三种路由表都存在,具体检查过程如下:

MBGP:MBGP(Multicast BGP,组播 BGP)主要用于传递组播源相关的路由条目。
组播静态路由表:手工配置组播源与出接口的对应关系。优先级为零;

根据以下原则从这三条最优路由中选择一条作为RPF路由:
1)如果配置按照最长匹配选择路由,则从这三条路由中选出最长匹配的那条路由;
2)如果这三条路由的掩码一样,则选择优先级最高的那条路由;
3)如果它们的优先级也相同,则按照 组播静态路由、MBGP路由、单播路由 的顺序进行选择;

补充说明

Q:等价路由是否会形成环路或重复数据包?
A:对于等价路由,组播协议具有相关的机制(选择接口网络地址较大),以处理这种特殊场景。