理解多播PIM

2018年7月15日23:33:40 发表评论 568 views

现代的网络其实可以由以下8部分组成:

速度;质量;地址;路径;简单;安全;独用;通用
这些取代了以前的东西,构成了新的八卦。他们相互作用又形成了新的六十四卦。可以解释我们遇到的所有的问题。今天我们就看看,我们如何用它来解释多播路由协议中的PIM

速度:任何一种协议,都离不开这个因素。这代表一种最最基本的愿望,只要是通信,没有希望速度慢的。PIM是一种路由协议。当然要采取各种各样的机制让数据源和数据的目的建立起路径。因为只有路径建立的越快,数据才能越快的开始传输。我们可以看看PIM是如何来考虑速度这个因素的。换句话说,就是让PIM如何实现快速的收敛。

实际上,从多播的源头机器传到客户端机器,实际上一般来说,要分两段,一个就是客户机到路由器。一个就是路由器到路由器。我们今天所要谈论的是路由器到路由器之间的事情,其他的东西在其他文章里以专题论述。

其实,路由器到路由器之间的东西还是想对简单,但是问题是如何能完成任务,并且摒弃不必要的浪费。速度就是关心如何能迅速的完成这些任务。

PIM-DM模式:

需要花费的时间主要包括:
1.        邻居的发现
这是许多路由协议必须花费的时间。这个一般也不会体现一个路由协议的优劣,如果提高一个路由协议的收敛速度,在这个方面努力也是不太容易的事情。另外,这个邻居的发现实际上只是一个对数据包要传输的大的方向上的判断,就是PIM不可能向一个不运行PIM的路由器发送数据包。PIM2的默认hello是30秒,并且保持计时器是其3.5倍。

2.        建立以源为基础的多播树
这个过程也需要时间,其中主要是两个过程(flood-and-prune),泛洪和修剪。这个时间好像也是不能省的。注意,这个过程是从源发起的。注意,其中有个RPF过程,也是要浪费时间的。

3.        维护以源为基础的多播树

一个接口脱离一个树(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多两个步骤。

1.        RP的确定
RP的完成方式有三种,一个是静态的配置。这个省了路由器的时间,可是却花费了我们人的时间,特别在大的网络里面,如静态路由一样不可使用。

第二个就是bootstrap协议
这个协议实际上主要的目的是要自动选出RP。每隔60秒发送一个bootstrap信息。而且有一个130秒的计时器,如果过了130秒收不到什么东西。那么呵呵就宣布对方死亡。(如果人类能以网络设备的时间要求自己,该多么有效率啊!)选完了C-BSR,还要选C-RP,步骤不少。

第三个就是auto-rp 协议
这个是思科自己弄出来的。与上一个差不多。
差别在于,1)没有bootstarp自动化,RP mapping agent是被指定的2)RP的选择由RP mapping agent 来完成,而上一个由每个路由器来决定。3)用的地址不一样。

2.        源的注册
这个实际上时间花的也不多,不管怎么样,数据包都得从源走行目的网络吧。不过也许数据包需要一个解封的过程!因为实际上从源到RP的传输,其多播包是作为内容被封装到单播包里发送的。以顺应RPF检测机制。

质 量:
PIM-SM其实本身就是一个注重质量的产物,因为基于源的树和共享树实际上就是各有优缺点。所以PIM-SM对共享树的一些缺点做了改进,大家可以想一想,如何改进呢?一个好法就是让RP和源的DR之间做一个SPT,(知不知道什么是SPT,不知道的话立刻打自己一个耳光。)

1.        源的注册
我们在上面已经讲了,实际上PIM—SM这种即要是设定一个RP,又要维护RPF,(既要作婊子,又要立贞节牌坊),这就造成了矛盾。这种好事情哪有啊。所以从源到RP之间采取了一种欺骗的方式。即源向RP以单播的形式承载多播数据流。实际上多播的信息全部是作为数据承载的。那么如果多播的信息非常多呢。那么这么繁杂的封装解封过程实际上是非常浪费资源的,甚至让RP变得无法承受。所以一定得解决这个问题。那么是如何解决的呢。呵呵,就是以RP为接受者,以源的DR为源建立一个SPT。这下可好了,重新建立了一个树。这样,源的DR可以堂而皇之的发送多播包给RP了。当然了,这时候,如果RP没有组的信息,那么就是没有接受者,所以肯定就浪费了,这个时候,RP就向源发一个停止注册消息。但是也不能老是不发啊,又不能持续发,又不能不发,这网络世界就是闹心,没办法,眼睛看不到,只能采取这种蝙蝠似的回声探测方法。所以,PIM-SM采用了一种叫作
register suppression的方法。过程就是当DR收到一个注册停止消息后,那么就开始一个60秒的注册抑制计时器。并且更为巧妙的是,在60秒要到期的前5秒的时候,DR发一个空的注册消息,如果依旧收到一个注册停止消息,那么注册一直计时器要被重置。怎么样,网络世界也讲策略,这叫“兵者,诡道也!”

2.        最短路径树
最短路径树的用途太多了,前面我们已经看到了,源的注册已经用到了最短路径树。最短路径树是效率和质量的一种体现。源的注册实际上是在一般的路径上用到了SPT。有的情况,比如源和接收点都在整个拓扑的边缘,那么实际上他们挨得很近。这里也用到了易经的精髓,就是要根据实际的情况进行改变。这个时候可以完全根据实际情况建立一个从源到目的的一个SPT。
其过程是,路由器A首先正常的向RP注册,然后正常的收到了多播信息,这个时候,A察看了一下本身的单播路由表,发现其从其到这个源的最优路径不是从RP那边过来的,于是A就直接加入源,构成一个SPT,然后在向RP发出一个修剪信息。怎么样,够酷吧!什么时候从这个RPT交换到这个SPT呢,这个情况比较多,对于RFC2362,是说当数据传送率很搞得时候。而思科就比较简单,觉得可以,立刻就进行。当然也可以用命令进行控制。
用ip-pim spt-threshold。监控从RP来的那个接口,如果速率到达一定程度,就进行切换,如果再降到一定程度,再返回到共享树。
(这个其实深刻体现了周易的卦里面一个爻的位置发生变化,就会影响整个变化。)

地 址:
与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主要运用的就是通用的思想,主要是指采用了共享树的概念。通用的主旨是在一般的环境下,许多个体可以遵循一个普通的规则,这样就可以节省承载者的资源,可是这样的结构和规则对于每一个普通的个体来说,肯定不是最优的。所以矛盾就在这里。这里更应该遵循易的原则,就是要根据具体的情况具体分析,否则就是刻舟求剑。

这里只是做了一个小小的分析总结,实际上无论从大的方面,一个大的工程的设计,执行,实施,还是小到一个具体的技术,解决方案,都离不开这些东西,这些东西不是截然分开的,孤立的,而是相互联系,相互影响,往往一个占矛盾的主要方面,可是在条件发生变化时,那么另一个旋即成为矛盾的主要方面。所以,我们在思考,学习一项技术的同时,首先要树立这八个方面的坚固思想,同时要注意发展变化。

 

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: