IPv6知識概述 - ND協議

IPv6知識概述 - ND協議

ND協議功能概述

ND(Neighbor Discovery,鄰居發現)協議是IPv6的一個關鍵協議,它綜合了IPv4中的ARP,ICMP路由發現和ICMP重定向等協議,並對他們做了改進。作爲IPv6的基礎性協議,ND協議還提供了前綴發現,鄰居不可達檢測,重複地址檢測,地址自動配置等功能,具體如下所示:
在這裏插入圖片描述

1)地址解析
地址解析是一種確定目的節點的鏈路層地址的方法。ND中的地址解析功能不僅替代了原IPv4中的ARP協議,同時還用鄰居不可達檢測(NUD)方法來維護鄰居節點之間的可達性狀態信息。

2)無狀態地址自動配置
ND協議中特有的地址自動配置機制,包括一系列相關功能,如路由器發現,接口ID自動生成,重複地址檢測等。通過無狀態自動配置機制,鏈路上的節點可以自動獲得IPv6全球單播地址。

  • 路由器發現
    路由器在 與其相連的鏈路上發佈網絡參數等信息,主機捕獲次信息後,可以獲得全球單播IPv6地址前綴、默認路由、鏈路參數(鏈路MTU)等信息。

  • 接口ID自動生成
    主機根據EUI-64規範或其他方式爲藉口自動生成藉口標識符。

  • 重複地址檢測
    根據前綴信息生成IPv6地址或手動配置IPv6地址後,爲保證地址的唯一性,在這個地址可以使用之前,主機需要檢驗此IPv6地址是否已經被鏈路上的其他節點所使用。

  • 前綴重新編址
    當網絡前綴變化時,路由器再與其相連的鏈路上發佈新的網絡參數信息,主機捕獲這些信息,重新配置前綴,鏈路MTU等地址相關信息。

3)路由器重定向
當在本地鏈路上存在一個到達目的網絡的更好地路由器時,路由器需要通過節點來進行相應配置改變。

ND協議報文

ND協議定義了5種ICMPv6報文類型,如下表所示:

ICMPv6類型 消息名稱
Type = 133 RS(Router Solicitation,路由器請求)
Type = 134 RA(Router Advertisement,路由器公告)
Type = 135 NS(Neighbor Solicitation,鄰居請求)
Type = 136 RA(Neighbor Advertisement,鄰居公告)
Type = 137 Redirect(重定向報文)

NS/NA報文主要用於地址解析,RS/RA報文主要用於無狀態地址自動配置,Redirect報文用於路由器重定向。

地址解析

IPv6地址解析的優點

IPv6的地址解析過程包括兩部分:一部分解析了目的IP地址所對應的鏈路層地址;另一部分是鄰居可達性狀態的維護過程,即鄰居不可達檢測。 IPv6地址解析相對於IPv4的ARP解析,有以下優點:

  • 加強了地址解析協議與底層鏈路的獨立性
    對每一種鏈路層協議都使用相同的地址解析協議,無須再爲每一種鏈路層協議定義一個新的地址解析協議。

  • 增強了安全性
    ARP攻擊,ARP欺騙是IPv4中嚴重的安全問題。在第三層實現地址解析,可以利用三層標準的安全認證機制來防止這種ARP攻擊和ARP欺騙。

  • 減小了報文傳播範圍
    在IPv4中,ARP廣播必須氾濫到二層網絡中每臺主機。IPv6地址解析利用三層組播尋址限制了報文的傳播範圍,通過將地址解析請求僅發送到待解析地址所屬的被請求節點組播組,減小了報文傳播範圍,節省了網絡帶寬。

IPv6地址解析過程

在IPv6中,ND協議通過在節點間交互NS和NA報文完成IPv6地址到鏈路層地址的解析,解析後用得到的鏈路層地址和IPv6地址等信息來建立相應的鄰居緩存表項。其解析過程如下圖所示:
在這裏插入圖片描述

1)NodeA發送一個NS報文到鏈路上,目的IPv6地址爲NodeB對應的被請求節點組播地址(FF02::1:FF02:B),選項字段中攜帶了NodeA的鏈路層地址00E0-FC00-0001。
2)NodeB接收到該NS報文後,由於報文的目的地址FF02::1:FF01:B時NodeB的被請求節點組播地址,所以NodeB會處理該報文;同時,根據NS報文中的源地址和源鏈路層地址選項更新自己的鄰居緩存表項。
3)NodeB發送一個NA報文來應答NS,同時在消息的目標鏈路層地址選項中攜帶自己的鏈路層地址00E0-FC00-0002。
4)NodeA接收到NA報文後,根據報文中攜帶的NodeB鏈路層地址,創建一個到目標節點NodeB的鄰居緩存表項。
通過交互,NodeA和NodeB就獲得了對方的鏈路層地址,建立其到達對方的鄰居緩存表項,從而可以互相通信。
當一個節點的鏈路層地址發生改變時,以所有節點組播地址FF02::1爲目的地址發送NA報文,通知鏈路上的其他節點更新鄰居緩存表項。

鄰居不可達檢測(NUD)

NUD(Neighbor Unreachability Detection,鄰居不可達檢測)是節點確定鄰居可達性的過程,其檢測過程如下圖所示:
在這裏插入圖片描述
鄰居可達性是單向的,如果需要達到“雙向”可達,還需NodeB發送NS探測報文,NodeA給NodeB迴應S標誌置爲的NA報文。

地址解析交互報文

NS報文

NS報文是ICMPv6中類型爲135的報文,其結構如下圖所示:
在這裏插入圖片描述

其中各字段的含義如下:
1)Target Address:待解析的IPv6地址,16types。Target Address不能是組播地址,可以是鏈路本地地址、站點本地地址和全球單播地址。
2)Options:地址解析中只使用了鏈路層地址選項(Link-Layer Address Option),是發送NS報文節點的鏈路層地址。鏈路層地址選項的格式如下圖所示:
在這裏插入圖片描述
其中各字段含義如下:
1)Type:選項類型,在鏈路層地址選項中包括如下兩種:

  • Type=1,表明鏈路層地址爲Source Link-Layer Address(源鏈路層地址),在NS,RS,Redirect報文中使用。
  • Type=2,表明鏈路層地址爲Target Link-Layer Address(目標鏈路層地址),在NA,Redirect報文中使用。

2)Length:選項長度,以8bytes爲單位。
3)Link-Layer Address:鏈路層地址。長度可變,對於以太網爲6bytes。

NA報文

NA報文是ICMPv6中類型爲136的報文,其結構如下圖所示:
在這裏插入圖片描述
其中各字段的含義如下:
1)R:路由器標記(Router Flag)位,表示NA報文發送者的角色,置爲“1”表示發送者都是路由器,置爲“0”表示發送者爲主機。
2)S:請求標記(Solicited Flag)位,置爲“1”表示該NA報文是對NS報文的響應。
3)O:覆蓋標記(Override Flag)位,置爲“1”表示節點可以用NA報文中攜帶的目標鏈路層地址選項中的鏈路層地址來覆蓋原有的鄰居緩存表項。置爲“0”表示只有在鏈路層地址位置時,才能用目標鏈路層地址選項來更新鄰居緩存表項。
4)Target Address:待地址重複檢測或地址解析的IPv6地址。如果NA報文是響應NS報文的,則該字段直接複製NS報文中的Target Address。
5)Options:只能是Type值爲2的Target Link-Layer Address,是被解析節點的鏈路層地址。

無狀態地址自動配置

IPv6同時定義了無狀態與有狀態地址自動配置機制。有狀態地址自動使用DHCPv6協議來給主機動態分配IPv6地址,無狀態地址自動配置通過ND協議來實現。在無狀態自動配置中,主機通過接受鏈路上的路由器發出的RA消息,結合接口的標識符而生成一個全球單播地址。
去狀態地址自動配置有以下優點:
1)真正的即插即用。節點連接到沒有DHCP服務器的網絡時,無須手動配置地址等參數便可訪問網絡。
2)網絡遷移方便。當一個站點的網絡前綴發生變化,主機能夠方便地進行重新編址而不影響網絡連接。
3)地址配置方式選擇靈活。系統管理員可根據情況決定使用何種配置方式——有狀態,無狀態還是兩者兼容。

無狀態自動配置設計以下3種機制:路由器發現、DAD檢測和前綴重新編址。

路由器發現

在路由器通告報文RA中承載着路由器的相關信息,ND協議通告RS和RA的報文交互完成路由器發現,前綴發現和參數發現三大功能,協議交互主要有兩種情況:主機請求觸發路由器通告和路由器週期性發送路由器通告。

  • 主機請求觸發路由器通告
    當主機啓動時,會向本地鏈路範圍內所有的路由器發送RS報文,觸發鏈路上的路由器相應RA報文。主機接收到路由器發出的RA報文後,自動配置默認路由器,建立默認路由列表,前綴列表和設置其他的配置參數。
    爲了避免鏈路上有過多的RS報文,啓動時每個節點最多隻能發送3個RS報文。

  • 路由器週期性發送路由器通告

DAD檢測

DAD(Duplicate address Detection,重複地址檢測)是節點確定即將使用的地址是否在鏈路上唯一存在的過程。所有的IPv6單播地址,包括自動配置或手動配置的單播地址,在節點使用之前必須要通過重複地址檢測。
DAD是通過NS和NA報文實現的。DAD過程如下所示:
在這裏插入圖片描述

需要注意的是,IPv6節點對任播地址不進行DAD檢測,因爲任播地址可以被分配給多個接口使用。

前綴重新編址

前綴重新編址(Prefix Renumbering)允許網絡從以前的前綴平穩過渡到新的前綴,提供對用戶的網絡重新編址能力。路由器通告RA報文中的優先時間和有效時間參數來實現前綴重新編址。

無狀態地址自動配置過程

ND協議的無狀態自動配置包括兩個階段:鏈路本地地址的配置和全球單播地址的配置。
當一個接口啓用時,主機首先會根據本地前綴FE80::/64和EUI-64接口標識符,爲該接口生成一個本地鏈路地址。
對於主機上全球單播地址的配置步驟如下圖所示:
在這裏插入圖片描述
地址配置完成後,路由器可以啓動NUD檢測,週期性發送NS報文,探測該地址是否可達。

地址的狀態及生存週期

自動配置的IPv6地址在系統中有一個生存週期,在這個生存週期中,這個地址根據與優先時間和有效時間的關係,可以被劃分爲臨時(Tentative),優先(Preferred),反對(Deprecated)和無效(Invalid)4種狀態,如下圖所示:
在這裏插入圖片描述

地址自動配置交互報文

路由器請求報文(RS)

RS報文是ICMPv6中類型爲133的報文,其結構如下圖所示:
在這裏插入圖片描述

其中字段含義如下:
Options(選項)字段:只能是源鏈路層地址選項,表明該報文發送者的鏈路層地址,不過如果IPv6報頭的源地址爲未指定地址,則不能包括該選項。

路由器通告報文(RA)

RA報文是ICMPv6中類型爲134的報文,其結構如下圖所示:
在這裏插入圖片描述

其中字段含義如下:

字段 描述
Cur Hop Limit 跳數限制。協議規定默認IPv6中Hop Limit數值,若爲0,表示路由器不適用該字段。設備實現中該值可配置,默認爲64
M 管理地址配置標識(Managed Address Configuration)。M位爲0表示無狀態自動配置生成IPv6地址,如果M=1表示需要通過有狀態(DHCPv6)方式獲取IPv6地址。
O 其他有狀態配置標識(Other Stateful Configuration)。O位爲0表示除了IPv6地址以外的其他參數需要通過無狀態自動配置獲取,如果O=1表示除了IPv6地址以外的其它需要通過有狀態(DHCPv6)方式進行獲取。協議規定,若M標記置爲1,則O標記也應置爲1,否則無意義。
H 家鄉代理標識(Home Agent),移動IPv6中定義的字段。
Prf 默認路由器優先級(Default Router Preference)。
P 代理標識(Proxy)
Router Lifetime 與默認路由器關聯的生存期,以秒爲單位。最大值18.2小時。取0值的Lifetime指出路由器不是默認路由器並且不應當出現在默認路由器列表中,但RA報文的其他信息仍然有效。Router Lifetime僅適用於作爲默認路由器的路由器應用;對包括在其他消息字段或選項中的信息不適用。需要對它們的信息規定時間限制的選項有它們自己的生存期字段。
Reacheable Time 此時間以毫秒計,在收到可達性確認後節點假定該鄰居是可到達的。它由Neighbor Unreachability Detection算法使用。此值爲0意味着沒有(由此路由器)作出規定。
Retrans Timer 重發的Neighbor Solicitation消息間隔時間,以毫秒計。由地址解析和Neighbor Unreachability Detection算法使用。此值爲0意味着沒有(由此路由器)作出規定。
Options 選項字段,包含有源鏈路層地址選項,MTU選項,前綴信息選項,通過間隔選項,家鄉代理信息選項,路由信息選項等。

選項字段中個選項的含義如下:
1)源鏈路層地址選項:路由器發送RA報文的接口的鏈路層地址。
2)MTU選項:包含了在鏈路上運行的鏈路層協議所能支持的MTU最大值。
3)前綴信息選項(Prefix Information Option):用於地址自動配置的前綴信息,可包含多個。前綴信息選項在RFC2461中定義,用於表示地址前綴和有關地址自動配置的信息,值用於RA報文中;在其他的消息中,此選項應該被忽略。其格式如下圖所示:
在這裏插入圖片描述

其各字段的含義如下所示:

字段 描述
Type 選項類型,值爲3
Length 選項長度,以8bytes爲單位,值爲4
Prefix Length 前綴長度,值爲0-128
L 直連標記(on-link flag)。當取值爲1時,表示該前綴可以作爲on-link判斷;否則表示該前綴不用作on-link判斷,前綴本身也不包含on-link或on-off屬性,默認值爲1。
A 自動配置標記(Autonomous Address-configuration Flag)。當取值爲1時,表示該前綴用於無狀態地址配置;否則爲有狀態地址配置。默認值爲1。
R 路由器地址標記(Router Address Flag)。用於移動IPv6(RFC3775),當取值爲1時,表示Prefix字段不僅包含前綴信息,同時也包含了發送該RA報文的路由器地址。
Valid Lifetime 有效時間,表示該前綴產生的on-link地址處於有效狀態的時間(單位爲秒)。
Preferred Lifetime 優先時間,表示由該前綴通過無狀態地址自動配置產生的地址處於優先狀態的時間。
Prefix 前綴地址,長度爲16bytes。該字段和Prefix Length字段一起明確定義了一個IPv6地址前綴

4)路由信息選項(Route Information Option):用於主機生產默認路由。路由信息選項在RFC4191中定義,取代了原前綴信息選項的功能。接收RA報文的主機將選項中的信息添加到自己的貝蒂路由表中,以便在發送報文時做出更好地轉發決定,其個數如下圖所示:
在這裏插入圖片描述

其中各字段含義如下所示:

字段 描述
Type 選項類型,值爲24
Length 選項長度,以8bytes爲單位,根據Prefix Length的長度,可取1,2,3這3個值。
Prefix Length 前綴長度,表示對路由有意義的前綴位數,值爲0-128
Prf 默認路由器優先級(Default Router Preference)。
Route Lifetime 路由生命週期,表示用於路由信息選項的前綴處於有效狀態的時間,當RA中的Router Lifetime = 0時,Route Lifetime也應該爲0。
Prefix 前綴地址,表示有效的路由前綴,其長度由Prefix Length決定。

路由器重定向

待後續添加。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章