组播路由与转发技术介绍


组播路由与转发

组播路由与转发简介

在组播实现中,组播路由和转发分为三种表:

l              每个组播路由协议都有一个协议自身的路由表,如PIM路由表(PIM Routing-Table);

l              各组播路由协议的组播路由信息经过综合形成一个总的组播路由表(Multicast Routing-Table);

l              组播转发表(Multicast Forwarding-Table)直接用于控制组播数据包的转发。

组播路由表由一组(SG)表项组成,其中(SG)表示由源S向组播组G发送组播数据的路由信息。如果路由器支持多种组播路由协议,则其组播路由表中将包括由多种协议生成的组播路由。路由器根据组播路由和转发策略,从组播路由表中选出最优的组播路由,并下发到组播转发表中。

RPF检查机制

组播路由协议依赖于现有的单播路由信息、MBGP路由或组播静态路由来创建组播路由表项。组播路由协议在创建组播路由表项时,运用了RPFReverse Path Forwarding,逆向路径转发)检查机制,以确保组播数据能够沿正确的路径传输,同时还能避免由于各种原因而造成的环路。

1. RPF检查过程

执行RPF检查的依据是单播路由、MBGP路由或组播静态路由:

l              单播路由表中汇集了到达各个目的网段的最短路径;

l              MBGP路由表直接提供组播路由信息;

l              组播静态路由表中列出了用户通过手工静态配置指定的RPF路由信息。

在执行RPF检查时,路由器同时查找单播路由表、MBGP路由表和组播静态路由表,具体过程如下:

(1)        首先,分别从单播路由表、MBGP路由表和组播静态路由表中各选出一条最优路由:

l              以“报文源”的IP地址为目的地址查找单播路由表,自动选取一条最优单播路由。对应表项中的出接口为RPF接口,下一跳为RPF邻居。路由器认为来自RPF邻居且由该RPF接口收到的组播报文所经历的路径是从源S到本地的最短路径。

l              以“报文源”的IP地址为目的地址查找MBGP路由表,自动选取一条最优MBGP路由。对应表项中的出接口为RPF接口,下一跳为RPF邻居。

l              以“报文源”的IP地址为指定源地址查找组播静态路由表,自动选取一条最优组播静态路由。对应表项明确指定了RPF接口和RPF邻居。

(2)        然后,从这三条最优路由中选择一条作为RPF路由:

l              如果配置了按照最长匹配选择路由,则从这三条路由中选出最长匹配的那条路由;如果这三条路由的掩码一样,则选择其中优先级最高的那条路由;如果它们的优先级也相同,则按照组播静态路由、MBGP路由、单播路由的顺序进行选择。

l              如果没有配置按照最长匹配选择路由,则从这三条路由中选出优先级最高的那条路由;如果它们的优先级相同,则按照组播静态路由、MBGP路由、单播路由的顺序进行选择。

&  说明:

根据组播报文传输的具体情况不同,“报文源”所代表的具体含义也不同:

l      如果当前报文沿从组播源到接收者或RPRendezvous Point,汇集点)的SPTShortest Path Tree,最短路径树)进行传输,则以组播源为“报文源”进行RPF检查;

l      如果当前报文沿从RP到接收者的RPTRendezvous Point Tree,共享树)进行传输,则以RP为“报文源”进行RPF检查;

l      如果当前报文为BSRBootStrap Router,自举路由器)报文,沿从BSR到各路由器的路径进行传输,则以BSR为“报文源”进行RPF检查。

 

2. RPF检查在组播转发中的应用

对每一个收到的组播数据报文都进行RPF检查会给路由器带来较大负担,而利用组播转发表可以解决这个问题。在建立组播路由和转发表时,会把组播数据报文(SG)的RPF接口记录为(SG)表项的入接口。当路由器收到组播数据报文(SG)后,查找组播转发表:

(1)        如果组播转发表中不存在(SG)表项,则对该报文执行RPF检查,将其RPF接口作为入接口,结合相关路由信息创建相应的表项,并下发到组播转发表中:

l              若该报文实际到达的接口正是其RPF接口,则RPF检查通过,向所有的出接口转发该报文;

l              若该报文实际到达的接口不是其RPF接口,则RPF检查失败,丢弃该报文。

(2)        如果组播转发表中已存在(SG)表项,且该报文实际到达的接口与入接口相匹配,则向所有的出接口转发该报文。

(3)        如果组播转发表中已存在(SG)表项,但该报文实际到达的接口与入接口不匹配,则对此报文执行RPF检查:

l              若其RPF接口与入接口一致,则说明(SG)表项正确,丢弃这个来自错误路径的报文;

l              若其RPF接口与入接口不符,则说明(SG)表项已过时,于是把入接口更新为RPF接口。如果该报文实际到达的接口正是其RPF接口,则向所有的出接口转发该报文,否则将其丢弃。

1所示,假设网络中单播路由畅通,未配置MBGPRouter C上也未配置组播静态路由。组播报文(SG)沿从组播源(Source)到接收者(Receiver)的SPT进行传输。假定Router C上的组播转发表中已存在(SG)表项,其记录的入接口为POS5/1

图1 RPF检查过程

l              如果该组播报文从接口POS5/1到达Router C,与(SG)表项的入接口相匹配,则向所有的出接口转发该报文。

l              如果该组播报文从接口POS5/0到达Router C,与(SG)表项的入接口不匹配,则对其执行RPF检查:通过查找单播路由表发现到达Source的出接口(即RPF接口)是POS5/1,与(SG)表项的入接口一致。这说明(SG)表项是正确的,该报文来自错误的路径,RPF检查失败,于是丢弃该报文。

组播静态路由

组播静态路由是RPF检查的重要依据之一。根据具体应用环境的不同,组播静态路由有以下两种主要用途:

1. 改变RPF路由

通常,组播的网络拓扑结构与单播相同,组播数据的传输路径也与单播相同。可以通过配置组播静态路由以改变RPF路由,从而为组播数据创建一条与单播不同的传输路径。

图2 改变RPF路由示意图

2所示,当网络中没有配置组播静态路由时,Router C到组播源(Source)的RPF邻居为Router A,从Source发出的组播信息沿Router A—Router C的路径传输,与单播路径一致;当在Router C上配置了组播静态路由,指定从Router CSourceRPF邻居为Router B之后,从Source发出的组播信息将改变传输路径,沿Router A—Router B—Router C的新路径传输。

2. 衔接RPF路由

当网络中的单播路由被阻断时,由于没有RPF路由而无法进行包括组播数据在内的数据转发。可以通过配置组播静态路由以生成RPF路由,从而创建组播路由表项以指导组播数据的转发。

图3 衔接RPF路由示意图

3所示,RIP域与OSPF域之间实行单播路由隔离。当网络中没有配置组播静态路由时,OSPF域内的接收者(Receiver)不能收到RIP域内的组播源(Source)所发出的组播信息;当在Router CRouter D上均配置了组播静态路由,分别指定从Router CSourceRPF邻居为Router B、从Router DSourceRPF邻居为Router C之后,Receiver便能收到Source发出的组播信息了。

&  说明:

l      组播静态路由的作用只在于影响RPF检查,而不能用于指导组播数据转发,故又称为RPF静态路由;

l      组播静态路由仅在所配置的组播路由器上生效,不会以任何方式被广播或者引入给其它路由器。

 

GRE隧道在组播转发中的应用

网络中可能存在不支持组播协议的路由器。从组播源(Source)发出的组播数据沿组播路由器逐跳转发,当下一跳路由器不支持组播协议时,组播转发路径将被阻断。此时,通过在处于单播网段两端的组播路由器之间建立GREGeneric Routing Encapsulation,通用路由封装)隧道,可以实现跨越单播网段的组播数据交换。

图4 使用隧道方式传送组播数据

4所示,在Router ARouter B之间建立起GRE隧道。Router A将组播数据包封装在单播IP报文中,经由单播路由器转发,传送到隧道另一端的Router B。然后,Router B将单播IP报文头剥掉,继续进行组播传输。

如果在隧道的两端配置了单播静态路由,则任意单播数据包都可以通过该隧道传输。为了将该隧道专用于组播数据包的传输,可以在隧道两端只配置组播静态路由,从而使单播数据包的传输不能再使用此隧道。

组播路径跟踪

Multicast traceroute(组播路径跟踪)用来跟踪组播数据从第一跳到最后一跳路由器所经过的路径。

1. Multicast traceroute基本概念

(1)        最后一跳路由器(Last-hop Router):如果某路由器有一个接口的IP地址与指定地址在同一个网段内,具备组播功能,且能够向该网段转发特定组播源发来的组播流,则称该路由器为最后一跳路由器。

(2)        第一跳路由器(First-hop Router):与组播源直连的路由器。

(3)        查询器(Querier):触发组播路径跟踪的路由器。

2. Multicast traceroute报文简介

Multicast traceroute报文是一种特殊的IGMP报文,与普通IGMP报文的区别在于其类型字段为0x1F/0x1E,且其目的IP地址为单播地址。Multicast traceroute报文分为以下三种类型:

l              Query报文:类型字段为0x1F

l              Request报文:类型字段为0x1F

l              Response报文:类型字段为0x1E

3. Multicast traceroute执行步骤

(1)        查询器向最后一跳路由器发送Query报文;

(2)        最后一跳路由器在收到的Query报文后加上本地响应数据块转换成Request报文,查找到上游邻居后向其单播发送该Request报文;

(3)        最后一跳路由器到组播源之间的每一跳都在Request报文之后附加一个响应数据块,并向其上游邻居单播转发;

(4)        第一跳路由器在收到Request报文后,将其报文类型改为Response报文,向查询器单播发送完整的报文。

附件下载

联系我们