1. 程式人生 > >IPv6鄰居發現協議

IPv6鄰居發現協議

IPv6鄰居發現協議

NDPNeighbor Discovery Protocol,鄰居發現協議)是IPv6的一個關鍵協議,它組合了IPv4中的ARPICMP路由器發現和ICMP重定向等協議,並對它們作了改進。作為IPv6的基礎性協議,NDP還提供了字首發現、鄰居不可達檢測、重複地址監測、地址自動配置等功能。

1.地址解析:地址解析是一種確定目的節點的鏈路層地址的方法。NDP中的地址解析功能不僅替代了原IPv4中的ARP,同時還用鄰居不可達檢測(NUD)方法來維持鄰居節點之間的可達性狀態資訊。

2.無狀態地址配置:NDP中特有的地址自動配置機制,包括一些列相關功能,如路由器發現、介面ID自動生成、重複地址監測等。通過無狀態自動配置機制,鏈路上的節點可以自動獲得IPv6

全球單播地址。

a)路由器發現:路由器與其他相連的鏈路上釋出網路引數資訊,主機捕獲此資訊後,可以獲得全球單播IPv6地址字首、預設路由、鏈路引數(鏈路MTU)等資訊。

b)介面ID自動生成:主機根據EUI-64規範或其他方式為介面自動生成介面識別符號。

c)重複地址監測(DAD):根據字首資訊生成或手動配置IPv6地址後,為保證該地址的唯一性,在其可以使用之前,主機需要檢驗它是否已被鏈路上的其他節點所使用。

d)字首重新編址:當網路字首變化時,路由器在與其相連的鏈路上釋出新的網路引數資訊,主機捕獲這些新資訊後,重新配置字首、鏈路MTU等地址相關資訊。

3.路由重定向:當在本地鏈路上存在一個更好的到達目的網路的路由器時,路由器需要通告節點來進行相應配置改變。

NDP定義了5ICMPv6報文型別,包括RSRANSNARedirect報文,如表2-1所示。

2-1  ICMPv6報文型別

ICMPv6型別

訊息名稱

ICMPv6型別

訊息名稱

Type=133

RSRouter Solicitation,路由器請求)

Type=136

NANeighbor Advertisement,鄰居公告)

Type=134

RARouter Advertisment,路由器公告)

Type=137

Redirect(重定向報文)

Type=135

NSNeighbor Solicitationh

,領居請求)

IPv6地址解析

地址解析在報文轉發過程中具有至關重要的作用。當一個節點需要得到同一條鏈路上另外一個節點的鏈路層地址時,需要進行地址解析。IPv6使用NDP實現了這個功能,且有所增強。IPv6的地址解析過程包括兩部分:一部分解析目的IP地址所對應的鏈路層地址;另一部分是鄰居可達性狀態的維護過程,即鄰居不可達檢測。

1.地址解析

IPv4ARP相比,IPv6地址解析技術工作在OSI參考模型的網路層,與鏈路層協議無關。這一特點的益處如下:

1)加強了地址解析協議與底層鏈路的獨立性。對每一種鏈路層協議都使用相同的地址解析,無須再為每一種鏈路層協議定義一個新的地址解析協議。

2)增強了安全性。在第三層實現地址解析可以利用三層標準的安全認證機制來防止ARP攻擊和ARP欺騙。

3)減小了報文傳播範圍。IPv6的地址解析利用三層組播定址限制了報文的傳播範圍,可節省網路頻寬。

IPv6中,NDP通過在節點間互動NSNA報文完成IPv6地址到鏈路層地址的解析,然後通過解析後得到的鏈路層地址和IPv6等地址資訊來建立相應的鄰居快取表項。如圖2-10所示,NodeA的鏈路層地址為00E0-FC00-0001,全域性地址為1::1:ANodeB的鏈路層地址為00E0-FC00-0002,全域性地址為1::2:B。當NodeA要傳送資料報文到NodeB時,需要NDP完成地址解析過程。

1NodeA傳送一個NS報文到鏈路上,目的IPv6地址為NodeB對應的被請求節點組播地址(FF02::1:FF02:B),選項欄位中攜帶了NodeA的鏈路層地址00E0-FC00-0001

2NodeB接收到該NS報文後,由於報文的目的地址FF02::1::FF02:BNodeB的被請求節點組播地址,所以NodeB會處理該報文;同時,根據NS報文中的源地址和源鏈路層地址選項更新自己的鄰居快取表項。

3NodeB傳送一個NA報文來應答NS,同時在訊息的目標鏈路層地址選項中攜帶自己的鏈路層地址00E0-FC00-0002

4NodeA接收到NA報文後,根據報文中攜帶的NodeB鏈路層地址,建立一個到目標節點NodeB的鄰居快取表項。

2-10  地址解析

通過互動,NodeANodeB就獲得了對方的鏈路層地址,建立起了到達對方的鄰居快取表項,從而可以相互通訊。當一個節點的鏈路層地址發生改變時,將以所有節點組播地址FF02::1為目的地址傳送NA報文,通知鏈路上的其他節點更新鄰居快取表項。

2.鄰居不可達檢測(NUD

NUDNeighbor Unreachable Detection,鄰居不可達檢測)是節點確定鄰居可達性的過程。鄰居不可達檢測機制通過鄰居可達性狀態機來描述鄰居的可達性。

鄰居可達性狀態機儲存在鄰居快取表中,共有如下6種狀態:

1INCOMPLETE(未完成狀態):表示正在解析地址,但鄰居鏈路層地址尚未確定。

2REACHABLE(可達狀態):表示地址解析成功,該鄰居可達。

3STALE(失效狀態):表示可達時間耗盡,未確定鄰居是否可達。

4DELAY(延遲狀態):表示未確定鄰居是否可達。DELAY狀態不是一個穩定的狀態,而是一個延時等待狀態。

5PROBE(探測狀態):節點會向處於PROBE狀態的鄰居持續傳送NS報文。

6EMPTY(空閒狀態):表示節點上沒有相關鄰接點的鄰居快取表項。

2-11  鄰居狀態機

圖中實線箭頭表示由NS/NA報文互動導致的狀態變化,各狀態間的相互轉換如下:

①在EMPTY狀態時,如果有報文要傳送給鄰接節點,則在本地鄰居快取表建立該鄰接節點的表項,並將該表項置於INCOMPLETE狀態,同時向鄰接節點以組播方式傳送NS報文。

②節點收到鄰居迴應的單播NA報文後,將處於INCOMPLETE狀態的鄰居快取表項轉化為REACHABLE狀態。如果地址解析失敗(發出的組播NS超時),則刪除該表項。

③處於REACHABLE狀態的表項,如果在REACHABLE_TIME時間內沒有收到關於該鄰居的“可達性證實資訊”,則進入STALE狀態。此外,如果該節點收到鄰居節點發出的非S置位NA報文,並且鏈路層地址有變化,相關表項會進入STALE狀態。

④處於STALE狀態的表項,當有報文發往該鄰居時,這個報文會利用快取的鏈路層地址進行封裝,並使該表項進入DELAY狀態,等待收到“可達性證實資訊”。

⑤進入DELAY狀態後,如果DELAY_FIRST_PROBE_TIME時間之內還未收到關於該鄰居的“可達性證實資訊”,則該表項進入PROBE狀態。

⑥在PROBE狀態時,節點會週期性地用NS報文來探測鄰居的可達性,探測最大時間間隔為RETRANS_TIMER,在最多嘗試MAX_ UNICAST_SOLICIT次後,如果仍未收到鄰居迴應的NA報文,則認為該鄰居已不可達,該表項將被刪除。

NodeA上,NodeB的表項處於STALE狀態。此時若NodeA有報文發往NodeB,且沒有上層協議能夠提供到NodeB的“可達性證實資訊”時,則NodeA需要重新驗證到NodeB的可達性。

NUD過程與地址解析過程的主要不同之處在於以下兩點:

1NUDNS報文的目的MAC是目的節點的MAC地址;目的IPv6地址為NodeB的單播地址,而不是被請求節點組播地址。

2NA報文中的S標記須置位,表示是可達性確認報文,即這個NA報文是專門響應NS報文的。

IPv6同時定義了無狀態和有狀態地址自動配置機制。有狀態地址自動配置使用DHCPv6來給主機動態分配IPv6地址,無狀態地址自動配置通過NDP來實現。在無狀態地址自動配置中,主機通過接收鏈路上的路由器發出的RA訊息,結合介面的識別符號而生成一個全球單播地址。

1.路由器發現

路由器發現是指主機定位本地鏈路上的路由器和確定其配置資訊的過程,主要包含以下3方面內容:

1)路由器發現(Router Discovery):主機發現鄰居路由器及選擇某一個路由器作為預設閘道器的過程。

2)字首發現(Prefix Discovery):主機發現本地鏈路上的一組IPv6字首,生成字首列表。該列表用於主機的地址自動配置和on-link判斷。

3)引數發現(Parameter Discovery):主機發現相關操作引數的過程,如MTU、報文的預設跳數限制、地址分配方式等資訊。

2.重複地址檢測

DADDuplicate Address Detection,重複地址檢測)是節點確定即將使用的地址是否在鏈路上唯一的過程。所有的IPv6單播地址,包括自動配置或手動配置的單播地址,在節點使用之前必須要通過重複地址檢測。

DAD機制通過NSNA報文實現。節點會發送NS報文,其源地址為未指定地址,目的地址為介面配置的IPv6地址。在NS報文傳送到鏈路上後,如果在規定時間內沒有收到應答的NA報文,則認為這個單播地址在鏈路上是唯一的,可以分配給介面;反之,如果收到應答的NA報文,則表明這個地址已經被其他節點所使用,不能配置到介面。

3.字首重新編址

字首重新編址(Prefix Renumbering)允許網路從以前的字首平穩地過渡到新的字首,用於提供對使用者透明的網路重新編址能力。路由器通過RA報文中的優先時間和有效時間引數來實現字首重新編址。

1)優先時間(Preferred Lifetime):無狀態自動配置得到的地址保持優先選擇狀態的時間。

2)有效時間(Valid Lifetime):地址保持有效狀態的時間。

對於一個地址或字首,優先時間小於或等於有效時間。當地址的優先時間到期時,該地址不能被用來建立新連線,但是在有效時間內,該地址還能用來保持以前建立的連線。在重新編址時,站點內的路由器會繼續通告當前字首,但是有效時間和優先時間將被減小到接近於0;同時,路由器開始通告新的字首。這樣,在每個鏈路上至少有兩個字首共存,RA訊息中包括一箇舊的和一個新的IPv6字首資訊。

4.無狀態地址自動配置過程

NDP的無狀態自動配置包含兩個階段:鏈路本地地址的配置和全球單播地址的配置。當一個介面啟用時,主機會首先根據本地字首FE80::/64EUI-64介面識別符號,為該介面生成一個鏈路本地地址,如果在後續的DAD中發生地址衝突,則必須對該介面手動配置本地鏈路地址,否則該介面將不可用。需要說明的是,一個鏈路本地地址的優先時間和有效時間是無限的,永遠不超時。

對於主機上全球單播地址的配置步驟如下:

①主機節點NodeA在配置好鏈路本地地址後,傳送RS報文,請求路由器的字首資訊。

②路由器收到RS報文後,傳送單播RA報文,攜帶用於無狀態地址自動配置的字首資訊,同時路由器也會週期性地傳送組播RA報文。

 NodeA收到RA報文後,根據字首資訊和配置資訊生成一個臨時的全球單播地址。同時啟動DAD,傳送NS報文驗證臨時地址的唯一性,此時該地址處於臨時狀態。

④鏈路上的其他節點收到DADNS報文後,如果沒有使用者使用該地址,則丟棄報文,否則產生應答NSNA報文。

 NodeA如果沒有收到DADNA報文,說明地址是全域性唯一的,則用該臨時地址初始化介面,此時地址進入有效狀態。

地址自動配置完成後,路由器可以自動進行NUD,週期性地傳送NS報文,探測該地址是否可達。

在重定向過程中,路由器通過傳送重定向報文來通知鏈路上的報文傳送節點,在同一鏈路上存在一個更優的轉發資料報文的路由器。接收到該訊息的節點據此修改其本地路由表項。路由器僅為單播資料流傳送重定向報文,而重定向報文也僅以單播形式傳送到始發主機,並且只會被始發節點處理。

如圖2-12所示,NodeA的預設路由器為RTA,現在NodeA想傳送資料報文到NodeB,路由器重定向機制需要經過以下過程:

2-12  路由器重定向過程

1NodeA首先傳送第一個資料報文到它的預設路由器RTA,當該報文經過RTB到達NodeB後,RTA知道RTB是鏈路上轉發報文的更好選擇。

2RTA向始發報文的NodeA傳送一個ICMPv6重定向報文,目標地址中含有RTBIPv6地址,報文選項欄位的目標鏈路層地址中含有RTB的鏈路層地址。

3NodeA獲悉RTB是到NodeB的更好路徑後,修改自己的目的快取表,當再發送到NodeB的報文時優先發送到RTB,重定向完成。

相關推薦

IPv6鄰居發現協議

IPv6鄰居發現協議 NDP(Neighbor Discovery Protocol,鄰居發現協議)是IPv6的一個關鍵協議,它組合了IPv4中的ARP、ICMP路由器發現和ICMP重定向等協議,並對它們作了改進。作為IPv6的基礎性協議,NDP還提供了字首發現、鄰居不可達

IPV6鄰居發現協議----路由器發現

路由器發現:定位鄰居路由器,學習與地址自動配置有關的字首和配置引數。用RS和RA機制實現。 路由器請求RS:     當主機沒有配置單播地址時,就會發送路由器請求報文。路由器請求報文有助於主機迅速自動配置,不必等待IPV6路由器的週期路由器公告報文RA。       路由器

IPv6 NDP鄰居發現協議 2

1、引言   隨著IP網路規模和業務的迅速發展,IP網路的使用者數急劇增加,正因為如此,IP網路也暴露出越來越多的問題,如地址空間不足、QoS、安全問題等。為了解決Internet的這些問題,尤其是解決地址空間不足的問題,IETF於1992年在IPv4的基礎上定義了下一代

H3CSE路由-IPv6鄰居發現

PS:本篇僅挑選作者認為重要的模組,並不全面僅供複習參考,具體請自行查閱相關書籍。設有H3CNE-H3CTE學習部落格專欄,敬請關注。ND(Neighbor Discovery,鄰居發現)協議是IPv6的一個關鍵協議,它綜合了IPv4中的一些協議如ARP、ICMP路由器發現和

“大地主”IPV6鄰居發現BD

引入 因為當初設計IPv4的時候,沒有考慮到網路發展的速度這麼快,到今現在IPv4有很多不足,32位的 IPv4地址不夠用,現在128位的IPv6能完全夠用,據說可以地球上每一粒沙子都分配一個地址,而且擁有更小路由表,對組播改進能更好對服務質量進行控制,地址自動配置,安全性提高; IPv6過渡會用到NA

ipv6——下一代因特網協議

ipv6關於ipv4 ipv4,是互聯網協議的第四版,也是第一個被廣泛使用。構成現今互聯網技術的基礎的協議。ipv4可以運行在各種各樣的底層網絡上,比如端對端的串行數據鏈路,衛星鏈路等等。局域網中最常用的是以太網。 目前全球因特網所采用的協議是TCP/IP協議族。IP是TCP/IP協議族的核心協議。不足:

設備發現協議

print sch version ipp ada -s prot ans 信息   網絡環境下設備發現是一種比較常見的應用,比如查找打印機與WiFi。那麽我們應該如何通過編程實現對網絡中的特定設備進行查找呢?   常用的方式有:IP廣播與多播,以及基於這兩種方式所實現的第

生成樹協議、CDP思科設備發現協議、SSH協議

密碼庫 mark native 選中 pvst+ 技術分享 AS PE 關閉 線路冗余->交換機成環交換機成環導致:1 廣播風暴2 mac地址表震蕩一個mac在一臺交換機上只能對應一個接口,但一個接口可以對應多個mac3 重復幀拷貝 生成樹協議:802.1D、PVST

IPV6動態路由協議的配置

IPV6 IPV6地址型別:1、單播(鏈路本地地址自動配置一個為FE80/10 的地址、本地區域地址或站點本地地址字首為FEC0::/10、全球單播地址全球只有唯一的一個地址,它的地址正數第三位永遠是1,全球單播地址開頭為2或3 )地址格式:前48位本地路由選擇字首,16位子網ID(相當於IPV4中的網路I

【思科】和【華三】的鄰居發現

用過cisco裝置的人都知道,思科有一個CDP協議,可以檢視當前裝置所連線的鄰居裝置的資訊。這個命令在維護的時候經常用到,下面簡單說一下。1、show cdp nei通過show cdp nei,我們可以看到鄰居裝置的裝置名,本地連線的介面、對端裝置的大體型號及對端裝置連線的介面。 當然了,如果想檢視更加具

BitCoin對等節點發現協議

<<精通比特幣Mastering-BitCoin>> 第6章 比特幣網路 新節點是怎樣加入網路中的? 當建立一個或多個連線後,新節點將包含自身ip和addr的資訊,傳送給相鄰節點, 相鄰節點接收到資訊後,再將此條addr資訊,轉播

LLDP——鏈路層發現協議

       LLDP(Link Layer Discovery Protocol)是IEEE 802.1ab中定義的鏈路層發現協議。LLDP是一種標準的二層發現方式,可以將本端裝置的管理地址、裝置標識、介面標識等資訊組織起來,併發布給自己的鄰居裝置,鄰居裝置收到這些資訊後將

鏈路層鏈路發現協議(LLDP)講解

一、LLDP協議概述  隨著網路技術的發展,接入網路的裝置的種類越來越多,配置越來越複雜,來自不同裝置廠商的裝置也往往會增加自己特有的功能,這就導致在一個網路中往往會有很多具有不同特性的、來自不同廠商的裝置,為了方便對這樣的網路進行管理,就需要使得不同廠商的裝置能夠在網路

NsdService服務發現協議

listenToSocket首先例項化一個本地socket物件,LocalSocket物件的LocalSocketAddress地址的 Socket名稱為已初始化的mSocket,並使用該地址呼叫connect函式,從init.rc 可以看到名稱為"mdns"的Socket對應的本地服務為netd,因此Nat

以太坊節點發現協議

本檔前部分翻譯自以太坊定義的節點發現協議(版本4),後半部分給出了原始碼實現的大致流程,以幫助理解。 以太坊節點資訊的儲存採用的是`Kademlia`分散式雜湊表。理解節點發現協議主要是理解分散式雜湊表的原理,再加上定義的節點間通訊的報文格式,節點ID的定義,距離的計算,加在一起就是以太坊的節點發現協議了。

EIGRP路由協議鄰居發現以及恢復

雖然說EIGRP屬於一種距離向量路由協議,但是它在更新過程中卻採用了非週期性的、部分更新的方法,RIP和IGRP正是靠著週期性的更新探測鄰居狀態,所以EIGRP必然需要一種方法來驗證鄰居的存在。 EIGRP使用了hello包,它會每隔5秒鐘傳送一次。因為這個時間要遠遠小於RIP的30秒,以及IGRP的90

華為設備OSPF理論基礎和實現實驗(迎接IPv6數通時代的重要協議

乾頤堂軍哥hcie17.3 IPv6路由基礎-OSPFv3 關於OSPFv3的詳盡描述出現在RFC2740中,OSPFv3是OSPF Version 3的簡稱,OSPFv3是運行於IPv6的OSPF路由協議,OSPFv3在OSPFv2基礎上進行了修改,是一個獨立的路由協議。當然我們可以這樣認為OSPFv3的

如何利用snmp協議發現大型復雜環境的網絡拓撲(建議開發自動化工具的朋友可以看一下)

網絡拓撲自發現關於網絡拓撲自發現,這項技術已經是個很老的課題,早在08年就有前輩提出了相關算法,我這篇文章就是根據前輩們踩的坑,總結凝煉了利用snmp協議完成網路拓撲自發現的方法,因為snmp都是遵循rfc1213標準建立相應的mib庫信息,而使用命令cli的方式采集路由表、Mac、端口轉發表的方式會遇到異構

03-IPv6路由協議

本地 alt 兼容 bdr ospf 過程 報文 lock 路由協議 IPv6有兩種路由協議 RIPing OSPFv3 RIPng 距離矢量路由協議 規定每一跳的開銷度量值為1,最大跳數為15 組播地址ff02::9,作為目的地址來傳送路由更新報文 通常采用鏈路

CentOS7.*禁止IPv6協議

CentOSMS7.*在啟動時預設載入IPv6相關模組,而由於目前的網路還在使用IPv4協議,所以禁用IPv6。 徹底禁用IPv6的方法,修改grub,在系統啟動引導時不載入IPv6模組。 用vi或其他文字編輯器編輯以下檔案(最小化安裝的版本可能沒有這個檔案,此法不適用): vi /et