IPv6移行技術

IPv6移行技術（IPv6いこうぎじゅつ、IPv6 transition mechanism）とは、インターネットにおいて使用するプロトコルの、1981年から使われているIPv4 (Internet Protocol version 4) から、その後継技術であるIPv6 (Internet Protocol Version 6) への移行を促進するための技術である。IPv4/IPv6共存技術ともいう。

概要

IPv4とIPv6のネットワークは直接に相互運用可能でないため、IPv6移行技術はどちらのネットワークタイプに属するホストでも他のどのホストとも通信することが出来るように設計されている。
その技術的な基準を満たすために、IPv6には現在のIPv4からの直接の移行計画がなければならない。その目的に向けた移行技術を開発するために、Internet Engineering Task Force(IETF)はワーキンググループやインターネットドラフトやRFCを通じた議論を指揮している。いくつかの基本的なIPv6移行技術は RFC 4213 で定められている。
大きく分けて、IPv4ネットワーク下でIPv6通信を可能化する手法と、IPv6ネットワーク下でIPv4通信を可能化する手法がある。IPv6を推進する立場からは後者は「IPv4延命技術」とも呼ばれる。
IPv6ネットワーク下でIPv4通信を可能化する場合、トンネリング（カプセル化）やトランスレーション（ヘッダ書き換え）等の手法がある。トンネリングの場合、トンネル内ではIPv6のヘッダ分（標準 40bytes）オーバーヘッドが増える。トランスレーションでは、適用区間内で （IPv6ヘッダ - IPv4ヘッダ）分（標準 20 bytes）増加する。よって、ネットワークMTUとの関連で議論がある。またいずれの方式も、フラグメント化されたIPv4パケットの取扱いに難がある。
IPv4上のコネクション(L3)に対してしばしば、キャリアグレードNAT(CGN)が適用される。

ステートレスIP/ICMP変換

ステートレスIP/ICMP変換(SIIT: Stateless IP/ICMP Translation)は、IPv6とIPv4の間でパケットのヘッダフォーマットを変換する。SIITでは、「IPv4変換アドレス」(IPv4-translated address)と呼ばれるIPv6アドレスの種類を定義する。IPv4変換アドレスはプリフィックスが::ffff:0:0:0/96で、IPv4アドレスがa.b.c.dのとき::ffff:0:a.b.c.dのように書き表す。このプリフィックスは、トランスポート層のヘッダのチェックサム値が変化しないよう、値が0のチェックサムを与えるために選ばれた。
このアルゴリズムは、固定的に割り当てられたIPv4アドレスを持たないIPv6ホストが、IPv4のみのホストと通信する場合に使用される。アドレスの割当てとルーティングの詳細は、仕様に記載されていない。SIITは、ステートレスなネットワークアドレス変換(NAT)の特別な例である。
仕様はNGTRANS IETFワーキンググループによるもので、最初にサン・マイクロシステムズのE.Nordmarkによる RFC 2765 として、2000年2月にドラフトが発表された。RFC 2765は、2011年に RFC 6145 によって廃止された。RFC 2765のアドレス・フォーマットの一部は、 RFC 6052 で定められている。IPv4/IPv6変換の枠組みは、RFC 6144で定められている。

トンネルブローカー

トンネルブローカーは、IPv6のトラフィックをIPv4による接続の中にカプセル化することによって、IPv6による接続を提供する。一般的には6in4が使用される。これは、IPv4ネットワークの中にIPv6トンネルを確立する方法である。トンネルは、Tunnel Setup Protocol(TSP)やAnything In Anything(AYIYA)で管理される。初のトンネルブローカーは、1999年2月に公開された。

6rd

6rdは、インターネットサービスプロバイダ(ISP)がIPv4基盤を通してIPv6サービスを迅速に提供することを容易にする技術である。IPv4とIPv6の間でステートレスなアドレスマッピングを使用し、顧客ノードの間でIPv4パケットと同様に最適化されたルートをたどる自動的に生成されたトンネルを通してIPv6パケットを送る。
2007年の RFC 5569 によって定義され、ネイティブアドレスに対するIPv6サービスの初期の大規模な展開のために使われた。プロトコルの標準化過程の仕様は RFC 5969 である。

Transport Relay Translation

RFC 3142 ではTransport Relay Translation (TRT)が定められている。この方法は、NAT-PT/NAPT-PTとほぼ同一であるが、DNSのAAAAレコードとAレコードの変換に RFC 2694 で定められたDNS-ALGを使用する。

NAT64

NAT64は、IPv6ホストがIPv4サーバーと通信することができるようにする技術である。NAT64サーバは、少なくとも1つのIPv4アドレスと、32ビット（例：64:ff9b::/96）のIPv6ネットワークセグメントを持つエンドポイントである( RFC 6052, RFC 6146 )。
IPv6クライアントは、これらのビットを用いて通信することを望むIPv4アドレスを埋め、結果として生じるアドレスにパケットを送る。NAT64サーバーはIPv6とIPv4アドレスの間でNATマッピングを作成し、クライアントと相手先が通信できるようにする。

MAP

Mapping of Address and Port(MAP)は、CiscoによるIPv6移行技術の提案で、A+P のポートアドレス変換と、ISP内部のIPv6ネットワークの上にIPv4のトンネリングを行う技術を複合させる。2012年09現在、MAPはInternet Draftの標準化過程(standards-track)の状態にあった。
IPv4パケットをIPv6にカプセル化しトンネリングする方式がMAP-E (RFC 7597)である。トンネリングではなく、NAT64によりトランスレーション（ヘッダ書き換え）を行う方式はMAP-T (RFC 7599)と呼ぶ。
いずれの方法も、CPE側 (CE)でNAPT実施（ステートフル）し、PE側 (BR:Border Relay) はステートレスとなる。

提案中の草案

以下の方法は、まだ議論中であるか、IETFによって放棄された。

4rd

4rd(IPv4 Residual Deployment)は、 RFC 7600 で定義された、IPv6ネットワークを通してIPv4サービスの提供を容易にするための技術である。6rdのように、IPv6とIPv4の間でステートレスなアドレスマッピングを使用する。トランスポート層ポートに基づくIPv4アドレスの拡張をサポートする。これは、A+Pモデルのステートレスな変種である。
4rd-U (Unified) とは異なる。MAP-Eの原型。

非推奨の方法

以下の方法は、IETFによって非推奨とされた。

NAT-PT

ネットワークアドレス変換/プロトコル変換(NAT-PT: Network Address Translation/Protocol Translation)は RFC 2766 で定められたが、多くの問題のために、 RFC 4966 によって廃止された。一般的に、NAT-PTはDNSアプリケーション・レベル・ゲートウェイ(DNS-ALG)実装とともに用いられる。

NAPT-PT

ネットワークアドレスポート変換/プロトコル変換(NAPT-PT: Network Address Port Translation/Protocol Translation)は、 RFC 2766 で定められた。NAT-PTとほとんど同じであるが、アドレスだけでなくポート番号の変換も行う。この方法は、 RFC 4966 によって廃止された。