带你走进 华为交换机组播IGMP 简单易懂

艺博东

共 4831字,需浏览 10分钟

 ·

2021-03-31 15:50

哈喽,大家好!我是艺博东 ,一个思科出身专注于华为的网工;好了,话不多说,我们直接进入正题。

点击上方“蓝字”关注我们


文章目录


    • IGMP


    • IGMP Snnoping

    • PIM

    • lGMPv1

    • lGMPv2

    • lGMPv3





IGMP



分析lGMP协议的作用,各版本之间的差异

作用:IGMP用来在接收者主机和与其直接相邻的组播路由器之间建立和维护组播组成员关系。IGMP通过在接收者主机和组播路由器之间交互IGMP报文实现组成员管理功能,IGMP报文封装在IP报文之上,协议号为2。


lGMPv1



1.查询器 PIM-DR
查询器的选举:1.优先级越大越优;如果优先级一样;就比较IP地址,IP地址大的优选。

2.普遍组查询报文
由组播路由器发出,报文发送的目的地址为224.0.0.1,周期性发,每60S发送一次。

3.成员报告报文
接收者发出,用于表明加入那个组播组中;第一次加组,MRT超时(10S)

4.成员抑制
随机响应时间小于等于10S(MRT),谁先超时,谁先发。

5.离组机制(组成员离开机制)
静默离开(130S,120+10 两次普遍组查询报文+MRT),130S无主机回应,删除该组表项。


lGMPv2



1.查询器
自己选,选择IP地址小的

2.普遍组查询报文
同V1由组播路由器发出,报文发送的目的地址为224.0.0.1,周期性发,每60S发送一次。

3.成员报告报文
同V1接收者发出,用于表明加入那个组播组中;第一次加组,MRT超时(10S)

4.成员抑制
MRT默认为10S,可改动(1-25S)

5.离组机制
发leave报文,组地址 离开那个组目的地址就是那个组。
特定组查询机制,查看有无成员;如果有成员,就继续转发组播流量;如果无成员,就不用转发组播流量。只有last-reporter发送的离开报文才会触发特定组查询机制。

6.last-reporter
目的就是用于减少,leave报文、特定组查询报文、成员报告报文


lGMPv3



1.查询器
同V2自己选,选择IP地址小的

2.普遍组查询报文
同V2由组播路由器发出,报文发送的目的地址为224.0.0.1,周期性发,每60S发送一次。

3.报告机制

报文:
加组信息,还有源信息;
六种组记录,
① Mode is include 加那个组,发一个报告报文 group 225.1.1.1 S 100.1.1.1 200.1.1.1
② Mode is exclude group 225.1.1.1 S 100.1.1.1 200.1.1.1 就这两个S不接收,其他的接受
③ Change to include mode 3、4模式改变
④ Change to exclude mode 3、4模式改变
⑤ Allow new source 增加 group 225.1.1.1 S 100.1.1.1 200.1.1.1 100.1.1.2 在原来的基础上加 100.1.1.2这个地址
⑥ Bloking old source 删除 group 225.1.1.1 S 100.1.1.1 200.1.1.1 100.1.1.1 把100.1.1.1这个地址删除

4.无leave报文
5.无成员抑制

IGMPv3没有定义专门的成员离开报文,成员离开通过特定类型的报告报文来传达。
IGMPv3成员离开通过发送加入组播源地址列表为空的成员报告报文来表示离开。


IGMP Snnoping



IGMP Snooping的机制?不同proxy有什么不同?snooping有什么缺点?snooping检查所有组播报文?如何做到的?

(1)IGMP Snnoping的作用

IGMP snooping 的作用是减少组播流量的泛洪;当PC1加组225.1.1.1,上面的路由器会泛洪下来,二层MAC是组播MAC,交换机收到这二层组播MAC数据流的时候会进行泛洪,泛洪给PC1,同时也会泛洪PC2、PC3;PC2、PC3即使没有加组也会收到组播数据流。为了解决这个问题在交换机上开启 IGMP snooping ,开启了之后可以监听路由和主机IGMP的相关的报文,普遍组查询报文,报告报文,通过监听这些报文,就可以得知PC1加组是这个组,PC2、PC3没有加组,收到这个组的组播流的时候,只转发给PC1,不转发给PC2、PC3。就可以减少组播流量的泛洪,这个就是IGMP snooping的作用。

(2)IGMP Snooping 的两种端口角色

1.路由器端口角色:
1)通过侦听IGMP普遍组查询报文或 PIM HELLO报文来感知哪些接口是路由器端口。从上面收到的普遍组查询报文或 PIM HELLO报文就认为这个接口(S的G0/0)为路由器端口。
2)通过手工指定路由器端口。

进入VLAN视图。

(可选)执行命令undo igmp-snooping router-learning,禁止动态学习路由器端口。
缺省情况下,VLAN的路由器端口动态学习功能处于使能状态。

2.成员端口:
1)收到IGMP report报文的接口将被认为是动态成员端口。从下面主机收到的成员报告报文的接口就成为成员端口(S的G0/1)
2)手工配置成员端口

进入接口视图

(可选)执行命令undo igmp-snooping learning vlan { { vlan-id1 [ to vlan-id2 ] } &<1-10> | all },禁止动态学习组播成员端口。
缺省情况下,成员端口动态学习功能处于使能状态。禁止动态学习组播成员端口功能之后,如果要完成组播数据的转发,接口只能静态加入组播组。

(3)IGMP snooping的工作机制

1.普遍组查询报文:同VLAN内泛洪(IGMP三层报文,三层报文进来这个接口会打vlan标签 S的G0/0接口)
2.Report:记录加组信息,向路由端口转发
3.Leave报文:向路由器转发
4.特查报文:向该组成员接口转发

(4)IGMP Snooping的缺点有哪些?

[R1] vlan 100
[R1-vlan100] igmp-snooping enable //命令用来使能VLAN内的IGMP Snooping功能

1.CPU和内存开销问题,CPU需要处理IGMP报文来维护二层组播转发表,如果交换机下的组很多的话,二层组播转发表需要占用的内存也是相当大的。
2.如果在不能识别IGMP报文的二层交换机上打开igmp snooping会监听所有的组播报文,并且会把这些组播报文全部送给CPU处理,会加重CPU的负载。


(5)IGMP snooping proxy

[R1] vlan 100
[R1-vlan100] igmp-snooping enable //命令用来使能VLAN内的IGMP Snooping功能
[R1-vlan100] igmp-snooping proxy //命令用来使能VLAN内的IGMP Snooping Proxy功能

背景

路由器是不需要关心下面哪些主机加组,它只关心有没有加组就行。一个加组,两个加组,三个加组,对于它来说是不影响的。但这个时间R收到大量报文,这是没必要的。所以在snooping上开启代理机制,使得路由器减少报告报文的接收。S作为中间代理人,对于R来说S是一个成员,它对于主机来说是一个查询器,就可以减少report的发送。

工作机制
1.普遍组查询报文:向VLAN内泛洪,主动回复report
2.Reort:维护组表项(不老化);特例的情况会老化,新表项建立时转发
3.Leave:发特查(主机发leave报文,S向下发特查报文,删组时向上发leave报文的)
4.特查报文:根据主表项应答 回report报文;有组表项就回应答,没有就不用管。

交换机作为中间人,PC相当于各个成员,它负责把各个成员信息汇总发给R。


PIM



(1)建SM邻居

建立邻居的过程同PIM-DM一致,协商参数、报文格式类型也完全一致。DR竞选规则也一致。

[R2]multicast routing-enable 
[R2]pim
[R2-pim]int g0/0/1
[R2-GigabitEthernet0/0/1]pim dm

(2)RP发现

首先RP的位置

1)每一个组播组只能存在一个RP
2)RP的地址必须要全网可达,能通过IGP协议实现访问(建立RPT树)
3)RP所在的接口地址必须要运行PIM SM

成为RP的方式:

手工指定:

(配置:在PIM视图下,static-rp 10.1.12.2)
1.每个组播路由器都需要配置
2.没有冗余备份

动态发现:

1.不需要每台组播路由器配置RP,可以自动学习到RP
2.有冗余备份,一个组播组可以配置多个C-RP,一个主多个备份
(配置:在PIM视图下, c-rp loopback 0 group-policy 2000 priority 10 #acl为2000)
在PIM视图下,c-bsr gigabitethernet1/0/0

(3)构建RPT树

由成员端DR向RP发送Join消息在通向RP的路径上逐跳创建*,G表项,生成以一棵以RP为根的RPT;
*,G表项是由收到成员报告或者收到join报文而创建的。
上游接口是根据RP的地址路由得到的;
下游接口是根据收到的join报文或者成员报告报文的接口确定的;

(4)构建SPT树

由组播源端DR向RP沿途创建(S,G)表项;
组播源发送正常组播流;
组播源端DR收到后,创建(S,G)表项,并将组播数据进行封装成注册报文,单播发给RP;
RP收到注册报文后,解封装将组播源数据发送下去;同时,向组播源端DR发送join报文;
RP到组播源端DR沿途创建(S,G)表项;
RP继续向组播源端DR单播发送注册停止报文,让组播源端DR不再发送注册报文;

RP上游接口是根据收到注册消息的接口成为上游接口;
RP下游接口根据(*,G)表项下游接口复制而来;

(5)SPT树的切换

[AR1pim
[AR1-pim]spt-switch-threshold 1000
//开启SPT切换,阈值为1000,当AR1组播的速率到达每秒1000的时候就开始spt切换,默认为0

作用

1)组播源到接收者走的是最优的路径
2)减轻RP的负担

切换的过程

1)当最后一跳路由器的DR组播流达到一定的阈值,会向组播源的方向发出(S,G)的join的消息;

2)当上游路由器收到(S,G)的join消息,会将(S,G)的flag位切换为SPT置位,上游接口为离组播源最近的接口,下游接口为接收(S,G)的join消息接口,并且继续往组播源的方向发(S,G)的join消息,建立SPT树;

3)当遇到分叉点的组播路由器收到两份组播流,会触发(S,G)RPT置位的剪枝报文,朝RP方向进行发送,作用是为了删除掉RPT树上(S,G)的下游接口。

情商:是指人在情绪,意志,耐受,挫折等方面的品质。有十条标准!1.热情和激情,2.包容和宽容,3.沟通与交流,4.真诚赞美别人,5.保持好情绪,6.聆听是好习惯,7.有责任心,8.每天进步一点点,9.用心对待他人,10不抱怨,不指责。



好了这期就到这里了,如果你喜欢这篇文章的话,请点赞评论分享收藏,如果你还能点击关注,那真的是对我最大的鼓励。谢谢大家,下期见!



往期推荐:

使用console配置线连接真机路由器

2021-03-22

华为 IS-IS防环、泄露

2021-03-15

华为 BGP协议基础配置与总结

2021-03-11


关注 艺博东 公众号,与你一起学习共同进步。秀秀秀秀秀~



点赞在看养成习惯

浏览 410
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报