组播1.flv (190.93MB)组播2.flv (101.94MB)

1.为什么需要组播?什么场景使用?单播不好吗?那广播呢?

  • 组播用于一对多的场景,相较于单播在一对多的场景下可以节约服务器和链路的带宽资源
  • 一般应用于IPTV。
  • 单播不适合一对多的场景,会大量消耗服务器的资源。
  • 广播的安全性得不到保障,有偿性得不到保障。

2.组播地址的范围是多少?协议组播地址有哪些?特殊的组播地址说下?什么叫ASM?什么叫SSM?组播地址能配置给主机使用吗?二层组播地址和三层组播地址的对应关系是什么?IPv6的呢?

  • 组播地址范围

    • 224.0.0.0~239.255.255.255
  • 协议组播地址

    • 224.0.0.0~224.0.0.255
  • 特殊的组播地址

    • 224.0.0.1 所有主机和路由器
    • 224.0.0.2 所有路由器
    • 224.0.0.5 OSPF路由器
    • 224.0.0.6 DR和BDR路由器
    • 224.0.0.13 PIM路由器
    • 224.0.0.18 VRRP路由器
  • ASM

    • 任意源组播模型
  • SSM

    • 指定源组播模型
  • 组播地址不能配置给主机

  • IPv4

    • 01005e 0 +23位IP地址
  • IPv6
    • 3333 + 32位IP地址

3.IGMP的作用是什么?哪一层的协议?IGMPv1工作原理是什么?普遍组查询谁来发送?怎么选举出来的?多久发送一次?目的地址是什么?成员抑制功能干什么用的?最大响应时间 MRT-10S有什么不好的地方?主机离组会干什么?一台主机离组查询器会发删组信息吗?IGMPv2中,查询器怎么选举?备查询器多久能感知到主查询器消失?MRT有什么变化?新增了什么功能?特定组查询多久发送一次?这样做有什么好处?IGMPv2报文有哪些?地址多少?Last report机制存在的意义是什么?为何在ensp上抓包没有效果?开启了last report成员抑制功能是否还存在?为什么?

  • IGMP的作用

    • 用于管理组播组成员的加组,维护相关组成员表项。
  • 哪一层的协议

    • IP层协议,协议号为2
  • IGMPv1工作原理

    • 报文
      • 普遍组查询报文
      • 成员报告报文
    • 查询器通过PIM DR选举 DR通过DR优先级和IP地址小的优先
    • 普遍组查询时间60s
    • 最大响应时间10s
    • 成员抑制
    • 无离组报文,静默离组
  • 普遍组查询由查询器发送

  • 通过PIM协议进行选举,使用PIM DR为查询器,DR优先级和IP地址小的优先
  • 60S发送一次
  • 目的地址224.0.0.1
  • 成员抑制功能用于减少成员报告报文的发送
  • 由于1S为一个间隔,所以在有多台组成员的时候,一定会有设备的时间会冲突,从而导致 链路上还是有多台设备发送成员报告报文。
  • 主机使用静默离组
  • 不会发送
  • IGMPv2使用自身的选举机制选举,使用IP地址小的优先
  • 被查询器需要等待125S才能感知到主查询器消失
  • MRT可以手工配置,1-25s范围内,精度可以到小数点后1位
  • 新增了成员离组报文和特定组查询报文
  • 特定组查询报文1S发送一次,一共发2次
  • 这样做可以快速感知是否还有用户存在,相比v1版本节约了后续发送的流量
  • 普遍组查询报文、成员报告报文、离组消息报文、特定组查询报文
  • 224.0.0.1,其它的均为组地址
  • 抑制其它成员发送离组报文,相当于减少了特定组查询报文和成员报告报文
  • 因为主机没有对这个功能进行适配
  • 还存在,因为last report功能与成员抑制功能不冲突

4.IGMPv1的查询器如果发生故障,另一个组播路由器需要多久才能成为新的查询器周期性发送查询报文?运行了IGMPv1的接口是否一定要开启PIM协议?如果主机是组播组的最后一个成员,但是由于主机掉电,无法发送离开报文时,组播路由器怎么办?

  • 需要等待105s才能成为新的查询器,PIM 30S发送一次,PIM 3.5倍
  • 是的,如果不开启PIM则无法选举出查询器转发流量
  • 组播路由器进行130S的删组

5.IGMPv3有哪些报文?还有leave报文吗?为什么?主机是不是可以选择源?V3有哪些组记录格式?分别表示什么意思?V3还有成员抑制功能吗?为什么?

  • IGMPv3报文

    • 普遍组查询报文
    • 成员报告报文
    • 特定组查询报文
    • 特殊源组报告报文
  • 没有leave报文,通过成员报告报文中的change-To-include-mode中指定组,源为空进行离组

  • 可以选择源
  • 组记录格式

    • mode-is-include
    • mode-is-exclude
    • change-to-include-mode
    • change-to-exclude-mode
    • allow-new-include
    • block-old-exclude
  • 意思分别为

    • 接收源地址列表中这些源发往该组的组播数据
    • 不接收源地址列表中这些源发往该组的组播数据
    • 将现在的模式从exclude模式改为include模式
    • 将现在的模式从include模式改为exclude模式
    • 如果现在的模式为include,则表示从现有的基础上添加这些新的组播源,如果现在模式为exclude模式,则表示从现有的基础上删除掉那些组播源
    • 如果现在的模式为include,则表示从现有的基础上删除掉这些组播源,如果现在模式为exclude,则表示从现有基础上添加这些组播源。
  • V3没有成员抑制功能,因为可以一个组的成员选择了不同的组播源。

6.IPv6中怎么实现加组的?有哪些版本?与IPv4的版本有什么不同?用什么报文实现的?目的地址是多少?

  • 使用MLD协议
  • 有v1和v2版本
  • 相当于IGMP中的v2和v3版本
  • 依靠ICMPv6报文实现的
  • FF02::1

7.IGMP Snooping的作用是什么?没有开启snooping的情况交换机怎么处理组播报文?工作原理是怎么样的?端口角色有哪些?怎么选举?收到普遍组查询怎么处理?为什么需要向路由器端口转发?收到report报文怎么处理?开启snooping功能还有成员抑制功能吗?消耗交换机性能怎么理解?对查询器会不会有什么影响?收到组播流量是不是根据MAC地址表转发的?有了snooping为什么还需要snooping proxy?收到普查报文和snooping处理有啥不同?报告报文呢?leave报文呢?特定组查询报文呢?交换机如何区别IGMP组播报文和普通报文?

  • 让交换机收到组播报文不再进行泛洪处理,减少带宽和资源的占用。
  • 泛洪组播报文
  • 监听接口下有哪些主机进行加组,根据组和端口的关系进行转发
  • 路由器端口和成员端口
  • 收到普遍组查询报文为路由器端口,收到成员报告报文为成员端口,也可以手工配置
  • 收到普遍组查询报文的端口定义为路由器端口,普查报文进行泛洪,同VLAN,并且也向路由器端口泛洪,为了查询器的选举。
  • 因为要选举查询器,所以要向路由器端口转发
  • 首先添加加组信息表项,然后向路由器端口转发
  • 不需要向成员端口转发,如果转发了会导致成员报告报文的抑制,会导致不知道下面主机是否还加组。
  • 会记录这个接口离组,并向路由器端口转发,向成员端口转发
  • 开启了snooping功能没有成员抑制功能
  • 会拆组播报文,会影响交换机性能
  • 会导致查询器收到过多的报告报文
  • 是根据MAC地址转发
  • 减少报告报文的转发
  • 收到普查报文进行泛洪,自己生成report报文发送
  • 报告报文只有下面主机需要新加组的时候才向路由器端口转发
  • 离组报文交换机自行记录,只有当组成员全部离组时,交换机才向路由器端口发送离组报文
  • 特定组根据记录信息进行转发
  • 需要拆开数据包,如果协议号是2则是IGMP报文

8.IGMP SSM Mapping的作用和实现机制?

  • 让v1和v2主机可以支持SSM模型,在路由器上手动配置组的源,让加这些组的成员使用手工指定的源

9.路由器是否支持报文按组播MAC地址转发?

  • 不支持

10.组播中有哪几种流量模型?什么叫做PIM?PIM的作用是什么?为何需要PIM?

  • ASM,SSM
  • 协议无关组播
  • PIM的作用用于创建与维护组播路由表项
  • 生成(S,G)表项指导流量转发

11.hello报文的作用是什么?多久发一次?目的地址是多少?什么时候开始流量扩散?触发嫁接报文的条件?剪枝一定向上游剪枝吗?剪枝的条件是什么?触发断言loser阻塞自己接口为何要去剪枝winner的下游接口?

  • 建立PIM的邻居关系。
  • 30S发送一次
  • 224.0.0.13
  • 由服务器发送组播流开始扩散
  • image.png
  • 当有(S,G)表项没有下游接口时,收到成员报告报文则会向上发送嫁接报文
  • 如果出现断言的情况不一定是向上游发送
  • 下游接口为空
  • loser不需要winner发送的组播流量,所以发送剪枝报文

12.PRF检测的作用是什么?没有RPF检测环路次优怎么产生的?画图解释?RPF检测依据是什么?最长掩码匹配默认开不开启?静态组播路由的配置命令什么样?M-BGP和MP-BGP有什么差别?RPF能不能只靠单播路由表工作?是不是收到一份组播流量都会进行RPF检查?

  • 要确定收到的组播流是不是最优的接口和下一跳,为了防止环路。
  • image.png
  • 最长掩码、优先级(组播静态、M-BGP、单播路由表)、IP地址大
  • static-rpf 接BSR的IP地址,接下一跳
  • 组播BGP,MP-BGP表示多协议BGP
  • 可以只依靠单播路由表
  • 第一次收到组播流会检测,当收到的与上游接口不符合才会重新检测。

13.RP的作用?什么时候开始建立RPT树?知道RP的位置信息的方法有哪些?静态需要在哪些设备上配置?配置命令是啥?动态需要配置些啥?用什么报文来选举BSR?选举的依据是什么?BSR的报文名字是什么?多久发送一次?目的地址?以泛洪的方式发送,怎么防止环路和次优的?画图解释。C-RP收到BSR的什么报文会怎么处理?发送什么报文?目的地址?携带哪些内容?RP-set封装在什么报文里?其它设备收到RP-set怎么选举RP?选举依据什么?

  • RP作为一个代理人,让源找到接收者,让接收者找到源
  • 当加组的时候,知道RP的位置。
  • 静态和动态
  • 静态需要全网路由器都配置,static-RP 10.1.1.1
  • 动态需要配置C-BSR,C-RP
  • bootstarp自举报文
  • 优先级+IP地址大
  • 自主报文
  • 60s
  • 224.0.0.13
  • 对比出入接口是否一致,源地址和下一跳是否一致
  • 以自己的信息单播发送给BSR
  • RP通告报文
  • BSR的地址
  • 服务组范围、优先级、IP地址
  • 自举报文中
  • 组范围精确、优先级小,hash大,IP地址大

14.建立RPT树发送什么报文?如果上游有多个邻居,怎么确定上游是哪个邻居?上游邻居收到建树报文,怎么确定这个报文是发送给自己的?RP上(*,G)表项的上游接口是什么?源端DR收到组播流量会干些什么?源端DR怎么知道RP的位置信息的?注册报文是广播还是组播?目的地址是多少?携带哪些信息?RP收到注册报文怎么处理的?建立RPT树与建立SPT树发送的建树报文有什么不同?源端DR什么时候能收到注册停止报文?单播还是组播?哪些情况会收到注册停止?

  • 发送(*,G)join报文,发送地址224.0.0.13逐跳建立RPT树
  • 通过RPF检测
  • 通过(*,G)join报文中的上游接口IP地址来判断哪个设备来收
  • rejese
  • 会触发SPT切换
  • 手工或者C-BSR
  • 注册报文是单播发送到RP上的
  • 目的地址是RP的IP
  • 携带组播源的信息和RP的信息
  • 首先创建(S,G)表项上下游接口,主动建SPT树
  • 建立RPT树发送的(,G)去往RP,建立SPT发送的是(,G)表项去往源端DR
  • RP收到SPT第一份组播流量时,收到Rejese报文,下游没有RPT树时
  • 单播发送到源端DR

15.组播流量沿着RPT树流下来的时候会不会创建(S,G)表项?接收端DR收到组播流量会干些什么?触发SPT切换的条件是什么?SPT切换是由谁触发的?为什么要进行SPT切换?交叉点进行SPT切换时上游接口是谁?交叉点什么时候开始剪枝?剪枝剪的是RPT树还是SPT树?减到什么位置停止?RP会继续往上减吗?

  • 会创建
  • 会触发SPT树切换
  • 当收到SPT树流量是会进行切换,并且达到阈值,华为阈值为0,默认收到流量则切换
  • 由接收端DR触发
  • 解决次优问题,防止RP压力过大
  • 一开始上游接口是去RP的,切换完成后变成通过RPF检测去往源端DR的接口
  • 从最近的源这边收到组播流量会进行剪枝
  • 剪枝剪的是SPT树
  • 减到下游接口不为空的地方

16.如果终端DR收不到组播流量,什么情况?

  • 建立RPT树失败
  • SPT树建立失败
  • PIM-SM没有开启,或者是RPF检测失败

17.PIM单播报文不通,会影响组播吗?PIM用了哪些报文?单播组播?地址多少?

  • 在静态组播和M-BGP都没有使用的情况下,并且没有正确的单播路由表是会影响的
  • DM
    • Hello
    • join/prune
    • Assert
    • refresh
    • graft
    • graft-ack
  • SM

    • Hello
    • rejister
    • rejister-stop
    • join/prune
    • Assert
    • graft
    • graft-ack
    • bootstart
    • C-RP adv
  • Hello 224.0.0.13

  • rejister 与stop 发送给源端DR
  • c-rp adv 发送给BSR

18.为什么IGMPv3没有被广泛应用?

  • 用于SSM模型
  • 没有成员抑制功能

19.下图SW1运行IGMP Snooping有何效果?

image.png

  • 这种情况最好使用静态方式,将连接服务器的接口配为上游接口,主机接口配置为下游接口

20.如果网络中的RP设备发生故障,其它的路由器需要多久才能得知RP发生故障?BSR呢?

  • 150S
  • BSR 130S

21.(*,G)prune报文和(S,G)prune报文的区别?

  • (*,G)剪的是去往RP的RPT树
  • (S,G)剪的是去往源端DR的SPT树

22.静态RP的备份方式是什么?画图解释。两个RP的地址配置为一致会不会冲突?接收端DR怎么知道找哪个RP建立RPT树?源端DR呢?第一个RP收到注册消息以什么方式通告给另一个RP的?组播还是单播报文?里面会携带组播流量吗?如果换成MSDP和Anycast RP有什么区别?

  • image.png
  • 不会冲突
  • 通过RPF检测去最近的建立
  • 源端DR如果是负载的则两端都有一半的几率会发,如果哪条路径更优就向哪边发
  • 重新封装通告给RP
  • 单播发送
  • 会携带
  • 如果换成MSDP会发送SA消息,SA消息里面是组播源地址,里面不包含组播流量