HCIE-Multicast专题(2020.08.04,第3专题)


组播内容
DM:密集模式
SM:稀疏模式
ASM:任意源组播
SSM:指定源组播

IP组播基础

二层组播协议:STP、VTP、CDP、LLDP、DTP、EC、ISIS等
三层组播协议:OSPF(224.0.0.5和224.0.0.6)、EIGRP(224.0.0.10)、VRRP(224.0.0.18)、RSVP(224.0.0.14)、IGMPv3(224.0.0.22)、dhcp(224.0.0.12)、RIPv2(224.0.0.9)等

单播、组播、广播的区别:IP组播可以将相同的数据流分发到位于不同广播域中的不同主机

组播的出现,主要解决了网络中用户数量不确定的问题。
IP组播技术实现了IP网络中点到多点的高效数据传送,能够有效地节约网络带宽、降低网络负载,在实时数据传送、多媒体会议、数据拷贝、游戏和仿真等诸多方面都有广泛的应用。

  • 单播
    单播
  • 广播
    广播
  • 组播
    组播
    • 组播组:用IP组播地址进行标识的一个集合。任何用户主机(或其他接收设备),加入一个组播组,就成为了该组成员,可以识别并接收发往该组播组的组播数据。
    • 组播源:信息的发送者称为“组播源”。一个组播源可以同时向多个组播组发送数据,多个组播源也可以同时向一个组播组发送报文。组播源通常不需要加入组播组。
    • 组播组成员:所有加入某组播组的主机便成为该组播组的成员。组播组中的成员是动态的,主机可以在任何时刻加入或离开组播组。组播组成员可以广泛地分布在网络中的任何地方。
    • 组播路由器:支持三层组播功能的路由器或交换机。组播路由器不仅能够提供组播路由功能,也能够在与用户连接的末梢网段上提供组播组成员的管理功能。
    • 叶路由器:组播网络边缘,直接面对接收者的路由器

概述

优势

  • 提高效率:降低网络流量、减轻硬件负荷
  • 优化性能:减少冗余流量、节约网络带宽、降低网络负载
  • 分布式应用:使多点应用成为可能

劣势

  • 组播是基于UDP的
  • 尽力而为
  • 没有拥塞避免机制
  • 报文重复
  • 报文失序

应用

  • 多媒体
  • 培训、联合作业场合的通信
  • 数据仓库、金融应用(股票)
  • 任何的“单到多”数据发布应用

组播地址结构

组播IP地址

一个组播组就是一个IP地址,不表示具体的主机,而是表示一系列系统的集合,主机加入某个组播组
即声明自己接收目的为某个IP地址的报文
IP组播组地址224.0.0.0–239.255.255.255,“D”类地址空间,第一个字节的高四位为“1110

组播IP模型分类

  1. ASM(Any-Source Multicast)任意组播源
    ASM模型就是任意源组播模型。在该模型中,任意发送者都可以成为组播源,向某组播组地址发送信息。众多接收者通过加入由该地址标识的主机组,从而接收到发往该组播组的所有信息。在ASM模型中,接收者无法预知组播源的地址,接收者可以在任意时间加入或者离开该主机组。
  2. SFM(Source-Filtered Multicast)
    SFM模型继承了ASME模型,从发送者角度来看,组播组成员关系完全相同。SFM在功能上对ASM进行了扩展:上层软件对接收到的组播报文的源地址进行检查,允许或禁止来自某些组播源的报文通过。最终,接收者只能接收来自部分组播源的数据。从接收者角度来看,只有部分组播源是有效的,组播源经过了筛选。
  3. SSM(Source-Specific Multicast)指定源组播
    SSM模型针对特定源和组的绑定数据流提供服务,接收者主机在加入组播组时,可以指定只接收哪些源的数据。加入组播组以后,主机只会收到指定源发送到该组的数据。SSM模型对组地址不再要求全网唯一,只需要每个组播源保持唯一。这里的“唯一”指的是同一个源上不同的组播应用必须使用不同的SSM地址来区分。不同的源之间可以使用相同的组地址,因为SSM模型中针对每一个(源,组)信息都会生成表项。这样一方面节省了组播组地址,另一方面也不会造成网络拥塞

组播IP地址分类

  1. 永久组地址
    IANA为路由协议预留的组播地址,用于标识一组特定的网络设备(也称为保留组播组)。例如:224.0.0.5是OSPF路由器。永久组地址保持不变,组成员的数量可以是任意的,甚至可以为零。
  2. 临时组地址
    为用户组播组临时分配的IP地址,组成员的数量一旦为零,即取消。
    组播IP地址分类
  3. 常见的永久组地址列表
    常见的永久组地址列表
    专用地址(224.0.0.0-224.0.0.255)用于网络协议组的广播;公用地址(224.0.1.0-238.255.255.255)用于全球网络组播;私用地址(239.0.0.0-239.255.255.255)用于本地测试、局域网使用。 ASM(任意源组播)地址为(224.0.1.0-231.255.255.255、33.0.0.0.0-238.255.255.255.255);SSM(指定源组播)地址为(232.0.0.0.0-232.255.255.255.255),全网用在IPv6协议中,第一个字节必须是0xFF。

组播MAC地址

组播MAC地址
IANA规定,组播MAC地址的高24bit为0x01005e,第25bit固定为0,低23bit为组播IP地址的低23bit。就以太网而言,IP组播帧都使用以0x0100.5Exx.xxxx的24位前缀开始的MAC层地址。

IP地址到MAC地址的映射

需要将组播IP地址映射到组播MAC地址。组播MAC地址的高24bit为0x01005e,MAC地址的低23bit为组播IP地址的低23b。
IP地址到MAC地址的映射

映射导致的问题

存在当第3层IP地址映射成第2层MAC地址时导致32:1的地址不明确问题(原因:第25bit固定为0,IP地址32bit,只映射后23bit),如下图:
映射导致的问题
因此在规划组播网络的时候,为防止出现相同的组播MAC,需要组播IP的后23bit不相同。

组播基本原理

组播相关协议

组播协议包括用于主机注册的组播组管理协议,和用于组播选路转发的组播路由协议。组播相关协议有IGMP、PIM、MSDP、MBGP
组播相关协议

  • IGMP
    接收者与叶路由器之间交互的一个协议,帮助叶路由器确定该接口下是否还有需要组播流的接收者。IGMP协议在主机端实现组播组成员加入与离开,在上游的三层设备中实现组成员关系的维护与管理,同时支持与上层组播路由协议的信息交互。
  • PIM
    协议无关组播。无关乎单播协议是什么,也无关乎组播路由协议是什么。在组播路由器之间建立PIM的邻居关系,能够根据规则产生组播路由表。用于组播路由器之间。PIM协议包括PIM-SM(稀疏模式)和PIM-DM(密集模式)。PIM-SM适合规模较大、组成员相对比较分散的网络;PIM-DM适合规模较小、组播组成员相对比较集中的网络。在PIM-DM模式下不需要区分ASM模型和SSM模型。在PIM-SM模式下根据数据和协议报文中的组播地址区分ASM模型和SSM模型:如果在SSM组播地址范围内,则按照PIM-SM在SSM中的实现流程进行处理。PIM-SSM不但效率高,而且简化了组播地址分配流程,特别适用于对于特定组只有一个特定源的情况。如果在ASM组播地址范围内,则按照PIM-SM在ASM中的实现流程进行处理。
  • MSDP
    MSDP是为了解决多个PIM-SM域之间的互连的一种域间组播协议,用来发现其他PIM-SM域内的组播源信息,远端域内的活动信源信息传递给本地域内的接收者,从而实现组播报文的跨域转发。只有PIM-SM使用ASM模型时,才需要使用MSDP。
  • MBGP
    实现了跨AS域的组播转发。适用于组播源与组播接收者在不同AS域的场景。
  • IGMP Snooping & IGMP Snooping Proxy
    IGMP Snooping功能可以使交换机工作在二层时,通过侦听上游的三层设备和用户主机之间发送的IGMP报文来建立组播数据报文的二层转发表,管理和控制组播数据报文的转发,进而有效抑制组播数据在二层网络中扩散。
    IGMP Snooping Proxy功能在IGMP Snooping的基础上使交换机代替上游三层设备向下游主机发送IGMP Query报文和代替下游主机向上游设备发送IGMP Report和Leave报文,这样能够有效的节约上游设备和本设备之间的带宽。

组播分发树的两个基本类型

用来描述IP组播报文在网络中经过的路径。

源路径树SPT

以组播源作为树根,将组播源到每一个接收者的最短路径结合起来构成的转发树。
每一个组播源与接收者之间建立一棵独立的SPT
这个机制的作用是实现组播流量的最优转发路径
源路径树
特点:路径最优,延迟最小,占用内存较多

共享树RPT

使用放在网络的某些节点的单独的公用根。根据组播路由协议,这个根常被称为汇合点(RP)或核心,因此,共享树也可以称为RPT。
对应某个组,网络中只有一棵树
共享树
特点:路径不是最优的,引入额外的延迟,占用内存较少(单个表项)

组播数据转发

组播路由和单播路由是相反的,单播路由关心数据报文要到哪里去,组播路由关心数据报文从哪里来(防环)。组播路由使用 “反向路径转发”机制(RPF, Reverse Path Forwarding)

反向路径转发RPF

路由器收到组播数据报文后,只有确认这个数据报文是从自身连接到组播源的接口上收到的,才进行转发,否则丢弃。
这个机制的作用是防止组播流量转发环路
RPF检查:在单播路由表中查找到组播报文源地址的路由,如果该路由的出接口就是组播报文的入接口【即确保组播流的入接口是单播路由的出接口】,RPF检查成功;否则RPF检查失败,报文丢弃

  • RPF举例
    RPF举例
  • 组播转发RPF举例
    组播转发RPF举例1
    组播转发RPF举例2

华为RPF检查过程

除单播路由外,MBGP路由、组播静态路由也是RPF检查的依据。当路由器收到一份组播报文之后,如果这三种路由表都存在,具体检查过程如下:

  1. 首先,通过报文源地址,分别从单播路由表、MBGP路由表和组播静态路由表中各选出一条最优路由。单播路由、MBGP路由的出借口为RPF接口,下一条为RPF邻居。需要注意的是,组播静态路由实际上属于手工配置的组播路由,已经明确制订了RPF接口与RPF邻居
  2. 然后,根据以下原则从这三条最优路由中选择一条作为RPF路由
    1. 如果配置了按照最长匹配选择路由
      1. 从这三条路由中选出最长匹配的那条路由
      2. 如果这三条路由的掩码一样,则选择优先级最高的那条路由
      3. 如果优先级也相同(即手工修改了协议优先级),则按照组播静态路由>MBGP路由>单播路由的顺序进行选择
    2. 如果没有配置最长匹配选择路由
      1. 从者三条路由中选出优先级最高的那条路由(默认参考原则)
      2. 如果优先级相同,则按照组播静态路由>MBGP路由>单播路由的顺序进行选择
  3. 最后,路由器会将报文的入接口与RPF路由的RPF接口进行比较。如果一样则RPF检查通过,表明报文来源路径正确,会将其向下游转发;如果不一致即RPF检查失败,表明该报文来源路径错误,就将其丢弃。
  4. 静态组播路由的优先级为1,BGP可以在不同地址族进行修改
    【总结】:如果同时存在关于组播源地址的组播静态、组播BGP、单播路由,默认情况下,按照组播静态>组播BGP>单播路由的顺序进行选择
面试回答(条理清晰)
  1. 默认情况下采用优先级选取路由来进行RPF检查
  2. 如果配置了最长匹配选择路由,则从这三条路由中选出最长匹配的那条路由,命令为multicast longest-match
    1. 如果前缀和掩码相同,则选取路由优先级最高的路由
    2. 如果前缀、掩码、优先级都相同,按照组播静态路由、组播BGP路由、单播路由的顺序选择
  3. RPF检查可以根据源地址或者是RP的地址进行检查

相关协议

IGMP 互联网组管理协议

  • 运行在接收者与叶路由器之间,用于维护组播网络中叶路由器是否需要向特定接口转发组播流。三个版本 v1(RFC1112)、v2(RFC2236)、v3(RFC3376、4604)。v2比较常用,v1、v2、v3 均支持ASM,v3主要是针对SSM模型做有力支撑。
  • IGMP协议是主机和路由器之间的协议。主机通过IGMP协议向组播路由器报告自己想加入的组;路由器通过IGMP协议查询网段山是否还有特定组的成员
  • 主机跟路由器之间的组控制协议对IPv6有连个版本:MLDv1和MLDv2

v1

报文格式
报文格式
  • Version:表示版本标识,版本1为1,版本2没有这个字段,在RFC988中说明,这个字段已经废弃
  • Type:版本1只有成员关系查询(membership query,0x11)和成员关系报告(membership report,0x12),没有特定的组关系查询,也没有主机发送的离开报告
  • 组地址:当一个成员关系报告正被发送时,组地址字段包含组播地址;当用于成员关系查询时,本字段为0,并被主机忽略
    版本1不能设定响应时间,所有的响应时间都是默认的10秒,这容易引起响应突发。版本1成员离开的时候是默默离开的,不发送离开报告,这样离开延迟比较大,也不会引起特定的组查询,因此v1版本的路由器会周期性(60s)的查询是否还有接收者。
组成员加入过程

当一个主机希望接收一个组播组的数据,则发送成员加入报告给组播组,该报文中组地址为主机想加入的组播组的地址
组成员加入过程

组播路由器的查询与响应
  1. IGMP查询器周期性的向共享网段内所有主机以组播方式(目的地址为224.0.0.1)发送成员关系查询消息(组地址为0)
  2. 网络内所有主机都接收到该查询消息,如果某主机对某一组播组(比如,组播组G)感兴趣,则以组播方式发送“成员关系报告”报文(其中携带组播组G的地址)来宣告自己将加入该组播组,假设PC2首先发送此报告
  3. 经过查询/响应过程后,IGMP路由器了解到本网络内存在组播组G对应的接收者,生成(*,G)【*表示任意组播源,G表示某个组播组】组播项并依据此作为组播信息的转发依据
    组播路由器的查询
    IGMPv1规定,当共享网络中有多台路由器时,由组播路由协议选举查询器。不同的组播路由协议有不同的选举机制。IGMP查询器选举,由组播协议决定,如果是PIM协议,PIM的DR将做为查询器
    224.0.0.1-代表所有的组播节点;224.0.0.2-代表所有的组播路由器
响应抑制机制

IGMP成员关系查询报文的目的地址为224.0.0.1,就是说网段内所有的设备都会收到该查询报文。但并不是所有收到该报文的主机都会响应查询请求的。下图中只有一个主机会以成员关系报告报文响应,而其它主机则抑制成员关系报告的发送。
响应
实际上主机收到IGMP成员关系查询时,会对它已经加入的每个组播组启动一个倒计数报告计时器。IGMPv1中计时器固定使用10s。计时器到时的主机则主动发送成员关系报告,组地址为该组播组地址,目的地址为224.0.0.1。于是网段内其他主机都会收到该成员关系报告报文,接收到成员关系报告报文的主机抑制成员关系报告的发送,并删除计时器。当路由器周期性的发送成员关系查询报文时,每个主机都会再次启动计时器进行查询\响应\抑制。

组成员离开

华为周期为130秒(思科默认为3个周期,即180s)
成员悄悄离开组播组,不发送任何报文,路由器依旧周期性的发送成员关系查询报文,周期为60s,当路由器发送3次成员关系查询报文都没欧收到响应的成员关系报告报文时,路由器认为组内已经没有成员,不再向该网段转发组播报文。
组成员离开

举例

举例
主机加入组播组的基本过程如下:

  1. IGMP 查询器(RouterB)周期性地向共享网段内所有主机以组播方式(目的地址为组播地址)发送普遍组Query 查询消息。该报文的目的地址为224.0.0.1,表示该网段上的所有主机和路由器。
  2. 网段内所有主机都接收到该普遍组查询消息。如果主机(如HostB 和HostC)希望加入某组播组G1,则以组播方式发送Report 报告。该报文的目的地址为224.0.0.1,报文中携带组播组G1 的地址信息。
  3. 网段中所有主机和路由器都接收到该Report 报告,并获知组播组G1 地址信息,此时网段中其它也希望加入该组播组G1 的主机将不再发送针对相同组播组的Report 报告。同时,网段中预备加入另一组播组G2 的主机发送针对组播组G2 的Report 报告以响应普遍组查询消息。
  4. 经过查询和响应过程后,IGMP 路由器了解到本网段内存在组播组G1 对应的组播组成员,则由组播路由协议生成(*,G1)组播转发项并以此作为组播数据的转发依据。之后,组播路由协议将发起上游路由更新以维护组播转发树。
  5. 组播源发出的组播数据经过组播路由到达IGMP 路由器,如果IGMP 路由器上存在(*,G1)组播转发项,则转发该组播数据到此共享网段,G1 组播组成员主机接收该数据。
  6. IGMPv1 中没有专门定义离开组播组的消息。当主机离开某组播组后,将不再发送以此组播组地址为目的地址的Report 报告。当网段中不再存在该组播组成员后,IGMP 路由器将不能收到任何针对此组播组的Report 报告,则IGMP 路由器删除该组播组对应的转发项。

v2

报文格式

报文格式
IGMPv2报文相比IGMPv1报文,取消了版本字段而相应增加了最大响应时间的字段
IGMPv2支持特定组查询、增加了离组消息(增加了触发查询机制)、报告抑制机制优化了

  • 最大响应时间:仅用于组成员关系查询时主机可以响应查询,返回报告的时间范围,可以适当调高,给主机足够的响应时间。以0.1秒为单位,默认值是100,即10秒
  • 组地址:
    • 在成员查询消息中,发送一个常规查询报文时组地址为0,当发送一个特定组的查询报文时,则设置为该组的地址。
    • 在成员报告或离开组的消息中,目的地址是224.0.0.2则为所有的组播路由器,但华为设备上实现为特定组
  • 类型:IGMPv2报文中有三种报文类型:
    • Type=0x11:成员关系查询报文,分为两种子类型:
      • 常规查询:用于确定哪些组播组是有效的,即该组是否还有成员在使用,常规查询组地址全零
      • 特定查询:用于查询特定的组播组是否还有组成员,组地址为特定的组播地址
    • Type=0x16:IGMPv2组成员关系报告
      • 为了和IGMPv1兼容,还有另外的一个附加消息类别:0x12为IGMPv1成员报告
    • Type=0x17:离开组消息,主机发送的离开报告
组成员加入

当一个主机加入一个组播组,则应该立即发送一个或多个成员关系报告给组播组
组成员加入

查询与响应

与IGMPv1相同,都存在抑制机制。
增加了最大响应时间来指定延时值来规定所有主机的查询响应延时的上限,此外最大响应时间在IGMP查询器(选举原则则为IP地址小的设备)上配置,只应用在成员关系查询信息。
在常规查询之外增加了特定组查询,这种查询报文的目的IP地址为某个组播组的IP地址,保温中的组地址字段也为该组播组的IP地址,网络中属于该组播组成员的主机才会进行响应,这样就避免了属于其他组播组成员的主机发送响应报文
查询与响应

查询器选举

查询器选举
查询器也会有失效的时间,当查询器失效时,另一个路由器成为查询器,所以非查询路由器会启动一个查询计时器,周期检查IGMP查询路由器的状态,缺省情况下为120秒,但是查询路由器的死亡时间为125秒

组成员离开

组成员离开
当一个主机决定离开一个组播组时,他会向所有组播路由器以组播的形式(224.0.0.2)发送离开组消息,为了明确该组播组中是否还包含其他成员主机,该组播路由器会向网络中发送特定组查询消息。
在查询的最大响应时间内(默认为1s)没有收到该组的报告,则再次发特定组查询。2次特定组查询之后仍然没有收到成员报告,则认为该组播成员全部离开。

v1和v2的互操作性

v2主机与v1路由器

 v2主机与v1路由器
v1路由器把v2报告看作无效的IGMP信息类型并且忽略它
当v1路由器作为有效的IGMP查询器时,v2的主机必须发送v1报告。
当v2的的主机检测出IGMP查询器时v1的路由器时,他必须始终用v1报告作出响应。在这种情况下,v2的主机也可以抑制发送离开组消息。
为了维护接口的状态,无论何时v1查询在接口处被收到,v2主机会启动一个400秒的倒数计时器向下兼容v1),当另一个v1查询被收到时,计时器被复位。如果计时器到时,此接口恢复成为v2接口并且v2信息被再次发送。

v1主机与v2路由器

v1主机与v2路由器
局域网中v1的主机也是同一组成员,那么该组的v1报告总是被收到,因为v2报告在v1的主机中不会被抑制,v1的主机不兼容v2的报告,因此忽略它们。无论何时,只要v1的主机成为组成员,v2离开过程都将被搁置

混合版本

混合版本
如果一些运行v1的路由器存在于子网中,那么必须强制性地为子网中的所有路由器配置v1以便正常使用

组播节点分为三个类型:

不支持主机侧(报告)、不支持路由侧(查询),(即不支持开启IGMP)但是可以做为组播源
支持主机侧、不支持路由侧
支持主机侧、支持路由侧

v3

服务于SSM模型;允许主机指定接收某些网络发送的某些组播组;增加了主机的控制能力,不仅可以指定组播组,还能指定组播的源

工作机制

工作机制
v3响应消息的目的地址为224.0.0.22(代表所有运行v3的路由器),其中可以携带至少一个组记录,在每个组记录中,包含组播组地址、数目不等的源地址信息。
组记录可以分为多种类型,如

  • 当前状态记录,报告了接口当前状态,分为Include和Exclude两种状态类型
    • Include表示包含指定源地址列表,Exclude表示包含除指定源地址之外的所有源地址
  • 过滤模式改变记录,报告接口接收状态在Include和Exclude之间的切换
  • 源地址列表改变记录:报告新源地址加入或者删除某源地址
改进之处

改进之处
v3不仅支持v1的普遍组查询、v2的特定组查询,还支持v3的指定源/组查询。在IGMP消息中携带组播源地址和多种控制字段(如查询器强壮性系数、查询间隔等)。
对于普遍组查询,既不携带组地址(0.0.0.0),也不携带源地址;对于特定组查询,携带组地址,但是不携带源地址;对于指定源/组查询,既携带组地址,而且还携带至少一个源地址

IGMP三个版本的比较
三个版本的比较

PIM(协议无关组播)

PIM称为协议无关组播,表示组播依靠的单播路由可以由静态路由、RIP、OSPF、ISIS、BGP等提供,组播路由和单播路由协议无关,只要单播路由协议产生所需路由表项能够完成RPF检查即可。
协议号为103(0x67),目前使用的是v2版本,PIM路由器目的组播地址为224.0.0.13,PIM协议分为PIM-DM密集模式和PIM-SM稀疏模式。

PIMv2报文头格式

报文头格式
  • 版本:版本字段标识版本信息,目前为2
  • 报文类型:
    • 0:Hello(周期30秒,死亡时间105秒)
    • 1:注册(单播)
    • 2:停止注册(SM,单播)
    • 3:加入/剪枝
    • 5:Boostrap(SM)
    • 6:嫁接
    • 7:嫁接确认
    • 8:候选RP公告(SM)
    • 9:状态刷新
      ping一个组播组,有时第一个包通,但是后面的包不通,局势因为第一个包是用来注册的,后面的不通说明组播网络有问题
      优先级值大的选举为DR,具备抢占性,组播地址为224.0.0.13,使用hello报文进行选举。

PIM-DM(Dense_mode,密集模式)

概述

  • 采用“推(Push)模式”转发组播报文,因此此模式只关心两件事:哪些接口开启了PIM-DM模式;RPF检查。采用推的机制的目的是在DM中产生组播路由表,现有组播路由表再去推组播流
  • PIM-DM的关键任务:建立SPT(Shortest Path Tree,最短路径树)
  • PIM-DM的工作机制
    • 邻居发现
      邻居发现
    • 泛洪:为了确保所有可能存在的接收者都感知到组播源
    • 扩散:为了后来可能出现的需要流量的枝杈,即重新泛洪(180s倒计时)
      扩散
    • 剪枝:剪枝是为了优化成SPT,剪枝行为是由下游设备发起。剪枝延迟,上游设备收到剪枝消息,默认延迟3秒再剪枝。剪枝后形成SPT树
      剪枝
      SPT树的形成:
      SPT树的形成
    • (剪枝)状态刷新
    • 嫁接:针对在剪枝之后出现的接收者向上请求组播流,下游设备向上发嫁接消息,上游设备向下发嫁接确认。嫁接之后形成新的SPT树
      嫁接
      新的SPT树形成:
      新的SPT树形成
    • 断言(声明/Assert机制):避免流量重复拷贝。
      竞选规则如下:单播路由协议优先级较高者获胜。如果优先级相同(即本质是最先比较的是开销,可以在同一协议下不同接口上配置不同的cost),则到组播源的开销较小者获胜。如果以上都相同,则下游接口IP地址最大者获胜。
      根据Assert竞选结果,路由器将执行不同的操作:获胜一方的下游接口称为Assert Winner,将负责后续对该网段组播报文的转发;落败一方的下游接口称为Assert Loser,后续不会对该网段转发组播报文,PIM路由器也会将其从(S,G)表项下游接口列表中删除,所有Assert Loser可以周期性的恢复组播报文转发,从而引发周期性的Assert竞选
      断言
  • 协议假设:网络中的每个子网都存在至少一个对组播源感兴趣的接受站点,因此组播数据包被扩散到网络中的所有网段。因此适应于小型网络
  • PIM-DM对没有组播数据转发的分支进行Prune剪枝操作,只保留包含接收者的分支(如果没有消费者即接收者,暂时中断该区域)
  • 为了使剪掉的有组播数据转发需求的分支能够重新接收组播流数据,剪掉的分支周期性的恢复成转发状态(即定期考察市场契机)
  • 为了减少等待被剪掉的分支恢复成转发状态的延时时间,PIM-DM使用Graft嫁接机制主动恢复组播报文的转发
  • PIM-DM域中数据包的转发路径是有源树
    • 以组播源为根,组播组成员为枝叶的一棵树
    • 由于有源树使用的是从组播源到接收者的最短路径,因此也称为最短路径树SPT(取消了中间商渠道,是消费者到生产商的直供式服务)
  • PIM-DM不依赖于特定的单播路由协议,而是使用现存的单播路由表(可以是任意路由协议)进行RPF检查
  • 路由器收到组播数据的接口称为上游接口,转发组播数据的接口称为下游接口

报文

Hello报文

Hello报文
组播路由器需要使用Hello消息来发现邻居,并维护邻居关系。
Holdtime定时器为105秒,这个定时器指示接收方何时终止与发送方的邻接关系。
priority通过比较Hello消息上携带的优先级(越高越优)和IP地址(越大越优),各路由器为各网段选举指定路由器DR

总结与评价

  • PIM-DM对于小型网络来说非常有效
  • 优势:
    • 易于配置
    • 实现机制简单:泛洪--扩散--剪枝--嫁接--断言
  • 潜在问题:
    • 扩散剪枝过程不够高效
    • 复杂的Assert机制
    • 不支持共享树【共享树不用于转发数据,其入接口为NULL,仅用于产生(S,G),这是和SM模式的重要区别】
    • 控制和数据平面混合导致网络内部的所有路由器上都由(S,G)表项存在【一旦有任意组播源出现,所有设备会自动生成表项,占用内存】

PIM-SM

基本概述

  • 术语:
    • 源:发送组播数据的终端主机或PC
    • 接收者:接收组播数据的终端主机或PC
    • 指定路由器(向RP注册):在共享网段上选举优先级最高(数值最大)或者IP地址最大的路由器为DR;源DR(注册)负责将数据从源转发至RP;接收者DR(发送join),负责将数据从RP转发到接收者或称最后一跳DR
    • 汇聚点RP:接收者从这里获取源信息,并且是共享树的根,是SM中的核心解决方案
    • RPT:从接收者DR到RP逐跳建立起来的,以RP为根的共享树。RPT实现了组播数据按需转发的目的,减少了数据泛洪对网络带宽的占用
    • SPT:从接收者DR到源DR建立起来的,以源为根的最短路径树
  • 使用“拉(Pull)模式”转发组播报文,从接收者开始向RP方向尝试拉取组播流。先有组播路由表,后有组播流
  • 适用于组播成员分布较为稀疏的网络环境
  • PIM的DR在SM中源一侧和接收者一侧的DR都有了实际意义。组播源一侧的DR负责数据的转发 (注册);接受者一侧的DR负责向下转发数据以及向上发送 join
  • PIM-SM的关键任务
    • 建立RPT(Rendezvous Point Tree,汇聚点树也称共享树):以RP为根,以及所有拥有接收者的叶路由器和接收者共同形成的分发树。
      • 接收者通过IGMP向叶路由器报告组播流需求,叶路由器产生(*,G)
      • SM要求整个组播网络的所有参与路由器都需要知道RP的位置
      • 叶路由器向RP方向做RPF检查,从RPF邻居接口向上游发送PIM的join消息
      • 上游路由器产生(*,G) ,同时向上传递join消息,直至RP
    • 建立SPT(源路径树,为了RPT区分,此处称为源路径树):包含组播源,是从组播源到RP的最短路径树
      • 第一跳路由器最先感知到组播流和组播源,将执行注册,将组播流封装在单播报文中,单播转发至RP ,向RP注册组播源地址
      • RP主动向着组播源方向发起PIM join(S,G),这个过程会形成SPT
      • 注册停止,当SPT 建立完毕,第一跳路由器将能够沿着SPT向下转发组播流,当RP收到来自SPT的组播流,将单播向第一跳路由器发送注册停止消息
      • 第一跳路由器收到注册停止消息,停止发送注册报文
        此时,SM中RPT也负责转发组播流,但是,目前为止,组播的转发路径依然不是最优的
    • 建立SPT(Shortest Path Tree,最短路径树):
      • 当叶路由器接收到组播流,将感知到组播源地址,默认的情况下,叶路由器会立刻触发一个叫做SPT切换的过程
      • 叶路由器将根据感知到的组播源地址,针对组播源做RPF检查。向着源方向做(S,G) join,完成后组播流将沿着SPT转发

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

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

  • 组播接收者侧DR:与组播组成员相连的DR,负责向RP发送(*,G)的Join加入消息,负责将数据从RP转发到接收者或称最后一跳DR。
  • 组播源侧DR:与组播源相连的DR,负责向RP发送单播的Register消息,负责将数据从源转发至RP。
    PIM-SM中DR的选举原则与PIM-DM相同【优先级值越大越优先,IP地址越大越优先】。

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

条目关系

PIM-SM协议机制

邻居发现-->DR选举-->RP发现-->加入-->剪枝-->注册-->SPT

  1. 邻居发现Hello报文,进行DR选举
    邻居发现Hello报文
    DR选举
  2. RPT共享树加入
    RPT共享树加入
  3. 组播源注册过程
    组播源注册过程
  4. 停止注册过程
    停止注册过程
  5. 组播流转发过程
    组播流转发过程
  6. RPT向SPT切换
    RPT向SPT切换
  7. 切换后的组播转发
    切换后的组播转发
  8. 切换后的剪枝
    切换后的剪枝1
    切换后的剪枝2

RP

RP发现

  • 在PIM-SM组播我那个萝莉,担当共享树的树根节点的被称为RP
  • 作用:
    • 共享树里所有组播流都通过RP转发到接收者
    • RP可以负责几个或者所有组播组的转发,所以网络中可以有一个或者多个RP
  • 发现RP
    • 在DR和叶路由器以及组播数据流将要经过的所有路由器上手工指定RP的IP地址
    • 动态选举RP的两种方式:利用Auto-RP(思科私有)、BootStrap协议动态选举RP
    • 正常情况下静态方式弱于动态,可以使用override使得静态优于动态

RP选举原则

  1. 如果PIM-SM域中只有一个候选RP(C-RP),那么这个节点就是域里的RP
  2. 如果域中存在多个C-RP并都拥有不同的优先级时,则优先级最高(优先级数值越小优先级越高)的将会被选举为域中的RP
  3. 如果域中存在多个C-RP并都拥有相同的优先级时,则依靠Hash算法算出的数值来决定RP,数值最大的成为RP。Hash算法参数:组地址;掩码长度;C-RP地址
  4. 如果域中存在多个C-RP并都拥有相同的优先级与Hash数值时,则拥有最大IP地址的C-RP为该域的RP
    C-RP周期(60秒)性发送候选信息,超时时间为150秒,选举规则:服务范围小的、优先级值小的优先级高、hash结果大的、IP地址大的

动态RP(Auto-RP)

  • 动态RP可以提供弹性的网络服务
  • C-RP将候选信息发送至224.0.1.39,周期性(60秒)的发送 ,默认有效期181秒。MA(映射代理,裁决者)侦听 224.0.1.39,裁决地址大的作为RP通过224.0.1.40通告给所有组播网络【候选接口要使能pim】
  • PIMv2用标准的BSR方式公告RP
  • 基于UDP的496端口,同一网络中存在BSR和Auto-RP,则会优选Auto-RP

自举路由器BSR (BootStrap Router)

在PIM-SM网络启动后,负责收集网络内的RP信息,为每个组播组选举出RP,然后将RP集(即组-RP的映射数据库)发布到整个PIM-SM网络的路由器,称之为BSR。
一个PIM-SM域里只有一台BSR,并同时可以存在多台候选BSR(C-BSR)

选举规则

  1. 如果域中只有一台C-BSR,该台路由器就是该域里的BSR
  2. 如果域中存在多台C-BSR,则拥有最高优先级(默认0)的路由器为BSR
  3. 如果域里存在多台拥有相同优先级的C-BSR,则拥有最高IP地址的路由器为BSR

工作流程

  1. 先选出BSR
    C-BSR的消息通过PIM传递,目标地址为 224.0.0.13,选举完成后通过bootstrap消息公告自己是BSR(默认60S),该消息通常情况下TTL为1,但pim路由器会续传该消息。未胜出的C-BSR监听BSR,BSR超时时间默认为130秒
  2. C-RP发送至BSR
    C-RP通过bootstrap消息得知BSR位置,使用单播报文(默认60S)将自身C-RP信息传递给BSR
  3. BSR收集C-RP信息
    BSR收集所有C-RP信息,形成RP-set
  4. BSR泛洪RP-set
    BSR通过bootstrap 消息将RP-set发送至全网(泛洪)
  5. 自举
    每台路由器均使用相同的RP选举算法得出相同的RP结果

RP与BSR的关系

RP与BSR的关系

单播注册

  1. Source发出组播流量给First Route(R1)
  2. R1将源发过来的组播信息流的组播包封装为单播包(unicast register packet)发送到RP(源是出接口,目标地址是RP,组播被封装到单播内)进行注册。在该表项中设置F位表明它直连了源,同时设置注册“registering”flag表明它在注册
  3. R4(RP)收到register packet后:
    1. 解封装,并沿共享树发下去
    2. 产生(S,G)条目,并RPF校验指向源
    3. 向Source发起一个(S,G)的加入
  4. R2形成源树(S,G),并且向R1发起一个(S,G)的加入
  5. R1形成到RP的源树(S,G),当其再次收到组播包时:
    1. 沿(S,G)源树发出组播
    2. 同时还会封装unicast register packet继续发,此时RP会收到来自源的组播包和来自第一跳的单播包。【包的复制,这是一种必不可少的平滑过渡过程】
  6. RP从(S,G)收到Multicast packet后,向R1发出register-stop包
  7. R1收到register-stop包后,停止单播register packet
  8. last router切换为源树,向源发出(S,G)的join消息
    PIM-SM中,偶尔会出现的组播初始流量通,后续流量不通的情况:最开始是单播注册转发

总体评价

  • 数据流仅沿“加入”的分支向下发送
  • 可以根据流量等条件动态的切换到源树
  • 与具体的单播路由协议无关
  • 是域间组播路由的基础(和MBGP、MSDP共同结合使用可以完成跨域的组播)

SSM与ASM模型比较

SSM与ASM模型比较

MSDP和AnycastRP

  • MSDP,组播源发现协议,是为了解决多个PIM-SM域之间的互连而开发的一种域间组播解决方案,用来发现其他PIM-SM域内的组播源信息。
  • MSDP目前只支持在IPv4网络部署,域内组播路由协议必须是PIM-SM,MSDP仅支持ASM模型
  • SDP通过在不同PIM-SM域的路由器(通常在RP上)之间建立MSDP对等体,MSDP对等体之间交互SA(Source-Active)消息,共享组播源信息,最终可以使一个域内的组播用户接收到其他域的组播源发送的组播数据

任意播

任意播地址是从单播地址空间中划分出来的。当一个单播地址分配给多个接口,就变成了任意播地址。

  • 任意播地址是一个标识符对应多个接口的情况。如果一个数据报文要求被传送到一个任意点地址,则将被传送到最近一个接口(路由器决定)
  • 单播就是一对一;任意波就是一对最近;组播就是一对多
  • 任意播(Anycast)是指某组中任意发送方对应拓朴结构中几个最接近的接收方之间的通信。与之比较,组播是指单个发送方对应一组选定接收方的一种通信,单播是指单个发送方对应单个接收方的一种通信。
  • 任意播是IPv6 中更新路由表时所采用的一种方法。某台主机在更新一个主机组的路由表时,先发送数据到最接近的主机上,IPv6 决定哪个网关主机最接近并发送数据包到该主机,就如单播通信一样,然后主机发送信息到其最接近的路由器上,该过程直至组中的所有路由表都被更新为止。
  • IPv6 支持单播(Unicast)、组播(Multicast)和任意播(Anycast)三种类型。IPv6 中没有关于广播(Broadcast)的具体划分,而是作为组播的一个典型类型。IPv6 中包含三种与网络设备相联的地址:单播地址、组播地址和任意播地址。在路由选择过程中,IPv6 对单播和任意播地址不加区分。在答复数据包头中,收到 Anycast 数据包的节点需要将其自己的单播地址作为发送方地址。任意播中广告和收听的路由选择使用地址解析协议(ARP)或链路级组播完成。任意播中转发数据包的过程类似于单播,而最后一跳路由选择过程类似于组播。

MSDP对等体建立

使用MSDP实现跨域组播的首要任务是:建立MSDP对等体,MSDP对等体通常建立在RP上
通常,在各个PIM-SM域的RP之间配置MSDP对等体关系,MSDP对等体之间交互SA消息,SA消息中携带组播源DR在RP上注册时的(S,G)信息。通过这些MSDP对等体之间的信息传递,任意一个RP发出的SA消息能够被其他所有的RP收到
MSDP对等体通常建立在RP上

  1. MSDP对等体通过TCP连接建立,使用端口639
  2. 两台设备使能MSDP并互相指定对方为MSDP对等体后,两端先比较IP地址,IP地址较小的一端会启动连接重试定时器,并主动发起TCP连接,通过keepalive维持
  3. IP地址较大的一端负责确认是否有TCP连接在端口639建立。TCP连接建立后,MSDP对等体关系就建立了,对等体之间通过KeepAlive消息维持连接关系

组播源信息在域间的传递

组播源信息在域间的传递
  1. 当PIM-SM1域内的组播源Source向组播组G发送第一个组播数据包时,DR1将该组播数据封装在注册报文中,并发给RP1,RP1因此获知了该组播源的相关信息
  2. RP1作为源端RP,创建SA消息,并周期性地向它的对等体RP2发送。SA消息中包含组播源的地址S、组播组的地址G以及创建该SA消息的源端RP(即RP1)的地址
  3. RP2接收到该SA消息后,执行RPF检查。检查通过,向RP3转发,同时检查本域内是否存在组G成员。由于PIM-SM2域内没有组G的接收者,故RP2不做其他动作
  4. RP3接收到该SA消息后,执行RPF检查,检查通过。由于PIM-SM3域内存在组G成员,会通过IGMP协议在RP3上生成(*,G)表项,表示本域内存在组G成员
  5. RP3创建(S,G)表项,向组播源Source逐跳发送(S,G)加入报文,创建一条从Source到RP3的组播路径(SPT)。组播数据沿SPT到达RP3后,再沿RPT向接收者转发。
  6. 当接收者侧DR3收到Source发出的组播数据后,可以自行决定是否发起SPT切换

实验

实验拓扑:
原理图
实验拓扑
预配置:

# R1
sys
sys R1
int g0/0/0
ipp addr 100.1.1.254 24
int g0/0/1
ip addr 10.1.1.1 24
ospf 1
area 0
network 0.0.0.0 255.255.255.255   # 所有接口地址均宣告进入OSPF中
# R2
sys
sys R2
int lo 0
ip addr 22.1.1.1 32
int g0/0/0
ip addr 42.1.1.2 24
int g0/0/1
ip addr 10.1.1.2 24
int s1/0/0
ip addr 24.1.1.2 24
ospf 1
area 0
network 0.0.0.0 255.255.255.255
# R3
sys
sys R3
int g0/0/1
ip addr 10.1.1.3 24
int g0/0/0
ip addr 35.1.1.3 24
ospf 1
area 0
network 0.0.0.0 255.255.255.255
# R4
sys
sys R4
int g0/0/0
ip addr 42.1.1.4 24
int g0/0/1
ip addr 45.1.1.4 24
int g0/0/2
ip addr 10.1.2.4 24
int s1/0/0
ip addr 24.1.1.4 24
ospf 1
area 0
network 0.0.0.0 255.255.255.255
# R5
sys
sys R5
int g0/0/0
ip addr 35.1.1.5 24
int g0/0/1
ip addr 45.1.1.5 24
int g0/0/2
ip addr 10.1.2.5 24
ospf 1
area 0
network 0.0.0.0 255.255.255.255

实验一:IGMPv1

# R4
multicast routing-enable   # 全局开启组播
int g0/0/2
igmp version 1
pim dm
igmp enable
# PC1:设置--组播--选择Version1、源IP为10.1.2.1、目的IP为239.1.1.1--点击加入
# 查看
# R4
dis igmp int
dis igmp group

实验二:IGMPv1查询器选举(PIM协议)

# R5
multicast routing-enable
int g0/0/2
igmp version 1
pim dm
igmp enable
# R4
int g0/0/2
pim hello-option dr-priority  1000 # 通过修改优先级,将R4设置为PIM的DR(默认优先级为1)
# 查看
dis igmp int
dis pim neighbor

实验三:IGMPv2

# R4
int g0/0/2
igmp version 2
# R5
int g0/0/2
igmp version 2
# PC1先离开--选择Version2--再加入

实验四:IGMPv3

# R4
int g0/0/2
igmp version 2
# R5
int g0/0/2
igmp version 2
# PC1先离开--选择Version3--源IP设置为10.1.2.1--组播组IP起始232.1.1.1和组播源IP起始100.1.1.1--其他4个0改为1--类型选择MODE_IS_INCLUDE--点击发送
# 查看
# R4/5
dis igmp group

实验五:配置PIM-DM

步骤:

  1. 部署IGP
  2. 开启组播:multicast routing-enable
  3. 接口开启PIM:面对组播源的接口需要开启pim、面对接收者的接口需要开启pim
  4. 接收者加组(使用IGMPv2)
# R1
multicast routing-enable
int g0/0/0
pim dm
int g0/0/1
pim dm
# R2
multicast routing-enable
int s1/0/0
pim dm
int g0/0/1
pim dm
# R3
multicast routing-enable
int g0/0/0
pim dm
int g0/0/1
pim dm
# R4
multicast routing-enable
int g0/0/2
igmp version 2
undo igmp robust-count
undo pim hello-option dr-priority
pim dm
int s1/0/0
pim dm
int g0/0/1
pim dm
# R5
multicast routing-enable
int g0/0/0
pim dm
int g0/0/1
pim dm
int g0/0/2
pim dm
# 加入组播组
# PC1:Version2 -- 源IP10.1.2.1 -- 目的IP239.1.1.1 -- 加入【IP地址10.1.2.1/24  gw10.1.2.4】
# PC2:Version2 -- 源IP10.1.2.2-- 目的IP239.1.1.1 -- 加入【IP地址10.1.2.2/24  gw10.1.2.4】
# PC3:Version2 -- 源IP10.1.2.3 -- 目的IP239.1.1.1 -- 加入【IP地址10.1.2.3/24  gw10.1.2.4】
# 产生组播流
# Client 1:IP100.1.1.1/24 gw100.1.1.254,组播源选择一个MP4的文件,组播组IP239.1.1.1,源IP地址100.1.1.1--运行
# 检验
# PC1 :启动VLC(比较卡)
# R3/2
dis pim rou
dis pim neighbor

实验六:PIM-SM

大致步骤:

  1. IGP(完成RPF检查)【上面实验已经做过】
  2. 使能组播和PIM
  3. 配置RP,所有设备都需要知道RP的位置,目的是组测,RPT的形成也需要RP的位置
    实验内容:
  4. 在vrp上部署 PIM-SM
  5. 创造一个由于RPF检查失败造成的单播注册通,组播不通
# 清除之前的配置
# R1
int g0/0/0
undo pim dm
int g0/0/1
undo pim dm
# R2
int s1/0/0
undo pim dm
int g0/0/0
undo pim dm
int g0/0/1
undo pim dm
# R3
int g0/0/0
undo pim dm
int g0/0/1
undo pim dm
# R4
int s1/0/0
undo pim dm
int g0/0/0
undo pim dm
int g0/0/1
undo pim dm   
int g0/0/2
undo pim dm 
# R5
int g0/0/0
undo pim dm
int g0/0/1
undo pim dm   
int g0/0/2
undo pim dm 

# 部署PIM-SM
# R1
pim
static-rp 22.1.1.1
q
int g0/0/0
pim sm
int g0/0/1
pim sm
# R2
pim
static-rp 22.1.1.1
q
int s1/0/0
pim sm
int g0/0/0
pim sm
int g0/0/1
pim sm
# R3
pim
static-rp 22.1.1.1
q
int g0/0/0
pim sm
int g0/0/1
pim sm
# R4
pim
static-rp 22.1.1.1
q
int s1/0/0
pim sm
int g0/0/0
pim sm
int g0/0/1
pim sm
int g0/0/2
pim sm
# R5
pim
static-rp 22.1.1.1
q
int g0/0/0
pim sm
int g0/0/1
pim sm 
int g0/0/2
pim sm

# 其他配置
# R4
int g0/0/2 
pim hello-option dr-priority 200
dis pim neighbor    # 原来R5是DR,执行上一条命令之后,R4变为DR
# 检查:PC1 ,Version2加入组播,启动VLC


# 声明先对比优先级(本质是路径开销),最后对比IP
# 修改R4和R5连接的接口的cost,从而影响开销值
# R4/5
int g0/0/1
ospf cost 2
dis pim rou  # 此时,R5的RPF邻居由R4变为R3,R4的RPF邻居由R5变为R2【R2是RP】

# 让组播流量走R5,即让R5称为DR
# R5
int g0/0/2
pim hello-option dr-priority  3333

# 创造一个由于RPF检查失败造成的单播注册通,组播不通(R5)
# 即组播流的入接口和单播路由的出接口不一样,目前两者都为g0/0/0
# 下面修改组播流的入接口为g0/0/1(使用下一跳地址),即添加组播静态路由
# R5
ip rpf-route-static 100.1.1.1 32 45.1.1.4  # 此时虽然组播还正常,但是其走的路由时1--2--4--5

实验七:BSR

此实验拓扑为BGP专题的拓扑:
BSR
预配置:

  • 路由器的配置:
    除了开启BGP和IGP,还需要保证所有接口都工作在PIM-SM模式下
    • R1的g0/0/1、g0/0/2、s1/0/0、loop 0
    • R2的g0/0/0、g0/0/2、s1/0/1、loop 0
    • R3的g0/0/1、g0/0/2、g0/0/0、loop 0
    • R4的g0/0/1、g0/0/2、s1/0/0、s1/0/1
  • PC的配置:
    • PC1:组播Version2,源IP为10.1.1.1,目的IP为239.1.1.1;基础配置IP为10.1.1.1/24,GW为10.1.1.254
    • PC2:组播Version2,源IP为10.7.1.1,目的IP为239.1.1.1;基础配置IP为10.7.1.1/24,GW为10.7.1.254
      实验内容:
      R1、R2做为C-RP,R3、R4做为C-BSR
# R1
pim
c-rp loopback 0
c-rp loopback 0 advertisement-interval 5 # 5秒通告一次
c-rp priority 100 
dis pim rp-info
# R2
int g0/0/1
ip addr 10.1.1.254 24
igmp enable
igmp version 2
q
pim
c-rp loopback 0
c-rp loopback 0 advertisement-interval 5
c-rp priority 80  # 使R2为RP
dis pim rp-info
# R3
pim
c-bsr loopback 0
c-bsr hash-length 0
c-bsr interval 10 # 10秒通告一次
c-bsr priority 100 # 使R3为RP
q
dis pim bsr-info
# R4
pim
c-bsr loopback 0
c-bsr hash-length 0
c-bsr interval 10
c-bsr priority 80
q
dis pim bsr-info

实验八:结合MSDP及任意播原理实现Anycast-RP

原理:源向最近的RP注册,RP之间通过MSDP共享源信息,获得源信息意味着(S,G)的join成为可能
实验内容:
R1、R2为Anycast-RP 100.100.100.100
应用任意播,务必要注意任意播地址绝不允许做为任何路由协议的router-id
逻辑RP的作用:RPF

# R1
int lo 1
ip addr 100.100.100.100 32
ospf en  1 a 0
pim sm
q
pim
undo c-rp  lo 0
c-rp lo 1 advertisement-interval 5
q
msdp 
peer 22.1.1.1 connect-interface lo 0
originating-rp lo 0  # 逻辑RP
# R2
int lo 1
ip addr 100.100.100.100 32
ospf en  1 a 0
pim sm
q
pim
undo c-rp  lo 0
c-rp priority 100
c-rp lo 1 advertisement-interval 5
q
msdp 
peer 11.1.1.1 connect-interface lo 0
originating-rp lo 0
# 在PC1上测试组播
# R2
dis pim rou
dis pim neighbor