文章目录
前言
PIM-DM适合组播成员分布比较密集的场景,比如该园区中100个人中有90个人都需要接收组播消息,这时候使用PIM-DM协议非常的适合。
但是在组播成员分布较为稀疏的网络中或者规模较大的网络中(比如Internet中),PIM-DM中组播流量的周期性扩散会给网络带来较大的负担。
这个时候另外一种协议:PIM-SM就比较适合。
PIM-SM
相对于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的关键任务:
1. 建立RPT:汇聚点数/共享数
2. SPT:最短路径树
汇聚点RP(Rendezous Point)
RP在PIM-SM中非常的重要,在运行PIM-SM协议的路由器都需要知道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。
RPT建立过程
RPT(Rendezvous Point Tree,汇聚点树也称共享树),是以RP作为根的一棵树。
如上图:假设Client A想要假如某组播源,Client A将会给路由器发送ICMP成员报告。然后该路由器收到报告后,明确了Client A想要假如组播,并向RP发送( * ,G)join消息,并逐跳向RP转发,沿途的各个路由器都会生成相应的( *,G)表。
RPT实现了组播数据按需转发的目的,减少了数据泛洪对网络带宽的占用。
注意1:为什么是" * " :任意源,Client A并不知道组播源在哪里,其他路由器也不知道组播源在哪
注意2:RPT并不是最优路径
思考问题:如果Client A连接两台路由器,这两台都会发送(* ,G)的消息吗?
不会,一台发送就够了,参考IGMP查询器。
IP组播基础(二)IGMP协议各版本工作原理与基础配置、IGMP Snooping工作原理
DR选举
运行PIM-SM的网络,都会进行DR(Designated Router)的选举。其中有两种DR分别称为
-
组播接收者侧DR:与组播组成员相连的DR,负责向RP发送(*,G)的Join加入消息。
-
组播源侧DR:与组播源相连的DR,负责向RP发送单播的Register消息(注册消息)。
lPIM-SM中DR的选举原则与PIM-DM相同:
可参考:IP路由基础(三)PIM协议(1)PIM-DM基本原理与配置
1. 优先级(大的优先)
2. IP地址(大的优先)
SPT建立过程
如图所示,在PIM-SM网络中,任何一个新出现的组播源都必须首先在RP处“注册”,继而才能将组播报文传输到组成员。具体过程如下:
- 组播源向组播组发送第一个组播报文。
- 源端DR将该组播报文封装成Register报文并以单播方式发送给相应的RP。
- RP收到注册消息后,一方面从Register消息中提取出组播报文,并将该组播报文沿RPT分支转发给接收者。
- 另一方面,RP向源端DR发送(S,G)Join消息(RP已经知道组播源在哪里),沿途路由器上都会生成相应(S,G)表项。从而建立了一颗由组播源至RP的SPT树。
- SPT树建立后,组播源发出的组播报文沿该SPT转发至RP。(组播消息又两条路可以选择:一条SPT,一条单播形式,那当然SPT更优一些)
- RP沿SPT收到该组播报文后,向源端DR单播发送Register-stop消息(注册停止消息:不要再给我发送单播消息了,我可以用组播接收消息)。
(* ,G)与(S,G)条目关系
模式 | 类型 | 使用场景 |
---|---|---|
PIM-DM | (S,G) | 第一跳路由器到最后一跳路由器的SPT。 |
PIM-SM | (*,G) | RP到最后一跳路由器的RPT。 |
PIM-SM | (S,G) | 源端DR到RP的SPT。 |
PIM-SM | (S,G) | Switchover(切换)之后,从第一跳路由器到最后一跳路由器的SPT。(下文讲到) |
PIM-SM的转发树问题
SPT和PRT构成的组播报文的转发路径不一定是最优路径,而且由于这种方式以RP作为中间点,RP的工作负担非常的大,为此我们启动了RPT像STP进行切换的机制。
Switchover机制
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转发树。
PIM-SM配置实现
在想要运行PIM-SM协议的各个路由器上开启IP组播功能:multicast routing-enable
,然后进入接口使能PIM-SM协议:pim sm
,最后在每个非RP路由器上手动指定RP,例如:static-rp 4.4.4.4
我们可以通过display pim routing-table
来查看PIM-SM详细信息。