NDP鄰居發現協定
Neighbor Discovery Protocol
NDP使用:ICMPv6封包中【RS、RA、NS、NA、重定向】五種消息
RS+RA可實作
- 路由器發現
- 無狀态自動配置
- 字首重編址
NS+NA可實作
- MAC位址解析
- DAD(重複位址檢測)
- 鄰居狀态跟蹤(NUD鄰居不可達檢測)
RS Options
RA M O Options
NS Target IP Options
NA R S O Target IP Options
RS:路由器請求(Type=133)
Router Solicitation
- 路由器收到RS消息,立即回複RA消息
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL5YDNwMDMzMTMzIDOwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
RA:路由器通告(Type=134)
Router Advertisement
- R 周期性(200s~600s随機)發送RA
收到RS後,立即回複RA
華為路由器預設不發送RA,[R] undo ipv6 nd ra halt啟用
Cur Hop Limit:跳數限制
Managed位:是否DHCPv6配IP
0=無狀态自動配置IP(預設)
1= DHCPv6配置IP
Other-flag位:是否DHCPv6配其他參數(生存時間、鄰居重傳時間、MTU、DNS等)
0=無其他參數(預設)
1=DHCPv6配其他參數
- M、O後,空一位,再接下來2位是Router Preference位,把路由器分為low、medium(預設)、high三個優先級。當多個路由器回複RA消息時,靠此優先級決定哪個路由器成為網關,若優先級相同,則負載分擔
Router Lifetime:作為網關有效時間(預設1800s)
Reachable Time:到達時間(機關:ms)檢測可達性、延遲(類似ping時延)
Retrans Time:重傳計時器(機關:ms)表示主機重傳RS消息的時間
Options:攜帶字首、MAC、優選生存期(Preferred Lifetime)、有效生存期(Valid
Lifetime)、MTU等參數
路由器發現
路由器收到RS,立即回複RA
PC也可以是R
無狀态自動配置(SLAAC)
StateLess Address Auto Configuration
LAN中裝置收到RA消息(option攜帶字首64bit),其他裝置可以自動生成IPv6位址
位址格式 = RA字首 + EUI-64
[PC-G] ipv6 address auto global
- PC獲得位址後,還需要DAD
- [PC-G] ipv6 address auto global default,将R的Link-Local位址作為自己網關,産生預設路由(UNR協定類型)
字首重編址
R周期性(200s~600s随機)發送RA
字首重編址作用
- 在SLAAC時,R改變字首,PC跟着改
- R周期發RA(帶着字首),使PC位址始終處于優選生存期
位址生存期
無狀态自動配置,通過DAD後,接口擁有了IPv6位址
- 路由器周期性發RA,保證主機IP處于優選生存期
NS:鄰居請求(Type=135)
- MAC位址解析、NUD、DAD
Target Address:對方的IP
Options: 我的MAC位址(作為MAC位址解析時)
DAD、NUD的NS消息沒有Options字段
NS的目的位址: MAC位址解析、DAD中,被請求節點多點傳播位址
NUD中,單點傳播位址
NA:鄰居通告(Type=136)
R 收到NS後,立即回複NA 單點傳播
R MAC改變,發送NA FF02::1 O置位
R位:置位表示:我是路由器(在NUD中用于檢測R是否變為主機)
S位:回應NA的NS(S置位)
Override位:MAC改變位
Options:我的MAC位址
MAC位址解析(ARP)
- IPv6接口會為自己每個單點傳播位址(包括Link-local)建立一個被請求節點多點傳播位址
被請求節點多點傳播位址 = FF02::1:FFxx:xxxx(單點傳播末24位)
- 可能存在多個單點傳播位址最後24位相同的情況,被請求節點多點傳播位址相同
此時根據NS封包中的Target Address判斷發送給誰
- 和ARP不同的一點在于
ARP Reply中 Target IP=R1
NS中 Target Address=2::2
Target MAC辨別的是對哪個MAC位址進行解析,是以始終不變
設計IPv6 ARP的時候,因為不知道目的MAC 是以需要填充多點傳播MAC;因為使用了多點傳播MAC,是以必須有一個三層多點傳播IP。于是就為每個IP設計了被請求節點多點傳播位址。
為什麼不直接設計基于2層的ARPv6?
答:因為ARP Request廣播,IPv6的廣播域中可能存在大量(虛拟)終端,轉發效率不高
IPv6取消了廣播,設計了被請求節點多點傳播位址=MAC位址解析、DAD的DIP
二層MAC = 3333-XXXX-XXXX
三層被請求節點多點傳播位址 = FF02::1:FFxx:xxxx
~單點傳播IPv6位址
MAC末位是從IPv6單點傳播映射下來的,大大減少會解封裝該2層封包的PC數量
IPv4 —— ARP表項
IPv6 —— 直接檢視ipv6鄰居dis ipv6 neighbors(顯示的為link-local和MAC對應關系)
DAD重複位址檢測(免費ARP)
Duplicate Address Detection
- DAD類似免費ARP
IP改變、VRRP主備切換時,向自己IP的被請求節點多點傳播位址發送NS
但MAC位址改變時,直接發送NA(O置位)
DAD NS源位址=:: NS目的位址=試驗位址的被請求節點多點傳播位址
NA目的位址=FF02::1
- 預配位址稱為試驗位址(tentative address)
- R1發送NS後,設定計時器,逾時未收到NA,則使用該位址。
該位址狀态由試驗→已配置設定(assigned)
NUD鄰居不可達檢測
Neighbor Unreachable Detection
NUD是指:IPv6路由器之間互動NS、NA,以跟蹤鄰居狀态
IPv6鄰居狀态機(鄰居狀态跟蹤)
- [R] display ipv6 neighbors //檢視路由器鄰居表(ARP表)
- MAC位址解析、DAD的NS的DIP=被請求節點多點傳播位址
NUD的NS消息目的位址是鄰居單點傳播位址
重定向(Type=137)
重定向原理
- 重定向隻對主機有效,對路由器無效
【HCIE-R&S 天梯路】NDPNDP鄰居發現協定 - R1發現流量入接口=出接口,則發送給主機一個重定向封包,告訴主機更優下一跳
Path MTU發現
路徑上資料包>MTU
IPv4:分片
IPv6:丢包(IPv6僅在源節點分片、目的節點重組)
- IPv6要求MTU≥1280Byte
源節點發自己接口MTU的封包,如果路徑上有更小的MTU,則會傳回ICMP錯誤封包(類型=資料包過大,同時攜帶更小的MTU)
- 動态PMTU探測對外連結路MTU值,老化時間=10min
優點:可以減少因MTU帶來的丢包
缺點:通信前需要PMTU發現,增加時延
[R] ipv6 pathmtu x::x