4-ipv6基礎(chǔ)知識之-鄰居發(fā)現(xiàn)協(xié)議NDP

鄰居發(fā)現(xiàn)協(xié)議(NDP--Neighbor Discovery Protocol) 是指用icmpv6協(xié)議實(shí)現(xiàn)的一種路由協(xié)議; IPv6 環(huán)境中的常規(guī)主機(jī)和路由器都依賴于NDP 來幫助實(shí)現(xiàn)重要的信息交換。

NDP報(bào)文種類:

  • 路由器請求(RS)
  • 路由器宣告(RA)
  • 鄰居請求(NS)
  • 鄰居宣告(NA)
  • 重定向(RD)

1.鄰居請求&公告消息代替ARP


在IPv4中ARP由本地鏈路地址上的節(jié)點(diǎn)用來確定其他節(jié)點(diǎn)的鏈路層MAC地址。每個(gè)節(jié)點(diǎn)維護(hù)一個(gè)ARP緩存,緩存中包含ARP獲悉的節(jié)點(diǎn)的鏈路層地址。

在IPv6中,對節(jié)點(diǎn)鏈路層MAC地址的確認(rèn)使用鄰居請求消息(ICMPv6類型135)、鄰居公告消息(ICMPv6類型136)和被請求節(jié)點(diǎn)多播地址(FF02::1:FFxx:xxxx)的組合

image.png

在IPv6中使用的NDP比IPv4中的ARP效率高很多:

  • 在IPv6中,只有關(guān)系這個(gè)機(jī)制的鄰居節(jié)點(diǎn)才會在它們的協(xié)議棧中處理鄰居請求和鄰居公告消息。在IPv4中,ARP廣播消息用來發(fā)現(xiàn)一個(gè)節(jié)點(diǎn)的鏈路層地址,但是ARP廣播迫使本地鏈路上的所有節(jié)點(diǎn)都把ARP廣播消息發(fā)給IPv4協(xié)議棧。
  • 在IPv6中,節(jié)點(diǎn)在相同的請求中互相交換鏈路層地址。在IPv4中,需要兩個(gè)ARP廣播消息才能夠得到相同的結(jié)果。
  • 驗(yàn)證鄰居緩存中的IPv6地址和鏈路層地址的可達(dá)性,在IPv4的ARP中,表項(xiàng)過期后被刪除。

openwrt上面查看鄰居表

root@zihome:/# ip -6 neighbor show
fe80::8a:169d:ba8e:7802 dev br-lan lladdr bc:a9:20:8d:18:d1 STALE
fe80::c8e8:4a5:7ff9:b706 dev br-lan lladdr a0:a4:c5:1e:61:c1 STALE
fe80::2a35:45ff:feea:743e dev br-lan lladdr 28:35:45:ea:74:3e STALE
fe80::94df:e550:f5aa:973c dev br-lan lladdr ec:41:18:7c:15:0b STALE
fe80::811:ddc0:eb48:6fa2 dev br-lan lladdr 20:ab:37:8d:c2:f6 REACHABLE
fe80::ba3d:4eff:feaa:449b dev br-lan lladdr b8:3d:4e:aa:44:9b STALE

root@zihome:/# ip -4 neighbor show
192.168.18.174 dev br-lan  FAILED
192.168.18.127 dev br-lan lladdr a0:a4:c5:1e:61:c1 REACHABLE
192.168.18.155 dev br-lan lladdr ec:41:18:7c:15:0b STALE
192.168.18.161 dev br-lan  FAILED
192.168.18.176 dev br-lan  FAILED
192.168.18.145 dev br-lan lladdr 20:ab:37:8d:c2:f6 REACHABLE
192.168.18.146 dev br-lan  FAILED

2.路由器請求&公告(RS&RA)/無狀態(tài)自動分配地址

無狀態(tài)自動配置地址是IPv6最具吸引力和最有用的新特性之一。

在IPv6中可以使用路由器公告消息RA (ICMPv6類型134) ,通過節(jié)點(diǎn)的多播地址(FF02::1)定時(shí)發(fā)送前綴地址給節(jié)點(diǎn),節(jié)點(diǎn)收到RA消息的前綴地址后再根據(jù)EUI64規(guī)則生成一個(gè)IPv6單播地址。

由于路由器的定時(shí)發(fā)布有一定的時(shí)間間隔,所以節(jié)點(diǎn)也可以主動發(fā)送路由器請求消息RS(ICMPv6類型133)獲取前綴地址。節(jié)點(diǎn)發(fā)送RS消息到路由器的多播地址(FF02::2),路由器收到后就會直接返回附帶前綴地址的RA消息給對應(yīng)的節(jié)點(diǎn)。

路由器定時(shí)發(fā)送RA過程如下:

image.png

節(jié)點(diǎn)主動發(fā)送RS請求過程如下:

image.png

3.重復(fù)地址檢測DAD

DAD是無狀態(tài)自動配置和節(jié)點(diǎn)啟動時(shí)的一個(gè)NDP機(jī)制,在節(jié)點(diǎn)使用無狀態(tài)自動配置的IPv6單播地址之前,必須在本地鏈路上驗(yàn)證要使用的臨時(shí)地址值是唯一的并且未被其他節(jié)點(diǎn)使用。

DAD使用鄰居請求消息(ICMPv6類型135)和被請求節(jié)點(diǎn)的多播地址完成這個(gè)任務(wù),節(jié)點(diǎn)A發(fā)送鄰居請求消息,使用被請求節(jié)點(diǎn)的多播地址為目的地址。

只要有節(jié)點(diǎn)對這個(gè)請求應(yīng)答,就說明這個(gè)單播IPv6地址已經(jīng)被另外一個(gè)節(jié)點(diǎn)使用,沒有則說明在本地鏈路上是唯一的,可以使用這個(gè)地址。

重復(fù)地址檢測DAD過程如下:

image.png

4.前綴重新編址

因?yàn)镮Pv6協(xié)議的嚴(yán)格路由聚合,當(dāng)一個(gè)組織機(jī)構(gòu)決定改變IPv6提供商時(shí),它必須進(jìn)行前綴重新編址,前綴重新編址允許節(jié)點(diǎn)從以前的網(wǎng)絡(luò)前綴平穩(wěn)地過度到新的前綴。

前綴重新編址由在本地公告前置的路由器執(zhí)行,這個(gè)機(jī)制使用與前綴公告機(jī)制相同,使用路由器公告消息RA (ICMPv6類型134)和多播地址(FF02::1)實(shí)現(xiàn)。

前綴重新編址過程

  • 站點(diǎn)中的所有路由器繼續(xù)公告當(dāng)前的前綴,但是有效期和首選生存期被減少到接近于0的一值,然后路由器開始在本地鏈路公告新的前綴。
  • 節(jié)點(diǎn)收到路由器的公告消息后,節(jié)點(diǎn)會有兩個(gè)單播地址,一個(gè)基于舊的前綴,一個(gè)基于新的前綴,但是舊的前綴有效期只有很短,所以經(jīng)過一段短暫的過渡期,節(jié)點(diǎn)就平穩(wěn)的切換到新的前綴地址。

5.路由器重定向

IPv6中的路由器重定向機(jī)制使用重定向消息(ICMPv6類型137)。

路由器使用ICMPv6重定向消息通知鏈路上的節(jié)點(diǎn),鏈路上存在一個(gè)更好的轉(zhuǎn)發(fā)數(shù)據(jù)包的路由器,接收到這個(gè)ICMPv6重定向消息包的節(jié)點(diǎn)可以根據(jù)新的路由器地址修改它的本地路由選擇表,后期訪問改地址的時(shí)候就用新的路由地址發(fā)送請求數(shù)據(jù)。

image.png

6.NDP消息總結(jié)

機(jī)制 ICMPv6消息 多播地址
代替ARP 類型135(鄰居請求),類型136(鄰居公告) 所有節(jié)點(diǎn)的多播(FF02::1),被請求節(jié)點(diǎn)的多播(FF02::1FFxx:xxxx)
前綴公告 類型133(路由器請求),類型134(路由器公告) 所有節(jié)點(diǎn)的多播(FF02::1),所有路由器的多播(FF02::2)
DAD 類型135(鄰居請求) 被請求節(jié)點(diǎn)的多播(FF02::1FFxx:xxxx)
前綴重新編址 類型133(路由器請求),類型134(路由器公告) 所有節(jié)點(diǎn)的多播(FF02::1),所有路由器的多播(FF02::2)
路由器重定向 類型137(路由器重定向) -

參考文檔《深入解析IPv6》《Cisco ipv6網(wǎng)絡(luò)實(shí)現(xiàn)技術(shù)》

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容