ILD

DHCPv6
作者:Yuan Jianpeng 邮箱:yuanjp89@163.com
发布时间:2019-7-30 站点:Inside Linux Development

1 Background

DHCPv6属于stateful autoconfiguration


client可以使用它的link-local地址和well-known multicast地址来发现DHCP Server或relay agents。并和它们通信。


stateful autoconfiguration可以和stateless address autoconfiguration兼容。


2 DHCP Terminology

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向任何可用服务器续租的时间间隔,是绝对时间(秒)。


3 Client/Server Exchanges

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。


3.1 Client/Server Exchanges Involving Two Messages

当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。


3.2 Client/Server Exchanges Involving Four Messages

client发送一个solicit message到All_DHCP_Relay_Agents_and_servers来查找可用的server

server回复一个Advertise message

client选择一个server,发送一个Request message给server,请求地址、delegated prefixes和其它配置。

server回复一个Reply message。


3.3 Server/Client Exchanges

和client通信过的server,可以监听reconfigure message,可以发送Reconfigure message给client。

client则发送Infomation-request, Renew, rebind 消息。client执行 two-message exchange。


4 Operational Models

4.1 Stateless DHCP

DHCP不是用来获取一个租约,而是用来获取其它配置参数,如DNS。

这种DHCP,只需要支持Information-request和Reply两种消息。对于relay agents还需要支持Relay-forward和Relay-reply。


4.2 DHCP for Non-temporary Address Assignment

这个model是DHCP原始的需求。它用在stateless address autoconfiguration单独使用不够或不切实际的地方。如network policy、动态更新DNS等场景。


4.3 DHCP for Prefix Delegation

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给子网。


4.4 DHCP for Customer Edge Routers

结合address assignement和prefix delegation


4.5 DHCP for Temporary Addresses

和non-temporary address assignment几乎相同,然而这些地址倾向于短暂使用,且不可扩展生命周期。


4.6 Multiple Address and Prefixes

DHCP允许client接收多个地址和prefix,来满足一些应用场景。


5 DHCP Constants

5.1 multicast addresses

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可能收不到。


5.2 UDP Ports

clients监听546端口。

server和relay监听547端口。


5.3 DHCP Message Types

如下

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


6 DHCP Options

status code

DHCP使用status code来交流请求是成功还是失败。


7 Client/Server Message Formats

所有的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。


8 Relay Agent/Server Message Formats

       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)   ....        .
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


9 DHCP Unique Identifier (DUID)

每个DHCP Client 和 Server 都有一个DUID。它们使用这个ID相互识别对方。


DUID是变长的,使用option存储。DUID应该尽可能不变。


DUID的前2个字节被固定为DUID的类型,后面的长度可变为1-128个字节。


10 Identity Association

一组相关的IPv6地址或delegated prefixes。每个IA有一个IAID和关联的配置信息。


11 DHCP Options

选项的格式如下:

       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)                      |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


12 DHCP Configuration Exchanges

略。


参考

https://tools.ietf.org/html/rfc8415


Copyright © linuxdev.cc 2017-2024. Some Rights Reserved.