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