HCNP Routing&Switching之组播技术-IGMP-Snooping
前文我们了解了组播协议IGMP相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15700550.html;今天我们来聊一聊二层交换机处理组播报文所面临的问题,以及IGMP-Snooping相关话题;
我们知道二层交换机在单播通信中的工作原理就是根据构建mac地址表来转发数据,如果二层交换机收到一个未知的单播或广播报文,那么它会泛洪出去;对于组播信息它会如何处理呢?其实二层交换机收到组播报文,默认情况下,它会把组播报文当作广播处理,即 收到组播报文,它会泛洪出去;这样一来对于接入同一二层交换机的组播客户端,在没有加入对应组播组的情况下也会照常收到组播源发送的组播报文;很显然,这无形是对那些不需要接收对应组播报文的客户端的带宽造成浪费,拥堵;为了解决这样的问题;igmp-snooping出现了;igmp-snooping的主要作用是嗅探组播信息,从而根据组播信息建立起组播mac地址表,从而实现隔离那些未加入对应组播组的客户端流量;简单讲就是,有了igmp snooping,在同一二层交换机收到对应组播报文,它不会全局泛洪,而是根据对应的组播mac表来转发数据,从而规避了全局泛洪所带来的困扰;如下如所示

提示:如上图所示,在客户端B加入G2组,在对于非g2组的客户端A和C来说,它们也能正常收到G2组播源发送的组播信息(原因是二层交换机把组播报文当作广播处理了);这就是二层组播数据转发时,说面临的问题;它会造成网络资源的浪费,以及一些安全隐患的存在;
IGMP Snooping工作原理

提示:首先在二层交换机上运行igmp snooping ;在路由器发送查询给交换机,对应交换机会收到查询,此时二层交换机会在内核建立一个组播mac表,把对应收到查询把文接口和对应组播mac地址做关联;然后把查询泛洪出去;对应组播接收者收到路由器的查询,然后把报告报文发送给交换机,此时交换机会把接受报告的端口和对应组播mac做关联;这样一来就建立起组播mac地址表项;后续二层交换机就根据这个组播mac表项来转发数据;

提示:我们把收到查询报文的接口叫做路由器端口(上游接口);把收到报告的接口叫做成员端口(下游接口);对于路由端口和成员端口的生成有两种方式,第一种就是动态生成,即通过igmp的普遍查询或pim 的hello包动态生成路由接口;通过收到IGMP report报文的接口自动生成成员端口;这种方式是动态生成路由接口或成员接口;第二种方式就是手动配置路由接口或成员接口,这种方式成为静态路由端口或成员端口;路由端口主要作用是接受组播数据的上游接口,而成员端口主要作用是发送组播数据给下游接口;

提示:igmp snooping的工作原理总结为路由器发送查询,组播成员发送报告,从而交换机构建起组播mac表项;从而实现规避二层交换机收到组播报文泛洪;

提示:路由器周期性发送普遍查询报文,该报文会被交换机收到,此时交换机会泛洪该报文,从而交换机上的所有的端口都会收到查询报文,此时交换机就会建立起一张二层组播转发表,该表的内容是对应组播mac和对应的端口;并把1口标记为路由接口(收到查询报文);如果clientB 希望加入组播组,此时clientB会发送一条IGMP成员报告,对应报告中就会有目的mac地址,交换机从3口收到对应报告以后,通过igmp snooping处理以后,它会把3口加入到对应组播mac对应的端口里,并把3口标记为成员端口(收到报告的端口);同样的道理clientc加入对应组播组,它也会发送一条主动报告给交换机,交换机收到对应报告以后,它会把4口加入到对应组播组对应的端口里;这样一来就形成了一个二层组播转发表;所以对于启用IGMP snooping的交换机来说,有了这个表项,对应组播组的数据就会现在只对应的端口上首发,而不会发送给其他端口;
IGMP和IGMP-Snooping配置
实验拓扑如下

分析:首先我们需要配置好个设备的ip地址和组播地址,然后在路由器上配置上pim;这里需要说明一点,所有组播都是基于单播实现的,所以我们需要先把单播搞通,然后再配置组播igmp和igmp-snooping;这个实验在ensp模拟器上二层交换机开启igmp-snooping时会有bug,导致组播客户端发送的报告路由器收不到,路由器发送的查询,组播客户端收不到,所以路由器面向二层交换机的接口会认为没有客户端(因为查询发出去没有人报告给它);所以我们还需要在路由器面向交换机的接口配置静态组播组信息;
配置客户端地址


验证pc1和pc2互通

提示:可以看到pc1和pc2是可以正常通信的;
配置路由器各接口ip地址

sys
sys r1
int g0/0/0
ip add 1.0.0.100 24
int g0/0/1
ip add 2.0.0.100 24
验证路由器各接口是否正常up

配置组播源服务器ip地址

配置组播源

验证:客户端到组播源服务器的单播是否能够正常通讯?

ok,到此该实验的单播网络已经搞通,接下来是在路由器上配置igmp 和pim
在路由器上全局开启组播路由功能

提示:只有在组播路由器上开启了组播路由功能以后,后续的igmp和pim才能够正常开启;
在路由器面向二层交换机接口开启pim以及igmp

在路由器面向组播源接口开启pim以及igmp

验证路由器组播组信息

提示:如果pc客户端不加入对应组播组在路由器上是看不到对应组播组信息的;此时如果不考虑igmp-snooping 那么组播源的数据就能正常发送给组播客户端;
验证:在pc1所在链路上抓包

提示:可以看到组播源发送数据,对应pc1所在链路也会收到数据;但二层交换机它对于组播的处理和处理广播的方式一样都是泛洪,所以pc2即使没有加入组播组,对应链路上也会收到组播数据;
在二层交换机上开启igmp-snooping

提示:在交换机上开启了igmp-snooping以后,由于模拟器bug原因会导致路由器发送到查询客户端收不到,当然客户端也无法正常报告给路由器,所以时间一旦超时,在路由器上的组播组信息就会被删除,即路由器不会向交换机转发组播数据;
在路由器上面向交换机的接口上添加静态组播组信息

提示:可以看到之前路由器上的组播组信息已被删除,原因是在交换机上开启igmp-snooping以后隔断了路由器和客户端查询和报告;手动在路由器上面向交换机的接口下配置静态组播组信息是让组播数据一直会从对应接口发送出去;
在交换机上查看路由接口

提示:可以看到交换机通过igmp-snooping已经分析出eth0/0/1口是路由器接口;这个和我们的拓扑很吻合;
在交换机上查看成员接口

提示:现在提示我们没有成员接口;原因是交换机没有收到报告,所以它认为没有成员;
在pc1上点击加入对应组播组,看看对应成员接口是否在交换机上看到?

提示:可以看到交换机收到pc1发送的报告以后,对应就把连接pc1端口加入到对应组播组的成员端口中;正常情况下此时组播数据只会向pc1所在端口转发,但是由于bug的原因,此时数据还是会泛洪;即pc2所在端口虽然没有加入组播组,但还是可以收到组播数据;这个是模拟器bug;到此igmp-snooping的配置就完成了;
HCNP Routing&Switching之组播技术-IGMP-Snooping的更多相关文章
- HCNP Routing&Switching之组播技术-组播协议IGMP
前文我们了解了组播地址相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15616740.html:今天我们来聊一聊组播协议中IGMP协议相关话题: 组播 ...
- HCNP Routing&Switching之组播技术-组播路由协议PIM
前文我们了解了组播技术中组播分发树相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16019334.html:今天我们来聊一聊组播路由协议PIM相关话题 ...
- HCNP Routing&Switching之组播技术PIM-SM RP
前文我们了解了组播技术中,组播路由协议PIM的稀疏模式相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16142795.html:今天我们来聊一聊组播路 ...
- HCNP Routing&Switching之组播技术-组播基础
组播技术背景 随着internet网络的不断发展,网络中交互的各种数据.语音.视频信息数量突增:新型的在线直播.网络电视.视频会议等应用也在逐渐兴起:这些业务大多符合点到多点的模式,对信息安全性.传播 ...
- HCNP Routing&Switching之组播技术-组播地址
前文我们聊到了组播技术背景,单播.广播在点到多点应用中的问题,以及组播对比单播.广播在点到多点的网络环境中的优势.劣势,相关回顾请参考https://www.cnblogs.com/qiuhom-18 ...
- HCNP Routing&Switching之组播技术-组播分发
前文我们了解了组播技术中的igmp-snooping相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15860484.html:今天我们来聊一聊组播技术 ...
- HCNP Routing&Switching之组播技术PIM-SM 稀疏模式
前文我们了解了组播路由协议PIM以及PIM-DM密集模式相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16084310.html:今天我们来聊一聊PI ...
- IP组播技术介绍及实现例子
引 言 近年来,随着Internet的迅速普及和爆炸性发展,在Internet上产生了许多新的应用,其中不少是高带宽的多媒体应用,譬如网 络视频会议.网络音频/视频广播.AOD/VOD.股市行情发布. ...
- 《TCP/IP 详解 卷1:协议》第 9 章:广播和本地组播(IGMP 和 MLD)
我已经懒了,卷一已经是去年年底看完的,但怎么说卷一的坑开了就要填完啊-- 广播和本地组播(IGMP 和 MLD) 引言 有 4 种 IP 地址,单播(unicast).任播(anycast).组播(m ...
随机推荐
- 晴天小猪历险记之Hill(Dijkstra优先队列优化)
描述 这一天,他来到了一座深山的山脚下,因为只有这座深山中的一位隐者才知道这种药草的所在.但是上山的路错综复杂,由于小小猪的病情,晴天小猪想找一条需时最少的路到达山顶,但现在它一头雾水,所以向你求助. ...
- Pikachu漏洞练习-SQL-inject(二)
- python xlrd读Excel表
1 xlrd第三方库 注意:xlrd较新版本不支持读xlsx表,需安装1.2.0版本(pip install xlrd==1.2.0)或使用其他库. xlrd库官方文档:https://xlrd.re ...
- JDK HttpClient 单次请求的生命周期
HttpClient 单次请求的生命周期 目录 HttpClient 单次请求的生命周期 1. 简述 2. uml图 3. Http连接的建立.复用和降级 3.1 调用流程及连接的建立和复用 3.2 ...
- 教你10分钟对接人大金仓EF Core 6.x
前言 目前.NET Core中据我了解到除了官方的EF Core外,还用的比较多的ORM框架(恕我孤陋寡闻哈,可能还有别的)有FreeSql.SqlSugar(排名不分先后).FreeSql和SqlS ...
- Java基础周测题,获取用户从控制台输入的年份,判断是否是闰年
需求说明: 获取用户从控制台输入的年份,判断是否是闰年: 是闰年: 是平年: 实现代码: import java.util.Scanner; public class test { public st ...
- C#WPF数据绑定模板化操作四步走
前言:WPF数据绑定对于WPF应用程序来说尤为重要,本文将讲述使用MVVM模式进行数据绑定的四步走用法: 具体实例代码如下: 以下代码仅供参考,如有问题请在评论区留言,谢谢 1 第一步:声明一个类用来 ...
- css基础-1
css简介 一.CSS 指层叠样式表 样式定义如何显示 HTML 元素 样式通常存储在样式表中 把样式添加到 HTML 4.0 中,是为了解决内容与表现分离的问题 外部样式表可以极大提高工作效率 外部 ...
- [ flask ] flask-restful 实现嵌套的有关系的输出字段
问题描述: 1. 先说明数据关系:有用户,和菜谱.一个用户可以拥有多个菜谱:一对多的关系 2. resources/users.py 的输出字段: user_fields = { 'id':fiel ...
- 用一道题 来 复习 MySQL 的 复杂 sql 语句
1.前言 太久没有在数据库做一些复杂的sql了,基本上将数据库的查询逻辑全放在了Java里做, 一来呢,可以减轻数据库的负担,二来呢,在java写,逻辑感会更强,数据类型更丰富也容易操作. 然而... ...