IPv6地址解析原理:
IPv6的地址解析包括两个过程:一、解析目的IP对应的链路层地址,二、邻居可达性状态的维护过程。
在IPv4中使用的是ARP协议,在IPv6中使用的是ND(Neighbor discover)协议中的NS和NA报文来实现的。
采用ND协议的优势在于增加了地址解析协议与底层链路的独立性。对每一种链路层系诶都是用相同的地址解析协议,无须再为每一种链路层协议定义一个新的地址解析协议。
减小报文的传播范围。在IPv4中,ARP使用的是广播地址,必须泛滥到二层网络的每台主机。IPv6的地址解析利用三层的组播寻址限制了地址的传播范围,通过将地址解析请求发送到特定解析地址所属的被请求节点组播组(FF02::1:FF00:0/104+IPv6地址后24位组成),减小了报文的传播范围,节省了网络的带宽。
在IPv6中,ND协议通过在节点之间交互NS和NA报文完成IPv6地址到链路层地址的解析,解析后用得到的链路层地址和IPv6地址等信息来建立相应的邻居缓存表项。
NS报文的主要功能字段包括Target Address和Option字段。
TargetAddress包含待解析的IPv6地址。
NA报文的Option字段只使用链路层地址选项(Link layer Address Option)。链路层地址选项包括类型、长度和地址三个部分。
当类型为1时,表示源链路层地址,在NS、RS、Redirect报文中使用;当类型为2时,表明链路层地址为目标链路层地址,在NA报文中使用。
IPv6地址解析过程:假如网络中有主机A和主机B。A的链路层地址为MAC1,IPv6地址为IP1;B的链路层地址为MAC2,IPv6地址为IP2(假设为2001::1)。则A查询B的链路层地址的过程如下:
1)节点A发送一个NS报文到链路上,目的IPv6地址为B对应的被请去节点组播地址(FF02::1:FF00:1),目标地址为IP2,选项字段中携带MAC1;
2)节点B接收到该DS报文后,根据NS报文中的源IPv6地址和源链路层地址选项更新自己的邻居缓存表项,并发送一个NA报文来应答NS报文,报文Option字段中的链路层地址为自己的链路层地址MAC2;
3)节点A收到NA报文后,根据报文中携带的节点B的链路层创建一个到目标节点B的邻居缓存表项。
以下为IPv6地址解析实验过程:
拓扑:
实验命令及验证截图:
1.PC机IPv6地址配置:
2.路由器配置:
[Huawei]ipv6
[Huawei]int e0/0/0
[Huawei-Ethernet0/0/0]ipv6 enable
[Huawei-Ethernet0/0/0]ipv6 address 1::1 64
[Huawei-Ethernet0/0/0]ipv6address auto link-local
3.验证:
PC机ping1::1之前路由器上没有邻居信息,PC机ping1::1之后路由器上查看[Huawei]disipv6 neighbors
出现:
[Huawei]dis ipv6 neighbors
-----------------------------------------------------------------------------
IPv6 Address : 1::2
Link-layer : 5489-985e-2a53 State : REACH
Interface : Eth0/0/0 Age : 0
VLAN : - CEVLAN:-
VPN name : Is Router:FALSE
Secure FLAG : UN-SECURE
-----------------------------------------------------------------------------
Total: 1 Dynamic: 1 Static: 0
PC机e0/0/0口抓包:
NS报文:
地址ff02::1::ff00:1是1::1被请求节点组播地址。Link-layer包含了自己的链路层地址。
NA报文:
Flags标志位字段中三个标志位都置位了,router字段表示发送者是router、solicited字段表示此报文是对NS的回应、override字段表示本次地址解析结果覆盖以前的结果。NA报文以单播形式发送。