IPv6组播技术原理

MLD:

概述:
IPv6组播技术原理_第1张图片

组播侦听发现协议MLD用于IPv6路由器在其直连网段上发现组播侦听者,相当于IGMP协议的功能。路由器通过MLD协议,可以了解到在自己的直连网段上是否有组播组的侦听者,并在数据库里做相应记录。同时,路由器还维护与这些组播地址相联系的定时器信
息。

MLDv1报文格式:
IPv6组播技术原理_第2张图片

  1. 类型(Type):MLD消息共有三种:
    组播侦听查询(类型值=130),可分为两种子类型:
    • 普遍查询:用于获得在所连网络上具有侦听者的组播地址。
    • 特定组播地址查询:用于获得在所连网络上对一特定组播地址是否存在侦听者。
    组播侦听报告(类型值=131)
    组播侦听离开( Multicast Listener Done)(类型值=132)

  2. 代码(Code):发送时设置为1;接收时忽略。

  3. 校验和(Checksum):标准的ICMPv6校验和,覆盖所有MLD消息以及IPv6首部区域中的伪首部。

  4. 最大响应延迟(Maximum Response Delay):最大响应延迟值只在查询报文消息中有意义,它指定了发送响应报文的最大允许时间延迟,单位为毫秒。在其他报文消息中,发送时设置为零,接收时忽略。

  5. 保留(Reserved):发送者设为零;接收者忽略。

  6. 组播地址(Multicast Address):在查询报文中,当发送普遍查询时,组播地址值设为零;当发送特定组查询时,设为特定的IPv6组播地址。在报告或离开报文中,组播地址值分别设为报文发送者要侦听或者停止侦听的特定IPv6组播地址。

MLDv1使用机制:
IPv6组播技术原理_第3张图片
一、查询器选举机制
IPv6组播技术原理_第4张图片

机制IGMPv2基本相同,工作过程如下:

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

二、加入IPv6组播组机制
IPv6组播技术原理_第5张图片

PC2与PC3想要收到发往IPv6组播组G1的IPv6组播数据,而PC1想要收到发往IPv6组播组G2的IPv6组播数据,那么主机加入IPv6组播组以及MLD查询器(R1)维护IPv6组播组成员关系的基本过程如下:

  1. 主机会主动向其要加入的IPv6组播组发送MLD成员关系报告报文以声明加入,而不必等待MLD查询器发来的MLD查询报文。
  2. MLD查询器(R1)周期性地以组播方式向本地网段内的所有主机和路由器发送普遍组查询报文(目的地址为FF02::1)。
  3. 在收到该查询报文后,关注G1的PC2与PC3其中之一(这取决于谁的延迟定时器先超时)——比如PC2的延迟定时器先超时:PC2会首先以组播方式向G1发送MLD成员关系报告报文,以宣告其属于G1。由于本地网段中的所有主机都能收到PC2发往G1的报告报文,因此当PC3收到该报告报文后,将不再发送同样针对G1的报告报文,因为MLD路由器(R1和R2)已知道本地网段中有对G1感兴趣的主机了。这个机制称为主机上的MLD成员关系报告抑制机制,该机制有助于减少本地网段的信息流量。
  4. 由于PC1关注的是G2,所以它仍将以组播方式向G2发送报告报文,以宣告其属于G2。
  5. 经过以上的查询和响应过程,MLD路由器了解到本地网段中有G1和G2的成员,于是由IPv6组播路由协议(如IPv6 PIM)生成(* ,G1)和(* ,G2)组播转发项作为IPv6组播数据的转发依据,其中的“*”代表任意IPv6组播源。
  6. 当由IPv6组播源发往G1或G2的IPv6组播数据经过组播路由到达MLD路由器时,由于MLD路由器上存在(,G1)和(,G2)组播转发项,于是将该IPv6组播数据转发到本地网段,接收者主机便能收到该IPv6组播数据了。

三、离开IPv6组播组机制
IPv6组播技术原理_第6张图片

  1. 该主机向本地网段内的所有IPv6组播路由器(目的地址为FF02::2)发送离开组(Done)报文。
  2. 当查询器收到该报文后,向该主机所声明要离开的那个IPv6组播组发送特定组查询(Multicast-Address-Specific Query)报文(目的地址字段和组地址字段均填充为所要查询的IPv6组播组地址)。
  3. 如果该网段内还有该IPv6组播组的其它成员,则这些成员在收到特定组查询报文后,会在该报文中所设定的最大响应时间(Maximum Response Delay) 内发送成员关系报告报文。
  4. 如果在最大响应时间内收到了该IPv6组播组其它成员发送的成员关系报告报文,查询器就会继续维护该IPv6组播组的成员关系;否则,查询器将认为该网段内已无该IPv6组播组的成员,于是不再维护这个IPv6组播组的成员关系。
    唯一的不同之处:MLDv1不需要使用全局单播地址,这样可以反映出,IPV6中基本上协议之间的交互都是通过本地链路地址进行的,单播地址不一定需要配置 。

MLDv2查询报文:
IPv6组播技术原理_第7张图片

  1. 头192bits部分是和MLDv1的消息格式相同的部分。

  2. 标志位S(Suppress Router-side Processing): 表示路由器接收到查询消息后是否对定时器更新进行抑制。

  3. 查询器的健壮性变量 QRV(Querier’s Robustness Variable):健壮性变量值QRV是最后侦听者查询次数的缺省值,也就是路由器在确定没有剩余侦听者存在之前而发送的特定组播地址查询的次数。

  4. 查询器发送普遍查询消息的查询间隔 QQIC(Querier’s Query Interval Code)。

  5. 源数目(Number of Sources):
    • 普遍查询或指定组播组查询中,此字段设置为0。
    • 指定组播源组查询中,此字段表示查询消息中包含的源地址个数。

  6. 源地址(Source Address):指定查询的组播源地址。

MLDv2消息报告报文:
IPv6组播技术原理_第8张图片

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

MLDv2机制:
IPv6组播技术原理_第9张图片
机制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
IPv6组播技术原理_第10张图片
当 RouterA 收到来自主机的 MLDv1 报告报文时,首先检查该报文中所携带的 IPv6 组播组地址 G, 然后根据检查结果的不同分别进行处理:

  1. 如果 G 不在 IPv6 SSM 组地址范围内,则提供 ASM 组播服务。
  2. 如果 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的主机。

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

PIM IPv6 SM:

概述:
pim中目前使用的是sm模式,没有dm模式。主要与IPv4不同的地方是RP选举时的RP嵌入:
IPv6组播技术原理_第11张图片
使能嵌入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注册消息。

嵌入方式:
IPv6组播技术原理_第12张图片

  1. 头8bits为FF说明是IPv6组播地址。
  2. Flags字段的范围是7-F,说明是一个嵌入了RP地址的IPv6组播组地址。
  3. RIID字段:RP Interface ID,抽取出来填充在RP地址的最后4bits。
  4. Plen字段:RP地址的前缀长度,换算成十进制数后不能为0,也不能大于64。
  5. Network Prefix字段:RP的地址前缀。
  6. Group ID:组ID。

接收端地址转化过程:

  1. 提取“plen”字段,转换为十进制数。
  2. 将“Network Prefix”字段的前“plen” bits提取出来作为RP地址的地址前缀。
  3. 将“RIID”字段提取出来作为RP地址的Interface ID的最后4bits,Interface ID其余部分用0补齐嵌入RP实例。
  4. 组播地址FF70:140:2001:DB8:BEEF:FEED::/96,则从组播地址中获取的RP地址为2001:DB8:BEEF:FEED::1/64。

SPT树建立流程简介:
一、加入共享树
IPv6组播技术原理_第13张图片

  1. 当接收者主机加入一个组播组G时,通过MLD报文知会与该主机直接相连的叶子路由器,叶子路由器掌握组播组G的接收者信息,然后朝着RP方向往上游节点发送加入组播组的Report消息。
  2. 从叶子路由器到RP之间途经的每个路由器都会在转发表中生成(* ,G)表项,这些沿途经过的路由器就形成了RP共享树(RPT)的一个分支。其中(*,G)表示从任意源来的信息去往组播组G。RPT共享树以RP为根,以接收者为叶子。
  3. 当从组播源S来的发往组播组G的报文流经RP时,报文就会沿着已经建立好的RPT共享树路径到达叶子路由器,进而到达接收者主机。
  4. 当某接收者对组播信息不再感兴趣时,离该接收者最近的组播路由器会逆着RPT树朝RP方向逐跳发送Prune剪枝消息。第一个上游路由器接收到该剪枝消息,在接口列表中删除连接此下游路由器的接口,并检查自己是否拥有感兴趣的接收者,如果没有则继续向上游转发该剪枝消息。

二、组播源注册
IPv6组播技术原理_第14张图片

  1. 为了向RP通知组播源S的存在,当组播源S向组播组G发送了一个组播报文时,与组播源S直接相连的路由器接收到该组播报文后,就将该报文封装成IPv6 PIM Register注册报文,并单播发送给对应的RP。
  2. 当RP接收到来自组播源S的注册消息后,一方面解封装注册消息并将组播信息沿着RPT树转发到接收者,另一方面朝组播源S逐跳发送(S,G)加入消息,从而让RP和组播源S之间的所有路由器上都生成了(S,G)表项,这些沿途经过的路由器就形成了SPT树的一个分支。SPT源树以组播源S为根,以RP为目的地。

三、停止注册过程
IPv6组播技术原理_第15张图片
组播源S发出的组播信息沿着已经建立好的SPT树到达RP,然后由RP将信息沿着RPT共享树进行转发。当RP收到沿着SPT树转发的组播流量后,向与组播源S直连的路由器单播发送注册停止报文。组播源注册过程结束。

四、组播流转发过程
IPv6组播技术原理_第16张图片
源数据流延源树(SPT)流向RP,从RP开始,数据流延共享树(RPT)流向接收者。

五、RPT向SPT切换(切换中)
IPv6组播技术原理_第17张图片
针对特定的源,PIM-SM通过指定一个利用带宽的SPT阈值可以实现将最后一跳路由器(即离接收者最近的DR)从RPT切换到SPT。当最后一跳路由器发现从RP发往组播组G的组播报文速率超过了该阈值时,就向单播路由表中到组播源S的下一跳路由器发送(S,G)加入消息,Join加入消息经过一个个路由器后到达第一跳路由器(即离组播源最近的DR),沿途经过的所有路由器都拥有了(S,G)表项,从而建立了SPT树分支。

用户端DR周期性检测组播报文的转发速率,一旦发现从RP发往组播组G的报文速率超过阈值,则触发SPT切换:

  1. 用户端DR逐跳向源端DR发送(S,G)Join报文并创建(S,G)表项,建立源端DR到用户端DR的SPT。
  2. SPT建立后,用户端DR会沿着RPT逐跳向RP发送剪枝报文,收到剪枝报文的路由器将(*,G)复制成相应的(S,G),并将相应的下游接口置为剪枝状态。剪枝结束后,RP不再沿RPT转发组播报文到组成员端。
  3. 如果SPT不经过RP,RP会继续向源端DR逐跳发送剪枝报文,删除(S,G)表项中相应的下游接口。剪枝结束后,源端DR不再沿“源端DR-RP”的SPT转发组播报文到RP。

在华为设备中,缺省情况下连接接收者的路由器在探测到组播源之后(即接收到第一个数据报文),便立即加入最短路径树,即从RPT向SPT切换。

六、切换后的剪枝
IPv6组播技术原理_第18张图片
当路由器在不同接口接收到RPT和SPT两条路径上传输的相同组播数据时,丢弃沿RPT接收的数据,并向RP逐跳发送剪枝消息。RP接收到剪枝消息后,更新转发状态,并停止沿RPT转发(S, G)的组播流量;同时RP向组播源发送剪枝消息删除或更新相关的(S, G)转发项。通过这种方法,组播数据从RPT切换到SPT。

PIM IPv6 SSM:

概述:
SSM模型提供了指定源组播的解决方案,配合MLDv2采用IPv6 PIM-SM的部分机制来实现。由于最后一跳路由器通过MLDv2协议已经知道了组播源的地址,可以直接发起指定源-组的加入过程,在SSM网络中创建组播源到接收者的SPT。注意点:

  1. 定义了特殊的组播地址:FF3x::/32,不存在源发现问题。
  2. 需要和MLDv2或者MLD SSM Mapping配合使用。
  3. 扩展了PIM SM协议,PIM-SSM不涉及RP、BSR、RPT生成、组播源注册等复杂机制。
  4. 基于组播源的单播路由直接生成SPT树,可以实现跨域组播。

工作原理:
IPv6组播技术原理_第19张图片

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培训文档

你可能感兴趣的:(HCIE,R&S学习笔记,IPv6,组播,MLD,pim,ipv6)