IPv6入門 第三回 IPv6特有のプラグ&プレイを知る

 現在のインターネットは,個々のコンピュータに一意なIPアドレスを割り振ることで通信が成り立っている。自宅であれオフィスであれ,インターネットにつなぐマシンにはIPアドレスを割り当てなければならない。IPv6でもこの事情はまったく同じ。IPv6で使うIPv6アドレスは,前回紹介したように128ビットとかなり長い。16進数表記でも気軽に覚えられるものではない。「あなたのマシンのIPv6アドレスは,2001:100:123:10:200:87ff:fe60:9e7aですよ」と言われても,それを手入力でパソコンに設定するとしたらなかなか大変だ。
 幸いIPv6ネットでは,IPv6ソフトをインストールしたときにIPv6アドレスの設定で戸惑うことはない。すべてのIPv6ソフトは,動的に自らのIPアドレスを生成し,それを自分自身に割り当てる機能を備えているからだ。つまりIPv6マシンは,IPv6ソフトを起動した段階で,最低限のTCP  /IP通信機能をすぐに利用できるようになっている。
 このアドレスの自動割り当て機能を,IPv6におけるプラグ・アンド・プレイ(挿せば動く)と呼ぶ。具体的には,LANケーブルをつないだ瞬間に,世界中でユニークなIPv6アドレスを自らに設定するのである。この機能があるので,IPv6ネットを使っていてもIPv6アドレスの長さに閉口する場面はあまりないだろう。
 今号は,プラグ・アンド・プレイ機能のしくみを見ていくことにする。
 プラグ・アンド・プレイの最終的な目的は,電源を入れたり,ケーブルに接続したりするだけですぐにIPv6の通信環境をセットアップすることだ。ユーザーが特別な初期設定をしなくても済むように,また家電などの通信技術として組み込みやすいように,こうした設計思想が持ち込まれている。
 こうしたことから,プラグ・アンド・プレイの開発テーマは幅広い。たとえば,自分がアドレス解決に使うDNSサーバーのIPv6アドレスも自動的に探し出して自ら設定したり,自分のIPv6アドレスをDNSサーバーに通知して自動登録するといった技術も検討項目に挙がっている。
 ただし,今あるIPv6ソフトに実装されているプラグ・アンド・プレイ機能は,自身のIPアドレスの生成と設定,そしてデフォルト・ゲートウェイの探索と設定である。
 IPv6のプラグ・アンド・プレイは,RAと呼ばれるIPv6独自の手法に基づいて進められる。IPv4では,DHCPサーバーから各種のアドレス情報をもらうことで,一種のプラグ・アンド・プレイ機能を実現していたが,IPv6のRA(routing advertisement)方式はDHCP方式とはまったく違う。
 RAを日本語に訳すと「ルーターの広告」となる。これは,ルーターがIPアドレス情報をLAN上のマシンに通知することを意味している。
 ルーターが広告するIPアドレス情報は,128ビットの前半部分の64ビット分である。このルーターが広告するIPアドレス情報はプレフィクスと呼ばれ,そのルーターの配下にあるすべてのマシンで同じ値になる。プレフィクスは,ルーター間で経路を識別するための情報となる。通常,インターネット接続事業者がネットワークごとに割り当てる。そしてこれをネットワーク管理者がルーターに設定し,ルーターに広告させる。
 では残りの下位64ビットはというと,これはパソコン自身が決める。上位64ビットをプレフィクスと呼ぶのに対し,下位64ビットはインタフェースIDと呼ばれる。ルーターから受け取ったプレフィクスに自身で生成したインタフェースIDを組み合わせた結宋を,自分が使うべきIPv6アドレスとして設定するのである。
 RAの動作を整理しておこう。

IPv6ではRA方式でアドレスをパソコンに自動的に割り当てる 図1 IPv6ではRA方式でアドレスをパソコンに自動的に割り当てる

 まずパソコンは,起動した際にネットワーク上に存在するすべてのルーターに対してプレフィクスを送信するよう要求する。するとルーターは,プレフィクスをパソコンに対して返信する。パソコンはインタフェースIDを生成し,受け取ったプレフィクスと組み合わせてIPv6アドレスを完成させる。
 最後に,完成したIPv6アドレスがほかのパソコンのIPv6アドレスと重複していないか確認をする。あとで説明するように,インタフェースIDはほかのマシンと重複しないように作ることが前提であるため,完成したIPv6アドレスがほかのマシンのアドレスと重複する確率は極めて低い。それでも念には念を入れて重複アドレスが存在していないかどうかをチェックするのである。
 チェックには,近隣探索と呼ぶ同報機能を用いる。具体的には,完成したIPv6アドレスをLAN上に同報し,すでにそのIPv6アドレスを使っているマシンがいないかどうかを調べる。もしこれに対する返事が送られてきたら,それは自分と同じIPv6アドレスを持つパソコンがLAN上にある(重複している)ということになる。
 ルーターにプレフィクス通知を要求するという説明を読んで,“自分のIPv6アドレスが完成していないのに,どうしてIPパケットをルーターヘ送れるのだろう?”と疑問に感じた人がいるかもしれない。
 実はIPv6マシンはすべて,プレフィクスを受け取らなくても自分だけで作れるIPv6アドレスを必ず持っている。前号で紹介した「リンクローカル・アドレス」がそれである。リンクローカル・アドレスは,専用に割り当てられたプレフィクス「fe80::」を使うので,インタフェースIDを生成できれば必ずIPv6アドレスを作ることができる。
 前半64ビットは決められた同じ値を利用するので,ルーターを越える通信には使えないが,ルーターとは通信できる。このリンクローカル・アドレスがあるから,パソコンは起動した段階でルーターにプレフィクスを要求できるのだ。
 次に,インタフェースIDについて説明しよう。インタフェースIDはパソコンが自動的に決めると紹介したが,決め方にはいろいろな方法がある。インタフェースIDの投割は,同じプレフィクスを利用するネットワーク(例えばLAN)の中でマシンを特定することにある。このため,ネットワーク内部でほかのパソコンと重複しないことを保証できる値ならなんでもよい。
 多くのIPv6ソフトが採用する代表的なインタフェースIDの作成方法は,LANカードに焼き付けられているMAC(media access control)アドレスを利用するものだ。MACアドレスは,IEEE802方式のLANで使われる48ビットのアドレス体系。メーカー識別子と機器識別子を組み合わせることでユニーク性を保証しているので,これを基にインタフェースIDを作れば,LANに接続しているマシン間でなら重複する危険性はまずない。
 MACアドレスは48ビットなので,インタフェースIDにするにはあと16ビット分を加える必要がある。この手法には決まりがある。それは,MACアドレスのちょうど中間に「fffe」という固定値を挿入する方法だ

インタフェースIDの作り方
図2 インタフェースIDの作り方

 LANカードを持たずにダイヤルアップだけでインターネットにつながる環境下にある場合は,MACアドレスを使うやり方は利用できないので別の方法が必要になる。
 この場合,例えばパソコンに割り当てたホスト名をベースにするという手法がある。ホスト名はアルファベットや数字などの文字列で構成するので,1文字ずつをビット表記に変換できる。そこで,できあがったビット列をハッシュと呼ぶ関数にかけあわせて,64ビットの数字を別に作り出 すというものだ。
 ハッシュとは,基となるビット列から固定長の乱数を生成する関数のこと。生成された乱数はハッシュ値と呼ばれ,別々のビット列から生成されたハッシュ値が同じ値になる可能性はとても低いという特性を持つ。この特性があるので,ハッシュ値はインタフェースIDとしても使えるという考えだ。
 このハッシュを使う方法は基となるビット列を自由に選べるので応用が利く。例えば,携帯電話から直接IPv6インターネットにつなぐような場面では,電話番号から64ビットのハッシュ値を算出できる。
 万が一,インタフェースIDの重複が見つかった場合は,別の方法でインタフェースIDを生成し直すことがIPv6の仕様で決まっている。ただし,現在のほとんどのIPv6ソフトは,インタフェースIDを再生成する機能を装備できていない。
 プラグ・アンド・プレイが便利なのは,ノートパソコンなどを持ち歩き,異なるLANに接続するような場面だ。設定を変える必要がないからである。
 例えば会議室のLANでWebアクセスした後,自分の席に戻ってパソコンをLANに差し直すと,自動的にそのLANを流れているプレフィクスを取得し,新しいIPv6アドレスを作って再設定する。ユーザーは設定変更に悩まなくて済むわけだ。

LANを移動するとIPアドレスは自動的に設定し直される
図3 LANを移動するとIPアドレスは自動的に設定し直される

 余談になるが,この考え方をさらに一歩進めて,ある通信をしている最中につなぐLANを差し替えても通信を継続させる考えもある。モパイルIPがそれ。実際にはRAで取得したプレフィクスで作ったIPv6アドレスを用いて移動前と移動先で通信するのだが,通信相手には別のIPv6アドレスで通信し続けているように見せる技術である。プレフィクスの変化を相手側に意識させないのが特徴だ。モパイルIP技術のしくみは少し複雑なので,ここでは詳述しない。
 接続先プロバイダを乗り換えるケースでも,プラグ・アンド・プレイは効果的に働く。プレフィクスは,ネットワークの階層構造に沿って割り当てられる決まりなので,ユーザーは自身のIPv6アドレスのプレフィクスの値を変えなくてはならない。しかしプラグ・アンド・プレイがあるので,ユーザーはパソコンをネットワークにつなぎっぱなしにしているだけで,自動的に新しいプレフイクスを組み込んだIPv6アドレスを自動設定できる。ルーターに新しいプレフィクスが登録された段階で,LAN上のパソコンに新しいプレフィクスが通知されるからである。
 最後に,IPv4で多用されているDHCP方式との違いを簡単にまとめておく。実際のところ,ユーザー側の設定作業の負荷軽減に着目すると,DHCP方式もRA方式と同じ程度のプラグ・アンド・プレイ環境を提供している。その上,DNSサーバーのアドレスを通知できるといったRA方式にない機能もある。
 ただしDHCP方式は,管理者があらかじめすべてのアドレス情報を適切にDHCPサーバーに登録しておかなければならないという運用面の問題がある。ネットワークの規模が大きくなるにしたがって管理負荷は重くなり,設定ミスの危険性もつきまとう。IPv6が採用するRA方式は,ユーザーの設定負荷をなくしただけでなく,管理者の負荷も軽減した。ルーターにプレフィクスを設定するだけで済むので,ネットワークの規模が大きくなっても管理負荷は重くならない。しかも,重複アドレスを割り当て時に見つけられる。
 IPv6でも,IPv4と同じくDHCPを使ってIPv6アドレスを配布するという考え方もないわけではない。ただ今のところ,IPv6を扱えるDHCPサーバーは見あたらない。

トップページへ

IPv6入門 第二回へ  IPv6入門 第四回へ