问题:IGMPv3 有哪些报文?还有 leave 报文吗?为什么?主机是不是可以选择源?
答案:
IGMPv3 有普遍组查询报文、特定源组查询报文、特定组查询报文、成员报告报文。取消了离组报文,可以使用报告报文来实现离组。主机在接收组播数据的时候可以选择组播源。
问题:V3有哪些组记录格式?分别表示什么意思?
答案:
IGMPv3 组记录的格式包括:
组记录的类型。共分为三大类。
当前状态报告:用于对查询报文进行响应,通告自己目前的状态,共两种:
1. MODE_IS_INCLUDE,
表示接收源地址列表包含的源发往该组的组播数据。如果指定源地址列表为空,该报文无效;
2. MODE_IS_EXCLUDE,
表示不接收源地址列表包含的源发往该组的组播数据。
过滤模式改变报告:当组和源的关系在 INCLUDE 和 EXCLUDE 之间切换时,会通告过滤模式发生变化,共两种:
1. CHANGE_TO_INCLUDE_MODE,
表示过滤模式由 EXCLUDE 转换到 INCLUDE,接收源地址列表包含的新组播源发往该组播组的数据。如果指定源地址列表为空,主机将离开组播组;
2. CHANGE_TO_EXCLUDE_MODE,
表示过滤模式由 INCLUDE 转换到 EXCLUDE,拒绝源地址列表包含的新组播源发往该组的组播数据。
源列表改变报告:当指定源发生改变时,会通告源列表发生变化,共两种:
1. ALOW_NEW_SOURCES,
表示在现有的基础上,需要接收源地址列表包含的组播源发往该组播组的组播数据。如果当前对应关系为 INCLUDE,则向现有源列表中添加这些组播源;如果当前对应关系为 EXCLUDE,则从现有阻塞源列表中删除这些组播源;
2. BLOCK_OLD_SOURCES,
表示在现有的基础上,不再接收源地址列表包含的组播源发往该组播组的组播数据。如果当前对应关系为 INCLUDE,则从现有源列表中删除这些组播源;如果当前对应关系为 EXCLUDE,则向现有源列表中添加这些组播源。
3、IGMPv3 取消了成员抑制功能,原因如下 :
出于统计的目的,路由器可能需要跟踪每个接收主机的状态,所以不能抑制主机发送报告报文。交换机开启了 IGMPsnoping 后,交换机不会向其它端口转发成员报告报文,所以无法实现抑制功能。
问题:V3 还有成员抑制功能吗?为什么?
答案:
取消成员抑制功能主机需要处理的信息更少,可以简化状态机的实现。在 V1 和 V2 版本中,一条报告消息只携带一个组记录,可以很好的实现抑制功能,而 V3 中一条报告消息里携带了多个组记录,无法针对某个组进行抑制。
问题:IPv6 中怎么实现加组的?有哪些版本?
答案:
1、IPv6 使用 MLD 协议实现。组播侦听者发现协议 MLD(Multicast Listenr Discovery)是负责 IPv6 组播成员管理的协议,用来在 IPv6 成员主机和与其直接相邻的组播路由器之间建立和维护组播组成员关系。
2、到目前为止,MLD 有两个版本:
MLDv1 版本,对应 IGMPv2。
MLDv2 版本,对应 IGMPv3。
问题:用什么报文实现的?目的地址是多少?
答案:
1、它是通过 ICMPv6 报文实现的。MLDv1 查询报文的目的 IP 是 F02:1,特定组
查询和报告报文的目的 IP 是要加入的组地址,离组报文的目的 IP 为 F02:2。
2、MLDv2 的查询报文的目的 IP 为 F02:1,报告报文的目的 IP 为 F02:16。