当前位置: 首页 > news >正文

计算机网络-IGMP Snooping特性

一、以太网的组播转发问题

当组播数据从最后一跳路由器发往组播组成员时,往往会经过交换机。由于组播数据的目的MAC地址是组播MAC地址,默认情况下交换机将泛洪此类数据帧,有可能导致不同组的组播流量会被别组的成员接收。

当Router将组播报文转发至Switch以后,Switch负责将组播报文转发给组播用户。由于组播报文的目的地址为组播组地址,在二层设备上是学习不到这一类MAC表项的,因此组播报文就会在所有接口进行广播,和它在同一广播域内的组播成员和非组播成员都能收到组播报文。这样不但浪费了网络带宽,而且影响了网络信息安全。

IGMP Snooping有效地解决了这个问题。配置IGMP Snooping后,二层组播设备可以侦听和分析组播用户和上游路由器之间的IGMP报文,根据这些信息建立二层组播转发表项,控制组播数据报文转发。这样就防止了组播数据在二层网络中的广播。 以太网的组播转发问题

二、IGMP Snooping介绍

IGMP Snooping(互联网组管理协议侦听)是一种网络技术,用于优化局域网(LAN)上的多播流量。IGMP Snooping功能可以控制组播流量在以太网的泛洪范围,避免不同组的组播流量被别组成员接收。

在二层交换机配置IGMP Snooping,交换机可以维护一个二层组播转发表项,可以只转发到特定端口与VLAN中,提高安全性。

IGMP Snooping
IGMP Snooping

IGMP Snooping端口与转发表介绍

二层组播转发表项中存在两类接口:

  • 路由器端口(Router Port):二层组播设备上朝向三层组播设备(DR或IGMP查询器)一侧的接口,二层组播设备从此接口接收组播数据报文。
  • 成员端口(Member Port):又称组播组成员端口,表示二层组播设备上朝向组播组成员一侧的端口,二层组播设备往此接口发送组播数据报文。

成员端口生成过程:由协议生成的成员端口叫做动态成员端口。收到IGMP Report报文的接口,二层组播设备会将其标识为动态成员端口。手工配置的成员端口叫做静态成员端口。

alt

三、IGMP Snooping转发原理

IGMP Snooping转发
IGMP Snooping转发

IGMP Snooping设备通过监听IGMP报文,形成二层组播转发表,并决定接口类型,具体过程如下:

路由器端口形成后会启动老化计时器(默认180s),当路由器端口收到新的普遍组查询后刷新该计时器。

成员端口形成后会启动老化计时器(默认180s),当成员端口收到新的成员关系报告报文后刷新该计时器。

IGMP Snooping不再使用成员关系报告报文抑制机制:

  • 由于IGMP Snooping需要监听IGMP报文才能决定端口角色,进而指导转发,所以所有组成员都需要发送IGMP组成员关系报告报文。
  • 当IGMP Snooping设备收到成员关系报告报文后,只将成员关系报告报文从路由器接口发送出去,从而避免其余组成员收到成员关系报告报文,不触发成员关系报告报文抑制机制。

维护转发表项: IGMP表项维护

收到IGMP离开报文后,成员端口的老化定时器 = 健壮系数(默认2) x 特定组查询间隔(默认1s)。

总结:默认一般情况下最后一跳路由器不是直接连接组播组成员,而是通过交换机等设备,交换机会将组播报文进行泛洪,导致所有组播组成员能够收到所有报文。通过在交换机上配置OGMP Snooping可以使得组播组成员只接收特定的组播组报文,减少组播流量泛洪。IGMP Snooping有路由器端口和成员端口,连接最后一跳路由器的端口为路由器端口,连接组播组成员的为成员端口。

如果对文章感兴趣欢迎微信搜索公众号:不喜欢热闹的孩子 不喜欢热闹的孩子

本文由 mdnice 多平台发布

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • python 参数输入
  • 【黄啊码】Gradio配合Openai接口实现机器人问答对话
  • JAR文件中混淆和加密class文件
  • Linux系统编程-多路IO套接字
  • GenAI 会消灭软件开发人员的工作吗?
  • Modbus通讯协议
  • linux top
  • 蓝牙网关北京厂家_蓝牙网关型号价格介绍
  • 软件安全测试内容和方法大揭秘,湖南软件测评公司推荐
  • ubuntu22安装k8s-1.24.17
  • 07 Redis List类型操作与使用场景
  • 【Vulnhub靶场AI-WEB-1.0打靶教程】
  • MySQL——日期与时间类型
  • 1000W长连接,如何建立和维护?千万用户IM 架构设计
  • PHP苹果 V X iPhone微商i o s多分开V X语音转发密友朋友圈一键跟圈软件
  • [NodeJS] 关于Buffer
  • 《剑指offer》分解让复杂问题更简单
  • 2017届校招提前批面试回顾
  • Android单元测试 - 几个重要问题
  • chrome扩展demo1-小时钟
  • Java Agent 学习笔记
  • java8-模拟hadoop
  • Java新版本的开发已正式进入轨道,版本号18.3
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • Linux后台研发超实用命令总结
  • Markdown 语法简单说明
  • markdown编辑器简评
  • Object.assign方法不能实现深复制
  • orm2 中文文档 3.1 模型属性
  • overflow: hidden IE7无效
  • Python打包系统简单入门
  • Redash本地开发环境搭建
  • Shadow DOM 内部构造及如何构建独立组件
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 从零开始的无人驾驶 1
  • 读懂package.json -- 依赖管理
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 技术发展面试
  • 检测对象或数组
  • 简单实现一个textarea自适应高度
  • 解析带emoji和链接的聊天系统消息
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 前端学习笔记之观察者模式
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 正则表达式小结
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • ​io --- 处理流的核心工具​
  • ​补​充​经​纬​恒​润​一​面​
  • # C++之functional库用法整理
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #70结构体案例1(导师,学生,成绩)
  • #Linux(权限管理)
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • #进阶:轻量级ORM框架Dapper的使用教程与原理详解