本期我們將基於ICMPv6介紹IPv6體系中基礎的鄰居發現協議,即IPv6 ND。鄰居發現協議代替了IPv4協議棧中的ARP和路由發現的功能,實現了地址解析,重複地址檢測,路由器發現以及路由重定向等功能。
一、IPv6鄰居發現協議使用的ICMPv6消息類型
IPv6鄰居發現協議使用5種類型的ICMPv6消息類型,用來實現地址解析,重複地址檢測,路由器發現以及路由重定向等功能。具體的ICMPv6的消息類型及具體作用如下:
1、ICMPv6鄰居請求(Neighbor Solicitation)消息
鄰居請求報文NS(Neighbor Solicitation)報文:Type欄位值為135,Code欄位值為0,在地址解析中的作用類似於IPv4中的ARP請求報文。用來獲取鄰居的鏈路層地址,驗證鄰居是否可達,進行重複地址檢測等。
2、ICMPv6鄰居通告(Neighbor Adivertisment)消息
鄰居通告報文NA(Neighbor Adivertisment)報文:Type欄位值為136,Code欄位值為0,在地址解析中的作用類似於IPv4中的ARP應答報文。用來對NS消息進行響應。另外,當節點在鏈路層變化的時候主動發出NA消息,告知鄰居本節點的變化。
3、ICMPv6路由器請求(Router Solicitation)消息
ICMPv6路由器請求(Router Solicitation)消息:Type欄位值為133,節點啟動後,通過RS消息向路由器發出請求,請求前綴和其他配置信息,用於節點的自動配置。
4、ICMPv6路由器通告(Router Advertisement)消息
ICMPv6路由器通告(Router Advertisement)消息:Type欄位值為134,對RS消息進行回應。在沒有抑制RA消息發布的條件下,路由器會周期性地發布RA消息,其中包括前綴信息選項和一些標誌位的信息。
5、ICMPv6重定向(Redirect)消息
ICMPv6重定向(Redirect)消息:Type欄位值為137,當滿足一定的條件時,預設網關通過向源主機發送重定向消息,使主機重新選擇正確的下一跳地址進行後續報文的發送。
二、地址解析
獲取同一鏈路上鄰居節點的鏈路層地址(與IPv4的ARP功能相同),通過鄰居請求消息NS和鄰居通告消息NA實現。節點1要獲取節點節點2的鏈路層地址。
節點1在向節點2發送報文之前要解析出節點2的鏈路層地址。地址解析的過程主要如下(我們使用HCL模擬器來模擬這個過程):
組網如下:
整體報文交互總覽(NS和NA):
①節點1會發送一個NS報文,Type值為135,源地址為節點1的IPv6地址。目的地址為節點2的被請求節點組播地址,要請求的為節點2的鏈路層地址。同時NS的報文的Options欄位中攜帶了節點1的鏈路層地址。如下圖:
②節點2收到NS消息後,會回應NS消息,源地址為節點2的IPv6地址,目的地址為節點1的IPv6地址,節點2的鏈路層地址會被放在Option欄位裡。
③節點1獲取到了節點2的鏈路層地址。
最後我們在路由器上可以查看到RouterA的IPv6地址信息和所有的鄰居信息:
在Ping鏈路本地地址時,需要使用-i參數,來指定鏈路本地地址的接口。
三、重複地址檢測
當節點獲取到一個IPv6地址後,需要使用重複地址檢測功能確定該地址是否已被其他節點使用(與IPv4的免費ARP功能相似)。通過NS和NA可以實現重複地址檢測。
在進行DAD檢測時,一個IPv6單播地址在分配給一個接口之後且通過重複地址檢測之前稱為試驗地址(Tentative Address)。此時該接口不能使用這個試驗地址進行單播通信,但是仍然會加入兩個組播組:ALL-NODES組播組和實驗地址所對應的Solicited-Node組播組。
IPv6重複地址檢測技術和IPv4中的免費ARP類似:節點向一個自己將使用的試驗地址所在的Solicited-Node組播組發送一個以該實驗地址為請求的目標地址的NS報文,如果收到節點回應的NA報文,就證明該地址已被網絡上使用,節點將不能使用該實驗地址通訊。
DAD檢測過程:
PC1的IPv6地址2000::1為新配置地址,即2000::1為PC1的試驗地址。PC1向2000::1的Solicited-Node組播組發送一個以2000::1為請求的目標地址的NS報文進行重複地址檢測,由於2000::1並未正式指定,所以NS報文的源地址為未指定地址。當PC2收到該NS報文後,有兩種處理方法:
如果PC2發現2000::1是自身的一個實驗地址,則PC2放棄使用這個地址作為接口地址,並且不會發送NA報文。
如果PC2發現2000::1是一個已經正常使用的地址,那麼PC2會向該地址的ALL-NODES組播組發送一個NA報文,該消息中會包含2000::1。這樣,PC1收到這個消息後就會發現自身的實驗地址是重複的,從而棄用該地址。
【編輯推薦】
【責任編輯:
武曉燕TEL:(010)68476606】