IGMP Proxy

2024-06-14 19:04
文章标签 proxy igmp

本文主要是介绍IGMP Proxy,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

IGMP Proxy

如图左图所示,在一些简单的树形网络拓扑中,与用户网段相连的设备RouterB上并不需要运行复杂的组播路由协议(如PIM),而透传主机IGMP报文又会导致RouterA管理太多用户。当网络中存在大量成员主机或大量成员主机频繁加入/离开组播组时,会产生大量的IGMP报告/离开报文,从而给接入设备RouterA带来较大的处理压力。

如右图所示,通过在RouterB上配置IGMP Proxy功能,可以解决以上问题,实现组播报文正常转发同时减轻RouterA的处理压力。

IGMP Proxy,也称为IGMP代理,通常被部署在接入设备(RouterA)和成员主机之间的三层设备上。一方面,IGMP Proxy设备可以收集下游成员主机的IGMP报告/离开报文,将报告/离开报文汇聚后代理下游成员主机统一上送给接入设备;另一方面,IGMP Proxy设备也可以代理IGMP查询器向下游成员主机发送查询报文,维护组成员关系,基于组成员关系进行组播转发。在接入设备RouterA看来,RouterB就是一台主机;在下游成员主机看来,RouterB就是IGMP查询器。

IGMP Proxy中定义了以下两种类型的接口:

  • 上游接口:指IGMP代理设备上配置IGMP Proxy功能的接口,该接口执行IGMP代理设备的主机行为,因此也称为主机接口(Host Interface)。

  • 下游接口:指IGMP代理设备上配置IGMP功能的接口,该接口执行IGMP代理设备的路由器行为,因此也称为路由器接口(Router Interface)。

图1 IGMP Proxy组网示意图

IGMP Proxy工作机制

IGMP代理设备实现的功能主要分为两种:主机行为和路由器行为。

主机行为

主机行为是指IGMP代理设备的上游接口收到查询报文时根据当前组播转发表的状态对查询报文做出响应,或者当组播转发表发生变化时上游接口主动向接入设备发送报告/离开报文。主机行为的工作机制如下:

  • IGMP代理设备上游接口收到查询报文时,会根据当前组播转发表的状态对查询报文做出响应。
  • IGMP代理设备收到某组播组的报告报文后,会在组播转发表中查找该组播组:
    • 如果没有找到相应的组播组,IGMP代理设备会向接入设备发送针对该组播组的报告报文,并在组播转发表中添加该组播组;
    • 如果找到相应的组播组,IGMP代理设备就不需要向接入设备发送报告报文。
  • IGMP代理设备收到某组播组G的离开报文后,会向接收到该离开报文的接口发送一个特定组查询报文,检查该接口下是否还存在组播组G的其他成员:
    • 如果没有其他成员,在组播转发表中将该接口删除,然后判断组播组G是否还有其他接口。如果没有,IGMP代理设备再会向接入设备发送针对该组播组的离开报文;如果有,IGMP代理设备不向接入设备发送针对该组播组的离开报文;
    • 如果有其他成员,IGMP代理设备会继续向该接口转发组播数据。

路由器行为

路由器行为是指IGMP代理设备的下游接口通过成员主机加入/离开组播组的信息生成组播转发表项、接收接入设备下发的组播数据并根据组播转发表项的出接口信息向特定的接口转发组播数据。路由器行为的工作机制与IGMP的工作机制一致,

IGMP Proxy备份机制

为了提高链路的可靠性,IGMP代理设备的上游接口配置完IGMP Proxy功能后,可以再在IGMP代理设备上配置一个IGMP Proxy备份接口,作为上游接口的备份,如所示。这样,当上游接口所在链路发生故障时,备份链路会自动接管IGMP代理业务,使业务能够自动恢复。

图2 IGMP Proxy组网示意图
 

IGMP Proxy本身并没有检测机制,如果组播链路发生了故障,无法保证及时进行主、备链路的切换,可能造成较长时间的组播业务中断。通过IGMP Proxy与NQA联动可以解决此问题。IGMP Proxy与NQA测试例联动是利用NQA测试例检测端到端的链路状态,并根据NQA测试例的检测结果,进行主、备链路的切换,从而避免通信长时间中断。

这篇关于IGMP Proxy的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1061259

相关文章

详解nginx 中location和 proxy_pass的匹配规则

《详解nginx中location和proxy_pass的匹配规则》location是Nginx中用来匹配客户端请求URI的指令,决定如何处理特定路径的请求,它定义了请求的路由规则,后续的配置(如... 目录location 的作用语法示例:location /www.chinasem.cntestproxy

Nginx指令add_header和proxy_set_header的区别及说明

《Nginx指令add_header和proxy_set_header的区别及说明》:本文主要介绍Nginx指令add_header和proxy_set_header的区别及说明,具有很好的参考价... 目录Nginx指令add_header和proxy_set_header区别如何理解反向代理?proxy

proxy代理解决vue中跨域问题

vue.config.js module.exports = {...// webpack-dev-server 相关配置devServer: {host: '0.0.0.0',port: port,open: true,proxy: {'/api': {target: `https://vfadmin.insistence.tech/prod-api`,changeOrigin: true,p

【上】java获取requestMapping上所有注解功能实现及取匿名注释类的值及 class com.sun.proxy.$Proxy140 转换出错

java获取requestMapping上所有注解功能实现及取匿名注释类的值及 class com.sun.proxy.$Proxy140 转换出错 1,多人相当然以为类似对象一样直接强转下就可以,结果迎来的是class com.sun.proxy.$Proxy140转换出错【想法很勇敢,现实很骨感】 //Class<A> operatorMappingAnnotationType// 错误

Nginx location 和 proxy_pass 配置详解

概述 Nginx 配置中 location 和 proxy_pass 指令的不同组合方式及其对请求转发路径的影响。 配置效果 1. location 和 proxy_pass 都带斜杠 / location /api/ {proxy_pass http://127.0.0.1:8080/;} 访问地址:www.hw.com/api/upload转发地址:http://127.0.0.

Vue3 中的响应式系统:深入理解 Proxy API

在Vue 3中,响应式系统的核心是通过使用ES6中的Proxy API来创建数据的代理,从而拦截对象属性的读取和设置操作。这使得框架可以在属性被访问或修改时执行额外的操作,例如触发视图更新。 下面是一个简单的例子,展示如何使用Proxy来创建一个响应式对象: function reactive(target) {   // 使用WeakMap来存储原始对象到Proxy的映射   const

qt6 socket 不使用代理 socket error: The proxy type is invalid for this operation

qt 5.8之后,socket默认使用代理 参考 https://www.cnblogs.com/cppskill/p/11730452.html#:~:text=%E5%9C%A8%E6%9E%84%E9%80%A0%E5%87%BD%E6%95%B0%E9%87%8C%E5%AE%9A%E4%B9%89,Proxy%29%3B%E3%80%82 #include <QNetworkProx

ES6更新的内容中什么是proxy

Proxy 是 ES6(ECMAScript 2015)中引入的一个新的内置对象,用于定义某些操作的自定义行为(如属性查找、赋值、枚举、函数调用等)。Proxy 可以被看作是一个拦截器,它拦截并自定义对象上的基本操作。通过创建一个对象的 Proxy,你可以控制对这个对象的访问,包括读取属性、设置属性、枚举属性、函数调用等。 Proxy 接收两个参数: 目标对象(target):你想要拦截其操作

Error:Unable to tunnel through proxy. Proxy returns HTTP/1.1 400 Bad Request

遇到这中问题,请参照http://www.2cto.com/kf/201608/541098.html这里 并且查看你的项目的gradle-wrapper.properties, 最后一行gradle版本改为本地的,当然.gradle文件里面的gradle版本本地也要有

Design Pattern—— Dynamic Proxy Pattern(三) 动态代理模式

done by myself 通过下面例子,进一步演示 动态代理 的强大特性,将会体会到 相对于静态static代理,动态可实现 一个proxy代理不同的真实对象。灵活多变。只需要在Client类 调整要代理的角色,无需改动其他部分。使代理角色、真实角色的对应关系更松散了。 抽象角色: package com.proxy.severalCase;public interfa