组播侦听发现协议MLD用于IPv6路由器在其直连网段上发现组播侦听者,相当于IGMP协议的功能。路由器通过MLD协议,可以了解到在自己的直连网段上是否有组播组的侦听者,并在数据库里做相应记录。同时,路由器还维护与这些组播地址相联系的定时器信
息。
类型(Type):MLD消息共有三种:
组播侦听查询(类型值=130),可分为两种子类型:
• 普遍查询:用于获得在所连网络上具有侦听者的组播地址。
• 特定组播地址查询:用于获得在所连网络上对一特定组播地址是否存在侦听者。
组播侦听报告(类型值=131)
组播侦听离开( Multicast Listener Done)(类型值=132)
代码(Code):发送时设置为1;接收时忽略。
校验和(Checksum):标准的ICMPv6校验和,覆盖所有MLD消息以及IPv6首部区域中的伪首部。
最大响应延迟(Maximum Response Delay):最大响应延迟值只在查询报文消息中有意义,它指定了发送响应报文的最大允许时间延迟,单位为毫秒。在其他报文消息中,发送时设置为零,接收时忽略。
保留(Reserved):发送者设为零;接收者忽略。
组播地址(Multicast Address):在查询报文中,当发送普遍查询时,组播地址值设为零;当发送特定组查询时,设为特定的IPv6组播地址。在报告或离开报文中,组播地址值分别设为报文发送者要侦听或者停止侦听的特定IPv6组播地址。
机制IGMPv2基本相同,工作过程如下:
PC2与PC3想要收到发往IPv6组播组G1的IPv6组播数据,而PC1想要收到发往IPv6组播组G2的IPv6组播数据,那么主机加入IPv6组播组以及MLD查询器(R1)维护IPv6组播组成员关系的基本过程如下:
头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机制:
机制IGMPv3基本相同,工作过程如下:
一、对IPv6组播源的过滤
MLDv2增加了针对IPv6组播源的过滤模式(INCLUDE/EXCLUDE),使主机在加入某IPv6组播组G的同时,能够明确要求接收或拒绝来自某特定IPv6组播源S的IPv6组播信息。当主机加入IPv6组播组时:
• 若要求只接收来自指定IPv6组播源如S1、S2、……发来的IPv6组播信息, 则其报告报文中可以标记为INCLUDE Sources(S1,S2,……);
• 若拒绝接收来自指定IPv6组播源如S1、S2、……发来的IPv6组播信息,则其报告报文中可以标记为EXCLUDE Sources(S1,S2,……)。
二、IPv6组播组状态跟踪
运行MLDv2的组播路由器按每条直连链路上的组播地址(per multicast address per attached link)来保持IPv6组播组的状态。IPv6组播组的状态包括:
• 过滤模式:保持对INCLUDE或EXCLUDE的状态跟踪。
• 源列表:保持对新增或删除IPv6组播源的跟踪。
定时器:表示IPv6组播地址超时后切换到INCLUDE模式的过滤定时器、关于源记录的源定时器等。
三、接收者主机的状态侦听
运行MLDv2的组播路由器通过侦听接收者主机的状态,记录和维护网段上加入到源组的主机的信息。
MLD SSM Mapping
当 RouterA 收到来自主机的 MLDv1 报告报文时,首先检查该报文中所携带的 IPv6 组播组地址 G, 然后根据检查结果的不同分别进行处理:
映射策略可以多次配置,实现同一个组到多个源的映射。在一台路由器上,转发且仅转发映射表中的指定源组报文。
概述:
pim中目前使用的是sm模式,没有dm模式。主要与IPv4不同的地方是RP选举时的RP嵌入:
使能嵌入RP功能允许路由器从IPv6组播组地址中分析出RP的地址,从而取代静态配置RP或由BSR动态计算的RP。
使用嵌入式RP的组播组地址范围是FF7x::/16和FFFx::/16,x表示0~F的任意一个十六进制数。
在接收侧:
• 接收者主机发布MLD报告消息,加入组播组。
• 接收侧的DR提取内嵌在组播组地址中的RP地址,向其发送IPv6 PIM-SM加入消息。
在组播源侧:
• 组播源知道组播地址后,向此组播组发送报文。
• 组播源侧的DR提取内嵌在组播地址中的RP地址,向其以单播方式发送IPv6 PIM-SM注册消息。
接收端地址转化过程:
三、停止注册过程
组播源S发出的组播信息沿着已经建立好的SPT树到达RP,然后由RP将信息沿着RPT共享树进行转发。当RP收到沿着SPT树转发的组播流量后,向与组播源S直连的路由器单播发送注册停止报文。组播源注册过程结束。
四、组播流转发过程
源数据流延源树(SPT)流向RP,从RP开始,数据流延共享树(RPT)流向接收者。
五、RPT向SPT切换(切换中)
针对特定的源,PIM-SM通过指定一个利用带宽的SPT阈值可以实现将最后一跳路由器(即离接收者最近的DR)从RPT切换到SPT。当最后一跳路由器发现从RP发往组播组G的组播报文速率超过了该阈值时,就向单播路由表中到组播源S的下一跳路由器发送(S,G)加入消息,Join加入消息经过一个个路由器后到达第一跳路由器(即离组播源最近的DR),沿途经过的所有路由器都拥有了(S,G)表项,从而建立了SPT树分支。
用户端DR周期性检测组播报文的转发速率,一旦发现从RP发往组播组G的报文速率超过阈值,则触发SPT切换:
在华为设备中,缺省情况下连接接收者的路由器在探测到组播源之后(即接收到第一个数据报文),便立即加入最短路径树,即从RPT向SPT切换。
六、切换后的剪枝
当路由器在不同接口接收到RPT和SPT两条路径上传输的相同组播数据时,丢弃沿RPT接收的数据,并向RP逐跳发送剪枝消息。RP接收到剪枝消息后,更新转发状态,并停止沿RPT转发(S, G)的组播流量;同时RP向组播源发送剪枝消息删除或更新相关的(S, G)转发项。通过这种方法,组播数据从RPT切换到SPT。
概述:
SSM模型提供了指定源组播的解决方案,配合MLDv2采用IPv6 PIM-SM的部分机制来实现。由于最后一跳路由器通过MLDv2协议已经知道了组播源的地址,可以直接发起指定源-组的加入过程,在SSM网络中创建组播源到接收者的SPT。注意点:
SSM模型中,用信道(Channel)概念来表示(S, G)组合,用定制(Subscribed)消息概念来表示加入消息。
假定网络中的User A和User B需要接收组播源S的信息,就通过MLDv2向最近的查询器发送一个标为(include S, G)的报告信息。如果User A和User B不需要接收组播源S的信息,发送一个标为(exclude S, G)或包含其他组播源的报告消息。无论使用上述哪个报告消息,接收者是明确指定组播源S的。
接收到报告消息的查询器检查此消息的组播地址是否在SSM组地址的范围内。如果是,则路由器根据SSM模型建立组播分发树,随后向指定源逐跳发送定制消息(也称加入消息)。沿途上的所有路由器创建(S, G)项。以源S为根节点、接收者为叶子的SPT树就生成了。SSM模型使用此SPT树作为传输路径。
如果查询器发现组播地址在SSM组范围外,就在IPv6 PIM-SM基础上建立组播分发树。
资料整理来源:HCIE R&S培训文档