鄰節點不可到達檢測緩存
鄰節點不可到達檢測方法有2種:併發
1. 經過發送單播鄰節點請求報文和接收響應請求的鄰節點公告報文來完成。ide
2. 藉助上層協議肯定可達性。(TCP)spa
響應請求的鄰節點公告報文僅用於響應鄰節點請求報文,響應請求的鄰節點公告報文會將其報文中的請求標誌置爲1。(響應時,NA報文中請求標誌位設爲1)。路由
自發的鄰節點公告報文或路由器公告報文並不能用於驗證可達性。it
鄰節點請求報文和鄰節點公告報文的交互僅能確認從發送鄰節點請求報文的節點A到發送鄰節點公告報文的節點B的可到達性,並不能驗證從B到A的可達性。class
不可達檢測是單向的。變量
當上層協議表示使用下一跳地址進行的通訊正處於發送數據的過程當中時,能夠間接肯定可到達性。對於TCP業務流來講,開始發送數據代表已經收到了對方節點發來的對發送數據請求的確認。由接收到的TCP確認所證明的端到端的可到達性,也同時暗示了通往目標的第一跳的可到達性。TCP協議模塊根據現有的機制,把這些暗示提供給了IPv6協議模塊。路由器
1. 未完成(INCOMPLETE )定時器
使用請求節點多播鄰節點請求報文的IPv6地址解析過程正在進行中。當建立一個新的鄰節點高速緩存表項,但此節點相應的鏈路層地址尚未獲得時,會進入未完成狀態。在放棄地址解析並刪除鄰節點高速緩存表項以前能夠發送的多播鄰節點請求報文的數目能夠由變量來設置。RFC2461使用MAX_MULTICAST_SOLICIT的變量,並建議此變量的值爲3。
我的理解:
也就是說,要添加一條鄰居緩存表項,先進入INCOMPLETE狀態,而後在發送MAX_MULTICAST_SOLICIT次NS請求前,若是獲取到了節點相應的鏈路層地址,那麼該條鄰居緩存狀態變化爲REACHABLE。不然刪除該條鄰居緩存。
2. 可到達(REACHABLE)
經過接收響應請求的單播鄰節點公告報文,能夠確認鄰節點的可到達性。鄰節點高速緩存的表項會一直保持可到達REACHABLE狀態,直到路由器公告報文的可到達時間字段中規定的時間(毫秒數)(或主機默認值)耗盡爲止。
只要上層協議,好比TCP協議,表示傳輸數據的通訊仍在進行中,則相關表項就會始終保持可到達狀態。每當上層協議表示要開始傳輸數據時,表項中的可到達時間就會被刷新。
我的理解:
可到達能夠保持一段時間,這段時間內,該條鄰居緩存的狀態一直是REACHABLE狀態。
若是有上層協議TCP在通訊,表項中的可到達時間就會被刷新。
3. 失效(STALE)
可到達時間(自從上次收到可到達確認後過去的時間)耗盡。當路由器公告報文的時間可到達時間字段中規定的時間(毫秒數)(或主機默認值)耗盡時,鄰居緩存的表項進入失效STALE狀態,而且一致保持該狀態,直到有數據包發送給這個鄰節點。
當主機收到一個公告本身鏈路層地址的自發鄰節點公告報文(NA)時,與此鄰節點對應的表項也會進入失效狀態???
我的理解:
時間耗盡,鄰居緩存表項狀態變爲STALE,直到有報文發送到該鄰節點會發生變化。
4. 延遲(DELAY)
爲等待上層協議提供可達性確認,在主機發送鄰節點請求報文(NS)前,鄰節點緩存表表項進入延遲DELAY狀態,而且等待一段能夠設定的時間。RFC2461中使用名爲DELAY_FIRST_PROBE_TIME的變量,並建議此變量的值爲5秒。若是在延遲時間結束時,尚未收到可到達性的確認,則此表項進入探測PROBE狀態,併發送一個單播鄰節點的請求報文。
我的理解:
在失效狀態下,有報文要發送到一個鄰節點,該鄰居緩存的狀態變換爲延遲。
在延遲期內若是收到了可達性確認,則進入到REACHABLE狀態。延遲期內沒有收到可達性確認,發送一個單播鄰節點的請求報文(NS),進入到探測階段。
5. 探測(PROBE)
不管鄰節點緩存的表項處於失效狀態仍是延遲狀態,都表示正在進行可到達性的確認。主機按照必定的時間間隔發送單播鄰節點請求報文(NS),這個時間間隔等於主機收到的路由器公告中的重傳定時器字段的值(或默認值)。在放棄可達性檢測並刪除相應的鄰節點緩存表項以前能夠發送的鄰節點請求報文的數目能夠由變量來設置。RFC2461使用名爲MAX_UNICAST_SOLICIT的變量,並建議此變量的值爲3。
我的理解:
探測階段,還能夠發送幾回NS報文用來確承認達性。若是不能獲得確認,刪除該表項。
任何表項在任什麼時候刻,均可以從任何狀態進入無表項存在狀態。(表項不存在,即刪除之)。
若是不可達的鄰節點是路由器,則主機能夠從的默認路由器列表中選擇另外一個路由器,而且對新選擇的這個路由器進行地址解析和鄰節點不可到達檢測。
若是路由器變成主機,則它應該發送路由器標誌爲0的多播鄰節點公告報文。若是主機收到了從路由器發來的鄰節點公告報文,而且其中的路由器標誌爲0,則主機將它的默認路由器列表中刪除該路由器,若是須要,就再選擇另外一個路由器。