国家 / 地区

IPv6组播技术白皮书-6W100

手册下载

IPv6组播技术白皮书

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Copyright © 2019 新华三技术有限公司 版权所有,保留一切权利。

非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。

除新华三技术有限公司的商标外,本手册中出现的其它公司的商标、产品标识及商品名称,由各自权利人拥有。

本文中的内容为通用性技术信息,某些信息可能不适用于您所购买的产品。



概述

作为IPv4协议的替代,IPv6协议使用128位的地址结构解决了IP地址不足的问题,同时对一些特性进行了优化处理。出现于IPv4时代的组播技术,由于其有效解决了单点发送、多点接收的问题,实现了网络中点到多点的高效数据传送,能够大量节约网络带宽、降低网络负载,因此在IPv6中的应用得到了进一步的丰富和加强。

IPv6组播与IPv4组播的最大不同在于IPv6组播地址机制的极大丰富,而其它诸如组成员管理、组播报文转发以及组播路由建立等与IPv4组播基本相同。因此,本文将重点介绍组播地址对IPv6的支持情况;对于IPv6组播协议,只对其与IPv4组播协议的异同进行大致的介绍。

IPv6组播技术实现

2.1  IPv6组播地址

在介绍IPv6组播地址之前,先简单回顾一下IPv6的地址结构:IPv6地址的长度为128比特,每个IPv6地址被分为8组,每组的16比特用4个十六进制数来表示,组和组之间用冒号隔开,例如:FEDC:BA98:7654:3210:FEDC:BA98:7654:3210

2.1.1  IPv6组播地址格式

IPv6组播地址用来标识一组接口,通常这些接口属于不同的节点。一个节点可能属于0到多个组播组。发往组播地址的报文被组播地址标识的所有接口接收。

图1 IPv6组播地址格式

 

1所示,IPv6组播地址中各字段的含义如下:

·     0xFF:最高8比特为11111111,标识此地址为IPv6组播地址。

·     Flags4比特,该字段中各位的取值及含义如1所示。

表1 Flags字段各位的取值及含义

取值及含义

0

保留位,必须取0

R

·     0表示非内嵌RPIPv6组播地址

·     1表示内嵌RPIPv6组播地址(此时PT位也必须置1

P

·     0表示非基于单播前缀的IPv6组播地址

·     1表示基于单播前缀的IPv6组播地址(此时T位也必须置1

T

·     0表示由IANA永久分配的IPv6组播地址

·     1表示非永久分配的IPv6组播地址

 

·     Scope4比特。用来标识该IPv6组播组的应用范围,其取值及含义如2所示。

表2 Scope字段的取值及其含义

取值

含义

0F

保留(Reserved

1

接口本地范围(Interface-Local Scope

2

链路本地范围(Link-Local Scope

3

子网本地范围(Subnet-Local Scope

4

管理本地范围(Admin-Local Scope

5

站点本地范围(Site-Local Scope

679D

未分配(Unassigned

8

机构本地范围(Organization-Local Scope

E

全球范围(Global Scope

 

·     Group ID112比特,IPv6组播组标识号。用来在由Scope字段所指定的范围内唯一标识IPv6组播组,该标识可能是永久分配的或临时的,这由Flags字段的T位决定。

2.1.2  预留的IPv6组播地址

根据RFC 4291,目前已被预留的IPv6组播地址如3所示。

表3 预留的IPv6组播地址列表

名称

地址

说明

保留组播地址

FF0X::

不能分配给任何组播组

所有节点组播地址

·     FF01::1(节点本地)

·     FF02::1(链路本地)

-

所有路由器组播地址

·     FF01::2(节点本地)

·     FF02::2(链路本地)

·     FF05::2(站点本地)

-

被请求节点组播地址

FF02::1:FFXX:XXXX

在被请求节点单播或任播IPv6地址的低24位前增加地址前缀FF02::1:FF00::/104而得,如4037::01:800:200E:8C6C对应于FF02::1:FF0E:8C6C

 

说明

3中的X代表0F的任意一个十六进制数。

 

2.1.3  基于单播前缀的IPv6组播地址

RFC 3306中规定了一种动态分配IPv6组播地址的方式——基于单播前缀的IPv6组播地址。这种IPv6组播地址中包含了其组播源网络的单播地址前缀,通过这种方式分配全局唯一的组播地址。

图2 基于单播前缀的IPv6组播地址格式

 

基于单播前缀的IPv6组播地址的格式如2所示,其中各字段的含义如下:

·     FlagsR位置0PT位则分别置1,表示基于单播前缀的组播地址。

·     Scope:如2.1.1  12所示。

·     Reserved8比特。保留字段,必须为0

·     Plen8比特。表示网络前缀的有效长度(单位为比特)。

·     Network prefix64比特。表示该组播地址所属子网的单播前缀,有效长度由Plen字段指定。

·     Group ID32比特。表示IPv6组播组标识号。

例如:单播前缀为3FFE:FFFF:1::/48的网络分配基于单播前缀的组播地址为FF3X:30:3FFE:FFFF:1::/96X表示任意合法的Scope)。

2.1.4  内嵌RP地址的IPv6组播地址

1. 地址格式

嵌入式RPRendezvous Point,汇集点)是IPv6 PIM中特有的RP发现机制,该机制使用内嵌RP地址的IPv6组播地址,使得组播路由器可以直接从该地址中解析出RP的地址。

图3 内嵌RP地址的IPv6组播地址格式

 

3所示,内嵌RP地址的IPv6组播地址使用基于单播前缀的IPv6组播地址格式,其中各字段的含义如下:

·     FlagsRPT位均置1,表示内嵌RP地址的组播地址。

·     Scope:如2.1.1  12所示。

·     Reserved4比特。保留字段,必须为0

·     RIID4比特。表示RP地址的接口ID

·     Plen8比特。表示RP地址前缀的有效长度(单位为比特)。

·     Network prefix64比特。表示RP地址前缀,有效长度由Plen字段指定。

·     Group ID32比特。表示IPv6组播组标识号。

2. 计算规则

内嵌于IPv6组播地址中的RP地址的计算规则如下:

(1)     先将IPv6组播地址Network prefix字段的前Plen位作为RP地址的网络前缀

(2)     再将IPv6组播地址RIID字段填充到RP地址的最低4位。

(3)     最后,将RP地址的所有剩余位补0

例如:对于IPv6组播地址FF7E:F40:2001:DB8:BEEF:FEED::1234,内嵌于其中的RP地址的前缀为Network prefix字段的前Plen(这里为0x40 = 64 bits)位,最低4位为RIID0xF),其余位均为0,如4所示。

图4 嵌入式RP计算举例

 

3. 应用举例

假设网络管理员想在2001:DB8:BEEF:FEED::/64网段中设置RP,则内嵌RP地址的IPv6组播地址为FF7X:Y40:2001:DB8:BEEF:FEED::/96,可分配32比特的Group ID,内嵌于其中的RP地址为2001:DB8:BEEF:FEED::Y/64

如果网络管理员想在IPv6组播地址中保留更多可分配的Group ID,可以选择更短的RP地址前缀:譬如取Plen = 0x20 = 32 bits,则此时内嵌RP地址的IPv6组播地址为FF7X:Y20:2001:DB8::/64,可分配64比特的Group ID,内嵌于其中的RP地址为2001:DB8::Y/32

说明

X表示任意合法的ScopeY代表1F的任意一个十六进制数。

 

2.1.5  IPv6 SSM组播地址

IPv6 SSMSource-Specific Multicast,指定信源组播)组播地址也使用基于单播前缀的IPv6组播地址格式,其中的Plen字段和Network prefix字段均取0IPv6 SSM组播地址范围为FF3X::/32X表示任意合法的Scope)。

2.2  IPv6组播MAC地址

IPv6组播MAC地址以0x3333开头,低32位为IPv6组播地址的低32位,最终形成48比特的组播MAC地址。如5所示,IPv6组播地址FF1E::F30E:101所对应的组播MAC地址为33-33-F3-0E-01-01

图5 IPv6组播地址的MAC地址映射举例

 

2.3  IPv6组播协议

IPv6支持的组播协议包括MLDMulticast Listener Discovery Protocol,组播侦听者发现协议)MLD SnoopingMulticast Listener Discovery Snooping,组播侦听者发现协议窥探)IPv6 PIMIPv6 Protocol Independent MulticastIPv6协议无关组播)IPv6 MBGPIPv6 Multicast BGPIPv6组播BGP)等。

2.3.1  组播组管理协议

MLD源自IGMPInternet Group Management Protocol,互联网组管理协议)MLD有两个版本:MLDv1源自IGMPv2MLDv2源自IGMPv3

IGMP采用IP协议号为2的报文类型不同,MLD采用ICMPv6IP协议号为58)的报文类型,包括MLD查询报文(类型值130)、MLDv1报告报文(类型值131)、MLDv1离开报文(类型值132)和MLDv2报告报文(类型值143)。MLD协议与IGMP协议除报文格式不同外,协议行为完全相同。

2.3.2  组播路由协议

IPv6 PIMPIM除报文中IP地址结构不同外,其它协议行为基本相同,IPv6 PIM也支持如下四种模式:

·     IPv6 PIM-DMIPv6 Protocol Independent Multicast-Dense ModeIPv6协议无关组播—密集模式)

·     IPv6 PIM-SMIPv6 Protocol Independent Multicast-Sparse ModeIPv6协议无关组播—稀疏模式)

·     IPv6 PIM-SSMIPv6 Protocol Independent Multicast Source-Specific MulticastIPv6协议无关组播-指定源组播)

·     IPv6 BIDIR-PIMIPv6 Bidirectional Protocol Independent MulticastIPv6双向协议无关组播,简称IPv6双向PIM

IPv6 PIM发送链路本地范围的协议报文(包括PIM HelloJoin-PruneAssertBootstrapGraftGraft-AckState-refresh报文)时,报文的源IPv6地址使用发送接口的链路本地地址;IPv6 PIM发送全球范围的协议报文(包括RegisterRegister-StopC-RP Advertisement报文)时,报文的源IPv6地址使用发送接口的全球单播地址。

IPv6组播并不支持MSDP协议,如果需要接收来自其它IPv6 PIM域的组播数据,有以下两种实现方式:

·     通过其它方式(譬如广告等)直接获取其它IPv6 PIM域内的组播源地址,使用IPv6 PIM-SSM发起指定源组的加入。

·     使用嵌入式RP机制,通过嵌入RP地址的IPv6组播地址来获取其它IPv6 PIM域内的RP地址,向其它域内的RP发起组加入。

对于域间IPv6组播路由信息的传递,则可以使用IPv6MBGP协议,其与IPv4MBGP协议也基本相同。

2.3.3  二层组播协议

1. MLD Snooping

MLD SnoopingIGMP Snooping协议基本相同。

2. IPv6 PIM Snooping

IPv6 PIM SnoopingPIM Snooping协议基本相同。

3. 组播VLAN

组播VLAN,对于IPv4组播和IPv6组播,处理原理相同。

参考文献

·     RFC 4291IP Version 6 Addressing Architecture

·     RFC 3306Unicast-Prefix-based IPv6 Multicast Addresses

·     RFC 3956Embedding the Rendezvous Point (RP) Address in an IPv6 Multicast Address

联系我们 联系我们
联系我们
回到顶部 回到顶部