DHCP v6

来源:互联网 发布:ai软件官方下载 编辑:程序博客网 时间:2024/04/29 13:09


DHCP v6

4.1 介绍

定义

IPv6 动态主机配置协议DHCPv6(Dynamic Host Configuration Protocol for IPv6)是针对IPv6

编址方案设计,为主机分配IPv6地址/前缀和其他网络配置参数的一种有状态协议。

目的

IPv6 协议具有地址空间巨大的特点,但同时长达128比特的IPv6地址又要求高效合理

的地址自动分配和管理策略。IPv6无状态地址配置方式(参看协议RFC2462)是目前广

泛采用的IPv6地址自动配置方式。配置了该协议的主机只需相邻路由器开启IPv6路由

通告功能,即可以根据通告报文包含的前缀信息自动配置本机地址。

无状态地址配置方案中路由器并不记录所连接的IPv6主机的具体地址信息,可管理性

差。而且当前无状态地址配置方式不能使IPv6主机获取DNS服务器的IPv6地址等配置

信息,在可用性上有一定缺陷。对于互联网服务提供商(ISP)来说,也没有相关的规

范指明如何向路由器自动分配IPv6前缀,所以在部署IPv6网络时,只能采用手动配置

的方法为路由交换设备配置IPv6地址。

DHCPv6 技术解决了这一问题。DHCPv6属于一种有状态地址自动配置协议。在有状态

地址配置过程中,DHCPv6服务器分配一个完整的IPv6地址给主机,并提供DNS服务

器地址等其他配置信息,这中间可能通过DHCPv6中继转发DHCPv6报文,最终服务

器能把分配的IPv6地址和客户端的进行绑定,从而增强了网络的可管理性。

与其他IPv6地址分配方式(手工配置、通过路由器通告消息中的网络前缀无状态自动

配置等)相比,DHCPv6具有以下优点:

l 更好地控制IPv6地址的分配。DHCPv6方式不仅可以记录为IPv6主机分配的地

址,还可以为特定的IPv6主机分配特定的地址,以便于网络管理。

l DHCPv6支持为网络设备分配IPv6前缀,便于全网络的自动配置和网络层次性管

理。

l 除了为IPv6主机分配IPv6地址/前缀外,还可以分配DNS服务器IPv6地址等网络

配置参数。

4.2 原理描述

4.2.1 DHCPv6概述

DHCPv6 是一种运行在客户端和服务器之间的协议,与IPv4中的DHCP一样,所有的

协议报文都是基于UDP的。但是由于在IPv6中没有广播报文,因此DHCPv6使用组播

报文,客户端也无需配置服务器的IPv6地址。

IPV6 地址分配类型

IPv6 协议具有地址空间巨大的特点,但同时长达128比特的IPv6地址又要求高效合理

的地址自动分配和管理策略。

目前IPv6地址的分配方法有以下几种:手动配置。手动配置IPv6地址/前缀及其他网络配置参数(DNSNISSNTP服务

器地址等参数)。

l 无状态自动地址分配。由接口ID生成链路本地地址,再根据路由通告报文包含的

前缀信息自动配置本机地址。

l 有状态自动地址分配,即DHCPv6方式。DHCPv6又分为如下三种:

DHCPv6有状态自动分配。DHCPv6服务器自动配置IPv6地址/前缀及其他网络

配置参数(DNSNISSNTP服务器地址等参数)。

DHCPv6无状态自动分配。主机IPv6地址仍然通过路由通告方式自动生成,

DHCPv6 服务器只分配除IPv6地址以外的配置参数,包括DNSNISSNTP

务器等参数。

DHCPv6 PD前缀自动分配。下层网络路由器不需要再手工指定用户侧链路的

IPv6 地址前缀,它只需要向上层网络路由器提出前缀分配申请,上层网络路由

器便可以分配合适的地址前缀给下层路由器,下层路由器把获得的前缀,前缀

一般长度小于64,进一步自动细分成64前缀长度的子网网段,把细分的地址前

缀再通过路由通告(RA)至与IPv6主机直连的用户链路上,实现主机的地址自动

配置,从而完成整个IPv6网络的层次化布局。

DHCPv6基本架构

DHCPv6 基本构架如4-1所示。

4-1DHCPv6 基本构架示意图

DHCPv6 基本协议架构中,主要包括以下三种角色:

l DHCPv6 Client

DHCPv6 客户端,通过与DHCPv6服务器进行交互,获取IPv6地址/前缀和网络配

置信息,完成自身的地址配置功能。

l DHCPv6 Relay

DHCPv6 中继代理,负责转发来自客户端方向或服务器方向的DHCPv6报文,协助

DHCPv6 客户端和DHCPv6服务器完成地址配置功能。一般情况下,DHCPv6客户

端通过本地链路范围的组播地址与DHCPv6服务器通信,以获取IPv6地址/前缀和

其他网络配置参数。如果服务器和客户端不在同一个链路范围内,则需要通过DHCPv6中继代理来转发报文,这样可以避免在每个链路范围内都部署DHCPv6

务器,既节省了成本,又便于进行集中管理。

DHCPv6 基本协议架构中,DHCPv6中继代理不是必须的角色。如果DHCPv6客户

端和DHCPv6服务器位于同一链路范围内,或DHCPv6客户端和DHCPv6服务器

直接通过单播交互完成地址分配或信息配置的情况下,是不需要DHCPv6中继代理

参与的。只有当DHCPv6客户端和DHCPv6服务器不在同一链路范围内,或

DHCPv6 客户端和DHCPv6服务器无法单播交互的情况下,才需要DHCPv6中继代

理的参与。

l DHCPv6 Server

DHCPv6 服务器,负责处理来自客户端或中继代理的地址分配、地址续租、地址释

放等请求,为客户端分配IPv6地址/前缀和其他网络配置信息。

DHCPv6 基本概念

1. 组播地址

l DHCPv6协议中,客户端不用配置DHCPv6 ServerIPv6地址,而是发送目

的地址为组播地址的Solicit报文来定位DHCPv6服务器。

l DHCPv4协议中,客户端发送广播报文来定位服务器。为避免广播风暴,在

IPv6 中,已经没有了广播类型的报文,而是采用组播报文。DHCPv6用到的组

播地址有两个:

FF02::1:2All DHCP Relay Agents and Servers):所有DHCPv6服务器和中

继代理的组播地址,这个地址是链路范围的,用于客户端和相邻的服务器及

中继代理之间通信。所有DHCPv6服务器和中继代理都是该组的成员。

FF05::1:3All DHCP Servers):所有DHCPv6服务器组播地址,这个地址是

站点范围的,用于中继代理和服务器之间的通信,站点内的所有DHCPv6

务器都是此组的成员。

2. UDP 端口号

l DHCPv6报文承载在UDPv6上。

l 客户端监听的UDP目的端口号是546

l 服务器、中继代理监听的UDP端口号是547

3. DHCP 唯一标识符(DUID

l DHCP设备唯一标识符DUIDDHCP Unique Identifier),每个服务器或客户端

有且只有一个唯一标识符,服务器使用DUID来识别不同的客户端,客户端则

使用DUID来识别服务器。

l 客户端和服务器DUID的内容分别通过DHCPv6报文中的Client Identifier

Server Identifier 选项来携带。两种选项的格式一样,通过option-code字段的取

值来区分是Client Identifier还是Server Identifier选项。

4. 身份联盟(IA

l 身份联盟IAIdentity Association)是使得服务器和客户端能够识别、分组和管

理一系列相关IPv6地址的结构。每个IA包括一个IAID和相关联的配置信息。

l 客户端必须为它的每一个要通过服务器获取IPv6地址的接口关联至少一个IA

客户端用给接口关联的IA 来从服务器获取配置信息。每个IA 必须明确关联到

一个接口。

l IA的身份由IAID 唯一确定,同一个客户端的IAID 不能出现重复。IAID 不应因

为设备的重启等因素发生丢失或改变。__IA中的配置信息由一个或多个IPv6地址以及T1T2生存期组成。IA中的每

个地址都有合法生存期和首选生存期。

l 一个接口至少关联一个IA,一个IA可以包含一个或多个地址信息。

5. M/O 标记

l M标记:路由器通告的RA报文中的管理标记,当M标志位为1时,表示链路

上的IPv6主机采用DHCPv6方式获取IPv6地址/前缀。

l O标记:路由器通告的RA报文中的其他配置标记,当O标志位为1时,表示

链路上的IPv6主机采用DHCPv6方式获取除IPv6地址/前缀以外的其他网络配

置参数。

M/O 标识位数值对应说明如下:

4.2.2 DHCPv6报文介绍

DHCPv6报文格式

DHCPv6 报文格式如4-2所示。

4-2DHCPv6 的报文格式

 

DHCPv6 报文类型

目前DHCPv6定义了如下十三种类型报文,DHCPv6服务器和DHCPv6客户端之间通过

这十三种类型的报文进行通信。下表将对DHCPv6DHCPv4报文进行类比。

 

 

 

4.2.3 DHCPv6工作原理

DHCPv6 自动分配分为DHCPv6有状态自动分配和DHCPv6无状态自动分配。

l DHCPv6有状态自动分配。DHCPv6服务器自动配置IPv6地址/前缀,同时分配

DNSNISSNTP服务器等网络配置参数。

l DHCPv6无状态自动分配。主机IPv6地址仍然通过路由通告方式自动生成,DHCP

服务器只分配除IPv6地址以外的配置参数,包括DNSNISSNTP服务器地址等

参数。

DHCPv6 有状态自动分配

IPv6 主机在地址分配之前,由IPv6节点生成链路本地地址并且DAD通过后,首先有一

个链路路由器发现过程,即IPv6节点发送RS报文,链路路由器收到RS报文后,回应

RA 报文。如果IPv6节点收到的RA报文中M标记为1O标记位为1,则表示IPv6

 

点通过有状态DHCPv6方式获取地址和其他配置参数(例如DNS服务器的IPv6地址

等)。

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

l DHCPv6四步交互分配过程

l DHCPv6两步交互快速分配过程

DHCPv6 四步交互

四步交互常用于网络中有多个DHCPv6服务器的情况。DHCPv6客户端首先通过组播发

Solicit报文来定位可以为其提供服务的DHCPv6服务器,在收到多个DHCPv6服务

器的Advertise报文后,根据DHCPv6服务器的优先级选择一个为其分配地址和配置信

息的服务器,接着通过Request/Reply报文交互完成地址申请和分配过程。

DHCPv6 服务器端如果没有配置使能两步交互,无论客户端报文中是否包含Rapid Commit

选项,服务器都采用四步交互方式为客户端分配地址和配置信息。

DHCPv6 四步交互地址分配过程如4-3所示。

4-3DHCPv6 四步交互地址分配过程

 

 

DHCPv6 四步交互地址分配过程如下:

1. DHCPv6 客户端发送Solicit报文,请求DHCPv6服务器为其分配IPv6地址和网络

配置参数。

2. 如果Solicit报文中没有携带Rapid Commit选项,或Solicit报文中携带Rapid

Commit 选项,但服务器不支持快速分配过程,则DHCPv6服务器回复Advertise

文,通知客户端可以为其分配的地址和网络配置参数。

3. 如果DHCPv6客户端接收到多个服务器回复的Advertise报文,则根据Advertise

文中的服务器优先级等参数,选择优先级最高的一台服务器,并向所有的服务器发

Request组播报文,该报文中携带已选择的DHCPv6服务器的DUID

4. DHCPv6 服务器回复Reply报文,确认将地址和网络配置参数分配给客户端使用。

DHCPv6 两步交互

两步交互常用于网络中只有一个DHCPv6服务器的情况。DHCPv6客户端首先通过组播

发送Solicit报文来定位可以为其提供服务的DHCPv6服务器,DHCPv6服务器收到客户

 

端的Solicit报文后,为其分配地址和配置信息,直接回应Reply报文,完成地址申请和

分配过程。

两步交换可以提高DHCPv6过程的效率,但在有多个DHCPv6服务器的网络中,多个

DHCPv6 服务器都可以为DHCPv6客户端分配IPv6地址,回应Reply报文,但是客户

端实际只可能使用其中一个服务器为其分配的IPv6地址和配置信息。为了防止这种情

况的发生,管理员可以配置DHCPv6服务器是否支持两步交互地址分配方式。

 

DHCPv6 两步交互地址分配过程如4-4所示。

4-4DHCPv6 两步交互地址分配过程

 

DHCPv6 两步交互地址分配过程如下:

1. DHCPv6 客户端在发送的Solicit报文中携带Rapid Commit选项,标识客户端希望

服务器能够快速为其分配地址和网络配置参数。

2. DHCPv6 服务器接收到Solicit报文后,将进行如下处理:

l 如果DHCPv6服务器支持快速分配地址,则直接返回Reply报文,为客户端分

IPv6地址和其他网络配置参数,Replay报文中也携带Rapid Commit选项。

l 如果DHCPv6服务器不支持快速分配过程,则采用四步交互方式为客户端分配

IPv6 地址/前缀和其他网络配置参数。

DHCPv6无状态自动分配

在地址分配前,IPv6节点生成链路本地地址并且DAD通过后,首先有一个链路路由器

发现过程。即IPv6节点广播发送RS报文,链路路由器收到RS报文后,回应RA报文。

如果IPv6节点收到的RA报文中M标记为0O标记为1,则表示IPv6节点通过

DHCPv6 无状态方式获取配置参数(包括DNSSIPSNTP等服务器配置信息,不包

IPv6地址)。

DHCPv6 无状态工作过程如4-5所示。

 

 

DHCPv6 无状态工作过程如下:

1. DHCPv6 客户端以组播方式向DHCPv6服务器发送Information-Request报文,该报

文中携带Option Request选项,指定DHCPv6客户端需要从DHCPv6服务器获取的

配置参数。

2. DHCPv6 服务器收到Information-Request报文后,为DHCPv6客户端分配网络配置

参数,并单播发送Reply报文,将网络配置参数返回给DHCPv6客户端。

3. DHCPv6 客户端根据收到Reply报文提供的参数完成DHCPv6客户端无状态配置。

4.2.4 DHCPv6 PD工作原理

DHCPv6 前缀代理DHCPv6 PD(Prefix Delegation)是由Cisco公司提出的一种前缀分配机

制,并在RFC3633中得以标准化。在一个层次化的网络拓扑结构中,不同层次的IPv6

地址分配一般是手工指定的。手工配置IPv6地址扩展性不好,不利于IPv6地址的统一

规划管理。

通过DHCPv6前缀代理机制,下游网络路由器不需要再手工指定用户侧链路的IPv6

址前缀,它只需要向上游网络路由器提出前缀分配申请,上游网络路由器便可以分配合

适的地址前缀给下游路由器,下游路由器把获得的前缀(一般前缀长度小于64)进一步自

动细分成64前缀长度的子网网段,把细分的地址前缀再通过路由通告(RA)至与IPv6

机直连的用户链路上,实现IPv6主机的地址自动配置,完成整个系统层次的地址布局。

DHCPv6 PD 工作过程如4-6所示。

 

 

DHCPv6 PD 四步交互地址分配过程如下:

1. DHCPv6 PD 客户端发送Solicit报文,请求DHCPv6 PD服务器为其分配IPv6地址

前缀。

2. 如果Solicit报文中没有携带Rapid Commit选项,或Solicit报文中携带Rapid

Commit 选项,但服务器不支持快速分配过程,则DHCPv6服务器回复Advertise

文,通知客户端可以为其分配的IPv6地址前缀。

3. 如果DHCPv6客户端接收到多个服务器回复的Advertise报文,则根据Advertise

文中的服务器优先级等参数,选择优先级最高的一台服务器,并向该服务器发送

Request 报文,请求服务器确认为其分配地址前缀。

4. DHCPv6 PD 服务器回复Reply报文,确认将IPv6地址前缀分配给DHCPv6 PD

户端使用。

DHCPv6 PD 同样也支持携带Rapid Commit选项的两步交互方式,报文交互方式参见

DHCPv6 两步交互方式

4.2.5 DHCPv6中继工作原理

DHCPv6 中继工作过程如4-7所示。DHCPv6客户端通过DHCPv6中继转发报文,获

IPv6地址/前缀和其他网络配置参数(例如DNS服务器IPv6地址等)。

 

 

DHCPv6 中继工作交互过程如下:

1. DHCPv6 客户端向所有DHCPv6服务器和DHCPv6中继的组播地址FF02::1:2发送

请求报文。

2. 根据DHCPv6中继转发报文有如下两种情况:

l 如果DHCPv6中继和DHCPv6客户端位于同一个链路上,即DHCPv6中继为

DHCPv6 客户端的第一跳中继,中继转发直接来自客户端的报文,此时DHCPv6

中继实质上也是客户端的IPv6网关设备。DHCPv6中继收到客户端的报文后,

将其封装在Relay-Forward报文的中继消息选项(Relay Message Option)中,并

Relay-Forward报文发送给DHCPv6服务器或下一跳中继。

l 如果DHCPv6中继和DHCPv6客户端不在同一个链路上,中继收到的报文是来

自其他中继的Relay-Forward报文。中继构造一个新的Relay-Forward报文,并

Relay-Forward报文发送给DHCPv6服务器或下一跳中继。

3. DHCPv6 服务器从Relay-Forward报文中解析出DHCPv6客户端的请求,为

DHCPv6 客户端选取IPv6地址和其他配置参数,构造应答消息,将应答消息封装

Relay-Reply报文的中继消息选项中,并将Relay-Reply报文发送给DHCPv6

继。

4. DHCPv6 中继从Relay-Reply报文中解析出DHCPv6服务器的应答,转发给DHCPv6

客户端。DHCPv6客户端根据Advertise报文中的服务器优先级选择一个DHCPv6

服务器,后续从该DHCPv6服务器获取IPv6地址和其他网络配置参数。

4.2.6 IPv6 地址/前缀的分配与更新原则

IPv6 地址分配的优先次序

DHCPv6 服务器按照如下次序为DHCPv6客户端选择IPv6地址/前缀。

1. 选择IPv6地址池

DHCPv6 服务器接口必须绑定IPv6地址池,DHCPv6服务器将选择该IPv6地址池

为接口下的DHCPv6客户端分配地址/前缀。

 

2. 选择IPv6地址/前缀

确定地址池后,DHCPv6服务器将按照下面步骤为DHCPv6客户端分配IPV6

/前缀:

a. 如果地址池中为客户端指定了地址/前缀,优先从地址池中选择与客户端DUID

匹配的地址/前缀分配给客户端。

b. 如果客户端报文中的IA选项携带了有效的地址/前缀,优先从地址池中选择该

地址/前缀分配给客户端。如果该地址/前缀在地址池中不可用,则另外分配一

个空闲地址/前缀给客户端。如果IPV6前缀长度比指定分配长度大,则按指定

分配长度来分配。

c. 从地址池中选择空闲地址/前缀分配给客户端,保留地址(例如RFC 2526 中定

义的任播地址)、冲突地址、已被分配的地址不能再分配给客户端。

d. 如果没有合适的IPv6地址/前缀可以分配,则分配失败。

DHCPv6地址租约更新

DHCPv6 服务器为DHCPv6客户端分配的地址是有租约的,租约由生命期(包括地址的

优先生命期和有效生命期构成)和续租时间点(IAT1T2)构成。地址有效生命期

结束后,DHCPv6客户端不能再使用该地址。在有效生命期到达之前,如果DHCPv6

户端希望继续使用该地址,则需要更新地址租约。

DHCPv6 客户端为了延长其与IA关联的地址的有效生命期和优先生命期,在T1时刻,

发送包含IA选项的Renew报文给服务器,其中IA选项中携带需要续租的IA地址选

项。如果DHCPv6客户端一直没有收到T1时刻续租报文的回应报文,那么在T2

刻,DHCPv6客户端通过Rebind报文向DHCPv6服务器继续续租地址。

T1 时刻地址租约更新过程如4-8所示。

 

 

T1 时刻地址租约更新过程如下:

1. DHCPv6 客户端在T1时刻(推荐值为优先生命期的1/2)发送Renew报文进行地

址租约更新请求。

2. DHCPv6 服务器回应Reply报文。

l 如果DHCPv6客户端可以继续使用该地址,则DHCPv6服务器回应续约成功的

Reply 报文,通知DHCPv6客户端已经成功更新地址租约。

 

l 如果该地址不可以再分配给该DHCPv6客户端,则DHCPv6服务器回应续约失

败的Reply报文,通知DHCPv6客户端不能获得新的租约。

T2 时刻地址租约更新过程如4-9所示。

 

T2 时刻地址租约更新过程如下:

1. DHCPv6 客户端在T1时刻发送Renew请求更新租约,但是没有收到DHCPv6服务

器的回应报文。

2. DHCPv6 客户端在T2时刻(推荐值为优先生命期的0.8倍),向所有DHCPv6

务器组播发送Rebind报文请求更新租约。

3. DHCPv6 服务器回应Reply报文。

l 如果DHCPv6客户端可以继续使用该地址,则DHCPv6服务器回应续约成功的

Reply 报文,通知DHCPv6客户端已经成功更新地址/前缀租约。

l 如果该地址不可以再分配给该DHCPv6客户端,则DHCPv6服务器回应续约失

败的Reply报文,通知DHCPv6客户端不能获得新的租约。

IP 地址预留

DHCPv6 服务器支持预留IPv6地址,即保留部分IPv6地址不参与动态分配。比如预留

IPv6地址可作为DNS服务器的IPv6地址。

 

0 0
原创粉丝点击