目录
PIM基本概念
PIM与之前组播路由协议的区别
组播分发树
RFC机制
PIM两种工作模式
PIM的上游接口与下游接口
上游接口
下游接口
PIM邻居发现
Hello报文作用
DR的作用
PIMv2的其它类型报文
PIM基本概念
组播路由协议的作用
和单播路由协议类似,组播路由协议用于建立、维护组播路由,为组播网络生成一颗无环的组播分发树(组播流量在网络中的传输路径)进行组播数据转发。
PIM与之前组播路由协议的区别
PIM协议之前,使用的组播路由协议是DVMRP(距离矢量组播路由协议),MOSPF(组播OSPF协议)等,它们的特点都是需要依赖单播路由协议来进行工作,维护大量的拓扑数据库。
PIM称为协议无关组播路由协议(与单播协议无关的组播路由协议),不维护组播拓扑数据库,不能够自己直接画出组播拓扑。因此PIM通过利用单播路由表的路由信息进行组播报文RPF检查,创建组播路由表项,转发组播报文。目前流行PIMv2
组播分发树
组播分发树由组播路由协议生成,是组播流量在网络中的传输路径,主要分为两种类型
SPT 最短路径树,也成为源树
是以组播源为树根的组播分发树,组播组成员可以看为枝叶
源到组播成员的最短路径树
使用(S,G)表示,S代表组播源,G代表组播组地址。
每一个(S,G)表项都在网络中都对应了一颗独立的SPT
RPT 共享树
是以RP为树根的组播分发树,组播组成员可以看为枝叶,多个组播组可以共用一个RP
组播流量先从源发往RP,再从RP发往成员(此路径不一定是最优的)
主要使用(*,G)表示,也会使用到(S,G)表项。*代表的是任意组播源
注意:
一个(*,G)表项可以维护一个组播组(多个组播源)
一个(S,G)表项可以维护一个组播源
RFC机制
反向路径转发检测 是PIM协议中用于组播转发防环的核心手段
检测过程
- 路由器收到组播报文后,检查组播报文的源地址,然后在单播路由表中寻找此源地址的路由
- 如果单播路由表中此源地址路由的出接口就是接收组播报文的那个入接口,则RPF检查成功
- 否则RPF检查失败,报文被丢弃
PIM两种工作模式
PIM DM 密集模式
多应用于组播组成员相对较多、分布相对密集的局域网络环境中
PIM SM 稀疏模式
多应用在接收者分布较为分散、地域较大的环境
PIM的上游接口与下游接口
其中(S,G)、(*,G)表项是由上游接口和下游接口组成的(以下为S,G表项举例)
上游接口
也就是RPF接口,负责接收(S,G)组播流量的接口(完成了RPF检测)
- 对于每一个(S,G)表项来说,RPF接口有且只有一个
- 去往组播源负载分担(单播路由表去往组播源的路由有多条),则选择下一跳地址大的接口为RPF接口
- RPF接口上的PIM邻居称为RPF邻居。如果RPF接口上存在多个PIM邻居,则邻居地址大的为RPF邻居
上游接口状态——根据上游接口的操作行为,会有不同的状态
Nolnfo(NI) 没有接口状态
Pruned(P) 已经向上游发送Prune报文
Forwarding(F) (S,G)下游接口非空时,组播报文从上有接口收到
AckPending(AP)已经发送Graft报文,等待GraftAck报文
下游接口
将组播流量发送出去的接口
- 即存在直连组成员的接口(有IGMP协议维护)以及存在PIM邻居的接口
- 组播流量会通过下游接口进行扩撒
下游接口状态
Nolnfo(NI) 接口为正常接口,会一直转发组播数据(初始状态)
Pruned(P) 接口已被剪除,不再转发组播数据(不会出现在Pim Routing-table中,但是会出现在Pim Routing-table Fsm中)
PrunePending(PP)接口处于延缓剪除状态,仍能转发组播数据
PIM邻居发现
开启了PIM的组播路由器,会向外周期性的发送PIM Hello报文。
Hello报文的发送间隔为30s,死亡间隔105s(3.5倍发送间隔)
报文的目的地址是22.0.0.13,源地址为发送接口的IP地址,TTL为1
Hello报文作用
- 发现PIM邻居、协商参数并建立、维持邻居关系。
- 选举DR(具有抢夺性)
DR优先级大的为DR(默认为1)、接口IP地址大的为DR
DR的作用
在PIM-DM中
DR没有实际用途,就是在最后一跳以太网段上,可以充当IGMP v1的IGMP查询器
在PIM-SM中
DR负责向RP建立共享树和向RP建立注册通道
PIMv2的其它类型报文
PIM DM
Join/prune(加入/剪枝报文)、Assert(断言报文)、Graft(嫁接报文)、Graft Ack(嫁接确认报文)、State-refresh(状态刷新报文)
PIM SM
Join/prune(加入/剪枝报文)、Assert(断言报文)、Register(注册报文)、Register-stop(注册停止报文)、Bootstrap(自举报文)、C-rp-announcement(候选RP通告报文)
单播报文(目的地址为单播)
Register(注册报文)、Register-stop(注册停止报文)、Graft(嫁接报文)、
组播报文(目的地址为组播224.0.0.13)
Join/prune(加入/剪枝报文)、Bootstrap(自举报文)、Assert(断言报文)