1、整个网络拓扑环境需要使用单播路由协议来实现网络的连通,在一个已经连通的网络中,IP组播路由协议来构建组播分发树,以及负责路由组播数据包;
2、PIM同OSPF、IS-IS类似,同样使用邻居发现机制来发现和建立组播邻居关系;
3、PIM使用hello消息来发现邻居,建立与维护组播分发树;
4、PIM的hello消息使用组播方式发送,组播地址为224.0.0.13
PIM共有两种运行模式:
1、PIM-DM【密集模式】
适用环境:
1)在发送方和接收方距离较近的时候;
2)发送方(信源)较少,而接收方(客户端)较多的时候;
3)组播流量较高;
4)组播流量持续发送且稳定;
2、PIM-DM使用SPT(最短路径树)来转发组播流量;
3、PIM-DM使用“扩散-剪枝”的方式来构建组播分发树;
4、PIM-DM在形成SPT的过程中,共需要使用以下机制:
1)扩散
2)剪枝
3)嫁接
4)邻居发现
5)断言
6)状态刷新消息
5、PIM-DM的邻居发现机制
PIM-DM的邻居发现机制是形成组播分发树的先决条件,若无法形成邻居关系,则无法构建组播分发树,没有分发树,则无法传递组播流量;
1)当在组播路由器先开启PIM-DM功能后,该路由器就具有了发送/接收组播包的能力;
2)运行PIM-DM的路由器平均每30s向224.0.0.13组播组传送hello消息,用来建立与维护PIM的邻居关系;
3)若在超时计时器(105s)到时之前都没有收到邻居发送过来的hello报文,则认为邻居失效,随即删除邻居关系;
6、PIM-DM首次形成分发树
6.1、PIM-DM在使用hello报文完成邻居关系的发现和建立后,首次将使用扩散机制、剪枝机制、断言机制、DR机制来形成组播分发树;
6.2、扩散机制:组播数据包向所有邻居发送PIM邻居泛洪,用来生成组播路由表项;
6.2.1、组播源向全网以泛洪的方式发送组播流量,所有接收到该组播流量的组播路由器首先使用RPF进行反向路径检测,若RPF成功,则创建组播路由表项,同时创建(S,G)表项;
6.2.2、PIM-DM形成的(S,G)表项的老化时间为210s,若在210s内,该组播源没有向该组播组传送组播消息,则该(S,G)表项删除;
6.2.3、组播源每隔180s向全网扩散组播数据;
6.3、剪枝机制:若某叶子节点路由器发现自身并没有想要接收组播流的客户端成员,则该叶子节点路由器将向上游路由器发送剪枝消息;
6.3.1、下游路由器若检测到自身并没有组播组的接收成员,则主动向其上游路由器发送prune消息将自身剪枝;
6.3.2、剪枝后,下游路由器依旧保持着(S,G)表项,以便于在有了接收成员后,能够立即请求组播组消息;
6.3.3、上游路由器接收到下游路由器发来的剪枝消息后,将在自身的组播路由表中将连接下游路由器的接口剪枝掉(该剪枝状态保持210s,210s过后,上游路由器会恢复该剪枝接口,重新向下游路由器发送组播数据流,若下游路由器依旧没有客户成员,则再发送剪枝消息)
6.4、断言机制:当组播网络环境中存在多路访问网络时,需要使用断言机制来选择出一台主转发路由器,以此来避免重复的组播报文;
在两台路由器进行比较的过程中,其比较的原则是:
1)比较单播路由协议的协议优先级值;
2)若单播路由协议的协议优先级值相同,则比较cost值;
3)若cost值相同,则比较两台路由器的下行接口IP地址,IP地址最大的胜出;
注:通过断言机制将某台路由器的接口选举为关闭状态,此状态可维持180s,180s过后,需要重新进行断言机制的选举;
7、组播分发树的维护
组播分发树形成以后并不会持续永久不变,若希望组播路由表保持不变,则可以使用以下两种方式:
1)令信源持续发送组播数据流,让整个网络持续在传递组播数据;
2)发送状态刷新报文,保证组播路由表的下行接口状态不变;
8、状态刷新机制
距离信源最近的路由器定时(60s)向全网发送状态刷新消息,保持下游路由器的剪枝状态不变,以阻止其每210s恢复的过程;
9、嫁接机制
9.1、若之前没有接收方的路由器接收到了一个客户端发送的IGMP(互联网组管理协议)消息后,则主动向其上游路由器发送graft消息;
9.2、上游路由器接收到该graft消息后,立即刷新自身的组播路由表项,将(S,G)表项中之前被抹除的下行接口恢复,立即向下游路由器转发组播流量;
总结:PIM-DM的局限性
1)PIM-DM采用的“扩散-剪枝”模式将会对整个网络造成较大的冲击,对于链路带宽不高的网络环境而言,会造成较大的打击;
2)PIM-DM需要让哪些即便没有接收方的路由器也需要维护住组播路由表,将会对该路由器造成一定的性能影响;
3)对于接收方较少,且较为稀疏的分布在网络中的情况,采用PIM-DM的“扩散-剪枝”模式,效率较低;