HCIE 面试资料-IP组播、IGMP

组播

组播地址分配
组播IP地址 D类IPv4地址224.0.0.0-239.255.255.255
224.0.0.0~224.0.0.255 永久组地址,预留出来给协议使用
232.0.0.0~232.255.255.255 缺省为 SSM 组播地址,全网范围内有效
239.0.0.0~239.255.255.255 本地管理组地址,仅在本地管理域内有效

224.0.1.0~231.255.255.255 ASM 组播地址,全网范围内有效
233.0.0.0~238.255.255.255 ASM 组播地址,全网范围内有效

在永久组中以下网段为常用网段
224.0.0.1 - 网段中所有支持组播的主机
224.0.0.2 - 网段中所有支持组播的路由器
224.0.0.4 - 网段中所有的DVMRP路由器
224.0.0.5 - 所有的OSPF路由器
224.0.0.6 - 所有的OSPF指派路由器
224.0.0.9 - 所有RIPv2路由器
224.0.0.13 -所有PIMv2路由器
224.0.0.18 - vrrp目的地址
224.0.0.22 - IGMPv3使用的组播地址

组播IP转换成组播MAC

组播 MAC:除广播地址以外(全F),第 8bit 为 1 的 MAC 地址为组播 MAC 地址

组播IP地址转换为组播MAC地址:
1110 {XXXX.X}{XXX XXXX.XXXX XXXX.XXXX XXXX}
IP地址总共32bit组播IP地址前4个比特开头,中间5bit是丢失的,后面23位
0100 5E 0 {XXX XXXX.XXXX XXXX.XXXX XXXX}
IANA规定组播MAC地址前24位固定0100 5E是固定的,第25位固定是0,组播IP的后23位bit补给组播MAC

会导致有2的5次方,32个主机组播IP地址会转换到同一个组播MAC地址上

组播成员
组播源:发送组播数据(一般为服务器)
组播组:接收相同信息的多个接收者构成一个组播组
组播组成员:每个组播信息的接收者都是组播组成员
组播路由器:可以提供组播路由功能的路由器称为组播路由器,组播路由器除了是一个或多个组播组的接收成员以外,还可以管理组播组的成员。

组播的优缺点
优点:可以分配在点到多点的应用中,节约资源,便于控制
缺点:组播基于UDP,没有确认机制,没有重传机制,没有排序机制

组播转发模型
ASM(Any-source-multicast):任意源组播,接受者可以接收指定组播组的流量,但是不能挑选组播源

SSM(Source-specific-multicast):指定组播源,接受者可以接收指定组播组的流量(IGMPv3才支持),但是能挑选组播源(在加入组播的时候,可以指定只接收哪些源的数据或指定拒绝接收来自哪些源的数据)

组播网络的框架
Source:一般用S表示,组播流量的发送者
Group:一般用G表示,使用组播IP标识一个组播组,组播组内可以有很多成员
组播成员:接收组播流量的设备,需要加入相应组的组播,一个成员可以加入很多组
组播路由器:在组播网络中用于转发组播流量的设备,需要使用组播路由协议构建组播网络
组播路由协议:运行在组播路由器之间,构建组播网络,转发组播流量,比如:PIM、MOSPF、MBGP、MSDP 等
组播组管理协议:运行在组播路由器与成员之间,用于管理组播组和成员的关系,也就是IGMP

IGMP

IGMP(Internet Group Management Protocol)因特网组管理协议
主机通过IGMP协议向路由器通告成员关系,路由器通告IGMP协议维护成员关系
从加组方式、离组方式、响应抑制机制、查询器选举、报文类型、asm和ssm模型

IGMPv1:

报文类型
普遍组查询报文:由运行了IGMP的路由器60s周期发送,查询下游成员对哪些组感兴趣,目的IP地址为224.0.0.1(所有组播节点地址)该报文中的组地址为0.0.0.0表示查询所有组的信息,成员收到后会开启定时器,为0~10的随机值,倒计时结束会发送成员报告报文

成员报告报文:由成员发送,当成员对某个组感兴趣会直接发送该报文,当成员收到周期的普遍组报文为了维护和该组的关系会响应成员报告报文,该报文的目的IP地址为该成员的加组的组地址,该报文中组地址字段为感兴趣的组播组地址

加组方式
成员主动加组:由成员主动发出成员报告报文,组播路由器根据收到的成员报告报文中的组地址以及接收该报文的接口形成IGMP的组播转发表项(*,G)
响应/抑制机制:组播组路由器会周期60s发送普遍组查询下游主机的加组情况,成员会响应成员报告报文,收到成员报文后,会更新对应表项,当下游有多个成员加入一个组播时,只要有一个成员响应即可,当收到普遍组查询报文后,会开启定时器,为0~10的随机值,先超时的成员发送成员报告报文,在该网络内的其他成员可以收到这个成员组报文,发现和自己要加入的组相同,就会抑制自己的成员报告报文

离组机制
静默离开:当组播组路由器在2个查询报文周期和1个成员计时器的时间内(60+60+10=130s)没有收到成员报告,则认为下游没有成员了,就会删除该组对应的(*,G)表出接口

查询器选举机制
在IGMPv1中有多台组播组路由器时,会选举出一台查询器,查询器才会下发查询报文,但是IGMPv1是没有选举机制的,需要依靠上层协议,比如PIM,PIM的DR会当成查询器,PIM的DR是优先级越高越优先,默认为1,优先级相同组播源开销越小越优先,开销相同下游IP地址越大越优先

查询器持续机制
路由器之间选举完的非查询器会启动一个其他查询器存在的定时器,当收到查询器发送的查询报文,就会重置定时器,如果超时还未收到查询报文,就会从非查询器变为查询器

缺点
1、没有离组机制,会有130s的组播流量浪费
2、没有选举机制需要依靠PIM
3、成员响应时间为10s,不能修改,会导致响应时间过长

IGMPv2

报文类型
普遍查询组报文:由查询器周期60s发送,需要在最大响应时间内响应,默认是10s,可以修改在1~25s,相比v1可以更快速

成员报告报文:用于表示要加入的组信息,目的地址为要加入的组的组地址,该报文中的最大响应时间没有作用。

离组报文:发送目的地址为224.0.0.2(所有组播路由器),组地址为要离开的组地址

特定组查询报文:当查询器收到离组报文,会发送该报文用于查询组内是否还有其他成员。发送间隔1s,如果发送第一次没有响应则发送第二次,一共两次,该报文的最大响应时间为1s,不可修改。该报文的目的地址为要查询的组播组的组地址

加组机制
和IGMPv1的区别在于响应/抑制机制,在查询报文中加入可以最大响应时间字段

离组机制
和IGMPv1的区别在于离开组时增加了会发送离组报文,而组播组路由器收到后会发送特定组查询报文,每隔1s发送一次,总共2次,如果还有其他成员则收到特定组查询报文,会向查询器发送成员报告报文,查询器会继续维护成员关系列表

查询器选举机制
增加了查询器选举规则,通过周期的普遍组查询报文选举查询器,根据报文的源IP地址与自己的接口地址选举,地址小的作为查询器,非查询者的路由器也会创建并维护组播组,同时非查询者需要监听查询者的存在,125s后没有收到查询器发送的普遍组查询报文,则重新选举

报文格式
相比v1删除了版本增加了最大响应时间

查询区收到离组报文是否会立马发送特定组查询报文
由于响应抑制机制,查询区会将最后发送Report消息的主机记录进Last Reporter
下游设备发送离组报文,查询器会先查看发送者是否为Last Reporter,不是则认为该组还有成员,就不发送,如果是Last Reporter,就会直接发送特定组查询报文

IGMPv3

报文类型
普遍组查询报文:由查询器周期60s发送,用于查询下游成员的加组情况,需要在最大响应时间内响应,默认是10s,可以修改在1~25s

成员报告报文:可以添加多个组和源的信息和之前的版本不同,可以配置多个,目的地址为224.0.0.22(IGMPv3使用的组播地址)在IGMPv3中没有离组报文,使用特定的 change-to-include(null)的成员报告表示离组,成员报告报文可以携带多个组播组信息,而之前的版本一个成员报告只能携带一个组播组

特定组查询:当查询器有(*,G)的表项,下游设备要离组时,下游设备要离组时,会对该组进行特定组查询,会发送特定组查询,最大响应时间为 1.0S,第一次未响应会再发送一次。

特定源组查询:当查询器存在(S,G)表项,下游设备要离组时,会发送特定的源 S 特定的组 G 对应的查询报文,用于查询该(S,G)中还有没有成员。最大响应时间为 1.0S,第一次未响应会再发送一次。

成员离组
IGMPv3没有特定的离组报文,而是在成员报告中使用 change-to-include(null),来表示自己离组了

成员报告中的源组动作
当前状态报告(用于对查询报文进行响应,通告自己目前的状态)

  • Mode-is-include:表示要加入的组和源的信息,include表示可以接受哪些源和组
  • Mode-is-exclude:表示不接受哪些源组,exclude表示不接受哪些源和组,如果exclude(null),表示接受任何源发往该组的组播流量

过滤模式改变报告(当组和源的关系在include和exclude之间切换时,会通告过滤模式发生变化)

  • Change-to-include:表示修改接收的列表
  • Change-to-exclude:表示修改拒绝的列表

源列表改变报告(当指定源发生改变时,会通告源列表发生变化)

  • Allow-new-source:表示在原有的基础上增加哪些源,将这些源加入到接收列表中,如果在拒绝列表中则从拒绝列表中删除添加到接收列表。
  • Block-old-source:表示在原有的基础上删除哪些源,将这些源加入到拒绝列表中,如果在接收列表中则从接收列表中删除添加到拒绝列表。

IGMPv2和IGMPv3的区别
1、IGMPv3不存在响应抑制机制(所有成员在收到普遍组查询报文后都会进行响应)
2、可以携带多个源和组的信息,增加了对源和组的过滤
3、IGMPv3和IGMPv2同时运行在一个网段,所以网络中可以有2台查询器,而且IGMPv3向下兼容

IGMP Proxy
IGMP代理,通常被部署在接入设备和成员主机之间的三层设备上(不是查询器),为了减轻查询器的处理压力(主机频繁加入/离开组播组)

主机行为(上游)
1、IGMP代理设备上游接口收到查询报文时,会根据当前组播转发表的状态对查询报文做出响应。
2、IGMP代理设备收到成员的报告报文后,会在组播转发表中查找该成员,如果没找到会向查询器发送针对该成员的报告报文,并在组播转发表中添加该成员,如果找到了就不理睬
3、IGMP代理设备收到某成员在组播组G中的离开报文后,会向接收到该离开报文的接口发送一个特定组查询报文,检查该接口下是否还存在组播组G成员,如果没有则把会向查询器发送针对该成员的离开报文,并向组播转发表中将对应的接口删除,如果有,继续向该接口转发组播数据

路由器行为(下游)
IGMP代理设备的下游接口通过成员成员报告/离开组播组的信息生成组播转发表项、接收接入设备下发的组播数据并根据组播转发表项的出接口信息向特定的接口转发组播数据。

1、IGMP Proxy 设备可以收集下游成员主机的 IGMP 成员报告/离开报文,将报告/离开报文汇聚后代理下游成员主机统一上送给接入设备
2、IGMP Proxy 设备也可以代理 IGMP 查询器向下游成员主机发送查询报文,维护组成员关系,基于组成员关系进行组播转发

IGMP SSM Mapping
SSM(Source-Specific Multicast)称为指定源组播,要求路由器能了解成员主机加入组播组时所指定的组播源。如果成员主机上运行IGMPv3,可以在IGMPv3报告报文中直接指定组播源地址。但是某些情况下,成员主机只能运行IGMPv1或IGMPv2,为了使其也能够使用SSM服务,路由器上需要提供IGMP SSM Mapping功能。

IGMP SSM Mapping的机制是:通过在路由器上静态配置SSM地址的映射规则,将IGMPv1和IGMPv2报告报文中的(*, G)信息转化为对应的(G, INCLUDE, (S1, S2…))信息,以提供SSM组播服务。

如果G在ASM(Any-Source Multicast)范围内,则只提供ASM服务。
如果G在SSM组地址范围内(缺省情况下为232.0.0.0~232.255.255.255):
如果路由器上没有G对应的SSM Mapping规则,则无法提供SSM服务,丢弃该报文。
如果路由器上有G对应的SSM Mapping规则,则依据规则将报告报文中所包含的(*, G)信息映射为(G, INCLUDE, (S1, S2…))信息,提供SSM服务。

IGMP Snooping

目的
IGMP封装在IP报文中,交换机不处理三层信息,因此组播报文就会除了接收的接口进行广播,和它在同一广播域内的组播成员和非组播成员都能收到组播报文。这样不但浪费了网络带宽,而且影响了网络信息安全。

配置IGMP Snooping后,二层组播设备可以侦听和分析组播用户和上游路由器之间的IGMP报文,根据这些信息建立二层组播转发表项(报文类型、组播组地址、接收报文的接口等),控制组播数据报文转发。这样就防止了组播数据在二层网络中的广播。

支持IGMPv1v2v3

端口角色
路由器端口(上游):二层组播设备上朝向三层组播设备(PIM的DR或IGMP查询器)一侧的接口,二层组播设备从此接口接收组播数据报文。接收到PIM的hellow报文或源地址不为0.0.0.0的IGMP普遍组查询报文

成员端口(下游):又称组播组成员端口,表示二层组播设备上朝向组播组成员一侧的端口,二层组播设备往此接口发送组播数据报文。

IGMP Snooping 绑定表
包含了VLAN和(*,239.1.1.1)组播组地址,出接口
可以静态手动配置

IGMP Snooping收到不同的IGMP报文会进行不同的处理,并建立起二层转发表项
当收到IGMP普遍组查询报文时:
向VLAN内除接收接口外的所有接口转发,并对接收接口做如下处理:
1、如果路由器端口列表中尚未包含该接口,则将其添加进去,并启动路由器老化定时器(180s可修改)。
2、如果路由器端口列表中已包含该动态路由器端口,则重置路由器老化定时器(180s可修改)。

当收到IGMP报告报文时:
向VLAN内所有除接收接口外的接口转发。从报文中解析出主机要加入的组播组地址,并对接收接口做如下处理:
1、如果不存在该组对应的转发表项,则创建转发表项,将该接口作为动态成员端口添加到出接口列表中,并启动成员老化定时器
2、如果已存在该组对应的转发表项,但出接口列表中未包含该接口,则将该接口作为动态成员端口添加到出接口列表,并启动成员老化定时器。
3、如果已存在该组所对应的转发表项,且出接口列表中已包含该动态成员端口,则重置其成员老化定时器。
(成员端口老化时间=强壮系数(2)x周期发送普遍组查询报文时间+最大响应时间 60x2+10=130)

当收到IGMP离开报文时:
判断离开的组是否存在对应的转发表项,以及转发表项出接口列表是否包含报文的接收接口:
1、如果不存在该组对应的转发表项,或者该组对应转发表项的出接口列表中不包含接收接口,二层组播设备不转发该报文,将其直接丢弃。
2、如果存在该组对应的转发表项,且转发表项的出接口列表中包含该接口,二层组播设备会将报文向VLAN内所有路由器端口转发。
对于IGMP离开报文的接收接口(假定为动态成员端口),二层组播设备在其老化时间内:如果还有其他成员,就重置成员老化定时器,如果没有其他成员,在老化定时器超时后将接口从该组的转发表项出接口列表中删除。

此外,当二层组播设备收到PIM Hello报文时,向VLAN内除接收接口外的其他所有接口转发,并对接收接口做如下处理:
1、如果路由器端口列表中已包含该动态路由器端口,则重置路由器老化定时器。
2、如果路由器端口列表中尚未包含该接口,则将其添加进去,并且路由器启动老化定时器。

如果配置了静态路由器端口,二层组播设备收到IGMP报告和离开报文也会向静态路由器端口转发。如果配置了静态成员端口,则转发表项中会添加该接口为出接口。

当二层组播设备上建立了二层组播转发表项以后,二层组播设备接收到组播数据报文时,依据报文所属VLAN和报文的目的地址(即组播组地址)查找转发表项是否存在对应的“出接口信息”。如果存在,则将报文发送到相应的组播组成员端口和路由器端口;如果不存在,则丢弃该报文或将报文在VLAN内广播。

猜你喜欢

转载自blog.csdn.net/PanJWei/article/details/114273874