IPv6组播技术白皮书

关键词:IPv6,组播,MLDPIMEmbedded RPSSM

    要:本文介绍了IPv6组播地址和IPv6组播协议等技术要点。

缩略语:

缩略语

英文全名

中文解释

DM

Dense Mode

密集模式

ICMP

Internet Control Message Protocol

互联网控制报文协议

IGMP

Internet Group Management Protocol

互联网组管理协议

MBGP

Multicast Border Gateway Protocol

组播边界网关协议

MLD

Multicast Listener Discovery

组播侦听者发现协议

MLD Snooping

Multicast Listener Discovery Snooping

组播侦听者发现协议窥探

MSDP

Multicast Source Discovery Protocol

组播源发现协议

PIM

Protocol Independent Multicast

协议无关组播

RP

Rendezvous Point

汇集点

SM

Sparse Mode

稀疏模式

SSM

Source-Specific Multicast

指定信源组播

 



概述

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

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

IPv6组播技术实现

2.1  IPv6组播地址

在介绍IPv6组播地址之前,先简单回顾一下IPv6的地址结构:IPv6地址的长度为128比特,由使用冒号分隔的八节16比特的十六进制数表示,例如:FEDC:BA98:7654:3210:FEDC:BA98:7654:3210

2.1.1  IPv6组播地址格式

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

图1 IPv6组播地址格式

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

(1)        0xFF:最高8比特为11111111,标识此地址为组播地址。

(2)        Flags4比特。如2所示,Flags字段中各位的取值如下:

图2 Flags字段格式

l              最高位为保留位,必须为0

l              R位取0表示非内嵌RP的组播地址;取1则表示内嵌RP的组播地址,此时PT位也必须置1

l              P位取0表示非基于单播前缀的组播地址;取1则表示基于单播前缀的组播地址,此时T位也必须置1

l              T位取0表示永久分配组播地址;取1则表示非永久分配的组播地址。

(3)        Scope4比特。用来标识此组播组的应用范围,其取值及含义如1所示。

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

取值

含义

03F

保留(reserved

1

接口本地范围(interface-local scope

2

链路本地范围(link-local scope

4

管理本地范围(admin-local scope

5

站点本地范围(site-local scope

679D

未分配(unassigned

8

机构本地范围(organization-local scope

E

全球范围(global scope

 

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

2.1.2  永久分配的IPv6组播地址

根据RFC 4291,目前已被永久分配的IPv6组播地址如2所示。

表2 永久分配的IPv6组播地址

名称

地址

说明

保留组播地址

l      FF0x::

不能分配给任何组播组

所有节点组播地址

l      FF01::1(节点本地)

l      FF02::1(链路本地)

-

所有路由器组播地址

l      FF01::2(节点本地)

l      FF02::2(链路本地)

l      FF05::2(站点本地)

-

被请求节点组播地址

l      FF02::1:FFxx:xxxx

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

 

&  说明:

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

 

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

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

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

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

(1)        Flags字段的R位置0PT位则分别置1,表示基于单播前缀的组播地址。

(2)        Reserved8比特。保留字段,必须为0

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

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

(5)        Group ID:缩短为32比特,含义不变。

&  说明:

其它字段的介绍请参见“2.1.1  IPv6组播地址格式”一节。

 

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

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

1. 地址格式

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

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

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

(1)        Flags字段的RPT位均置1,表示内嵌RP地址的组播地址。

(2)        Reserved4比特。保留字段,必须为0

(3)        RIID4比特。表示RP地址的接口ID

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

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

(6)        Group ID:缩短为32比特,含义不变。

&  说明:

其它字段的介绍请参见“2.1.1  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位与RIID字段同为0xF,其余位均为0,如5所示。

图5 嵌入式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 SSM组播地址也使用基于单播前缀的IPv6组播地址格式,其中的Plen字段和Network prefix字段均取0。按照这个规定,IPv6 SSM组播地址范围为FF3x::/32x表示任意合法的Scope)。

2.1.6  IPv6组播MAC地址

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

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

2.2  IPv6组播协议

IPv6支持的组播协议包括MLDMLD SnoopingIPv6 PIMIPv6 MBGP等。

2.2.1  组播组管理协议

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

同样地,MLD SnoopingIGMP Snooping协议也基本相同。

2.2.2  组播路由协议

IPv6 PIM协议与IPv4 PIM协议除报文中IP地址结构不同外,其它协议行为基本相同,IPv6 PIM也支持SMDMSSM这三种模式。

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

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

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

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

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

参考文献

l              RFC 4291IP Version 6 Addressing Architecture

l              RFC 3306Unicast-Prefix-based IPv6 Multicast Addresses

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

 

Copyright ©2008 杭州华三通信技术有限公司 版权所有,保留一切权利。

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

本文档中的信息可能变动,恕不另行通知。

附件下载

联系我们