当前位置:文档之家› IPv6邻居发现ND

IPv6邻居发现ND

IPv6基本术语
邻节点
主机
主机
局域网段
交换机
链路
内部子网 路由器
子网
邻节点
主机
主机
路由器 其他子网
网1 络 IPv6的网络元素
IPv6地址分类
单播地址(Unicast Address) 组播地址(Multicast Address) 任播地址(Anycast Address)
2
单播地址
在该类IP报头中,源地址可以是发起主机的接口地址,或是DAD中的未指定地址。
18
邻居通告NA结构
3个标志:
R路由器标志为1,发送方为路由器; S请求标志为1,消息为响应邻居请求发出; O覆盖标志(1)表示通告消息中的信息应当覆盖现有邻居缓存记录,并且更新所有
缓存器中的链路层地址。
19
1 路由器请求Router solicitation (ICMPv6 type 133) 2 路由器公告Router advertisement (ICMPv6 type 134) 3 邻居请求Neighbor solicitation (ICMPv6 type 135) 4 邻居公告Neighbor advertisement (ICMPv6 type 136) 5 重定向Redirect (ICMPV6 type 137)
经过地址解析获得二层地址,从而进入“(Reachable)可达”状态进行通 信,这时主机“可到达时间”定时器开始计时。
定时器超时后,表项就进入“(Stale)失效”状态。
有报文发往邻居时,这个报文会利用缓存的二层地址进行封装,并进入 “Delay延迟”状态,期待上层协议给出一个关于邻居的“可达到性”信息。 在Delay_first_probe_time时间之内还未能收到关于该邻居的任何“可达到 性”信息,向该邻居发送邻居请求报文,并且该表项进入“probe探测”状 态。
PC1 1::1
Switch
PC2 1::2
邻居表中没有1::2项: 添加[1::2, , Incomplete] 修改为[1::2,MAC2,Reacheable]
Neighbor Unreachability
Detection
Multicast Neighbor Solicitation:[1::2, ?], [1::1, MAC1] Unicast Neighbor Advertisement:[1::2, MAC2] [MAC1 to MAC2]Echo Request [MAC2 to MAC1]Echo Reply
邻居发现选项
Type:1.源链路层地址;2.目标链路层地址;3.前缀信息;4.重定向报头; 5.MTU
Length指出选项长度(含Type和Length)。数值0不合法,该数据包会被丢弃
20
邻居不可到达性探测(NUD)
NUD(Neighbor Unreachability Detective)是节点 确定它邻居可达性的过程
Probe状态:节点会持续向probe状态的邻居发送请求报文,直到收到“可
达 到 性 ” 信 息 , 两 个 请 求 间 隔 为 retrans timer , 最 多 尝 试
Max_unicase_solicit次。
23
NUD状态
24
典型邻居状态迁移
上层要发送报文 <1::1, 1::2>
Padding
IPv6 报头
Version
Traffic Class
Payload Length
Flow Label
Next Header
Hop Limit
Source Address
Destination Address
Legend
IPv4 和 IPv6相同字段 IPv6不再保留字段 IPv6中名称和位置改变的字段 IPv6新字段
NA报文
源MAC:00E0-FC00-0002;目的MAC: 00E0-FC00-0001 源IP地址: 1::2:B; 目的IP地址: 1::1:A 目标地址: 1::2:B 选项: 00E0-FC00-0002(目的节点MAC地址) 标志S位:置1
17
邻居请求NS结构
两个功能:由ARP处理的链路层地址解析,以及邻居不可达性检测机制。 如果目的地址是一个多播地址,那么源地址正在解析一个链路层地址。 如果源地址正在检测一个邻居的可达性,那么目的地址是一个单播地址。 可用于重复IP地址检测(duplicate IP address detection, DAD)。
16
地址解析示意图
1::1:A/64
1::2:B/64
00E0-FC00-0001
A
NS报文
00E0-FC00-0002
B
源MAC:00E0-FC00-0001;目的MAC:3333-FF02-000B 源IP地址: 1::1:A; 目的IP地址: FF02::1:FF02:B (被请求节点组播地址) 目标地址: 1::2:B 选项: 00E0-FC00-0001(源节点MAC地址)
6
邻居发现(Neighbor Discovery)协议
IPv6的邻居发现(Neighbor Discovery)协议结合 了 IPv4 中 的 地 址 解 析 协 议 ( Address Resolution Protocol ARP)和ICMP的路由器发现和重定向。
IPv6节点将邻居发现用于下列目的: 确定同一链路节点的第2层地址; 找到可以转发它们的数据包的邻近路由器 随时跟踪哪些邻居可达,哪些不可达并且检测 有改变的链路层地址。
10
主机的数据结构
IPv6主机需要为每一接口维护的信息是:
邻居缓存表:近期发送过数据流的邻居信息组成 的表项
目的地缓存表:由已发送报文的目的地址所组成 的表项
前缀列表:规定一组“在连接(On-link)”地址的前 缀组成的列表。前缀列表的表项产生于路由器通 告接收到的信息。
默认路由器列表:接收数据包的路由器列表。
4
报文结构
固定头部 扩展头部 上层协议
固定头部 扩展头部1
扩展头部
Next Header Next Header Next Header
Next Header
扩展头部n 上层协议
Next Header
5
ICMPv6报文格式
Type值决定了报文所属的类别 0 -127:错误报文 128-255:信息报文
Unicast Neighbor Solicitation:[1::1,?],[FE80::,MAC2]
Neighbor Advertisement:[1::1,MAC1]
添加邻居缓存项 <1::1,MAC1, STALE>
修改 <1::1, MAC1, Delay>
修改 <1::1, MAC1,Probe>
以配置为不通告前缀,此时路由器接收到含未通告的前缀的数据包,会发布ICMP重 定向消息。 标准身份验证和安全机制可应用于邻居发现。
13
IPv6邻居发现(ND)机制
IPv6地址解析
14
地址解析
IPv6取消了ARP协议 通过邻接点请求报文(NS)和邻接点公告报文(NA)
的交互来解析链路层地址
11
主机数据包的发送算法
节点向目的地发送数据包时,使用目的地缓存、前缀列 表、默认路由器列表确定合适的下一跳,然后路由器查 询邻居缓存确定邻居的链路层地址。
IPv6单播地址下一跳确定的操作方法是:发送者使用前 缀列表中的前缀进行最长前缀匹配,确定数据包的目的 地是在连接的还是非连接的。如果下一跳是在连接的, 下一跳地址就和目的地址相同,否则发送者从默认路由 器列表中选择下一跳。
9
ND重要概念
On-link:地址存在于指定链路某个接口上 Off-link:地址不存在与指定链路某个接口上 可达性(reachability):邻居节点的IP层是
否可达 目 标 ( target ) 地 址 : 地 址 解 析 、 重 定 向 、
DAD 和NUD中用到,注意不要和目的地址 (Destination)混淆
NUD加强了网络的强壮性,它使用的不是简单的超 时删除机制,而是可达性状态机。
21
邻居缓存和目的地缓存
邻居缓存:邻居缓存维护着一份最近有过通信的邻居的列 表。 按照他们的单播IP地址列出,每条记录包含了有关邻居 的链路层地址的信息,以及一个标志(邻居是路由器还 是主机)。 记录还包含队列中数据包的信息,邻居可达性信息,以 及下次邻居不可达性检测时间。
12
IPv6的ND相对于对于IPv4协议的改进
邻居不可达检测是基础协议的一部分,邻居不可达检测在路由器出错或链路接口改 变的情况下,改善了数据包的传输。
路由器通告和ICMP重定向使用本地链路地址来识别路由器。 邻居发现协议被用来检测一个链路上重复的IP地址。 现在路由器发现是基础协议集的一部分,IPv4机制则需要从路由表中获取信息。 路由器通告数据包中包含了路由器的链路层地址。收到路由器通告的节点无需再发
IPv6单播地址分类:
全球单播地址 例 2001:A304:6101:1::E0:F726:4E58
链路本地地址 例 FE80::E0:F726:4E58
站点本地地址 例 FEC0::E0:F726:4E58
唯一本地地址 例 FC00::1/7
特殊地址
例 ::1 ::
兼容地址
例 0:0:0:0:0:0:192.168.1.1
修改 <1::1, MAC1, Reachable>
RECHEABLETIME以后。。。 修改
<1::1, MAC1, Stale>
相关主题