DHCPv6 简介

Dynamic Host Configuration Protocol for IPv6(简称DHCPv6)可以使DHCPv6 server传递配置参数(例如IPv6地址)给IPv6 nodesDHCPv6提供了可重复使用IPv6地址和附加参数自动配置的灵活性能力。相对于“IPv6 Stateless Address Autoconfiguration (RFC 2462)DHCPv6是一种stateful address autoconfiguration。两者各自独立运作,也可以同时使用来自动配置参数。
透过DHCPv6 server DHCPv6可以提供nodes自动分配IP地址以及其它参数,每个配置参数都是利用option方式来传递。DHCP可以透过新定义的option来扩展配置新的参数。

DHCPv6概述

协议操作以及使用的地址

u  DHCPv6属于应用层(Application Layer)通讯协议,使用UDP Transport Layer)来交换messages。需要透过DHCPv6 protocol来获取IP地址或其它参数的node会以client的角色来向DHCPv6 server发出请求,而DHCPv6 server会依据client的相关讯息以及server自定的相关决策来配置client适当的参数值。









Client使用link-local地址或其它地址来收送DHCP messagesServer使用保留的link-scope multicast addresAll_DHCP_Relay_Agents_and_Servers  multicast address (ff02::1:2) 来接收clients发送的messages client几乎都是使用此multicast address来发送messages 所以不需要另外配置serverIP地址。
u  为了能允许client发送DHCP messages到不在同一个linkserver relay agent将负责中继clientserver之间传递的DHCP messages client而言, relay agent是透明不可见的。(很明显地,router最适合扮演relay agent角色。)











u  在某些情况下,server会在响应的messages携带serverunicast地址, client可以将后续的请求messages直接发送到serverunicast地址。

Client-Server信息交换  -  4messages

为了请求1个或多个IP地址以及其它参数,首先client发送Solicit messageAll_DHCP_Relay_Agents_and_Servers address来寻找可用的DHCP servers。任何server只要能符合client的请求,会将配置的IP地址以及其它参数透过Advertise message来回应client
Client从收到的Advertise messages中选择最符合自己需求的配置,并将配置到的IP地址透过发送Request message要求server的确认。 Server透过Reply  message将确认配置的IP地址以及其它参数响应client。此时即完成Client-Server之间的信息交换, client可以开始使用配置到的IP地址以及其它参数。(获取到的IP地址必须经过DAD检测才可使用。)















Server分配给client的每个IP地址皆指定其preferred lifetime以及valid lifetime。为了能持续使用分配到的的IP地址, client可以在lifetime到期之前发送Renew message来要求延长lifetimeServer将新的lifetime透过Reply message响应client,允许client继续使用该IP地址而不会被中断。











Client-Server信息交换  2messages

client不需要server为其分配IP地址时,client可以使用2messages的信息交换方式来获取其它的配置参数,例如:DNSNTP serverIP地址。首先,client发送Information-Request messageAll_DHCP_Relay_Agents_and_Servers multicast addressserver将配置给client的参数值透过Reply message响应client









此外,client也可以使用2messagesSloicit-Reply的交换方式来同时获取IP地址以及其它配置参数。在此情况下,client会在Solicit message中使用Rapid Commit option表明希望直接收到server实时分配且确认的Reply message。此种做法可加速client获取IP地址以及其它参數。

DHCPv6相关的术语

appropriate to the link  1个地址与server依据网络拓扑、prefix分配以及地址分配政策一致时,称此地址为“appropriate to the link”。
binding  1binding(或称为client binding)是server对每个client绑定的1组数据记录,包含已经宣告配置给clientIA值或者配置讯息。1binding包含的IA值由元素组合 <DUID, IA-type, IAID> 索引,其中IA-type是指IA地址的类型(例如:temporarynon-temporary。)。1binding包含的配置讯息由 <DUID> 索引。
configuration parameter  设置在server的配置元素, 使用DHCP传递给clientNodes利用这些参数来配置network subsystem相关的设定值。
DHCP client (或简称client  发起DHCP请求messagesnode,从1个或多个DHCP server获取配置参数。
DHCP domain  一组由DHCP管理的links,并且由管理的实体负责操作。
DHCP realm  一个名称用来识别DHCP管理域,并且从中选取DHCP秘钥。
DHCP relay agent (或简称relay agent  client在同一linknode,负责递送clientserver之间的messages
DHCP server (或简称server  回应client请求messagesnode client可在同一link上, 也可能不在同一个link (不在同一link时,必须透过relay agent来递送clientserver之间的messages。)
DUID  每个DHCP的参与者都有个DHCP Unique Identifier(唯一标识符)。
Identity association (IA)  分配给clientaddress的集合。每个IA有个结合的IAID,用来识别IA。一个client可以分配到1到多个IA。每个IA持有1种特定的类型的address 例如IA for temporary address(简称IA_TA)持有temporary addresses
Identity association identifier (IAID)  IA的标识符,由client自行生成。每个IA都有个IAID,由同一个client所生成的IAID必须是唯一的。
Identity association for non-temporary addresses (IA_NA)  一个IA,其承载的address不是临时地址。
Identity association for temporary addresses (IA_TA)  一个IA,其承载的address为临时地址。
message  透过UDP传送的数据单元,clientserver以及relay agent之间发送的信息。
Reconfigure key  server提供给client的密钥,用于reconfigure message的安全保障。
relaying  relay agent转送DHCP参与者之间的messages
transaction ID  一个不透明数值,用于回应匹配由clientserver发起的请求messages

DHCP使用的常数

Multicast Addresses

DHCP使用以下multicast addresses
-      All_DHCP_Relay_Agents_and_Servers (FF02::1:2)  client利用此link-scoped multicast address发送messageslink上的邻居:server或者relay agentServerrelay agent是此multicast group的成员。
-      All_DHCP_Servers (FF05::1:3)  relay agent利用此site-scoped multicast address发送messagesservers Site内的所有servers都是此multicast group的成员。

UPD ports

Clients使用UDP port 546relay agentserver使用UDP port 547

DHCP Messages种类

DHCP定义了以下的messages种类:

代码
名称
描述
1
Solicit
client发送Solicit message来定位server
2
Advertise
Server发送Avdertise message来响应client发送的Solicit message 表示server能提供配置给client
3
Reguest
Client发送Request message要求server提供配置参数。
4
Confirm
Client发送Confirm message要求server确认目前的配置参数值是否适用于现在连接的link
5
Renew
Client发送Renew messageserver,要求延长目前使用的IP地址的lifetime,同时重新配置其它的配置参数。
6
Rebind
client发送Renew message却没收到任何server的回应时, 会发送Rebind messageserver,要求延长目前使用的IP地址的lifetime,同时重新配置其它的配置参数。
7
Reply
Server将配置的IP地址和其它配置参数透过Reply message来响应Solicit/Request/Renew/Rebind messages。不包含IP地址的配置参数则透过Reply message来响应Information-Request messageServer也使用Reply message来确认或否认client所发送的Confirm message Server也使用Reply来响应client所发送的ReleaseDecline message
8
Release
Client发送Release message,用来告知server某些已经配置给clientIP地址不再被client使用。
9
Decline
Client发送Decline message,用来告知server某些配置给clientIP地址已经被其它node使用。
10
Reconfigure
server有新的配置参数或配置参数值有了更新,此时server会发送Reconfigure message要求client重新要求配置参数。 Client会发送RenewInformation-Request来要求配置参数。
11
Information-Request
client仅需要其它的配置参数而不需要配置IP地址时,会使用Information-Request里要求配置参数。
12
Relay-Forw
Relay agent将转送的DHCP message (无论是直接从client或者其它relay agent转送来的message)透过Relay-Forward message转送到server或下一个relay-agent。转送的DHCP messages都是封装在Relay-Forwardoption内再转送。
13
Relay-Reply
Server将回应clientmessage封装在Relay-Reply messageoption里,并发送Relay-Reply messagerelay agentRelay agentRelay-Replyoption提取message再转送到client

Status Codes

Status code用在标示回应请求messages的成功或失败的状态值(不携带status code时,默认为成功),并且提供其它的讯息指明失败的原因。
Name
Code
Description
Success
0
Success
UnspecFail
1
Failure, reason unspecified; this status code is sent by either a client or a server to indicate a failure not explicitly specified in this document.
NoAddrsAvail
2
Server has no addresses available to assign to the IA(s).
NoBinding
3
Client record (binding) unavailable.
NotOnLink
4
The prefix for the address is not appropriate for the link to which the client is attached.
UseMulticast
5
Sent by a server to a client to force the client to send messages to the server. using the All_DHCP_Relay_Agents_and_Servers address.

Transmission and Retransmision Parameters

DHCPv6 messages使用UDP来传送。UDP并非reliable transport layer,不保证将上层数据送达目的地。因此DHCPv6的请求messagess必须透过重送机制来保证送达接收端。有关DHCPv6的重送机制细节,请参考RFC3315相关的章节。
Parameter
Default
Description
SOL_MAX_DELAY
1
sec
Max delay of first Solicit
SOL_TIMEOUT
1
sec
Initial Solicit timeout
SOL_MAX_RT
120
secs
Max Solicit timeout value
REQ_TIMEOUT
1
sec
Initial Request timeout
REQ_MAX_RT
30
sec
Max Request timeout value
REQ_MAX_RC
10

Max Request retry attempts
CNF_MAX_DELAY
1
sec
Max delay of first Confirm
CNF_TIMEOUT
1
sec
Initial Confirm timeout
CNF_MAX_RT
4
secs
Max Confirm timeout
CNF_MAX_RD
10
secs
Max Confirm duration
REN_TIMEOUT
10
secs
Initial Renew timeout
REN_MAX_RT
600
secs
Max Renew timeout value
REB_TIMEOUT
10
secs
Initial Rebind timeout
REB_MAX_RT
600
secs
Max Rebind timeout value
INF_MAX_DELAY
1
sec
Max delay of first Information-request
INF_TIMEOUT
1
sec
Initial Information-request timeout
INF_MAX_RT
120
secs
Max Information-request timeout value
REL_TIMEOUT
1
sec
Initial Release timeout
REL_MAX_RC
5

MAX Release attempts
DEC_TIMEOUT
1
sec
Initial Decline timeout
DEC_MAX_RC
5

Max Decline attempts
REC_TIMEOUT
2
secs
Initial Reconfigure timeout
REC_MAX_RC
8

Max Reconfigure attempts
HOP_COUNT_LIMIT
32

Max hop count in a Relay-forward message


Client-Server Messages格式

所有的clientserver之间交换的messages格式皆相同。共享固定表头格式和可变格式的options。所有的域值皆遵循network byte order
Option依序存放在option字段,option之间不需要padding






msg-type  用来识别DHCP messages的种类。
transaction-id  messages交换时的transaction ID。由发出请求messages者自行设置,响应者复制请求message里的transaction-id值到回应的transaction-id字段。
options  变动长度的options字段。每个DHCP messages有各自适用的options

Relay Agent–Server Messages格式

-      clientserver不在同一link时,由relay agent递送clientserver之间的messages交换。所有的域值皆遵循network byte order
-      Option依序存放在option字段,option之间不需要padding
-      Relay agent messages2种:Relay-forw以及Relay-repl
共享相同的格式如下:










Relay-Forward message
msg-type  Relay-Forw12
hop-count  经由relay agent转送的次数。
link-address  1globalsite-local地址, relay agent利用它来识别client落在哪个link
peer-address  被转送的messageclientrelay agentIP地址。
options  必须包含“Relay Message option”。可能包含其它的options
Relay-reply message
msg-type  Relay-repl13
hop-count  Relay-Forw message里复制
link-address  Relay-Forw message里复制。
peer-address  Relay-Forw message里复制。
options  必须包含“Relay Message option”。可能包含其它的options

DHCP Unique IdentifierDUID

每个clientserver都具有DUIDServer使用UDID来确定client配置的参数和IAsclient的关联。Client中使用UDID来指明哪个serverclient所欲交换messages的对象。
Clientserver必须视DUID为不透明的数据, 并且只比较DUID值是否为相同, 不对DUID值做其它的诠释。Clientserver不可限制目前已定义的类型,新的DUID类型可以在将来定义。
由于DUID是可变长度而且不一定都存在于每个DHCP messages中,所以DUID是包含在option中。DUID被设计为必须是独一无二而且尽可能不做变更。例如:一个设备即使更换网卡也不应改变其DUID值。
DUID具有多种类型的原因是因为DUID必须是全局唯一而且必须容易生成。每个设备可以选择最适合自己的DUID类型来生成DUID值。
DUID是由前面的2bytes的类型代码,以及后跟着可变长度的字节构成实际的识别符。DUID有以下类型:
-      Link-layer address plus time
-      Vendor-assigned unique ID based on Enterprise Number
-      Link-layer address

DUID Based on Link-layer Address Plus Time [DUID-LLT]

这种类型的UDID包含2bytes的类型值为12bytes的硬件类型码,4bytes的时间值,随后跟着UDID生成时此interfacelink层地址。时间值是UDID生成时的秒数(自200011日的午夜(UTC)算起)。硬件类型必须是RFC862IANA所分配的有效硬件类型。







使用这种类型DUID必须储存于稳定的存储器,而且必须持续使用即使当初生成此DUID的界面卡已经被拔除。没有稳定存储器的node不可使用此类型的DUID

DUID Assigned by Vendor Based on Enterprise Number [DUID-EN]

这种格式的UDID是由供货商分配给设备。它包括供货商的注册民营企业号码,后跟着供货商分配的唯一的识别符。








Identifier值留给供货商自行定义,但是每个identifier值必须是唯一的,并且在制造设备时必须将identifier值储存在non-volatile存储器。所生成的DUID应该被记录在不可清除的存储器。

DUID Based on Link-layer Address [DUID-LL]








Identity AssociationIA

u  Identity Association”(IA)是一个结构,clientserver可以透过它来识别、分组和管理一组相关的IPv6地址。每个IA包括1IAID和相关的配置讯息。
u  Client在每个interface至少指定1个不同IA来向server要求分配IPv6地址。Client利用指定给每个interfaceIAsserver获取每个interface的配置参数。每个IA必须只与1interface相关联。
u  IAIDclient指定,用来识别IA而且在client端必须是独一无二。即使client重新启动,已经被client指定使用的IA必须保持一致。Client的实现必须维持IA的一致性。
u  IA的配置讯息包括1到多个IP地址以及时间T1T2IA里的每个IP地址有其对应的preferred lifetimevalid lifetime

Selecting Addresses for Assignment to an IA

根据以下的讯息的组合以及server端管理者的政策,server选择IP地址并分配给IA
-      Client所连接的linkserver决定其clientlink位置如下:
*     如果server是直接从client收到message,并且该messagesIP表头的来源地址是link-local地址,则代表clientserver连接在相同的link
*     如果server是从relay agent收到的Relay-forw message,则代表client连接的link落在Relay-forw信息的link-addres字段里所指的relay agentinterface所连接的link
*     如果server是直接从client收到message,并且该messageIP表头的来源地址不是link-local地址,则代表client连接的link时落在IP表头的来源地址所标示的link。(这种情况主要是因为server允许client直接发送unicast地址的message封包到server。)
-      Client提供的DUID
-      Client提供的其它信息
-      relay agentoptions中提供的其它信息

DHCP Messages验证

除了每个message类型有个别的验证项目以外,以下是验证DHCP messages的基本原则:
²  如果DHCP messages里包括了不该存在的optionclientserver应该丢弃此封包。例如:Information-Request message就不该包含IA option
²  如果Solicit/Confirm/Rebind/Information-Request messagesIP表头的目的地址为unicast addressServer必须丢弃此封包。
²  如果收到的message里包括了不该存在的option、掉失应该有的option或者包括不合法的optionserver会发送Reply message且携带Status code,其值为UnSpecFail

Transaction IDs的用法

Transaction ID client保存,并且server回应message时用来同步client的请求messageClient应该利用随机数来生成不容易猜测或预测的Transaction ID。请注意,如果client生成的Transaction ID容易被预测,它可能变得更容易被某些种类的攻击。Client在做重传message时必须保持Transaction ID不变。

Messages验证

名称
验证原则
Solicit
²   Client必须丢弃任何收到的Solicit message
²   当以下任何情形发生时,Server必须丢弃Solicit message
-      没包含Client Identifier option
-      包含 Server Identifier option
Advertise
²   当以下任何情形发生时,client必须丢弃Advertise message
-      没包含Server Identifier option
-      没包含Client Identifier option
-      Client Identifier optionclientDUID不匹配
-      Transaction ID域值与client发送的Solicit message不匹配
²   Serverrelay agent必须丢弃任何收到的Advertise message
Request
²   Client必须丢弃任何接收到的Request message
²   当以下任何情形发生时,Server必须丢弃Request message
-      没包含Server Identifier option
-      Server Identifier option值不匹配serverDUID
-      没包含Client Identifier option
Confirm
²   Client必须丢弃任何接收到的Confirm message
²   如果server接收到的Confirm message不包含Server Identifier optionClient Identifier option,则必须丢弃封包。
Renew
²   Client必须丢弃任何接收到的Renew message
²   当以下任何情形发生时,Server必须丢弃Renew message
-      没包含Server Identifier option
-      Server Identifier option值不匹配serverDUID
-      没包含Client Identifier option
Rebind
²   Client必须丢弃任何接收到的Rebind message
²   如果server接收到的Rebind message不包含Server Identifier optionClient Identifier option,则必须丢弃封包。
Decline
²   Client必须丢弃任何接收到的Decline message
²   当以下任何情形发生时,Server必须丢弃Decline message
-      没包含Server Identifier option
-      Server Identifier option值不匹配serverDUID
-      没包含Client Identifier option
Release
²   Client必须丢弃任何接收到的Release message
²   当以下任何情形发生时,Server必须丢弃Release message
-      没包含Server Identifier option
-      Server Identifier option值不匹配serverDUID
-      没包含Client Identifier option
Reply
²   当以下任何情形发生时,Client必须丢弃Reply message
-      没包含Server Identifier option
-      transaction id 域值不匹配请message里的“transaction id”域值
²   如果在client的请求message里包含Client Identifier option,则Reply message必须包含Client Identifier option,且两者必须匹配。
²   如果在client的请求message里包不含Client Identifier option,则Reply message必须不可包含Client Identifier option
²   ServerRelay agent必须丢弃任何接收到的Reply message
Reconfigure
²   ServerRelay agent必须丢弃任何接收到的Reconfigure message
²   当以下任何情形发生时,client必须丢弃Reconfigure message
-      message不是透过unicast地址送到client
-      不包含Server Identifier option
-      不包含Client Identifier option(必须包含clientDUID
-      不包含Reconfigure Message option,并且其msg-type必须是个有效值
-      包含任何IA option并且Reconfigure Message optionmsg-typeInformation-request
-      不包含DHCP认证:不包含authentication option或者没通过client的认证。
Information-request
²   Client必须丢弃任何接收到的Information-request message
²   当以下任何情形发生时,server必须丢弃Information-request message
-      包含Server Identifier option且其DUID值与serverDUID不匹配
-      包含IA option
Relay-forw
Client必须丢弃任何接收到的Relay-forw message
Relay-reply
Clientserver必须丢弃任何接收到的Relay-reply message



參考文獻


RFC 3315 Dynamic Host Configuration Protocol for IPv6 (DHCPv6)


评论

此博客中的热门博文

IPv6 簡介以及地址介紹

Neighbor Discovery 简介

Multicast Listener Discovery (MLD) 简介

MLDv2 简介

Mobile IPv6 简介

ICMPv6

IP Security 簡介