IPv6鄰居發(fā)現(xiàn),地址重復(fù)檢測,及路由器發(fā)現(xiàn)機(jī)制,一分鐘了解下
一、IPv6基礎(chǔ)
IPv6(Internet Protocol Version 6,互聯(lián)網(wǎng)協(xié)議版本 6)是網(wǎng)絡(luò)層協(xié)議的第二代標(biāo)準(zhǔn)協(xié)議,也被稱為 IPng(IP Next Generation,下一代互聯(lián)網(wǎng)協(xié)議),它是 IETF(Internet Engineering Task Force,互聯(lián)網(wǎng)工程任務(wù)組)設(shè)計(jì)的一套規(guī)范,是 IPv4 的升級版本。IPv6 和 IPv4 之間最顯著的區(qū)別為:IP地址的長度從 32 比特增加到 128 比特。
二、IPv6報(bào)文和IPv4報(bào)文對比
IPv6報(bào)文更加簡潔
三、IPv6 鄰居發(fā)現(xiàn)協(xié)議介紹
IPv6 鄰居發(fā)現(xiàn)(Neighbor Discovery,ND)協(xié)議使用五種類型的 ICMPv6 消息,實(shí)現(xiàn)下面一些功能:地址解析、驗(yàn)證鄰居是否可達(dá)、重復(fù)地址檢測、路由器發(fā)現(xiàn)/前綴發(fā)現(xiàn)、地址自動配置和重定向等功能。
1. 地址解析
獲取同一鏈路上鄰居節(jié)點(diǎn)的鏈路層地址(與IPv4 的ARP功能相同),通過鄰居請求消息NS和鄰居通告消息NA實(shí)現(xiàn)。
- 節(jié)點(diǎn) A 以組播方式發(fā)送 NS 消息。NS 消息的源地址是節(jié)點(diǎn) A 的接口 IPv6 地址,目的地址是節(jié)點(diǎn) B 的請求節(jié)點(diǎn)組播地址,消息內(nèi)容中包含了節(jié)點(diǎn) A 的鏈路層地址和請求的目標(biāo)地址。
- 節(jié)點(diǎn) B 收到 NS 消息后,判斷報(bào)文的目標(biāo)地址是否為自己的 IPv6 地址。如果是,則節(jié)點(diǎn) B 可以學(xué)習(xí)到節(jié)點(diǎn) A 的鏈路層地址,并以單播方式返回 NA 消息,其中包含了自己的鏈路層地址。
- 節(jié)點(diǎn) A 從收到的 NA 消息中就可獲取到節(jié)點(diǎn) B 的鏈路層地址。
2. 驗(yàn)證鄰居是否可達(dá)
在獲取到鄰居節(jié)點(diǎn)的鏈路層地址后,通過鄰居請求消息 NS 和鄰居通告消息 NA 可以驗(yàn)證鄰居節(jié)點(diǎn)是否可達(dá)。
- 節(jié)點(diǎn)發(fā)送 NS 消息,其中目的地址是鄰居節(jié)點(diǎn)的 IPv6 地址。
- 如果收到鄰居節(jié)點(diǎn)的確認(rèn)報(bào)文,則認(rèn)為鄰居可達(dá);否則,認(rèn)為鄰居不可達(dá)。
3. 重復(fù)地址檢測
當(dāng)節(jié)點(diǎn)獲取到一個(gè)IPv6 地址后,需要使用重復(fù)地址檢測功能確定該地址是否已被其他節(jié)點(diǎn)使用(與IPv4 的免費(fèi)ARP功能相似)。
- 節(jié)點(diǎn) A 發(fā)送 NS 消息,NS 消息的源地址是未指定地址::,目的地址是待檢測的 IPv6 地址對應(yīng)的被請求節(jié)點(diǎn)組播地址,消息內(nèi)容中包含了待檢測的 IPv6 地址。
- 如果節(jié)點(diǎn) B 已經(jīng)使用這個(gè) IPv6 地址,則會返回 NA 消息。其中包含了自己的 IPv6 地址。
- 節(jié)點(diǎn) A 收到節(jié)點(diǎn) B 發(fā)來的 NA 消息,就知道該 IPv6 地址已被使用。反之,則說明該地址未被使用,節(jié)點(diǎn) A 就可使用此 IPv6 地址。
4. 路由器發(fā)現(xiàn)/前綴發(fā)現(xiàn)及地址無狀態(tài)自動配置
路由器發(fā)現(xiàn)/前綴發(fā)現(xiàn)是指節(jié)點(diǎn)從收到的 RA 消息中獲取鄰居路由器及所在網(wǎng)絡(luò)的前綴,以及其他配置參數(shù)。
地址無狀態(tài)自動配置是指節(jié)點(diǎn)根據(jù)路由器發(fā)現(xiàn)/前綴發(fā)現(xiàn)所獲取的信息,自動配置 IPv6 地址。
路由器發(fā)現(xiàn)/前綴發(fā)現(xiàn)通過路由器請求消息 RS 和路由器通告消息 RA 來實(shí)現(xiàn),具體過程如下:
- 節(jié)點(diǎn)啟動時(shí),通過 RS 消息向路由器發(fā)出請求,請求前綴和其他配置信息,以便用于節(jié)點(diǎn)的配置。
- 路由器返回 RA 消息,其中包括前綴信息選項(xiàng)(路由器也會周期性地發(fā)布 RA 消息)。
- 節(jié)點(diǎn)利用路由器返回的 RA 消息中的地址前綴及其他配置參數(shù),自動配置接口的 IPv6 地址及其他信息。
前綴信息選項(xiàng)中不僅包括地址前綴的信息,還包括該地址前綴的首選生命期(preferred lifetime)和有效生命期(valid lifetime)。節(jié)點(diǎn)收到周期性發(fā)送的 RA 消息后,會根據(jù)該消息更新前綴的首選生命期和有效生命期。
- 有效生命期:表示前綴有效期。在有效生命期內(nèi),通過該前綴自動生成的地址可以正常使用;有效生命期過期后,通過該前綴自動生成的地址變?yōu)闊o效,將被刪除。
- 首選生命期:表示首選通過該前綴無狀態(tài)自動配置地址的時(shí)間。首選生命期過期后,節(jié)點(diǎn)通過該前綴自動配置的地址將被廢止。節(jié)點(diǎn)不能使用被廢止的地址建立新的連接,但是仍可以接收目的地址為被廢止地址的報(bào)文。首選生命期必須小于或等于有效生命期。
5. 重定向功能
當(dāng)主機(jī)啟動時(shí),它的路由表中可能只有一條到缺省網(wǎng)關(guān)的缺省路由。當(dāng)滿足一定的條件時(shí),缺省網(wǎng)關(guān)會向源主機(jī)發(fā)送 ICMPv6 重定向消息,通知主機(jī)選擇更好的下一跳進(jìn)行后續(xù)報(bào)文的發(fā)送(與 IPv4的 ICMP 重定向消息的功能相同)。
同時(shí)滿足下列條件時(shí),設(shè)備會發(fā)送 ICMPv6 重定向報(bào)文:
- 接收和轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)文的接口是同一接口;
- 被選擇的路由本身沒有被 ICMPv6 重定向報(bào)文創(chuàng)建或修改過;
- 被選擇的路由不是設(shè)備的缺省路由;
- 被轉(zhuǎn)發(fā)的 IPv6 數(shù)據(jù)報(bào)文中不包含路由擴(kuò)展頭。