您好,欢迎来到宝玛科技网。
搜索
您的当前位置:首页PIM协议笔记摘要1

PIM协议笔记摘要1

来源:宝玛科技网
关于PIM(摘自cisco官方文档):

发送者和组成员可能在远程网络那么这样一来,发送者发出的数据,必须

经过路由器才能到达组成员的网络,所以要使组播数据准确地被转发到组成员的网

络,就必须让中间的路由器也知道组成员网络的位置所在。两个不同网络的主机使

用单播通信时,数据可以被中间路由器准确地转发,是因为路由器的单播路由表中

能够找到目标网络的位置,如果要让路由器也能像转发单播数据一样,将组播根据

路由表来精确地转发到目的地,那就需要让路由器拥有像单播路由表一样的组播路

由表,从而让路由器在收到组播时,就像查单播一样,去查组播该从什么样的接口

被发出去才能到达目标网络。要让路由器生成一张功能完全的组播路由表,就需要

在路由器之间运行一种协议,这种协议可以让组播源和目的之间的路由表生成单播

表一样地生成组播表,最后路由器根据这张组播路由表来完成组播的转发。这个协

议就是 PIM (Protocol Independent Multicast)。其实要让路由器知道目标组

员的位置,完全可以依靠单播来找到组员,所以只要组播的源和目的之间单播是通

的,那么组播路由表就能建立,而不用管单播运行的是动态路由协议还是静态路由

协议,但是前提是 PIM 必须依靠单播路由表才能生成。 查看:show ip mroute

show ip mroute 224.1.1.1

组播树

因为在需要将一份数据同时发给多个接收者时,而开发了组播技术,所以组播的发

送者通常面临着要将数据发向多个接收者,并且这些接收者可以分布在任意网络的

任意位置。如果接收者在远程网络,那么就需要路由器提供组播转发,所以要保证

接收者能够正常收到组播,就必须让路由器知道自己该将组播从什么样的接口发出

去,当组播到达下一跳路由器后,下一跳路由器同样也必须知道该将组播从什么样

的接口发出去,即使接收者不是与自己直连的,只有这样让路由器之间协同工作,

都能够记住组播的出口,最终在发送者与接收者之间形成一条连线,这样才能完成

组播的转发。当多个网络存在接收者时,那么这样的连线就会有多条,组播发送者

到接收者之间的这些转发线路,被称为组播转发树,而组播发送者就好比是组播树

的树根,组播总是从根发向接收者。

总结:记住组播的出口信息,这就是组播路由表的工作。

组播反向路径转发

路由器不小心或者由于各种原因再将组播发送回来,对于这样已经出现环路的数据,

如果路由器收到后,再次将组播转发出去,那么只会形成组播风暴,最终危害整个网络。

结论:必须只将数据往接收者的方向转发,而绝不能往发送者的方向转发

组播反向路径转发(mRPF),让组播路由器只将数据往接收者的方向转发,而不能往发送者的方向转发,也是组播路由器必须遵循的机制。

结论:组播路由器在收到组播数据后,都要对数据进行 RPF 检测,只有从源的方向发来的数据才能被转发,从其它接口过来的数据被认为是无效的。

PIM-DM(密集模式)

要形成组播树,路由器需要知道哪些接口出去能够到达接收者,并记录下来,然后

再记录到发送者的 RPF 口。要让路由器知道哪些接口存在接收者,有两种方式,

第一种方法是接收者主动向路由器报告,第二种方法是路由器主动向网络中发出查

询,而 PIM-DM 模式中,采用的方法为路由器主动向网络查询是否有接收者。

3个接口状态:

forwarding RPF 接口 pruning

3个接口状态: forwarding RPF 接口 pruning

PIM-SM(稀疏模式)

1.建立组播树时,PIM-SM并不会让路由器发送查询数据包去查询组成员,而组成员的发现是靠组成员自己主 动向路由器发送报告数据包

2.记录路由表的方式也不一样,例如网络中有一个组,地址为:224.1.1.1,发送者为 100.1.1.1,

PIM-SM 模式记录为(*,G),不关心组播的源地址,而统统将源地址使用星号*来表示,

称为(*,G) ,其中*就是组播源地址,G 就是组地址。

3.2个接口状态:forwarding和RPF 接口,不记录pruning状态的接口,节省资源。

RP

(*,G)造成路由器不知道组播发送者的 IP 地址是什么,也就无法完成 RPF 反向路径检测。

在这种情况下, PIM-SM 在网络中选出一个组播会聚点,即Rendezvous Point (RP),

结论:

1.RP 就是组播网络的核心,发送者统一将组播数据发送到RP,然后 RP 再将数据发到接收者。 2.RP的地址,就是组播源的 IP 地址

3.RP 就是组播源,最后 PIM-SM 中的组播树,即(*,G)形式的树被称为共享树(RPT)。

4.RP是SPT和RPT的汇聚点(像一个中介,不管你买房还是卖房,都要通过中介)

PIM中的消息

PIM-DM使用5个PIMv2消息: 1. Hello

a) 使用hello消息来发现邻居,一旦PIM路由器启动,他就周期性地在每个配置PIM的接口上发送hello消息。 b) PIMv1路由器有相同的功能,但他们采用query消息。 c) Hello消息中有一个保持时间,这个时间定义了邻居等待下一个消息的最长时间,如果没有等到这个消息,

邻居就宣布这个发起路由器已经死亡。

Hello默认为30s,可以用ip pim query-interval命令加以改变,保持时间自动设为hello消息间隔的3.5倍---105s 。

2. Join/prune(加入/剪除)

a) Prune消息的目的地址为224.0.0.13,上游路由器的地址封装在这个消息中。 b) 组播源开始向所有邻居发送查询消息,邻居会再向自己的邻居

发送查询消息,如果有路由器连接着组成员,那么

就会向上一跳邻居发送 join 数据

包,用来通告自己需要接收组播,从而将自己接入组播树。其它没有连接组成员或

不需要接收组播的路由器则向上一跳邻居发送 prune 数据包,用来通告自己不需要

接收组播,状态被标为 prune,而不是 forward。

3. Graft(嫁接)

a) 该消息是以单播方式传送到上游邻居,当上游路由器受到Graft消息,就把收到

这个消息的接口加到他的 输出接口列表中。这个接口设为前传状态,并且马上 用单播方式给新的下游邻居发送一个graft ack消息。

b) 如果路由器已经把自己从多播树中剪除,那么他必须向自己的上游路由器发送一个 graft消息,不能发送 join 数据包

c) 当路由器发送了graft消息,就会等待graft-ack消息,等待时间为3s,如果在这段

时间内没有收到确认信号, 路由器就重新发送graft消息

4. Graft-ack(嫁接确认) a) 参考上面

5. Assert(声明)

a) 选举指定前转器,Assert 是用来选举 PIM 前转器的,当从源到组成员有多条

路径可走时,则选择其中唯一的一条路径,被选中的路由器称为 PIM 前转器。

b) Assert 消息中包括源和组地址,以及到源的单播路由 AD 值和 metric 值,

先选AD 值低的,其次是 Metric,最后是最高IP 地址,落选的把自己的出口剪除。

Assert机制

主要为了防止复制包问题(选举转发路由器)

过程:

如果是以上这个图的情况,R1和R2收到组播包后都会向PC发送组播包,这时PC端将会收到2个同样的组播包。

解决这种复制包问题的方法就是Assert机制:当一个组播路由器从一个OIL接口收到组播包后表示除了自己之外,还有别的组播路由器在转发这个组播流量。这时如果路由器在接口上启动了assert机制,就会发送assert包带上distance,metric,这个distance,metric是指单播路由表中组播包源的路由的管理距离和度量值。用于选举出一个路由器来转发这个组播包,选举失败的路由器会停止转发组播包,并向源prunes。

选举机制如下:首先比较distance,然后比较metric,选小的;如果都一样,就比较发送assert包的接口地址,选大的。

剪除覆盖

过程:R2向R1发送一个prune消息,R1的地址是封装在这个消息中的,目的地址为224.0.0.13,

当R1受到这个消息,并不立即剪除这个接口,而是设置一个3s的计时器,同时,因为prune消息

的目的地址是多播地址,R3也受到这个消息,他看到这个要剪除的组时他要继续接收的那个,

而这个消息也已经发送到了他的上游邻居处,因此,R3向R1发送一个join消息,如上图所示,

这样R3发出的join消息就覆盖了R2发出的prune消息,只要R1在3s定时结束前收到这个join消息, 流量就不会中断。 口诀:3s,join覆盖prune

PIM-SM:

PIM-SM采用了7种PIMv2的消息 1. Hello—邻居的建立与维护

2. Bootstrap(引导)—用于RP的选举 a) BSR每隔60s发送一次

b) 自举计时器为130s(类似于死亡时间) c) 多播地址为224.0.0.13,TTL为1

3. Candidate-RP-Advertisement—用于RP的选举 (后选RP宣告)

C-RP单播向BSR发送,该消息含有C-RP的地址和优先权 4. Join/prune(加入/剪除) 5. Assert(声明) 6. Register(注册)

7. Register-stop(注册终止)

其中hello、join/prune和Assert 3条消息在PIM-DM中也有,其余4条就是其特有消息

RPF 检测失败

在 PIM-SM 中,因为(*,G)形式的记录中不知道组播源的地址,也就无法完成 RPF

检测,但是又由于接收者收到的数据,都应该是 RP 发来的,路由器也就认为 PIM-SM

中的组播源地址,就是 RP 的地址,在这种情况下,路由器会以 RP 的地址为源地址

做 RPF 检测,但是在下面的拓朴中,就会出现问题:

如上图所示,当所有路由器都认为 RP 地址 23.1.1.3 就是组播源地址时,这样去

做 RPF 检测,在 R4 上检测时,因为 R4 的路由表中会显

示从接口 S 0 /0 出去可以到达

23.1.1.3,所以组播从 R4 的 S 0 /0 被发进来时,则 RPF 检测可以通过,所以在 R4 上 没有任何问题。

当在 R2 上做RPF 检测时,因为 R2 的路由表中显示到达 23.1.1.3 应该从接口 F0/1

出去,所以 R2 只会接收从接口 F0/1 发进来的组播,从其它接口发进来的,都会被

认为是环路而被丢弃。因此在真正的源 12.1.1.1 将组播从 R2 的 F 0 /0 发进来时,R2

会因为 RPF 检测失败,从而丢弃所有的组播数据,这样一来,组播也就无法通信了。 PIM DR

在 PIM-SM 中,组播源没有机制用来宣告自己的存在,又因为 PIM 路由器都认

为 RP 才是组播源,而当直接的组播源向 RP 发送组播时,会导致某些路由器 RPF 检

测失败,因此在 PIM 网络中,真正的源需要向 RP 发送注册消息,以宣告自己的存

在,而发送注册消息在多路访问的网络中则是由 DR 来代为完成的。真正的源向 RP

发出第一个组播包时,DR 将此包封装在单播中发向 RP,这

称为注册,发送的注册

消息会从 DR 到 RP 之间建立一条源树,也就是(S,G)的记录,这样,在源到 RP

之间创建的源树就可以帮助避免 RPF 检测失败,当 RP 和真正的源之间创建(S,G)

条目之后,就会通知 DR 停止以单播发送,从而转回发送真正的组播。

PIM DR 路由器在 IGMP v1 中充当IGMP 查询器的功能,来向主机发送 IGMP 查询。

选举:

1.优先级(if)#ip pim dr-priority 100 修改接口下pim dr优先级 2.IP地址

选择 DR 的数据包为 30 秒一次,105 秒保持时间,如果过了保持时间没有收到

DR 的数据包,则会重新选举 IP 地址最高的为 DR。

Register

DR 功能,在前面已经提到过,就是在 PIM-SM 中,因为 PIM 路由器都认为 RP

才是组播源,而当直接的组播源向 RP 发送组播时,会导致中间路由器 RPF 检测失

败,因此在 PIM-SM 网络中,真正的源需要向 RP 发送组播,就应该建立一条(S,G)

的记录来避免 RPF 检测失败。当真正的源向RP 发出第一个组播包时,DR 将此包封

装在单播中发向 RP,这称为注册,也就是 Register 消息,发送的注册消息会从 DR

到 RP 之间建立一条源树,也就是(S,G)的记录,这样,在源到 RP 之间创建的源

树就可以帮助避免 RPF 检测失败,当 RP 和真正的源之间创建(S,G)条目之后,

就会通知 DR 停止以单播发送,从而转回发送真正的组播。

Register-Stop

因为 PIM-SM 中真正的源需要向 RP 发送 Register 消息来注册,从而建立(S,G)

条目,将组播正常发向 RP,当 RP 和真正的源之间创建(S,G)条目之后,就会发

送 Register-Stop 通知对方停止发送单播,从而转回发送真正的组播。

关键问题是如何选举RP 2.有3中方法选举RP:

a) 静态指定:注意点是所有的路由器都需要指定;

b) Auto-RP:思科私有;

c) BootStrap(自举协议):共有的。

关于静态指定:注意点是所有的路由器都要指定 Ip pim rp-address 2.2.2.2 //配置静态RP 静态RP缺点:

1.因现有的RP的地址改变或安装了新的RP,RP的地址必须改变;

2.RP产生故障,静态配置的PIM域不会简单选择备用的RP。

BootStrap

网络中配置多个 RP,起到备份的作用当正在使用的RP 失效后,

协议可以立即重新选择其它路由器成为活动 RP。自举协议 BSR 的工作

方式为在网络中配置多个 RP,称为候选 RP(C-RP),但只有一个 RP

是正在使用的活动 RP。 RP选举规则:

1. 比较优先级(低) 2. 比较哈希值(高) 3. 比较C-RP IP地址(高)

BSR

R3 和R4 都配置为 C-RP,因为某些原因,R3 发出的 RP 竟选消息只被 R1

和 R2 收到,而R4 发出的RP 竟选消息只被R5 和R6 收到,那么R1 和R2 都会认为

R3 是 RP,而R5 和R6 都会认为R4 是RP,那么这样一来,网络中路由器得到的 RP

信息就变的不一致,从而导致组播故障。

解决方法:在网络中选举出一个 RP 裁判,称为 BSR。 所有 C-RP 将自己竟选 RP 的消息统一发送到 BSR,是通过单播发向 BSR 的,

最后由BSR 从收到的竟选消息中,选择出活动 RP,再将活动 RP 的地址统一 发给网络的每台路由器

C-RP:一台C-RP配置一个RP-IP地址和0-255之间的优先级, 单播向BSR发送Candidate-RP-Advertisement消息,用于竞选RP

BSR选举规则:

1. 比较优先级(0-255,默认是0)(低) 2. 比较BSR IP地址(高)

Ip pim bsr-candidate lo0 Ip pim rp-candidate lo0 Show ip pim bsr-route

Auto-RP协议

Auto-RP 的工作过程与 BSR 相同,同样是在网络中配置多个

//设置C-BSR //设置C-RP //看谁选举为bsr

候选 RP和 RP 裁判,

候选 RP 向 RP 裁判发送竟选消息(RP-Announce),最后 RP 裁判从候选 RP 的竟选消息

中选出 IP 地址最高的为活动 RP,然后发送 RP-Discovery 通告给每台路由器

Mapping Agent(映射代理)—RP 裁判:

1.手工指定,可以指定多个,每个Mapping Agent都有效, Mapping Agent发送选举出的RP,而BSR只有一个 2.向地址224.0.1.40发送RP-discover消息:60s一次

CRP(候选RP):

1.向地址224.0.1.39发送RP-Announce消息:60s一次,(死亡时间为180s,总是其3倍),

2.Mapping Agent默认是属于224.0.1.39这个组的 3.选举规则:只比较最大的IP地址,没有优先级了

第二十二条军规 出现原因:

如果在上图网络中仅运行 SM 模式,并且使用 Auto-RP 来选举 RP,当配置 R4 为

C-RP,配置 R2 为 RP-mapping agent 时,R4 必须发送 Announce 来竞选 RP,当 R2 收

到 R4 的 Announce 后,才能得到最后的结果。配置 SM 模式时,在没有 RP 的情况

下,组播是不通的,所以 C-RP 要发送 Announce 将 RP 选出来,但是 C-RP 在发送

Announce 时使用的目的地为 224.0.1.39,这也就意味着 C-RP 发出的 Announce 是到

达不了远程 RP-mapping agent 的,因为没有 RP,所以最终导致没有RP 的情况下,

组播就不通,组播不通就选不出 RP,结果是组播永远通不了,要解决这个问题,就

是要在 RP 没选出来的情况下就要让组播能够通信,这种情况

下,就可以将 PIM 模

式配置为 sparse-dense-mode,因为这种混合模式下,在没有 RP 时,可以走 SPT 从

而连通组播,这样目的地为224.0.1.39的Announce也就能够正常发送到RP-mapping agent,就能选出RP 了。

注意点:由于“第二十二条军规”,所以要用ip pim saprse-dense-mode

所以,潜规则:anto-RP一定要和saprse-dense-mode配对。 Ip pim send-rp-discovery loopback0 scope 255 //mapping agent

Ip pim send-rp-announce loopback0 scope 255 //设置C-RP

Autorp listener

Autorp listener 同样是用在没有 RP 的情况下需要连通组播,因为在 SM 模式下,

Auto-RP 需要让 C-RP 向 RP-mapping agent 发送 Announce 来选举 RP,而因为发送

Announce 时所使用的就是组播,当 RP-mapping agent 在远程网络时,是收不到 C-RP

发来的 Announce 的,那么在这种情况下,就可以从 C-RP 到 RP-mapping agent 的中

间路由器配置 Autorp listener,命令为在全局模式下输入 ip pim autorp listener,并且

只是在SM模式下需要配置Autorp listener,除此之外,也可以使用sparse-dense-mode 来解决。

命令:

全局模式下ip pim autorp listener

Pim sparse-dense-mode

组播路由器在运行 PIM 时,可以运行在 SM 模式下,也可以运行在 DM 模式下,

当运行在 SM 模式下时,必须有 RP,否则网络不通,而运行 DM 时,不需要 RP 组

播就能通信。但 PIM 路由器可以同时运行两种模式,即 sparse-dense-mode,当同时

运行这两种模式时,如果一个组有 RP 时,则使用共享树,但是当 RP 失效时,则可

以使用最短路径树来保证组播的通信。

当一个接口配置成这个模式时,他在知道组RP的位置时

使用稀疏模式,如果不知道RP的位置,他使用密集模式。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baomayou.com 版权所有 赣ICP备2024042794号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务