IPv6鄰居發(fā)現(xiàn)協(xié)議基本原理
IPv6通過5種IPMPv6包實(shí)現(xiàn)鄰居發(fā)現(xiàn)協(xié)議,它比IPv4中的ARP更加高效。IPv6鄰居發(fā)現(xiàn)協(xié)議解決了同一鏈路上多個節(jié)點(diǎn)相關(guān)問題。
IPv6鄰居發(fā)現(xiàn)協(xié)議提供下列功能:無服務(wù)器自動配置、路由器發(fā)現(xiàn)、前綴發(fā)現(xiàn)、地址解析、鄰居不可達(dá)檢測、鏈路MTU發(fā)現(xiàn)、下一跳決定和重復(fù)地址檢測等。
IPv6鄰居發(fā)現(xiàn)協(xié)議定義了5種ICMPv6包:
路由器請求(RS)——當(dāng)節(jié)點(diǎn)不愿等待下一次周期性路由器宣告,希望路由器立刻發(fā)送路由器宣告時發(fā)送的多播包。一個正在初始化的節(jié)點(diǎn)可以發(fā)送路由器請求,這樣它可以馬上得到鏈路上路由器的配置參數(shù)。
RS是類型133的ICMP包。源地址是分配給發(fā)送主機(jī)的地址。如果還沒有分配地址,則使用未指定地址0:0:0:0:0:0:0:0。目的地址是所有路由器的多播地址(FF02::2)
路由器宣告(RA)——周期性發(fā)送或?qū)φ埱笞鲬?yīng)答。路由器報告他們的存在,并提供節(jié)點(diǎn)配置自己所需要的信息。
RA是類型134的ICMP包。源地址是發(fā)送路由器的本鏈路地址,目的地址是發(fā)送路由器請求的節(jié)點(diǎn)地址或鏈路范圍所有節(jié)點(diǎn)多播地址(FF02::1)。跳數(shù)限制必須設(shè)置成255。跳數(shù)限制255確保非本鏈路的設(shè)備不能通過發(fā)送路由器宣告來試圖干擾通信流。如果非本鏈路設(shè)備向本鏈路發(fā)送RA,經(jīng)過路由器以后跳數(shù)限制減1,使該包成為非法。接受節(jié)點(diǎn)只認(rèn)為跳數(shù)限制是255的RA是有效的。
RA中包含路由器生存時間。路由器生存時間告訴節(jié)點(diǎn)他們能將路由器作為默認(rèn)路由器多久。其值為0表示該路由器不是候選的默認(rèn)路由器,不能出現(xiàn)在節(jié)點(diǎn)的默認(rèn)路由器表中。收到RA的節(jié)點(diǎn)構(gòu)造一個默認(rèn)路由器表。所有發(fā)送RA且生存時間不為0的路由器都出現(xiàn)在該列表中。
鄰居請求(NS)——允許節(jié)點(diǎn)確定鄰居的鏈路層地址,或者判斷鄰居是否還能從緩存的鏈路層地址可達(dá)。同時允許節(jié)點(diǎn)判斷鏈路上是否存在重復(fù)的IP地址。
鄰居解析消息用來獲得鄰居的鏈路層地址、提供本機(jī)的鏈路層地址以及驗證鄰居的可達(dá)性。它是一個類型為135的ICMP消息。IP包的源地址是發(fā)請求的節(jié)點(diǎn)的單播地址。用作獲得鏈路層地址時,目的地址是關(guān)聯(lián)在目標(biāo)IP地址的被請求節(jié)點(diǎn)多播地址;用作可達(dá)性確認(rèn)時,目的地址是單播地址。跳數(shù)限制是255,和RA中一樣,收到NS中跳數(shù)255用于確保該包沒有穿過路由器。
鄰居宣告(NA)——對鄰居請求所發(fā)的應(yīng)答或者在鏈路層地址改變時不經(jīng)請求發(fā)送。
鄰居宣告用作應(yīng)答NS或者在沒有被請求時立即傳播如鏈路層地址改變等新消息。NA是類型為136的ICMP包。源地址是分配給發(fā)送接口的任意有效單播地址。當(dāng)應(yīng)答NS時,目的地址是請求包的源地址,或者請求源地址是未指定地址時目的地址是所有節(jié)點(diǎn)地址(FF02::1)。未經(jīng)請求的宣告目的地址也是所有節(jié)點(diǎn)地址。跳數(shù)限制是255。
重定向——由路由器發(fā)送,將流量重定向到兩路上更好的***跳地址。
用RS和RA替代ARP
在IPv6中,對節(jié)點(diǎn)鏈路層地址的確定使用RS(ICMPv6Type135)、RA(ICMPv6Type136)和被請求節(jié)點(diǎn)多播地址(FF02::1:FFxx:xxxx)的組合。
IPv6鄰居發(fā)現(xiàn)協(xié)議比IPv4中的ARP更加高效:
在IPv6中,只有關(guān)心這個機(jī)制的鄰居節(jié)點(diǎn)才會在它們的協(xié)議棧中處理RS和RA的公告消息。而在IPv4中,ARP廣播使本鏈路上所有節(jié)點(diǎn)把ARP消息發(fā)送給IPv4協(xié)議棧。
在IPv6中,節(jié)點(diǎn)在相同的請求中相互交換鏈路層地址。在IPv4中,需要兩個ARP廣播消息才能得到相同的結(jié)果。
驗證鄰居緩存中IPv6地址和鏈路層地址的可達(dá)性。IPv4的ARP中,表項過期后被刪除。