组播协议详解

1.组播基础

(1)组播简介

组播技术是指单个发送者对应多个接收者的一种网络通信。通过项多个接收方传送单信息流的方式,可以减少具有多个接收方同时收听或者查看相同资源情况下的网络通信流量。

(2)组播的地址

组播地址的范围:D类地址,前四个bit总是1110.(225.0.0.0-239.0.0.0)
保留的组播地址:
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 Rip-2路由器
224.0.0.10 Eigrp路由器
224.0.0.13 PIm路由器
224.0.0.0-224.0.0.255(永久组地址),地址224.0.0.0保留不做分配,其他地址供路由协议使用。
224.0.1.0-224.0.1.255是公用组播地址,可以用于INternet;
224.0.2.0-238.255.255.255 为用户可用的组播地址(临时组地址),全网范围有效。
239.0.0.0-239.255.255.255 为本地管理组播地址,仅仅在特定的本地范围内有效

(3)组播的MAC地址

V4组播的MAC地址供48位
协议规定,V4组播MAC地址的高24位为0X01005E,第25位为0,低23位为IPv4组播地址的低23位,IPV4组播地址与MAC地址的映射关系如下图所示。
在这里插入图片描述

(4)组播的MAC地址

一般来说,在一个组播网络中,其基本网络结构中使用的协议可以分为两个部分。组播路由器与路由器之间部分运行 PIM。组播路由器与组播接收者行 IGMP 协议。其中 PIM 又细分为,PIM-DM(协议无关组播的密集式)。PIM-SM(协议无关组播稀疏模式)两种模式。IGMP 则又有 V1/V2/V3。
PIM-DM适用于小型网络,它的特点是:假设网络中每个子网都存在至少一个对组播感兴趣的接收站点。因此,组播数据报被扩散到(“推”)到网络中的所有店。DM使用的源树(source tree),树的根是组播心愿,分支形成了通过网络达到接收站点的分布树,有缘书以最短的路径关窗网络,因此它也被称为SPT(最短路径树),中间的转发设备采用(S,G)的方法记录表,S表示多播原地址,G表示多播组地址。
PIM-SM使用于大型网络,它的特点是:嘉定所有机器都不需要接收组播数据包,只有明确指定需要的才转发,接收站点为接受到特定组的数据流,必须向该组对应的汇聚(RP)发送加入消息(“拉”),加入消息所经过的路径就变成了共享树(shared tree)的分支。所有的多播源先将信息发送到RP,再有RP转发到各个接收点的SP相当于树根,到达R之后的多播信息转发时和源无关,故采用(,G)的方式记录转发表,表示通配符。

(5)反向转发路径—RPF

一台路由器收到了一个组播组信源发送的组播流量,当路由器收到了该组 播流量会提取其 3 层报头源 IP 地址,并且在其单播路由表内查找是否拥有去往信源所在网段的单播路由条目,如果没有,则该路由器对于该组播组信源没有RPF 接口,报文直接在接收接口被丢弃。如果该路由器路由表内拥有去往信源所在网段的单播路由,则查看该路由对应的出站接口和接收该报文的接口是否为同一个接口,如果是,则转发该报文,如果不是,则丢弃该报文。在负载均衡中,出接口 IP 地址越大,该接口越有可能成为 RPF 接口。
在这里插入图片描述

2.IGMP

(1)简介

IGMP 协议的目的是实现主机和路由器之间组成员关系的建立与维护。IGMP 协议运行于主机和与主机直接相连的组播路由器之间,主机与本地路由器之间使用 IGMP 来进行组播组成员信息的交互。

(2)原理

IGMPv1,由 RFC1112 定义,定义了基本的组成员查询和报告过程;
IGMPv2,由 RFC2236 定义,在 IGMPv1 的基础上添加了组成员快速离开的机制。
IGMPv3 ,由 RFC3376 定义,增加的主要功能是,成员可以指定接收或指定不接收某些组播源的报文。
主要作用:一方面接收端通知本地的路由器希望加入或者接收某个组播组的信息,另一方面,发送端周期性通过此协议局域网内某个已知组的成员是否处于活动状态(组内是否存在接受者)。实现组播成员关系的收集与维护。
PS:当网段内存在多个组播路由器时,IGMP要通过选举查询者的方式维护组播表项。
查询者的作用:周期性的发送通用组查询信息进行成员关系查询。主机发送报告消息进行相应,主机发送报告消息的时间具有随机性。在V2版本中,主机检测到同一网段其他成员发送相同相应消息后会抑制自己的响应报文。若有新设备需要加组,需要主动发送报告消息,不需要等待查询者的查询消息。当要离开组播组的时候,主机放松离开组消息,收到离开消息后,查询者发送特定的组查询消息来确定是否所有组成员都已经离开,对于作为组成员的路由器而言,其行为和普通的主机一样,响应其他路由器查询。
上述机制的作用是为了在组播路由器中建立一张表格,记录存在活动成员的组播组,并针对相应的组播组创建相应的定时器,记录该组播组的最后一个成员(无需记录所有成员),当收到特定组播组的数据报文后,只向那些有G的成员借口上转发数据,至于在路由器中如何转发则由组播路由协议决定,此功能与IGMP无关。

3.IGMP版本

(1)IGMPV1

IGMP报文封装在IP报文中,IP的协议号为2,IGMP报文均使用TTL为1进行传递,IP头中包括了IP路由检测选项。
在这里插入图片描述
版本号 version: 1
类型 type:为 1 时是成员关系查询报文,为 2 时是成员关系报告报文
未用 unused:发送时设为 0,接收时忽略 校验和 checksum:对 8 字节的 IGMP 消息补码之和进行求 16 位补码运算
组地址 group address:对成员关系查询报文为 0;对成员关系报告报文等于所报告的组的 IP 组 播地址。
Type 字段: 成员关系查询(0x11):路由器周期发送(125s),查看是否有组播成员,组地址为 0
成员关系报告(0x12),主机想加入某个组播组,组地址为某个组播地址。

Hostname#show ip igmp interface
Interface vlan2 (Index 50331693)
 IGMP Enabled, Active, Querier (30.0.0.1) 
 Configured for version 3 //(Default version 2)
 IP router alert option in IGMP V2 msgs: EXCLUDE
 Internet address is 30.0.0.1
 IGMP query interval is 125 seconds
 IGMP querier timeout is 255 seconds
 IGMP max query response time is 10 seconds
 Last member query response interval is 1 seconds
 Last member query count is 2 
 Group Membership interval is 260 seconds
 IGMP robustness variable is 2

 主动加入:主机第一次加入某组播组时,可以在未被查询的情况下,主动通告一个 IGMP 成员关系报告报文, 以及时加入组播组。
 查询响应过程:
•路由器向 224.0.0.1(网内所有主机)发查询报文;
•接收到该报文的主机将自己加入的组播地址填入报告报文,向该组播地址多播;
•其他加入该组播组的主机收到该组播报文后,抑制自己报告报文的发送;
•由此,IGMP 查询者路由器只记录本机某接口加入了哪些组播组,它无须记录具体哪些主机加入了组播组。
 相应抑制机制:主机收到查询报文后,并不立刻响应,而是延迟 0 到 10 秒的一个随机时间后才响应。这样,一方面可以避免响应风暴,另一方面又可以有机会收到别的主机通告的响应报文从而抑制本报文的发送。
 默默离开:IGMPv1 没有专门的离开组播组报文。路由器在查询间隔的 3 倍时间内仍未收到响应报文时,才将该组播组删除。

在IGMPV1中,没有提供选举查询路由器的机制,而是把这个任务留给了组播路由协议,不同的协议会使用不停的选举机制,会造成在一个子网中出现多个查询路由器,这是IGMPV1的缺点之一,由于 IGMPv1 没有查询路由器选举机制,因此 PIM-DR 与 IGMP 查询路由器的身份重叠,也就是说 IGMPv1 的查询路由器选举机制需依赖于 PIM 的 DR 选举。

IGMPV1的缺点:
1>没有查询路由器的选举机制,导致PIM-DR与IGMP查询路由器的身份重叠,也就是说IGMPV1的查询路由器选举机制需依赖于PIM的DR选举
2>缺乏显式的离开方式,路由器在查询间隔的三倍时间内认为收到相应报文,才将该组播组删除。

(2)IGMPV2

IGMPv2中,增加了离开组的报文格式,当主机想要离开组播组是,不需要等待路由器发出查询报文,他可以直接像路由器发送成员关系报告报文,缩短离开时间延迟,明确了查询路由器的选举机制,除此之外,IGMPV2的工作原理与IGMPV1基本一致。
在这里插入图片描述
PS:
普通查询时间:125s 组成员超时:260s
组成员超时时间 = 健壮性系数(2)*普通组查询时间+最大响应时间(10s)=260s;
特定组查询时间:1s 默认查询次数:2
查询器超时:255s 查询器超时时间 = 健壮性系数(默认 2) * 普通组查询时间 + 最大响应时间/2 =255s;
IGMPV2的报文格式:
在这里插入图片描述
0x11(成员关系查询):IGMPv2 的查询分为两种类型:
(1) 通用查询,组地址字段置为全 0,对所有的组进行组成员查询;
(2) 特定组查询,针对特定组进行组成员查询,组地址字段置为特定组的地址。
0x12:IGMPv2 成员关系报告(为了向后兼容 IGMPv1)。
0x16:IGMPv2 成员关系报告。
0x17:离开组报告

  • IGMPV2与V1的区别*:
    (1)增加了特定组查询,特定组查询的目的是为了让路由器知道一个特定组在子网内是否还有组 成员,以便判断是否还需要转发该组的数据报文;
    (2)IGMPv2 的成员关系报告的类型代码不一样。
    当路由器接收到成员关系报告,它就会把该组加入到组播组成员列表中,并且为其设一个值为组成员生存周期(GMI)的定时器。收到该组的报告会导致对应定时器的刷新。如果定时器超时,路由器则认为没有本地组成员,它也不再需要在邻接的网络上为该组转发组播报文了。
    IGMPv2的组成员加入与IGMPv1中相同,但是IGmpv2的离开过程与V1相比不同,主机离开组的时候,需要显式的发送离开报文给路由器(高调离开),基本过程:当网络中有想离开的主机的时候,他会发送一个离开报文给子网上的所有路由器,(224.0.0.2),查询路由器收到离开报文后,会立即发送一个特定组查询到子网上,如果子网上还有该组成员,则会发送一个相应报文,若无回应,则删除组播组,停止转发该组的数据。
     主动加入:当一个主机加入了一个组播组,则应该立即发送一个或多个版本 2 的成员关系报告给组播组
    在这里插入图片描述
     查询与响应的过程:与 IGMPv1 相同,都存在抑制机制。增加了最大响应时间来指定延时值来规定所有主机的查询响应延时的上限,此外最大响应时间在 IGMP 查询器上配置,只应用在成员关系查询信息。
     主机向 224.0.0.2 发送离开组消息(报文中含有要离开的组地址)。路由器向这个组发送特定组查询。 1 秒钟内没有收到该组的报告,发送第二个特定组查询。 二个查询信息后未收到主机响应,组 224.1.1.1 超时,离开组。
    查询器选举
    (1) 所有IGMPv2 路由器在初始都认为自己是查询器,并向本网段所有路由器(224.0.0.1)发送 IGMPv2常规查询报文。
    (2) 然后本网段所有 IGMPv2 路由器比较优先级,越大越优先;若优先级相同比较接口IP,越小越优先。
    (3) 非查询路由器启动一个计时器,收到查询器的常规查询报文就把计时器复位。如果计时器超时,就认为查询路由器发生故障,开始重新选择。

(3)IGMPV3

IGMPv3 的提出,主要是为了配合源特定组播的实现,即组播组成员可以指定接收或指定不接收某些组播源的报文。这样主机就可以有选择性接收来自某个特定组播源的数据包,而不是被动接收该组中所有组播源的数据包。IGMPv3 的这一特性,可以实现源特定组播 SSM 技术
 IGMPV3在V1V2的基础上提供了额外的源过滤组播功能(SFM),主机只根据组地址来决定加入某个组,并从任何一个源接收发给该组地址的报文。具有源过滤组播功能(SFM)的主机使用 IGMPv3 来表示主机所希望加入的组播组,同时还表示该主机所希望接收的组播源的地址。限制的方式主要是:包括列表(Inclusion List)或一个排除列表(Exclusion List)来表示对源地址的限制。

1>IGMPV3的报文类型

0x11:成员关系查询报文;
(1) 普通查询:用于获知邻接接口(即查询所传输的网络中所相连的接口)的完整的多播接收状态。 组地址字段和源数量(N)字段都为 0。
(2) 指定组查询:用于获知邻接接口中跟某一个 IP 地址相关的多播接收状态。组地址字段含有需 要查询的那个组地址,源数量(N)字段为 0。
(3) 指定组和源查询:用于获知邻接接口是否需要接收来自指定的这些源发往指定组的多播数据报。 组地址字段含有要查询的多播地址,源地址[i]字段含有相关的源地址。
0x22:版本 3 成员关系报告报文;
0x12:版本 1 成员关系报告报文;
0x16:版本 2 成员关系报告报文;
0x17:版本 2 离开报文。

2>查询报文格式:

在这里插入图片描述
Number of Sources 字段:实际上受限于数据链路层的 MTU,例如在以太网上,数据报最长为 1500 字节,除去 IP 报头的 24 字节和 IGMP 报头的 12 字节,剩余 1464 字节,所以最多包含 366(1464/4) 个源地址。

3>Group Record 字段格式:

在这里插入图片描述
Group Record 消息的类型。
(1) MODE_IS_INCLUDE:接收源地址列表包含的源发往该组的组播数据;
(2) MODE_IS_EXCLUDE:不接收源地址列表包含的源发往该组的组播数据; (3) CHANGE_TO_INCLUDE_MODE:过滤模式由 EXCLUDE 转换到 INCLUDE,接收源地址列表包含 的新组播源发往该组播组的数据;
(4) CHANGE_TO_EXCLUDE_MODE:过滤模式由 INCLUDE 转换到 EXCLUDE,拒绝源地址列表中新 组播源发往该组的组播数据;
(5) ALLOW_NEW_SOURCES:表示在现有的基础上,需要接收源地址列表包含的源发往该组播组 的组播数据;
(6) BLOCK_OLD_SOURCES:表示在现有的基础上,不再接收从源地址列表包含的源组播源发往 该组播组的组播数据。

成员报告消息格式
在这里插入图片描述

  • 查询响应过程
    路由器周期性的发送一般查询来获取本地网络的 IGMP 成员信息。主机收到一般查询之后,收集自己的组信息,包括感兴趣或不感兴趣的源列表,填入当前状态组记录中,向路由器回复 IGMP 版本 3 成员报告(发向所有 IGMPv3 路由器组 224.0.0.22)。
    当主机一方的组信息或者源信息发生改变的时候(可能是过滤模式改变,或者是源列表改变),主机会把这些改变信息填入到状态改变组记录中,然后主动向路由器发送 IGMP 版本 3 的成员报告。当路由器收到了成员报告后,会刷新本地的组和源的状态;当路由器一方维护的组的过滤模式要从 EXCLUDE 变成 INCLUDE 前,会发送指定组查询,反映在 IGMPv2 上就是对于本地不再感兴趣的组被删除之前,会发送指定组查询;对于本地不再感兴趣的源,则在删除源之前要发送指定源查询。一般,只在收到了状态改变的组记录后才会发送指定组或者指定源 查询。对于当前状态记录,不会发送指定组或者指定源查询。

 路由器上的 IGMP 状态信息
路由器上的每个接口每个组都有一个组状态,组状态由组地址、过滤模式(INCLUDE / EXCLUDE)、源列表、组定时器组成。

在这里插入图片描述
 IGMPV3的主要改进
(1) 支持源特定组播 SSM;
(2) 向后兼容 IGMPv1 和 IGMPv2;
(3) 主机可以定义要接收的组播源地址;
(4) 非查询路由器可以与查询路由器保持参数值同步;
(5) 最大响应时间从 255s 增加到 53min,适合于较大的网络;
(6) 辅助数据字段为将来的应用预留了空间;
(7) 关系成员报告报文发送给目的地址 224.0.0.22,可以帮助二层交换机更有效地实现 IGMP 监听 (IGMPSnooping)功能;
(8) 报告报文中可以包含多个组记录,可以有效地减少网络通信量;
(9) 在 IGMPv3 中,取消了前面版本中的响应抑制功能

 IGMPv1/v2/v3 比较
在这里插入图片描述
普遍组查询报文中,既不携带组地址,也不携带源地址;
特定组查询报文中,携带组地址,但不携带源地址;
特定源组查询报文中,既携带组地址,还携带一个或多个源地址。

 快速离开
在网络中的末梢网段只连接了一台主机,主机频繁的进行组播组的切换动作,为了减少离开延迟可以在设备上配置组播组快速离开。
如果末梢网段中连接了多台主机,不建议配置快速离开。这样会导致一台主机离开组播组后, 其他主机也都被迫离开组播组。

4.PIM-SM

(1)PIM-SM基础

1>基本概念
PIM,协议无关组播,不依赖于某一特定单播路由协议,可利用各种单播路 由协议建立的单播路由表完成 RPF 检查功能,而不是维护一个分离的组播路由表 实现组播转发。由于 PIM 无需收发组播路由更新,所以与其它组播协议相比,PIM 开销降低了许多。PIM 的设计出发点是在 Internet 范围内同时支持 SPT 和 RPT, 并使两者之间灵活转换,因而集中了它们的优点提高了组播效率。PIM 定义了两种模式:密集模式(Dense-Mode)和稀疏模式(Sparse-Mode)。
PIM-DM 属于密集模式协议,采用了“扩散/剪枝”机制。同时,假定带宽不受限制,每个路由器下的终端都想接收组播数据包,PIM-DM 将组播数据包“推” 到网络中所有的路由器上。这样,无需终端上进行任何操作,即可收到组播报文, 适用于网络规模较小,且终端大多需要组播报文的场景。
PIM-SM 属于稀疏模式协议,与 PIM-DM 不同之处在于,其不会将组播报文主 动“推”向网络中的路由器,而是当某个路由器下的终端有接收某个特定组播组的报文需求时,采用“拉”的方式,将组播报文从源拉到目的地。这种方式相比 DM 而言更节约带宽,同时能实现精准推送。适用范围也较 DM 更广,可以应用在大型网络中。
PIM-SM 协议处于 IP 协议的上层,通过原始 socket 和 IP 通信。PIM-SM 在 IP 报文中的协议号为 103,组播地址为 224.0.0.13。
2>PIM的角色
BSR:自举路由器,发送 bootstrap 消息,用于确认 RP 路由器并向全网通告。如果在组播网络中静态指定了 RP,网络中也可以不用设置 BSR 路由器。
选举规则:优先级【默认为 0】和 IP 地址比较,值越大越优先。如果没 有比其优先的设备,则其成为当选 BSR,反之则进入候选 BSR 状态(C-BSR)。
RP:汇聚点,即共享树 shared tree 的汇聚点,在组播共享树中,会以该汇聚点 为根进行转发,组播流量从源发出时,需要经过 RP,再转向相应的接收者。RP 可以分为动态和静态两种,静态即全网配置某台设备为 RP。动态模式下,在网络中配置候选 RP(C-RP)。
选举规则:当 BSR 选定后,C-RP 通过单播向 BSR 发送 candidate-RP-advertisement 信息。包含优先级、地址、组播组信息【优先级默认 192,越小越优先】。
DR: 指定路由器,用于接入组播源和接收者,发送注册、join 报文等。DR 的选 举:如果两边均有优先级参数【默认为 1】,则先比较优先级,再比较地址,如 不全有优先级,则只比较 IP 地址,越大越优先。在组播网络中每个网段都会选举 DR。
当两台开启了 PIM-SM 协议的路由器接入到同一个 LAN 中时,均会向组播地 址224.0.0.13发送组播hello报文,hello报文中会携带如DR优先级、hold-time、 LAN Prune delay(剪枝延迟)、propagation delay(传送延迟)、override interval (J/P 覆盖时间)等,
在这里插入图片描述hold time:邻居保持时间,即在hold time时间范围内没有收到hello 消息的话,则认为该邻居失效,
DR:优先级主要用于 DR 的选举,默认为 1,数值 越大越优先,如 DR 优先级数值相同,或一方不含有 DR 优先级信息,则比较接口 IP 地址,IP 地址大优先。

(2)PIM的工作机制

1>PIM邻居建立完成,BSR,RP选举完成,所有的路由器都了解RP的组信息。
2>组播组成员所在的DR向RP发起接入,然后组播源所在的DR也会去Rp注册,这样接受者可以通过这一路径收到组播源的组播报文。
3>RPT-SPR切换,寻找最优转发路径
4>剪枝切换的内容:
在这里插入图片描述
在上图所示的组网环境中,R2 被设置为 RP,但通过拓扑图示来看,显然 R1 直接到 R3 的路径要优于 R1—R2—R3 的路径。因此会进行 RPT—SPT 剪枝切换。 切换的动作由 R1 主动发起,其收到第一个组播报文后就会向 R3 发起显式(S, G)加入,加入成功以后,R3 进行剪枝,将组播报文通过 R3-R1 的路径直接发送 到接收者,不再通过 R3-R2-R1 这条路径。此时show ip pim mroute 或者debug ip pim event都可以观察到切换过程:
在这里插入图片描述
PS:若网络中存在负载路由,单播会存在负载均衡的情况,但是组播不会;组播会选择下一跳地址大的进行路由转发
PIM-SSm在查看表项的时候,只会发现(S,G)表项,没有(*,G)表项,因为SSm不进行剪枝切换
配置区别:ip pim ssm default/range:
default 参数代表 默认的 232.0.0.0/8 组播组,也可以使用 range+ACL 的方式重新自定义组播地址

5.IGMP snooping

(1)基本概念:

IGMP Snooping 是用来监听主机与路由器之间的 IGMP 报文,设备可以根据组 IGMP 报告报文、IGMP 离开报文而动态地创建、维护和删除组播地址表,从而使得设备接收到组播业务报文后依据各自的组播地 址表项进行转发,减少风暴,提高带宽利用率。

(2)主要功能:

侦听 IGMP 报文动态地创建、维护和删除组播地址表,按照组播地址表实现组播 业务报文在指定 成员端口转发;
协助上游组播路由器正确维护 IGMP 成员关系表;在无三层组播设备环境下实现 IGMP 查询器的功能。

(3)角色

1>最大响应时间:IGMPv2 查询者发送的普通组查询报文中含有最大响应时间字段,组播接收者应 在最大响应时间间隔内发送成员报告报文。如果组播接收者没有在最大响应时间间隔内发送成员 报告报文,设备就认为该子网内没有该组播组的接受者,立即删除组播组信息
在这里插入图片描述
2>组播组成员端口老化时间:当一个端口加入到组播组中的时候会同时启动该端口的老化定时器。 如果在此定时器超时的时候还没有收到 IGMP 成员报告报文,则老化该组播成员端口。此定时器 默认为 260 秒,不能配置
在这里插入图片描述
3>路由器端口老化时间:路由器端口老化定时器设置的时间。如果在此定时器超时的时候还没有收 到 IGMP 查询报文(可以是通用查询报文,也可以是特定组查询报文),则老化此路由器端口。 此定时器默认为 255 秒,即 4 分 15 秒,倒计时方式;该参数可配置
在这里插入图片描述
4>组播成员端口(Member port):与组播组成员主机相连的端口。组播组成员指加入某个组播组的主机。可以是物理上相连,也可以是逻辑上相连。设备接收到组播业务报文,将根据组播地址表 向对应组播成员端口转发
在这里插入图片描述 5>路由器端口(Router port):收到 IGMP 组查询报文或者组播路由协议报文的端口。可以是物理 上相连路由器,也可以是逻辑上相连路由器。当设备收到 IGMP 成员报告或离开报文时,会将报文通过路由器端口转发出去,这样上联路由器能正确维护 IGMP 成员关系表
在这里插入图片描述

(4)协议流程:

1、收到 IGMP 通用查询报文时,如果是已有的路由器端口(即原来这个端口就和组播路由器相连), 则更新路由器端口老化定时器;如果是新路由器端口(即原来这个端口没有和组播路由器相连), 则设备把该端口学习为路由器端口,同时启动对该路由器端口的老化定时器。无论何种情况, 设备收到通用查询报文后,均需向对应 VLAN 中 flood;
2、 收到 IGMP 特定组查询报文时,设备需学习新的路由器端口或更新路由器端口老化时间,然后 向被查询的组播组成员端口转发该特定组查询报文;
3、 收到 IGMP 报告报文时,判断该报文要加入的 IP 组播组对应的 MAC 组播组是否已经存在。如 果对应的 MAC 组播组不存在,则新建 MAC 组播组,将接收报告报文的端口加入该 MAC 组播 组中,并启动该端口的老化定时器;如果该报文对应的 MAC 组播组已经存在,但是接收报告 报文的端口不在该 MAC 组播组中,则将接收报告报文的端口加入 MAC 组播组中并启动该端 口的老化定时器;如果该报文对应的 MAC 组播组已存在,并且接收报告报文的端口也已经存 在于该 MAC 组播组,则仅更新接收报告报文的端口上的老化定时器。无论何种情况,设备收 到 IGMP 报告报文后,都只向路由器端口转发,如果路由器端口不存在,则只学习/更新组播组 表项,不转发此报文;
4、 收到对某 IP 组播组的 Leave 报文,如果开启了快速老化功能,则立即老化该组播成员端口;如果没有开启快速老化功能,则会启动端口的响应查询定时器,如果在该定时器超时的时候还没 有收到该组播组的报告报文,则将该端口从相应 MAC 组播组中删去。当成员端口被老化时, 如果 MAC 组播组没有组播成员端口了,设备应删除该组播组表项。无论何种情况,设备收到 Leave 报文后,都只向路由器端口转发。

PS
IGMP查询器:在网络中如果没有三层组播设备,将无法实现 IGMP 查询器的相关功能。为了解决这个问题,可以通过在二层组播设备上配置 IGMP snooping 查询器来实现 IGMP 查询器的功能。使二层组播设备能够建立并维护组播转发表项,从而正常转发组播业务报文。
配置为查询器后,必须指定设备的一个地址为查询器地址,否则由于缺省源地址为 0.0.0.0 故无法发出 IGMP 组查询报文
配置了 IP 地址的查询器会参加 VLAN 内 IGMP 查询者的选举,当选查询者负责维护 VLAN 内 IGMP 成员关系表

(5)IGMP snooping TCN 事件

当网络拓扑发生变化时,会产生 TCN 事件,生成树根端口会主动发送全局 IGMP 离开报文(组地址:0.0.0.0)来请求 IGMP查询者发送普通组查询报文,达到快速收敛目的;
使能 IGMP snooping TCN 事件快速收敛后,非生成树根端口也能主动发送全局 IGMP 离开报文 (组地址:0.0.0.0),达到快速收敛目的。

(6)IGMP Proxying

当网络中有较多组播组的接收者,为了减少上游组播设备收到的 IGMP 成员报告和离开报文的 数量,有效减小系统开销,可以在设备上配置 IGMP Proxying
IGMP Proxying 能够代理下游接收者向上游设备发送的 IGMP 成员报告报文和离开报文;也能 够响应上游组播设备发送的 IGMP 组查询报文,再向下游设备发送 IGMP 组查询报文。

(7)组播vlan

传统二层组播点播方式,当处于不同的 VLAN 的用户点播时,每个 VLAN 会在本 VLAN 内复 制一份组播流。这种组播点播方式浪费了大量的带宽
为了解决这个问题,可以通过配置组播 VLAN 的方式,使不同 VLAN 内的用户共用一个组播 VLAN。组播 VLAN 功能开启后,并且组播 VLAN 与用户 VLAN 完全隔离,这样不仅节约了 带宽而且保证了安全性
组播 VLAN 有两种:分别是 MVR(Multicast VLAN Registration,组播 VLAN 注册)和 MVP (Multicast VLAN Plus,组播 VLAN 增强版)
1>MVR:
 当多个用户端口属于不同 VLAN 时,可以通过将这些端口添加到 MVR 组播 VLAN 内,实现不 同 VLAN 内的用户共用一个组播 VLAN
 MVR 组播 VLAN 成员端口只能接用户,不能再串接设备,从 VLAN 成员端口发送出去组播报 文不能带 VLAN Tag
 用户端口配置为 hybrid 模式,同时属于用户 VLAN 和 MVR VLAN
2>MVP:
 用户端口无需添加到组播 VLAN,只需将用户 VLAN 设置为组播 VLAN 的子 VLAN;MVP 将 完成组播 VLAN 和子 VLAN 之间的组播报文复制
 子 VLAN 成员端口可接设备,也可以直接接用户。当接设备时,子 VLAN 成员端口发送组播 报文可以带 VLAN Tag;当连接用户时,子 VLAN 成员端口发送组播报文不带 VLAN Tag
 下游设备无需关注 MVP 设备的配置,正常配置即可

出现问题以及解决方法:

1.组播不通
1>.排查单播是否通
2>单播通的情况下,排查设备配置是否正常,端口下是否使能PIM-Sm,接入设备上是否使能iGMP,
PS:vlan下如果配置了未知二层组播丢弃以及组播流量上游转发,l2-multicast drop-unknown ; multicast mrouter-forwarding,那么所有的接入设备上此vlan都必须配置,不然可能出现组播不通的情况。
2.组播到特定时间表项消失show ip igmp snooping groups,发现表项消失
1>查询组播相应时间的表格
PS:如果网络结果中没有组播路由,只是一个单纯的二层组播,则需要配置组播查询器功能,不然到了40分20S左右组播表项会消失,因为无人维护这个表项。
3.组播丢包
使用ACL的count动作组,在组播数据的路径上,看看报文丢在哪里
4.在不同厂商设备对接的时候,组播的RP最好设备成为环回口的地址,尽量避免设置成为组播vlan的地址

1.sh ip pim mroute 看核心有没有组播路由表,(下面的过程首先是接收端去注册形成(*,G)表项
然后源去注册形成(S,G)表项,最终RPT-SPR切换,转发数据)

Hostname#show ip pim mroute

IP Multicast Routing Table:

PIM VRF Name: Default

Total 0 (*,*,RP) entry

Total 1 (*,G) entry

Total 1 (S,G) entry

Total 1 (S,G,rpt) entry

Total 0 FCR entry

Up timer/Expiry timer



(*, 225.1.1.1)

Up time: 00:08:12

RP: 0.0.0.0

RPF nbr: 0.0.0.0

RPF idx: None

Flags:

  JOIN DESIRED

Upstream State: JOINED

  Local interface list:

    vlan3

  Joined interface list:

  Asserted interface list:

 

(138.255.1.134, 225.1.1.1)

Up time: 00:07:24

KAT time: 00:02:22

RPF nbr: 0.0.0.0

RPF idx: None

SPT bit: TRUE

Flags:

  JOIN DESIRED

  COULD REGISTER

Upstream State: JOINED

  Local interface list:

  Joined interface list:

    register_vif0

  Asserted interface list:

  Outgoing interface list:

    register_vif0

    vlan3

  Packet count 8646421

 

(138.255.1.134, 225.1.1.1, rpt)

Up time: 00:07:24

RP: 0.0.0.0

Flags:

  RPT JOIN DESIRED

  RPF SGRPT XG EQUAL

Upstream State: NOT PRUNED

  Local interface list:

  Pruned interface list:

  Outgoing interface list:

vlan3

若看到上述状态,说明转发组播数据无问题


2.show ip mcache 查询组播的核心转发表
router#sh ip mcache

Multicast Forward Cache table:
Total 1 MFC entry
Total 0 stall upcall packet
MFC (138.255.1.134/32,  224.123.234.2/32)
  Incoming interface: fastethernet0.1(1)
  Flags: PROTOCOL MFS IPMC 
  Output interface list: 
    fastethernet1(0)
  Waiting packets: NULL
  Uptime: 00:05:36, Timeout in 23 sec
只要可以看到这个表里面的‘输入输出接口’,那么组播一般工作都是没有问题。

3、sh ip igmp groups 


Hostname#show ip igmp groups

IGMP Static Group Membership

Total 1 Static Groups

Group Address    Source Address   Interface            

225.0.0.1        0.0.0.0          vlan2        

IGMP Connected Group Membership

Total 1 groups

 
Group Address  Interface  Uptime    Expires   Last Reporter    V1 Expires  V2 Expires

226.0.0.1      vlan2      00:00:44  00:04:14  128.255.17.66    stopped     stopped

查看组播的接收者是否已经加入了组播组,如果这里已经可以看到该组,就证明igmp处理应该没有问题。



4,接入交换机show ip igmp snooping group有没有表项
有的话,证明接入交换机转发无问题
Hostname#show ip igmp snooping groups

IGMP Snooping Group Membership

Total 1 group

 

VLAN ID  Interface Name       Group Address    Expires   Last Reporter    V1 Expires  V2 Expires  Uptime  

_______  ___________________  _______________  ________  _______________  __________  __________  __________  

20       gi0/21               229.55.66.1      00:04:05  128.255.27.89    stopped     stopped     00:00:16

  • 9
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值