MLD协议 &MLDv1介绍

IPv6的组管理协议被称为MLDMulticast Listener Discovery Protocol(组播侦听者发现协议)的简称,它用于 IPv6 路由器在其直连网段上发现组播侦听者。

1999年,MLDv1发布,2004年,MLDv2发布,后者向前兼容。MLD协议是专门针对基于IPv6的组播组管理协议。MLD使用ICMPv6的报文格式,是ICMPv6协议的一个子集。MLD消息使用链路本地IPv6源地址发送, 所有的 MLD 报文被限制在本地链路上,跳数为 1,MLD消息的封装格式如下图所示:

MAC headerIPV6 HeaderMLD HeaderDATA

MLDv1数据报文格式:

typecodechecksum
maximum response timereserved
multicast group address


MLDv1有如下三种报文类型:

1、侦听查询(Type=130),分为两种类型:一、通用查询,对所有的组进行组成员查询;二、特定组查询,用于判断一个特定的组播地址上是否有组播侦听者;
2、侦听报告(Type = 131)
3、侦听完成(Type = 132)


MLDv1 原理简介

MLDv1协议运行机制和IGMPv2协议相同,MLDv1 主要基于查询和响应机制完成对 IPv6 组播组成员的管理;

对于运行MLD协议的路由器,要监听由IPv6组播地址产生的所有链路组播地址。路由器需要维护这个组播列表。在其中存储对应的组播地址和该地址相应的定时器。 MLD 查询器周期性地以组播方式向本地网段内的所有主机和路由器发送普遍组查询报文(目的地址为 FF02::1),以查询该链路上是否存在某组播地址的组成员。节点收到路由器发送的常规请求后,经过随机时延后发出组播监听报告。这样是为了防止所有的节点都在同一时间发出报告分组,从而造成网络的突发性阻塞 ,该机制称为 MLD 成员关系报告抑制机制,有助于减少本地网段的信息流量;


当一个网段内有多台 IPv6 组播路由器时,由于它们都能从主机那里收到 MLD 成员关系报告报文,所以只需要其中一台路由器发送 MLD 查询报文( Query Message)就足够了,协议中有一个查询器的选举机制来确定由哪台路由器作为 MLD 查询器。

加入 IPv6 组播组机制

在路由器收到该查询报文后,希望加入 IPv6 组播组的主机会以组播方式发送 MLD 成员关系报告报文(目的地址为IPv6 组地址),以宣告自己要加入组播组

当路由器收到链路上的报告分组时,如果报告地址不在路由器的列表上,则加入该项;

当节点要加入一个组播组时,主动发送组播监听报告,向路由器报告组成员的存在。

离开 IPv6 组播组机制

当一个主机离开某 IPv6 组播组时,该主机向本地网段内的所有 IPv6 组播路由器(目的地址为 FF02::2)发送离开组报文;

当请求状态的路由器从链路上接收到一个完成消息,如果消息中的组播地址在路由器的列表上,路由器发送一个特定组播地址查询报文(目的地址字段和组地址字段均填充为所要查询的 IPv6 组播组地址);

如果该网段内还有该组播组的成员,这些成员在收到特定组查询报文后,会发送成员关系报告报文;

如果在最大响应时间范围内收到了该 IPv6 组播组其它成员发送的成员关系报告报文,查询器就会继续维护该 IPv6 组播组的成员关系;

如果一段时延后没有报告分组,查询器将认为该网段内已无该 IPv6 组播组的成员,于是不再维护这个 IPv6 组播组的成员关系,如果该地址的计时器过期,则从列表中删除组播表。

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★博文作者未开放评论功能