IPv6移行技術

IPv6移行技術とは、インターネットにおいて使用するプロトコルの、1981年から使われているIPv4  から、その後継技術であるIPv6  へのIPv6の展開を促進するための技術である。IPv4/IPv6共存技術ともいう。

1. 概要
-----

IPv4とIPv6のネットワークは直接に相互運用可能でないため、IPv6移行技術はどちらのネットワークタイプに属するホストでも他のどのホストとも通信することが出来るように設計されている。

その技術的な基準を満たすために、IPv6には現在のIPv4からの直接の移行計画がなければならない。その目的に向けた移行技術を開発するために、Internet Engineering Task ForceはワーキンググループやインターネットドラフトやRFCを通じた議論を指揮している。いくつかの基本的なIPv6移行技術は 4213}} で定められている。

大きく分けて、IPv4ネットワーク下でIPv6通信を可能化する手法と、IPv6ネットワーク下でIPv4通信を可能化する手法がある。IPv6を推進する立場からは後者は「IPv4延命技術」とも呼ばれる。

IPv6ネットワーク下でIPv4通信を可能化する場合、トンネリングやトランスレーション等の手法がある。トンネリングの場合、トンネル内ではIPv6のヘッダ分オーバーヘッドが増えるそもそもPPPoEなどでもオーバーヘッドはある}}。トランスレーションでは、適用区間内で 分増加する。よって、ネットワークMTUとの関連で議論がある。またいずれの方式も、フラグメント化されたIPv4パケットの取扱いに難があるIPv6にはIPフラグメンテーションの概念がない。}}。

IPv4上のコネクションに対してしばしば、キャリアグレードNATが適用される。

2. ステートレスIP/ICMP変換
------------------

ステートレスIP/ICMP変換は、IPv6とIPv4の間でパケットのヘッダフォーマットを変換する。SIITでは、「IPv4変換アドレス」と呼ばれるIPv6アドレスの種類を定義する。IPv4変換アドレスはプリフィックスが//::ffff:0:0:0/96//で、IPv4アドレスが//a.b.c.d//のとき//::ffff:0:a.b.c.d//のように書き表す。このプリフィックスは、トランスポート層のヘッダのチェックサム値が変化しないよう、値が0のチェックサムを与えるために選ばれた。

このアルゴリズムは、固定的に割り当てられたIPv4アドレスを持たないIPv6ホストが、IPv4のみのホストと通信する場合に使用される。アドレスの割当てとルーティングの詳細は、仕様に記載されていない。SIITは、ステートレスなネットワークアドレス変換の特別な例である。

仕様はNGTRANS IETFワーキンググループによるもので、最初にサン・マイクロシステムズのE.Nordmarkによる 2765}} として、2000年2月にドラフトが発表された。2765}}は、2011年に 6145}} によって廃止された。2765}}のアドレス・フォーマットの一部は、 6052}} で定められている。IPv4/IPv6変換の枠組みは、6144}}で定められている。

3. トンネルブローカー
------------

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

4. 6rd
------

6rdは、インターネットサービスプロバイダがIPv4基盤を通してIPv6サービスを迅速に提供することを容易にする技術である。IPv4とIPv6の間でステートレスなアドレスマッピングを使用し、顧客ノードの間でIPv4パケットと同様に最適化されたルートをたどる自動的に生成されたトンネルを通してIPv6パケットを送る。

2007年の 5569}} によって定義され、ネイティブアドレスに対するIPv6サービスの初期の大規模な展開のために使われた。プロトコルの標準化過程の仕様は 5969}} である。

5. Transport Relay Translation
------------------------------

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

6. NAT64
--------

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

7. DNS64
--------

DNS64は、ドメインのAAAAレコードを要求されるためにDNSサーバーを記述するが、Aレコードだけしか見つけられなかった場合は、AレコードからAAAAレコードを合成する。合成されたIPv6アドレスの最初の部分はIPv6/IPv4トランスレータを指し、第2の部分はAレコードからIPv4アドレスで埋める。トランスレータは、通常NAT64サーバーである。DNS64の標準化過程の仕様は 6147}} である。

DNS64には、以下の2つの問題がある。

DNSが遠隔ホストアドレスを見つけた場合にしか働かない。IPv4リテラルが使われるならば、DNS64サーバーは決して関与しない。
DNS64サーバーがドメインのオーナーで特定されない記録を返す必要があるので、変換しているDNSサーバーがドメインのオーナーのサーバーでない場合、ルートに対するDNSSEC確認は失敗する。

8. ISATAP
---------

9. 464XLAT
----------

464XLATは、IPv6のみのネットワークの上のクライアントがIPv4のみのインターネットサービスにアクセスできるようにする。

クライアントは、IPv6のみのネットワークを通してNAT64トランスレーターに送るために、SIITトランスレーターを使用してIPv4パケットをIPv6に変換する。NAT64トランスレーターは、IPv4が使用可能なネットワークを通してIPv4のみのサーバに送るために、IPv6パケットをIPv4に変換する。SIITトランスレーターは、クライアントそのものとして、または中間のIPv4が使用可能なLANとして実装される。NAT64トランスレーターは、サーバーとクライアントに到達できなければならない。NAT64の使用は、UDP、TCP、ICMPを用いたクライアントサーバモデルの接続に制限される。

464XLATはトランスレーションであり、CPEあるいは端末に置かれるCLATはステートレス、PEに置かれるPLATはステートフルとなる。

実装
Android用のCLATの実装： [1]
AndroidネイティブのCLATの実装はバージョン4.3で導入された。
Windows PhoneネイティブのCLATの実装は2014年にWP 8.1で導入された。
iOSネイティブのCLATの実装は存在しない。

10. Dual-Stack Lite 
-----------------------------

Dual-Stack Liteは、 6333}} で定義されている。DS-Liteでは、インターネット接続を提供するためにグローバルIPv4アドレスをカスタマ構内設備に割り当てる必要がない。

CPEは、ISPから割り当てられた範囲でLANクライアントにプライベートIPv4アドレスを配信する。CPEは、IPv6パケットの中にIPv4パケットをIPトンネルする。CPEはパケットをISPのキャリアグレードNATに届けるためにグローバルなIPv6接続を使用する。ISPのCGNにはグローバルなIPv4アドレスが割り当てられている。ISPのCGNは、元のIPv4パケットをデカプセル化し、IPv4パケットにNATを実行し、グローバルのIPv4インターネットに送信する。CGNは、セッションごとにCPEのグローバルIPv6アドレス、プライベートIPv4アドレス、TCPまたはUDPのポート番号を記録することにより、個々のトラフィックフローを識別する。

11. MAP
-------

Mapping of Address and Portは、CiscoによるIPv6移行技術の提案で、アドレス+ポート のポートアドレス変換と、ISP内部のIPv6ネットワークの上にIPv4のトンネリングを行う技術を複合させる。2012、MAPはInternet Draftの標準化過程の状態にあった。

IPv4パケットをIPv6にカプセル化しトンネリングする方式がMAP-E である。トンネリングではなく、NAT64によりトランスレーションを行う方式はMAP-T と呼ぶ。

いずれの方法も、CPE側 でNAPT実施し、PE側  はステートレスとなる。

12. 提案中の草案
----------

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

12.1. 4rd
---------

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

4rd-U  とは異なる。MAP-Eの原型。

13. 非推奨の方法
----------

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

13.1. NAT-PT
------------

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

13.2. NAPT-PT
-------------

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

14. その他の方法
----------

1:N
dIVI = double IVI。MAP-Tの原型
4rd-U
ヘッダ情報のマッピング。MAP-EとMAP-Tの統合。4rdとは異なる。
7596}}。MAP-Eとの相違点

15. 実装
------

stone  - WindowsとUnix系OSのポートトランスレータ
faithd - BSDベースの固定TRTの実装
[2] - Linux用のステートレスなNAT64の実装
[3] - Linux用のステートフルなNAT64の実装
[4] - ユーザレベルのNAT-PT
[5] - NAT64ゲートウェイ
[6] - DS-Liteの実装
[7] - IPv4ユニキャストトラフィックをIPv6ネットワークへ流せるようにするLinuxカーネルデバイス
[8] - IPv4/IPv6パケット変換の実装
Microsoft Forefront Unified Access Gateway - DNS64・NAT64を実装するリバースプロキシ・VPN
BIND - バージョン9.8からDNS64を実装
PF  - OpenBSDのパケットフィルタ。バージョン5.1からNAT64を含むIPバージョン変換をサポートする。

16. 脚注
------

16.1. 注釈
--------

16.2. 出典
--------

17. 参考文献
--------

//IPv6 in Practice//, Benedikt Stockebrand , ISBN 3-540-24524-3
2767}}, //Bump-in-the-Stack//
3338}}, //Bump-in-the-API//
3089}}, //Socks-based Gateway//
6219}}, //The China Education and Research Network  IVI Translation Design and Deployment for the IPv4/IPv6 Coexistence and Transition//

18. 外部リンク
---------

[9]
[10]
[11]
6144}} Framework for IPv4/IPv6 Translation
[12], 6DEPLOY project, 2011
[13] Gianrico Fichera, 2012