IPv6
fd00::/8 アドレスの一部をランダムに生成して使用する。完全な一意性は保証されないものの、異なる組織でアドレスが重複する可能性は低い。
(グローバルIDは、各ネットワーク単位で乱数を用いて決定することになっている。国際機関で一意に管理されている値ではないため、ユニークローカルユニキャストアドレスはローカルアドレスであってグローバルアドレスとしては運用できない。)
アドレス先頭の空白の付加は非推奨であるが、分かりやすさ(或いはソート)のため付けている。
廃止されていても過去の実装では使用している場合がある。
廃止されたまたは表外のアドレス空間についても、ほぼIETFによって予約されているので自由に使用できる訳ではない。
IPv6のヘッダはIPv4ではあまり使われなかったものが廃止されるなど簡略化されているが、アドレス長が長くなっているので、ヘッダ長はIPv4の20バイトから40バイトに増加している。
また、様々なオプションがエクステンションヘッダとして定義され、これは前のヘッダが次のヘッダのタイプを示すことで数珠つなぎにすることが可能となっている。
また使用する順番がほぼ固定されている。主に送信元や中継のルータが使用するオプションは前の方に、到着したルータやノードに対してのオプションは最後の方に定義される。
IPv6で定義されているエクステンションヘッダは次の通り。
途中通過するルータで処理されるオプションが格納されているヘッダ。
最終あて先ノードで処理されるオプションが格納されているヘッダ。
途中通過する経路のIPアドレスを格納したヘッダ。ソース・ルーティングに使用される。IPv4のルーティングヘッダとほぼ同じ。
フラグメント情報を格納するヘッダ。IPv6では途中のルータがフラグメントを分割・再構成することはなく、送信元でのみ行われる。送信・受信の各ホストで経路MTU探索 (Path MTU Discovery) を行い、送信するパケットのサイズを調整する。
IPsec AHの認証データを格納するヘッダ
IPsec ESPの情報を格納するヘッダ。暗号化されたパケットは、IPヘッダとこのESPヘッダ以外は暗号化される。
IPv4 では通信相手の IPアドレス からその MACアドレスを取得するために ARP を用いていたが、IPv6 では近隣探索 (Neighbor Discovery) という方法が用いられる。
これは、ICMP の IPv6 版である ICMPv6 の枠組み(NDP、Neighbor Discovery)を用いてアドレス解決する。アドレス解決をしたいノードはペイロードに解決したいアドレスを格納して、マルチキャストアドレスに IPv4 の ARP request に相当する Neighbor Solicitation (NS) パケットを送信し、それに答えるべきノードは、Target linklayer address option に自ノードの MAC アドレスを格納した Neighbor Advertisement (NA) を送信してアドレス解決を行う。RFC 4861 で規定されている。
IPv6ではDHCPを用いなくてもルータさえあればアドレスの自動設定が可能となっている (RFC 4862)。これをステートレスアドレス自動設定 (Stateless Address Autoconfiguration、SLAAC)と言う。
ルータは自分の接続しているネットワークに対し、定期的にあるいは要請に基づいて、そのネットワークに関する情報を送信している。これはルータ広告(Router advertisement; RA)と言い、近隣探索プロトコルの中で規定されている。ルータ広告に含まれるプレフィックス情報と一意のインタフェースIDを用いて、IPv6ホストはグローバルアドレスを生成する。同時に、そのIPv6ホストは受信したRAを送信したルータをデフォルト経路に設定することで、グローバルIPv6ネットワークへの接続性も確保できる。
しかし、この仕組みでは名前解決のためのDNSサーバのアドレスを取得することはできないため、それにはDHCPv6など別の仕組みが必要になる。
DHCPv6サーバから自動的にIPが割り当てられるものは、どのPCがどのIPアドレスかがDHCPサーバに記録されているので、ステートフルアドレス自動設定と呼ばれる。一方、この「ステートレスアドレス自動設定」はルータからIPが割り当てられるが、どのPCにどのIPが割り当てられたかをルータ自身は知らない。状況を知らないのでステートレスなのである。
概念的にはIPv4とIPv6はほぼ同等と言えるが、実際のパケットフォーマットは完全に異なる上、IPアドレス空間の大きさも違うため、1対1対応はできない。そのため、IPv6ノードとIPv4ノードが互いに直接通信することはできない。そのため、IPv6とIPv4との通信用にいくつかの仕組み、プロトコルが提案されている。
ルータやサーバなどの機器にIPv4とIPv6の両アドレスを割り当て、 どちらの方式でも通信できるようにする仕組み。
また、IPv6/IPv4トランスレータと呼ばれる装置によって、プロトコル変換を行う方法がある。例えば、Proxy方式では、OSI参照モデルで上位層であるアプリケーション層でプロトコル変換を行うことで、ネットワーク層であるIPプロトコルの違いを隠蔽している。これにより、利用者からみた場合、IPv4のプライベートアドレスが使用されているLAN内から、IPv4/IPv6に関係なくURLで、インターネット上のサイトにアクセスできるように見える。
IPv6のネイティブな接続を提供しているISPはまだ少ない。
そのため、IPv4パケット上にIPv6パケットをカプセル化して通すトンネリング技術を使い、既存のIPv4インフラを利用してIPv6を提供するISPもある。
トンネリングに用いられる技術には以下のようなものがある。
6over4 (RFC 2529)
6to4 (RFC 3056) : 品質が保証されない、パケット盗聴などのセキュリティ問題が起こりやすいという理由でHistoricalとなった (RFC 7526)。
Teredo (RFC 4380)
ISATAP (RFC 5214)
6rd (RFC 5569)
6in4 (RFC 4213)
4in6 (RFC 2473)
Dual-Stack Lite(DS-Lite) (RFC 6333)
Mapping of Address and Port (RFC 7597, RFC 7599)
IPv4 Residual Deployment (RFC 7600)
Windowsでは、6over4, Teredo, ISATAP, 6to4のみがOSとしてサポートされている。他の方式を使用するには、サードパーティ製のソフトウェアを追加する必要がある。
Windowsでは、IPv6のグローバルアドレスが設定されていない場合、Microsoftが無償提供しているTeredoによる接続サービスによるトンネリングを自動設定する。
Windowsでは、IPv4のグローバルアドレスが設定されている場合、Microsoftが無償提供している6to4による接続サービスによるトンネリングを自動設定する。
Windows Vista以降による接続では、ホスト名で通信相手を指定した場合にIPv6で通信できない場合がある。これは、ホスト名のアドレス解決においてホストにリンク ローカル アドレスまたは Teredo アドレスしか割り当てられていない場合、DNSクライアントサービスはIPv4用のAレコードに関するクエリだけを送信するためIPv6アドレスが取得できないためである。この場合、ホスト名では通信対象のIPv6アドレスを特定できず、URLで直接IPv6アドレスを指定したりしない限り、指定した相手にIPv6で通信することはない。
基本的にカーネルの版数やディストリビューション、パッケージの構成に依存するため、どの方式のトンネリングが使用できるかは明示できない。Linuxの場合、ディストリビュータによるサポート範囲では、6over4、ISATAP、6to4程度である場合がある。
実際にIPv6ネットワークを新たに導入する場合は、既存のIPv4空間との通信と併存両立させるために、ISPとユーザー側の双方でIPv6対応設備機器の追加、更新が必要となる。なお、端末、サーバー、OS、アプリケーションなどの対応についてはIPv6への対応を参照。
エンドユーザ向けのルーターなどのCPEについては、既存のルーターが持っていることが多いIPv6ブリッジ機能だけでは対応できない方式が多く、CPE機器の更新が必要になる場合も多い。
なお、IPv6とIPv4を共存させる方式として、以下のようなものがある。ただし、どの方式によるかは接続するプロバイダや通信環境などに依存する部分が多い。
6rd方式、および、その派生方式
6rd (IPv6 rapid deployment) は、RFC 3056で標準化されているIPv6/IPv4トンネリング技術である6to4を土台として設計された方式である。基本的には途中のIPv4空間にIPv6の信号を流すためのトンネルを設定する形である。2011年4月時点でのIPv6 over IPv4の文脈上で「IPv6接続サービス」として提供されているものは、この方式が多い。
流れとしてはエンドユーザ (v6) →6rd対応ルータ(v4トンネル入口)→v4網→リレールータ(v4トンネル出口)→v6網 となる
導入は比較的容易であり、エンドユーザ側については、設定変更やIPv6の接続用アプリケーションの追加のみで対応できる。しかし、IPv4網内にIPv6信号をトンネリングさせる関係上、各端末にIPv4のグローバルアドレスを割り当てるため、使用するIPv4のIPアドレスの数は減らず、IPv4のIPアドレス枯渇問題を解決することにはならない。ISPが用意しているIPv4のIPアドレスの在庫が枯渇した時点で、新規にユーザを増やすことができなくなる。
類似の方式としては、 RFC 4380 で標準化されているTeredoがある。Teredoについては、Microsoftが、Windowsのユーザ向けに無償提供しているIPv6接続サービスをデフォルトで使用できるようにしていることから、潜在的普及率は高い。ただし、Windows Vista以降による接続では、ホスト名のアドレス解決においてホストにリンク ローカル アドレスまたは Teredo アドレスしか割り当てられていない場合、DNSクライアントサービスはIPv4用のAレコードに関するクエリだけを送信するためIPv6アドレスが取得できず、URLで直接IPv6アドレスを指定したりしない限り、指定した相手にIPv6で通信することはない。
IPv6とIPv4のデュアルスタック (DS) +NAT444方式、および、その派生方式
IPv6については、そのまま接続し、IPv4については複数階層のNAPT (NAT444 : ()) を経由する方式である。イメージとしては、現在のルータなどを使った複数端末のIPv4接続で使用しているNAPTを複数回行って、接続に使用するIPv4のIPアドレスを節約しようとするものである。
IPv4についての流れはエンドユーザ(v4プライベート)→ユーザNAPT(v4グローバル共有)→ISPNAPT(v4グローバル単独)→v4網 となる
複数の端末で、IPv4のグローバルアドレスを共有する関係上、端末当たりのセッション数が制限され、アプリケーションが正常に利用できない場合がある。また、プロバイダ側で管理する通信ログの扱いが煩雑であり、負担が大きい。IPv4による通信では、多段NATとなるため、エンドユーザー間でのP2Pによる直接通信は不可能となる。
導入に関しては、比較的容易である。特に、IPv6ブリッジ機能があるルーターを使用している場合には、エンドユーザ側については、設定変更やIPv6の接続用アプリケーションの追加のみで対応できる場合がある。
DS-Lite (Dual-stack lite) 方式や、SAM () 方式、および、それらの派生方式
IPv4/IPv6トンネリング技術であるIPv4 over IPv6トンネルを土台として設計された方式である。イメージは6rd方式とは逆に、途中のIPv6空間にIPv4の信号を流すためのトンネルを設定する形である。大雑把には、ユーザ側で行うIPv4のプライベート - グローバルアドレス変換をISP側に移し、さらにIPv6も共存させる形になる。
DS-Liteの場合、IPv4についての流れはエンドユーザ(v4プライベート)→ユーザ接続装置(v6トンネル入口)→v6網→ISPNAPT(v6トンネル出口・v4グローバル共有変換)→v4網 となる。
SAMの場合、IPv4についての流れはエンドユーザ(v4プライベート)→ユーザ接続装置(v6トンネル入口・v4グローバル共有変換)→v6網→ISPNAPT(v6トンネル出口)→v4網 となる。
v4グローバル共有変換部分で、ユーザ単位で使用可能なポートの範囲を制限することで、IPv4アドレスの共有を行う。NAPTの階層を複数にする代わりに、単段のNAPTを分割使用するイメージになる。そのため、エンドユーザ向けのルーターなどのCPEは既存のものが使用できず、該当する方式に対応したものに変更する必要がある。前記DS+NAT444方式同様、複数の端末で、IPv4のグローバルアドレスを共有するため、端末当たりのセッション数が制限され、アプリケーションが正常に利用できない場合がある。プロバイダ側で管理する通信ログの扱いが煩雑であり、負担が大きい。しかしながら、IPv4による通信では、NAPTが単段であるため、通信相手に制限があるが、UPnPなどを利用したP2Pによる直接通信は可能になる。
NTT(東日本、西日本)のフレッツ網は、実運用されているIPv6のネットワークとしては2011年現在で約1390万回線を有する世界最大級のネットワークである。フレッツ網におけるIPv6の適用の詳細については、上記項目を参照。