天天看點

IPv6位址自動配置中的有狀态(stateful)和無狀态(stateless)的差別

一個典型的IPv6主機單點傳播位址由3部分組成:全局路由字首、子網ID和接口ID(64位)。全局 路由字首用來識别配置設定給一個站點的一個位址範圍。子網ID也稱為子網字首,一個子網ID與 一個連結相關聯,以識别站點中某個連結。接口ID用來識别連結上的某個接口,在該連結上是惟一的。

在無狀态位址自動配置方式下,接口ID通常可以通過EUI64轉換算法得到。接口ID由48位MAC位址轉換得到。EUI64是IEEE定義的一種基于64位的擴充惟一标示符。他是IEEE指定的公共24位制造商标示和制造商為産品指定的40位值的組合。在IPv6位址中,接口ID的長度為64位,他由48位的以太網MAC位址轉換得到。

使用EUI 64轉換算法得到的接口ID是随機器硬體固定的,也是全局惟一的。該算法實作簡單,是一種重要的接口ID自動生成算法,目前Windows,Linux作業系統在對主機生成接口ID時,均使用EUI 64轉換算法。作為對該算法的一種改進,RFC3041又引入了一種随機位址機制,他包含了用一組随機數字代替由MAC位址轉換的接口ID。該位址具有一定的生存周期,随着生存周期的結束,該位址會自動更換,較好地解決了節點的Internet通路活動被跟蹤的問題。

在實際應用中,我們不需要關心EUI64轉換算法,我們隻需要知道實際使用的時候的資料可以在哪裡看到即可。

下圖是一個使用這個腳本手動配置的IPv6 in IPv4 隧道

IPv6位址自動配置中的有狀态(stateful)和無狀态(stateless)的差別

其中黃色馬克标記的部分就一個link local位址。

常見的使用isatapd自動配置的isatap隧道位址,fe80是鍊路本地位址的固定字首,其他的為為從MAC位址轉換得到的接口ID。均展現在ipv6的internet位址中

IPv6位址自動配置中的有狀态(stateful)和無狀态(stateless)的差別

同樣的,在Windows中,使用無狀态自動配置的位址也是按照這個規則,其中的Temporary IPv6 address 就是上面提到的RFC3041裡面的有壽命的随機位址。

IPv6位址自動配置中的有狀态(stateful)和無狀态(stateless)的差別

在IPV6的自動配置中,分為兩種技術

一種是傳統的有狀态(stateful),典型代表就是與IPv4時代相對應的DHCPv6,

一種是IPv6的無狀态(stateless)自動配置,典型代表是Radvd。這是IPv6協定的一個突出特點:支援網絡節點的位址自動配置.

在無狀态位址自動配置方式下,網絡接口接收路由器宣告的全局位址字首,再結合接口ID得到一個可聚集全局單點傳播位址。在有狀态位址自動配置的方式下,主要采用動态主機配置協定(DHCP),需要配備專門的DHCP伺服器,網絡接口通過客戶機/伺服器模式從DHCP伺服器處得到位址配置資訊。

具體來說,以RADVD為代表的無狀态自動配置不需要消耗很多機器資源,也不像傳統DHCP一樣需要維護一個本地資料庫來維護位址配置設定狀态,他隻是進行廣播字首位址,用戶端收到這種廣播後再自己使用EUI64算法生成全球唯一的IPv6位址,進行自我配置。

是以,RADVD不能進行NTP/DNS等其他傳統DHCP伺服器所能進行的配置。甚至嚴格的說,她隻進行路由廣播,位址都是用戶端自己根據算法和規範在配置。

DPCHv6就完全相反,位址池的計算,管理全部是伺服器端在做,用戶端隻是簡單的從伺服器端取得伺服器端已經計算好的位址和其他設定應用到自己身上。

是以,為了相容EUI64算法,Radvd所能進行管理的位址段要比DHCPv6小很多,如果你希望這種無序的自動化管理,并且隻是配位址,你可以使用Radvd,反過來,你的想重用一個/64的isatap隧道給自己家的裝置都配置設定IPv6位址什麼的,你如果希望為用戶端指定更加詳細的DNS設定,NTP設定等等,你可以考慮DHCPv6+Radvd(stateless),或者一種細緻的位址管理,您應該選擇DHCPv6+Radvd(statefull)

非計算機網絡專業的一點對IPv6的粗淺之見,歡迎指正