接続形態は3種類

図2●IPv6ネットワークへの接続方法には3種類ある
IPv6データをIPv4でカプセル化して既存のIPv4ネットワークで中継するトンネリング,IPv4とIPv6を独立したネットワークとして運用するネイティブ,IPv4とIPv6が対等に共存するデュアル・スタックの3つ。一部でデュアル・スタック型の商用サービスも始まったほか,データセンターやIXでのIPv6対応も始まっている。データセンターやIXは今のところ,ネイティブ型の接続形態が主流。

 IPの次世代プロトコルだと言っても,一朝一夕にIPv4からIPv6に置き換えるというわけにはいかない。必ずIPv4とIPv6が混在する過渡期がある。そこで,ISP各社は,IPv4とIPv6を共存させることを前提にサービスを提供している。11月には,デュアル・スタック型がついに商用サービスとなり,IPv6への移行シナリオが一通りそろったことになる。

 ISPのIPv6サービスには,(1)トンネリング型,(2)ネイティブ型,(3)デュアル・スタック型というように,接続形態が3種類ある(図2[拡大表示])。トンネリング型はIPv6パケットをIPv4でカプセル化し,既存のIPv4ネットワークを介してIPv6ネットワークに接続する方式。いわゆるIPv6 over IPv4である。

 ネイティブ型は,ユーザー・サイトとIPv6ネットワークを直結するサービス。ただし,この場合のIPv6ネットワークは既存のIPv4ネットワークとは独立しているため,IPv4とIPv6の両方を利用する場合は,アクセス回線を別々に利用しなければならない。データセンターやIXがそれぞれのユーザーに対して提供している接続サービスは基本的にネイティブ型で実現されている。

 そしてIPv6接続サービスの本命が,(3)のデュアル・スタックである。ユーザーはIPv4アドレスとIPv6アドレスの両方を割り当てられ,ルーターに両方のアドレスを設定し,接続する。バックボーン側もIPv4とIPv6のデュアル・スタックになっていて,1本のアクセス回線でIPv4とIPv6の両方の通信を実行できる。ユーザーは,プロトコルを意識せずにインターネット接続環境を構築できる。

DNS検索はv4で実行

図3●Windows XPによるIPv6通信の様子
Internet Explorerを利用する場合に限り,自動的にIPv6サイトを識別してIPv6通信を実行する。その他のアプリケーションでは,アクセス先のサーバーのIPv6アドレスを指定する必要がある。

 IPv6ルーターを設置してISPに接続するだけでは,IPv6の利用環境としては十分ではない。エンドユーザーの視点で見ると,アプリケーションがIPv4とIPv6を使い分けてくれるような仕組みが欠かせない。どちらのプロトコルを使うべきかをユーザーが意識するのは非現実的だからだ。実は,この点は,OS側の機能でカバーできるようになっている。

 ネットワーク層のプロトコルであるIPv6は,基本的にアプリケーションとは無関係なはずである。ただ,それぞれのOS上では,IPv4とIPv6で異なるライブラリ関数を持っている。IPv4とIPv6のどちらを利用するかで,アプリケーションから呼び出すネットワークの関数も違ってしまう。このため,アプリケーションにIPv4用とは別のインタフェースを持たせなければならない。

 とは言え,エンドユーザーのデスクトップPC上で,IPv4とIPv6のどちらを利用するかを意識させるのは難しい。そこで,デュアル・スタックのOSが,自動的にIPv4とIPv6を使い分ける。ポイントは,DNS(ドメイン名システム)検索をデフォルトでIPv4で実行するように設定してあることだ。

 Windows XPを例に見てみよう。Windows XPには,IPv6スタックを利用できるようにするために新たなライブラリ関数を追加している。getaddr-infoやWininet.dllである。これらのライブラリは,サーバーのIPアドレスを解決するところからプロトコルを選ぶまでの過程で,アプリケーションから呼び出される(図3[拡大表示])。

 厳密には,getaddr-infoは上位アプリケーションとTCP/IPを仲介するソケット・インタフェース(WinSock)の一部として機能する。Wininet.dllは,Internet Explorer用のライブラリで,WinSockとIEを仲介する。

 まず,エンドユーザーがIE上でURLを入力する。ここで,Windows XPのリゾルバ(DNSクライアント)は,IPv4を使ってWebサイトのIPアドレスを検索する。出荷当初のWindows XPでは,基本的にDNS検索はIPv4でしか実行できないようになっている。

 対象のWebサイトがデュアル・スタックなら,DNSサーバーからはIPv4アドレスとIPv6アドレスの両方が返信されてくる。ここで,getaddr-infoがどちらのプロトコルを使うかを判断する。どちらを選ぶかは,アプリケーションの実装次第。「まずIPv6での通信を試みて,通信に失敗したらIPv4に切り替えるという実装が一般的になりそうだ」(マイクロソフト ウィンドウズ開発統括部エンタープライズ&エンベディッド グループ シニア マネージャの及川 卓也氏)。IEを使う場合は,IEがWininet.dllを呼び出し,Wininet.dllが,getaddr-infoなどのソケット通信をすべて自動実行する。