组播协议详解

1.组播基础

(1)组播简介

(2)组播的地址

(3)组播的MAC地址

(4)组播的MAC地址

(5)反向转发路径—RPF

2.IGMP

(1)简介

(2)原理

3.IGMP版本

(1)IGMPV1

(2)IGMPV2

(3)IGMPV3

4.PIM-SM

(1)PIM-SM基础

(2)PIM的工作机制

5.IGMP snooping

(1)基本概念:

(2)主要功能:

(3)角色

(4)协议流程:

(5)IGMP snooping TCN 事件

(6)IGMP Proxying

(7)组播vlan

今天海翎光电的小编围绕着组播、组播的MAC地址、IGMP原理、IGMPV1、IGMPV2、IGMPV3、PIM-SM工作机制展开为大家分享。

    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),主机想加入某个组播组,组地址为某个组播地址。

图片

主动加入:主机第一次加入某组播组时,可以在未被查询的情况下,主动通告一个 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 超时,离开组。

查询器选举:

  • 所有IGMPv2 路由器在初始都认为自己是查询器,并向本网段所有路由器(224.0.0.1)发送 IGMPv2常规查询报文。

  • 然后本网段所有 IGMPv2 路由器比较优先级,越大越优先;若优先级相同比较接口IP,越小越优先。

  • 非查询路由器启动一个计时器,收到查询器的常规查询报文就把计时器复位。如果计时器超时,就认为查询路由器发生故障,开始重新选择。

   (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的地址

图片

图片

图片

图片

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/463697.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vite ts vue 项目提示 . Projects must list all files or use an include pattern.

vite ts vue 项目提示 . Projects must list all files or use an include pattern. 在引用一个 ts 的时候,提示如下: 需要在 tsconfig.node.json 文件中添加: {"compilerOptions": {"composite": true,"skipLibC…

【LLM】LLama2模型(RMSNorm、SwiGLU、RoPE位置编码)

note 预训练语言模型除了自回归(Autoregressive)模型GPT,还有自编码模型(Autoencoding)BERT[1]、编-解码(Encoder-Decoder)模型BART[67],以及融合上述三种方法的自回归填空&#xf…

一文速通ESP32(基于MicroPython)——含示例代码

ESP32 简介 ESP32-S3 是一款集成 2.4 GHz Wi-Fi 和 Bluetooth 5 (LE) 的 MCU 芯片,支持远距离模式 (Long Range)。ESP32-S3 搭载 Xtensa 32 位 LX7 双核处理器,主频高达 240 MHz,内置 512 KB SRAM (TCM),具有 45 个可编程 GPIO 管…

ttkbootstrap界面美化系列之简介(一)

一:前言 相信很多同学用Python进行界面设计第一个用到的就是Tkinter,Tkinter是Python的一个标准接口,用于创建GUI(图形用户界面)应用程序。它是Tcl/Tk的封装,Tkinter的名称来源于Tk技术工具包(Tool…

2024 Mazing 3 中文版新功能介绍Windows and macOS

iMazing 3中文版(ios设备管理软件)是一款管理苹果设备的软件, Windows 平台上的一款帮助用户管理 IOS 手机的应用程序。iMazing中文版与苹果设备连接后,可以轻松传输文件,浏览保存信息等,软件功能非常强大,界面简洁明晰…

Outlook API发送邮件的方法?如何设置接口?

如何使用Outlook API发送电子邮件?怎么调用API接口? 为了满足更高级别的需求,我们可能需要通过编程的方式来操作Outlook,这时候,Outlook API就显得尤为重要了。那么,如何使用Outlook API发送邮件呢&#x…

Linux下的多线程编程:原理、工具及应用(3)

🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:Flower of Life—陽花 0:34━━━━━━️💟──────── 4:46 🔄 ◀️ ⏸ ▶️ ☰ …

从零到一构建短链接系统(五)

1.修改UserService Service public class UserServiceImpl extends ServiceImpl<UserMapper, UserDO> implements UserService {public UserRespDTO getUserByUsername(String username) {LambdaQueryWrapper<UserDO> queryWrapper Wrappers.lambdaQuery(UserDO.c…

【python】集合

前言 简洁整理&#xff0c;无废话 集合概念 含义&#xff1a;跟数学中的基本一样 形式&#xff1a;{1,a,(1,2)} 性质&#xff1a;不重复性&#xff0c;集合中每个元素不会有重复&#xff1b;集合中必须是不可变元素&#xff0c;不能有列表可以有元组 创建&#xff1a;{}或…

如何引入ElementUI组件库,快速上手Element

前言&#xff1a;在上篇文章中分享了如何快速上手Vue框架项目&#xff0c;本篇文章则介绍的是Element的使用&#xff0c;通过本篇文章的分享&#xff0c;我们就可以将Vue和Element结合使用&#xff0c;快速构建出精美的网页界面 目录 一.Element和ElementUI 二.如何引入Eleme…

算法打卡day19|二叉树篇08|Leetcode 235. 二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点

算法题 Leetcode 235. 二叉搜索树的最近公共祖先 题目链接:235. 二叉搜索树的最近公共祖先 大佬视频讲解&#xff1a;二叉搜索树的最近公共祖先视频讲解 个人思路 昨天做过一道二叉树的最近公共祖先&#xff0c;而这道是二叉搜索树&#xff0c;那就要好好利用这个有序的特点…

Luckysheet + Exceljs:H5实现Excel在线编辑、导入、导出及上传服务器的示例代码(完整版demo)

创建xeditor.html <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>Hello World!</title><!-- <link relstylesheet href./luckysheet/plugins/css/pluginsCss.css /><link relstylesheet href./luck…

【嵌入式实践】【芝麻】【硬件篇-3】从0到1给电动车添加指纹锁:光耦+继电器电路设计及讲解

0. 前言 该项目是基于stm32F103和指纹模块做了一个通过指纹锁控制电动车的小工具。支持添加指纹、删除指纹&#xff0c;电动车进入P档等待时计时&#xff0c;计时超过5min则自动锁车&#xff0c;计时过程中按刹车可中断P档状态&#xff0c;同时中断锁车计时。改项目我称之为“芝…

Chapter 13 Techniques of Design-Oriented Analysis: The Feedback Theorem

Chapter 13 Techniques of Design-Oriented Analysis: The Feedback Theorem 从这一章开始讲负反馈Control系统和小信号建模. 13.2 The Feedback Theorem 首先介绍 Middlebrook’s Feedback Theorem 考虑下面负反馈系统 传输函数 Guo/ui G ( s ) u o u i G ∞ T 1 T G…

7.Java整合MongoDB—项目创建

整合MongoDB MongoDB的基本知识有所了解之后&#xff0c;我们开始着手上代码了&#xff0c;进来先来项目创建&#xff0c;如何引入mongodb&#xff0c;以及测试一下能否连接数据库。 1 新建springboot项目 其实只需要spring boot mongodb这个依赖就行&#xff0c;加那么多纯属…

sparksql简介

什么是sparksql sparksql是一个用来处理结构话数据的spark模块&#xff0c;它允许开发者便捷地使用sql语句的方式来处理数据&#xff1b;它是用来处理大规模结构化数据的分布式计算引擎&#xff0c;其他分布式计算引擎比较火的还有hive&#xff0c;map-reduce方式。 sparksql…

基于单片机的智能小车泊车系统设计

摘 要:随着信息技术的进步,汽车逐渐朝着安全、智能方向发展,智能泊车系统的出现不仅能帮助人们更加快速、安全地完成泊车操作,而且适用于狭小空间的泊车操作,降低驾驶员泊车负担,减轻泊车交通事故发生率。文章基于单片机设计自动泊车系统,以单片机为核心来实现信息收集及…

文件系统I/O FATFS RW 源码分析

文件系统I/O FATFS RW 源码分析 0 参考 FatFs 是用于小型嵌入式系统的通用 FAT/exFAT 文件系统模块。FatFs 整个项目都按照 ANSI C (C89) 编写。与存储器 I/O 解耦良好&#xff0c;便于移植到 8051、PIC、AVR、ARM、Z80、RX 等小型微控制器中。 下面是关于 FAT 文件系统格式…

【Exception系列】SocketTimeoutException

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

ADO .Net操作SQL Server数据库

//ADO.NET是.NET Framework提供的数据访问服务的类库&#xff0c;应用程序可以使用ADO.NET连接到这些数据源&#xff0c;并检索、处理和更新数据 //常用的数据源包括四种&#xff1a;&#xff08;1&#xff09;Microsoft SQL Server数据源&#xff1a;使用System.Data.SqlClien…
最新文章