1. 程式人生 > >RFC4862 IPV6無狀態地址自動配置 閱讀記錄2

RFC4862 IPV6無狀態地址自動配置 閱讀記錄2

ipv6 RFC4862

RFC4862 IPV6無狀態地址自動配置 閱讀記錄2
  • 第五章 協議標準
    節點必須允許系統管理為每個有多播能力的接口配置下面這個與自動配置有關的變量:
    節點配置變量--> DupAddrDetectTransmits
    當在臨時地址上執行 Duplicate Address Detection 時, 發送的連續 Neighbor Solicitation消息數目。 值為 0 表示沒有在臨時地址上執行 Duplicate Address Detection。值為 1 表示僅發送一次,沒有後續重復發送。
    默認值: 1,但是可由介紹在特定鏈路類型上 IP 發送相關問題的文件([RFC-2464])中規定的鏈路類型特定值取代。
    自動配置也假設存在如[RFC-4861]定義的變量RetransTimer。出於自動配置考慮,RetransTimer規定在Duplicate Address Detection期間執行的連續Neighbor Solicitation發送間的延遲(如果DupAddrDetectTransmits大於1),以及發送最後一個NeighborSolicitation之後,結束Duplicate Address Detection處理之前,節點等待時間。
    與自動配置有關的結構
    主機將地址列表和這些地址對應的生存期放在一起維護。地址列表既包括自動配置的地址,也包括手工配置的地址。
    鏈路本地地址生成
    一旦開啟接口,節點就形成鏈路本地地址。接口在下述任何事件之後可以變為開啟狀態:
    -- 系統啟動時接口被初始化。
    -- 接口暫時出故障後或接口被系統管理臨時關閉後接口被重新初始化。
    -- 接口第一次附著到鏈路。包括由於無線網絡訪問點的改變導致動態改變節點所附著的鏈路。
    -- 在被管理上關閉之後系統管理又開啟接口。
    鏈路本地地址由 (適當長度的) 熟知鏈路本地前綴 (well-known link-local prefix)FE80::0[RFC-4291]和下述接口標識符的組合形成:
    --地址最左邊那些“前綴長度”比特是鏈路本地前綴比特。
    --地址中到鏈路本地前綴右邊的比特被設置為全 0。
    --如果接口標識符長度為 N 比特,地址最右邊 N 比特被接口標識符取代。
    註意,鏈路本地地址無限優先生存期和合法生存期
    ;它絕不會超時
    重復地址檢測
    重復地址檢測(Duplicate Address Detection)必須在所有單播地址上執行, 是在這些地址被分配到接口前執行,無論這些地址是通過無狀態自動配置, DHCPv6,或手工配置獲得的,但有下述例外:
    -- 如果接口的 DupAddrDetectTransmits 變量被設置為 0,不執行 Duplicate Address Detection。
    -- 必須不在任播地址上執行 Duplicate Address Detection (註意, 在語義上任播地址與單播地
    址區分不開)。
    檢測重復地址的程序使用 Neighbor Solicitation 和 Neighbor Advertisement 消息,如下面所述。 如果在程序執行過程中發現重復地址,不能分配該地址給接口。如果地址是從接口標識符推演出的,需要分配新的標識符給那個地址,或者那個接口的所有 IP 地址需要手工配置。註意,檢測重復的方法不完全可靠, 可能仍然存在重復地址(例如,如果在執行 Duplicate Address Detection 時鏈路被分割)。
    在其上運行Duplicate Address Detection程序的地址被認為是臨時的,直到檢測程序成功完成。傳統觀念不考慮將臨時地址“分配給接口”。即,接口必須接收Neighbor Solicitation和 Neighbor Advertisement消息,這些消息包括Target Address字段中的臨時地址, 但是處理這樣的分組不同於處理其Target Address匹配分配給接口的地址的分組。其他尋址到臨時地址的分組應當被靜默拋棄。 註意,“其他分組”包括這樣的Neighbor Solicitation和Neighbor Advertisement消息, 這些消息用臨時(即,單播)地址作IP目的地地址,以及在Target Address
    字段包含臨時地址。正常運行中這種情況不應發生,因為在Duplicate Address Detection程序
    中這些消息是多播發送的。
    Duplicate Address Detection 必須在分配地址到接口之前進行,以便阻止多個節點同時使用相同地址。如果節點在執行 Duplicate Address Detection 的同時,同步開始使用地址,並且另一個節點已經在使用該地址,執行 Duplicate Address Detection 的節點將錯誤地處理預定給其他節點的流量。
    如 果 在 已 經 發 送DupAddrDetectTransmits Neighbor Solicitations 後的 RetransTimer 毫秒內,這些測試中沒有
    一個指出存在重復地址,認為地址是唯一的。一旦認定地址是唯一的,該地址可以分配給接口。
    消息合法性
    節點必須靜默拋棄任何沒有通過RFC4681中規定的合法性檢驗的NS,NA消息。通過這些合法性校驗的NS或NA消息分別稱為合法請求或合法通告。
    發送鄰居請求消息NS
    在發送ns消息前,接口必須加入all-nodes多播地址和臨時地址的solicited-node多播地址。前者用來保證能接收到已經使用該地址的其他節點的NA消息;後者保證企圖使用同一地址的兩個節點能夠檢測到彼此的存在。
    為了檢測地址,節點發送DupAddrDetectTransmits NS消息,每次發送相隔RetransTimer 毫秒。該請求的Target Address 被設置為正在被檢測的地址,IP源地址被設置為未指定地址IP目的地址被設置為目標地址的solicited-nodes多播地址
    如果 Neighbor Solicitation 是接口(重新)初始化後將要從該接口發出的第一個消息,節點應當延遲一個隨機時間加入 solicited-nodes 多播地址,延遲時間範圍按照[RFC-4861]規定,在 0 和 MAX_RTR_SOLICITATION_DELAY 之間。當鏈路上同一時刻有許多節點啟動時,例如電源故障之後, 這一舉措有助於緩和擁塞。 並且當同一時刻不止一個節點嘗試請求相同地址時這一舉措有助於避免出現競爭。
    即使 Neighbor Solicitation 不是將要發出的第一個消息, 如果正在被檢測的地址由發送到多播地址的路由器通告消息配置, 節點也應當延遲一個隨機時間加入 solicited-nodes 多播地址,延遲時間範圍在 0 和 MAX_RTR_SOLICITATION_DELAY 之間。當多個節點將要通過接收相同單個多播路由器通告來配置地址時,此延遲將避免類似擁塞。
    與Multicast Listener Discovery (MLD)匯報消息相關,暫不研究。(以後再研究參考RFC 2710 3810)。
    接收鄰居請求消息NS
    一旦在接口上收到合法鄰居請求(Neighbor Solicitation)消息,節點行為取決於在任何情況下目標地址是tentative臨時地址。如果目標地址不是臨時地址(即,目標地址被分配給接收接口),按照RFC-4861的規定對請求進行處理。如果目標地址是臨時地址,並且源地址是單播地址,該請求應當被靜默忽略(這是請求發送者在對目標執行地址解析)。否則,做如下處理。在所有情況,節點必須不響應臨時地址的NS消息。

RFC4862 IPV6無狀態地址自動配置 閱讀記錄2