IPv6地址/前缀的分配与更新原则
IPv6地址分配的优先次序
DHCPv6服务器按照如下次序为DHCPv6客户端选择IPv6地址/前缀。
选择IPv6地址池
DHCPv6服务器的接口可以绑定IPv6地址池,DHCPv6服务器将选择该IPv6地址池为接口下的DHCPv6客户端分配地址/前缀。对于存在中继的场景,DHCPv6服务器的接口可以不绑定IPv6地址池,而是根据报文中第一个不为0的“link-address”字段(标识DHCPv6客户端所在链路范围),选择与地址池中已配置的网络前缀或IPv6地址前缀属于同一链路范围的地址池。
选择IPv6地址/前缀
确定地址池后,DHCPv6服务器将按照下面步骤为DHCPv6客户端分配IPV6地址/前缀:
- 如果地址池中为客户端指定了地址/前缀,优先从地址池中选择与客户端DUID匹配的地址/前缀分配给客户端。
- 如果客户端报文中的IA选项携带了有效的地址/前缀,优先从地址池中选择该地址/前缀分配给客户端。如果该地址/前缀在地址池中不可用,则另外分配一个空闲地址/前缀给客户端。如果IPV6前缀长度比指定分配长度大,则按指定分配长度来分配。
- 从地址池中选择空闲地址/前缀分配给客户端,保留地址、冲突地址和已被分配的地址不能再分配给客户端。其中,保留地址包括:未指定地址、组播地址、环回地址、链路本地地址、NSAP和任播地址(RFC2526中定义)等。
- 如果没有合适的IPv6地址/前缀可以分配,则分配失败。
DHCPv6地址租约更新
DHCPv6服务器为DHCPv6客户端分配的地址是有租约的,租约由生命期(包括地址的首选生命期和有效生命期构成)和续租时间点(IA的T1、T2)构成。地址有效生命期结束后,DHCPv6客户端不能再使用该地址。在有效生命期到达之前,如果DHCPv6客户端希望继续使用该地址,则需要更新地址租约。
DHCPv6客户端为了延长其与IA关联的地址的有效生命期和首选生命期,在T1时刻,发送包含IA选项的Renew报文给服务器,其中IA选项中携带需要续租的IA地址选项。如果DHCPv6客户端一直没有收到T1时刻续租报文的回应报文,那么在T2时刻,DHCPv6客户端通过Rebind报文向DHCPv6服务器继续续租地址。
T1时刻地址租约更新过程如图9-8所示。
T1时刻地址租约更新过程如下:
- DHCPv6客户端在T1时刻(推荐值为优先生命期的0.5倍)发送Renew报文进行地址租约更新请求。
- DHCPv6服务器回应Reply报文。
- 如果DHCPv6客户端可以继续使用该地址,则DHCPv6服务器回应续约成功的Reply报文,通知DHCPv6客户端已经成功更新地址租约。
- 如果该地址不可以再分配给该DHCPv6客户端,则DHCPv6服务器回应续约失败的Reply报文,通知DHCPv6客户端不能获得新的租约。
T2时刻地址租约更新过程如图9-9所示。
T2时刻地址租约更新过程如下:
- DHCPv6客户端在T1时刻发送Renew请求更新租约,但是没有收到DHCPv6服务器的回应报文。
- DHCPv6客户端在T2时刻(推荐值为优先生命期的0.8倍),向所有DHCPv6服务器组播发送Rebind报文请求更新租约。
- DHCPv6服务器回应Reply报文。
- 如果DHCPv6客户端可以继续使用该地址,则DHCPv6服务器回应续约成功的Reply报文,通知DHCPv6客户端已经成功更新地址/前缀租约。
- 如果该地址不可以再分配给该DHCPv6客户端,则DHCPv6服务器回应续约失败的Reply报文,通知DHCPv6客户端不能获得新的租约。
如果DHCPv6客户端没有收到DHCPv6服务器的应答报文,则到达有效生命期后,DHCPv6客户端停止使用该地址。
IP地址预留
DHCPv6服务器支持预留IPv6地址,即保留部分IPv6地址不参与动态分配。比如预留的IPv6地址可作为DNS服务器的IPv6地址。