前文我们了解了组播协议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的更多相关文章

  1. HCNP Routing&Switching之组播技术-组播协议IGMP

    前文我们了解了组播地址相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15616740.html:今天我们来聊一聊组播协议中IGMP协议相关话题: 组播 ...

  2. HCNP Routing&Switching之组播技术-组播路由协议PIM

    前文我们了解了组播技术中组播分发树相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16019334.html:今天我们来聊一聊组播路由协议PIM相关话题 ...

  3. HCNP Routing&Switching之组播技术PIM-SM RP

    前文我们了解了组播技术中,组播路由协议PIM的稀疏模式相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16142795.html:今天我们来聊一聊组播路 ...

  4. HCNP Routing&Switching之组播技术-组播基础

    组播技术背景 随着internet网络的不断发展,网络中交互的各种数据.语音.视频信息数量突增:新型的在线直播.网络电视.视频会议等应用也在逐渐兴起:这些业务大多符合点到多点的模式,对信息安全性.传播 ...

  5. HCNP Routing&Switching之组播技术-组播地址

    前文我们聊到了组播技术背景,单播.广播在点到多点应用中的问题,以及组播对比单播.广播在点到多点的网络环境中的优势.劣势,相关回顾请参考https://www.cnblogs.com/qiuhom-18 ...

  6. HCNP Routing&Switching之组播技术-组播分发

    前文我们了解了组播技术中的igmp-snooping相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15860484.html:今天我们来聊一聊组播技术 ...

  7. HCNP Routing&Switching之组播技术PIM-SM 稀疏模式

    前文我们了解了组播路由协议PIM以及PIM-DM密集模式相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16084310.html:今天我们来聊一聊PI ...

  8. IP组播技术介绍及实现例子

    引 言 近年来,随着Internet的迅速普及和爆炸性发展,在Internet上产生了许多新的应用,其中不少是高带宽的多媒体应用,譬如网 络视频会议.网络音频/视频广播.AOD/VOD.股市行情发布. ...

  9. 《TCP/IP 详解 卷1:协议》第 9 章:广播和本地组播(IGMP 和 MLD)

    我已经懒了,卷一已经是去年年底看完的,但怎么说卷一的坑开了就要填完啊-- 广播和本地组播(IGMP 和 MLD) 引言 有 4 种 IP 地址,单播(unicast).任播(anycast).组播(m ...

随机推荐

  1. MyBatis 一级缓存实现详解及使用注意事项

    一级缓存介绍 在应用运行过程中,我们有可能在一次数据库会话中,执行多次查询条件完全相同的SQL,MyBatis提供了一级缓存的方案优化这部分场景,如果是相同的SQL语句,会优先命中一级缓存,避免直接对 ...

  2. 初识python: while循环 猜年龄小游戏

    知识点: 1.python注释方法: 单行注释: # 多行注释: '''注释内容 '''  (单引号或双引号都可以),亦可打印多行 例: #此处是单行注释信息 print('这里是打印内容') #这里 ...

  3. 桥接模式(python)

    from abc import ABCMeta, abstractmethod class Shape(metaclass=ABCMeta): def __init__(self, color): s ...

  4. [ vue ] 自定义组件的 v-model 理解

    需求场景描述: 1. 在父组件 myself.vue 里面定义数据 button_val 2. 在父组件 myself.vue.里面定义按钮,它的功能是吧 button_val  的值 -1 ---- ...

  5. SQL高级优化系列

    目录 SQL高级优化系列(一)之MySQL优化 SQL高级优化系列(二)之MySQL架构 SQL高级优化系列(三)之存储引擎 SQL高级优化系列(四)之SQL优化 SQL高级优化系列(五)之执行计划 ...

  6. Python常用功能函数总结系列

    Python常用功能函数系列总结(一) 常用函数一:获取指定文件夹内所有文件 常用函数二:文件合并 常用函数三:将文件按时间划分 常用函数四:数据去重 Python常用功能函数系列总结(二) 常用函数 ...

  7. SQL高级优化(三)之存储引擎

    一.MySQL数据库引擎简介 1. ISAM(indexed Sequential Access Method) ​ ISAM 是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到数据 ...

  8. Linux上天之路(十四)之Linux数据处理

    主要内容 数据检索 数据排序 数据去重 重定向 1. 数据检索 常和管道协作的命令 – grep grep:用于搜索模式参数指定的内容,并将匹配的行输出到屏幕或者重定向文件中,常和管道协作的命令 – ...

  9. vue爬坑之路(插件安装)

    npm install vue-table-with-tree-grid --save import ZkTable from 'vue-table-with-tree-grid' Vue.use(Z ...

  10. linux笔记(一)

    linux 开源镜像网址:http://mirrors.163.com pwd : 展示当前所在的目录的绝对路径 cd : 切换到某个路径  cd 命令,是 Change Directory 的缩写, ...