IPv6组播技术

2020-07-10 18:04:50 浏览数 (1)

概述

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

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

IPv6 组播技术实现

IPv6组播地址

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

IPv6组播地址格式

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

图1 IPv6组播地址格式

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

  • 0xFF:最高 8比特为 11111111,标识此地址为 IPv6组播地址。
  • Flags:4比特,该字段中各位的取值及含义如表 1所示。

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

取值及含义

0位

保留位,必须取0

R位

取 0表示非内嵌 RP的 IPv6 组播地址 ; 取 1表示内嵌 RP的 IPv6 组播地址(此时 P、T位也必须置 1)

P位

取 0表示非基于单播前缀的 IPv6 组播地址; 取 1表示基于单播前缀的 IPv6 组播地址(此时 T位也必须置 1)

T位

取 0表示由 IANA 永久分配的 IPv6 组播地址 ;取 1表示非永久分配的 IPv6 组播地址

  • Scope:4比特。用来标识该 IPv6组播组的应用范围,其取值及含义如表 2所示。表2 Scope字段的取值及其含义
  • Group ID:112 比特,IPv6组播组标识号。用来在由 Scope字段所指定的范围内唯一标识 IPv6 组播组,该标识可能是永久分配的或临时的,这由 Flags字段的 T位决定。
预留的 IPv6组播地址

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

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

说明:表3中的 X代表 0~F的任意一个十六进制数

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

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

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

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

  • Flags:R位置 0,P、T位则分别置 1,表示基于单播前缀的组播地址。
  • Scope:如 2.1.1 图 1表 2所示。
  • Reserved:8比特。保留字段,必须为 0。
  • Plen:8比特。表示网络前缀的有效长度(单位为比特)。
  • Network prefix:64比特。表示该组播地址所属子网的单播前缀,有效长度由 Plen字段指定。
  • Group ID:32比特。表示 IPv6组播组标识号。

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

内嵌 RP地址的 IPv6组播地址

1.地址格式

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

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

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

  • Flags:R、P和 T位均置 1,表示内嵌 RP地址的组播地址。
  • Scope:如 2.1.1 图 1表 2所示。
  • Reserved:4比特。保留字段,必须为 0。
  • RIID:4比特。表示 RP地址的接口 ID。
  • Plen:8比特。表示 RP地址前缀的有效长度(单位为比特)。
  • Network prefix:64比特。表示 RP地址前缀,有效长度由 Plen字段指定。
  • Group ID:32比特。表示 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,如图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表示任意合法的 Scope,Y代表 1~F的任意一个十六进制数。

IPv6 SSM组播地址

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

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地址映射举例

IPv6组播协议

IPv6支持的组播协议包括 MLD(Multicast Listener Discovery Protocol,组播侦听者发现协议)、 MLD Snooping(Multicast Listener Discovery Snooping,组播侦听者发现协议窥探)、IPv6 PIM(IPv6 Protocol Independent Multicast,IPv6协议无关组播)和 IPv6 MBGP(IPv6 Multicast BGP,IPv6 组播 BGP)等。

组播组管理协议

MLD源自 IGMP(Internet Group Management Protocol,互联网组管理协议),MLD有两个版本:MLDv1源自 IGMPv2,MLDv2源自 IGMPv3。

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

组播路由协议

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

  • IPv6 PIM-DM(IPv6 Protocol Independent Multicast-Dense Mode,IPv6协议无关组播—密 集模式) FF1E
  • IPv6 PIM-SM(IPv6 Protocol Independent Multicast-Sparse Mode,IPv6协议无关组播—稀 疏模式)
  • IPv6 PIM-SSM(IPv6 Protocol Independent Multicast Source-Specific Multicast,IPv6协议 无关组播-指定源组播)
  • IPv6 BIDIR-PIM(IPv6 Bidirectional Protocol Independent Multicast,IPv6双向协议无关组 播,简称 IPv6双向 PIM)

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域的组播数据,有以下两种实现方式:

  • 通过其它方式(譬如广告等)直接获取其它 IPv6 PIM域内的组播源地址,使用 IPv6 PIM-SSM 发起指定源组的加入。
  • 使用嵌入式 RP机制,通过嵌入 RP地址的 IPv6组播地址来获取其它 IPv6 PIM域内的 RP地 址,向其它域内的 RP发起组加入。对于域间 IPv6组播路由信息的传递,则可以使用 IPv6 的 MBGP 协议,其与 IPv4的 MBGP协议也基本相同。
二层组播协议

1. MLD Snooping

MLD Snooping与 IGMP Snooping协议基本相同。

2.IPv6 PIM Snooping

IPv6 PIM Snooping与 PIM Snooping协议基本相同。

3. 组播 VLAN

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

0 人点赞