NDP鄰居發(fā)現(xiàn)協(xié)議用到的ICMPv6報文:
133 路由器請求RS
134 路由器通告RA
135 鄰居請求NS
136 鄰居通告ND
137 重定向
通過NDP鄰居發(fā)現(xiàn)協(xié)議實現(xiàn)的功能:
1、路由器發(fā)現(xiàn)
2袱瓮、地址自動配置
3茬祷、地址解析
4、DAD重復(fù)地址檢測
5、鄰居狀態(tài)跟蹤
6啊犬、重定向
補充path-mtu
地址自動配置
通過type 133的ICMPv6報文和type 134的ICMPv6報文實現(xiàn)扩所,type 133的ICMPv6報文稱為RS路由器請求,type 134的ICMPv6報文稱為RA路由器通告硫痰;
PC1連接網(wǎng)線后衩婚,會發(fā)送RS路由器請求報文,獲取地址自動配置所需的前綴信息效斑,源IP地址為未指定地址非春,目的ip地址為FE02::2,源MAC地址為PC1接口mac地址,目的MAC地址為目的IP地址對應(yīng)的組播mac地址;
網(wǎng)段上的路由器收到后奇昙,發(fā)送RA路由器通告應(yīng)答护侮,源IP地址為路由器接口的link-local地址,目的地址為FF02::1,源MAC地址為路由器接口mac地址敬矩,目的mac地址為目的地址對應(yīng)的組播mac地址概行,報文內(nèi)容攜帶地址前綴信息;
PC1收到后弧岳,根據(jù)地址前綴信息凳忙,軟件方式自動生成IPv6地址,同時將路由器的link-local地址作為默認網(wǎng)關(guān)禽炬;
通過RA路由器通告報文中的M位涧卵、O位判斷是無狀態(tài)自動配置,還是有狀態(tài)自動配置腹尖;
無狀態(tài)自動配置無需DHCPv6服務(wù)器柳恐,僅能獲取前綴生成地址;
有狀態(tài)自動配置通過DHCPv6服務(wù)器热幔,可以為主機分配地址和其他配置信息乐设;
PC1也可以通過無狀態(tài)自動配置獲取前綴生成地址,僅通過有狀態(tài)自動配置獲取其他配置信息绎巨;
路由器發(fā)現(xiàn)
路由器會周期性(200s)的發(fā)送RA路由器通告近尚,通知網(wǎng)段上的主機該網(wǎng)段上的前綴信息和網(wǎng)關(guān);
如果一個網(wǎng)段上有多臺路由器场勤,RA路由器通告報文中攜帶路由器優(yōu)先級選項戈锻,low、medium和媳、high格遭,主機優(yōu)先級選擇優(yōu)先級高的路由器作為默認網(wǎng)關(guān);如果優(yōu)先級相同留瞳,都作為默認網(wǎng)關(guān)拒迅;
地址解析
通過type 135的ICMPv6報文和type 136的ICMPv6報文實現(xiàn),type 135的ICMPv6報文稱為NS鄰居請求報文撼港,type 136的ICMPv6報文稱為NA鄰居通告報文坪它;
PC1要訪問PC2,需要封裝PC2的鏈路層地址帝牡,首先PC1發(fā)送NS鄰居請求報文往毡,請求PC2的鏈路層地址,通過type 135的ICMPv6報文實現(xiàn)靶溜,源IP為PC1的接口IP地址绪氛,目的IP為PC2的接口地址對應(yīng)的請求組播地址,源MAC為PC1的接口MAC地址又谋,目的MAC為請求組播地址對應(yīng)的組播mac地址,報文內(nèi)容部分為想要請求的IPv6地址个扰,即PC2的接口地址,及PC1自身鏈路層地址葱色;
PC2收到報文后递宅,發(fā)送NA鄰居通告報文進行響應(yīng),通過type 136的ICMPv6報文實現(xiàn)苍狰,源IP地址為PC2的接口IP地址办龄,目的IP地址為PC1的接口IP地址,源MAC為PC2的接口MAC地址淋昭,目的MAC為PC1的接口MAC地址俐填,報文內(nèi)容攜帶請求的IPv6地址(PC2自身接口IP地址),以及對應(yīng)的鏈路層地址(PC2接口mac地址)翔忽;
DAD重復(fù)地址檢測
IPv6地址的生存期分為tentative英融、preferred、valid歇式、invalid幾個階段驶悟;
接口開始使用一個IPv6地址時,先進入tentative階段材失,發(fā)送NS鄰居請求報文撩银,探測網(wǎng)段上該地址是否已經(jīng)被使用,通過type 136的ICMPv6報文實現(xiàn)豺憔,源IP為未指定地址,目的IP為想要使用地址的請求組播地址够庙,源MAC為自身MAC地址恭应,目的MAC為請求組播地址對應(yīng)的組播MAC地址,報文內(nèi)容攜帶想要使用的IPv6地址耘眨;
如果沒有收到NA鄰居通告回應(yīng)昼榛,說明網(wǎng)段上該地址未被使用,進入preferred階段剔难,可以使用該地址進行通信胆屿;如果收到NA鄰居通告回應(yīng),說明網(wǎng)段上該地址已被使用偶宫,不會使用該地址進行通信非迹;
鄰居狀態(tài)跟蹤
鄰居狀態(tài)跟蹤通過type 135的ICMPv6報文和type 136的ICMPv6報文實現(xiàn),type 134的ICMPv5報文稱為NS鄰居請求報文纯趋,type 136的ICMPv6報文稱為NA鄰居通告報文憎兽;
主機會維護一張IPv6地址到鏈路層地址的映射表冷离,在主機發(fā)送NS鄰居請求報文時,會在本地映射表中生存對應(yīng)的緩存表項纯命,由于還不知道想要請求的IPv6地址對應(yīng)的鏈路層地址西剥,將狀態(tài)標(biāo)記為incompele;
如果收到NA鄰居通告報文亿汞,將在本地緩存表得到完整的映射條目瞭空,狀態(tài)標(biāo)記為Reachable;如果每隔1s疗我,連續(xù)發(fā)三次NS鄰居請求報文咆畏,都沒收到回應(yīng),刪除該表項碍粥;
狀態(tài)Reachable的表項超時后(30s)鳖眼,不確定該映射條目是否有效,狀態(tài)標(biāo)記為stale嚼摩;
如果有報文需要向stale狀態(tài)的IP地址轉(zhuǎn)發(fā)钦讳,需要先驗證表項有效性,發(fā)送NS鄰居請求報文枕面,狀態(tài)標(biāo)記為delay愿卒,表示正在驗證表項有效性;
如果5s內(nèi)收到NA鄰居通告報文潮秘,表示表項有效琼开,狀態(tài)標(biāo)記為Reachable;
如果5s內(nèi)沒有收到NA鄰居通告報文枕荞,說明表項無效柜候,進入probe狀態(tài),每隔1s發(fā)送一次NS鄰居請求報文躏精,連發(fā)三次沒有收到NA鄰居通告響應(yīng)渣刷,刪除該表項;如果收到NA鄰居通告矗烛,則認為鄰居有效辅柴,進入Reachable狀態(tài);
重定向
通過type 137的ICMPv6報文實現(xiàn)
PC1訪問R3的地址2001::3,查找路由表默認網(wǎng)關(guān)是R2的鏈路本地地址FE80::2,發(fā)送IPv6報文源IP為2000::1瞭吃,目的IP為2001::3,源MAC為PC1的G0/0/0接口MAC碌嘀,目的MAC為R2的G0/0/0接口MAC;
R2收到后歪架,根據(jù)目的IP地址2001::3查找路由表股冗,發(fā)現(xiàn)出接口和收到報文的接口一致,向PC1發(fā)送type 137的ICMPv6重定向報文牡拇,告知PC1去往2001::3的報文直接向FE80::3轉(zhuǎn)發(fā)魁瞪,重定向報文源IP為FE80::2穆律,目的IP為2000::1,源MAC為R2的G0/0/0接口MAC导俘,目的MAC為PC1的G0/0/0接口MAC峦耘;
PC1收到后,后續(xù)發(fā)往2001::3的報文直接轉(zhuǎn)發(fā)給FE80::3;
pathMTU
通過type 2的ICMPv6報文(packet too big差錯消息)來實現(xiàn)旅薄;
如果PC1有超過MTU1500的報文要發(fā)送辅髓,會按照MTU1500進行分片;
R2收到后少梁,發(fā)現(xiàn)超過自身轉(zhuǎn)發(fā)接口的MTU1400洛口,返回type2的ICMPv6報文,告知PC1 packet too big凯沪,需要使用MTU 1400來分片第焰,PC1重重新按照MTU1400來分片;
R3收到后妨马,依然會因為報文超過轉(zhuǎn)發(fā)接口MTU 1300挺举,而回送type 2的ICMPv6報文,告知PC1 packet too big烘跺,需要按照MTU 1300進行分片湘纵,PC1重新按照MTU 1300進行分片,最終達到目的地PC2滤淳;
如果是IPv4的話梧喷,PC1按照MTU1500進行分片;
R2收到報文重組后脖咐,按照MTU1400進行分片铺敌;
R3收到報文重組后,按照MTU1300進行分片屁擅;