前言

VyOS 系统支持 PIM-SM (协议无关组播-稀疏模式) 以及 IGMP v2 和 v3,使用FRR实现大部分功能。

安装和基本使用:https://songxwn.com/Vyos/?highlight=vyos

参考文档:https://docs.vyos.io/en/1.4/configuration/protocols/pim.html

PIM-SM应用

在下图所示的大型网络中部署组播业务。该网络中已经部署了完备的IGP,且任意网段路由可达。网络中的组成员分布相对比较稀疏,要求网络中的用户主机能够按需接收视频点播信息,并在一定程度上节约网络的带宽。

单自治域PIM-SM应用组网图

HostA、HostB和HostC为网络中的信息接收者,通过组播方式接收视频点播信息,整个PIM域采用PIM-SM方式。RouterA与组播源S1相连,RouterC与组播源S2相连;RouterB连接HostA,RouterE和RouterG连接HostB和HostC。

网络部署如下:

  • 在所有路由器接口上启用PIM-SM协议。

  • 网络中的组播源分布比较密集,则可以选择与组播源比较近的核心设备作为C-RP。将RouterC和RouterD的接口配置为C-BSR和C-RP,动态竞选出为PIM-SM网络服务的BSR和RP。

    RP部署方式的选择:

    • 中小型网络:建议选择静态RP方式,对设备要求低,也比较稳定。

      如果网络中只有一个组播源,建议选择直连组播源的设备作为静态RP,这样可以省略源端DR向RP注册的过程。

      采用静态RP方式要确保域内所有路由器(包括RP本身)的RP信息以及服务的组播组范围全网一致。

    • 大型网络:可以采用动态RP方式,可靠性高,可维护性强。

      如果网络中存在多个组播源,且分布密集,建议选择与组播源比较近的核心设备作为C-RP;如果网络中存在多个用户,且分布密集,建议选择与用户比较近的核心设备作为C-RP。

  • RouterB与HostA之间,RouterE、RouterG与HostB、HostC之间均运行IGMP协议。

    为路由器接口配置IGMP协议时,请确保接口参数配置的一致性,即遵循如下原则:连接在同一网段的所有路由器必须运行相同的IGMP版本(推荐使用IGMPv2),且各接口参数(如查询定时器、组成员关系保持时间等)必须相同。如果IGMP版本或各参数不相同,会导致不同路由器上IGMP组成员关系不一致。

  • 部署完上述网络后,HostA、HostB和HostC根据需要向RP发送Join消息,组播源的信息能够到达接收者。

Vyos 静态RP配置示例

Router1 - 接收

1
2
3
4
5
6
7
8
set interfaces ethernet eth2 address '172.16.0.2/24'
set interfaces ethernet eth1 address '100.64.0.1/24'
set protocols ospf area 0 network '172.16.0.0/24'
set protocols ospf area 0 network '100.64.0.0/24'
set protocols igmp interface eth1
set protocols pim interface eth1
set protocols pim interface eth2
set protocols pim rp address 172.16.255.1 group '224.0.0.0/4'

Router3 - 中转

1
2
3
4
5
6
7
8
9
10
11
set interfaces dummy dum0 address '172.16.255.1/24'
set interfaces ethernet eth0 address '172.16.0.1/24'
set interfaces ethernet eth1 address '172.16.1.1/24'
set protocols ospf area 0 network '172.16.0.0/24'
set protocols ospf area 0 network '172.16.255.0/24'
set protocols ospf area 0 network '172.16.1.0/24'
set protocols pim interface dum0
set protocols pim interface eth0
set protocols pim interface eth1
set protocols pim rp address 172.16.255.1 group '224.0.0.0/4'

Router2 - 发送

1
2
3
4
5
6
7
8
set interfaces ethernet eth1 address '10.0.0.1/24'
set interfaces ethernet eth2 address '172.16.1.2/24'
set protocols ospf area 0 network '10.0.0.0/24'
set protocols ospf area 0 network '172.16.1.0/24'
set protocols pim interface eth1
set protocols pim interface eth2
set protocols pim rp address 172.16.255.1 group '224.0.0.0/4'

配置说明

🧩 第一步:接口地址配置

1
2
set interfaces ethernet eth2 address '172.16.0.2/24'
set interfaces ethernet eth1 address '100.64.0.1/24'
  • eth2 接口配置为 172.16.0.2/24:这是你的内部网络或与其他路由器连接的接口。
  • eth1 接口配置为 100.64.0.1/24:可能是连接到组播源或接收者的网络。

🧭 第二步:OSPF 路由协议配置

1
2
set protocols ospf area 0 network '172.16.0.0/24'
set protocols ospf area 0 network '100.64.0.0/24'
  • 启用 OSPF 区域 0,并将两个网段加入 OSPF。
  • 这样做的目的是让路由器之间可以自动学习彼此的路由信息,确保组播路径可达。

📡 第三步:IGMP 配置

1
set protocols igmp interface eth1
  • 在 eth1 接口启用 IGMP(Internet Group Management Protocol)。
  • IGMP 用于主机向路由器报告自己想接收哪些组播流。
  • 如果 eth1 接的是组播接收者(比如 PC 或服务器),这是必须的。

📦 第四步:PIM 配置(协议无关组播)

1
2
set protocols pim interface eth1
set protocols pim interface eth2
  • 在 eth1 和 eth2 接口启用 PIM(Protocol Independent Multicast)。
  • PIM 是组播路由协议,用于在路由器之间建立组播转发路径。
  • 默认使用 PIM-SM(Sparse Mode),适合大多数场景。

🎯 第五步:配置 RP(Rendezvous Point)

1
set protocols pim rp address 172.16.255.1 group '224.0.0.0/4'
  • 设置组播的 RP 地址为 172.16.255.1,适用于所有 IPv4 组播地址段。
  • 所有组播源会先向 RP 注册,接收者也会通过 RP 获取组播流。
  • RP 可以是网络中的某个稳定路由器。

show pim neighborsshow igmp groups 来查看组播状态