トラブル時には 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 アドレスの構造と表記方法を見ていきましょう。
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」がデフォルト経路になりそうですが、 そうではありません。 理由は後程説明します。
[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 リンクローカル、サイトローカル、マルチキャスト
ping ::1とすれば、そのコンピュータが反応します。
IPv4 のループバック・アドレスは、 慣習として 「127.0.0.1」が使われていました。 しかし、これはあくまで慣習であり、正式に決まっているわけではありません。 (IPv6 のようにループバック・アドレスを決め打ちしてもらえると、 実装者にとっては実装が楽になる部分があります。)
経路集約型アドレスの構造は以下のようになっています。 ネットワーク部である上位 8 バイトは、 先頭から 2、4、2 バイトと 3 分割されます。 それぞれ TLA、NLA、SLA と呼ばれています。
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 に固定ですので、 悩む必要はありません。