IPv6组播ISSUE1.X日期:杭州华三通信技术有限公司版权所有,未经授权不得使用与传播掌握IPv6组播地址掌握MLD协议掌握IPv6PIM协议课程目标学习完本课程,您应该能够:IPv6组播基本概念IPv6组播地址MLD协议IPv6PIM协议目录组播模型分类ASM(Any-SourceMulticast,任意信源组播)组播组的组播源是任意的加入组播组后,接收者可以收到任意组播源发出的组播信息SFM(Source-FilteredMulticast,信源过滤组播)协议软件对组播组的组播源进行了过滤接收者只收到部分组播源发出的组播数据SSM(Source-SpecificMulticast,指定信源组播)组播源已经预先知道,直接在接收者和组播源之间建立了组播转发路径接收者只收到指定的组播源发出的组播数据组播数据流RTCIPv6单播路由表Destination/maskInterfaceFF0E::/16E0/1E0/0E0/1IPv6组播基本概念IPv6组播地址MLD协议IPv6PIM协议目录组播地址RFC2373定义的IPv6组播地址Scop字段的取值Scop字段的含义0保留(reserved)1节点本地范围(node-localscope)2链路本地范围(link-localscope)3、4、6、7、9~D未分配(unassigned)5站点本地范围(site-localscope)8机构本地范围(organization-localscope)E全局范围(globalscope)F保留(reserved)11111111reservedmustbezeroflgsscop8432bits80bits4groupID组播地址RFC3306定义flgs:T比特位为1表示这个地址是非永久分配组播地址;P比特位为1表示它是一个基于单播前缀的IPv6组播地址。plen:表示内嵌的单播网络前缀的确切长度。networkprefix:表示在该组播地址中内嵌的单播网络前缀。00PT11111111flgsscop84reserved328464groupID8plennetworkprefix组播地址内嵌RP地址的IPv6组播地址的意义实现从组播地址到RP地址的直接映射只需要对收到的组播报文进行分析即可知道RP的地址RFC3956定义flgs:R比特位为1表示这是一个内嵌RP地址的IPv6组播地址RIID:RP的路由器的接口ID(RPInterfaceID)0RPT11111111flgsscoprsvd84groupID32RIID846444plennetworkprefix步:拷贝“plen”长的”networkprefix”到空地址的前面部分networkprefix第1步:先构建一个128位的“空地址”第3步:拷贝RIID到空地址的最后4个比特00000000000000000000000000000000000000举例已知组播地址是FF7x:F20:2001:DB8:DEAD::/80FF7x08bit0000000GroupIDFplenscopnetworkprefixRIID0000000000000000000000……00000000000000000000000128位“空地址”2001:DB8:000000000000000……000000000000000000000000020拷贝32位长的”networkprefix”,2001:DB8到空地址的前面部分拷贝RIID字段值F到空地址的最后4个比特2001:DB8:000000000000……000000000000000000000:FRP地址是2001:DB8::F2001:DB8:DEAD::IPv6组播基本概念IPv6组播地址MLD协议IPv6PIM协议目录协议概述MulticastListenerDiscoveryProtocol(组播侦听者发现协议)用于IPv6路由器在其直连网段上发现组播侦听者(MulticastListener)MLD是非对称协议,路由器和主机的行为不同MLD协议报文源地址:链路本地地址跳数:1被ICMPv6报文所承载,nextheader值为58MLD协议版本MLDv1,源自IGMPv2MLDv2,源自IGMPv3MLDv1基于查询/响应机制路由器发出两种类型的查询报文普遍组查询特定组查询主机发出报告报文来响应。同时,主机在启动时主动发送报告报文。主机发出离开报文来表示离开一个组播组主动报告加入组发出普遍查询响应查询离开组消息特定组查询路由器主机::2/64RTARTB选举原则链路本地地址最小的路由器会成为链路上的查询器如果查询器失效,则重新发起查询器的选举过程抢占原则。任何时候地址最小的路由器会成为查询器三种类型查询报文,Type值为130报告报文,Type值为131离开报文,Type值为132协议特点:能够指定所接收组播数据的组播源组播源11::1,ff0e::1接收者1频道1组播流组播源21::2,ff0e::1频道2组播流接收者2MLDv1MLDv2工作机制与MLDv1的不同之处增加了对特定组播源过滤的支持路由器和主机维护了与MLDV1不同的组播地址状态信息增加了特定源组查询(Multicast-Source-Address-SpecificQuery)与MLDv1的相同之处查询器选举机制MLDv2协议是一个非对称协议,路由器和主机分别维护了不同的组播地址状态信息路由器所维护的组播地址状态信息较复杂主机所维护的组播地址状态信息较简单路由器组播地址状态信息路由器按每条直连链路上的组播地址(permulticastaddressperattachedlink)来保持对组播地址状态的跟踪。一个组播地址的状态信息包含以下几个元素过滤模式(FilterMode)Include,表示路由器转发哪些组播源发出的组播流。Exclude,表示路由器不转发哪些组播源发出的组播流。过滤定时器(FilterTimers)仅在Exclude下有效,表示切换到Include模式的时间源列表(SourceList)与过滤模式相关,表示路由器能够转发或拒绝转发哪些组播源发出的组播流源定时器(SourceTimers)与源相关的定时器过滤模式(FilterMode)路由器的过滤模式(FilterMode)受主机影响链路上所有主机处于Include模式,则路由器会处于Include模式只要有一个主机处于Exclude模式,则路由器会处于Exclude模式用符号Include(A)来表示处于Include模式“A”是组播源列表,称为“IncludeList”此时路由器可以转发组播流(A,G),但不转发其他的组播流用符号Exclude(X,Y)来表示处于Exclude模式“X”称为“RequestedList”,“Y”称为“ExcludeList”此时路由器可以转发除了从“Y”发出的组播流之外的所有组播流源定时器(SourceTimers)源定时器与过滤模式相关路由器的过滤模式(FilterMode)源定时器的值(SourceTimerValue)路由器行为及说明IncludeTIMER0转发对应的组播数据流。IncludeTIMER=0停止转发并从源列表中去除。如果源列表中没有了源,则删除此组播地址记录。ExcludeTIMER0转发RequestedList中的源发出的组播流。ExcludeTIMER=0停止转发,并把这个源从RequestedList中移到ExcludeList中去。Exclude没有源在源列表中转发所有的源发出的组播流。主机组播地址状态信息主机仅需要维护组播地址相对应的过滤模式(FilterMode)和源列表(SourceList)Include(S1,S2,……)表示只接收来自特定组播源S1、S2、……发来的组播信息Exclude(S1,S2,……)表示拒绝接收来自特定组播源S1、S2、……发来的组播信息主机与路由器的交互过程主动报告加入组发出普遍查询响应查询状态改变报告特定源组查询路由器主机与MLDv1中交互过程不同之处在于:报告报文中可有多个组播地址记录,组播地址记录中又可对应多个组播源主机用状态改变消息来表达自己的状态改变,没有了MLDv1中的离开报文增加了特定源组查询报文报文不同于MLDv1,仅有两种报文路由器发出的查询报文,Type=130主机发出的报告报文,Type=143一个问题:在MLDv2中,如果一个主机不再想侦听某组播地址,它应该发何种报文?主机发一个过滤模式为Include,源列表为空的报告报文(1)SourceAddress(n)...与MLDv1报文有什么不同呢?主要不同是增加了源地址,因为MLDv2中有特定源组查询报文(1)TypeReservedChecksumReservedNumberofMulticastAddressRecords.031715...MulticastAddressRecord(m)RecordTypeAuxDataLenNumberofSources(N)SourceAddress[1]SourceAddress[2]SourceAddress[3]MulticastAddressAuxiliaryData组播地址记录类型(IS_IN)表示对指定组播地址的过滤模式是Include2MODE_IS_EXCLUDE(IS_EX)表示对指定组播地址的过滤模式是Exclude过滤模式改变记录3CHANGE_TO_INCLUDE_MODE(TO_IN)表示对指定组播地址的过滤模式变成了Include4CHANGE_TO_EXCLUDE_MODE(TO_EX)表示对指定