IPv6多播地址基礎知識
IPv6多播地址識別多個接口。使用適當的多播路由拓撲,將向多播地址發送的數據包發送給該地址識別的所有接口。
IPv6多播地址有 1111 1111 的格式前綴 (FP)。IPv6 地址很容易區分為多播地址,因為它總是以 FF 開始。多播地址不能被用作源地址。
除了 FP 以外,多播地址還包括其他結構,以便標識它們的標志、作用域和多播組,如下圖所示。
多播地址中的字段如下所示:
標志
“標志”字段表示在IPv6多播地址上設置的標志。該字段的大小為 4 位。從 RFC 2373 起,定義的唯一標志是 Transient (T) 標志。T 標志使用“標志”字段的低位比特。當設置為 0 時,T 標志表示該多播地址是由 Internet 號碼指派機構 (IANA) ***指派的(著名)多播地址。當設置為 1 時,T 標志表示該多播地址是瞬態(非***指派)多播地址。
范圍
作用域字段表示進行多播通訊的 IPv6 網絡的作用域。該字段的大小為 4 位。除了多播路由協議提供的信息之外,路由器使用多播作用域來確定是否可以轉發多播通訊。
以下作用域在 RFC 2373 中定義:
作用域字段值 | 范圍 |
1 | 節點本地 |
2 | 鏈路本地 |
5 | 站點本地 |
8 | 組織本地 |
E | 全局 |
例如,使用多播地址 FF02::2 的通訊具有鏈路本地作用域。IPv6 路由器永遠不會將此通訊轉發到本地鏈路以外。
組ID
“組ID”字段標識多播組,并且在作用域中是唯一的。該字段的大小為 112 位。***指派的組 ID 獨立于作用域。瞬態組 ID 僅與特定的作用域有關。從 FF01::到 FF0F::的多播地址是保留的已知地址。
為了識別用于節點本地和鏈路本地作用域的所有節點,定義下列多播地址:
FF01::1(節點本地作用域所有節點地址)
FF02::1(鏈路本地作用域所有節點地址)
為了識別用于節點本地、鏈路本地和站點本地作用域的所有路由器,定義下列多播地址:
FF01::2(節點本地作用域所有路由器地址)
FF02::2(鏈路本地作用域所有路由器地址)
FF05::2(站點本地作用域所有路由器地址)
在“組ID”中使用 112 位,就可能有 2 的 112 次方個組ID。但是,因為 IPv6多播地址被映射到以太網多播 MAC 地址,所以 RFC 2373 建議從 IPv6多播地址的低位 32 位指派“組 ID”,并將剩余的原始組 ID 位設置為 0。通過在組 ID 中只使用低位 32 位,每個組 ID 映射到唯一的以太網多播 MAC 地址。
請求節點地址
請求節點地址有利于在地址解析過程中實現有效的網絡節點查詢。在 IPv4 中,ARP 請求幀被發送到 MAC 層次的廣播,擾亂了網絡段上的所有節點,包括不運行 IPv4 的節點。IPv6 使用“鄰居請求”消息執行地址解析。但是,沒有使用本地鏈路作用域所有節點地址作為“鄰居請求”消息目標,因為這樣可能擾亂本地鏈路上的所有 IPv6 節點,而是使用請求節點多播地址。請求節點多播地址由前綴 FF02::1:FF00:0/104 和被解析的 IPv6 地址的*** 24 位地址組成。
例如,對于使用 FE80::2AA:FF:FE28:9C*** 鏈路本地 IPv6 地址的節點,相應的請求節點地址是 FF02::1:FF28:9C***。要將 FE80::2AA:FF:FE28:9C*** 地址解析為它的鏈路層地址,節點將發送“鄰居請求”消息給 FF02::1:FF28:9C*** 請求節點地址。使用 FE80::2AA:FF:FE28:9C*** 地址的節點,將偵聽請求節點地址的多播通訊,因為對應于某一物理網絡適配器的接口,已經和網絡適配器一起注冊了相應的多播地址。
使用請求節點多播地址的結果是,地址解析(通常發生在鏈路上)不需要使用擾亂所有網絡節點的機制。事實上,在地址解析過程中很少有節點被擾亂。在實踐中,因為以太網 MAC 地址、IPv6 接口 ID 和請求節點地址之間的關系,所以請求節點地址扮演偽單播地址的角色,以便實現非常有效的地址解析。