IPv6 ことはじめ

第2回 IPv6 アドレス

IIJ技術研究所
山本和彦
iij.news (August/September 1999 Vol.19)

はじめに

よいネットワーク管理者とはなにかについて友達と以前議論した際に、 憶えている IPv4 アドレスの数が指標になるのではないかという意見が出ました。 憶えている数が多い程、優秀であるというのです。

トラブル時には DNS が索けなくなることが多く、 そういう劣悪な環境で ping や telnet を使おうと思うと、 IPv4 アドレスを直接入力する必要に迫られます。 ですから、IPv4 アドレスを憶えていれば憶えている程、 手がかりを得やすく、障害が早く解決できます。

かくいう私も、九州大学の学生時代や奈良先端科学技術大学院大学の助手時代には、 たくさんの IPv4 アドレスを記憶していました。 しかし、IIJ に転職してからIPv4 アドレスをほとんど憶えなくなってしまいました。

歳をとって記憶力が悪くなったという認めたくない事実はあえて無視すると、 やはり他の方が管理してくれる環境に甘えて、 真剣にネットワークを管理しなくなったことが原因でしょう。 最近は IPv4 アドレスがたくさん出る議論にはついていけなくなりました...

ところで、IPv6 時代が到来しても、この指標は有効なのでしょうか? おそらく答えは否です。 ご存知のように、 IPv4 アドレスは、0 から 255 までの 10 進数を4 つ「.」で区切って表現します。 ですから、IPv4 アドレスの暗記とは、大体 10 桁ぐらいの数字を憶えることでした。

平均的な人では、短期記憶が 6 個ぐらいあるのだそうです。 ですから、6 桁程度の数字なら一瞬見ただけでも憶えられます。 10 桁だと一瞬の内に暗記できる人は少いでしょうが、憶えられる範囲です。 10 桁や 11 桁の電話番号が一般に受け入れられているのも、 こういった人間の特性と無関係ではないでしょう。

しかし、IPv6 アドレスは 16 バイトもあります。 単純に 16 進数で表記すれば、32 桁にもなります。 IPv6 アドレスはできるだけ短く表現できるように、 表記方法が工夫されています。 しかし、この略記方法を使っても、 多くの IPv6 アドレスは長くなり、記憶するのが困難になりますし、 正確に入力することも難しくなります。

IPv6 の研究発表で 「このシステムではユーザがホスト名を使ってコンピュータを指示することを前提としています」などと言うと、 大抵「ユーザが IPv6 アドレスを入力することは考えていないのですか」と訊かれます。 これは実際に IPv6 を使った経験のないことがあからさまに分かってしまうトンチンカン な質問ですね。 「入力できると思うなら実際に入力してみて下さい」と答えたいところです。:-)

このように IPv6 では、 一般ユーザはホスト名でコンピュータを指定することが前提となります。 しかし、ネットワークの管理者は IPv6 アドレスを直接入力する機会がありますから、 その表記や意味への理解を疎かにしてはいけません。 それでは、IPv6 アドレスの構造と表記方法を見ていきましょう。


IPv6 アドレスの表記方法

まず、表記方法を覚えましょう。 IPv6 アドレスは、16 進数で表記し、 2 バイト(4桁)ごとに「:」で区切ります。 以下に例を示します。
    3ffe:0501:0008:0000:0260:97ff:fe40:efab
    ff02:0000:0000:0000:0000:0000:0000:0001
各ブロックの先頭の連続する 0 は省略可能です。 ただし、0000 は 0 と表現します。 そこで、以下のように省略できます。
   3ffe:501:8:0:260:97ff:fe40:efab
   ff02:0:0:0:0:0:0:1
さらに、連続する 0 のブロックは、「::」に置き換えることができます。 よって、さらに次のように略記できます。
   3ffe:501:8::260:97ff:fe40:efab
   ff02::1
これでかなり短くなりました。:-) ここで気を付けて頂きたいのは、 「::」は 1 回しか使えないことです。 複数指定すると、それぞれの長さが分からなくなるからです。 「::」だけ書くと、すべてが 0 のIPv6 アドレスになります。

IPv6 アドレスの先頭部分をプレフィックスと呼び、 長さを「/」の後に書きます。 取りうる範囲は、ビット単位なので 0 〜 128 です。 たとえば、

   3ffe:501:8::/64
は、先頭の 8 バイトである
   3ffe:0501:0008:0000
を問題にしているのです。 「/128」(つまりアドレス全体) は明示的に指定する必要はないので、 しばしば省略されます。 IPv4 アドレスの常識に沿って言えば「::/0」がデフォルト経路になりそうですが、 そうではありません。 理由は後程説明します。

IPv6 アドレスの意味

IPv6 アドレスを記述できるようになったところで、 意味を探ってみましょう。 IPv6 アドレスは、先頭 3 ビットによって大きく 8 つに分けられています。 以下に意味を示します。
    [2 進数]
    000  特殊なアドレス
    001  経路集約型アドレス
    010  未割り当て
    011  未割り当て
    100  未割り当て
    101  未割り当て
    110  未割り当て
    111  リンクローカル、サイトローカル、マルチキャスト
3 ビットは 16 進数と相性が悪く分かりにくいですね。 16 進数 1 桁は、4 ビットですから、 大きく 16 個に分割し、 IPv6 アドレスの先頭の数字で以下のように分類する方が分かりやすいかもしれません。
    [16 進数]
    0  特殊なアドレス
    1  特殊なアドレス
    2  経路集約型アドレス
    3  経路集約型アドレス
    4  未割り当て
    5  未割り当て
    6  未割り当て
    7  未割り当て
    8  未割り当て
    9  未割り当て
    a  未割り当て
    b  未割り当て
    c  未割り当て
    d  未割り当て
    e  リンクローカル、サイトローカル、マルチキャスト
    f  リンクローカル、サイトローカル、マルチキャスト

特殊なアドレス

まず、最初の領域を説明しましょう。 特殊なアドレスで重要なのは、「::」と「::1」です。 「::」は未指定アドレスと呼ばれており、 プラグ&プレイの際に利用されます。 「::1」 はとループバック・アドレスです。つまり、
    ping ::1
とすれば、そのコンピュータが反応します。

IPv4 のループバック・アドレスは、 慣習として 「127.0.0.1」が使われていました。 しかし、これはあくまで慣習であり、正式に決まっているわけではありません。 (IPv6 のようにループバック・アドレスを決め打ちしてもらえると、 実装者にとっては実装が楽になる部分があります。)


経路集約型アドレス

さて、次の領域である「経路集約型アドレス」について説明します。 経路集約型アドレスはグローバル・アドレスに分類されます。 また、CIDR と同じようにネットワーク的に近いところに、 似通ったアドレスを割り当てます。 前回 IPv6 は「やり直し」であると説明したように、 はじめから経路の集約が可能なように計画的に割り当てていくので、 この名前があります。

経路集約型アドレスの構造は以下のようになっています。 ネットワーク部である上位 8 バイトは、 先頭から 2、4、2 バイトと 3 分割されます。 それぞれ TLA、NLA、SLA と呼ばれています。

TLA

TLA とは Top Level Aggregator の略で、 文字通り最上位で経路を集約する組織に割り当てられます。 具体的には、大手のプロバイダだと考えればよいでしょう。 最初の 3 ビットは使えないので、TLA の実際の長さは 13 ビットです。 10 進数に直すと、8,192 個の TLA が存在できることになります。

これは、バックボーン・ルータにとって外部への経路の総数を 8,192 に押えられることを意味しています。 もちろん、組織や下位プロバイダといった内部への経路も必要です。 しかし、現在のバックボーン・ルータが 6 万経路を扱わなければならない状況と比べると、 かなり負荷が軽減されることがお分かりになると思います。

NLA は Next Level Aggregator の略で、具体的には中小のプロバイダになります。 ある TLA から経路集約アドレスの空間を割り当てられた NLA は、 さらにその空間の一部を他のプロバイダに孫割り当てするかもしれません。 よって NLA は、 上位から NLA1、NLA2、NLA3 のように番号付で呼ばれることもあります。

SLA は Site Level Aggregator の略で、 実際にはある組織内のサブネット番号にあたります。 SLA は 2 バイトですから、 1 組織あたり 65536 個のサブネットを取得できることが保証されています。

インターフェイス識別子は、 あるサブネット内でホストを認識するためのホスト部に当たります。 経路集約型アドレスでは、プレフィックス長(ネットマスク長)が 64 に固定されています。 これは 1 サブネットあたり、 最大 2^64 個のホストを収容できることを意味しています。 (もちろんそんなに接続すると通信は破綻しますけど。:-)

ある組織は 65536 個のサブネットを利用でき、 サブネットにはほとんど無限のコンピュータが接続可能なのですから、 昔のクラス A と同等以上の空間を取得できることになります。 また、IPv4 ではネットマスク長を決める作業が悩みの種でしたが、 経路集約型アドレスではプレフィックス長が 64 に固定ですので、 悩む必要はありません。


おわりに

足早に IPv6 アドレスについて解説しました。 紙面の関係で今回説明できなかったリンクローカル・アドレスやマルチキャスト・アドレスは、 プラグ&プレイ機能と一緒に来月説明したいと思っています。
Email: kazu@iijlab.net
URL: http://www.mew.org/~kazu/