link-local address, 中文叫“链路本地地址”,它的前缀是FE80::/64
范例:FE80::713e:a426:d167:37ab
链路本地地址用于邻居发现协议和无状态自动配置进程中链路本地上节点之间的通信。使用链路本地地址作为源或目的地址的数据包不会被转发到其他链路上,即链路本地地址只在本链路上有效。
link-local:链路本地地址常用于邻居发现协议和无状态自动配置。IPv6的链路本地地址可以通过两种方式获得:
- 自动生成:设备根据链路本地地址前缀(FE80::/10)及接口的链路层地址,自动为接口生成链路本地地址。
- 手工指定:用户手工配置IPv6链路本地地址。
每个接口只能有一个链路本地地址,为了避免链路本地地址冲突,推荐使用链路本地地址的自动生成方式。当接口配置了IPv6全球单播地址后,同时会自动生成链路本地地址。
配置方式:
interface G0/0/2 //接口下
ipv6 enable //启有IPV6
- 执行命令ipv6 address ipv6-address link-local,配置接口的链路本地地址。
- 执行命令ipv6 address auto link-local,配置接口自动生成链路本地地址。
-
任意视图下执行命令display ipv6 interface [ interface-type interface-number | brief ],查看接口的IPv6信息。
-
接口视图下执行命令display this ipv6 interface,查看当前接口的IPv6信息。
dis ip routing-table 2409:874C:D00:14::3 verbose
IPv6中的重复地址检测(DAD)
地址重复检测(DAD: Duplicate Address Detection)背景要求:
. 节点在发送路由器公告(RA)之前要获得唯一的本地链路地址。
. IPv6自动配置要求在使用地址之前进行地址重复检测(DAD)。
. 标准DAD花费较长时间才能完成,因而引入了“乐观的DAD”(RFC 4429)。
标准DAD过程
(1) 在发送邻居请求(NS)前,接口必须加入全节点组播地址(FF02::1)和生成IPv6地址的请求节点组播地址(solicited-node multicast address),即接收目的地址为这些IPv6地址的分组。
(2)生成IPv6地址后随机延时一段时间后开始发送用于DAD的邻居请求(NS)消息。
邻居请求(NS)消息的源地址为::,目的地址为临时单播地址的请求节点组播地址
(3) 在DAD过程中地址处于Tentative状态(“暂时的”)(IFA_F_TENTATIVE)。在完成DAD过程后,tenativeAddr将会被作为“首选的”地址(PreferedAddr)。若发现了重复地址,则该地址变为"废弃的"地址(deprecatedAddr)。
背后原理:未确定唯一性的地址不能使用
即不能接收目的地址或者发送源地址为此地址的分组,但是与DAD相关的邻居公告(NA)消息除外。
地址冲突处理:
(1) 当节点收到目的地址为其正在做DAD检测地址的邻居请求(NS)消息时:
. 如果请求的源地址类型为IPV6_ADDR_ANY(全0地址::),则节点从接口上删除这个地址(DAD检测失败)
. 否则节点不处理此NS消息
(2) 当节点收到目的地址为其正在做DAD检测地址的邻居公告(NA)时,则节点从接口上删除这个地址(DAD检测失败)
(3) 如果节点为某个IPv6地址完成DAD检测后,收到来自其它节点发送的目的地址为此IPv6地址的用作DAD检测的邻居请求(NS)消息(此时该请求的源地址为IPV6_ADDR_ANY),则节点应该向全节点地址(ff02::1)发送邻居公告(NA)。
乐观的DAD(ODAD: Optimistic DAD)
可参见: RFC 4429 - Optimistic Duplicate Address Detection (DAD) for IPv6
(2) 生成IPv6地址后立即发送用于DAD的邻居请求(NS)消息
(3) 在DAD过程中引入Optimistic状态地址
ODAD允许在完成对optimisticAddr的DAD之前使用该地址,
背后原理:未确定唯一性之前地址可以先使用
即能接收目的地址或者发送源地址为此地址的分组。
optimisticAddr在完成DAD之前为Optimistic状态(IFA_F_OPTIMISTIC)。在完成DAD过程后,optimisticAddr将会被作为“首选的”地址(PreferedAddr)。若发现了重复地址,则该地址变为"废弃的"地址(deprecatedAddr)。
DAD是移动IPv6(MIPv6)切换时延中所需时间最长的一个阶段,RFC 4429中提出的ODAD可以使得在DAD完成之前 节点 可以利用“暂时的”地址进行通信,从而避免了MIPv6切换过程中等待DAD完成后节点才能使用所得到的地址进行通信所造成的延时,因而MIPv6的切换时延将会大大减小。
发送的与Optimisitc地址相关的任何消息不能覆盖已有的邻居缓存(NC:Neighbour Cache),因而需要对原有协议RFC 2461/2进行修改,以避免在出现地址碰撞的情况下网络不会中断:
* 清除针对Optimistic地址的邻居公告(NA)消息中的‘Override’标志,
以避免邻居在接收到该NA消息后覆盖其已有的NC表项。
* 不发送源地址为Optimistic地址的邻居请求(NS)消息。
NS消息中要包含一个发送者链路地址选项(SLLAO: Source Link-Layer Address Option)选项, 这可能会破坏邻居节点的NC.
DAD过程中发送的NS消息源地址为未指定地址, 不携带SLLAO选项.
* 如果发送源地址为Optimistic地址的路由器请求(RS)消息,则不能带有SLLAO选项。
发送的RS消息中可以使用源地址为未指定地址或者不带有SLLAO选项。