为什么需要address autoconfiguration
如下图,一台主机可以配置多个ipv6地址,如果每个地址都要手动配置,那还不把人累死。
IPv6 地址结构
链路本地IPv6 单播地址(link-local address)
类似于windows系统中IPv4的169.254.0.0/16地址(link-local IPv4 address)
它的有效范围仅仅在所处链路上。以FE80::/10为前缀,11-64位为0,外加一个64bits的接口标识(一般是EUI-64)。
本地站点地址(Site-local address)
类似IPv4中的私有地址。
该地址以FEC0::/10为前缀。也就是说最高10 bits固定为1111111011,紧跟在后面的是连续38 bits 的0。因此,对于站点本地地址来说,前48bits 总是固定的。在接口ID和高位48bits特定前缀之间有16bits 子网ID字段,供机构在内部构建子网。站点本地地址不是自动生成的,是手工配置的。
站点本地地址只能够在本地或者私有环境中使用,不能访问公网。
可聚合全球单播(Aggregatable golbal address)
一般从运营商处申请到的IPv6地址空间为/48,三个最高有效位始终设置为001,再由自己根据需要进一步规划:
被请求节点组播地址(Solicited-node)
在IPv6组播地址中,有一种特别的组播地址,叫做Solicited-node地址(被请求节点组播地址)。
Solicited-node地址是一种特殊用途的地址.主要用于重复地址检测(DAD)和替代IPv4中的ARP。
Solicited-node地址由前缀FF02::1:FF00:0 / 104和ipv6单播地址的最后24位组成。
一个IPv6单播地址对应一个Solicited-node地址。Solicited-node地址有效范围为本地链路范围。
地址格式: FF02:0:0:0:0:1:FFXX:XXXX,具体的对应关系如下:
如何自动配置地址
ipv6的地址都是由Prefix + interface ID组成的,其中interface ID由MAC地址转换而来。
链路本地地址(link-local address)
Prefix是固定的FE80::
本地站点地址(Site-local address)和可聚合全球单播 (Aggregatable golbal address)
Prefix 可通过RA(Router Advertisement) 消息中的Prefix Information选项来修改。
其它配置参数
其它配置参数可通过RA(Router Advertisement) 消息修改,如:hop limit, reachable time, retransmission timer,MTU等。
自动配置流程
For IPv6 node
- 根据FE80::/64前缀和基于EUI-64编码的Interface ID,生成临时本地链路地址。
- 通过DAD(重复地址侦测,Duplicate address Detection)判断上面生成的临时本地链路地址是否唯一。
- 如果收到NA(Neighbor Advertisement)消息,说明此时网络地址有冲突,则停止自动配置。通过手动设置或者自动设置的方式重新获取Interface ID,再通过第2步的方式进行判读。
- 如果没有收到NA(Neighbor Advertisement)消息,说明该临时地址可用,后续将使用该地址。
For IPv6 host
- 主机发送RS(Router Solicatation)消息。
- 如果没有收到RA(Router Advertisement)消息,则主机通过stateful address auto-configuration获取地址和其它配置。
- 如果收到RA(Router Advertisement)消息,则根据该消息内容对主机进行配置,包括:hop limit, reachable time, retransmission timer,MTU等。
- Prefix information选项含义:
- On-Link置1,将Prefix添加到prefix list。
- Autonomous置1,使用Prefix和Interface ID生成一个临时地址。
- 通过DAD(重复地址侦测,Duplicate address Detection)进行地址唯一性验证
- 如果临时地址正在使用,则不使用地址对接口进行初始化。
- 如果临时地址没用在使用,则使用地址对接口进行初始化。
- Managed Address Configuration置1,通过stateful address auto-configuration协议获取附加地址。
- Other Stateful Configuration置1,通过stateful address auto-configuration协议获取附加配置参数。
处理流程图