组播基本概念、组播协议之IGMP、PIM-DM 和PIM-SM

目录

一、组播基本概念

1、组播网络基本架构

2、在网络中,设备之间发送数据的方式有几种?

3、组播的优势

4、组播的IP地址段

5、组播MAC地址

6、再来看组播的网络架构

二、组播协议之IGMP

1、IGMP:因特网组成员管理协议

2、IGMP的版本分类

3、IGMPv2协议中的4个报文

4、IGMP基本配置

三、PIM-DM 和PIM-SM

1、组播路由协议:

2、PIM-DM

3、PIM的基本概念

4、组播实验-PIM-DM

5、PIM-SM

6、组播实验-PIM-SM


一、组播基本概念

1、组播网络基本架构

2、在网络中,设备之间发送数据的方式有几种?

-单播:1发,1收,就是说,目的地址仅仅表示的是一个设备

-广播:1发,所有收,就是说,目的地址表示的所有设备

-组播:1发,部分收,就是说,目的地址表示的是一部分设备

单播和广播的缺点

  • 单播——unicast
信息源为每个需要信息的主机,都发送一份独立的报文
1. 这对信息源、网络带宽都造成了压力
2. 不利于信息的批量发送
  • 广播——broadcast
信息源将信息发送给该网段内的所有主机,不管主机是否需要该信息
1. 信息的安全性得不到保障
2. 广播报文,会造成网段中的信息泛滥

组播的优势

  • 对比单播
1. 用户如果增加了,不会导致信息源负载加重
2. 用户如果增加了,不会导致网络资源消耗过大(尽可能不占用带宽)
  • 对比广播
被传递的信息,只发给需要接收的用户

1. 提高了信息传输的安全性

组播的基本概念

  • 拓扑

  • 组播源
图中的Source,它是组播流量的发送者

 一个组播源可以同时向多个组播组发送数据(所谓的多个组播组,就是不同的组播IP地址)
多个组播源也可以同时向一个组播组发送数据
  • 组播组成员
图中的Receiver,其实我们更习惯于,管它叫做组播流量接收者

所有加入某个组播组(某个组播IP地址)的主机,都是该组播组的成员

组播组中的成员,往往是动态的,主机可以在任何时刻加入或者离开该组播组
之所以说,组播组成员往往是动态的,是因为我们既可以通过动态的协议,维护成员,也可以使用静态的方式配置
  • 组播路由器
支持三层组播功能的设备(路由器、三层交换机)

1. 它必须能够提供组播路由的功能
    (能敲multicast routing-enable这条命令、并支持PIM协议) 
   
2. 在连接组播组成员的网段,能够提供管理组播组成员的功能
    (支持IGMP协议)
3、组播的优势

-在多设备的通信场景中,如果依然使用单播的话,设备间的通信效率会低

-组播可以有效的满足单点发送,多点接收的需求

-组播实现了IP网络中点到多点高效数据传输,节约网络资源,降低网络负载

-利用组播技术-可以做在线直播,网络电视,远程教育、在线带货直播

4、组播的IP地址段

IPv4地址分为几类:

A 类、B类、C类:都是单播地址

D类:组播地址

D类组播地址的范围:224-239

+++参考:组播IP地址

1)IANA将D类地址空间分配给组播使用:224.0.0.0~239.255.255.255

2)永久源组播

@224.0.0.0 ~ 224.0.0.255

        --永久组地址,也叫保留组

        --主要提供给路由协议使用,或者标识特定的网络设备

        --不用与组播转发

3)任意源组播

@224.0.1.0 ~ 231.255.255.255

@233.0.0.0 ~238.255.255.255

        ---全网范围内有效

        ---224.0.1.39 ~224.0.1.40 是保留地址,不建议使用

4)指定源组播

@232.0.0.0 ~ 232.255.255.255

        --默认情况下,全网范围内有效

5)本地组地址

@239.0.0.0 ~239.255.255.255

        ---本地组管理地址,类似于私有地址

5、组播MAC地址

-对于组播流量而言,组播IP地址的范围已经确定了,就是D类地址

-但是对于组播流量而言,组播MAC地址是如何确定

-在之前的单播网络中,已知目标IP地址,就可以通过 ARP来学习目标的MAC地址

-组播MAC地址是基于组播IP地址,自动形成的

在组播MAC地址中,虽然是48个bit,但是前25个bit 是固定不变的

组播MAC前24位为 01-00-5E,第25个bit是0

组播MAC的后23 个bit 是什么呢? 是组播的IP地址后23个bit

由于一个IP地址是由32个bit组成的,组播MAC只借用23个bit,就多出来9个bit,

D类的组播IP地址,前面4个bit 是固定的,1110, 后面的5个bit ,就被遗忘了

但是这个5个bit会出现32种变化,2的5次方是32,所以就有可能导致一个现象,

32个组播IP地址可能会对应同一个组播MAC地址,但是不用担心, 为啥不用担心?

因为IETF这个组织说,在一个局域网中两个或者多个组播IP生成相同组播MAC地址的几率几乎为0,这种情况基本上不会发生,所以不用理会,没啥影响

6、再来看组播的网络架构

1)看图了解组播网络架构

2)组播网络架构解析:

源端网络:将组播源产生的组播流量转发给组播网络

组播网络:运行组播路由协议,实现组播流量转发

客户端(成员端)网络:接收组播流量

7、组播服务模型

组播组成员在接收组播数据时可以对于组播数据源进行选择,因此产生了ASM(Any-Source Multicast,任意源组播)和SSM(Source-Specific Multicast,指定源组播)两种组播服务模型

ASM:组成员加入组播组以后,组成员可以接收到任意源发送到该组的数据。

SSM:组成员加入组播组以后,组成员只会收到指定源发送到该组的数据。

组播数据转发存在的问题

组播路由与RPF检查

由于组播转发容易产生环路,次优,重复报文,所以组播路由表项除了目的网络和出接口外还需要添加组播源和入接口的信息。设备仅转发从特定唯一的入接口收到的组播数据,从而避免组播转发时产生环路,次优,重复报文(部分解决)等问题。

对于相同的组播源,设备通过RPF(Reverse Path Forwarding,反向路径转发)检查可以确定设备上唯一的组播流量入接口。

二、组播协议之IGMP

1、IGMP:因特网组成员管理协议

-在组播路由器和组播成员客户端之间,使用该协议让组播路由器知道网段中存在的客户端

-比如:手机一旦运行了抖音,加入了直播间,其实就是加入了一个组播组(组播的IP地址)

此时就会发送一个IGMP 报告(report)报文,发送给组播路由器

然后组播路由器就知道了,以后有这个直播间的组播数据流量的时候,直接发送给这个手机,就可以了

IGMP

  • 概述
Internet Group Management Protocol     //互联网 组 管理 协议
是负责IPv4组播组成员管理的,
与成员端主机连接最后一跳路由器要感知到客户端主机(组播组成员)
如果我想动态感知的组播组成员,可以使用IGMP协议

  • 为什么要有IGMP
因为组播流量在发送的时候,并不关心接收者的位置
所以组播报文最终能够到达接收者那里,需要某种机制:

1. 使连接接收者(客户端)的组播路由器(最后一跳路由器),能够感知到自己下连的网段中存在接收者(客户端)
2. 保证接收者可以加入到相应的组播组中
  • 配置的位置

  • IGMP的版本
【 Version 1 】

   拥有普遍组查询机制              //说白了,就是可以不管下连网段有哪个组的成员,路由器都会询问
                                  收到普遍组查询报文的组播组成员,就会回复
                                  源IP:接口单播地址, 目的IP:224.0.0.1
                                  
                                  
   拥有成员报告机制                //说白了,有路由器问我是否是组成员,我就发一个成员报告,说我是
                                   如果我发了,其他主机就不发了,这叫——同组抑制
                                   
                                   
                                   
【 Version 2 】

   因为版本1没有组成员离开机制,所以版本2新增了组播组成员离开机制
   
   由于增加了组成员离开机制,所以又增加了特定组查询机制
   
   特定组查询机制
   
      如果我收到了某个组播组成员的离开消息,我就会专门针对这个组,发查询报文
      而不是像V1版本中的普遍组查询报文一样
      特定组——专门针对某个组
      普遍组——针对所有组
      
 【 Version 3 】
 出于安全考虑,组播组成员可以只选择接收从特定组播源发来的组播数据。
 组成员需要告知组播网络,接收来自哪些特定组播源的组播流量。
IGMPv1与IGMPv2的报文中均无法携带组播源的信息,因此无法配合SSM使用
IGMPv3主要是为了配合SSM(Source-Specific Multicast)模型发展起来的,
提供了在报文中携带组播源信息的能力,即主机可以对组播源进行选择

IGMPv3大部分工作机制与IGMPv2类似:
查询器选举机制一致:IP地址小的为查询器。
使用普遍组查询报文查询组成员加组信息。
使用特定组查询报文查询特定组播的成员存活情况。
IGMPv3需要支持上报组播源信息,与IGMPv2相比IGMPv3的变化如下:
IGMPv3查询报文除了包含普遍组查询报文和特定组查询报文,
还新增了特定源组查询报文(Group-and-Source-Specific Query)。
IGMPv3成员关系报告报文不仅包含主机想要加入的组播组,而且包含主机想要接收来自哪些组播源的数据。
由于同个组播组的不同成员可能希望接收来自不同源的组播,因此IGMPv3无需成员关系报告报文抑制机制。
IGMPv3没有定义专门的成员离开报文,成员离开通过特定类型的报告报文来传达。
 
   组播组成员可以指定:接收或者不接收某些组播源发送的组播流量
   普遍组查询报文(General Query)。该报文作用与IGMPv1,IGMPv2中的普遍组查询报文作用一致。
  特定组查询报文(Group-Specific Query) 。该报文作用与IGMPv2中的特定组查询报文作用一致。
  特定源组查询报文(Group-and-Source-Specific Query)。
  该报文用于查询该组成员是否愿意接收特定源发送的数据。
  特定源组查询通过在报文中携带一个或多个组播源地址来达到这一目的。
    
    
 【 兼容 】
 
    运行IGMP高版本的路由器,可以识别IGMP低版本的报文

2、IGMP的版本分类

-当前的IGMP有3个版本,分别V1/V2/V3

-目前使用最普遍的V2的版本

IGMPv1工作机制

【 1 】
    当路由器启用IGMP时,会发送普遍组查询报文
     询问该网络中,哪些组播组存在成员 
    
【 2 】
    当一个组播组的成员所在的网络中,有多个路由设备都可以发送普遍组查询报文的时候
    那么,这些设备就要选出一个老大,专门 由老大发送普遍组查询报文 
    这个老大,就叫查询器
    
【 3 】
   当IGMP查询器正常启动后
   它会周期性的发送,目的IP地址为224.0.0.1的普遍组查询报文,维护接口上的组成员关系
   默认情况下,每60秒发送一次
   
【 4 】
   收到该普遍组查询报文的成员,会启动一个定时器
   这个定时器,会在0-10秒之间,取一个随机值
   
【 5 】
   第一个定时器超时的成员,会发送针对自己所在组的“组成员关系报告报文”
   这个报文就相当于,该成员向查询器报告:我是哪个组里的成员
   
【 6 】
   这个成员关系报告报文,其他组成员其实也会收到
   其他组成员收到后,就不会再发送针对该组的报告报文
   这叫同组抑制
   
【 7 】
   IGMP查询器接收到成员关系报告报文后,就了解了本网段存在某组播组的成员
   比如,某组播组用239.0.0.1表示
   那么,查询器会生成一个IGMP协议组播表项(*,239.0.0.1)
   *代表任意组播源
   网络中一旦有组播组239.0.0.1的数据到达该路由器,则根据该表项指导转发

IGMPv2工作机制

1. 由于IGMPv1是没有组成员离开机制的,所以v2版本新增了组成员离开机制

2. IGMPv1的组成员是怎么离开呢?
   当主机离开某个组播组的时候,不会再发送成员关系报告报文
   如果该网段内还有该组的其他成员,IGMP查询器不会感知到曾经有主机离开
   如果该网段内没有该组的其他成员,IGMP查询器会在默认的130秒后,删除该组所对应的组播转发表项
   
3. IGMPv2的组成员是怎么离开呢?
   当主机离开某个组播组的时候,主机会主动发送离开报文(Leave报文)
   收到该报文的IGMP查询器,会连续发送两个特定组查询报文
   针对刚刚又成员离开的组播组,进行针对性的查询
   如果该网段内还有该组的其他成员,其他成员会马上回复成员关系报告报文
   如果该网段内没有该组的其他成员,IGMP查询器会在两次特定组查询后,删除该组所对应的组播转发表项

IGMPv2的查询器选举

  • 选举规则
(同一个网段) ,存在多个组播路由器的时候,选择 IP地址最小 的路由器,作为查询器
  • 过程
【 1 】
  最初,所有运行IGMPv2的路由器,都认为自己是查询器
  它们都会向共享网段内的主机和组播路由器(224.0.0.1)发送普遍组查询报文
  
【 2 】
  路由器在收到对方发送的普遍组查询报文后,将报文的源IP地址和自己的接口地址进行比较
  IP地址最小的组播路由器成为查询器(Querier),其他组播路由器成为非查询器(Non-Querier)
  
【 3 】
  此后,由IGMP查询器向本网段内的所有主机和其他组播路由器发送普遍组查询报文
  非查询器不再发送普遍组查询报文
  
【 4 】
  但是,非查询器会启动一个定时器
  该定时器超时前,如果收到查询器发送的普遍组查询报文,就重置定期器
  否则,就认为原查询器失效,并重新发起查询器选举过程

IGMP简单实验

  • 拓扑

  • 说明
PC1要加入组播组 225.1.1.1
AR1连接PC1的接口GE0/0/1要启用IGMP协议,维护、管理组播组成员
  • PC1基础操作

  • AR1命令配置
multicast routing-enable          //全局启用组播路由功能 
interface GigabitEthernet 0/0/1
 ip address 192.168.1.254 24
  igmp enable                      //接口启用IGMP功能
  • PC1加组方法

  • display igmp group命令详解
<R1> display igmp group   
Interface group report information of VPN-Instance: public net 
  GigabitEthernet0/0/1(192.168.1.254):    // R1的GE0/0/1接口下的IGMP协议 
  Total 1 IGMP Group reported
   Group Address   Last Reporter   Uptime      Expires     
   225.1.1.1     192.168.1.1     00:09:25    00:01:29   
   
 【 Group Address 】
 
   R1该接口下,存在的组播组是225.1.1.1
   
 【 Last Reporter 】
 
   最后发送组成员关系报告报文的那个设备的接口IP地址
   
 【 Uptime 】
 
   该表项存在的时间
   
 【 Expires 】
 
   该表项还有多长时间老化(这是一个倒计时)
  • display igmp routing-table
<R1> display igmp routing-table        //查看IGMP协议的路由表
Routing table of VPN-Instance:  public net     //路由表是 公网 的
 Total 1 entry   //总共一共表项

 00001. (*, 225.1.1.1)
       List of 1 downstream interface 
        GigabitEthernet0/0/1 (192.168.1.254),
                   Protocol: IGMP
                   
【 00001. (*, 225.1.1.1) 】 

  00001是表项的编号,这是第一个表项
  所谓表项,就是表格里的项目,这是第一个项目
  
   *  表示任意组播源(产生组播流量的服务器,叫做组播源) ,这是正则表达式中的一个字符
     我们可以简单理解为“类似通配”的意思,就是表示所有字符
     
  225.1.1.1 表示组播组的地址
            我们平时所谓的(*,G)中的G,就是泛泛的表示组播组地址
  
【 List of 1 downstream interface 】               
 
  下游接口列表
  
     下游     根据组播数据传递的方向,上游给我组播数据,我给下游发送出去
               我通过哪个接口发送出去组播数据,哪个接口就是下游接口 
              
【 GigabitEthernet0/0/1 (192.168.1.254) 】
 
   下游接口,以及下游接口的IP地址
   
   
【 Protocol: IGMP 】

   形成这个表项的协议是IGMP

3、IGMPv2协议中的4个报文

&: 普遍组查询报文(generar query):组播路由器发送的,每60S发送1次,用于发现加入组的客户端主机。

&:成员报告报文(report):是由加组的客户端主机发送的,一个是自己主动发送的,另外一种情况是收到组播路由器发送的查询报文后,然后给查询器的回应报文

&:成员离开报文(leave),离组报文,主机要关机了,所以会关闭软件,然后下线,就是所谓离开此组,此时会主动的告诉组播路由器,我要离开这个组播组了

&:特定组查询报文(group-sepcific query):组播路由器收到客户端主机发送的离组报文后,迅速的连续发送2个报文(每秒发1个),如果得不到回应,也就是说,如果的得不到客户端主机发送的报告报文(report),则认为该网段没有客户端主机了,所以就删除这个组,以后就不在向这个组转发组播流量了

4、IGMP基本配置
[R3] multicast routing-enable   //开启IP组播路由功能
[R3-GigabitEthernet0/0/0] igmp enable   //在接口下开启IGMP

 [R3]dis igmp int g0/0/0      
Interface information of VPN-Instance: public net 
 GigabitEthernet0/0/0(192.168.3.254): 
   IGMP is enabled      //使能IGMP
   Current IGMP version is 2     //当前的IGMP的版本是v2
   IGMP state: up                 //IGMP状态是up
   IGMP group policy: none
   IGMP limit: -
   Value of query interval for IGMP (negotiated): -
   Value of query interval for IGMP (configured): 60 s    //发送查询报文的周期,每60秒1次
   Value of other querier timeout for IGMP: 0 s
   Value of maximum query response time for IGMP: 10 s    //针对收到的查询报文,最慢的响应时间要控制在10秒内
   Querier for IGMP: 192.168.3.254 (this router)   //查询路由器的IP地址
   //如果在一个网段中,同时存在多个组播路由器,那么接口IP地址小的路由器优先成为IGMP查询器
   
     备注:IGMP查询器会周期性发送,普遍组查询报文,来发现成员

三、PIM-DM 和PIM-SM

1、组播路由协议:

组播网络大体可以分为三个部分:

源端网络:将组播源产生的组播数据发送至组播网络。

组播转发网络:形成无环的组播转发路径,

       该转发路径也被称为组播分发树(Multicast Distribution Tree)。

成员端网络:通过IGMP协议,让组播网络感知组播组成员位置与加入的组播组。

组播网络需要基于多种组播协议才能建立转发路径:

工作在成员端网络的主要是IGMP(Internet Group Management Protocol,因特网组管理协议)协议,用于告知组播网络,组成员的位置与所加组播组。

工作在组播转发网络的协议主要是PIM,MSDP,MBGP。

PIM(Protocol Independent Multicast,协议无关组播)协议主要作用是生成AS域内的组播分发树。

MSDP(Multicast Source Discovery Protocol,组播源发现协议)主要作用是帮助生成AS域间的组播分发树。

MBGP(Multicast BGP,组播BGP)主要作用是帮助跨域组播流进行RPF校验。

-我们之前学习的都是单播路由,所以路由表也是单播路由表

-现在我们要学习组播路由,也会形成组播路由表

-在组播路由器组成的网络中,如果想要实现组播数据包的转发,必须确保每个组播路由器要有组播路由表

-对于组播器来说,想要形成组播路由表,就得依赖组播路由协议,那么组播路由协议的类型分为:

file:///C:/Users/Administrator/Desktop/HCIP-230X%E7%8F%AD%E7%AC%94%E8%AE%B0/hcip-%E7%BB%84%E6%92%AD_/media/vlc-3.0.18-win64.exe

&:静态组播路由

&: 动态组播路由

        -域内组播路由协议

                @: PIM-DM

                @: PIM-SM

        -域间组播路由协议

      :MSDP

      :MBGP

PIM简介

PIM称为协议无关组播。协议无关指的是与单播路由协议无关,即PIM不需要维护专门的单播路由信息。作为组播路由解决方案,它直接利用单播路由表的路由信息,对组播报文执行RPF检查,检查通过后创建组播路由表项,从而转发组播报文。

目前在实际网络中,PIM主要有两种模式:

PIM-DM(PIM-Dense Mode,PIM密集模式) 。

PIM-SM(PIM-Sparse Mode,PIM稀疏模式) ,

PIM-SM模式根据组播服务模型又可以分为:

PIM-SM(ASM):为任意源组播建立组播分发树。

PIM-SM(SSM):为指定源组播建立组播分发树。

【 PIM-DM 】
   Dense Mode     密集模式 
   我认为,我的组播网络中,存在很多组播组成员
   所以,我需要大量的复制并发送组播流量
   这里所谓的密集:指的是组播组成员分布很密集,但具体多少算密集,没有一定的标准

【 PIM-SM 】
   Sparce Mode    稀疏模式
   我认为,我的组播网络中,不存在太多的组播组成员
   所以,我不需要大量的复制并发送组播流量
   这里所谓的稀疏:指的是组播组成员分布很稀疏,但具体多少算稀疏,也没有一定的标准
  • 工作流程
【 RPF检查 】

【 创建组播路由表项 】

PIM形成组播分发树主要有两种模式,即PIM-DM模式与PIM-SM模式,这两种模式分别用在不同的场景下:

PIM-DM模式主要用在组成员较少且相对密集的组播网络中,该模式建立组播分发树的基本思路是“扩散-剪枝”,即将组播流量全网扩散,然后剪枝没有组成员的路径,最终形成组播分发树。

PIM-SM模式主要用在组成员较多且相对稀疏的组播网络中,该模式建立组播分发树的基本思路是先收集组成员信息,然后再形成组播分发树。使用PIM-SM模式不需要全网泛洪组播,对现网的影响较小,因此现网多使用PIM-SM模式。

2、PIM-DM

-同一个公司内部运行的组播路由协议

-PIM-DM:协议无关组播-密集模式 (也叫推的模式)

-什么叫密集模式,密集模式适用于组播规模相对较小,但是组播成员相对密集的网络, 称为密集模式,就是组播网络整体规模小,但是这个较小的组播网络中,组成员分布的比较密集,每个网段中都有成员存在。

-当一个企业内部,加入组播组的客户端分布比较密集,建议使用PIM-DM协议,

-为什么要成员少,分布密集,就要使用密集模式:

-因为这个协议是这样工作的:

        -邻居发现:建立PIM邻居表

        -扩散:接收组播流量,并全部泛洪:从所有启用了PIM DM的接口,发送出去

                :DM会将组播源发来的数据报文扩散给整个网络所有的PIM路由器上

        -剪枝:流量修剪:指的是告知上游路由器,以后不要在发组播流量了

        -嫁接:流量嫁接:指的是下游设备主动向上游路由器寻求:赶紧给我发组播流量

        -断言:当一个网段中有多个相连的PIM路由器,那么谁来转发组播报文呢? 需要通过断言机制来保证只有一个PIM路由器向该网段转发组播报文

        -当一个网段中有多个组播路由器,需要进行 竞选,选最好的组播路由器,发送组播流量

======================================

1、PIM-DM基本概念

PIM-DM主要用在组成员较少且相对密集的网络中,

通过“扩散-剪枝”的方式形成组播转发树(SPT)。

PIM-DM在形成SPT的过程中,除了扩散(Flooding),剪枝(Prune)机制外,还会涉及邻居发现(Neighbor Discovery),嫁接(Graft),断言(Assert)和状态刷新(State Refresh)机制。

2、PIM-DM协议报文

PIM协议报文直接采用IP封装,目的地址224.0.0.13,IP协议号103。

PIM-DM与PIM-SM使用的协议报文类型有所不同。

PIM-DM使用报文主要是以下几类:

3、邻居发现

组播转发路径只能在PIM邻居之间建立,因此邻居发现是形成组播分发树的先决条件。

邻居发现主要通过PIM Hello包完成。

4、首次形成组播分发树

PIM-DM模式首次形成组播分发树主要依赖扩散机制、剪枝机制、断言机制与DR选举机制。

扩散机制:组播数据包向所有的PIM邻居泛洪,同时组播路由器产生组播路由表项。

断言机制:当组播转发过程中存在多路访问网络,则需要选举出一个组播转发路由器,避免重复组播报文。

剪枝机制:如果组播路由器下没有组成员,则将源到该组播路由器的组播转发路径剪枝。

3、PIM的基本概念

1)拓扑

2)解析:

组播分发树:

组播分发树:MDT:PIM网络已组播组为单位在路由器上建立一个

点到多点的组播转发路径,由于这个转发路径拓扑长得像树的形状,

所以我们称为组播分发树

组播分发树: 分为两种情况

        &:SPT: 已组播源为根,已组播组成员为叶子的组播分发树,称为SPT(最短路径树)

                :SPT既适用于DM网络,也适用于SM网络

        &:RPT: 已RP为根,以组播组成员为叶子的组播分发树,称为RPT(汇聚点树)

                :RPT适用于PIM-SM网络

组播源:

-MCS1-产生组播流量的服务器主机

PIM路由器分类:

叶子路由器:R3和R4:与用户主机相连的PIM路由器,就叫叶子路由器

                但是连接的用户主机可能加组,也可能没加组

第一跳路由器:R1: 在组播转发路径上,

                与组播源相连并且转发组播数据的PIM路由器

中间路由器:R2: 在组播转发路径上,

                在第一跳和最后一跳之间的运行PIM的路由器

最后一跳路由器:R4 :在组播转发路径上,与组播组成员相连(接受组播流量的成员)

                并且转发组播数据的PIM路由器

4、组播实验-PIM-DM

1)拓扑

2)需求:PC2加入组播组,成为组播组成员,能够接受组播源产生的组播数据

3)配置思路:

-配置IP地址

-配置OSPF协议

-配置组播功能

-启用组播路由

-客户机加入组播组

-组播源发布视频数据

-客户机接收组播流量,并且能够实时观看到组播源发布的视频

4)配置命令:

-组播源的配置:

-PIM路由器的配置:

 sysname R1 
 #
multicast routing-enable       
#
interface GigabitEthernet0/0/0
 ip address 192.168.1.254 255.255.255.0 
 pim dm                    
#
interface GigabitEthernet0/0/1
 ip address 192.168.12.1 255.255.255.0 
 pim dm
#
ospf 1 router-id 1.1.1.1 
 area 0.0.0.0 
  network 192.168.1.0 0.0.0.255 
  network 192.168.12.0 0.0.0.255 
  
  #
  sysname R2 
#
multicast routing-enable
#
interface GigabitEthernet0/0/0
 ip address 192.168.12.2 255.255.255.0 
 pim dm
#
interface GigabitEthernet0/0/1
 ip address 192.168.23.2 255.255.255.0 
 pim dm
#
interface GigabitEthernet0/0/2
 ip address 192.168.24.2 255.255.255.0 
 pim dm
#
ospf 1 router-id 2.2.2.2 
 area 0.0.0.0 
  network 192.168.12.0 0.0.0.255 
  network 192.168.23.0 0.0.0.255 
  network 192.168.24.0 0.0.0.255 
  
  #
  sysname R3 
#
multicast routing-enable
#
interface GigabitEthernet0/0/0
 ip address 192.168.23.3 255.255.255.0 
 pim dm
#
interface GigabitEthernet0/0/1
 ip address 192.168.2.254 255.255.255.0 
 igmp enable
#
ospf 1 router-id 3.3.3.3 
 area 0.0.0.0 
  network 192.168.2.0 0.0.0.255 
  network 192.168.23.0 0.0.0.255 
  
  
    sysname R4 
#
multicast routing-enable
#
interface GigabitEthernet0/0/0
 ip address 192.168.24.3 255.255.255.0 
 pim dm
#
interface GigabitEthernet0/0/1
 ip address 192.168.3.254 255.255.255.0 
 igmp enable
#
ospf 1 router-id 4.4.4.4
 area 0.0.0.0 
  network 192.168.3.0 0.0.0.255 
  network 192.168.24.0 0.0.0.255 

-组播组成员的配置

-开启组播源视频,在客户端接受组播流量验证结果

-先在组播源服务器上运行视频,发布组播流量数据

-在去客户机接受组播流量验证:

-验证结果:

5、PIM-SM

1、PIM-DM的不足

中大型组播网络中由于网络较大,如果依然使用PIM-DM会遇到诸多问题: 使用“扩散-剪枝”方式需要全网扩散组播报文,对于网络有一定冲击。 所有组播路由器均需要维护组播路由表,即使该组播路由器无需转发组播数据。 对于组成员较为稀疏的组播网络,使用“扩散-剪枝”形成组播分发树的效率不高。

PIM-SM(ASM)介绍

PIM-DM模型使用“扩散-剪枝”形成组播分发树的原因是:组播网络中大部分组播路由器无法得知组成员的位置。

PIM-SM(ASM)模型形成组播分发树的方法是:

将组成员的位置事先告知某台组播路由器(Rendezvous Point,RP),形成RPT(RP Tree)。 组播源在发送组播数据时,组播网络先将组播数据发送至RP,然后由RP再将组播数据转发给组成员。

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

2、PIM-SM(ASM)协议报文

PIM协议报文直接采用IP封装,目的地址224.0.0.13,IP协议号103。

3、RP介绍

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

目前可以通过以下方式配置RP:

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

3、RPT构建

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

1)PIM-SM 介绍

-PIM-SM :协议无关组播-稀疏模式(拉的模式)

-PIM-SM协议也是运行在一个企业网内部,但是适合的企业场景,和DM不太一样,SM适合是稀疏的用户模式,就是企业网络中,需要加入组播组的网段非常少,组播组成员分别的很稀疏,这种情况下,适合SM-稀疏模式

-如果在这种情况下,依然使用PIM-DM模式,就会导致,组播流量在整个企业网络内部大量的泛洪转发,从而导致大量的设备之间的网络带宽资源被浪费了,因为经过这些带宽传输的组播流量,需要接收组播客户机的数量,非常少,

-所以为了能够在 节省组播网络设备之间带宽资源的情况下,还能够将组播流量转发到组播客户机的时候,,我们可以选择采用PIM-SM

2)PIM-SM工作流程如下:

-建立PIM邻居

-确定/选举 PIM的RP地址

-组播源发送组播流量给组播路由器,然后发给RP

-RP基于收集的组播客户端的加组消息,形成组播路由表

6、组播实验-PIM-SM

1)拓扑

2)需求:PC1和PC2都加入组播组,成为组播组成员,能够接受组播源产生的组播数据

3)配置思路:

-配置IP地址

-配置OSPF协议

-配置组播功能

-启用组播路由

-配置RP地址

-客户机加入组播组

-组播源发布视频数据

-客户机接收组播流量,并且能够实时观看到组播源发布的视频

4)配置命令

组播源的配置:

配置PIM路由器

  sysname R1 
#
multicast routing-enable
#
interface GigabitEthernet0/0/0
 ip address 192.168.1.254 255.255.255.0 
 pim sm
#
interface GigabitEthernet0/0/1
 ip address 192.168.12.1 255.255.255.0 
 pim sm
#
ospf 1 router-id 1.1.1.1 
 area 0.0.0.0 
  network 192.168.1.0 0.0.0.255 
  network 192.168.12.0 0.0.0.255 
#
pim
 static-rp 10.10.2.2     //配置静态PIM
 
 
 
#
  sysname R2 
#
multicast routing-enable
#
interface GigabitEthernet0/0/0
 ip address 192.168.12.2 255.255.255.0 
 pim sm
#
interface GigabitEthernet0/0/1
 ip address 192.168.23.2 255.255.255.0 
 pim sm
#
interface GigabitEthernet0/0/2
 ip address 192.168.24.2 255.255.255.0 
 pim sm
#
interface LoopBack0
 ip address 10.10.2.2 255.255.255.255 
#
ospf 1 router-id 2.2.2.2 
 area 0.0.0.0 
  network 10.10.2.2 0.0.0.0 
  network 192.168.12.0 0.0.0.255 
  network 192.168.23.0 0.0.0.255 
  network 192.168.24.0 0.0.0.255 
#
pim
 static-rp 10.10.2.2
 
  
  sysname R3 
#
multicast routing-enable
#
interface GigabitEthernet0/0/0
 ip address 192.168.23.3 255.255.255.0 
 pim sm
#
interface GigabitEthernet0/0/1
 ip address 192.168.2.254 255.255.255.0 
 igmp enable
#
ospf 1 router-id 3.3.3.3 
 area 0.0.0.0 
  network 192.168.2.0 0.0.0.255 
  network 192.168.23.0 0.0.0.255 
#
pim
 static-rp 10.10.2.2
 
    sysname R4 
#
multicast routing-enable
#
interface GigabitEthernet0/0/0
 ip address 192.168.24.4 255.255.255.0 
 pim sm
#
interface GigabitEthernet0/0/1
 ip address 192.168.3.254 255.255.255.0 
 igmp enable
#
ospf 1 router-id 4.4.4.4 
 area 0.0.0.0 
  network 192.168.3.0 0.0.0.255 
  network 192.168.24.0 0.0.0.255 
#
pim
 static-rp 10.10.2.2

配置组播组成员(客户端)

验证结果:

5)查询命令:

<R4>display igmp group   //查看动态加入的IGMP组播组信息 
Interface group report information of VPN-Instance: public net 
 GigabitEthernet0/0/1(192.168.3.254): 
  Total 1 IGMP Group reported
   Group Address   Last Reporter   Uptime      Expires     
   239.1.1.1       192.168.3.1     00:15:53    00:01:46  
   
   
 解析: 
GigabitEthernet0/0/1(192.168.3.254): 表示的是:接口类型及编号(接口IP地址)
Total 1 IGMP Group reported:表示的是:接口上动态加入的IGMP组播组个数
Group-address :表示的是:组地址的IGMP组播组信息,
               点分十进制形式,取值范围是224.0.1.0~239.255.255.255
               
Last reporter:表示的是:最后发送Report报文的主机
Uptime:表示的是:发现组播组的时间
        时间格式是:小于等于24小时:“时:分:秒”
                  大于24小时但小于等于一周:“天:时”
                  大于一周:“周:天”
Expires:表示的是:记录将从IGMP组表中删除的预定时间,
         时间格式是:小于等于24小时:“时:分:秒”
                   大于24小时但小于等于一周:“天:时”
                   大于一周:“周:天”
                   “off”表示永不超时 


   
   
 <R2>display  pim neighbor      //查看PIM邻居信息 
 VPN-Instance: public net
 Total Number of Neighbors = 3

 Neighbor        Interface           Uptime   Expires  Dr-Priority  BFD-Session
 192.168.12.1    GE0/0/0             00:21:20 00:01:42 1            N          
 192.168.23.3    GE0/0/1             00:20:02 00:01:43 1            N          
 192.168.24.4    GE0/0/2             00:18:35 00:01:40 1            N  
 

 解析:
Total Number of Neighbors:表示的是:接口的PIM邻居总数
Neighbor:表示的是:PIM邻居的IP地址
Interface:表示的是:与PIM邻居相连的接口
Uptime:表示的是:PIM邻居已经存在的时间
Expires:表示的是:PIM邻居还有多少时间就要超时
Dr-Priority:表示的是:DR优先级
BFD-Session:表示的是:是否建立BFD session 
 

   
 <R2>display  pim  routing-table  
 VPN-Instance: public net
 Total 1 (*, G) entry; 1 (S, G) entry

 (*, 239.1.1.1)
     RP: 10.10.2.2 (local)
     Protocol: pim-sm, Flag: WC 
     UpTime: 00:16:52
     Upstream interface: Register
         Upstream neighbor: NULL
         RPF prime neighbor: NULL
     Downstream interface(s) information:
     Total number of downstreams: 2
         1: GigabitEthernet0/0/1
             Protocol: pim-sm, UpTime: 00:12:12, Expires: 00:03:17
         2: GigabitEthernet0/0/2
             Protocol: pim-sm, UpTime: 00:16:52, Expires: 00:02:37

 (192.168.1.1, 239.1.1.1)
     RP: 10.10.2.2 (local)
     Protocol: pim-sm, Flag: SPT ACT 
     UpTime: 00:13:47
     Upstream interface: GigabitEthernet0/0/0
         Upstream neighbor: 192.168.12.1
         RPF prime neighbor: 192.168.12.1
     Downstream interface(s) information:
     Total number of downstreams: 2
         1: GigabitEthernet0/0/1
             Protocol: pim-sm, UpTime: 00:12:12, Expires: 00:03:17
         2: GigabitEthernet0/0/2
             Protocol: pim-sm, UpTime: 00:13:47, Expires: 00:02:42
             
解析: 
Total 1 (*, G) entry; 1 (S, G) entry :表示的是:PIM路由表中(*, G)项和(S, G)项总数。

备注:PIM路由表的(S, G)项。
 PIM路由表项即通过PIM协议建立的组播路由表项。
 PIM网络中存在两种路由表项:(S,G)路由表项或(*,G)路由表项。
 S表示组播源,G表示组播组,*表示任意。
•(S,G)路由表项主要用于在PIM网络中建立SPT。对于PIM-DM网络和PIM-SM网络适用。
•(*,G)路由表项主要用于在PIM网络中建立RPT。对于PIM-SM网络适用。


RP:表示的是:RP地址
Protocol:表示的是:PIM协议类型:PIM-DM、PIM-SM或PIM-SSM。
UpTime:表示的是:接口存活时间
Upstream interface: 表示的是:入接口(上游接口)
Downstream interface(s) information: 表示的是下游接口信息

备注:
PIM路由表项中主要用于指导转发的信息如下:
•组播源地址。
•组播组地址。
•上游接口:本地路由器上接收到组播数据的接口
•下游接口:将组播数据转发出去的接口


抓包验证:在R4的g0/0/1 口上抓包

7、PIM模型比较

8、PIM-DM与PIM-SM使用场景

PIM形成组播分发树主要有两种模式,即PIM-DM模式与PIM-SM模式,

这两种模式应用场景:

1)PIM-DM模式主要用在组成员较少且相对密集的组播网络中

2)PIM-SM模式主要用在组成员较多且相对稀疏的组播网络中

9、组播分发树的分类

通过PIM形成的组播分发树主要分为以下两种:

1)以组播源为根,组播组成员为叶子的组播分发树称为SPT(Shortest Path Tree),

在PIM-DM与PIM-SM中均有使用。

2)以RP(Rendezvous Point)为根,组播组成员为叶子的组播分发树称为RPT(RP Tree),在PIM-SM中使用

10、PIM路由表项

PIM路由表项即通过PIM协议建立的组播协议路由表项。

PIM网络中存在两种路由表项:

(S,G)路由表项主要用于在PIM网络中建立SPT。对于PIM-DM网络和PIM-SM网络适用。

(*,G)路由表项主要用于在PIM网络中建立RPT。对于PIM-SM网络适用。

字段解析:

S表示组播源,G表示组播组,*表示任意。

PIM路由器上可能同时存在两种路由表项。当收到源地址为S,组地址为G的组播报文,且RPF检查通过的情况下,按照如下的规则转发:

如果存在(S,G)路由表项,则由(S,G)路由表项指导报文转发。

如果不存在(S,G)路由表项,只存在(,G)路由表项,则先依照(*,G)路由表项创建(S,G)路由表项,再由(S,G)路由表项指导报文转发

8、总结

PIM模型有两种:

PIM-DM主要使用在网络规模较小,用户集中的组播网络中。

PIM-SM主要使用在网络规模较大,用户较为分散的组播网络中。

PIM-SM基于组播模型又可以分为PIM-SM(ASM)与PIM-SM(SSM)模型,

PIM-SM(SSM)模型主要为SSM组播服务。

PIM-DM使用“扩散-剪枝”的方式形成组播分发树,在形成分发树时使用Assert选举与DR选举机制防止环路产生,在组播转发时使用PRF机制防止环路产生。

PIM-SM(ASM)将组成员加组信息发送给RP,形成RPT,组播源再发送组播报文时先将组播报文发送至RP,然后由RP再将组播数据发送至组成员,形成SPT+RPT的组播分发树。为了防止RPT次优路径的问题,PIM-SM(ASM)会发起SPT切换的机制,优化组播分发树。

PIM-SM(SSM)主要为SSM组播模型服务,由于SSM组播模型预先知道组播源的地址,因此可以直接反向建立组播分发树。

PIM简介

  • 概述

        Protocol Independent Multicast //协议无关组播

        这里面的无关,指的是与“单播”路由协议无关

        即:PIM协议,不需要专门的维护单播协议

  • Multicast OSPF

        OSPF有一个组播版本,专门维护着6类LSA,也就是组播的LSA

        如果我们想要在网络中实现组播流量的传递,如果用OSPF,就要用MOSPF

        而底层的单播协议,要用OSPFv2或者OSPFv3

        这样配置起来,配置量大,麻烦,对工程师要求也较高

  • PIM协议的优点

        只专注于组成员和组播源状态的相关信息,而选取路径信息,直接从单播路由协议中获取

        即:PIM协议并不像MOSPF一样,维护所谓的组播拓扑数据库

        所以,PIM不能自己画出组播拓扑(它是依靠单播路由协议的,但它不在乎单播路由器是哪个)

  • 模式
【 PIM-DM 】
   Dense Mode     密集模式 
   我认为,我的组播网络中,存在很多组播组成员
   所以,我需要大量的复制并发送组播流量
   这里所谓的密集:指的是组播组成员分布很密集,但具体多少算密集,没有一定的标准

【 PIM-SM 】
   Sparce Mode    稀疏模式
   我认为,我的组播网络中,不存在太多的组播组成员
   所以,我不需要大量的复制并发送组播流量
   这里所谓的稀疏:指的是组播组成员分布很稀疏,但具体多少算稀疏,也没有一定的标准
  • 工作流程
【 RPF检查 】

【 创建组播路由表项 】

PIM-DM简单实验

  • 拓扑

  • 说明
在这个拓扑中,R1、R2、R3运行了OSPF协议,并将直连网段都宣告到了OSPF进程中
R2的GE0/0/0口运行了IGMPv2协议
  • 组播源——MCS1配置

  • R1配置
【 IP地址部分配置 】
interface GigabitEthernet0/0/0
 ip address 192.168.1.254 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.12.1 255.255.255.0 
#
interface GigabitEthernet0/0/2
 ip address 192.168.13.1 255.255.255.0 
 
【 OSPF部分配置 】
ospf 1 router-id 1.1.1.1 
 area 0.0.0.0 
  network 192.168.1.254 0.0.0.0 
  network 192.168.12.1 0.0.0.0 
  network 192.168.13.1 0.0.0.0 
  
【 PIM-DM部分配置 】
multicast routing-enable          //启用组播路由功能
#
interface GigabitEthernet0/0/0
 pim dm
#
interface GigabitEthernet0/0/1
 pim dm
#
interface GigabitEthernet0/0/2
 pim dm
  • R2配置
【 IP地址部分配置 】
interface GigabitEthernet0/0/0
 ip address 192.168.2.254 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.12.2 255.255.255.0 
 
【 OSPF部分配置 】
ospf 1 router-id 2.2.2.2 
 area 0.0.0.0 
  network 192.168.2.254 0.0.0.0 
  network 192.168.12.2 0.0.0.0 
  
【 PIM-DM部分配置 】
multicast routing-enable

interface GigabitEthernet0/0/1
 pim dm
 
【 IGMP部分配置 】
interface GigabitEthernet0/0/0
 igmp enable
  • R3配置
【 IP地址部分配置 】
interface GigabitEthernet0/0/2
 ip address 192.168.13.3 255.255.255.0 

【 OSPF部分配置 】
ospf 1 router-id 3.3.3.3 
 area 0.0.0.0 
  network 192.168.13.3 0.0.0.0 
  
【 PIM-DM部分配置 】
interface GigabitEthernet0/0/2
 pim dm
  • PC1配置

  • 验证实验结果

PIM-DM“扩散——剪枝”讲解

  • 拓扑

  • 扩散-剪枝详解
【 1——成员加组 】 
    PC1通过IGMP的“成员报告报文”,加入了组播组:225.1.1.1
    IGMP协议,会形成IGMP组(display igmp group)
             形成IGMP协议的路由表(display imgp routing-table)
    
 【 2——R1进行RPF检查 】 
    组播源MCS1(Multicast Source 1)向225.1.1.1发送组播数据
    
    R1收到组播流量后,由于R1运行了PIM协议,而PIM协议,又依靠单播路由协议进行路径优选和防止环路
    所以,R1此时此刻会做一件事情:display ip routing-table ,查看去往组播源IP地址的那条单播路由
    如果,那条单播路由中的“Interface”字段中的接口,恰恰是R1收到组播流量的接口
    那么,就说明R1从这个接口收到组播流量,一定走的是最优路径,而且没有环路
    
    这个检查的方法,叫做RPF检查(逆向路由转发 检查)
    
  【 3——R1创建组播表项 】 
 
 [ 上游接口 ]
    R1通过了RPF检查,它会将自己这个通过RPF检查的接口,称为RPF接口
    R1会创建一个(S,G)表项——上述实验中, (S,G)是(192.168.2.2,225.1.1.1) 
    其中, RPF接口,就是这个组播表项中的上游接口 ——所谓上游,就是组播流量从这个接口进到R1这台设备中
    
 [ 下游接口 ]
     R1会将所有连接PIM邻居的接口,作为下游接口 
     并通过下游接口发送组播流量 
    查看PIM邻居的方法:display pim neighbor
    
    
 【 4——R2、R3进行RPF检查、创建组播表项 】
    整个过程和R1一模一样!
    
 【 5——R3由于没有下游接口,进行剪枝 】
 
     [ 剪枝(Prune) ] 
       运行了PIM协议的路由器,收到组播报文后,RPF检查也通过了,但是该路由器,下游网段没有组播流量的需求
       即:该路由器不存在下游接口
       
       此时,该路由器会向上游(通过RPF接口)发送剪枝报文,要求上游路由器在自己的(S,G)表项中,将收到剪枝报文的接口剪掉!
       如图中的R3:
          R3经过RPF检查,确定GE0/0/2是自己的RPF接口
          但是R3下游网段并没有组播需求
          所以,R3通过GE0/0/2,向上发送“剪枝”报文
          R1通过自己的GE0/0/2收到了R3的剪枝报文后,会在R1自己的(S,G)中,将GE0/0/2从下游接口列表中剪掉!
    
    [ 剪枝定时器 ] 
       当R3给R1发送剪枝报文之后,R1会启动一个"剪枝定时器",默认是210秒
       即:R1在210秒后,会重新给R3发送组播流量,如果R3还是没有组播组成员,R3再重新给R1发送“剪枝”报文
  • 剪枝出现的问题以及解决办法
【 问题 】
  如果R3刚给R1发完剪枝报文,R1刚刚启用“剪枝定时器”
  此时,R3的下游网段,突然出现了组播组成员
  那么,该组播组成员只能等待R1的210秒“剪枝定时器”超时,才能够收到组播流量

【 解决 】
   为了不让组播组成员等待那么长时间,所以我们又发明了一个机制——嫁接(Graft) 
  即:R3的下游接口一旦出现组播组成员,R3就马上通过自己的RPF接口,向上发送PIM Join报文(加入报文)
     R1收到后,就会马上将自己的GE0/0/2口,重新加入到组播表项的下游接口中!
     
     从而让R3的下游网段中,存在的组播组成员,不至于最长等待210秒,才接收到组播流量!
  • 嫁接机制出现后,剪枝出现的问题
【 问题 】
  既然我们都可以通过嫁接,来实现组播组成员随时加入
  那么,当初我们设计的“剪枝定时器”210秒超时后重新发送组播报文,似乎就多余了
  
  如果R3上一直没有组播组成员,R1还要每210秒发送组播流量,就会造成以下问题:
  1. 增加链路带宽的消耗
  2. 增加R1和R3设备处理的压力
  
【 解决 】
  此时,我们想到了一个新的办法——状态刷新(State Fresh)
  即:
    离组播源最近的第一跳路由器,会周期性(默认60秒)的发送“状态刷新”报文
    收到状态刷新报文的PIM路由器,会刷新“剪枝定时器”
  • 总结
    在PIM协议中,有一种路径树叫做“SPT”——Shortest Path Tree——最短路径树
    在我们的实际生活中,会发现:树木可以把根部养分送到每一片叶子上,而叶子和叶子之间从来不会互相连接
    所以,在很多技术中,都以树木原理,去实现最短路径以及无环拓扑
    
     在PIM网络中,我们以组播源为根,以组播组成员为叶子,创造了一棵最短路径树——SPT 
    
     在PIM-DM网络的实现中,我们通过“扩散-剪枝”实现了SPT树的刷新
                           通过嫁接、状态实现实现了SPT树的增强

display pim routing-table详解

<R1> display pim routing-table      // 查看PIM协议的路由表 
 VPN-Instance: public net
 Total 0 (*, G) entry; 1 (S, G) entry    // 总共0个(*,G)表项,1个(S,G)表项 

 (192.168.1.1, 225.1.1.1)               //(S,G)表项的信息
     Protocol: pim-dm   // 由PIM-DM形成的该表项   , Flag: LOC ACT  // LOC表示与组播源直连,ACT表示有组播流量经过     
     UpTime: 00:00:21   // 该表项运行的时间 
     Upstream interface: GigabitEthernet0/0/0    // 上游接口:GE0/0/0 
         Upstream neighbor: NULL                 // 上游的邻居:空 
         RPF prime neighbor: NULL                // RPF邻居:空 (RPF邻居,就是通过了RPF检查的PIM邻居)
     Downstream interface(s) information:        // 下游接口(们)的信息 
     Total number of downstreams: 1              // 下游接口的数量 
         1: GigabitEthernet0/0/1                 // 接口是GE0/0/1 
             Protocol: pim-dm, UpTime: 00:00:21, Expires: never  // 协议是PIM-DM,运行时间、老化时间

PIM-SM 拓扑介绍

  • 拓扑

  • 遇到的问题
1. 在组播源MCS1的共享网段中,存在着两台路由器 R1、R2

2. 在R1和R2向下游发送组播数据时,R3会重复的收到两份组播报文(来自R1和R2)

3. R4和R5会将两份组播报文发送给PC1

4. PC1加组时,R4和R5都会收到IGMP的成员报告报文

PIM-SM介绍

  • 概述
【 回忆 】
  我们学过PIM-DM,是通过“扩散-剪枝”机制完成SPT树木构建的
  所谓“扩散”,就像是组播源发出组播数据后,第一跳路由器(离组播源最近的路由器)将流量“推”出去(扩散出去)
  
【 PIM-SM 】
  我们在PIM-SM网络中,认为组播组成员是很“稀疏”的,所以我们如果使用PIM-DM那种将流量“推”(扩散)的模式
  就会造成组播流量不必要的转发,从而增加设备的处理压力、以及带宽的过多占用
  所以,在SM网络中,我们使用了“拉”的模式
  
【 “拉”的意思 】
  需要组播流量的分支(组播网络中连接组播接收者的枝杈),必须主动朝着上游,发送PIM的加入报文(Join报文)
  将自己这个枝杈挂在组播的树上

DR

  • 拓扑

  • 关于DR的回忆
    我们在学习OSPF的时候,学习过DR这个概念
    DR——Designated Router——指定路由器
    但是,我们要注意,DR并不是一个“路由器”的概念,而是一个接口的概念
    我们在OSPF中,是通过以下规则,进行DR选举的:
    
    1. 通过比较DR优先级(Hello报文中的Router Priority字段),优先级的值越大,越优先
    2. 当DR优先级相同时,比较Router ID,也是越大越优先
  • PIM-SM网络中的DR
【 分类 】

    [ 源端DR ]
        在连接组播源的共享网段中,存在一个DR
        即:图中的R1和GE0/0/1和R2的GE0/0/2,会通过竞选,选出一个DR
     
    [ 组成员端DR ]
        在连接组播组成员的共享网段中,存在一个DR
        即:图中的R4的GE0/0/0和R5的GE0/0/0,会通过竞选,选出一个DR
        
【 竞选规则 】

    1. DR优先级的值越高,越优先(DR优先级在PIM的Hello报文中)
    2. 如果DR优先级相同,IP地址越大越优先
    
【 可抢占 】

    与OSPF中DR不可抢占的特性不同
    PIM-SM网络中的DR是可以抢占的
    
    如果当前DR出现故障,或者PIM邻居关系超时
    其他PIM邻居就会触发新的一轮DR选举

RP

  • 拓扑

  • RP
【 概念 】
    在PIM-SM网络中,我们使用“拉”的模式
    需要组播流量的分支(组播网络中连接组播接收者的枝杈),必须主动朝着上游,发送PIM的加入报文
    那么,这个所谓的上游,其实就是PIM-SM网络中的某个点!
    
    这个点,叫做汇聚点(RP:Rendovuz Point)
    
    而之所以叫汇聚点,是因为,它不光汇聚了下游的“加入报文”
    同时,它也会汇聚上游的“组播报文”
    
【 RP的作用 】
    同时汇聚了上游的组播报文和下游的加入报文 

PIM-SM网络发送组播流量的整个流程

  • 拓扑

  • RPT树构建过程
【 RPT树 】
    以RP为根,以组成员为叶子的最短路径树,就是RPT树

【 PC1加入组播组 】
    当PC1加入组播组225.1.1.1
    此时,R4和R5都会收到PC1的IGMP 成员报告报文
    
    但是R4和R5,只有一台设备有资格每60秒发送IGMP 普遍组查询报文
    此时,R4和R5会进行查询器选举
    
    如果,R4和R5运行的是IGMPv1版本,那么,他们俩谁是组成员端DR,谁就是查询器!  
    
【 组成员端DR向上游发送PIM 加入报文 】
    通过组成员端DR的选举,在DR优先级相同的情况下,R5的接口IP地址大,所以成为了DR
    所以,由R5向上游发送PIM的加入报文
    
     [ 发送PIM加入报文的流程 ] 
       1. 进行RPF检查,寻找去往RP的最短路径的单播路由数据出接口
       2. 创建(*,G)表项
       3. 通过RPF检查的接口发送PIM加入报文
    
【 RP 】
    作为PIM-SM网络的汇聚点,RP会被设计在组播网络的“中心位置”
    所以,在上图中,我们会将R3配置成RP
    
    RP会收到R5发来的加入报文,并且RP会形成(*,G)组播表项
    
  • 组播源注册过程
【 组播源发送组播流量 】
    组播服务器MCS1本身就只发出组播流量
    虽然这个名字叫组播源注册,但不是组播源服务器本身做注册的行为
    而是连接组播源的直连网段的DR(源端DR)去做注册
    注意:组播源MCS1就是负责发送“组播流量”的!
    
【 源端DR注册 】
    由于PIM-SM网络是稀疏模式,连接组播源的第一跳路由并不会将组播流量“扩散”
    所以,由源端DR发送一个 “包裹着组播报文”的“单播报文”给RP 
    
    在上图中:R1和R2两台设备都是连接着组播源的路由器,它们连接组播源的接口就会进行DR竞选
            如果DR优先级相同,则IP地址大的R2就会成为源端DR
    
    即:DR-R2会以自己的DR接口作为源地址,以RP地址作为目的地址,发送这个“单播报文”
    
    这个过程,叫做组播源注册!
    这个单播报文,叫做“注册报文”
  • RP发起SPT切换
【 根据(*,G)表项向下发送组播报文 】
    RP收到了单播的注册报文,会进行报文的解封装
    解封装后发现是“组播报文”,就会沿着之前创建好的(*,G)表项进行组播报文的转发
    
【 SPT切换 】
    同时,RP觉得这种:收单播报文——解封装——发现是组播报文——沿(*,G)表项转发的过程太繁琐
    所以,RP会进行以下动作:
    1. 进行RPF检查:查找去往组播源的单播路由的数据出接口
    2. 创建(S,G)表项,以通过RPF检查的接口作为上游接口,以(*,G)表项中的接口作为下游接口
    3. 通过RPF接口发送PIM的加入报文
    
【 同时收到单播的注册报文和组播报文 】
    RP上游的设备也会重复RP的动作,一路向上创建(S,G)
    最终,第一跳路由器(离组播源最近的路由器)也会拥有(S,G)表项
    
    此时,R1和R2会同时给RP-R3发送组播报文
    并且,R2作为源端DR,还会给RP-R3发送单播注册报文
    
    但是,RP-R3已经不需要单播的注册报文了
    所以,RP-R3会给源端DR-R2发送单播的“注册-停止”报文
    
    R2收到注册-停止报文后,不再发送注册报文
    
【 源端DR的注册抑制 】
    源端DR-R2收到了RP-R3的“注册-停止”报文后,进入“注册抑制”状态,不再发送注册报文
    同时,启用注册抑制定时器
    
    在定时器即将超时的前5秒,源端DR-R2会向RP-R3发送一个用于“探测”的空注册报文
    这个报文叫Probe,所谓空注册就是注册报文中没有组播报文
    
    RP-R3收到空注册报文后,会给源端DR-R2回复一个“注册-停止”报文
    源端DR-R2再次进入“注册抑制”状态
  • R1和R2的重复组播流量(断言)
【 概述 】
    R1和R2都成功建立了(S,G)表项,它们都可以通过该表项发送组播报文
    此时,R3会收到重复的组播流量
    为了解决这个问题,PIM-DM和PIM-SM网络中,都有一个机制——断言
    
 【 断言 】 
    R1和R2在接收到彼此的组播流量后,会互相发送断言报文(Assert报文)
    这个报文的目的IP是224.0.0.13
    R1和R2收到彼此的断言报文后,就会进行断言竞选
    
【 竞选原则 】
    1. R1和R2查看自己的单播路由表,去往组播源的路由条目,优先级高的获胜(优先级的值小)
    2. 如果以上相同,R1和R2查看自己的单播路由表,去往组播源的路由条目,cost值小的获胜
    3. 如果以上相同,R1和R2,它们下游接口IP地址大的获胜
    
【 竞选结果 】
    假设上图中,R1和R2去往组播源的单播路由条目优先级和cost值都相同,由于R2的接口IP地址大
    R2成为了获胜者——Assert Winner
    R1成为了落败者——Assert Loser
    
    R2作为获胜者——负责将组播报文发送到该下游网段
    R1作为落败者——不再将复播报文发送到该下游网段
    
【 断言的作用 】
    多台路由器同时向同一个下游网段发送组播数据时,选出一台路由器发送,其他设备不发送
    从而避免组播流量重复下发
    
【 周期性竞选 】
    所有的落败者可以周期性的恢复组播报文的转发,从而引发周期性的断言竞选
  • 组成员端DR发起SPT切换
    其实,在当年RP解封装源端DR发送的单播“注册报文”后,就会沿着RP自己的(*,G)表项,将组播数据发送出去
    即:
       RP-R3当年解封装单播注册报文后,得到的组播报文,会沿着自己的(*,G)表项发送
       最终,组成员端DR会收到该组播流量
       
       如上图中:R4和R5如果DR优先级相同,会选择下游接口IP地址更大的R5作为组成员端DR
       
    R5在默认情况下,收到第一个组播报文后,立即发起SPT切换
    切换过程如下:
    1. 进行RPF检查,查找单播路由表中,去往组播源最近的那个路由条目的数据出接口
    2. 以RPF接口作为上游接口,以(*,G)表项的下游接口作为下游接口,创建(S,G)表项
    3. 通过(S,G)表项的上游接口,发送PIM Join报文(PIM的加入报文)
    
    注意:组成员端DR发起的SPT切换,是去往组播源的最短路径
         所以,如果RP不在这条最路径上,那么最终形成的SPT,可以不经过RP!

PIM-SM网络配置实验

  • 拓扑

  • 说明
R3作为BSR和RP

PC1加入组播组:225.1.1.1
  • MCS1配置

  • R1配置
【 IP地址部分配置 】
interface GigabitEthernet0/0/0
 ip address 192.168.123.1 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.12.1 255.255.255.0 
 
【 OSPF部分配置 】
ospf 1 router-id 1.1.1.1 
 area 0.0.0.0 
  network 192.168.12.1 0.0.0.0 
  network 192.168.123.1 0.0.0.0 

【 PIM-SM部分配置 】
multicast routing-enable
#
interface GigabitEthernet0/0/0
 pim sm
#
interface GigabitEthernet0/0/1
 pim sm 
  • R2配置
【 IP地址部分配置 】
interface GigabitEthernet0/0/0
 ip address 192.168.123.2 255.255.255.0 
#
interface GigabitEthernet0/0/2
 ip address 192.168.12.2 255.255.255.0 
 
【 OSPF部分配置 】
ospf 1 router-id 2.2.2.2 
 area 0.0.0.0 
  network 192.168.12.2 0.0.0.0 
  network 192.168.123.2 0.0.0.0 
  
【 PIM-SM部分配置 】
multicast routing-enable
#
interface GigabitEthernet0/0/0
 pim sm
#
interface GigabitEthernet0/0/2
 pim sm 
  • R3配置
【 IP地址部分配置 】
interface GigabitEthernet0/0/0
 ip address 192.168.30.3 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.123.3 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.3.3 255.255.255.255 
 
【 OSPF部分配置 】
ospf 1 router-id 3.3.3.3 
 area 0.0.0.0 
  network 10.10.3.3 0.0.0.0 
  network 192.168.30.3 0.0.0.0 
  network 192.168.123.3 0.0.0.0 
  
【 PIM-SM部分配置 】
interface GigabitEthernet0/0/0
 pim sm
#
interface GigabitEthernet0/0/1
 pim sm
#
interface LoopBack0
 pim sm
#
 pim
 c-bsr LoopBack0
 c-rp LoopBack0
  • R4配置
【 IP地址部分配置 】
interface GigabitEthernet0/0/0
 ip address 192.168.45.4 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.30.4 255.255.255.0 
 
【 OSPF部分配置 】
ospf 1 router-id 4.4.4.4 
 area 0.0.0.0 
  network 192.168.30.4 0.0.0.0 
  network 192.168.45.4 0.0.0.0 
  
【 PIM-SM部分配置 】
multicast routing-enable
#
interface GigabitEthernet0/0/0
 pim sm
#
interface GigabitEthernet0/0/1
 pim sm 
 
【 IGMP部分配置 】
interface GigabitEthernet0/0/0
 igmp enable
  • R5配置
【 IP地址部分配置 】
interface GigabitEthernet0/0/0
 ip address 192.168.45.5 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.30.5 255.255.255.0 

【 OSPF部分配置 】
ospf 1 router-id 5.5.5.5 
 area 0.0.0.0 
  network 192.168.30.5 0.0.0.0 
  network 192.168.45.5 0.0.0.0 
  
【 PIM-SM部分配置 】
multicast routing-enable
#
interface GigabitEthernet0/0/0
 pim sm
#
interface GigabitEthernet0/0/1
 pim sm 
 
【 IGMP部分配置 】
interface GigabitEthernet0/0/0
 igmp enable
  • PC1配置

DR、查询器都是干嘛的

  • 源端DR
负责向RP发送单播注册报文
  • 组成员端DR
负责向上游发送PIM Join报文(PIM的加入报文),用于构建RPT树
  • 查询器
用于向组播组成员发送IGMP的普遍组查询报文的

  • 36
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值