
目录
组播路由与转发 (1)
RPF机制 (1)
RPF机制的应用 (1)
RPF检查 (2)
组播静态路由 (3)
GRE隧道在组播转发中的应用 (4)组播路由与转发
在组播实现中,组播路由和转发分为三个方面:
z每个组播路由协议都有一个协议自身的路由表,如PIM路由表(PIM Routing-Table);
z各组播路由协议的组播路由信息经过综合形成一个总的组播路由表(Multicast Routing-Table);
z组播转发表(Multicast Forwarding-Table)直接用于控制组播数据包的转发。
组播路由表由一组(S,G)表项组成,其中(S,G)表示由源S向组播组G发送
组播数据的路由信息。如果路由器支持多种组播路由协议,则其组播路由表中将包
括由多种协议生成的组播路由。路由器根据组播路由和转发策略,从组播路由表中
选出最优的组播路由,并下发到组播转发表中。
组播转发表是真正指导组播数据转发的转发表,并与组播路由表保持一致。RPF机制
RPF机制的应用
路由器在收到由组播源S向组播组G发送的组播报文后,首先查找组播转发表:
(1) 如果存在对应的(S,G)表项,且该报文实际到达的接口与组播转发表中的
入接口一致,则向所有的出接口执行转发。
(2) 如果存在对应的(S,G)表项,但是该报文实际到达的接口与组播转发表中
的入接口不一致,则对此报文执行RPF检查:
z若检查结果表明RPF接口与现存(S,G)表项的入接口相同,则说明(S,G)表项正确,丢弃这个来自错误路径的报文;
z若检查结果表明RPF接口与现存(S,G)表项的入接口不符,则说明(S,G)表项已过时,将入接口修改为该报文实际到达的接口,然后向所有的出接
口执行转发。
(3) 如果不存在对应的(S,G)表项,则也对该报文执行RPF检查。将RPF接
口作为入接口,结合相关路由信息创建相应的表项,并下发到组播转发表中:z如果该报文实际到达的接口正是RPF接口,则RPF检查通过,向所有的出接口执行转发;
z如果该报文实际到达的接口不是RPF接口,则RPF检查失败,丢弃该报文。RPF检查
执行RPF检查的依据是单播路由或组播静态路由。单播路由表中汇集了到达各个目
的地址的最短路径,而组播静态路由表中则列出了用户通过静态配置指定的RPF路
由信息。组播路由协议并不维护某种单播路由,而是依赖于网络中现有的单播
路由信息或组播静态路由来创建组播路由表项。
在执行RPF检查时,路由器同时查找单播路由表和组播静态路由表,具体过程如下:
(1) 首先分别从单播路由表和组播静态路由表中各选出一条最优路由:
z以“报文源”的IP地址为目的地址查找单播路由表,自动选取一条最优单播路由。对应表项中的出接口为RPF接口,下一跳为RPF邻居。路由器认为来
自RPF邻居且由该RPF接口收到的组播报文所经历的路径是从源S到本地的
最短路径。
z以“报文源”的IP地址为指定源地址查找组播静态路由表,自动选取一条最优静态路由。对应表项明确指定了RPF接口和RPF邻居。
(2) 然后从这两条最优路由中选择一条作为RPF路由:
z如果配置了按照最长匹配选择路由,则从这两条路由中选出最长匹配的那条路由;如果这两条路由的掩码一样,则选择其中优先级最高的那条路由;如果它
们的优先级也相同,则按照组播静态路由、单播路由的顺序进行选择。
z如果没有配置按照最长匹配选择路由,则从这两条路由中选出优先级最高的那条路由;如果它们的优先级相同,则按照组播静态路由、单播路由的顺序进行
选择。
说明:
根据组播报文传输的具体情况不同,“报文源”所代表的具体含义也不同:
z如果当前报文沿从组播源到接收者的SPT(Shortest Path Tree,最短路径树)或组播源到RP(Rendezvous Point,汇集点)的源树进行传输,则以组播源为
“报文源”进行RPF检查;
z如果当前报文沿从RP到接收者的RPT(Rendezvous Point Tree,共享树)进行传输,则以RP为“报文源”进行RPF检查;
z如果当前报文为BSR(BootStrap Router,自举路由器)报文,沿从BSR到各路由器的路径进行传输,则以BSR为“报文源”进行RPF检查。
如图1所示,假设网络中单播路由畅通,Router C上未配置组播静态路由。组播报
文沿从组播源(Source)到接收者(Receiver)的SPT进行传输。
图1RPF检查过程
z Router C从接口POS5/0收到来自Source的组播报文,组播转发表中没有相应的转发表项。执行RPF检查,发现单播路由表中到达网段192.168.0.0/24
的出接口是POS5/1,于是判断该报文实际到达的接口不是RPF接口。RPF
检查失败,该组播报文被丢弃。
z Router C从接口POS5/1收到来自Source的组播报文,组播转发表中没有相应的转发表项。执行RPF检查,发现单播路由表中到达网段192.168.0.0/24
的出接口正是该报文实际到达的接口。RPF检查通过,向所有的出接口转发该
报文。
RPF机制除了可以保证正确地按照组播路由的配置转发组播报文外,还能避免由于
各种原因而造成的环路。
组播静态路由
当组播的网络拓扑结构与单播网络拓扑结构相同时,接收者通过单播路由可以收到
组播数据。然而组播的网络拓扑与单播网络拓扑有可能不同,而且网络中的一些路
由器可能只支持单播而不支持组播。在这种情况下,可以通过配置组播静态路由为
组播数据和单播数据提供不同的传输路径。需要注意以下两点:
z组播静态路由的作用只在于影响RPF检查,而不能用于指导组播数据转发;
z组播静态路由仅在所配置的组播路由器上生效,不会以任何方式被广播或者引入给其他路由器。
组播静态路由是RPF检查的重要依据。当配置了组播静态路由后,在进行RPF检
查时,系统会同时查找单播路由表和组播静态路由表,从中分别选出最优单播路由
和组播静态路由,通过比较以确定使用哪条作为RPF路由。
图2组播静态路由示意图
如图2所示,当网络中没有配置组播静态路由时,Router C到组播源(Source)的
RPF邻居为Router A,从Source发出的组播信息沿Router A—Router C的路径传输,
与单播路径一致;当在Router C上配置了组播静态路由,指定从Router C到Source
的RPF邻居为Router B后,从Source发出的组播信息将改变传输路径,沿Router
A—Router B—Router C的路径传输。
GRE隧道在组播转发中的应用
网络中可能存在不支持组播协议的路由器。从组播源(Source)发出的组播数据沿
组播路由器逐跳转发,当下一跳路由器不支持组播协议时,组播转发路径将被阻断。
此时,通过在处于单播网段两端的组播路由器之间建立GRE(Generic Routing
Encapsulation,通用路由封装)隧道,可以实现跨越单播网段的组播数据交换。
图3使用隧道方式传送组播数据
如图3所示,在Router A和Router B之间建立起GRE隧道。Router A将组播数据包封装在单播IP报文中,经由单播路由器转发,传送到隧道另一端的Router B。然后,Router B将单播IP报文头剥掉,继续进行组播传输。
但是,如果在隧道的两端配置了单播静态路由,则任意的单播报文都可以通过该隧道传输。为了将该隧道专用于组播数据包的传送,可以在隧道两端配置组播静态路由,从而使单播数据包的传输不能再使用此隧道。
