4rdはIPv4 residual deploymentの略で、IPv6ネットワーク上でIPv4パケットをやりとりするためのトンネリング技術の一種です。「プロバイダーはIPv6ネットワークを導入しているが、エンドユーザーの端末はIPv4を使っている」という環境での利用を想定しています。

 2011年4月、アジア太平洋地域のIPv4グローバルアドレスを管理している組織APNIC(Asia Pacific Network Information Centre)が持つIPv4グローバルアドレスの自由在庫(制約なしにユーザーに割り振れるアドレスの在庫)が事実上枯渇したとのアナウンスがなされました。同時に、JPNICが管理する日本国内の自由在庫も、事実上枯渇したことになります(関連記事)。JPNICはAPNICと在庫を共有しているためです。こうした状況下では、プロバイダーが次第に自社のネットワークをIPv6に移行させていくことが予測されます。しかし、パソコンなどエンドユーザーの端末や、コンテンツ事業者などがサーバーに割り当てたIPv4グローバルアドレスがすぐに利用できなくなるわけではなく、これらは当面の間は使い続けられると予測されます。そこで、IPv4グローバルアドレスを割り当てられたエンドユーザー端末から、プロバイダーのIPv6ネットワークを経て、IPv4グローバルアドレスを割り当てられたサーバーへの接続を可能とする技術が必要になります。それが4rdなのです。

 上記のような枯渇期には、プロバイダーの持つIPv4グローバルアドレス数が需要に比して足りなくなってくると予測されます。そうなると、新規に接続サービスなどに加入するユーザーに対して、プロバイダーはIPv4グローバルアドレスを割り当てられなくなるかもしれません。そのため、複数のユーザーがIPv4グローバルアドレスを共有する仕組みが必要になってきます。4rdは、こうしたアドレス共有の仕組みも備えています。

 以上を踏まえて、4rdにおけるネットワーク機器の構成や、IPアドレスの扱いを見ていきましょう。まずはネットワーク構成についてです。4rdでは、エンドユーザーの宅内にIPv4 over IPv6トンネリング機能を持たせたCPE(Customer Premises Equipment)が必要です。このCPEの内側(宅内側)はIPv4ネットワーク、外側(プロバイダーのネットワーク側)はIPv6ネットワークと考えてください。端末から送り出されたIPv4パケットはCPEでIPv6パケットにカプセル化され、プロバイダーのIPv6ネットワークに送り出されます。IPv4 over IPv6トンネルは、プロバイダーのネットワークに設置された「4rd ゲートウエイ」などと呼ばれる専用装置で終端されます。終端装置はIPv6パケットのカプセルを解いてIPv4パケットを取り出し、IPv4ネットワークに送り出します。

 次にIPアドレスの扱いについて見ていきましょう。4rdではまず、プロバイダーからユーザー宅内に設置された4rd対応のCPEに対して、DHCPv6などでIPv6アドレスを割り当てます。このIPv6アドレスの一部には、IPv4グローバルアドレスとポート番号の組み合わせが埋め込まれています。この時、IPv4グローバルアドレスは複数のユーザーで共有されますが、ポート番号はユーザーによって異なります。CPEには、このIPv4グローバルアドレスとポート番号の組み合わせも割り当てられることになります。エンドユーザー宅内のLANに接続しているパソコンなどには、CPEがIPv4のプライベートアドレスを割り当てます。

 もう少し具体的にIPアドレスの割り当てについて説明すると、プロバイダーはあらかじめ、4rdで利用するIPv6プレフィックスと、IPv4グローバルアドレスを決めておきます。ここでは、プロバイダーは「2001:db8:ff00::/40」というIPv6プレフィックスと、「192.0.2.0/24」というIPv4グローバルアドレスの固まりを4rd向けに使うことにしましょう。プロバイダーからそれぞれのエンドユーザーに割り当てるIPv6プレフィックスの大きさは、「/56」とします。

 ここでは、プロバイダーのIPv6プレフィックスとして「2001:db8:ff00::/40」を使っていますので、IPv6アドレスの上位40ビットはあらかじめ決まっています。一方、エンドユーザーに割り当てるIPv6プレフィックスは「/56」、つまり上位56ビットですから、56-40=16ビット分を各ユーザーの識別に使うことになります。4rdではこの16ビット分に、IPv4グローバルアドレスの一部と、ポート番号を埋め込むのです。このケースでは、エンドユーザーに割り当てるIPv4グローバルアドレスは「192.0.2.0/24」ですので、全32ビットのアドレスのうち、上位24ビットはあらかじめ決まっています。そこで、残り8ビットをIPv6アドレスの中に埋め込みます。これで16ビット分のうち半分を使います。残った半分の8ビットにはTCPもしくはUDPのポート番号を割り当てるのです。8ビットで表現できる数は256ですから、一つのIPv4グローバルアドレスを256通りのポート番号と組み合わせることで、最大256人のエンドユーザーで共有できることになります。4rdに使うIPv6プレフィックスやIPv4グローバルアドレスのサイズは、プロバイダーのネットワーク設計によって変わります。アドレスの設計に合わせて、1個のIPv4グローバルアドレスを何人で共有するかも変化します。

 最後に、4rdのパケットの流れを見ていきましょう。エンドユーザーのパソコンから送り出されたパケットの送信元アドレスは、最初はIPv4プライベートアドレスです。宅内のCPEに届くと、そこでプロバイダーから割り当てられたIPv4グローバルアドレスとポート番号の組み合わせに書き換えられます(あて先のIPv4グローバルアドレスは書き換えません)。さらにこのパケットはIPv6パケットにカプセル化されます。この時、IPv6パケットの送信元アドレスとなるのは、プロバイダーから割り当てられたIPv6アドレスです。このIPv6パケットは、プロバイダーのIPv6ネットワークを通り、4rdゲートウエイに届きます。そして、4rdゲートウエイはカプセルを解き、IPv4パケットを取り出してあて先のIPv4対応サーバーなどに送り出します。サーバーから宅内のパソコンへパケットを返信する際は、あて先がIPv4グローバルアドレスとポート番号の組み合わせになります。複数のエンドユーザーがIPv4グローバルアドレスを共有している場合でも、ポート番号によってどのユーザーに戻せばいいか識別できるため、送信元のパソコンにきちんとパケットを届けられます。

 4rdは2011年4月現在、IETFにインターネットドラフトとして提案され、議論が進められています。