IPv6入門 第二回 IPv6はアドレスはどう使うのだろう?

 さて,第2回目の今回は,IPv6でもっとも重要な技術要素であるIPv6アドレスについて説明する。IPv6アドレスは,IPv6の最大の特徴といえる。使えるアドレスが大幅に増えたことに加えて,パケット中継を効率よく実施するためのしくみも組み込んでいる。このようなことから,IPv6アドレスをきちんと理解しておけば,IPv6ネットのしくみも比較的簡単に理解できるようになる。
 IPv4では,アドレス空間は32ビット分だった。この空間を数で言うと,約43億個分のIPアドレスに相当する大きさだ。
 43億個は決して小さい数字ではない気がするが,現在約60億人いる世界中の人間がIPアドレスを1個ずつ使ったらもう足りなくなる。まして,一人でパソコンとモパイル端末を複数持ったり,車にコンピュータを搭載しだせば,アッという間になくなる。 では,IPv6アドレスの空間はどうなのだろうか。ビット数で言うと128ビットの空間,実数では約3.4を10の38乗倍した数になる。IPv4アドレスの大きさを1ミリ・メートルとすると,IPv6アドレスの長さは約837万光年。銀河系の大きさが約10万光年なので,そのケタ違いの大きさがわかると思う。ほぼ無限だと言っても過言ではないだろう。実感がわかないと思うが,要は天文学的な大きさといえる。
 では,IPv6アドレスを全人頚に等分に割り当てたとしたら,一人当たりどのくらいになるのだ ろう。答えは5.6穣(5600兆の100兆倍)個。全人類がいくら使っても有り余るほど空間が使える。
 これほど大量にIPアドレスがあると,世界中の人々が自分のパソコンや携帯電話からインターネットヘアクセスできるのはもちろん,世界の街中にある信号機にアドレスを割り当てて集中制御するなんてこともできる。これだけの巨大な空間があれば,なんでも可能になる。

 では、最初にIPv6アドレスの表記方法を見ていこう。

IPv6アドレスの表記法
図1 IPv6アドレスの表記法

128ビットのIPv6アドレスは,2進数の0と1が128個並んだもの。ただしそのままでは人間が覚えにくいし,表記も面倒だ。IPv4アドレスでは8ビットずつ10進数で表記したが,IPv6では10進数は使わない。4ビットずつ束ねて16進数(0〜f)で表す。つまり16進数2文字分で8ビット(1バイト)を表現するわけだ。IPv4アドレスでは,10進数をドットでつなげて32ビットとした。IPv6では16進数4文字(16ビット分)をコロン(:)でつなぐ。合計8個のコロンでつながれた16進数の文字列でIPv6アドレスを表現するのである。
 できるだけ簡潔に表記できるように,文字列中にゼロが出てきたときの省略ルールも決まっている。例えば,「0100:」は「100:」と,「0001:」は「:1:」と表記できる。「:0000:」は「:0:」または「::」と表記してもよい。
 「::」が複数連続した場合は,「::」を1個にまとめることができる。ただしこの省略はIPv6アドレス中の1カ所だけである。
 次にIPv6アドレスをどのようにユーザーヘ割り当てているかを説明しよう。IPv6アドレスは,上位64ビットがネットワークそのものの識別子として用いられ,下位64ビットはそのネットワークにおける機器の識別子として用いられる。
 ネットワークを表す上位64ビットは,いくつかのフィールドに分かれている。これはIPv4にはなかった特徴で,IPv6アドレスの“ミソ’である。フィールドごとに,階層的にアドレスを割り当てられるように設計されているのである。

IPv6アドレスの構造
図2 IPv6アドレスの構造

 階層構造の作り方はいくつかあるが,現在割り当てが始まっているIPv6アドレス空間では3段階制が採用されている。
 第一磯楷は,FP,TLA,sTLAも,RSVまでの35ビットが1セットとなる。地域IRと呼ばれる管理組織が,35ビットまでを固定的に割り当てている。つまり,IPv6アドレスの先頭35ビットを見れば,そのアドレスがどのプロバイダに割り当てたものなのかがわかるしくみになっている。
 現時点では,先頭16ビットが(FPとTLAの16ビット分)「2001」で始まるIPアドレス群(アドレス・ブロック)についてのみ割り当てが始まっている。FPからRSVまでの35ビットのうちsTLAとRSVの値がプロバイダごとに変わってくる。
 偶然ではあるが2001は,21世紀の幕開けにぴったりの数字といえる。
 さて地域IRからアドレス・ブロックを割り当てられたプロバイダは,ブロックを細切れにして各ユーザーにアドレスを割り当てていく。つまり,RSVの次のNLAのフィールドをユーザーごとに固定的に割り当てるわけだ。つまり個々のユーザーには,最初の48ビットが固定的に割り当てられることになる。
 ユーザーが自由に割り当てられるビットは,128−48=80ビット。このうち,先頭の16ビット(SLAの部分)はネットワーク識別用として使う。こうすることで,すべてのIPv6ネットワークは,上位64ビットが固有の値となり,区別できるようになる。詳しくは次回で解説するが,各機器が使う個々のIPアドレスは,上位64ビットにインタフェースIDと呼ばれる下位64ビットを組み合わせて作り出す。
 ブロックごとの割り当てはちょっと複雑なので,もう少し具体的に説明しよう。
 階層的なブロック割り当てのイメージを以下に書いてみた。

アドレスは階層的に割り当てられる
図3 アドレスは階層的に割り当てられる

 まずIPv6のアドレス・ブロック全体のうち,地域IRが管理しているのはFPが001のTLAブロックである。FPが001のTLAブロックは,全部で約8000個あるが,現在,地域IRはこのうち一つのTLAブロック(2001::/16のブロック)だけを切り出している。プロバイダに割り当てるsTLAブロックは,このTLAブロックからになる。一つのTLAブロックからは約8000個のsTLAブロックを提供できる。つまり地域IRは,TLAブロックをFPからRSVまでの数字が同じブロック(sTLAブロック)を一単位にして,各プロバイダに割り当てる。
 プロバイダに割り当てた一つのsTLAブロックからは,NLAブロックを約8000個作り出せる。プロバイダは,FPからNLAまでの数字が同じブロック(NLAブロック)を一単位にして,ユーザーから申請があったら割り当てていく。ユーザーはNLAブロックから各ネットワークにSLAブロック単位でアドレスを割り振る。NLAブロックからは,SLAブロックを約6万5000個作れる。一つのネットワークに割り当てたSLAブロックには,1800を1000兆倍したIPv6アドレスを運用できる。
 くりかえしになるが,紹介してきた割り当て方法はあくまで現時点(2001年5月)のやり方で,今後は増える可能性がある。たとえばモパイル端末の利用が広がれば,モパイル端末の特徴を考慮した割り当て方が使われるようになるだろう。
 ブロック割り当てが採用されたことで,ユーザーは必ず接続するプロバイダからアドレスを割り当ててもらう決まりだ。IPv4では,ユーザーが直接日本ネットワークインフォメーションセンターJPNIC)など地域IRにアドレスを申請する場合があったが,IPv6の世界ではこうしたケースはなくなる。
 実は,IPv6でアドレスをブロック割り当てにした最大の目的は,同じプロバイダに接続するユーザーなら必ずそのプロバイダのアドレス・ブロックを使うように統一することだった。
 なぜかというと,プロバイダごとにアドレス・ブロックを割り当てておくと,ルーターの中継負荷を軽減できると考えられているからだ。
 インターネットでは,ルーターは自分の配下につながるネットワークのアドレス情報を,ほかのルーターとの間で交換しあう。情報を受け取ったルーターは自身のルーテイング・テーブルに情報を登録し,パケットを受け取った場合に,テーブルを検索して適切なネットワークに転送している。
 つまりプロバイダのルーターには,自社につないだユーザーのアドレス・ブロックを登録してお くことになる。IPv4の世界では,ユーザーは個別に地域IRからアドレス・ブロックを割り当ててもらうことがあったため,ほぽユーザーの数だけ登録数が増えてしまった。登録数が増えれば増えるほど,テーブルの大きさが増えてルーターのメモリー容量が圧迫され,検索の処理も重くなりCPUの負担になっていた。
 ところがアドレスをブロック割り当てにしておくと,あるプロバイダにつながるユーザーのアドレスは,35ビット目まではすべて同じになる。つまりプロバイダのルーターは,35ビット目までを見て,どのプロバイダのユーザーか判別できるようになる。ルーテイング・テーブルに登録する 情報は,ユーザーの数ではなくプロバイダの数になる。

階層的なブロック割り当てはルータの負荷を減らすメリットがある
図4 階層的なブロック割り当てはルータの負荷を減らすメリットがある

IPv4では,ルーテイング・テーブルに約10万件の情報を登録しているが,IPv6なら最大でも8192経路にまで抑えられる。これだけ少ないと,ルーターに搭載すべきメモリー容量は小さくて済むし,CPUへの負担も軽くできる。
 このように,複数ユーザーの情報を一つに束ねることを,アドレス・ブロックの集約(aggre-gate)と呼ぶ。なお,個々のユーザーヘの転送は,パケットを届けた先のプロバイダに任せてしまえばよい。
 最後に,IPv6で新たに登場した新しいアドレスの一つを紹介しよう。IPv6では,通常インターネットにアクセスするために用いるアドレス以外にも,さまぎまなタイプのアドレスをパソコンに割り当てて併用できるように工夫されている。具体的に見てみよう。IPv6化したWindows2000をIPv6ネットに接続し,パソコンのインタフェース状態を表示させてみる。IPv4と違って,いくつものIPアドレスが表示される。
C:\ipv6 if
Interface 8 (site 1): 6-over-4 Virtual Interface
  uses Neighbor Discovery
  link-level address: 162.4.100.26
    preferred address fe80::a204:641a, infinite/infinite
    multicast address ff02::1, 1 refs, not reportable
    multicast address ff02::1:ff04:641a, 1 refs, last reporter
  link MTU 1280 (true link MTU 65515)
  current hop limit 128
  reachable time 34500ms (base 30000ms)
  retransmission interval 1000ms
  DAD transmits 1
Interface 7 (site 1): ローカル エリア接続
  uses Neighbor Discovery
  link-level address: 00-d0-b7-21-c0-a0
    preferred address 3ffe:302:11:2:2d0:b7ff:fe21:c0a0, infinite/604797s (addrconf)    グローバルアドレス
    preferred address fe80::2d0:b7ff:fe21:c0a0, infinite/infinite                      リンクローカルアドレス
    multicast address ff02::1, 1 refs, not reportable               リンクローカル・マルチキャスト・アドレス
    multicast address ff02::1:ff21:c0a0, 2 refs, last reporter      リンクローカル・マルチキャスト・アドレス
  link MTU 1500 (true link MTU 1500)
  current hop limit 64
  reachable time 28500ms (base 30000ms)
  retransmission interval 1000ms
  DAD transmits 1
Interface 2 (site 0): tunnel Pseudo-Interface
  dose not use Neighbor Discovery
  link-level address: 0.0.0.0
    preferred address ::162.4.100.26, infinite/infinite
  link MTU 1280 (true link MTU 65515)
  current hop limit 128
  reachable time 0ms (base 0ms)
  retransmission interval 0ms
  DAD transmits 0
Interface 1 (site 0): Loopback Pseudo-Interface
  dose not use Neighbor Discovery
  link-level address:
    preferred address ::1, infinite/infinite
  link MTU 1500 (true link MTU 1500)
  current hop limit 1
  reachable time 0ms (base 0ms)
  retransmission interval 0ms
  DAD transmits 0
               :
               :
               :
               :
 まず「3ffe:」で始まるアドレスが見える。これはグローバル・アドレス。「3ffe:」は実験ネットワークで使っていたアドレスなので,今プロバイダからアドレスを割り当ててもらえば,「3ffe:」ではなく「2001:」で始まるアドレスになる。
 次にfe80:で始まるアドレスがある。これがIPv6で登場した新しいアドレス「リンクローカル・アドレス」だ。リンクローカル・アドレスとは,ルーターを超えた通信では使われない持定用途向けのアドレスのこと。同じリンク上のコンピュータ同士が通信するためだけに使われる。

IPv4にはなかったリンクローカルアドレスという考え方 図5 IPv4にはなかったリンクローカルアドレスという考え方

リンクローカル・アドレスの特徴は,IPv6機器が自動的に生成するアドレスであること。どんな状態でも,IPv6機器を起動すればインタフェースにリンクローカル・アドレスが割り当てられる。グローバル・アドレスが割り当てられている場合も,リンクローカル・アドレスを必ず併用して使うことになっている。
 このリンクローカル・アドレスは,特別な設定を施さなくてもIPv6機器が自らネットワーク設定を施すプラグ&プレイのために欠くことのできないアドレスとなる。
 また,ルーター同士がアドレス情報を交換する場合にもリンクローカル・アドレスが使われる。アドレス情報を交換するルーター同士は必ず同一リンク内にあるからである。
 なおIPv4と同じく,IPv6でもマルチキャストの考え方が導入されている。マルチキャストは,一つのパケットを何台ものパソコンに同時に受信させる技術である。図6でff02:で始まるアドレスがあるが,これがリンクローカル・マルチキャスト・アドレスと呼ばれるマルチキャスト・アドレスである。
 次回はプラグ&プレイを取り上げる。

トップページへ

IPv6入門 第一回へ  IPv6入門 第三回へ