MLD: 概述:
多播检测协议MLD用于IPv6路由器在直连网段上检测多播检测者,相当于IGMP协议的功能。 路由器可以通过MLD协议知道其直连网段中是否有多播组的侦听器,并将其记录在数据库中。 同时,路由器还维护与这些多播地址相关联的计时器消息
屏住呼吸。
MLDv1报文格式:
类型(Type ) MLD消息有以下三种:
侦听多播查询(类型值=130 )可以分为以下两种种子类型:
常规查询:用于获取连接的网络上监听程序的多播地址。
特定多播地址查询:用于获取特定多播地址在连接的网络上是否存在监听程序。
多播监听报告(类型值=131 ) ) ) )。
多播离开(Multicast Listener Done ) ) (类型值=132 ) ) ) ) ) ) ) ) )。
码(Code )发送时设定为1; 接收时忽略。
校验和(Checksum ) :标准ICMPv6校验和,复盖所有MLD消息和IPv6报头区域的虚拟报头。
最大响应延迟(Maximum Response Delay ) :最大响应延迟值仅对查询消息有意义,它指定发送响应消息的最大允许延迟时间(以毫秒为单位)。 在其他消息中,发送时设定为零,接收时忽略。
将“挂起”发件人归零; 收件人无视。
对于多播地址查询消息,如果发送普遍查询,则多播地址的值设定为0; 如果要发送特定的组查询,请将其设置为特定的IPv6多播地址。 在报告或离开消息中,多播地址的值被设置为消息发送者试图监听或关闭的特定IPv6多播地址。
MLDv1使用机制:
一.查询器选举机制
机制IGMPv2基本相同,工作过程如下。
所有MLD路由器最初都认为自己是查询器,向本地域段中的所有主机和路由器发送MLD普遍组查询(General Query )消息(目标地址为FF02:1 )。 本地段中的其他MLD路由器收到消息后,会将消息的源IPv6地址与其接口地址进行比较。 比较起来,IPv6地址最小的路由器成为查询,而其他路由器成为非查询。 所有查询都会启动计时器。 这意味着其他查询中存在时间计时器Other Querier Present Timer。 在计时器超时之前,收到来自查询器的MLD查询消息的,重置计时器; 否则,我们认为原查询器将失效,并开始新的查询器选举过程。 二.加入IPv6组播组机制
当PC2和PC3接收发往IPv6组播组G1的IPv6组播数据,PC1希望接收发往IPv6组播组G2的IPv6组播数据时,主机使用IPv6组播组和MLD查询器(rld查询器)
主机主动向加入的IPv6多播组发送MLD成员资格报告消息以声明加入。 您不需要等待来自MLD查询器的MLD查询消息。 MLD查询器(R1 )定期向本地段内所有主机和路由器多播发送普遍群查询消息(目标地址为FF02:1 )。 在接收到该询问消息后,关注G1的PC2和PC3中的某一个,根据谁的延迟计时器先超时来决定。 ——例如,在PC2的延迟计时器提前超时时,PC2首先通过多播方式向g-1发送MLD成员资格报告消息,宣告属于g-1。 由于本地网络段中的所有主机可以接收从PC2到g-1的报告消息,因此,当PC3接收到该报告消息时,MLD路由器(R1和R2 )知道本地网络段中存在对g-1感兴趣的主机此机制称为主机上的MLD成员资格报告抑制机制,有助于减少本地段的流量。 因为PC1关注G2,所以为了声明属于G2,通过多播向G2发送报告消息。 经过以上查询和响应过程,MLD路由器知道本地段中有G1和G2成员。 因此,生成IPv6多播路由协议(例如,由IPv6 PIM )、G1 )、G2 )多播转发项作为IPv6多播数据的转发依据,其中,“*”是任意IPv6多播当从IPv6多播源发送到G1或G2的IPv6多播数据通过多播路由到达MLD路由器时,由于MLD路由器中有(分别为,G1和G2)多播转发条目,IPv6-G2 三.离开IPv6组播组的机制
此主机将向本地网段中的所有IPv6多播路由器(目标地址为FF02:2 )发送Done )消息。 当查询收到消息时,它将向主机声明要离开的IPv6多播组发送特定的组查询(multicast-address-specific query )消息。 )目标和组地址字段输入为要查询的IPv6多播组地址。 如果此网段中有此IPv6多播组的其他成员,则这些成员将在收到特定的组查询消息后,在该消息的最大响应时间(Maximum Response Delay )内成为成员如果在最大响应时间内收到来自IPv6多播组其他成员的成员关系报告消息,则联系人将继续保持IPv6多播组的成员关系。 否则,查询机将确定此网段中没有IPv6多播组的成员,并不再维护此IPv6多播组的成员关系
。唯一的不同之处:MLDv1不需要使用全局单播地址,这样可以反映出,IPV6中基本上协议之间的交互都是通过本地链路地址进行的,单播地址不一定需要配置 。
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消息报告报文:
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, 然后根据检查结果的不同分别进行处理:
• 若 RouterA 上没有 G 对应的 MLD SSM Mapping 规则,则无法提供 SSM 组播服务,丢弃该报文。
• 若 RouterA 上有 G 对应的 MLD SSM Mapping 规则,则依据规则将报告报文中所包含的(*,G)信息 映射为(G,INCLUDE,( S1,S2…))信息,可以提供 SSM 组播服务。SSM映射功能使采用MLDv1版本的主机无须升级MLD版本就能顺利接收SSM的数据报文。此功能不影响采用MLDv2的主机。
映射策略可以多次配置,实现同一个组到多个源的映射。在一台路由器上,转发且仅转发映射表中的指定源组报文。
PIM IPv6 SM:概述:
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注册消息。
嵌入方式:
接收端地址转化过程:
提取“plen”字段,转换为十进制数。将“Network Prefix”字段的前“plen” bits提取出来作为RP地址的地址前缀。将“RIID”字段提取出来作为RP地址的Interface ID的最后4bits,Interface ID其余部分用0补齐嵌入RP实例。组播地址FF70:140:2001:DB8:BEEF:FEED::/96,则从组播地址中获取的RP地址为2001:DB8:BEEF:FEED::1/64。SPT树建立流程简介:
一、加入共享树
二、组播源注册
三、停止注册过程
组播源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切换:
用户端DR逐跳向源端DR发送(S,G)Join报文并创建(S,G)表项,建立源端DR到用户端DR的SPT。SPT建立后,用户端DR会沿着RPT逐跳向RP发送剪枝报文,收到剪枝报文的路由器将(*,G)复制成相应的(S,G),并将相应的下游接口置为剪枝状态。剪枝结束后,RP不再沿RPT转发组播报文到组成员端。如果SPT不经过RP,RP会继续向源端DR逐跳发送剪枝报文,删除(S,G)表项中相应的下游接口。剪枝结束后,源端DR不再沿“源端DR-RP”的SPT转发组播报文到RP。在华为设备中,缺省情况下连接接收者的路由器在探测到组播源之后(即接收到第一个数据报文),便立即加入最短路径树,即从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培训文档