DHCPv6

Dynamic Host Configuration Protocol for IP Version 6とは、コンピュータがネットワーク接続する際に必要な情報を自動的に割り当てる通信プロトコルの IPv6 と共に用いられる版のことをいう。

IPv4 と共に用いられる版は DHCPv4 と呼ばれるが、現在のところは単に DHCP というときは DHCPv4 を指すことが多い。

IPv6 においては、ステートレス・アドレス自動設定によって、DHCP を使わなくてもインタフェースにアドレスを与えることができる。しかし、インタフェースにそれ以外のアドレスを与えることが必要な場合もある。DHCPv6 を使用することによって、このような場合に DHCPv4 と同様に DHCP サーバからインタフェースにアドレスを配布することができる。また、ステートレス・アドレス自動設定とは違って、IPアドレスだけでなく DNS サーバ、ドメイン名や他のサーバのアドレスを合わせて配布することができる。

DHCPv6 と DHCPv4 との間に互換性はない。DHCPv4 においては DHCP を使用して設定するかどうかはホストが決定するが、DHCPv6 においてはルータ広告のオプションによって通知される。一つのインタフェースに異なる情報源から異なる設定情報が届くこともある。

1. ガイドライン
---------

DHCPv6 開発の初期に次のようなガイドラインが決められた [Hag 07]。

DHCP とステートレス・アドレス自動設定機能を組み合わせることができなければならない。
DHCP の設定と他の機構  との組み合わせ方は管理者が決められる。
クライアントを手作業で設定する必要がない。
DHCP によって 1 つのインタフェースに複数のアドレスを設定できなければならない。
サブネットごとに DHCP サーバがなくてもよい。リレー・エージェントは DHCP パケットを転送できなければならない。
複数の DHCP サーバから返される複数の応答をクライアントが処理できなければならない。
DHCP によって一部のクライアントだけに設定することができるサブネットが作れなければならない。
DHCP はルータの存在・不在に依存しない。ルータが必要になるのはステートレス・アドレス自動設定機能を利用するときだけである。
DHCP は割り当てられたアドレスを DNS の動的更新時に登録できなければならない。また、管理者は手動による DNS 更新を選択することもできる。
DHCP はネットワークのアドレス変更をサポートするとともに、この作業が容易に実現できるようにしなければならない。

2. DUID 
--------------------

DHCP のクライアントとサーバには、それぞれ DUID  が与えられる。DUID はすべてのサーバとクライアントの間で一意でなければならない。また、DUID は変更してはならない。DUID は 2 オクテットのコードとそれにつづく可変長の識別子とで構成されている。次の 4 種類の異なる DUID が定義されている [RFC 8415]。

DUID-LLT - リンク層アドレス + 時刻 
DUID-EN - インタフェースの製造者番号を元にしたベンダ固有の一意な ID 
DUID-LL - リンク層アドレス 
DUID-UUID - UUID

3. アイデンティティ・アソシエーション
--------------------

アイデンティティ・アソシエーション  とは、サーバとクライアントがアドレスの集合を識別・管理するために使用するオブジェクトである。IA はオブジェクトに対応する IAID によって識別される。IA は個々の識別情報を格納している。クライアントは DHCP によって設定されるインタフェース 1 個について、少なくとも 1 個の IA を持ち、それに対応する IAID を一意に決めなければならない。IA はクライアントがそのインタフェースに合わせた設定をサーバから受信するときに使用される。

4. ヘッダ形式
--------

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

5. メッセージ種別
----------

メッセージ種別  フィールドは次のようなメッセージ種別を含む。

要請  - サーバの場所を突き止める要請メッセージをクライアントが送信する。
広告  - クライアントから受信した要請メッセージに応えて、DHCP サービスで利用可能であることを示す広告メッセージをサーバが送信する。
要求  - 特定のサーバの IP アドレスを含む設定パラメータを要求する要求メッセージをクライアントが送信する。
確認  - クライアントに割り当てられたアドレスがクライアントが接続されたリンクにおいてまだ適切であるかどうかを決定するため、利用可能なサーバにクライアントが確認メッセージを送信する。
更新  - クライアントに割り当てられたアドレスのリース期間を延長し、他の設定パラメータを更新するために、クライアントのアドレスと設定パラメータを供給したサーバにクライアントが更新メッセージを送信する。
再結合  - クライアントに割り当てられたアドレスのリース期間を延長し、他の設定パラメータを更新するために利用可能なサーバにクライアントが再結合メッセージを送信する。このメッセージはクライアントが更新メッセージに対する応答を受け取らなかった後に送信する。
応答  - 次のうちのいずれかである。サーバがクライアントから受け取った要請、要求、更新、再結合メッセージに応えて、割り当てられたアドレスと設定パラメータを含む応答メッセージを送信する。サーバが情報要求メッセージに応えて、設定パラメータを含む応答メッセージを送信する。サーバが確証メッセージに応えて、クライアントが接続されているリンクにクライアントに割り当てられたアドレスが適切であるかによって、確認か否認の応答メッセージを送信する。サーバが解放あるいは辞退メッセージの受領を確認する応答メッセージを送信する。
解放  - クライアントに割り当てられたアドレスを使わなくなったことを示すため、アドレスをクライアントに割り当てたサーバにクライアントが解放メッセージを送信する。
辞退  - サーバがクライアントに割り当てたアドレスに対し、クライアントが接続されているリンク上においてそのアドレスがすでに使用されていることを認識したときに、クライアントがサーバに辞退メッセージを送信する。
再設定  - サーバがクライアントに新規の設定パラメータまたは更新された設定パラメータがあることを通知するのに使用される。更新情報の受信のためには、クライアントがサーバに更新メッセージまたは情報要求メッセージを送信しなければならない。
情報要求  - クライアントへの IP アドレスの割り当てなしに設定パラメータを求めるため、サーバへの情報要求メッセージをクライアントが送信する。
リレー転送  - リレー・エージェントが直接或いは他のリレー・エージェントを通してサーバにメッセージを中継するリレー転送メッセージを送信する。受信メッセージ、クライアント・メッセージ或いは他のリレー・エージェントからのリレー転送メッセージはリレー転送メッセージにカプセル化される。
リレー応答  - リレー・エージェントがクライアントに配送するメッセージを含むリレー応答メッセージをサーバがエージェントへ送信する。リレー応答メッセージは宛先リレー・エージェントに配送のために他のリレー・エージェントに中継されるかもしれない。 DHCP サーバから設定情報交換を開始する手順は、DHCPv4 にはなかった、新しい機能である。例えば、DHCP ドメイン全体のアドレスを変更する、或いは新規のサービスやアプリケーションの追加に伴って全クライアントを再設定する必要が生じたときなどに、この機能を使用することができる。

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

オプション・コード  フィールドがオプションの種別を示す。オプション長  フィールドがこのオプションの長さをオクテット単位であらわす。そして、オプション・データ  フィールドにこのオプションの内容が格納される。利用可能なオプションは次の通りである 。

クライアント識別子  - クライアントとサーバの間でクライアントを識別する DUID を運ぶために使用する。
サーバ識別子  - クライアントとサーバの間でサーバを識別する DUID を運ぶために使用する。
非臨時アドレス・アイデンティティ・アソシエーション  - 非臨時アドレス・アイデンティティ・アソシエーション  と IA_NA に関連するパラメータと IA_NA に関連する非臨時  アドレスとを運ぶために使用する。
臨時アドレス・アイデンティティ・アソシエーション  - 臨時アドレス・アイデンティティ・アソシエーション 、IA_TA に関連するパラメータと IA_TA に関連するアドレスを運ぶために使用する。
IA アドレス  - IA_NA か IA_TA と関連した IPv6 アドレスを指定するために使用する。
オプション要求  - オプション要求オプションはクライアント-サーバ間のメッセージでオプションのリストを確認するために使用する。
優先度  - クライアントがサーバを選択する際に影響を与えるためにサーバからクライアントに送信される。
経過時間  - クライアントが DHCP トランザクションを開始してからの時間を 1/100 秒単位で示す。
リレー・メッセージ  - リレー転送メッセージあるいはリレー応答メッセージによって DHCP メッセージをカプセル化する。
認証  - DHCP メッセージの身元  と内容を認証するための認証情報を運ぶ。
サーバ・ユニキャスト  - クライアントがサーバへユニキャスト・メッセージを送れることを示すために、サーバはクライアントにこのオプションを送信する。
状態コード  - このオプションを含む DHCP メッセージやオプションと関係する状態表示を返す。
急速コミット  - アドレス配布のために常の 4 個のメッセージの交換によるシーケンスのかわりに 2 個だけのメッセージの交換によるシーケンスを使用することを通知するのに使用する。
ユーザ・クラス  - そのユーザ・クラス・オプションが表すユーザやアプリケーションの種類を指定するためにクライアントによって使用される。
ベンダ・クラス  - クライアントが実行されているハードウェアを生産したベンダを識別するためにクライアントによって使用される。
ベンダ固有情報  - ベンダ固有の情報を交換するためにクライアントとサーバによって使用する。
インタフェース識別子  - リレー・エージェントはクライアント・メッセージを受信したインタフェースを識別するインタフェース識別子オプションを送信するかもしれない。
再設定メッセージ  - クライアントが更新メッセージや情報要求メッセージに応答するかどうかを示すため、サーバが再設定メッセージに再設定メッセージオプションを含める。
再設定受入  - クライアントがサーバに再設定メッセージの受信ができる事を示すために使用する。また、サーバがクライアントに再設定メッセージを受け入れるべきかどうかをつたえるためにも使用する。
SIP サーバ・ドメイン名リスト  - 1 個以上の SIP サーバのドメイン名を通知するために使用する [RFC 3319]。
SIP サーバ IPv6 アドレス・リスト  - 1 個以上の SIP サーバの IPv6 アドレスを通知するために使用する [RFC 3319]。
DNS Recursive Name サーバ  - 1 個以上の DNS Recursive Name サーバの IPv6 アドレスを通知するために使用する [RFC 3646]。
ドメイン検索リスト  - クライアントがホスト名の解決に使用するドメイン検索リストを指定する。このオプションは他の名前解決機構には適用されない [RFC 3646]。
プレフィクス委譲のためのアイデンティティ・アソシエーション  - プレフィクス委譲アイデンティティ・アソシエーション、IA_PD に関連するパラメータと IA_PD に関連するプレフィクスとを運ぶために使用する。
IA_PD プレフィクス  - IA_PD に関係づけられた IPv6 アドレス・プレフィクスの指定のために使われる。IA_PD プレフィクス・オプションは IA_PD オプション・フィールドのなかにカプセル化されなければならない。
ネットワーク情報サービス  サーバ IPv6 アドレス・リスト  Servers, 27) - 1 個以上の NIS サーバの IPv6 アドレスを通知するために使用する [RFC 3898]。
ネットワーク情報サービス V2  サーバ IPv6 アドレス・リスト  Servers, 28) - 1 個以上の NIS+ サーバの IPv6 アドレスを通知するために使用する [RFC 3898]。
ネットワーク情報サービス  サーバ・ドメイン名リスト  Domain Name, 29) - 1 個以上の NIS+ サーバの IPv6 アドレスを通知するために使用する [RFC 3898]。
ネットワーク情報サービス V2  サーバ・ドメイン名リスト  Domain Name, 30) - 1 個以上の NIS+ サーバの IPv6 アドレスを通知するために使用する [RFC 3898]。
SNTP サーバ IPv6 アドレス・リスト  Servers, 31) - 1 個以上の SNTP サーバの IPv6 アドレスを通知するために使用する [RFC 4075]。
情報更新時間  - DHCPv6 によって得られる情報を更新する時間の上限を指定する [RFC 4242]。
リレー・エージェント遠隔 ID  - ATM などの回路を終端するリレー・エージェントが回路端点の遠隔ホストを識別するために使用する [RFC 4649]。
リレー・エージェント購読者 ID  - リレー・エージェントが購読者に安定な識別子を与えるために使用する [RFC 4580]。
DHCPv6 クライアント FQDN  - DHCP サーバがクライアントの FQDN  を知るため、または FQDN の更新の交渉のために使用される [RFC 4704]。

7. 関連 RFC
---------

8415}} - Dynamic Host Configuration Protocol for IPv6 
3315}} - Dynamic Host Configuration Protocol for IPv6 : 旧
3319}} - Dynamic Host Configuration Protocol  Options for Session Initiation Protocol  Servers
3646}} - DNS Configuration options for Dynamic Host Configuration Protocol for IPv6 
3898}} - Network Information Service  Configuration Options for Dynamic Host Configuration Protocol for IPv6 
4075}} - Simple Network Time Protocol  Configuration Option for DHCPv6
4580}} - Dynamic Host Configuration Protocol for IPv6  Relay Agent Subscriber-ID Option
4704}} - The Dynamic Host Configuration Protocol for IPv6  Client Fully Qualified Domain Name  Option

8. 参考文献
-------

[Hag 07] Silvia Hagen, “IPv6Essentials, Second Edition”, O'Reilly, 2007. .