igmp协议用来实现组播功能_组播管理协议

igmp协议用来实现组播功能_组播管理协议igmp

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

组播基本架构
单播数据包传输的路径是利用“逐跳”(hop-by-hop)转发原理在IP网络中传输。相较于IP单播,IP组播通信的特点是数据包的目的地址不是一个特定的单一IP地址,而是一个特定组地址。

为了实现信息源和组播组成员跨越互联网进行通讯,需要提供网络层组播,组播数据包的目的IP地址使用组播IP地址。也就是说组播源不关注接收者的位置信息,只要将数据发送到特定组IP地址即可。

以太网传输单播数据帧时,目的MAC地址使用的是接收者或者去往接收者的下一跳网关设备的MAC地址。但是在传输组播报文时,目的端不再是一个具体的接收者,而是一个成员不确定的组,如果目的MAC封装成接收者的MAC地址,则需要为每个接收者分别发送一份组播帧。
显然,这是不合理的。为了在数据链路层实现组播信息的高效传输,需要提供链路层组播转发能力,链路层组播使用组播MAC地址。

IPv4组播地址
IPv4地址空间分为五类,即A类、B类、C类、D类和E类。D类地址为IPv4组播地址,范围是从224.0.0.0到239.255.255.255,用于标识组播组,且仅能作为组播报文的目的地址使用,不能作为源地址使用。
IPv4组播报文的源地址字段为IPv4单播地址,可使用A、B或C类地址,不能是D类、E类地址。
在网络层上,加入同一组播组的所有用户主机能够识别同一个IPv4组播组地址。一旦网络中某用户加入该组播组,则此用户就能接收以该组地址为目的地址的IP组播报文。

组播服务模型
ASM全称为Any-Source Multicast,译为任意源组播。在ASM模型中,任意发送者都可以成为组播源,向某组播组地址发送信息。接收者加入该组播组后,能够接收到发往该组播组的所有信息。在ASM模型中,接收者无法预先知道组播源的位置,接收者可以在任意时间加入或离开该组播组。

SSM全称为Source-Specific Multicast,译为指定源组播。在现实生活中,用户可能仅对某些源发送的组播信息感兴趣,而不愿接收其它源发送的信息。SSM模型为用户提供了一种能够在客户端指定信源的传输服务。SSM模型和ASM模型的根本区别是接收者已经通过其他手段预先知道了组播源的具体位置。SSM和ASM使用不同的组播地址范围,直接在接收者和组播源之间建立组播转发树。

在这里插入图片描述
IGMPv1的工作机制
IGMPv1支持两种类型的报文:
普遍组查询报文(General Query):路由器周期性地向224.0.0.1地址(表示同一网段内所有主机和路由器)发送通用查询报文,默认查询周期为60秒,发送周期可以通过命令配置。
成员关系报告报文(Membership Report):用于主机加入某个组播组。
如图所示,假设Client A和Client C想要接收组播组G1的数据,Client B想要接收组播组G2的数据。普遍组查询和响应过程如下:

在这里插入图片描述
RTA发送普遍组查询报文。
网段内所有主机都接收到该查询报文,Client A和Client C是组播组G1成员,则在本地启动定时器Timer-G1。Client B是组播组G2的成员,则在本地启动定时器Timer-G2。定时器的范围为0~10秒之间的随机值。定时器先超时的主机发送针对该组的成员报告报文。Client A上的Timer-G1首先超时,向该网段发送目的地址为G1的成员报告报文。Client B上的Timer-G2超时,向该网段发送成员报告报文,目的地址为G2。
Client C侦听到Client A的成员报告报文,则停止定时器Timer-G1,不再发送针对G1的成员报告报文。这就是响应抑制机制,可以减少网段上的协议流量。
RTA接收到成员报告报文后,了解到本网段内存在组播组G1和G2的成员,一旦RTA收到G1和G2的组播数据,将向该网段转发。

新接入主机Client D想加入组播组G3,为了快速接收组播数据,不等待普遍组查询报文,而立即发送G3的成员报告报文。RTA收到成员报告报文后,了解到本网段内出现了组播组G3的成员。一旦有G3的组播数据到达RTA,将向该网段转发。
在这里插入图片描述

IGMPv1没有专门定义离开组消息。
当Client离开组播组时,将不会再对普遍组查询报文做出回应。假设所有Client退出组播组,Client将不再对普遍组查询报文进行响应。由于网段上不存在组播组的其他成员,RTA不会收到任何成员报告报文,则在一定时间(130秒=120*2+10,即组成员关系超时时间=IGMP普遍查询消息发送间隔 × 健壮系数 + 最大查询响应时间)后,删除对应的组播转发项。
在这里插入图片描述

IGMPv2的工作机制
在这里插入图片描述
如图所示,在IGMPv2中,Client B离开组播组G2的过程如下:
Client B向本地网段内的所有组播路由器(目的地址为224.0.0.2)发送针对组G2的离开报文。
查询器收到离开报文,会发送针对G2的特定组查询报文,同时启动组成员关系定时器Timer-Membership=发送间隔x发送次数。缺省每隔1秒发送一次,一共发送两次,发送间隔和发送次数可以配置。
如果网段内不存在其他组G2的成员,则路由器不会收到组G2的成员报告报文。在Timer-Membership超时后,删除组播转发表项中对应的下游接口。路由器将不再向该网段转发G2的组播数据。如果网段内还有G2的其他成员,则这些成员在收到特定组查询报文后,会在最大响应时间内发送G2的成员报告报文。路由器继续向该网段转发G2的组播数据。

相对于IGMPv1,IGMPv2使用独立的查询器选举机制。
所有IGMPv2路由器在初始状态时都认为自己是查询器,向本地网段内的所有主机和路由器发送普遍组查询报文。其他路由器在收到该报文后,将报文的源IP地址与自己的接口地址作比较。IP地址最小的路由器将成为查询器,其他路由器成为非查询器。如图所示,RTA的接口IP地址小于RTB的接口IP地址,则RTA当选为查询器。IGMP的查询器和非查询器都会处理IGMP组加入信息,但是只有查询器负责发送查询报文。IGMP非查询器不处理IGMPv2离开报文。
所有非查询器上都会启动一个定时器。如果在该定时器超时前收到了来自查询器的查询报文,则重置该定时器;否则就认为原查询器失效并发起新的查询器选举。
在这里插入图片描述

IGMPv1和IGMPv2报文比较
在这里插入图片描述

IGMPv3的工作机制
与IGMPv2相比,IGMPv3报文的变化如下:
IGMPv3报文包含两大类:查询报文和成员报告报文。IGMPv3没有定义专门的成员离开报文,成员离开通过特定类型的报告报文来传达。
查询报文中不仅包含普遍组查询报文和特定组查询报文,还新增了特定源组查询报文(Group-and-Source-Specific Query)。该报文由查询器向共享网段内特定组播组成员发送,用于查询该组成员是否愿意接收特定源发送的数据。特定源组查询通过在报文中携带一个或多个组播源地址来达到这一目的。
成员报告报文不仅包含主机想要加入的组播组,而且包含主机想要接收来自哪些组播源的数据。IGMPv3增加了针对组播源的过滤模式(INCLUDE/EXCLUDE),将组播组与源列表之间的对应关系简单的表示为(G,INCLUDE,(S1、S2…)),表示只接收来自指定组播源S1、S2……发往组G的数据;或(G,EXCLUDE,(S1、S2…)),表示接收除了组播源S1、S2……之外的组播源发给组G的数据。当组播组与组播源列表的对应关系发生了变化,IGMPv3报告报文会将该关系变化存放于组记录(Group Record)字段,发送给IGMP查询器。
在IGMPv3中一个成员报告报文可以携带多个组播组信息,而之前的版本一个成员报告只能携带一个组播组。这样在IGMPv3中报文数量大大减少。

IGMP各版本间的差异
在这里插入图片描述
实验
在这里插入图片描述
要求
本实验模拟不同组成员使用IGMP加入组播组的网络环境。
1.如图所示,配置各设备IP地址
2.R1启用组播功能,并在g0/0/0和g0/0/1上开启pim dm。
3.R1的g0/0/1开启igmp协议
3.1 使用igmp version1,配置PC1,使用igmpv1加入组224.1.1.1
3.1.1 R1查看组成员信息:dis igmp group
3.1.2 使用MSC播放视频,PC1在组播中启动VLC。
3.1.3 PC1上离开组播组,再次观察R1的组成员信息。
3.2 使用igmp version2,配置PC2,使用igmpv2加入组224.1.1.1
3.2.1 R1查看组成员信息:dis igmp group
3.2.2 使用MSC播放视频,PC2在组播中启动VLC。
3.2.3 PC2上离开组播组,再次观察R1的组成员信息。
3.3 使用igmp version3,配置PC3,使用igmpv3加入组224.1.1.1,组播源192.168.1.1
3.3.1 R1查看组成员信息:dis igmp group
3.3.2 使用MSC播放视频,PC3在组播中启动VLC。
3.3.3 PC3上离开组播组,再次观察R1的组成员信息。

具体过程

  1. 如图所示,配置各设备IP地址
    R1:
    interface GigabitEthernet0/0/0
    ip address 192.168.1.254 255.255.255.0
    interface GigabitEthernet0/0/1
    ip address 192.168.2.254 255.255.255.0

2.R1启用组播功能,并在g0/0/0和g0/0/1上开启pim dm。
R1:
multicast routing-enable
pim
interface GigabitEthernet0/0/0
pim dm
interface GigabitEthernet0/0/1
pim dm

3.R1的g0/0/1开启igmp协议
interface GigabitEthernet0/0/1
igmp enable
3.1 使用igmp version1,配置PC1,使用igmpv1加入组224.1.1.1
R1:
interface GigabitEthernet0/0/1
igmp version 1
在这里插入图片描述
3.1.1 R1查看组成员信息:dis igmp group
在这里插入图片描述

3.1.2 使用MSC播放视频,PC1在组播中启动VLC。
VLC在菜单工具选项中设置

3.1.3 PC1上离开组播组,再次观察R1的组成员信息。
IGMPv1没有离开组消息,所以加组信息超时之前都会持续转发组播。
3.2 使用igmp version2,配置PC2,使用igmpv2加入组224.1.1.1
R1:
interface GigabitEthernet0/0/1
igmp version 2
在这里插入图片描述
3.2.1 R1查看组成员信息:dis igmp group
3.2.2 使用MSC播放视频,PC2在组播中启动VLC。
3.2.3 PC2上离开组播组,再次观察R1的组成员信息。
IGMPv2有离开组消息,当PC2离开后,R1会立刻发送特定组查询,没有任何PC回复此查
询,则认为该组没有成员,停止转发组播。
3.3 使用igmp version3,配置PC3,使用igmpv3加入组224.1.1.1,组播源192.168.1.1
R1:
interface GigabitEthernet0/0/1
igmp version 3
在这里插入图片描述
3.3.1 R1查看组成员信息:dis igmp group
IGMPv3可以指定源地址。
3.3.2 使用MSC播放视频,PC3在组播中启动VLC。
3.3.3 PC3上离开组播组,再次观察R1的组成员信息。
IGMPv3离开特定源和特定组后,也会发送离开消息。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/193879.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • db4o 参考资料

    db4o 参考资料转自IBM:http://www.ibm.com/developerworks/cn/java/jdb4o/本系列是对开放源码数据库db4o的详尽介绍,db4o可以充分利用当前的面向对象的语言、系统和理念。要下载db4o,可以参考db4o主页;为了实践本系列的示例,需要下载db4o。系列文章第1部分:简介和概览(2007年4月9日)

    2022年7月21日
    19
  • 太极图正确画法_来氏太极图的画法及六行太极图的演示

    太极图正确画法_来氏太极图的画法及六行太极图的演示本来,我已打算停中发文,但是这一篇涉及到我一个重要的思想,这就是我对明代来知德的“来氏太极图”有了重要的理解,我根据它形成了我的六行太极理论,于是我还是决定把它公布出来。我尝试很多办法把水火金木土风的六行的元素融入到太极图中,它既要能符合太极的原理,又要能符合六行的原理,但又要使用它最简单化,可始终无果,有一天,我看到了明代理学家来知德的《来瞿唐先生圆图》,忽然恍然大悟,来瞿唐先生的“来氏太极图”…

    2022年5月27日
    63
  • 自抗扰控制(ADRC)仿真系统(matlab/simulink)的搭建

    自抗扰控制(ADRC)仿真系统(matlab/simulink)的搭建一、现在关于自抗扰控制技术方面的研究已经比较成熟了,基本上了解结构以后都可以找到历程实现,今天简单总结一采用自抗扰控制的仿真系统搭建,不必畏惧,熟悉皆可达。1.首先自抗扰控制分为TD(跟踪微分器),非线性组合,ESO扩张状态观测器。而每部分的公式推导均可在《自抗扰控制技术-估计补偿不确定因素的控制技术》这本书中找到,很推荐,如果有些不了解的也可以搜索韩老师的论文看看。2.按照一般论文流程,先介绍整体结构,框图如下:其实结构也挺少,使用习惯以后,其实很好理解。3.接下来按照每个部分简单做一个介绍。

    2022年5月12日
    54
  • Java 类型信息详解和反射机制

    Java 类型信息详解和反射机制

    2020年11月19日
    209
  • python2与python3中input的区别

    python2与python3中input的区别python2与python3的区别:1、input:python2中input需要用户指定输入的类型,以下代码体现了这点2、python2中的raw_input与python3中的input

    2022年7月6日
    23
  • word文档页码不连续编号怎么办_怎样给论文加页码

    word文档页码不连续编号怎么办_怎样给论文加页码论文页码设置大家好!今天和大家分享两个和页码有关的技巧:大家好!今天和大家分享两个和页码有关的技巧:为分栏页面分别设置页码对纵向文档中的横向表格设置页码page域及域代码操作基础技巧01分栏页面像下面这个文档,对页面分成了两栏,如果现在想给每一栏都添加一个页码序号,也就是在第1页的左右两栏分别显示第1页和第2页,在第2页的左右两栏分别显示第3页和第4页,这样的效果该如何设置呢?我们先在页脚中设置好…

    2025年7月29日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号