DHCPv6

Dynamic Host Configuration Protocol for IP Version 6（DHCP for IPv6、DHCPv6）とは、コンピュータがネットワーク接続する際に必要な情報を自動的に割り当てる通信プロトコルの IPv6 と共に用いられる版のことをいう。
IPv4 と共に用いられる版は DHCPv4 と呼ばれるが、現在のところは単に DHCP というときは DHCPv4 を指すことが多い。
IPv6 においては、ステートレス・アドレス自動設定によって、DHCP を使わなくてもインタフェースにアドレスを与えることができる。しかし、インタフェースにそれ以外のアドレスを与えることが必要な場合もある。DHCPv6 を使用することによって、このような場合に DHCPv4 と同様に DHCP サーバからインタフェースにアドレスを配布することができる。また、ステートレス・アドレス自動設定とは違って、IPアドレスだけでなく DNS サーバ、ドメイン名や他のサーバのアドレスを合わせて配布することができる。
DHCPv6 と DHCPv4 との間に互換性はない。DHCPv4 においては DHCP を使用して設定するかどうかはホストが決定するが、DHCPv6 においてはルータ広告のオプションによって通知される。一つのインタフェースに異なる情報源から異なる設定情報が届くこともある。
ガイドライン.
DHCPv6 開発の初期に次のようなガイドラインが決められた [Hag 07]。
DUID (DHCP 固有識別子).
DHCP のクライアントとサーバには、それぞれ DUID (DHCP Unique Identifier, DHCP 固有識別子) が与えられる。DUID はすべてのサーバとクライアントの間で一意でなければならない。また、DUID は変更してはならない。DUID は 2 オクテットのコードとそれにつづく可変長の識別子とで構成されている。次の 4 種類の異なる DUID が定義されている [RFC 8415]。
アイデンティティ・アソシエーション.
アイデンティティ・アソシエーション (IA, Identity Association) とは、サーバとクライアントがアドレスの集合を識別・管理するために使用するオブジェクトである。IA はオブジェクトに対応する IAID によって識別される。IA は個々の識別情報を格納している。クライアントは DHCP によって設定されるインタフェース 1 個について、少なくとも 1 個の IA を持ち、それに対応する IAID を一意に決めなければならない。IA はクライアントがそのインタフェースに合わせた設定をサーバから受信するときに使用される。
ヘッダ形式.
DHCPv6 のヘッダ形式は DHCPv4 と比べるとかなり簡略化されている。クライアントとサーバとの間で交換される 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) .
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
メッセージ種別.
メッセージ種別 (msg-type) フィールドは次のようなメッセージ種別を含む。
DHCP サーバから設定情報交換を開始する手順は、DHCPv4 にはなかった、新しい機能である。例えば、DHCP ドメイン全体のアドレスを変更する、或いは新規のサービスやアプリケーションの追加に伴って全クライアントを再設定する必要が生じたときなどに、この機能を使用することができる。
DHCPv6 オプション.
DHCPv6 ヘッダのオプション・フィールドによって設定情報や設定パラメータを表す。その形式は次の通りである。
 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) |
オプション・コード (option-code) フィールドがオプションの種別を示す。オプション長 (option-length) フィールドがこのオプションの長さをオクテット単位であらわす。そして、オプション・データ (option-data) フィールドにこのオプションの内容が格納される。利用可能なオプションは次の通りである (RFC 8415 以外の RFC において記述されているものについては、その RFC の番号を記述した)。