初識IPv6 有狀態、無狀態地址相關協議

本文主要介紹IPv6全局單播地址(Global Address)的獲取方式及其相關的協議,DHCPv6協議和RA、RS報文(鄰居發現協議)。

1、全局單播地址類型

IPv6地址中分爲本地鏈路地址(Link-Local Address)與全局單播地址(Global Address)。
本地鏈路地址根據mac等信息通過指定算法得到,不需要從路由器獲取。以fe80:開頭
全局單播地址從需要和路由器進行協商獲取,可以與公網通信。

如下圖中有三個IPv6全局單播地址地址,其中兩個是無狀態,一個有狀態。一個本地鏈路地址。在這裏插入圖片描述

全局單播地址可通過手動或自動方式配置,其中自動方式分爲“有狀態”和“無狀態”。

爲了避免混淆,在此解釋下有狀態、無狀態到底是什麼意思:首先,請明確一點,有狀態、無狀態僅針對於IPv6地址分配方式,並不包含其他參數。

  • 有狀態:可控、可管理。在網絡中存在一個IP地址管理者,它能夠識別客戶端,根據不同的客戶端,分配對應的IPv6地址,客戶端與服務端之間需要維護IP地址的租期及續約。目前實現這種效果的,就是DHCPv6協議,IP地址管理者就是DHCPv6 Server

  • 無狀態:不可控、難管理。在網絡中只有網關,沒有IP地址管理者。因此無人去識別客戶端,每個客戶端根據網關發送的相同的RA報文內容,自行配置IPv6地址

在這種情況下,IPv6相關網絡配置具有三種方式。

  • 無狀態(Stateless):通過鄰居管理協議RA報文,從路由公告中配置IPv6地址。RA報文中會攜帶前綴等信息。同時IPv6DNS等信息也從RA報文中獲取。
  • 有狀態(Stateful DHCPv6):通過DHCPv6協議獲取IPv6相關信息。包括IP地址及DNS等信息。
  • 無狀態DHCPv6(Stateless DHCPv6):這種介於上面兩種形式中間,IP地址從RA報文中計算得到,而DNS信息,通過DHCPv6協議獲取。

而在使用過程中,可以衍生出一種自動配置模式,即通過RA報文攜帶的信息,來確定IPv6信息該怎麼獲取。
那麼我們簡單需要理解什麼是RA報文。

2、RA、RS報文

簡介

NDP(Neighbor Discovery Protocol,鄰居發現協議)是IPv6的基礎協議,它組合了IPv4中的ARP、ICMP路由器發現和ICMP重定向等協議,並對它們作了改進。作爲IPv6的基礎性協議,NDP還提供了前綴發現、鄰居不可達檢測、重複地址監測、地址自動配置等功能。
NDP定義了5種ICMPv6報文類型,包括RS、RA、NS、NA和Redirect報文。

NS、NA簡單來說就是鄰居設備之間互通信息,完成IPv6地址到鏈路層地址的解析,然後通過解析後得到的鏈路層地址和IPv6等地址信息來建立相應的鄰居緩存表項。

而RS、RA報文用於路由器發現

路由器發現是指主機定位本地鏈路上的路由器和確定其配置信息的過程,主要包含以下3方面內容:

  • 路由器發現(Router Discovery):主機發現鄰居路由器及選擇某一個路由器作爲默認網關的過程。
  • 前綴發現(Prefix Discovery):主機發現本地鏈路上的一組IPv6前綴,生成前綴列表。該列表用於主機的地址自動配置和on-link判斷。
  • 參數發現(Parameter Discovery):主機發現相關操作參數的過程,如MTU、報文的默認跳數限制、地址分配方式等信息。

全球單播地址的配置步驟如下:
1)客戶端在配置好鏈路本地地址後,發送RS報文,請求路由器的前綴信息。
2)路由器收到RS報文後,發送單播RA報文,其中攜帶M、O flag用於指示進行何種類型配置,A flag用於無狀態地址自動配置的前綴信息。同時路由器也會週期性地發送組播RA報文。
3)客戶端根據RA報文攜帶A flag,獲取網關信息。如果是自動配置或者是無狀態,則根據M、O flag,選擇IPv6地址及DNS的獲取方式。

三個flag:M O A

如下圖,可以看到客戶端發送RS報文後,接收到路由器的RA報文
在這裏插入圖片描述

  • M flag:Managed address
    configuration字段,爲1通過DHCPv6獲取IP地址,爲0則是通過RA報文獲取地址。
  • O flag:Other configuration字段,爲1通過DHCPv6獲取DNS等其他配置,爲0通過RA報文獲取其他配置。

雖然M O flag具有四種組合,但實際中M=0,0=0是一直錯誤的配置,因爲當IP通過DHCPv6
Server獲取時,相應的DNS等其他配置信息也應從DHCPv6 Server獲取以保證業務的連通性。

  • A flag:Autonomous address-configuration
    flag(A)字段,表示是否可以使用RA報文前綴信息配置無狀態地址。

通過前綴,可以獲取子網掩碼長度,網關,以及計算出IP地址,圖中例子,前綴信息如下:

 ICMPv6 Option (Prefix information : 2409:8a20:c1a:ce70::/64)

如果是客戶端採用自動配置,那麼則完全根據RA報文來決定如何獲取IPv6相關配置,當然,客戶端也可以無視RA報文,選擇自己想要的配置方式。(如上圖,RA報文配置爲無狀態DHCPv6模式,但是客戶端其實也可以通過DHCPv6來獲取有狀態地址,只要DHCPv6 Server支持即可)。

所以,有狀態及無狀態地址並不是完全互斥,他們可以同時存在,如下圖可以理解其流程:

圖片引用自:https://www.cnblogs.com/fzxiaomange/p/ipv6-autoconf-stateless-stateful.html
在這裏插入圖片描述

3、DHCPv6協議

和IPv4的bootp(DHCPv4)作用類似,DHCPv6基於UDP,通過與服務器協商獲取IP地址及DNS等信息。

DHCPv6報文類型:
目前DHCPv6定義瞭如下十三種類型報文,DHCPv6服務器和DHCPv6客戶端之間通過這十三種類型的報文進行通信。

DHCPv6和DHCPv4報文對比,比較好理解,不做贅述:
在這裏插入圖片描述
交互例子如下,這是我在客戶端已經獲取到IPv6地址的情況下,重新進行IPv6有狀態連接:
第一次是客戶端發送confirm來確認已經獲取的IPv6地址是否適用於當前鏈路;DHCPv6 Server通過reply迴應。
第二次是發送request,請求IP地址及DNS等配置,可以看到DHCPv6 Server通過reply迴應了IP地址及DNS。
在這裏插入圖片描述

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