前言

  • 组播报文发送给一组特定的接收者,这些接收者可能分布在网络中的任意位置。为了实现组播报文正确、高效地转发,组播路由器需要建立和维护组播路由表项
  • 随着多个组播路由协议的开发与应用,人们渐渐感觉到,如果像单播路由- -样通过多种路由算法动态生成组播路由,会带来不同路由协议间在互相引入时操作繁琐的问题。
  • PIM (Protocol Independent Multicast)直接利用单播路由表的路由信息进行组播报文RPF检查,创建组播路由表项,转发组播报文。

    1、组播报文转发需求

    1.1、路由器如何转发组播报文

    1596119499599-9f3c7695-a5a0-4d18-9cec-cb37df639ea5.png

  • 在单播报文的转发机制中,路由器依据单播报文的目的IP地址,查找单播路由表进行转发。其中,单播路由表可以通过静态配置或者动态路由协议来学习路由。

  • 在组播中,接收者可能存在于全网中的任意位置,所以如果静态配置组播路由的话,存在实时性差、灵活性差以及工作量大容易出错的问题。
  • 为了正确、高效的转发组播数据报文,路由器之间则需要运行组播路由协议。

    1.2、组播路由协议概述

    1596119519069-66a1d9af-f9c4-4c74-be25-b2bec7ec95c6.png

    1.3、常见组播路由协议

  • DVMRP

    • RIP组播版本
    • 要求单播使用RIP
  • MOSPF
    • OSPF组播版本
    • 要求单播使用OSPFv2
  • PIM

    • 协议无关组播
    • 对单播路由来源无要求

      1.4、PIM概述

  • PIM (Protocol Independent Multicast) 称为协议无关组播,表示组播依靠的单播路由可以由静态路由、RIP、 OSPF、 IS-IS、 BGP等提供,组播路由和单播路由协议无关,只要单播路由协议产生所需路由表项能够完成RPF检查即可。

  • 协议号: 103
  • PIM路由器组播地址为: 224.0.0.13
  • PIM协议分为:
    • PIM-DM (协议无关组播密集模式)
      • 密集模式协议用Push(推)方式,Push原理假设网络里的每个子网至少有一个组播信息的接收点,因此,信息扩散到网络中的所有点。然后再利用扩散、剪枝和嫁接来维护组播分发树。
  • PIM-SM (协议无关组播稀疏模式)

    • 稀疏模式协议用Pull(拉)而不是Push的方式,即组播信息被拉入网络中的接收站点。
    • 这种方式假定组播数据不被需要,除非有加入申请,否则组播信息不会被传送到接收站点。

      2、PIM-DM的工作机制

      2.1、定义

  • PIM密集模式

  • 假定网络中组播接收者较多,且分部于大部分设备上,采用推的方式分发组播数据
  • 适用于小规模组播网络

    2.2、PIM-DM基本概述

  • 采用“推(Push)模式”转发组播报文。

  • PIM-DM的关键任务:
    • 建立SPT (Shortest Path Tree,最短路径树)。
  • PIM-DM的工作机制:
    • 邻居发现。
    • 扩散与剪枝
    • 状态刷新
    • 嫁接
    • 断言
  • PIM (Protocol Independent Multicast)协议无关组播,目前常用版本是PIMv2,PIM报文直接封装在IP报文中,协议号为103,PIMv2组播地址为224.0.0.13。
  • 在PIM组播域中,以组播组为单位建立从组播源到组成员的点到多点的组播转发路径。由于组播转发路径呈现树型结构,也称为组播分发树(MDT,Multicast Distribution Tree) 。
  • 组播分发树的特点:
    • 无论网络中的组成员有多少,每条链路上相同的组播数据最多只有一份。
    • 被传递的组播数据在距离组播源尽可能远的分叉路口才开始复制和分发。
  • PIM有两种模式:
    • PIM-DM (Protocol lndependentMulticact-Dence Mode)。
    • PIM-SM (Protocol Independent Multicast-Sparse Mode)。
  • PIM-DM假设网络中的组成员分布非常稠密,每个网段都可能存在组成员。
  • 其设计思想是:
    • 首先将组播数据报文扩散到各个网段。
    • 然后再裁剪掉不存在组成员的网段。
    • 通过周期性的“扩散—剪枝”,构建并维护一棵连接组播源和组成员的单向无环SPT。
  • PIM-DM的关键工作机制包括邻居发现、扩散与剪枝、状态刷新、嫁接和断言。

    2.3、PIM-DM基本配置

    1596119606096-9950d684-8a5e-4f78-ad81-a6373e647043.png

  • 做为组播路由协议PIM-DM的配置十分简单。只需在路由器的接口上使能PIM-DM协议即可。

  • 注意:在接口下使能PIM-DM之前必须首先全局使能IP组播路由。
  • 命令为: multicast routing-enable

    2.4、PIM-DM邻居发现

    1596119625424-16aae2b4-4f9d-45b1-902b-351e3605d707.png

  • 在PIM-DM网络中,路由器周期性发送Hello消息来发现、建立并维护邻居关系。

    • pim timer hello interval,在接口视图下配置发送Hello消息的时间间隔。Hello消息默认周期是30秒。
    • pim hello-option holdtime interval,在接口视图下配置Hello消息超时时间值。默认情况超时时间值为105秒。
  • DR的选举:

    • 在PIM-DM中各路由器通过比较Hello消息上携带的优先级和IP地址,为多路访问网络选举指定路由器DR。
    • DR充当IGMPv1的查询器。(如网段中IGMP版本是v1,则Hello报文可以选举查询器)
    • 接口DR优先级大的路由器将成为该MA网络的DR,在优先级相同的情况下,接口IP地址大的路由器将成为DR。
    • 当DR出现故障后,邻居路由器之间会重新选举DR。

      2.5、PIM-DM构建SPT

      组播路由协议 - 图6
  • 扩散过程:PIM-DM假设网络中所有主机都准备接收组播数据,当某组播源开始向组播组G发送数据时,具体过程如下:

    • 路由器接收到组播报文时会进行RPF检查。
    • 如果RPF检查通过,则创建(S,G)表项,然后将数据向所有下游PIM-DM节点转发,这个过程称为扩散(Flooding)。
    • 如果RPF检查没有通过,则将报文丢弃。
  • RPF检查:为了防止组播报文在转发过程中出现重复报文及环路的情况,路由器必须执行RPF检查。
    • 所谓RPF检查,就是指路由器通过查找去往组播源的路由来判断所收到的组播报文是否来自于“正确的”上游接口。某一路由器去往某一组播源的路由所对应的出接口称为该路由器上关于该组播源的RPF接口。一台路由器从某一接口收到一个组播报文后,如果发现该接口不是相应组播源的RPF接口,就意味着RPF检查失败,所收到的组播报文将被丢弃。
  • 剪枝过程:当下游有没有组播成员,扩散组播报文会导致带宽资源的浪费。为避免带宽的浪费PIM-DM使用剪枝机制。
    • 当下游节点没有组播组成员,则路由器向上游节点发Prunn相应的接口从其组播转发表项(S,G)对应的输出发送列表中删除。剪枝过程继续直到PIM-DM中仅剩下了必要的分支,这就建立了一个以组播源为根的SPT。
    • 各个被剪枝的节点同时提供超时机制,当剪枝超时时重新开始扩散—剪枝过程。剪枝状态超时计时器的默认值为210秒。
  • PIM-DM的扩散—剪枝机制周期性进行,每3分钟重复一次,RTC对RTE所在网段处于剪枝状态,RTC对RTE的接口会维护一个“剪枝定时器”,当剪枝定时器超时,RTC就会恢复对RTE的数据转发,这样会导致不必要的网络资源浪费。

    2.6、RPF细则

    组播路由协议 - 图7

  • 首先,通过报文源地址,分别从单播路由表、MBGP路由表和组播静态路由表中各选出一条最优路由。单播路由、MBGP路由的出接口为RPF接口,下一跳为RPF邻居。需要注意的是,组播静态路由实际上属于手工配置的组播路由,已经明确指定了RPF接口与RPF邻居。

  • 然后,根据以下原则从这三条最优路由中选择一条作为RPF路由。
    • 如果配置了按照最长匹配选择路由,则从这三条路由中选出最长匹配的那条路由;如果这三条路由的掩码一样,则选择优先级最高的那条路由;如果它们的优先级也相同,则按照组播静态路由、MBGP路由、单播路由的顺序进行选择。
    • 如果没有配置按照最长匹配选择路由,则从这三条路由中选出优先级最高的那条路由;如果它们的优先级相同,则按照组播静态路由、MBGP路由、单播路由的顺序进行选择。
  • 最后,路由器会将报文的入接口与RPF路由的RPF接口进行比较。如果一致则RPF检查通过,表明该报文来源路径正确,会将其向下游转发;如果不一致即RPF检查失败,表明该报文来源路径错误,就将其丢弃。

    2.7、剪枝

    PIM-DM在以下情况下会发送剪枝信息。

  • 流量达到非RPF点对点接口

  • 没有直连接收者的叶节点路由器
  • 位于点到点链路上的非叶节点路由器从其邻居收到剪枝信息
  • LAN网段上的非叶路由器从其邻居接收到剪枝信息,而且LAN网段上的其他邻居没有剪枝信息的否决(override)

    2.8、状态刷新

    组播路由协议 - 图8

  • PIM—DM协议采用状态刷新特性解决周期性“扩散剪枝”带来的问题:离组播源最近的第一跳RTA周期性触发State Refresh消息。State Refresh消息在全网扩散,刷新所有设备上的剪枝定时器状态。

  • 状态刷新使得RTE不再周期性的收到组播数据,但是当Client B加入G1组之后,如果一直是剪枝状态, Client B
  • 无法收到组播数据。
  • 上述问题将如何解决?

    2.9 Graft机制

    组播路由协议 - 图9
    如图所示,当Client B发送组播组G1的IGMP Report报文请求组播数据后。RTE收到Client B的IGMP Report报文,说明RTE具有转发组播数据需求,则立即向上游路由器RTC发送Graft消息,请求上游路由器恢复对应出接口的转发。RTC收到Graft消息后,向RTE回复Graft Ack并将连接RTE的出接口恢复为转发状态。

    2.10 Assert机制

    组播路由协议 - 图10

  • 如图所示,RTA、RTB、RTC均从上游接口收到组播报文并通过了RPF检查,三台路由器的下游接口连接在同一网段。RTA、RTB、RTC都向该网段发送组播报文,三份重复的组播报文浪费带宽资源。

  • 为避免重复的组播报文浪费带宽资源,PIM路由器在接收到邻居路由器发送的相同组播报文后,会以组播的方式向本网段的所有PIM路由器发送Assert消息,其中目的地址为224.0.0.13。其它PIM路由器在接收到Assert消息后,将自身参数与对方报文中携带的参数做比较,进行Assert竞选。竞选规则如下:
    • 到组播源的单播路由协议优先级较小者获胜。
    • 如果优先级相同,则到组播源的路由协议开销较小者获胜。
    • 如果以上都相同,则连接到接受者MA网络接口IP地址最大者获胜。
  • 根据Assert竞选结果,路由器将执行不同的操作:
    • 获胜一方的下游接口称为Assert Winner,将负责后续对该网段组播报文的转发。
    • 落败一方的下游接口称为Assert Loser,后续不会对该网段转发组播报文,PIM路由器也会将其从(S,G)表项下游接口列表中删除。
  • Assert竞选结束后,该网段上只存在一个下游接口,只传输一份组播报文。
  • 所有Assert Loser可以周期性地恢复组播报文转发,从而引发周期性的Assert机制。

    2.11 多路访问网段的修剪延迟

    组播路由协议 - 图11

  • 多接入网络上的PIM修剪延迟:

    • Rtr-a在被询问时会安排修剪,但不会立即进行,因为它在多访问接口上接收到 (S,G) 修剪。这使局域网上的任何其他路由器都有机会在仍然需要 (S,G) 流量的情况下覆盖 (S,G) 修剪。
    • 在上面的示例中,此过程发生如下:
      • “Rtr-b” 是一个没有下游邻居或直接连接成员的叶节点,因此它发送 (S,G) 修剪。
      • “Rtr-a” 接收到此 (S,G) 修剪,并 “调度” 界面Ethernet0 的修剪在三秒钟内发生。
      • “Rtr-c” 偷听到发送到 “rtr-a” 的 (S,G) 修剪。(它无意中听到了这一点,因为所有PIM控制消息都在本地线路上多播。)因为 “rtr-c” 具有直接连接的成员,所以它通过向 “rtr-a” 发送 (S,G) 联接来覆盖 (S,G) 修剪。
      • 当 “rtr-a” 听到此 (S,G) 联接时,它将取消为接口ethernet0 计划的修剪。
    • 如果在 “rtr-a”上有该组的本地igmp州 (即局域网上有一个直接连接的成员),rtr-b和rtr-c都没有下游成员 (因此没有覆盖 (S,G) 修剪),rtr-a将忽略 (S,G) 修剪。

      2.12 多路访问网段的修剪延迟

      组播路由协议 - 图12
  • 修剪延迟的累积影响:

    • 多接入网中的三秒剪枝延迟可以累加,在PIM-DM网络设计中应加以考虑。
    • 在上面的示例中,源正在向没有成员的多播组进行传输。正常的修剪过程由最右边的路由器启动。然而,由于多址链路上的正常3秒修剪延迟,上游路由器在3秒钟内不会修剪其接口。当这种情况发生时,上游路由器本身就会触发对其上游路由器的修剪。由于此路由器也通过多址网络连接,因此此修剪也将延迟三秒。这个过程继续进行,直到它到达直接连接到源的第一跳路由器。在本例中,总共需要12秒才能完全关闭不需要的交通流。
    • 不幸的是,当修剪超时并发生重新泛洪时,此过程会在三分钟后重复。

      2.13 PIM-DM配置实现

      组播路由协议 - 图13

      2.14 PIM-DM配置验证

      组播路由协议 - 图14

      3 PIM-DM表项维护

      3.1 PIM DM (*,G) 状态规则

  • (*G)产生

    • 有组成员加继的情况下,叶节点路由器自动产生.并且接收者一直存在的情况下,表项不超时.
  • (*G)反映成员信息,不用来转发组播数据(DM)
    • Upstreamlnterface = NULL
    • Downstreamlnterface = 有组成员的接口.并且永远处于forward状态

PIM-DM(*,G)状态规则:

  • 无论何时,只要创建一个 (S,G) 项而其相应的父 (,G) 项不存在,就首先自动创建新的 (,G) 项。
  • 密集模式 (*,G) 项不用于组播转发,他们的主要功能是维护那些与组有关的信息使之成为一个整体。
  • 密集模式 (*,G) 项的输出接口列表映射了现有的 PIM-DM 邻居接口或直接连接的组成员接口。

    3.2 PIM DM (*,G) 状态维护

  • 两个计时器,一个为该表项计时器,一个为接口计时器.

    • 当有直连的接收者加入时,本直连的最后一跳路由器该表项计时器和接口计时器永不超时.
    • (IGMPreport)当没有接收者后该表项立刻消失.那么接口计时器也就没有了。

      3.3 PIM DM (S,G) 状态规则

  • (S,G)组播数据到达时被创建

    • Upstreamlnterface = 指向组播源方向的RPF接口
    • Downstream Interface
      • 空:所有下游接口处于Prune状态
      • 非空:下游接口,处于转发状态

        3.4 PIM-DM(S,G) 状态规则

  • RPF 接口是作为对源 IP 地址(或稀疏模式 (*,G) 项, RP )的最小开销路径接口(基于管理距离 / 尺度)来估算的。如果多个接口开销相同,选择最高 IP 地址的接口最为“切入点 (tiebreak) ”。

  • 在创建新的 (S,G) 项时,其出口表提供一个来自父 (*,G) 项的出口表的副本。
  • 组播转发项的入口 (RPF 接口 ) 决不能在其出口表上出现。

    3.5 PIM DM (S,G) 状态维护

  • (SG)状态维护

    • 此表项也含有两个计时器,一个是表项计时器,一个是接口计时器。
    • 该SG表项计时器为7-10分钟(通过实验视容得到,但不需要结),如果没有数据流进行刷断.7-10分钟后消失。
    • 接口计时器在有接收者的情况下,不管是否有流量永不超时.(周期有PIMjoin)
    • 在有流量的情况下.如果没有接收者或者收到pluned信息那么接口状态会置于pruned状,并且开启3分钟计时器(实际为3.5分钟).同时周期的收到state-refresh报文,会周期刷新,永不超时.
    • 在没有流量的情况下,最终S,G表项会超时,自然也就没有接口计时器了

3.6 PIM-DM 状态维护规则

  • 每个组播状态项的 RPF 接口(即输入接口)每 5 秒重新计算一次,而且依据规则 4 对输出接口的列表做适当的调整 ( 以防在出口表上出现输入接口 ) 。
  • 密集模式 (S,G) 项的出口在剪枝时不能删除,而是被标记为“ Prune/Dense ”,且仍保留在出口表上。
  • 对 (*,G) 项的出口表的添加和删除都被复制(在通用规则 4 的限制下)到所有与该组有关的 (S,G) 项。
  • 当一个接口的 PIM 邻居列表上增加一个新邻居时,该接口在所有 PIM-DM(S,G) 输出列表重新设置“ Forward/Dense ”状态。

    4 PIM-DM的局限性

  • PIM-DM适用于组播成员分布较为密集的园区网络.

  • PIM-DM的局限性:
    • 在组播成员分布较为稀疏的网络中,组播流量的周期性扩散会给网络带来较大负担。
  • PIM-DM适用于组播成员分布较为密集的园区网络。
  • 在组播成员分布相对较为稀疏的大规模网络中(Internet),组播流量的周期性扩散/剪枝将给网络带来极大的负担。
  • 对于PIM-DM的局限性,PIM-SM可以提供相对更加有效的解决方案。

    5 PIM-SM的工作机制

    5.1 PIM-SM基本概述

  • 使用”拉(Pull)模式”转发组播报文.

  • PIM-SM的关键任务:
    • 建立RPT(Rendezvous Point Tree,汇聚点树也称共享树)
    • 建立SPT(Shortest Path Tree,最短路径树)
  • 适用于组播成员分布较为稀疏的网络环境
  • 相对于PIM-DM的“推(Push)模式”,PIM-SM使用“拉(Pull)模式”转发组播报文。PIM-SM假设网络中的组成员分布非常稀疏,几乎所有网段均不存在组成员,直到某网段出现组成员时,才构建组播路由,向该网段转发组播数据。一般应用于组播组成员规模相对较大、相对稀疏的网络。
  • 基于这一种稀疏的网络模型,它的实现方法是:
    • 在网络中维护一台重要的PIM路由器:汇聚点RP(Rendezvous Point),可以为随时出现的组成员或组播源服务。网络中所有PIM路由器都知道RP的位置。
    • 当网络中出现组成员(用户主机通过IGMP加入某组播组G)时,最后一跳路由器向RP发送Join报文,逐跳创建(*,G)表项,生成一棵以RP为根的RPT。
    • 当网络中出现活跃的组播源(信源向某组播组G发送第一个组播数据)时,第一跳路由器将组播数据封装在Register报文中单播发往RP,在RP上创建(S,G)表项,注册源信息。
  • PIM-SM的关键机制包括邻居建立、DR竞选、RP发现、RPT构建、组播源注册、SPT切换、Assert;同时也可通过配置BSR(Bootstrap Router)管理域来实现单个PIM-SM域的精细化管理。PIM-SM中PIM邻居建立过程以及Assert机制与PIM-DM相同。

    5.2 PIM-SM概述

  • PIM-SM不依赖于特定的单搔路由协议,而是使用现存的单播路由表进行RPF检查.

    • RPF检查根据树的种类进行:使用共享树进行数据接收转发时,使用RP地作为检测地址.
    • 使用源树进行数据接收转发时,使用组播源地址作为检测地址.
  • 组播数据沿着源树转发到RP,然后沿共享树向接收者转发.
  • 共享树的形成:接收者发送IGMP的oin,由DR(最后一跳路由器)创建()项并向RP方向发送PIM Join消息.
  • 源树的形成:组播源发送组播流,通过DR(第一跳路由器)向RP方向转发regster报文,RP收到register报文后,向源发送PIM(S,G) join消息。

    5.3 汇聚点RP(Rendezvous Point)

  • 充当RPT树的根节点.

    • 共享树中的所有组播流量都经过RP转发给接收者.
    • 所有PIM路由器都要知道RP的位置。
  • RP的作用:
    • RP是PIM-SM域中的核心路由器,担当RPT树根节点。
    • 共享树里所有组播流量都要经过RP转发给接收者。
  • 用户通过配置命令限制RP所提供服务的组播组范围。
  • RP可以静态指定也可动态选举:
    • 静态指定是指由管理员在每台PIM-SM路由器上进行配置,使得每台路由器获知RP的位置。
    • 动态选举是指通过专用协议在若干台C-RP(Candidate-RP)中选举产生。管理员需要开启选举协议并配置若干台PIM-SM路由器成为C-RP。
  • RP配置方式建议:

    • 中小型网络:建议选择静态RP方式,对设备要求低,也比较稳定。
    • 如果网络中只有一个组播源,建议选择直连组播源的设备作为静态RP,这样可以省略源端DR向RP注册的过程。
    • 采用静态RP方式要确保域内所有路由器(包括RP本身)的RP信息以及服务的组播组范围全网一致。
    • 大型网络:可以采用动态RP方式,可靠性高,可维护性强。
    • 如果网络中存在多个组播源,且分布密集,建议选择与组播源比较近的核心设备作为C-RP;如果网络中存在多个用户,且分布密集,建议选择与用户比较近的核心设备作为C-RP。

      5.4 RP(Rendezvous Point)发现

  • 在PIM-SM组播网络里,担当共享树树根的节点称为RP (Rendezvous Point) 。

  • RP的作用:
    • 1、共享树里所有组播流都通过RP转发到接收者。
    • 2、RP可以负责几个或者所有组播组的转发,网络中可以有一个或多个RP 。用户通过配置命令,可以限制RP只为IP地址在一定范围的组播组服务。一个RP可以同时为多个组播组服务,但一个组播组只能对应一个RP。所有该组成员和向该组发送组播数据的组播源都向唯一的RP汇聚。
  • RP的发现:
    • 1、静态RP:在PIM域中的所有PIM路由器上逐一进行配置,静态指定RP。
      • static-rp rp-address 指定静态RP的IP地址。
    • 2、动态RP:在PIM域内选择几台PIM路由器,配置成为C-RP(Candidate-RP),最后从C-RP中竞选产生RP。
      • 使用动态RP,必须同时配置C-BSR(Candidate-BootStrap Router)。由C-BSR竞选产生BSR。

rp是pim-sm域中的核心路由器,路由组播数据创建的共享树是以rp为树根的,从组播组到rp存在一个映射,一个组播组映射到一个rp上,不同的组可以映射到同一rp上。
在小型并且简单的网络中,组播信息量少,全网络仅依靠一个rp进行信息转发即可,此时可以在sm域中各路由器上静态指定rp位置。
但是更多的情况下,pim-sm网络规模都很大,通过rp转发的组播信息量巨大,为了缓解rp的负担同时优化共享树的拓扑结构,不同组播组应该对应不同的 rp,此时就需要自举机制来动态选举rp,此时需要配置自举路由器bsr(bootstrap router)。

  • bsr是pim-sm网络里的管理核心,主要负责:

    • 负责收集网络中candidate-rp(c-rp)发来的advertisement宣告信息。
    • 为每个组播组选择部分c-rp信息以组成rp-set集(即组播组和rp的映射数据库)。
    • 发布到整个pim-sm网络,从而使网络内的所有路由器(包括dr)都会知道rp的位置。
    • 在一个pim域中,需要配置一个或多个候选bsr,候选bsr之间通过自动选举,产生自举路由器bsr,负责收集并发布rp信息。下面简单描述一下候选bsr之间的自动选举:
      • 在将路由器配置为候选bsr时,必须同时指定一个启动了pim-sm的接口。
      • 每个候选bsr开始都认为自己是本pim-sm的bsr,并使用这个接口的ip地址作为bsr地址,发送自举报文(bootstrap message)。

        5.5 RP发现

  • 在PIM-SM组播网络里,担当共享树的树根的节点被称为RP

  • RP的作用
    • 共享树里所有组播流都通过RP转发到接收者
    • RP可以负责几个或者所有组播组的转发,所以网络中可以有一个到多个RP(负责不同的组播组)
  • 如何发现RP
    • 在DR和叶子路由器以及组播数据流将要经过的所有路由器上手工指定RP的IP地址
    • 利用BootStrap协议动态选举RP

路由器上静态指定RP位置。但是更多的情况下,PIM-SM网络规模都很大,通过RP转发的组播信息量巨大,为了缓解RP的负担同时优化共享树的拓扑结构,不同组播组应该对应不同的RP,此时就需要自举机制来动态选举RP,配置自举路由器BSR(BootStrap Router)。

5.6 RPT及其建立过程

组播路由协议 - 图15

  • RPT的建立过程:
    • 1.主机加入某个组播组时,发送IGMP成员通告。
    • 2.最后一跳路由器(DR)向RP发送(*,G)Join消息。
    • 3.(,G)Join消息到达RP的过程中,沿途各路由器都会生成相应的(,G)组播转发条目。
  • RPT实现了组播数据按需转发的目的,减少了数据泛洪对网络带宽的占用。

    5.7 组播接收者侧DR与组播源侧DR

    组播路由协议 - 图16

  • 运行PIM-SM的网络,都会进行DR(Designated Router)的选举。其中有两种DR分别称为接收者侧DR和组播源侧DR。

    • 组播接收者侧DR:与组播组成员相连的DR,负责向RP发送(*,G)的Join加入消息。
    • 组播源侧DR:与组播源相连的DR,负责向RP发送单播的Register消息。
  • PIM-SM中DR的选举原则与PIM-DM相同。

    5.8 DR选举

  • DR的作用;

  • 借助Hello消息可以为共享网络(如EthernetF)选举DR(DesignatedRouter)
  • 无论是和组播源连接的网络,还是和接收者连接的网络,只要网络为共享媒介则都需要选举DR

    • 接收者侧DR向RP发送Join
    • 加入消息组播源侧DR向RP发送Register注册消息和转发组播报文

      5.9 SPT的建立过程

      组播路由协议 - 图17
  • 如图所示,在PIM-SM网络中,任何一个新出现的组播源都必须首先在RP处“注册”,继而才能将组播报文传输到组成员。具体过程如下:

    • 1.组播源向组播组发送第一个组播报文。
    • 2.源端DR将该组播报文封装成Register报文并以单播方式发送给相应的RP。
    • 3.RP收到注册消息后,一方面从Register消息中提取出组播报文,并将该组播报文沿RPT分支转发给接收者。
    • 4.另一方面,RP向源端DR发送(S,G)Join消息,沿途路由器上都会生成相应(S,G)表项。从而建立了一颗由组播源5.至RP的SPT树。
    • 6.SPT树建立后,组播源发出的组播报文沿该SPT转发至RP。
    • 7.RP沿SPT收到该组播报文后,向源端DR单播发送Register-stop消息。

      5.10 (*,G)与(S,G)条目关系

      | 模式 | 类型 | 使用场景 | | —- | —- | —- | | PIM-DM | (S,G) | 第一跳路由器到最后一跳路由器的SPT。 | | PIM-SM | (*,G) | RP到最后一跳路由器的RPT。 | | | (S,G) | 源端DR到RP的SPT。 | | | (S,G) | Switchover之后,从第一跳路由器到最后一跳路由器的SPT。 |

5.11 PIM-SM的转发树

组播路由协议 - 图18

  • PIM-SM同时包含了SPT和RPT。通常情况下,组播源发出的组播报文会沿SPT到达RP,然后从RP沿RPT到达接收者。
  • 在这种情况下,从组播源到接收者的路径不一定是最优的,并且RP的工作负担非常大。为此,我们可以启用RPT向SPT进行的切换机制。

    5.12 Switchover机制

    组播路由协议 - 图19

  • PIM-SM通过指定一个利用带宽的SPT阈值可以实现RPT到SPT的切换。

  • 用户端DR周期性检测组播报文的转发速率,一旦发现从RP发往组播组G的报文速率超过阈值,则触发SPT切换:
    • 用户端DR逐跳向源端DR发送(S,G)Join报文并创建(S,G)表项,建立源端DR到用户端DR的SPT。
    • SPT建立后,用户端DR会沿着RPT逐跳向RP发送剪枝报文,收到剪枝报文的路由器将(*,G)复制成相应的(S,G),并将相应的下游接口置为剪枝状态。剪枝结束后,RP不再沿RPT转发组播报文到组成员端。
    • 如果SPT不经过RP,RP会继续向源端DR逐跳发送剪枝报文,删除(S,G)表项中相应的下游接口。剪枝结束后,源端DR不再沿“源端DR-RP”的SPT转发组播报文到RP。
  • 在VRP中,缺省情况下连接接收者的路由器在探测到组播源之后(即接收到第一个数据报文),便立即加入最短路径树,即从RPT向SPT切换。
  • 通过RPT树到SPT树的切换,PIM-SM能够以比PIM-DM更精确的方式建立SPT转发树。

    5.13 SPT切换条件

  • 当信息吞吐率超过预定的值时,PIM-SM就会从共享树切换到组播源路径树.

  • 缺省情况下,连接接收者的路由器(最后一跳路由嚣)在探测到组褶源之后(即接收到第一个数据报文),便立即加入最短路径树(源树),即从RPT向SPT切换。

    5.14 PIM-SM配置实现

    组播路由协议 - 图20

    5.15 PIM-SM配置验证

    组播路由协议 - 图21

    6 PIM-SM表项维护

    6.1 PIM SM(*,G)状态规则

  • 按需创建,要么作为直连主机加入组的结果而创建,要么是从下游路由器接收到()加入消息而创建.

  • PIM SM (*G) 条目的入接口总是朝向RP的方向来建立共享树.(华为设备中只存在在共享树中)
  • 与DM不同的是,SM里(*G)表项可以用来转发组播流量。
  • 稀疏模式 (*,G)项是作为显式加入操作的结果而创建的。
  • 稀疏模式 (*,G)项的入口总是指向 RP 的共享树。

    6.2 PIM SM (S,G)状态规则

    在下列条件下,将创建SM(SG)表项:

  • 接收到一条(S,G)加入消息 / 剪枝消息.

  • 当最后一跳路由器切换到SPT时
  • 当不存在时,意外的(S,G)流量到达时
  • 当RP上收到一条注册(Register)信息时

    6.3 PIM SM 状态维护

    在有接收者的情况下;
    共享树里(*,G)表项永不超时,下游接口计时器永不超时,定期更新.
    SPT树里(S,G)表项如果有持续流量存在的话,(S,G)表项不会超时。(所有途径路由器))
    SPT树里(S,G)下游接口接口计时器会被定期发送的join信息刷新,永不超时。

    6.4 PIM SM 状态维护

  • 在没有接收者的情况下:

  • 在有流量的情况下,全网只有第一跳路由器和RP有(S,G)表项,并且不会超时.
  • 没有流量,没有意义。

配置静态组播组:

  • 在某些特殊的应用场景中,比如:网络中存在稳定的组播组成员;主机无法发送报告报文,但是又需要将组播数据转发到该网段。
  • 为了实现组播数据的快速、稳定转发,或者将组播数据引流到接口,可以在组播路由器的用户侧接口上配置静态组播组。在接口上配置静态组播组后,组播路由器就认为此接口网段上一直存在该组播组的成员,从而转发该组的组播数据。
  • 当成员主机无法解析组播ping报文并作出回应时,可以在组播路由器的用户侧接口上配置组播ping功能。这样,接口除了正常接收组播数据之外,还可以对收到的组播ping报文作出回应,从而使定位问题更加灵活、方便。

    运行机制

    组播路由协议 - 图22