在组播网络中,要转发组播数据的时候首先需要做一个RPF校验,校验成功才能够转发该数据。什么是RPF呢?(Reverse path forward逆向路径转发)下面我们先看两个例子。
就上图来说,假如在s0口受到一个组播包,路由器会在单播路由表里面查看去往源151.10.3.21的接口是不是s0口,结果通过单播路由表查看发现,到150.10.0.0/16的路由是通过s1到达的,所以,RPF校验失败,此时路由器会丢弃次数据包。
此图可以看出RPF校验成功了,那么数据包将会在组播路由表中的outgoing列表中的接口转发出去。
下面看RPF的工作原理:
路由器在接收到由源S 向组播组G 发送的组播报文后,首先查找组播转发表:
1、如果存在对应(S,G)表项,且该组播报文实际到达接口与Incoming interface 一致,则向所有的outgoing interfaces 执行转发;
2、如果存在对应(S,G)表项,但是报文实际到达接口与Incoming interface 不一致,则对此报文执行RPF 检查。如果检查通过,则将Incoming interface 修改为报文实际到达接口,然后向所有的outgoing interfaces 执行转发。
3、如果不存在对应(S,G)表项,则对此报文执行RPF 检查。如果检查通过,则根据相关路由信息,创建对应路由表项,然后向所有的outgoing interfaces 执行转发。
4、如果当前组播路径沿袭从组播源S 到客户端的SPT 或组播源S 到RP的源树,则路由器以源S 的IP 地址为目的地址查找单播路由表,对应表项中的出接口为RPF接口。路由器认为由该RPF 接口接收到的组播报文所经历的路径是从源S 到本地的最短路径。
5、如果当前组播路径沿袭从RP 到客户端的RPT,则路由器以RP 的IP 地址为目的地址查找单播路由表,对应表项中的出接口为RPF 接口。路由器认为由该RPF 接口接收到的组播报文所经历的路径是从RP 到本地的最短路径。
将RPF 接口与组播报文的实际到达接口相比较,判断到达路径的正确性,从而决定是否进行转发。
6、如果两接口相一致,那么就认为这个组播包是从正确路径而来,RPF 检查成功。
7、如果两接口不一致,将该组播报文丢弃。作为路径判断依据的单播路由信息可以来源于任何一种单播路由协议、组播静态路由或者MBGP 路由协议。
======================================================
RPF:Reverse Path Forwarding
当路由器某一个接口接收到组播包,就会在其组/单播路由表中查找其本身去往树根时是不是从接收组播流的接口出去!如果是则RPF校验通过并转发组播包,否则,则丢弃。
在RPF Check中,只能有一个输入接口。选举方法如下顺序:
Lower Metric
Higher IP(本地去往树根的上游设备的接口的最大IP)
*RPF作用主要用于“防环”
=======================================================
RPF(Reverse Path Forwarding)
RPF检验的目地是为了防环和防止重复报文
RPF的规则,收到组播包的方向(接口)也必须是本路由器用来向组播包的源地址进行数据转发的方向(接口),否则扔掉数据包.
校验规则
1,组播静态路由
2,DVMRP
3,MP-BGP
4,单播路由表
根据单播路由表RPF选接口的比较原则
1,longest match ---普通选路原则
2,lower ad ---普通选路原则
3,lower metric---不等价负载均衡,EIGRP和BGP
4,higher ip---等价负载均衡,适用各个协议