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离开特定源和特定组后,也会发送离开消息。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

发表回复

您的电子邮箱地址不会被公开。

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