理解多播PIM 现代的网络其实可以由以下8部分组成:
速度;质量;地址;路径;简单;安全;独用;他们相互作用可以说明大家遇到的所有的问题。今天大家就看看,大家如何用它来说明多播路由协议中的PIM。 PIM-DM模式: 速度:任何一种协议,都离不开这个因素。这代表一种最最基本的愿望,只要是通信,没有希翼速度慢的。PIM是一种路由协议。当然要采取各种各样的机制让数据源和数据的目的建立起路径。因为只有路径建立的越快,数据才能越快的开始传输。大家可以看看PIM是如何来考虑速度这个因素的。换句话说,就是让PIM如何实现快速的收敛。 实际上,从多播的源头机器传到客户端机器,实际上一般来说,要分两段,一个就是客户机到路由器。一个就是路由器到路由器。大家今天所要谈论的是路由器到路由器之间的事情。其实,路由器到路由器之间的东西还是想对简单,但是问题是如何能完成任务,并且摒弃不必要的浪费。速度就是关心如何能迅速的完成这些任务。 需要花费的时间主要包括: 邻居的发现
这是许多路由协议必须花费的时间。这个一般也不会体现一个路由协议的优劣,如果提高一个路由协议的收敛速度,在这个方面努力也是不太容易的事情。另外,这个邻居的发现实际上只是一个对数据包要传输的大的方向上的判断,就是PIM不可能向一个不运行PIM的路由器发送数据包。PIM2的默认hello是30秒,并且保持计时器是其3.5倍。 建立以源为基础的多播树
这个过程也需要时间,其中主要是两个过程(flood-and-prune),泛洪和修剪。这个时间好像也是不能省的。注意,这个过程是从源发起的。注意,其中有个RPF过程,也是要浪费时间的。 维护以源为基础的多播树
一个接口脱离一个树(prune):一般的串行链路下,一般来说,发一个修剪信息就行了.这么一折腾,肯定要浪费时间.
一个接口加入一个树(graft):主机给路由器发IGMP信息,而路由器给路由器发graft信息!这个都需要时间 质量:这里质量的概念包括两个含义,一个是保证任务的完成,另一个是用最少的资源 保证任务的完成: 要形成一个多播树:
为什么不能全部发出去呢,如果只有两个路由器,这个完全是可行的,可是如果路由器到了一定的数量。这个就不行了。因为要浪费一些宝贵的资源,同时又可能形成环路。所以必须形成一个树。可是建立和维护一个树当然要花时间。 修剪超越(prune-overrides):
以太网不像串行链路,一般来说要出现一些麻烦.比如,一个以太网有三台路由器,上游的的一台路由器连接着连接着两个下游,一个要修剪,可是,另外一个还有接收者,这如何呢?这就需要用到修剪超越技术,这需要两个因素,第一是另外一台也要收到这个消息.第二,那个上游路由器要设置一个计时器(默认3秒)过程就是,B路由器给A路由器发了一个消息,老子不干了,这个消息也同时被C收到了,C大恐,心想这小子真黑,TMD当我不存在啊,赶快也发一个消息给A说:"别啊,我还在呢!"这叫修剪超越! 用最少的资源: 很简单,如果在多访问的环境下,如果一个接收者接两台路由器,是不是两台路由器都向那个主机发信息呢?如果那两台路由器不是猪的话,肯定不会这样做,如何呢,选出一个IP地址高的做DR 地址:这个就重要了,在现实生活中,大家能眼睛看到对方,所以不需要地址,可是在网络世界里,网络设备都是蝙蝠。看不到对方只要靠回声定位了,可是如果有好多,如何识别呢,其实就给对方一个ID了。这个ID大家平常都误叫做地址。没有这些ID,整个网络都是混乱的。 这个地址包括两方面,一个是三层地址,一个是四层地址。 其中PIM1使用的地址是224.0.0.2(三层地址)(所有路由器)协议号(2)(四层地址)
而PIM2使用的专用地址224.0.0.13(三层地址)协议号(103)(四层地址)
路径:要通讯,总要先找到路径才行。可是路径也分多种,大家作人不要走错路,否则一失足成千古恨。当然就是走正路,也很多不同。第一,要走近路,第二,要走宽路,第三,不要走回头路(不要兜圈子,浪子回头除外)
多播的机制造成了在数据的传输过程中不能进行负载均衡,因为每个路由器只是机械的复制数据,所以在不同的接口进行负载无益。记住,负载均衡是均衡不同的数据。
多播的特性是一点对多点,所以,路径就是一个点可以到达多个点的路径。从源到接收点,或者从接收点到源其实都是可以的。PIM-DM用的是所谓的基于源的树。实际上就是以每个源为基础建立起一个树。不同的源走的路径不同。实际上,“道不同者不相为谋,也就是大家走不同的路”,说实话,我挺佩服这种有种的独立的精神的。 简单:这个不用说了,哪个协议的最基本的特点也是配置起来简单。简单包括两方面的含义,一个是配置的简单,节省人的资源,另外一个是运行起来简单,节省路由器的资源。实际上包括PIM-DM在内的许多路由器实际上挺自动化的,一般来说,在接口上启用PIM-DM就行了,其他的让路由器自动完成。关于第二点,其实也就是PIM的控制信息的数据包要足够小了。这个自然是每个路由协议都必须要考虑的问题!
安全:安全的含义,包括两个方面,一个是广义的,就是网络的稳健性和不可非授权访问性。狭义的安全性就是指后者,当然对路由协议来说,主要是防止非授权的路由器加入到一个多播协议树中。很可惜,PIM除了在稳健性方面还有所作为外,对后者几乎没有做。相信将来会有所改进。
独用:独用的概念是个市场性的产物,是人的自私性的体现。独用指一个技术归一家企业所有,而不能和其他企业的设备相互通用。PIM不是一个独用的协议。但是PIM-DM实际上也已经出现了独用的思想。因为其采用的基于以源为基础的多播树实际上也是一个独用的概念。在源不多的情况,并且一个组里面有好多主机的情况下,这种结构非常实用。
通用:这个概念正好和独用相反。PIM是一个通用的协议。并且在PIM-SM里面体现了通用的概念,就是采用共享树。适合于源比较多,并且每个组里面的主机数目不是太多的情况。
PIM-SM模式:
PIM-SM相对于PIM-DM来说,要复杂得多。大家还是对照那几条来分析一下。
速度:一般来说,PIM-DM花费的那些时间,PIM-SM也是要的,注意,PIM-SM不一定要比DM先进,只能说是用在不同的条件下。因为PIM-SM用了共享树的概念,所以在完成整个树的拓扑结构的时候,一定要比PIM-DM多两个步骤。
RP的确定
RP的完成方式有三种:
第一个是静态的配置。这个省了路由器的时间,可是却花费了大家人的时间,特别在大的网络里面,如静态路由一样不可使用。
第二个就是bootstrap协议,这个协议实际上主要的目的是要自动选出RP。每隔60秒发送一个bootstrap信息。而且有一个130秒的计时器,如果过了130秒收不到什么东西。那么呵呵就宣布对方死亡。选完了C-BSR,还要选C-RP,步骤不少。
第三个就是auto-rp协议,这个是思科自己弄出来的。与上一个差不多。差别在于:
1)没有bootstra自动化,RP mapping agent是被指定的
2)RP的选择由RP mapping agent来完成,而上一个由每个路由器来决定
3)用的多播地址不一样
源的注册
这个实际上时间花的也不多,不管怎么样,数据包都得从源走到目的网络,不过也许数据包需要一个解封的过程!因为实际上从源到RP的传输,其多播包是作为内容被封装到单播包里发送的。以顺应RPF检测机制。 质量:PIM-SM其实本身就是一个注重质量的产物,因为基于源的树和共享树实际上就是各有优缺点。所以PIM-SM对共享树的一些缺点做了改进,大家可以想一想,如何改进呢?一个好法就是让RP和源的DR之间做一个SPT(基于源的最短路径树) 源的注册
大家在上面已经讲了,实际上PIM—SM这种即要是设定一个RP,又要维护RPF,(既要作婊子,又要立贞节牌坊),这就造成了矛盾。这种好事情哪有啊。所以从源到RP之间采取了一种欺骗的方式。即源向RP以单播的形式承载多播数据流。实际上多播的信息全部是作为数据承载的。那么如果多播的信息非常多呢。那么这么繁杂的封装解封过程实际上是非常浪费资源的,甚至让RP变得无法承受。所以一定得解决这个问题。那么是如何解决的呢。呵呵,就是以RP为接受者,以源的DR为源建立一个SPT。这下可好了,重新建立了一个树。这样,源的DR可以堂而皇之的发送多播包给RP了。当然了,这时候,如果RP没有组的信息,那么就是没有接受者,所以肯定就浪费了,这个时候,RP就向源发一个停止注册消息。但是也不能老是不发啊,又不能持续发,又不能不发,这网络世界就是闹心,没办法,眼睛看不到,只能采取这种蝙蝠似的回声探测方法。所以,PIM-SM采用了一种叫作register suppression的方法。过程就是当DR收到一个注册停止消息后,那么就开始一个60秒的注册抑制计时器。并且更为巧妙的是,在60秒要到期的前5秒的时候,DR发一个空的注册消息,如果依旧收到一个注册停止消息,那么注册一直计时器要被重置。怎么样,网络世界也讲策略,这叫“兵者,诡道也!” 最短路径树SPT
最短路径树的用途太多了,前面大家已经看到了,源的注册已经用到了最短路径树。最短路径树是效率和质量的一种体现。源的注册实际上是在一般的路径上用到了SPT。有的情况,比如源和接收点都在整个拓扑的边缘,那么实际上他们挨得很近,就是要根据实际的情况进行改变。这个时候可以完全根据实际情况建立一个从源到目的的一个SPT。
其过程是,路由器A首先正常的向RP注册,然后正常的收到了多播信息,这个时候,A察看了一下本身的单播路由表,发现其从其到这个源的最优路径不是从RP那边过来的,于是A就直接加入源,构成一个SPT,然后在向RP发出一个修剪信息。怎么样,够酷吧!什么时候从这个RPT交换到这个SPT呢,这个情况比较多,对于RFC2362,是说当数据传送率很高得时候。而思科就比较简单,觉得可以,立即就进行。当然也可以用命令进行控制。用ip-pim spt-threshold。监控从RP来的那个接口,如果速率到达一定程度,就进行切换,如果再降到一定程度,再返回到共享树。(pim-sm通过设置汇聚点rp(rendezvous point)和自举路由器bsr(bootstrap router),向所有pim-sm路由器通告组播信息,并利用路由器的加入/剪枝信息,建立起基于rp的共享树rpt(rp-rooted shared tree)。从而减少数据报文和控制报文占用的网络带宽,降低路由器的处理开销。组播数据沿着共享树流到该组播组成员所在的网段,当数据流量达到一定程度,组播数据流可以切换到基于源的最短路径树spt,以减少网络延迟。pim-sm不依赖于特定的单播路由协议,而是使用现存的单播路由表进行rpf检查。)
地址:与PIM-SM一样,源的地址,组的地址,PIM路由器的地址,RP的地址,BSR的地址。
路径:整个PIM-SM的数据传输方向是:一开始,这个一个所谓显式的加入过程,因为这个时候RP的地址是已知的,所以接受者可以直接向RP寻求加入,直接构建一个树。此时的共享树的构建信息是由接受者流向RP。这个是构建路径层面的情况。可是当大家想要传输数据的时候,就要遇到一些困难,因为使用了RPF检测机制的PIM来说,数据的传输只能从树根流向数枝,所以,源无法将多播数据流直接传向RP,可是“青山遮不住,毕竟东流去“,源一定得将数据流传向RP才行。当然一开始采取单播的方法,避开多播的忌讳。可是这种频繁的封装解封给路由器造成了巨大的开销,所以这个时候采用了独用的概念,因为现在要解决的问题就是如何把多播数据流从源传到RP,这个时候源成了根,而RP成了树枝,所以这个时候自然想到了从源的DR构建一个SPT,数据流就以多播的方式从DR传向RP了。还有就是路径问题,不仅包括路径的方向,还要包括距离的长短,其实,大家知道,共享树的一个缺点就是有的时候,其路径不是最优化的。所以,在某些情况下,从源的DR到目的可以直接构建一个SPT。 简单:实际上,整个PIM-SM在设计的时候已经考虑了简单的概念,另外简单的概念实际上就是自动化的意思,你想bootstrap协议和auto-rp协议实际上就是自动配置RP,而省去了配置者的劳力。简单的概念最终还是应该以人的容易学习和容易配置为主。一劳永逸也可以称作一种简单。
安全:安全的思想其实也包括了高可用性的概念,这里面C-BSR,C-RP的选举其实也是一个安全的概念。因为一个死掉了,另外一个还可以顶上来。
独用:PIM-SM用到了很多独用的思想,可以看一下,源到RP的SPT的建立,实际上就是一个独用的概念,还有在一定条件下,RPT要转换成SPT。独用的好处就在于它在一定条件下,一定的范围内,对于一定的主体来说,可以产生最大的效率。
通用:整个PIM-SM主要运用的就是通用的思想,主要是指采用了共享树的概念。通用的主旨是在一般的环境下,许多个体可以遵循一个普通的规则,这样就可以节省承载者的资源,可是这样的结构和规则对于每一个普通的个体来说,肯定不是最优的。所以矛盾就在这里。这里更应该遵循易的原则,就是要根据具体的情况具体分析,否则就是刻舟求剑。
总结: 实际上无论从大的方面,一个大的工程的设计,实行,实施,还是小到一个具体的技术,解决方案,都离不开这些东西,这些东西不是截然分开的,孤立的,而是相互联系,相互影响,往往一个占矛盾的主要方面,可是在条件发生变化时,那么另一个旋即成为矛盾的主要方面。所以,大家在思考,学习一项技术的同时,首先要树立这八个方面的坚固思想,同时要注意发展变化。 PIM PIM,协议无关组播,作为一种组播路由信息,顾名思义,它独立于IP路由选择协议。也就是说,不管那一种单播路由选择协议,PIM都可以使用这些信息实现组播转发。事实上,PIM是使用现存的单播路由表去实现RPF校验功能,而不是去维护一个分离的组播路由表。 PIM Neighbor Discovery PIM路由器使用PIM Hello message来建立邻居关系,类似于OSPF。PIM v2Package封装在IP包中,协议号是103,PIM v2路由器使用224.0.0.13地址发送Hello包。 PIM v1组播路由器同样使用Hello Message来建立邻居关系,其Hello Message也称为PIM Query message,可以用于选举IGMPquery路由器。PIMv1 hello message封装在IGMP包中,PIM v1路由器使用224.0.0.2地址发送PIM v1 hello message。 Hello-Period:30sHello-Hold:90s(3* Hello-Period) PIM-DM Designated Router 对于PIM-DM在多路访问网络中还需要选举DR,DR对于PIM-DM没有多大的意义,其主要用于PIM-SM。在IGMP v1中,DR也作为IGMP查询路由器。 PIM路由器使用PIM Hello Message进行DR的选举。选举过程如下: 1. 通过比较DR-Priority,越高越好,针对PIM v2 2. 通过比较接口IP地址,越高越好 DR-Priority是一个新添加的选项,它在PIM hello message中。并不是所有的路由器都支撑DR-Priority,当一个PIM v2收到一个没有DR-Priority的hello包时,它会知道发送方并不支撑DR-Priority,而在选举DR-Priority时,只会比较IP地址。
PIM-DM转发机制
1. 收到组播包,就通过输入包的源地址(S)和组播地址(G)来搜索组播路由表的最长匹配。这个最长匹配搜索首先搜索组播路由表中的一个(S,G)匹配项,然后使用这个相匹配的项。如果现有的(S,G)项都不匹配,就寻找(*,G)项的匹配,再加以使用。注意:密集模式只使用组播路由器表中与(S,G)项对应的源树,密集模式组播信息也仅使用(S,G)项来转发。因此如果当密集模式组的组播包到达时,无现有的(S,G)项与之匹配,那么将根据规则创建一个(S,G)项。
2. 在找到相匹配的项(或新创建了)时,在输入包上进行RPF检查。此项检查是通过将组播路由表上的输入接口(通过单播路由器表确定)与接收该包的实际接口进行比较完成的。如果不一致,则该包被丢弃。注意:组播路由器每隔5s,根据单播路由表,对每个组播项的输入接口信息进行一次重新的计算。
3. 如果该包经正确的接口到达(即RPF检查成功),将此包转发到所有的输出接口列表上未剪枝的接口上。
PIM-DM扩散机制
1. 当组播路由器收到组播包时,这些组播包将向所有PIM邻居和组播终端接收方扩散。同时创建(S,G)(*,G)项,其入口列表进行RPF校验,出口列表为与PIM邻居和组播终端接收方相连的接口,但是要去掉入口,以防止环路。
·当点到点的非RPF接口收到组播流
·叶路由器并且没有直接连接到接收方
·非叶路由器在点到点链路,从它的邻居处收到一个剪枝
·非叶路由器在局域网段(没有直接连接接收方),从它的邻居处收到一个剪枝,并且同一网段的其他路由器不进行Prune Override。
所谓的剪枝,其实就是去掉那些不需要参与组播的接口。当一个PIM路由器并不直接连接接收方,并且它的下游组播路由器都已经完成剪枝,那么它的组播路由条目也并没有存在的必要,所以会发生剪枝。对于非RPF接口而言的意思是,对于非最佳路径,是没有必要参与到组播的转发中来的。
所谓叶路由器,其实就是没有下游邻居的路由器。
Prune Override
PIM Override使用一个投票的机制,主要针对多路访问网络。PIM路由器让它的下游邻居投票,决定是否将组播源(S,G)剪枝。每一个路由器可以使用Join Message否决Prune Bill。PIM路由器不会关注于投票的数目,它监听一段时间,查看在同一子网段是否有否决Prune Bill的Join Message。如果没有,那么Prune Bill将通过,将剪枝该接口。
当PIM路由器收到一个PIM message,一个3s的Prune-Delay时间开始计时。如果没有收到Join message,时间过期后,剪枝发生。如果收到Join message,则取消剪枝。
PIM通用规则
1. 只要创建一个(S,G)项而其相应的父(*,G)项不存在,就首先自动创建新的(*,G)项。
2. RPF接口是作为对源IP地址(或稀疏模式(*,G)项,RP)的最小开销路径接口(基于管理距离/尺度)来估算的。如果多个接口开销相同,选择最高IP地址的接口作为“切入点(tiebreak)”
3. 在创建新的(S,G)项时,其出口表提供一个来自父(*,G)项的出口表副本。
4. 组播转发项的入口(RPF接口)决不能在其出口表上出现。
5. 每个组播状态项的RPF接口(即输入接口)每5秒重新计算一次,而且依据规则4对输出接口的列表做适当的调整(以防灾出口表上出现输入接口)。
6. 对(*,G)项的出口表的添加和删除都被复制(在通用规则4的限制下)到所有与该组有关的(S,G)项。
PIM-DM模式规则
1. 密集模式(*,G)项的输出接口列表映射了现有的PIM-DM邻居接口或直接连接的组成员接口。
2. 密集模式(S,G)项的出口在剪枝时不能删除,而是被标记为“Prune/Dense”,且仍保留在出口表上。
3. 当一个接口的PIM邻居列表上增加一个新邻居时,该接口在所有PIM-DM(S,G)输出列表重新设置“Forward/Dense”状态。
PIM-SM:稀疏模式独立组播协议
(PIM-SM:Protocol Independent Multicast-Sparse Mode)
独立组播协议(PIM)有两种模式:稀疏模式和密集模式。本文主要讲述稀疏模式独立组播协议(PIM-SM)。
PIM-SM 是一种能有效的路由到跨越大范围网络(WAN 和域间)组播组的协议,而 PIM-DM 主要用于局域网。PIM-SM 协议不依赖于任何特定的单播路由协议,主要被设计来支撑稀疏组。它使用了传统的基于接收初始化成员关系的 IP 组播模型,支撑共享和最短路径树,此外它还使用了软状态机制,以适应不断变化的网络环境。它可以使用由任意路由协议输入到组播路由信息库(RIB)中的路由信息,这些路由协议包括单播协议如路由信息协议(RIP)和开放最短路径优先(OSPF),还包括能产生路由表的组播协议如距离矢量组播路由协议 (DVMRP) 。
PIM-SM 主要支撑以下方面:
维护 IP 组播服务模式(基于接收端启动的组播组成员关系)。在该模式中,源端只需要将数据包放到第一跳以太网上,而不需要任何信令。接收端将给路由器发信令,以便加入到接收该数据的组播组中。
保持主机模型不变。PIM-SM是一个路由器到路由器的协议,这意味着主机不需要升级,只是需要在网络中配置支撑 PIM-SM 的路由器。
支撑共享和源分配树。对于共享树,PIM-SM 使用名为 Rendezvous Point (RP)的中心路由器,作为共享树的根。所有源主机都将它们的组播通信发送给 RP,RP 将依次通过通用数将这些包转发给组的所有成员。源树将源端和接受端直接相连,每个源端都有一棵单独的树。从单播路由表来看,每棵源树都是最短路径树。PIM-SM 可以使用其中一种类型的树,或者同时使用两者。
维护任何特定单播路由协议的独立性(参见前文)。
使用软状态机制,以适应不断变化的网络环境和组播组。软状态意思是,除非被刷新,否则路由器的状态配置是短期的,并在一段时间后失效。
当前 PIM-SM 有两种版本。大家主要关注第二版本,其应用较为广泛。
PIM-SM特点
1. 显式加入模型
在PIM-SM模式中,组播信息只被发送到特别需要它的网络位置。这种方式是通过PIM-Join来完成的。PIM-Join被一跳一跳地发送到树的根节点(注意:PIM-SM中的树的根节点是共享树的RP或者在共享树中,直接与组播源连接的第一条路由器)。当本次PIM-Join沿着树上行发送时,沿途的路由器建立组播转发状态,以便需要的组播信息可以沿着树下行被转送回去。
同样地,当不再需要组播信息时,路由器为了剪枝不需要的信息,沿着树上行,向根节点发送PIM-Prune消息。当此次PIM-Prune沿着树,向上一跳一跳地传送时,每一个路由器适当地更新它的转发状态。其更新经常导致与组播组或源有关的转发状态被删除。
这就是所谓的显式加入,转发状态是以PIM-Join的结果决定的。其与PIM-DM有本质性的区别。PIM-DM的转发状态是基于组播数据包的到达决定的。
2. PIM-SM共享树
PIM-SM操作围绕一个单向共享树展开,其共享树的根节点成为汇合点(RP)。由于扎根于RP,因此共享树有时也称为RP树,RPT。
需要收到来自指定组播信息的最后一跳路由器(有一个直接相连的组播组接收站点的路由器)加入共享树。当最后一跳路由器不再需要指定组播组信息时(即不再有任何组播组的接收站点时)路由器把它自己从共享树上剪枝掉。
由于PIM-SM用的是只能下行的单向共享树,因此必须登记RP,以便使它们的组播信息沿着共享树(通过RP)下行。当网络中存在该组的活动接收站点时,这一注册过程实际上由RP到源的一个SPT加入。Thisegistration process actually triggers an SPT Join by the RP toward the Sourcewhen there are active receivers for the group in the network.
这里有几个关键的概念,PIM-Join、PIM-Prune、PIM-RP-Register,当有活动组播源时,启动Join,更新组播路由器的转发状态(即组播路由表)。当活动组播源停止时,发送Prune,也更新路由器的转发状态(即组播路由表)。由于PIM-SM都是通过RP作为汇聚点来转发组播包的,所以必须保证整个组播域中,每一个成员路由器都知道到达RP的路径。这就需要RP-Register。
3. PIM-SM最短路径树
PIM-SM的主要优势之一就是它不限制大家只能通过共享树接收组播信息。也可以使用SPT进行转发,同时SPT是独立于RPT的。
4. PIM加入/剪枝消息
事实上只有一个单独的PIM加入/剪枝消息类型。
5. PIM-SM状态刷新
路由器通过定期(每隔一分钟)向RP方向的上游邻居发送(*,G)加入消息刷新共享树。此外路由器定期(一分钟之后)向源方向的上游邻居发送(S,G)加入信息刷新SPT。只要路由器的(*,G)和(S,G)条目中,至少有一个非空输出接口列表,那么(*,G)和(S,G)的加入消息就会被路由器发送。如果这些定期的加入消息没有被发送,G的组播状态最终将超时(在3分钟以后),并且与(*,G)(S,G)组播路由器条目有关部门的分发树将被删除。
6. 源注册
由于PIM-SM使用一个单向的共享树,组播信息只能沿着树向下游动。因此,组播源必须设法使他们的信息到达RP,以便信息能够从共享树流出。PIM-SM通过让RP加入SPT,再返回源来完成这一任务,以便它能够收到源的信息。但是,首先RP必须设法知道源始存在的。为了完成这个任务,PIM-SM利用PIM注册和保留消息完成源注册过程。
PIM-SM注册消息由第一跳DR(也就是直接与一个组播源相连的一个DR)发送到RP。PIM注册消息有两重目的:a. 通知RP源S1正在有效地向组G发送信息。 b. 为了沿着共享树向下发送信息,向RP转发源S1发送的最初的组播信息包(每一个封装在一单独的PIM注册消息内)。
直接与源相连的DR收到组播后,在组播路由表中建立一个(S,G)条目。同时将该组播包封装在一个独立的PIM注册消息中,单播给RP。
RP收到一PIM注册消息,解封装后检查,如果该信息包来自一个存在的组播组(也就是,组的共享树加入已经被收到),RP沿着共享树向下转发信息包。如果没有组共享树,RP只是简单的丢且组包信息包,无其他后续动作。
RP沿着共享树向下发送解封装了的组播包。
RP在返回源S1的方向上,发送一条(S1,G)加入消息,把源S1加入到SPT,并且把(S1,G)条目添加到RP。(S1,G)加入消息一跳一跳地传送,返回第一条DR。DR收到后,明白DR到RP的(S1,G)SPT已经建立。现在(S1,G)信息开始通过新建的(S1,G)SPT流向RP。
7. 最短路径树切换
特定源的第一个组播数据包以共享树的方式发送,当RP与接收方直连的DR间的SPT建立后(发送方直连的DR与RP之间的SPT已经建立)。其使用SPT发送数据包。这里牵扯到一个RP剪枝问题。确保数据只是通过SPT发送,而不通过共享树发送。
8. PIM-SM指定路由器
DR就是向RP发送注册消息的路由器。
9. RP发现
|