DHCPv6技术介绍

DHCPv6概述

DHCPv6(Dynamic Host Configuration Protocol for IPv6,支持IPv6的动态主机配置协议)是针对IPv6编址方案设计的,为主机分配IPv6前缀、IPv6地址和其他网络配置参数的协议。

与其他IPv6地址分配方式(手工配置、通过路由器公告消息中的网络前缀无状态自动配置等)相比,DHCPv6具有以下优点:

  • 不仅可以分配IPv6地址,还可以分配IPv6前缀,便于全网络的自动配置和管理。
  • 更好地控制地址的分配。通过DHCPv6不仅可以记录为主机分配的地址/前缀,还可以为特定主机分配特定的地址/前缀,以便于网络管理。
  • 除了IPv6前缀、IPv6地址外,还可以为主机分配DNS服务器、域名等网络配置参数。

DHCPv6网络构成

图 1 DHCPv6网络构成

如图 1所示,DHCPv6典型组网中包括以下三种角色:

  • DHCPv6客户端:动态获取IPv6地址、IPv6前缀或其他网络配置参数的设备。
  • DHCPv6服务器:负责为DHCPv6客户端分配IPv6地址、IPv6前缀和其他网络配置参数的设备。DHCPv6服务器不仅可以为DHCPv6客户端分配IPv6地址,还可以为其分配IPv6前缀。如图 1所示,DHCPv6服务器为DHCPv6客户端分配IPv6前缀后,DHCPv6客户端向所在网络发送包含该前缀信息的RA消息,以便网络内的主机根据该前缀自动配置IPv6地址。
  • DHCPv6中继:DHCPv6客户端通过本地链路范围的组播地址与DHCPv6服务器通信,以获取IPv6地址和其他网络配置参数。如果服务器和客户端不在同一个链路范围内,则需要通过DHCPv6中继来转发报文,这样可以避免在每个链路范围内都部署DHCPv6服务器,既节省了成本,又便于进行集中管理。

DHCPv6地址/前缀分配过程

DHCPv6服务器为客户端分配地址/前缀的过程分为两类:

  • 交互两个消息的快速分配过程
  • 交互四个消息的分配过程

交互两个消息的快速分配过程

图 2 地址/前缀快速分配过程

如图 2所示,地址/前缀快速分配过程为:

  • DHCPv6客户端在发送的Solicit消息中携带Rapid Commit选项,标识客户端希望服务器能够快速为其分配地址/前缀和网络配置参数;
  • 如果DHCPv6服务器支持快速分配过程,则直接返回Reply消息,为客户端分配IPv6地址/前缀和其他网络配置参数。如果DHCPv6服务器不支持快速分配过程,则采用交互四个消息的分配过程为客户端分配IPv6地址/前缀和其他网络配置参数。

交互四个消息的分配过程

交互四个消息的分配过程如图 3所示。

图 3 交互四个消息的分配过程

交互四个消息分配过程的简述如表 1。

表 1 交互四个消息的分配过程

———————————————————————

步骤  发送的消息   说明

——————————————————————–

(1)  Solicit         DHCPv6客户端发送该消息,请求DHCPv6服务器为其分配IPv6地址/前缀和网络配置参数

(2)  Advertise   如果Solicit消息中没有携带Rapid Commit选项,或Solicit消息中携带Rapid Commit选项,但服务器不支持快速分配过程,则DHCPv6服务器回复该消息,通知客户端可以为其分配的地址/前缀和网络配置参数

(3) Request      如果DHCPv6客户端接收到多个服务器回复的Advertise消息,则根据消息接收的先后顺序、服务器优先级等,选择其中一台服务器,并向该服务器发送Request消息,请求服务器确认为其分配地址/前缀和网络配置参数

(4)  Reply          DHCPv6服务器回复该消息,确认将地址/前缀和网络配置参数分配给客户端使用

———————————————————————

地址/前缀租约更新过程

DHCPv6服务器分配给客户端的IPv6地址/前缀具有一定的租借期限。租借期限由有效生命期(Valid Lifetime)决定。地址/前缀的租借时间到达有效生命期后,DHCPv6客户端不能再使用该地址/前缀。在有效生命期到达之前,如果DHCPv6客户端希望继续使用该地址/前缀,则需要更新地址/前缀租约。

图 4 通过Renew更新地址/前缀租约

如图 4所示,地址/前缀租借时间到达时间T1(推荐值为首选生命期Preferred Lifetime的一半)时,DHCPv6客户端会向为它分配地址/前缀的DHCPv6服务器单播发送Renew报文,以进行地址/前缀租约的更新。如果客户端可以继续使用该地址/前缀,则DHCPv6服务器回应续约成功的Reply报文,通知DHCPv6客户端已经成功更新地址/前缀租约;如果该地址/前缀不可以再分配给该客户端,则DHCPv6服务器回应续约失败的Reply报文,通知客户端不能获得新的租约。

图 5 通过Rebind更新地址/前缀租约

如图 5所示,如果在T1时发送Renew请求更新租约,但是没有收到DHCPv6服务器的回应报文,则DHCPv6客户端会在T2(推荐值为首选生命期的0.8倍)时,向所有DHCPv6服务器组播发送Rebind报文请求更新租约。如果客户端可以继续使用该地址/前缀,则DHCPv6服务器回应续约成功的Reply报文,通知DHCPv6客户端已经成功更新地址/前缀租约;如果该地址/前缀不可以再分配给该客户端,则DHCPv6服务器回应续约失败的Reply报文,通知客户端不能获得新的租约;如果DHCPv6客户端没有收到服务器的应答报文,则到达有效生命期后,客户端停止使用该地址/前缀。


DHCPv6无状态配置

DHCPv6无状态配置简介

DHCPv6服务器可以为已经具有IPv6地址/前缀的客户端分配其他网络配置参数,该过程称为DHCPv6无状态配置。

DHCPv6客户端通过地址无状态自动配置功能成功获取IPv6地址后,如果接收到的RA(Router Advertisement,路由器通告)报文中M标志位(Managed address configuration flag,被管理地址配置标志位)为0、O标志位(Other stateful configuration flag,其他配置标志位)为1,则DHCPv6客户端会自动启动DHCPv6无状态配置功能,以获取除地址/前缀外的其他网络配置参数。

地址无状态自动配置是指节点根据路由器发现/前缀发现所获取的信息,自动配置IPv6地址。

DHCPv6无状态配置过程

图 6 DHCPv6无状态配置工作过程

如图 6所示,DHCPv6无状态配置的具体过程为:

  • 客户端以组播的方式向DHCPv6服务器发送Information-request报文,该报文中携带Option Request选项,指定客户端需要从服务器获取的配置参数。
  • 服务器收到Information-request报文后,为客户端分配网络配置参数,并单播发送Reply报文将网络配置参数返回给客户端。
  • 客户端检查Reply报文中提供的信息,如果与Information-request报文中请求的配置参数相符,则按照Reply报文中提供的参数进行网络配置;否则,忽略该参数。如果接收到多个Reply报文,客户端将选择最先收到的Reply报文,并根据该报文中提供的参数完成客户端无状态配置

DHCPv6中继工作过程

图 7 DHCPv6中继的工作过程

通过DHCPv6中继动态获取IPv6地址/前缀和其他网络配置参数的过程中,DHCPv6客户端与DHCPv6服务器的处理方式与不通过DHCPv6中继时的处理方式基本相同。图 7中只说明DHCPv6中继的转发过程:

  • DHCPv6客户端向所有DHCPv6服务器和中继的组播地址FF02::1:2发送请求;
  • DHCPv6中继接收到请求后,将其封装在Relay-forward报文的中继消息选项(Relay Message Option)中,并将Relay-forward报文发送给DHCPv6服务器;
  • DHCPv6服务器从Relay-forward报文中解析出客户端的请求,为客户端选取IPv6地址和其他参数,构造应答消息,将应答消息封装在Relay-reply报文的中继消息选项中,并将Relay-reply报文发送给DHCPv6中继;
  • DHCPv6中继从Relay-reply报文中解析出服务器的应答,转发给DHCPv6客户端;

DHCPv6客户端根据DHCPv6服务器分配的IPv6地址/前缀和其他参数进行网络配置。

协议规范

与DHCPv6相关的协议规范有:

  • RFC 3736:Stateless Dynamic Host Configuration Protocol (DHCP) Service for IPv6
  • RFC 3315:Dynamic Host Configuration Protocol for IPv6 (DHCPv6)
  • RFC 2462:IPv6 Stateless Address Autoconfiguration
  • RFC 3633:IPv6 Prefix Options for Dynamic Host Configuration Protocol (DHCP) version 6

原创文章,作者:满天星,如若转载,请注明出处:https://www.ipv6s.com/basis/20100916125.html

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注