组播路由协议基础概述(2)

IGMP组表

  1. 一旦设备在某个接口上激活了IGMP,该设备就会开始维护IGMP组表。初始情况下该数据表是空的,当设备在接口上收到直连网段中的主机发送出来的IGMP成员关系报告时,设备就会在IGMP组表中创建一个新的表项。
    在这里插入图片描述
  2. 以上图为例,在R3的GE0/0/0接口上激活了IGMPv2,现在PC1发送IGMPv2成员关系报告以宣告自己加入组播组239.1.1.9,R3在GE0/0/0接口上收到该报文后,将会创建如下表项:
    在这里插入图片描述

IGMP路由表

问题背景

  • 对于最后一跳路由器而言,通常有接口直连着存在组播成员的终端网络,但是这个接口并不一定需要激活组播路由协议(例如PIM ),但是一般必须激活IGMP。
  • 如果该路由器的接口没有激活组播路由协议,那么组播协议将无法把这个接口识别为组播协议路由表项的下游接口,也就无法向组播接收终端传递组播流量。

解决方法

通过使用IGMP路由表中的接口信息作为组播路由表项的下游接口的扩展。使用display igmp routing-table命令可以查看设备的IGMP路由表,如下图所示:
在这里插入图片描述

组播路由协议表

  1. 在设备上激活组播路由协议后,组播路由协议会维护自己的路由表,这个路由表被称为组播协议路由表,它维护着设备通过该组播协议发现的组播路由表项。
  2. 如果设备运行了多个组播路由协议,那么每个协议单独维护自己的路由表。
  3. 组播协议路由表实际上是为设备的组播路由表及组播转发表提供数据的。

以图上图为例,如果R1,R2及R3都运行了PIM(使用密集模式,在该模式中使用的组播分发树是SPT),那么这三台路由器都会维护自己的PIM路由表。以R3为例,它的PIM路由表如下:
在这里插入图片描述
Protocol字段显示组播协议为PIM-DM;
Flag是该路由表项的标志,这些字符拥有着特殊的含义;
Upstream interface显示该路由器的上游接口是GE0/0/1;
Downstream interface(s)是该表项的下游接口列表,下游接口可以是零个、一个或多个,在上述举例中该表项的下游接口列表为空。

组播路由表

若组播网络设备运行了多种组播路由协议,那么每种路由协议都将维护自己的组播协议路由表,而优选出来的表项则会出现在设备的组播路由表中。组播路由表中的表项将作为组播转发表的数据输入。在上图中,R3的组播路由表可能如下所示:
在这里插入图片描述
在R3的组播路由表中,可以看到(S, G)表项:(10.1.1.1, 239.1.1.9),这个表项实际上是R3所运行的组播路由协议PIM贡献的。

在该表项中,Upstream Interface显示的是上游接口,只有在该接口到达的(10.1.1.1, 239.1.1.9)流量才被认为是合法的,才会被转发给下游接口,也就是downstream interface所罗列的接口,上图中下游接口只有GE0/0/0,也就是连接着组成员的接口,该接口取自IGMP路由表中对应表项的下游接口。

组播转发表

组播路由表中的表项作为组播转发表的数据输入,前者的路由表项会被下载到后者,以作为指导组播数据转发的直接依据。
如上图所示中,R3的组播转发表可能如下所示:
在这里插入图片描述
通过查看R3的组播转发表,可以看到(10.1.1.1,239.1.1.9)表项的相关信息:
上游接口(表项中的Incoming interface)以及下游接口(表项中的outgoing interfaces)等;
Matched packets显示的是匹配该路由表项的组播报文个数以及字节数,这些数据可为组播故障定位提供重要依据;
Wrong If显示的是在错误的接口上(也就是非上游接口)收到的组播报文个数;
Forwarded packets显示的是根据该转发项转发的报文个数和字节数。

RPF(Reverse Path Forwarding,反向路径转发)

问题背景

单播成环

  1. 单播报文的转发过程中,网络设备在单播路由表中查询目的IP地址,通过匹配的路由来决定将报文转发给哪一个下一跳设备,以及从哪个接口发出。
  2. 在传统的IP路由中,报文的源IP地址通常是不被关心的。路由器在转发单播报文时,需要考虑一个问题,那就是报文转发的防环,如何才能确保网络中的路由器在转发报文时不会出现环路?

组播成环

组播报文是发往一组接收者的,一旦出现环路,后果比单播成环更严重,如何才能确保网络的组播设备在转发组播报文时不会出现环路?

预防方法

预防单播成环方法

通过在网络中部署了动态路由协议,动态路由协议将依赖自身的能力实现路由的无环化,从而使得数据转发不会发生环路。几乎所有的单播动态路由协议都拥有路由防环的设计:

  • RIP的路由防环很大程度上依赖水平分割、毒性逆转规则等;
  • OSPF的路由防环依赖LSDB,SPF算法以及对各种LSA的传播限制和路由计算要求等;
  • BGP的路由防环则依赖AS_Path路径属性及IBGP水平分割规则等。

预防组播成环方法

  • 与单播路由不同,路由器转发组播报文时,除了会关注报文的目的地址,还会特别关心该报文的来源。
  • 组播路由器通过一种被称为RPF (Reverse Path Forwarding,反向路径转发)的机制来实现组播报文转发的无环化。
  • RPF机制确保组播报文在正确的接口到达,只有这些组播报文才会被路由器沿着组播分发树进行转发,如果报文在错误的接口到达,路由器将丢弃这些报文。
  • RPF确保了组播流量转发路径的唯一性,这里所谓正确的接口,其实就是RPF接口(通过RPF检查的接口),也就是我们经常说的上游接口。

RPF原理

  • 网络设备上的单播路由、MBGP路由以及组播静态路由都可以作为RPF检查的依据。
  • 一般情况下,采用单播路由进行RPF检查。

当设备收到一个组播报文时,它将在其单播路由表中查询到达该报文的源IP地址的路由,也就是查询到达组播源或者RP的单播路由,并检查该单播路由表项的出接口与接收该报文的接口是否一致,如果不一致,则认为报文未通过RPF检查并将其丢弃;如果一致,则认为报文通过RPF检查并对其进行转发。

示例

以下图为例,假设R1,R2及R3都运行了单播路由协议,比如是OSPF。OSPF收敛完成后,三台路由器都将获知到达全网各个网段的路由。R3的单播路由表如下:
在这里插入图片描述
在这里插入图片描述

  1. 当组播源Source开始向组播组239.1.1.9发送组播流量时,R3将可能在其GE0/0/1、GE0/0/2接口上都收到这些流量,它需要对这些流量进行RPF检查。
  2. 当R3在其GE0/0/2接口上收到该组播流量时(假设本网络使用SPT),它将在自己的单播路由表中查询到达组播报文的源IP地址10.1.1.1的路由,经过路由表查询后,它发现路由表中存在一条匹配的路由,并且该路由的出接口为GE0/0/1,这说明GE0/0/1才是R3“朝向”Source的接口(RPF接口),
  3. 因此从GE0/0/2接口到达的(10.1.1.1,239.1.1.9)组播流量被认为无法通过RPF检查,该流量将被丢弃。而当源10.1.1.1发往组播239.1.1.9的组播流量在GE0/0/1接口上到达时,由于到达接口正是RPF接口,因此这些组播流量被R3接收,并转发到下游接口。

RPF之SPT

当组播路由器在SPT上接收组播流量时,将使用组播报文的源IP地址,也就是组播源的IP地址进行RPF检查,因为组播源是SPT的树根。

RPF之RPT

当组播路由器在RPT上接收组播流量时,将使用RP的IP地址做RPF检查(在单播路由表中查询到达RP的路由表项,并将该路由表项的出接口指定为RPF接口),因为RP是RPT的树根。

发布了17 篇原创文章 · 获赞 1 · 访问量 231

猜你喜欢

转载自blog.csdn.net/mn3321/article/details/105618300