• 2022-11-06 网工进阶(三十五)---PIM-SM工作原理(组播分发树的形成、ASM、SSM)


    PIM-DM的局限性

    中大型组播网络中由于网络较大,如果依然使用PIM-DM会遇到诸多问题:

    1 使用“扩散-剪枝”方式需要全网扩散组播报文,对于网络有一定冲击

    2 所有组播路由器均需要维护组播路由表,即使该组播路由器无需转发组播数据。

    3 对于组成员较为稀疏的组播网络,使用“扩散-剪枝”形成组播分发树的效率不高

    PIM-SM(ASM)

    通过PIM-SM(ASM)模式形成组播分发树的特点

    1 只有组播转发路径上的组播路由器需要维护组播路由表。

    2 通过RP可以让所有组播路由器获知组成员的位置。

    3 避免“扩散-剪枝”机制,提高组播分发树的形成效率。

    PIM-SM(ASM)组播分发树的形成步骤

    1 将组成员的位置事先告知某台组播路由器(Rendezvous Point,RP),形成RPT(RP Tree)。

    2 组播源在发送组播数据时,组播网络先将组播数据发送至RP,然后由RP再将组播数据转发给组成员。

    3 对于部分次优的组播转发路径,PIM-SM(ASM)能自动优化为最优路径(SPT)。
     

    PIM-SM(ASM)协议报文

    报文类型

    报文功能

    Hello

    用于PIM邻居发现,协议参数协商,PIM邻居关系维护等

    Register(注册)

    用于事先源的注册过程。这是一种单播报文,在源的注册过程中,组播数据被第一跳路由器封装在单播注册报文中发往RP

    Register-Stop(注册停止)

    RP使用该报文通知第一跳路由器停止通过注册报文发送组播流量

    Join/Prune(加入/剪枝)

    加入报文用于加入组播分发树,剪枝则用于修剪组播分发树

    Assert(断言)

    用于断言机制

    Bootstrap(自举)

    用于BSR选举。另外BSR也使用该报文向网络中扩散C-RP(Candidate-RP,候选RP的汇总信息

    Candidate-RP-Advertisement

    (候选RP通告)

    C-RP使用该报文向BSR发送通告,报文中包含该C-RP的IP地址及优先级等信息

    RP概述

    汇聚点RP(Rendezvous Point)为网络中一台重要的PIM路由器,用于处理源端DR注册信息组成员加入请求,网络中的所有PIM路由器都必须知道RP的地址,类似于一个供求信息的汇聚中心

    配置RP的方式

    静态RP:在网络中的所有PIM路由器上配置相同的RP地址,静态指定RP的位置

    动态RP:通过选举机制在多个C-RP(Candidate-RP,候选RP)之间选举出RP

    PS:静态RP或者是动态RP在设置时均可以指定该RP为哪些组播组提供服务。

    动态选举RP

    动态选举RP涉及的角色有C-BSR(Candidate-Bootstrap Router)C-RP(Candidate-RP)

    选举RP的流程

    1 首先,C-BSR通过竞选能选举出一个唯一的BSR。

    2 然后,BSR的是用于收集C-RP的信息并形成RP-Set信息的路由器(类似选举RP的裁判)。BSR通过PIM报文将RP-Set信息扩散给所有PIM路由器。

    3 最后,PIM路由器收到RP-Set消息后,根据RP选举规则选举出合适的RP。

    BSR竞选规则

    1 优先级较高者获胜(优先级数值越大优先级越高)。

    2 如果优先级相同,IP地址较大者获胜。

    RP竞选规则

    1 与用户加入的组地址匹配的C-RP服务的组范围掩码最长者获胜。

    2 如果以上比较结果相同,则C-RP优先级较高者获胜(优先级数值越小优先级越高)。

    3 如果以上比较结果都相同,则执行Hash函数,计算结果较大者获胜。

    4 如果以上比较结果都相同,则C-RP的IP地址较大者获胜。
     

    组播分发树的形成

    PIM-SM(ASM)模式首次形成组播分发树主要依赖RPT构建机制组播源注册机制DR选举机制

    RPT构建机制

    组播叶子路由器主动建立到RP组播分发树(RPT)

    RPT(RP Tree)是一棵以RP为根,以存在组成员关系的PIM路由器为叶子的组播分发树。

    当网络中出现组成员(形成IGMP表项)时,组成员端DR向RP发送Join报文,在通向RP的路径上逐跳创建(*,G)表项,生成一棵以RP为根的RPT。

    组播源注册机制

    通过该机制形成组播源到RP组播分发树(SPT)

    SPT建立后,RP使用Register-Stop报文通知源端DR后续报文可以以组播报文形式发送。

    DR选举机制

    在源端网络或者成员端网络中,有可能有多台组播路由器转发组播流量,从而造成重复组播报文的问题。

    PIM DR(Designated Router)是源端网络或者成员端网络的唯一组播转发者,由于不存在别的组播转发路由器就避免了重复组播报文的问题。

    DR负责源端或组成员端组播报文的收发,避免重复组播报文,同时成员端DR还负责发送Join加组消息。

    PIM DR选举规则

    在PIM-SM(ASM)中各路由器通过比较Hello消息上携带的优先级和IP地址,为多路访问网络选举指定路由器DR。

    接口DR优先级高的路由器将成为该MA网络的DR,在优先级相同的情况下,接口IP地址大的路由器将成为DR。

    当DR出现故障后,邻居路由器之间会重新选举DR。

    PS:DR优先级默认为1,数值越大越优;对于成员端网络,如果有多台组播路由器,则组播路由器的下行接口需要同时开启IGMP与PIM; DR还可充当IGMPv1的查询器。

    SPT切换机制

    在PIM-SM网络中,一个组播组只对应一个RP。因此组播数据最初都会发往RP,由RP进行转发,这会导致两个问题:1  过大的组播流量会对RP形成巨大的负担。2 组播转发路径有可能是次优路径

    为了解决RPT潜在的次优路径问题,成员端DR会基于组播数据包中的源IP,反向建立从成员端DR到源的SPT

    设备沿最短路径发送Join消息,该最短路径基于RPF选举规则决定。设备将Join消息从RPF选举得出的上行接口发出。

    多路访问网络在SPT切换的过程中可能会存在重复报文,需要利用断言机制快速选定下行接口。

    SPT切换的触发条件:缺省情况下,当RP或者组成员端DR收到第一个组播数据包之后,就会向源发起SPT切换。

    当组播分发树(SPT或RPT)稳定后,成员端DR会周期性发送Join/Prune报文,用于维护组播分发树。

    如果组播在一段时间后(默认210s)没有流量则SPT树会消失,成员端DR恢复到RP的RPT树。

    相关命令

    在接口下开启PIM-SM模式

    [R1-GigabitEthernet0/0/0]pim sm

    进入PIM视图

    [R1]pim

    配置静态RP(通常使用RP路由器的环回接口)

    [R1-pim]static-rp 1.1.1.1

    查看RP信息

    <R1>display pim rp-info 

    配置BSR(可指定接口类型和编号、哈希掩码长度(缺省值30)、优先级(缺省值0,越大越优))

    [R1-pim]c-bsr LoopBack 0 32 255

    配置RP(可指定接口类型和编号和优先级(缺省值0,越小越优)等)

    [R1-pim]c-rp LoopBack 0 priority 255

    查看BSR信息

    <R1>display pim bsr-info 

    配置PIM-SM域的BSR边界(禁止BSR发送的自举报文向PIM-SM域外发送,域内的其他组播报文可以通过该边界)

    [R1-GigabitEthernet0/0/0]pim bsr-boundary 

    永不发起SPT切换机制(在成员端DR上配置,缺省情况下会自动切换)

    [R1-pim]spt-switch-threshold infinity

    配置举例---PIM-SM(ASM)

    静态RP配置

    配置R2的环回接口2.2.2.2为静态RP。

    组播源配置


    路由器R1配置

    1. #
    2. sysname R1
    3. #
    4. multicast routing-enable
    5. #
    6. interface GigabitEthernet0/0/0
    7. ip address 192.168.0.254 255.255.255.0
    8. pim sm //配置为SM模式
    9. ospf enable 1 area 0.0.0.0
    10. #
    11. interface GigabitEthernet0/0/1
    12. ip address 10.1.0.1 255.255.255.0
    13. pim sm
    14. ospf enable 1 area 0.0.0.0
    15. #
    16. interface GigabitEthernet0/0/2
    17. ip address 10.1.1.1 255.255.255.0
    18. pim sm
    19. ospf enable 1 area 0.0.0.0
    20. #
    21. ospf 1 router-id 1.1.1.1
    22. area 0.0.0.0
    23. #
    24. pim
    25. static-rp 2.2.2.2 //配置静态RP,指定RP的地址
    26. #

    路由器R2配置

    1. #
    2. sysname R2
    3. #
    4. multicast routing-enable
    5. #
    6. interface GigabitEthernet0/0/0
    7. ip address 10.1.0.2 255.255.255.0
    8. pim sm
    9. ospf enable 1 area 0.0.0.0
    10. #
    11. interface GigabitEthernet0/0/1
    12. ip address 10.1.2.2 255.255.255.0
    13. pim sm
    14. ospf enable 1 area 0.0.0.0
    15. #
    16. interface LoopBack0 //配置了环回接口用于指定RP
    17. ip address 2.2.2.2 255.255.255.255
    18. ospf enable 1 area 0.0.0.0
    19. #
    20. ospf 1 router-id 2.2.2.2
    21. area 0.0.0.0
    22. #
    23. pim
    24. static-rp 2.2.2.2
    25. #

    路由器R3配置没有特别之处

    路由器R4配置

    1. #
    2. sysname R4
    3. #
    4. multicast routing-enable
    5. #
    6. interface GigabitEthernet0/0/0
    7. ip address 10.1.2.4 255.255.255.0
    8. pim sm
    9. ospf enable 1 area 0.0.0.0
    10. #
    11. interface GigabitEthernet0/0/1
    12. ip address 10.1.3.4 255.255.255.0
    13. pim sm
    14. ospf enable 1 area 0.0.0.0
    15. #
    16. interface GigabitEthernet0/0/2
    17. ip address 192.168.1.254 255.255.255.0
    18. igmp enable //连接成员端网络的接口开启IGMP
    19. ospf enable 1 area 0.0.0.0
    20. #
    21. ospf 1 router-id 4.4.4.4
    22. area 0.0.0.0
    23. #
    24. pim
    25. static-rp 2.2.2.2
    26. #

    成员端配置(PC1与PC2类似)

    配置完成后,点击组播源的运行和成员端的启动VLC可进行测试。

    动态RP配置

    配置R2、R3为c-bsr和c-rp,R2采用优先级100,R3采用优先级200,根据bsr和rp的选举规则可知,这样配置后bsr为R3,rp为R2。

    组播源和成员端配置同静态。

    路由器R1配置

    1. #
    2. sysname R1
    3. #
    4. multicast routing-enable
    5. #
    6. interface GigabitEthernet0/0/0
    7. ip address 192.168.0.254 255.255.255.0
    8. pim sm
    9. ospf enable 1 area 0.0.0.0
    10. #
    11. interface GigabitEthernet0/0/1
    12. ip address 10.1.0.1 255.255.255.0
    13. pim sm
    14. ospf enable 1 area 0.0.0.0
    15. #
    16. interface GigabitEthernet0/0/2
    17. ip address 10.1.1.1 255.255.255.0
    18. pim sm
    19. ospf enable 1 area 0.0.0.0
    20. #
    21. ospf 1 router-id 1.1.1.1
    22. area 0.0.0.0
    23. #

    路由器R2配置

    1. #
    2. sysname R2
    3. #
    4. multicast routing-enable
    5. #
    6. interface GigabitEthernet0/0/0
    7. ip address 10.1.0.2 255.255.255.0
    8. pim sm
    9. ospf enable 1 area 0.0.0.0
    10. #
    11. interface GigabitEthernet0/0/1
    12. ip address 10.1.2.2 255.255.255.0
    13. pim sm
    14. ospf enable 1 area 0.0.0.0
    15. #
    16. interface LoopBack0
    17. ip address 2.2.2.2 255.255.255.255
    18. pim sm
    19. ospf enable 1 area 0.0.0.0
    20. #
    21. ospf 1 router-id 2.2.2.2
    22. area 0.0.0.0
    23. #
    24. pim
    25. c-bsr hash-length 32 //配置c-bsr的哈希掩码长度
    26. c-bsr priority 100 //配置c-bsr优先级
    27. c-bsr LoopBack0 //配置c-bsr的接口类型和编号
    28. c-rp LoopBack0 priority 100 //配置c-rp的接口类型、编号、优先级
    29. #

    路由器R3配置

    1. #
    2. sysname R3
    3. #
    4. multicast routing-enable
    5. #
    6. interface GigabitEthernet0/0/0
    7. ip address 10.1.0.3 255.255.255.0
    8. pim sm
    9. ospf enable 1 area 0.0.0.0
    10. #
    11. interface GigabitEthernet0/0/1
    12. ip address 10.1.3.3 255.255.255.0
    13. pim sm
    14. ospf enable 1 area 0.0.0.0
    15. #
    16. interface LoopBack0
    17. ip address 3.3.3.3 255.255.255.255
    18. pim sm
    19. ospf enable 1 area 0.0.0.0
    20. #
    21. ospf 1 router-id 3.3.3.3
    22. area 0.0.0.0
    23. #
    24. pim
    25. c-bsr hash-length 32
    26. c-bsr priority 200
    27. c-bsr LoopBack0
    28. c-rp LoopBack0 priority 200
    29. #

    路由器R4配置

    1. #
    2. sysname R4
    3. #
    4. multicast routing-enable
    5. #
    6. interface GigabitEthernet0/0/0
    7. ip address 10.1.2.4 255.255.255.0
    8. pim sm
    9. ospf enable 1 area 0.0.0.0
    10. #
    11. interface GigabitEthernet0/0/1
    12. ip address 10.1.3.4 255.255.255.0
    13. pim sm
    14. ospf enable 1 area 0.0.0.0
    15. #
    16. interface GigabitEthernet0/0/2
    17. ip address 192.168.1.254 255.255.255.0
    18. igmp enable
    19. ospf enable 1 area 0.0.0.0
    20. #
    21. ospf 1 router-id 4.4.4.4
    22. area 0.0.0.0
    23. #

    查看bsr信息

    1. <R2>display pim bsr-info
    2. VPN-Instance: public net
    3. Elected AdminScoped BSR Count: 0
    4. Elected BSR Address: 3.3.3.3
    5. Priority: 200
    6. Hash mask length: 32
    7. State: Accept Preferred
    8. Scope: Not scoped
    9. Uptime: 00:25:56
    10. Expires: 00:01:29
    11. C-RP Count: 2
    12. Candidate AdminScoped BSR Count: 0
    13. Candidate BSR Address: 2.2.2.2
    14. Priority: 100
    15. Hash mask length: 32
    16. State: Candidate
    17. Scope: Not scoped
    18. Wait to be BSR: 0

    分析:可以看出路由器R3为挡墙BSR

    查看rp信息

    1. <R2>display pim rp-info
    2. VPN-Instance: public net
    3. PIM-SM BSR RP Number:2
    4. Group/MaskLen: 224.0.0.0/4
    5. RP: 2.2.2.2 (local)
    6. Priority: 100
    7. Uptime: 00:38:16
    8. Expires: 00:02:16
    9. Group/MaskLen: 224.0.0.0/4
    10. RP: 3.3.3.3
    11. Priority: 200
    12. Uptime: 00:27:15
    13. Expires: 00:02:16

    分析:可以看出路由器R2为当前RP

    PIM-SM(SSM)

    PIM-SM(SSM)基本概述

    由于SSM提前定义了组播的源地址,所以PIM-SM(SSM)可以在成员端DR上基于组播源地址直接反向建立SPT。 PIM-SM(SSM)无需维护RP、无需构建RPT、无需注册组播源,可以直接在组播源与组成员之间建立SPT。 在PIM-SM(SSM)模型中,关键机制包括邻居发现、DR竞选、构建SPT。

    组播分发树形成与维护

    PIM-SM(SSM)模型构建组播分发树的形成主要依赖IGMPv3报文Join报文

    PIM-SM(SSM)模型形成的组播分发树会一直存在,不会因为没有组播流量而消失。

    PIM模型比较

    协议

    模型分类

    适用场景

    工作机制

    PIM-DM

    ASM模型

    适合规模较小、组播组成员相对比较密集的局域网

    通过周期性“扩散-剪枝”维护一棵连接组播源和组成员的单向无环SPT

    PIM-SM

    ASM模型

    适合网络中的组成员相对比较稀疏,分布广泛的大型网络

    采用接收者主动加入的方式建立组播分发树,需要维护RP、构建RPT、注册组播源

    SSM模型

    适合网络中的用户预先知道组播源的位置,直接向指定的组播源请求组播数据的场景

    直接在组播源与组成员之间建立SPT,无需维护RP、构建RPT、注册组播源

  • 相关阅读:
    安卓考试答题APP源码
    Autofac 注入仓储模式
    HBase-基本概念
    Enzo丨Enzo 链霉亲和素阻滞剂/稀释剂方案
    Nuxt3 简单集成 GoogleMap
    无文件恶意软件攻击是什么意思?
    linux库-----树莓派分文件编程
    谷粒商城11——认证服务、短信验证、Gitee-OAuth 社交登录、分布式session
    Linux中用嵌套方式打印
    第一个2DGodot游戏-从零开始-逐步解析
  • 原文地址:https://blog.csdn.net/x629242/article/details/127714634