关键词:IPv6,组播,MLD,PIM,Embedded RP,SSM
摘 要:本文介绍了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组播地址之前,先简单回顾一下IPv6的地址结构:IPv6地址的长度为128比特,由使用冒号分隔的八节16比特的十六进制数表示,例如:FEDC:BA98:7654:3210:FEDC:BA98:7654:3210。
IPv6组播地址用来标识一组接口,一般这些接口属于不同的节点。一个节点可能属于0到多个组播组。发往组播地址的报文被组播地址标识的所有接口接收。
图1 IPv6组播地址格式
IPv6组播地址的格式如图1所示,其中各字段的含义如下:
(1) 0xFF:最高8比特为11111111,标识此地址为组播地址。
(2) Flags:4比特。如图2所示,Flags字段中各位的取值如下:
图2 Flags字段格式
l 最高位为保留位,必须为0。
l R位取0表示非内嵌RP的组播地址;取1则表示内嵌RP的组播地址,此时P、T位也必须置1。
l P位取0表示非基于单播前缀的组播地址;取1则表示基于单播前缀的组播地址,此时T位也必须置1。
l T位取0表示永久分配组播地址;取1则表示非永久分配的组播地址。
(3) Scope:4比特。用来标识此组播组的应用范围,其取值及含义如表1所示。
表1 Scope字段的取值及其含义
含义 | |
0、3、F | 保留(reserved) |
1 | 接口本地范围(interface-local scope) |
2 | 链路本地范围(link-local scope) |
4 | 管理本地范围(admin-local scope) |
5 | 站点本地范围(site-local scope) |
6、7、9~D | 未分配(unassigned) |
8 | 机构本地范围(organization-local scope) |
E | 全球范围(global scope) |
(4) Group ID:112比特,组播组标识号。用来在由Scope字段所指定的范围内唯一标识组播组,该标识可能是永久分配的或临时的,这由Flags字段的T位决定。
根据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代表0~F的任意一个十六进制数。
RFC 3306中规定了一种动态分配IPv6组播地址的方式——基于单播前缀的IPv6组播地址。这种IPv6组播地址中包含了其组播源网络的单播地址前缀,通过这种方式分配全局唯一的组播地址。
图3 基于单播前缀的IPv6组播地址格式
基于单播前缀的IPv6组播地址的格式如图3所示,其中各字段的含义如下:
(1) Flags字段的R位置0,P、T位则分别置1,表示基于单播前缀的组播地址。
(2) Reserved:8比特。保留字段,必须为0。
(3) Plen:8比特。表示网络前缀的有效长度(单位为比特)。
(4) Network prefix:64比特。表示该组播地址所属子网的单播前缀,有效长度由Plen字段指定。
(5) Group ID:缩短为32比特,含义不变。
& 说明:
其它字段的介绍请参见“2.1.1 IPv6组播地址格式”一节。
例如:单播前缀为3FFE:FFFF:1::/48的网络分配基于单播前缀的组播地址为FF3x:30:3FFE:FFFF:1::/96(x表示任意合法的Scope)。
嵌入式RP(Embedded RP)是IPv6 PIM中特有的RP发现机制,该机制使用内嵌RP地址的IPv6组播地址,使得组播路由器可以直接从该地址中解析出RP的地址。
图4 内嵌RP地址的IPv6组播地址格式
如图4所示,内嵌RP地址的IPv6组播地址使用基于单播前缀的IPv6组播地址格式,其中各字段的含义如下:
(1) Flags字段的R、P和T位均置1,表示内嵌RP地址的组播地址。
(2) Reserved:4比特。保留字段,必须为0。
(3) RIID:4比特。表示RP地址的接口ID。
(4) Plen:8比特。表示RP地址前缀的有效长度(单位为比特)。
(5) Network prefix:64比特。表示RP地址前缀,有效长度由Plen字段指定。
(6) Group ID:缩短为32比特,含义不变。
& 说明:
其它字段的介绍请参见“2.1.1 IPv6组播地址格式”一节。
内嵌于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计算举例
假设网络管理员想在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表示任意合法的Scope,y代表1~F的任意一个十六进制数。
IPv6 SSM组播地址也使用基于单播前缀的IPv6组播地址格式,其中的Plen字段和Network prefix字段均取0。按照这个规定,IPv6 SSM组播地址范围为FF3x::/32(x表示任意合法的Scope)。
IPv6组播MAC地址以0x3333开头,低32位为IPv6组播地址的低32位,最终形成48比特的组播MAC地址。如图6所示,IPv6组播地址FF1E::F30E:101所对应的组播MAC地址为33-33-F3-0E-01-01。
图6 IPv6组播地址的MAC地址映射举例
IPv6支持的组播协议包括MLD、MLD Snooping、IPv6 PIM和IPv6 MBGP等。
MLD协议源自IGMP协议——MLDv1对应于IGMPv2,MLDv2对应于IGMPv3。与IGMP协议采用IP协议号为2的报文类型不同,MLD协议采用ICMPv6(IP协议号为58)的报文类型,包括MLD查询报文(类型值130)、MLDv1报告报文(类型值131)、MLDv1离开报文(类型值132)和MLDv2报告报文(类型值143)。MLD协议与IGMP协议除报文格式不同外,协议行为完全相同。
同样地,MLD Snooping与IGMP Snooping协议也基本相同。
IPv6 PIM协议与IPv4 PIM协议除报文中IP地址结构不同外,其它协议行为基本相同,IPv6 PIM也支持SM、DM和SSM这三种模式。
IPv6 PIM发送链路本地范围的协议报文(包括PIM Hello、Join-Prune、Assert、Bootstrap、Graft、Graft-Ack和State-refresh报文)时,报文的源IPv6地址使用发送接口的链路本地地址;IPv6 PIM发送全球范围的协议报文(包括Register、Register-Stop和C-RP Advertisement报文)时,报文的源IPv6地址使用发送接口的全球单播地址。
IPv6组播并不支持MSDP协议,如果需要接收来自其它IPv6 PIM域的组播数据,有以下两种实现方式:
l 通过其它方式(譬如广告等)直接获取其它IPv6 PIM域内的组播源地址,使用IPv6 PIM-SSM发起指定源组的加入;
l 使用嵌入式RP机制,通过嵌入RP地址的IPv6组播地址来获取其它IPv6 PIM域内的RP地址,向其它域内的RP发起组加入。
对于域间IPv6组播路由信息的传递,则可以使用IPv6的MBGP协议,其与IPv4的MBGP协议也基本相同。
l RFC 4291:IP Version 6 Addressing Architecture
l RFC 3306:Unicast-Prefix-based IPv6 Multicast Addresses
l RFC 3956:Embedding the Rendezvous Point (RP) Address in an IPv6 Multicast Address
Copyright ©2008 杭州华三通信技术有限公司 版权所有,保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。
本文档中的信息可能变动,恕不另行通知。