HCIE 面试资料-MLD

MLD

MLD简介
MLD (Multicast Listener Discovery) 组播侦听发现协议,是IPv6路由器所使用的一种协议,用以发现在其直连网络上的组播侦听者(即希望接收组播数据的节点)的存在,并且能明确发现这些邻居节点所感兴趣的组播组地址。

MLDv1 版本(由 RFC 2710 定义),对应 IGMPv2。
MLDv2 版本(由 RFC 3810 定义),对应 IGMPv3。

MLDv1主要基于查询和响应机制完成对IPv6组播组成员的管理。MLDv2的原理与 MLDv1基本相同,并新增了以下特性:
对 IPv6 组播源的过滤;
IPv6 组播组状态跟踪;
接收者主机的状态侦听。

MLD的用途
组播侦听发现协议MLD用于IPv6路由器在其直连网段上发现组播侦听者 。
路由器通过MLD协议,可以了解到在自己的直连网段上是否有组播组的侦听者,并在数据库里做相应记录。同时,路由器还维护与这些组播地址相联系的定时器信息。
配置MLD的路由器使用IPv6单播链路本地地址作为源地址发送MLD报文。
MLD使用ICMP来携带消息所有的MLD报文被限制在本地链路上,跳数为1

MLDv1报文格式

  • 类型(Type):MLD消息共有三种。
    组播侦听查询(类型值=130),可分为两种子类型:
    普遍查询:用于获得在所连网络上具有侦听者的组播地址。
    特定组播地址查询:用于获得在所连网络上对一特定组播地址是否存在侦听者。
    组播侦听报告(类型值=131)
    组播侦听离开( Multicast Listener Done)(类型值=132)
  • 代码(Code)
    发送时设置为1;接收时忽略。
  • 校验和(Checksum)
    标准的ICMPv6校验和,覆盖所有MLD消息以及IPv6首部区域中的伪首部。
  • 最大响应延迟(Maximum Response Delay)
    最大响应延迟值只在查询报文消息中有意义,它指定了发送响应报文的最大允许时间延迟,单位为毫秒。在其他报文消息中,发送时设置为零,接收时忽略。
  • 保留(Reserved)
    发送者设为零;接收者忽略。
  • 组播地址(Multicast Address)
    在查询报文中,当发送普遍查询时,组播地址值设为零;当发送特定组查询时,设为特定的IPv6组播地址。在报告或离开报文中,组播地址值分别设为报文发送者要侦听或者停止侦听的特定IPv6组播地址。

查询器选举机制

  1. 所有MLD路由器在初始时都认为自己是查询器,并向本地网段内的所有主机和路由器发送MLD普遍组查询(General Query)报文(目的地址为 FF02::1)。
  2. 本地网段中的其它MLD路由器在收到该报文后,将报文的源IPv6地址与自己的接口地址作比较。通过比较,IPv6地址最小的路由器将成为查询器,其它路由器成为非查询器(Non-Querier)。
  3. 所有非查询器上都会启动一个定时器(即其它查询器存在时间定时器 Other Querier Present Timer)。在定时器超时前,如果收到了来自查询器的 MLD 查询报文,则重置该定时器;否则,就认为原查询器失效, 并发起新的查询器选举过程。

组成员加入过程
MLDv1有两种类型的查询消息(Query Message):
普遍查询(General Query):查询直连链路上是否有组播组的侦听者。
指定组播组查询(Multicast-address-specific Query):查询直连链路上是否有某个指定组播地址的侦听者。
如果共享网段上存在配置MLD的多个组播路由器,将触发查询路由器(Querier)选举机制,由网段上IPv6地址最小的路由器充当查询器(也称MLD查询器),其他路由器充当非查询器(Non-Querier)。

以普遍查询为例,主机加入组播组的基本过程是:

  1. MLD查询器周期性地向共享网段上的所有本地链路主机以组播方式(目的地址为FF02::1)发送普遍查询消息。
  2. 网段上的所有主机都接收到该普遍查询消息。如果主机Host B和Host C希望加入某组播组G1,则设置定时器延时来响应。
  3. 希望加入的主机在定时器超时后以组播方式向网段上的所有主机和路由器发送报告消息(Report Message)来响应查询,此消息包含组播组G1的地址信息。
  4. 网段上的所有主机和路由器接收到此报告消息后,也就获得了关于G1的组播信息。此时网段中其他也希望加入组播组G1的主机将不再发送相同的报告消息,如果主机Host A希望加入另一个组播组G2,就会发送包含组播组G2地址的报告消息以响应普遍查询消息来加入G2。
  5. 在查询/报告过程后,MLD查询器可以了解到在自己的直连网段上是否有组播组G1的接收者,生成形式为(*, G1)组播路由项,*表示任意的组播源。
  6. 通过组播路由机制,MLD查询器接收到组播源发来的组播信息。如果直连网段上有接收者,就在网段上转发此数据,加入组播组的主机接收该数据。

组成员离开过程
当主机想离开组播组,就以组播地址(目的地址是FF02::2)向链路上发送一个离开消息(Done Message),并且在其组播地址域携带要停止侦听的地址。
当查询器从链路上收到离开消息时,如果要离开的组播报文地址在此链路上查询器的侦听者地址列表中,查询器就会发送Last Listener Query Count次组播地址特定查询,每次间隔时间为Last Listener Query Interval。组播地址特定查询一般将Last Listener Query Interval设定为Maximum Response Delay,如果最后查询的响应延迟时间过后,没有此组播地址的报告在此链路上发送给查询器,因此此地址就从侦听者列表中删除。

MLDv2

MLDv2查询消息报文格式
头192bits部分是和MLDv1的消息格式相同的部分。

  • 标志位S(Suppress Router-side Processing):
    表示路由器接收到查询消息后是否对定时器更新进行抑制。
  • 查询器的健壮性变量 QRV(Querier’s Robustness Variable):
    健壮性变量值QRV是最后侦听者查询次数的缺省值,也就是路由器在确定没有剩余侦听者存在之前而发送的特定组播地址查询的次数。
  • 查询器发送普遍查询消息的查询间隔 QQIC(Querier’s Query Interval Code)。
  • 源数目(Number of Sources):
    普遍查询或指定组播组查询中,此字段设置为0。
    指定组播源-组查询中,此字段表示查询消息中包含的源地址个数。
  • 源地址(Source Address):
    指定查询的组播源地址。

MLDv2报告消息报文格式
主机通过发送MLD报告消息来汇报当前的组播侦听状态。

  • 类型(Type):
    Type=143
  • 保留(Reserved):
    发送时设置为0;接收时忽略。
  • 校验和(Checksum):
    标准的ICMPv6校验和,覆盖所有MLD消息以及IPv6首部区域中的伪首部。
  • 组播地址记录的个数( Number of Multicast Address Records )
  • 组播地址记录 (Multicast Address Records ):
    表示主机在接口上侦听到的每个组播地址信息,包括记录类型、组播地址、源地址等。

指定组播源-组查询
MLDv2兼容MLDv1,原理与MLDv1相同。MLDv2支持源列表和过滤模式,可以指定源地址加入,用于实现SSM。
对 IPv6 组播源的过滤 :MLDv2是在指定组播组查询的基础上增加关于组播源的过滤模式:Include或Exclude。

  • 如果主机加入组播组时,只要求接收某些指定源如S1、S2、……发来的组播组报文,MLD报告消息中可以设置为Include Sources (S1, S2, …)。
  • 如果主机加入组播组时,拒绝接收某些指定源如S1、S2、……发来的组播报文,则可以设置从指定源外的源地址接收组播组报文,MLD报告消息中可以设置为Exclude Sources (S1, S2, …)。

IPv6 组播组状态跟踪:运行MLDv2协议的组播路由器按每条直连链路上的组播地址(per multicast address per attached link)来保持组播组的状态。组播组状态包括:

  • 过滤模式:保持对Include或Exclude的状态跟踪。
  • 源列表:保持对新增或删除组播源的跟踪。
  • 定时器:例如表示组播地址超时后切换到Include模式的过滤定时器、关于源记录的源定时器等。

接收者主机的状态侦听:运行MLDv2协议的组播路由器通过侦听接收者主机的状态,记录和维护网段上加入到源-组的主机的信息。

**MLD SSM Mapping **
SSM(Source-Specific Multicast)称为指定源组播,要求路由器能了解成员主机加入组播组时所指定的组播源。 如果成员主机上运行MLDv2,可以在MLDv2 报告报文中直接指定组播源地址。但是某些情况下,用户主机只能 运行MLDv1,为了使其也能够使用 SSM 服务,路由器上需要提供MLD SSM Mapping 功能。

配置完成后,当 RouterA 收到来自主机的 MLDv1 报告报文时,首先检查该报文中所携带的 IPv6 组播组地址 G, 然后根据检查结果的不同分别进行处理:

  • 如果 G 不在 IPv6 SSM 组地址范围内,则提供 ASM 组播服务。
  • 如果 G 在 IPv6 SSM 组地址范围内:
  • 若 RouterA 上没有 G 对应的 MLD SSM Mapping 规则,则无法提供 SSM 组播服务,丢弃该报文;
  • 若 RouterA 上有 G 对应的 MLD SSM Mapping 规则,则依据规则将报告报文中所包含的(*,G)信息 映射为(G,INCLUDE,( S1,S2…))信息,可以提供 SSM 组播服务。SSM映射功能使采用MLDv1版本的主机无须升级MLD版本就能顺利接收SSM的数据报文。此功能不影响采用MLDv2的主机。

映射策略可以多次配置,实现同一个组到多个源的映射。在一台路由器上,转发且仅转发映射表中的指定源-组报文。

猜你喜欢

转载自blog.csdn.net/PanJWei/article/details/115358374