關鍵詞: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 杭州華三通信技術有限公司 版權所有,保留一切權利。
非經本公司書麵許可,任何單位和個人不得擅自摘抄、複製本文檔內容的部分或全部,並不得以任何形式傳播。
本文檔中的信息可能變動,恕不另行通知。
