浅议PIM(一文看懂PIM)

今天写一下组播PIM协议的相关内容,目的是试图用最简洁的语言方便0基础同学看懂PIM的原理,关于PIM更加深层次的内容欢迎查阅本博客其他文章,有关于PIM的深层次理论知识。

一、先导知识——了解组播

对于组播不是很了解的同学,可以先看这一篇文章浅议组播(一文看懂组播),以对组播基础知识现有了解。
简单来说,组播还是在单播的基础上实现的,对于组播源和组播接收者来说,还是有着自己的IP地址。只不过组播源在发送组播流量的时候,目的IP地址是一个D类的组播地址,而组播接受者也会接收目的地址是指定D类IP地址的数据包,中间的路由器自然也会根据相应的机制,完成这一特殊数据包的转发,而实现路由器转发的基础,就是下面要讲的PIM协议。

二、PIM协议

1、PIM协议简介
PIM,Protocol Independent Multicast,协议无关组播,是一个运用于路由器组播转发的协议。PIM的实现依赖于网络中单播路由的互通,即组播网络必须先完成单播路由表的构建。说PIM“协议无关”,意思就是运行PIM的网络单播协议可以是任何协议,包括IS-IS、OSPF甚至是静态路由也可以。
PIM协议本身比较复杂,但是其核心就是指导组播流量的转发。换句话说,就是如果一个路由器从一个端口收到了组播流量,下一步应该从哪个端口发送出去。从宏观层面上,PIM协议最终实现了一个“组播分发树”的构建,这棵树以组播源为根,组播接收者为叶子节点,组播流量就是沿着这棵树来进行传递。从微观层面上,PIM协议最终构建了一张表——组播路由表,该表有组播源(组播源IP地址)、组播组(组播IP地址)、组播上游接口、组播下游接口四项内容。有了这张表,路由器就知道,从组播源发来的某个组播流量,应该从哪个上游接口进入,并且从哪个下游接口发出。
PIM有两种模式——DM模式和SM模式。这两种模式的不同就是在构建组播分发树和组播路由表的方式差异上。
2、PIM-DM方式实现
DM,即Dense mode,密集模式。这种方式实现组播,当有组播源发出组播流量时, 每个路由器都会先判断接收组播流量的上游接口。组播流量数据包中有组播源的IP地址,这样,每个路由器都会从自己的单播路由器中查找去往该单播IP的路由,在单播路由中下一跳是的接口就是该组播流量的上游接口。同时将除该接口之外的所有端口暂时定义为自己的下游端口,并向这些下游接口转发组播流量。PIM协议规定,一个路由器只接受从上游接口发送来的组播流量。那么如果一个路由器从其他接口接收到组播流量会怎么办呢?会直接丢弃该流量,同时向该接口发一个Prune消息,告诉对方:**别发了,我不接收!**为什么要这么做呢?是为了防止在组播流量的传递过程中出现路由环路,这样,每个路由器只接受从它认为组播源到自己最优的路径发来的组播流量。同时当收到下游发来的Prune消息后,也会停止对该端口上组播流量的发送。通过重复上述过程,组播流量可以沿着组播源,慢慢的洪范到全网,形成了组播分发树,这样组播接收者也能够接收到组播流量了。
但是!这样做还有一个问题,那就是这个样子的树其实会把组播流量传递到整个网络中,而不管这个网络的终点处有没有组播接收者。为了消除这种现象,PIM-DM模式还定义了“剪枝”的过程。如果一个路由器发现自己直连的网络中没有组播接受者,同时也没有其他的路由器,即组播流量根本不需要传递到我这里来,因此该路由器就会向自己的上游路由器发送Prune信息,告诉对方:**我这里不需要接收组播流量,别给我发了。**同样的,一个路由器当发现下游接口收到这样的Prune信息,就会停止对该接口上组播流量的转发,而如果一个路由器发现自己压根就没有下游接口时,就会向他的组播上游接口发Prune信息,告诉对方:**我这里不需要接收组播流量,别给我发了。**这样一来,通过这样的“剪枝”过程,就修剪掉“组播分发树”中多余的组播流量了。
而如果一个原本不需要组播流量的路由器,突然又需要组播流量了,比如下游突然有一个设备加入了组播组,该怎么办呢?如果出现上述情况,该路由器就会向它的上游接口发送一个Graft信息,告诉对方:**我这里需要接收某组播组流量了,请给我传递该流量。**同样的,它的上游路由器就又会把该信息传递给它的再上游的路由器,最终会有一个路由器实现把组播流量转发给他们。
总得来看,PIM-DM的实现有以下四点:
①开始时,所有的组播路由器假设自己下游有组播接收者,接受并发送组播流量。
②当①过程完成后,没有下游组播接受者的路由器发送Prune消息,逐步将多余的组播流量删除。
③当原本不需要组播流量的路由器发现又需要转发组播流量时,会发Graft消息告诉上游路由器,这样逐步组播流量又会发送给它。
④PIM-DM模式的实现需要组播源先发送组播流量,这样才能够完成组播分发树的构建,而如果一个路由器先收到下游发送的加入某个组播组的报文,则由于不知道该组播组的组播源,因此无法向上游转发该消息。
3、PIM-SM方式实现
总得来看,PIM-DM方式实现比较粗犷、野蛮,会造成组播流量的浪费,适合于小型的网络。而PIM-SM(Sparse Mode,稀疏模式)模式,相比于DM模式,就比较节省组播流量了。
PIM-SM模式定义了RP的概念,RP,即Rendevous Piont,是组播流量的汇聚点。RP是组播中一个特殊的路由器,该路由器会首先收集组播网络中组播接收者的信息,力图首先构建一棵以RP为根,以各组播接收者为叶子节点的树——RPT。当组播源开始发送组播流量后,连接组播源的路由器向RP单播发送组播流量包,RP在收到该组播流量后就会将组播流量沿着RPT的方向,发送到下游去。
可以看出,PIM-SM方式是先构建RPT,然后再接收发送组播流量,如果组播源已经发送组播流量,而RPT还没有建好,此时RP不会转发组播流量,因此这就避免了组播流量的洪范。
此外,这也面临着一个问题,那就是组播流量先从组播源到RP,再由RP到组播接收者,这样组播流量可能走的是次优路径。为了解决这个问题,PIM-SM模式还定义了由RPT向组播分发树SPT的转换。该转换总是由直接连接组播接收者的最后一跳路由器发起,该转换会逐级向上传递,由于中间路由器已经知道了组播源的IP地址,因此中间路由器会尝试在去往组播源的最优上游端口上请求组播流量,当SPT建立后,中间路由器同样的也会向RPT发送Prune消息,修剪掉RPT,从而完成RPT到SPT的切换。
原创不易,转载请说明出处,原文链接:
https://blog.csdn.net/weixin_40228200/article/details/118266633

  • 17
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远是少年啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值