通過IPv6網絡地址完成“即插即用”
在前文中我們對IPv6的一些特點做了具體的介紹,大家肯定對這些有一些印象。那么今天我們主要對IPv6網絡地址的自動配置進行一個說明。也就是它的即插即用功能。這個方便使用的功能是如何實現的呢?這也是通過IPv6網絡地址來完成的。
IPv6如何實現“即插即用”?
“即插即用”是指無需任何人工干預,就可以將一個節點插入IPv6網絡并在網絡中啟動,IPv6網絡地址使用了兩種不同的機制來支持即插即用網絡連接:啟動協議(BOOTstrap Protocol,BOOTP)和動態主機配置協議(DHCP)。這兩種機制允許IP節點從特殊的BOOTP服務器或DHCP服務器獲取配置信息。這些協議采用“狀態自動配置”(Stateful Autoconfiguration),即服務器必須保持每個節點的狀態信息,并管理這些保存的信息。
狀態自動配置的問題在于,用戶必須保持和管理特殊的自動配置服務器以便管理所有“狀態”,即所容許的連接及當前連接的相關信息。對于有足夠資源來建立和保持配置服務器的機構,該系統可以接受;但是對于沒有這些資源的小型機構,工作情形較差。
除了狀態自動配置,IPv6還提供什么自動配置服務?
除了狀態自動配置,IPv6網絡地址還采用了一種被稱為無狀態自動配置(Stateless Auto Configuration)的自動配置服務。RFC2462中描述了IPv6的無狀態自動配置。無狀態自動配置要求本地鏈路支持組播,而且網絡接口能夠發送和接收組播包。無狀態自動配置過程要求節點采用如下步驟:
首先,進行自動配置的節點必須確定自己的鏈路本地地址;
然后,必須驗證該鏈路本地地址在鏈路上的唯一性;
最后,節點必須確定需要配置的信息。
該信息可能是節點的IP地址,或者是其他配置信息,或者兩者皆有。如果需要IP地址,節點必須確定是使用無狀態自動配置過程還是使用狀態自動配置過程來獲得。
具體地說,在無狀態自動配置過程中,主機首先通過將它的網卡MAC地址附加在鏈路本地地址前綴1111111010之后,產生一個鏈路本地單播地址(IEEE已經將網卡MAC地址由48位改為了64位。如果主機采用的網卡的MAC地址依然是48位,那么IPv6網絡地址通過網卡驅動程序會根據IEEE的一個公式將48位MAC地址轉換為64位MAC地址)。接著主機向該地址發出一個鄰居發現請求(Neighbor Discovery Request),以驗證地址的唯一性。
如果請求沒有得到響應,則表明主機自我配置的鏈路本地單播地址是唯一的。否則,主機將使用一個隨機產生的接口ID 組成一個新的鏈路本地單播地址。然后,以該地址為源地址,主機向本地鏈路中所有路由器多點傳送一個路由器請求(Router Solicitation)來請求配置信息,路由器以一個包含一個可聚集全球單播地址前綴和其它相關配置信息的路由器宣告(Router Advertisement)作為響應。主機用它從路由器得到的全球地址前綴加上自己的接口ID,自動配置全球地址,然后就可以與Internet中的其它主機通信了。
如果沒有路由器為網絡上的節點服務,也就是本地網絡孤立于其他網絡,則節點必須尋找配置服務器來完成其配置;否則,節點必須偵聽路由器宣告報文。這些報文周期性地發往所有主機的組播地址,以指明諸如網絡地址和子網地址等配置信息。節點可以等待路由器宣告,也可以通過發送組播請求給所有路由器的組播地址來請求路由器發送宣告。一旦收到路由器的響應,節點就可以使用響應的信息來完成自動配置。
使用IPv6網絡地址的無狀態自動配置,無需手動干預就能夠改變網絡中所有主機的IP地址。例如,當企業更換了聯入Internet的ISP時,將從新ISP處得到一個新的可聚集全球地址前綴。ISP把這個地址前綴從它的路由器上傳送到企業路由器上。由于企業路由器將周期性地向本地鏈路中的所有主機多點傳送路由器宣告,因此企業網絡中所有主機都將通過路由器宣告收到新的地址前綴,此后,它們就會自動產生新的IP地址并覆蓋舊的IP地址。