1、PIM 的定义:
建立组播路由表项
2、邻居的发现:
PIM
在建立邻居时,发送报文的
TTL=1
,所以不能跨链路建立邻居关系
hello
间隔时间
30s
死亡时间
105s
hello
报文发现邻居、协商参数、维护邻居关系。
3、PIM-DM 基本概述
采用“推(
Push
)模式”转发组播报文。
PIM-DM
的关键任务:
建立
SPT
(
Shortest Path Tree
,最短路径树)。
PIM-DM
的工作机制:
邻居发现。
扩散与剪枝。
状态刷新。
嫁接。
断言。
4、PIM 的 DR 的作用:
在
IGMPv1
中充当查询器的选举机制,在
DM
中没有实际用途
在
SM
中有相应的用途
组播接收者侧
DR
:与组播组成员相连的
DR
,负责向
RP
发送(
*
,
G
)的
Join
加入消息。
组播源侧
DR
:与组播源相连的
DR
,负责向
RP
发送单播的
Register
消息。
5、Pim-DM (密)扩散过程:
将上游收到的组播流量向下游的
PIM
邻居以及存在组播路由器进行扩散(推的模式)
RPF
检查:路由器收到组播报文中,查看组播源的
IP
地址,通过路由表查看去往组播源的
出接口是否与接收组播报文的入接口是否一致,如果一致则检查通过建立
(S
,
G)
表项,不通
过则丢弃
(
扩散周期时间 30s
)
RP
接口只可以存在一个,如果出现负载分担情况比较接口的
IP
地址大小,越大为
RP
6、RPF(上游接口)检查:
路由器收到组播报文,查看报文中组播源的 IP 地址,通过路由表查看去往组
播源的出接口与接收组播报文的入接口是否一致。如果一致则检查通过建立
(S,G)表项,如果不通过,则丢弃。
RP 接口只可以存在一个,如果出现负载分担的情况,比较接口的 IP 地址大小,
越大的为 RP 接口。
6、剪枝过程:
当下游有没有组播成员,扩散组播报文会导致带宽资源的浪费。为避免带宽的浪费
PIM-DM
使用剪枝机制。
当下游节点没有组播组成员,则路由器向上游节点发
Prune
消息,通知上游节点不用再转发
数据到该分支。上游节点收到
Prune
消息后,就将相应的接口从其组播转发表项(
S
,
G
)对
应的输出发送列表中删除。剪枝过程继续直到
PIM-DM
中仅剩下了必要的分支,这就建立了
一个以组播源为根的
SPT
。
各个被剪枝的节点同时提供超时机制,当剪枝超时时重新开始扩散—剪枝过程。剪枝状态超
时计时器的默认值为
210
秒
剪枝的作用:
减少不必要的组播流量占用带宽资源。
注释:PIM 扩散——剪枝过程周期性进行,每 3 分钟重复一次
7、状态刷新:
由于 PIM 扩散——剪枝过程周期性还是无法解决组播流量的浪费,所以离组播源
的第一跳路由器会周期性(60s)发送 State Refresh 消息(全网泛洪),刷新
剪枝定时器。还有一个作用就是通告组播源的状态。
8、Graft-嫁接机制:
采用 State Refresh 消息会使得被剪枝的路由器不能接收到组播流量,使得新
加入的成员无法获得组播流量,当剪枝路由器收到成员报告报文后会触发嫁接消
息宣告自己需要接收组播流量,离剪枝路由器最近的最近的未被剪枝的路由器会
发送嫁接确认消息,从而使得剪枝路由器恢复转发状态。
9、Assert-断言机制
(
1
)为避免重复的组播报文浪费带宽资源,
PIM
路由器在接收到邻居路由器发送的相同组
播报文后,会以组播的方式向本网段的所有
PIM
路由器发送
Assert
消息,其中目的地址为
224.0.0.13
。其它
PIM
路由器在接收到
Assert
消息后,将自身参数与对方报文中携带的参数
做比较,进行
Assert
竞选。竞选规则如下:
到组播源的单播路由协议优先级较小者获胜。
如果优先级相同,则到组播源的路由协议开销较小者获胜。
如果以上都相同,则连接到接受者
MA
网络接口
IP
地址最大者获胜。
(
2
)根据
Assert
竞选结果,路由器将执行不同的操作:
获胜一方的下游接口称为
Assert Winner
,将负责后续对该网段组播报文的转
发。
落败一方的下游接口称为
Assert Loser
,后续不会对该网段转发组播报文,
PIM
路由器也会将其从(
S
,
G
)表项下游接口列表中删除。
(
3
)
Assert
竞选结束后,该网段上只存在一个下游接口,只传输一份组播报文。
(
4
)所有
Assert Loser
可以周期性地恢复组播报文转发,从而引发周期性的
Assert
机制。
10、PIM-DM 的局限性:
PIM-DM
适用于组播成员分布较为密集的园区网络。
PIM-DM
的局限性:
在组播成员分布较为稀疏的网络中,组播流量的周期性扩散会给网络带来较
大负担。
11、PIM-SM 基于这一种稀疏的网络模型,它的实现方法是:
(1)汇聚点与下游建立共享树,与源头建立最短路径树
(2)汇聚点 RP:
充当 RPT 树的根节点。
共享树中的所有组播流量都经过 RP 转发给接收者。
所有 PIM 路由器都要知道 RP 的位置。
(3)RP 可以静态指定也可动态选举:
静态指定是指由管理员在每台 PIM-SM 路由器上进行配置,使得每台路由
器获知 RP 的位置。
动态选举是指通过专用协议在若干台 C-RP(Candidate-RP)中选举产生。
管理员需要开启选举协议并配置若干台 PIM-SM 路由器成为 C-RP。
12、RPT 的建立过程:
主机加入某个组播组时,发送
IGMP
成员通告。
最后一跳路由器向
RP
发送(
*
,
G
)
Join
消息。
(
*
,
G
)
Join
消息到达
RP
的过程中,沿途各路由器都会生成相应的(
*
,
G
)
组播转发条目。
RPT
实现了组播数据按需转发的目的,减少了数据泛洪对网络带宽的占用
13、SPT 的建立过程:
(
1
)组播源向组播组发送第一个组播报文。
(
2
)源端
DR
将该组播报文封装成
Register
报文并以单播方式发送给相应的
RP
。
(
3
)
RP
收到注册消息后,一方面从
Register
消息中提取出组播报文,并将该组播报文沿
RPT
分支转发给接收者。
(
4
)另一方面,
RP
向源端
DR
发送
(S
,
G)Join
消息,沿途路由器上都会生成相应
(S
,
G)
表项。
从而建立了一颗由组播源至
RP
的
SPT
树。
(
5
)
SPT
树建立后,组播源发出的组播报文沿该
SPT
转发至
RP
。
(
6
)
RP
沿
SPT
收到该组播报文后,向源端
DR
单播发送
Register-stop
消息。
14、RPT 共享树和 SPT 树的形成过程:
选举出
RP
,最后一跳路由器收到成员报告报文后生成(
*
,
G
)表项,向
RP
发送
jion
信息(
共
享树部分
),然后第一条路由器发送
register
(注册,登记)信息,以单播的形式发送给
RP
,
RP
收到注册消息后,一方面从
Register
消息中提取出组播报文,并将该组播报文沿
RPT
分
支转发给接收者,
RP
向源端
DR
发送
(S
,
G)Join
消息,沿途路由器上都会生成相应
(S
,
G)
表
项,
RP
沿
SPT
收到该组播报文后,向源端
DR
单播发送
Register-stop
消息
15、Switchover 机制:
当
RP
转发达到相应的上线,影响组播流量转发,可以通过
switchover
机制,重新构建
SPT
树,创建(
S
,
G
)表项,走新的路线可以相对应减轻
RP
的压力,一定程度上可以解决
RP
存在的次优路径问题。