MLD:

概述:

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

MLDv1报文格式:

  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使用机制:

一、查询器选举机制

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

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

二、加入IPv6组播组机制

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组播组机制

  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查询报文:

  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消息报告报文:

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

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, 然后根据检查结果的不同分别进行处理:

  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嵌入:

使能嵌入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注册消息。

嵌入方式:

  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树建立流程简介:
一、加入共享树

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

二、组播源注册

  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为目的地。

三、停止注册过程

组播源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切换:

  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切换。

六、切换后的剪枝

当路由器在不同接口接收到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树,可以实现跨域组播。

工作原理:

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

IPv6组播技术原理相关推荐

  1. 网工笔记(三):IP Multicast组播技术

    IP多路组播技术,英文为IP Multicast,  就是英文文档里经常说到的BUM报文里的大M.这是一门特别的技术,它从2层到3层协议mac地址到IP地址都自成一体.很多网工同行只在IE考试里学习了 ...

  2. IPv6任播技术及其任播地址解析协议概述

    IPv6任播技术及其任播地址解析协议概述 作者:王建 李方伟 摘要:任播技术是一种新的网络应用.任播通信是支持导向服务地址的,但是目前IPv6中它的很多定义是模糊的,并且在控制路由方面没有达成一致的协 ...

  3. 用c语言ipv6组播,ipv6组播有哪些协议

    MLDv1 Multicast Listener Discoveryfor IPv6(简称MLD)为IPv6组播监听发现协议.MLD是一个非对称的协议,IPv6组播成员(主机或路由器)和IPv6组播路 ...

  4. linux监听9080,基于UPnP发现与组播技术的IPTV终端实现

    摘 要:本文设计并实现的终端系统工作在mClinux操作系统下,通过应用UPnP中的SSDP服务发现协议,实现在局域网中IPTV终端的自动发现, 并使用IP组播技术将TV视频信号及本地的AV视频信号. ...

  5. linux ipv6 组播地址,ipv6组播地址是什么意思

    一.任何节点都能够成为一个多播组成员也叫做组播组成员: 二.源节点可以发送数据包到多播组: 三.在一个多播组的节点都能收到发往该组播组的数据. "组播组"是一个用IP组播地址进行标 ...

  6. 内网无纸化会议/智慧教室实时同屏RTSP组播技术方案思考

    内网环境下,为了满足内网无纸化/电子教室等内网超低延迟需求,避免让用户配置单独的服务器,好多开发者希望有RTSP的技术方案,用于小并发场景,特别是在组网环境好的有线环境下,使用RTSP服务配合组播,是 ...

  7. 利用IP组播技术传输视频信息

    利用IP组播技术传输视频信息   随着全球互联网(Internet)的迅猛发展,上网人数正以几何级数快速增长,以因特网技术为主导的数据通信在通信业务总量中的比列迅速上升,因特网业务已成为多媒体通信业中 ...

  8. 用c语言ipv6组播,需要适用于iOS 9的IPv6组播C代码

    苹果现在要求iOS 9应用符合IPv6.我们几乎可以,除了一些发送UDP广播的代码 – 现在在iOS 9中失败了. 我看到的一切告诉我,UDP组播是在IPv6中这样做的正确方法.我已经找到一些示例代码 ...

  9. IP组播技术在视频中的应用(1)

    IP组播技术在视频中的应用(1) IP组播技术在视频中的应用 摘要:随着流媒体.视频等业务在 Internet 上的相继开展, IP 组播技术和应用开始快速发展.本文主要分析 IP 组播技术的产生.概 ...

  10. IPv4/IPv6组播地址和组播MAC地址的转换

    IPv4地址的组播MAC地址: 组播MAC地址高24位固定为0x01005E,第25位为0 组播MAC地址低23位为IPv4地址的低23位 以上规则是IANA规定的,因为IPv4组播地址的高4位是11 ...

最新文章

  1. 1.6 文件上传组件
  2. 使用C语言链表创建学生信息并且将信息打印输出
  3. Spring Boot 整合 Redis 实现缓存操作
  4. Java从零开始(二) Tomacat
  5. Codeforces Round #606 (Div. 2, based on Technocup 2020 Elimination Round 4) 构造
  6. Integer进制转换
  7. [一分钟先生]涂勇:通过跳槽走上管理岗位不可取
  8. ios 从服务器获取文件,ios - 如何将远程文件(从远程SMB服务器获取)提供给某些请求 - 堆栈内存溢出...
  9. 大学生个人网页设计 HTML个人网页制作 web个人网站模板 简单静态HTML个人网页作品
  10. php 生成会员卡号,PHP编程:PHP实现生成唯一会员卡号
  11. HTML颜色值的设置
  12. 金融资产收益率计算中百分比收益率和对数收益率有什么区别?
  13. PAT 乙级 集体照
  14. 不要让刷单限制了你的运营能力,零基础店铺流量爆发技巧!
  15. 实现mac状态栏图标的隐藏
  16. 计算机组成与原理第三章答,计算机组成与原理第三章答案.doc
  17. 我的世界服务器额外植物学bug修复,[1.12.2-1.7.10][AnotherCommonBugFix——通用Bug修复]——可修复服务器常见的BUG...
  18. MT8732 / MT8735处理器特点/芯片组型号资料介绍
  19. 用python处理excel的基本语法_Python操作Excel学习笔记(28):条件格式
  20. 专转本计算机必背知识点,江苏专转本计算机必考重点(精华版).doc

热门文章

  1. 几种将网站设为首页的代码
  2. 力士乐电源模块故障代码_REXROTH DRIVE博士力士乐伺服驱动器故障代码大全
  3. Android 网络下载文件 图片 httpurl
  4. premiere小tips(参考于干的教程)
  5. fileupload控件的属性_FileUpload控件的配置 .
  6. [面试] 步步为营:吉大学士的PG宝洁面经
  7. 宇视摄像头IP地址修改工具
  8. java jco_JAVA通过JCo连接SAP
  9. android项目设计实验报告模板,Android实验报告模板_实验一.doc
  10. 职场必备的Excel函数技巧!