DHCPv6属于stateful autoconfiguration
client可以使用它的link-local地址和well-known multicast地址来发现DHCP Server或relay agents。并和它们通信。
stateful autoconfiguration可以和stateless address autoconfiguration兼容。
appropriate to the link
一个地址是appropriate to the link是指,这个地址是和DHCP Server对网络拓扑的知识保持一致的。
configuration parameter
server使用DHCP传递给client的配置信息。
delegating router
一个router充当一个DHCP Server,并且响应delegated prefixes请求。
DHCP relay agent
充当一个中间角色,为client和server传递DHCP消息。
DUID
DHCP Unique Identifier
IA
Identity Association,分配给client的租约集合
IAID
Identity Association Identifier
IA_NA
IA for Non-temporary Addresses
IA_PD
IA for Prefix Delegation
IA_TA
IA for Temporary Addresses
lease
server授予给client的一个地址或者代理前缀的使用时间。
Reconfigure key
server分配给client的key,用来提供reconfigure message的安全性。
PKAP
the Reconfiguration Key Authentication Protocol
T1
client续租的时间间隔,是绝对时间(秒)。
T2
client向任何可用服务器续租的时间间隔,是绝对时间(秒)。
client和server使用UDP通信。
client使用它的link-local address作为源地址,使用link-scoped multicast地址做为目的地址,这样就不需要配置DHCP Server的地址了。
在client链路上的DHCP relay agent可以在client和server间relay message,中继的操作对client来讲是透明的。
当client知道server的地址后,client在一些情况下可以直接发送单播包给server。
当client不需要server分配IP地址或者delegated prefix,它也可以向server获取其它配置信息。
client发送Information-request message到All_DHCP_Relay_Agents_and_servers multicast address。
server回复包含其它配置信息的message给client。
client可以请求一个快速的two-message exchange。client发送一个solicit message给All_DHCP_Relay_Agents_and_servers multicast address,请求分配地址或delegated prefix,或者其它配置信息。这个消息包含一个rapid commit option表示客户端接受一个立即的响应消息。
server分配给client的每个地址或者delegated prefix都有关联的preferred lifetime和valid lifetime。
client可以发送renew message给server,server发送一个reply message包含新的lifetime。
client发送一个solicit message到All_DHCP_Relay_Agents_and_servers来查找可用的server
server回复一个Advertise message
client选择一个server,发送一个Request message给server,请求地址、delegated prefixes和其它配置。
server回复一个Reply message。
和client通信过的server,可以监听reconfigure message,可以发送Reconfigure message给client。
client则发送Infomation-request, Renew, rebind 消息。client执行 two-message exchange。
DHCP不是用来获取一个租约,而是用来获取其它配置参数,如DNS。
这种DHCP,只需要支持Information-request和Reply两种消息。对于relay agents还需要支持Relay-forward和Relay-reply。
这个model是DHCP原始的需求。它用在stateless address autoconfiguration单独使用不够或不切实际的地方。如network policy、动态更新DNS等场景。
prefix delegation mechanism:
requesting routers (DHCP client) 向 delegating router (DHCP server) 请求一个prefix。requesting routers可用这个prefix再向内部划分子网,分配地址。
server配置了要代理给client的prefixes。client请求prefix(es),server选择prefix(es)响应给client。
每个prefix有管理的preferred lifetime和valid lifetime。
下图是示例了使用prefix delegation的网络架构
______________________ \ / \ \ | ISP core network | \ \__________ ___________/ | | | +-------+-------+ | | Aggregation | | ISP | device | | network | (delegating | | | router) | | +-------+-------+ | | / |Network link to / |subscriber premises / | +------+------+ \ | CPE | \ | (requesting | \ | router) | | +----+---+----+ | | | | Subscriber ---+-------------+-----+ +-----+------ | network | | | | +----+-----+ +-----+----+ +----+-----+ | |Subscriber| |Subscriber| |Subscriber| / | PC | | PC | | PC | / +----------+ +----------+ +----------+ /
delegating router分配prefix给CPE。它subnets the delegated prefix。分配更长的prefix给subscriber's network。如CPE获得/48 prefix,但是子网化prefix,分配/64 prefix给子网。
结合address assignement和prefix delegation
和non-temporary address assignment几乎相同,然而这些地址倾向于短暂使用,且不可扩展生命周期。
DHCP允许client接收多个地址和prefix,来满足一些应用场景。
All_DHCP_Relay_Agents_and_Servers (ff02::1:2)
client使用这个地址和本地链路的relay agents和servers通信。
All_DHCP_Servers (ff05::1:3)
relay agent使用这个site-scoped的多播地址和server通信。relay agent应该有一个有足够scope的地址来接收响应。否则server发送的响应,relay agent可能收不到。
clients监听546端口。
server和relay监听547端口。
如下
Solicit (1) | client发送solicit message来定位servers。 |
Advertise (2) | 用来响应Solicit |
Request (3) | client发送request message来请求配置参数,包括地址或prefix |
Confirm (4) | client发送confirm message来确认地址使用情况 |
Renew (5) | client用来续租 |
Rebind (6) | client发送renew无响应后,发送此消息 |
Reply (7) | server回复reply message,里面包含分配的地址等信息。 |
Release (8) | client主动释放地址 |
Decline (9) | client报告server,分配的地址已被别人占用 |
Reconfigure (10) | server通告client,配置信息发生变化,请主动发起Renew, Rebind请求 |
Information-Request (11) | client请求地址之外的其它配置 |
Relay-Forw (12) | relay agent发送relay-forward message给servers或其它relay agent |
Relay-Repl (13) | server回复relay-reply message消息给relay agent |
status code
DHCP使用status code来交流请求是成功还是失败。
所有的DHCP消息有一个固定的头和一个变长的选项。
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | msg-type | transaction-id | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | . options . . (variable number and length) . | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
所有的字段按网络字节序存储。选项按1字节对齐。options之间没有padding。
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | msg-type | hop-count | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | | link-address | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-| | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | | peer-address | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-| | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | . . . options (variable number and length) .... . | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
每个DHCP Client 和 Server 都有一个DUID。它们使用这个ID相互识别对方。
DUID是变长的,使用option存储。DUID应该尽可能不变。
DUID的前2个字节被固定为DUID的类型,后面的长度可变为1-128个字节。
一组相关的IPv6地址或delegated prefixes。每个IA有一个IAID和关联的配置信息。
选项的格式如下:
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | option-code | option-len | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | option-data | | (option-len octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
略。
https://tools.ietf.org/html/rfc8415