IPv6 アドレッシング
■ IPv6アドレス。 IPv4では32ビットのアドレス空間であったが、 IPv6では、IPアドレスを128ビットに拡張することにした。 この結果、下記のような天文学的なアドレス数を確保した。 この値は、世界中で1人あたり10の28乗個に相当する。 IPv4の全アドレス空間(43億個)を全世界の1人1人に配っても それでも余るくらいの膨大な数である。 IPv4アドレスの数 4,294,967,296個 IPv6アドレスの数 340,282,366,920,938,463,463,374,607,431,768,211,456個 IPv6では、この128ビットのアドレスを、 16ビット毎に8グループに分割した上で、 各グループを16進数(0000〜FFFF)に直し、 それぞれをコロン(:)で結んで表記する。 例) 5400:02B0:0000:00DC:0000:0000:0000:0001 ただしIPv6アドレスの正式表記は、大変長くなるので、 以下のルールに従って略記することができる。 (1) "02B0"や"0ODC"のように、 各グループの頭に0が付く場合には、その0を省略することができる。 ただし、"0000"は"0"と表記する。 例) 5400:2B0:0:DC:0:0:0:0:1 (2) "0000"のグループが連続する場合は、 1回だけ "::(コロンコロン)"で略記することができる。 例) 5400:2B0:0:DC::1 このIPv6アドレスは、 構造上、前半64ビットと後半64ビットに分けられる。 前半の64ビットは、ネットワークID(プレフィックス)と呼び、 後半の64ビットはインターフェースIDと呼ぶ。 ■ ネットワークID。 IPv6アドレスの前半64ビット。 ネットワークを識別するために使用する。 IPv4のネットワークアドレスに相当する。 プレフィックスとも呼ぶ。 IPv6は、アドレス空間があまりにも膨大なため、 経路情報を集約する必要から、ネットワーク全体を3階層に分けている。 すなわち、最上位階層をTLA、次階層をNLA、次々階層をSLAといい、 それぞれをTLA-ID、NLA-ID、SLA-IDで識別する。 こうしてIPv6では、 上位層において下位ネットワークのの経路情報を集約できるようにしている。 このため世界規模のルーティングを行う基幹ルータは、 最上位ネットワークの経路情報のみを扱えばよいことになった。 なおこの階層構造は、各地域のNICや指定事業者が、 自らが管理しているビットの範囲で、 任意に増やすことができるようになっている。 (1) FP。Format Prefix。 IPv6アドレスの最初の3ビット。 そのIPv6アドレスの種類を表している。 ふつうはグローバルユニキャストアドレスなので、001になっている。 (2) TLA-ID。Top Level Aggrigator。 第1次プロバイダを識別するためのID。 第1次プロバイダに割り当てられるネットワークアドレス。 アドレス空間の大きさは/16。 地域インターネットレジストリ(APNIC、ARIN、RIPE)から割り当てられる。 ただし現在のところは、 1998年にRFC2450として定められた暫定的な割り振りガイドラインに従って、 1個のTLA IDの下に暫定的に13ビットのsub-TLA IDを設け、 これを各地域の最上位通信事業者に割り振るというやり方をしている。 現在は/35のアドレス空間が割り当てられている。 ここでs-TLAとは、Sub TLAの略であり、小さなTLAを意味する。 s-TLAは必ず2001::で始まる。 商用にも使ってよい通常の IPv6 アドレス空間です sTLA を割り当てるのは 地域インターネットレジストリ(APNIC、ARIN、RIPE)です。 割り当て団体 | アドレス範囲 | 該当地域 -------------+------------------+----------------------- APNIC | 2001:0200::/23 | アジア・環太平洋地域 -------------+------------------+----------------------- ARIN | 2001:0400::/23 | アメリカ大陸 -------------+------------------+----------------------- RIPE NCC | 2001:0600::/23 | ヨーロッパ地区 -------------+------------------+----------------------- [ 参考 ] p-TLA。Pseudo TLA。擬似TLA。 実験目的で配布される第1次アドレス群。 実験ネットワーク 6bone に参加するための実験用のIPv6 アドレス 空間 p-TLAは必ず3ffe::で始まる。 (3) NLA-ID Next Level Aggrigator(次階層集約者)。 第2次プロバイダなどを識別するためのID(ネットワークアドレス)で、 必ず上位接続する第1次プロバイダから割り当てられる。 TLAから/24(/27??)〜/48などの大きさで割り当てを受ける。 TLA の下 4 バイトを NLA(Next Level Aggregator)と呼びます。 NLA はいくら でも階層構造をとることができ、上から NLA1、NLA2、... と呼んでいきます。 NLA1 は子 ISP、NLA2 は孫 ISP となり、 最終的に /48 を持つ NLA が IPv6 サイトになります。 24ビット幅、ISPに接続する各組織に割当 IPv6アドレスの割当て方針。 ISP(=2次プロバイダ)には、バックボーンプロバイダの判断により、 「/40」前後のアドレス空間を割当てる。 「/40」は、エンドユーザ256人分に相当する。 SUB-TLAを用いる間は、暫定的にNLAのビット数は13ビットになる。 (4) SLA-ID Site Level Aggrigator(サイト階層集約者)。 各組織や第3次以降プロバイダなどに割り当てられるID(ネットワークアドレス)。 第2次もしくは第1次プロバイダから/48〜/64の大きさで割り当てを受ける。 64ビット幅、その組織内でのサブネット識別に割当 実質的にはサイト内のサブネット番 号に当たります。 IPv6アドレスの割当て方針。 エンドユーザ(企業等)には、「/48」のアドレス空間を割当てる。 「/48」あれば、サブネットを6万5千個作れる。 ■ インターフェースID IPv6アドレスの後半64ビット。 ホストを識別するために使用する。 IPv4のホストアドレスに相当する。 各ノードを識別する。各端末各NICに。各組織が各ホストに割当可能な範囲。 例えばMACアドレス(48bit)を インターフェイスIDの一部にそのまま埋め込んでアドレスを構成することができる。 これにより、各ノードごとのIPアドレスの割り当て方法が簡略化され、 自動的にIPアドレスの一意性が保証される ■ IPv6のアドレススコープ。 スコープの種類 スコープは、インタフェースに割り当てられたIPアドレスの有効範囲を表す。 ユニキャストアドレスは、適用領域によってさらに3種類のアドレスに分類される。 適用範囲のイメージ的には グローバルアドレス>サイトローカルアドレス>リンクローカルアドレス IPv6では、単一のインターフェースに複数のIPアドレスを持つことができる 例1) 1つのIFがグローバルアドレスを3つ持つ 例2) 1つのIFがグローバルアドレスとサイトローカルアドレスを1つづつ持つ グローバルアドレスが「じゃぶじゃぶ」にあるのがIPv6だから サイトローカルアドレスの利用は相当の理由がない限り、疑問 (1) グローバルアドレス。Global Address。 IPv4のグローバルアドレスと同じ意味。 世界中で一意性が保証されるべきアドレス。 インターネットで利用可能。 インターネット上で使える。 (IPv4のグローバルIPアドレスと同じと考えてよい。) IPv4のグローバルアドレスと同義 全世界で一意に定まるアドレス プレフィックスは基本的に64ビットとなっている (2) サイトローカルアドレス。Site Local Address。 IPv4におけるプライベートアドレスに相当。 組織内などの閉じたネットワークで利用できる。 ルータ越えが可能なアドレス。 サイトローカルアドレスはfec0::で始まる。 企業ネットワークに閉じれば使える。 (IPv4用語で言えば、プライベートIPアドレスのようなもの。) 「fec0::〜」 IPv4のプライベートアドレスに相当する 送信元がサイトローカルアドレスのパケットは、網外には転送されない サイトローカルアドレス用のアドレス空間がリザーブされている 「1111:1110:11〜」で始まるアドレスは全てサイトローカルアドレス (3) リンクローカルアドレス。Link Local Address。 ルータを経由しないで通信できるネットワークの範囲で使用する。 ルータからネットワークID(プレフィックス)の配布を受けるときなどに使う。 fe80::で始まるアドレスは、リンクローカルユニキャストアドレス。 同一リンク内で使えるアドレス。 (IPv4用語で言えば、同一サブネット内で使えるアドレス。) 「fe80::〜」 ノードが直接接続されているリンク内のみで使用可能 1セグメントのみで通用する リンクローカルアドレス 「1111 1110 10・・・」から始まるもの → 例 「fe80::1」」 ■ IPv6アドレスの種類。 IPv6では、IPv6アドレスを3つのタイプに分けている。 利用する目的に応じて3つのアドレスを使い分ける。 1つの物理インターフェースに複数のアドレスを割り当てることができる。 1台のIPv6端末にはさまざまな目的で多数のIPアドレスが割り当てられる RFC2373で定義されている (1) ユニキャストアドレス。Unicast Address。 1対1通信に使用する。IPv4の概念と同じ。 1対1通信を行うためのアドレス。 1対1(エンドツーエンド)通信に利用する 通常はこのアドレスが使用される (2) エニーキャストアドレス。Anycast Address。 あるネットワークに複数のサーバまたはルータが存在しているときに、 その中から最も近いものを選んで、アクセスを可能とするアドレス。 サーバの負荷分散などに使用できると考えられている。 エニキャストアドレス宛に送ると、網内の最適な1台のみに配送される。 (例) DNSサーバが複数に分散している場合に 全DNSに1つのエニキャストアドレスを振っておく。 端末が、名前解決要求ををエニキャスト宛てに送れば、 最適なサーバが応答する。 あるグループに属するノードのうち、どれか1つに届けられると 他のノードには配送しない 最寄のDNSサーバを検索するなどの利用法が提案されている IPv6のプラグアンドプレイでは、ルータはホストに対して プレフィックス(ネットワークアドレス)は教えるが DNSサーバ情報などは教えない仕組みになっている このためDNS情報はDHCPv6で別途聞く必要がある なお、エニキャストアドレスは 今のところルータしか使用できないことになっており ホストには実装されない見込み (3) マルチキャストアドレス。Muliticast Address。 1対多の通信に使用する。 マルチキャストアドレスは、ユニキャストアドレスとは別に 各コンピュータに設定しておく。 あるマルチキャストアドレスあてにIPパケットを送信すると、 そのマルチキャストアドレスを設定したコンピュータだけが受信する。 マルチキャストアドレスは必ずffxx::で始まる。 IPv4のブロードキャストと同じ機能は、 ネットワーク内のすべてのホストに同じマルチキャストアドレスを設定すれば実現できるため、 IPv6では、ブロードキャストアドレスの概念はない。 1つのマルチキャストアドレスを、 複数のインターフェースに割当てておく。 マルチキャストアドレス宛てパケットは、 全てのインターフェースに届けられる。 ブロードキャストの廃止 。 IPv6ではブロードキャストを廃止し、すべてマルチキャストで代用する。 IPv4ではネットワークアドレスが決まるとブロードキャストアドレスが決まるのと同じく、 IPv6ではノートをネットワークに接続すると、 自動的に幾つかのマルチキャストグループへ属することになる。 グループ全体を表すアドレス マルチキャストアドレス宛てにパケットを投げると セグメント内の全ノードにパケットが配送される IPv4のブロードキャストアドレスに相当する ストリーミング配信などに利用できる マルチキャストアドレス 「1111 1111・・・」から始まるもの → 例 「ff02::1」 ■ 特殊なアドレス。 IPv6では、 最初の1ビットから8ビット目までが“00000000”であれば、 特別な用途を表すアドレスとして利用するように規定している。 (1) 未指定アドレス 未だアドレスが付けられていないことを示すもの 「0000:0000:0000:0000:0000:0000:0000:0000」=「::」 (2) ループバックアドレス ノードがパケットを自分自身に送る時に使用するもの IPv4の「127.0.0.1」に相当する 「0000:0000:0000:0000:0000:0000:0000:0001」=「::1」 (3) IPv4互換アドレス。 ::XXXX:XXXX XXXX:XXXX=IPv4アドレスを16進数表記したもの 2つのIPv6機器が、IPv4で経路制御されたネットワークを挟んで 通信するためのアドレス。 =96ビット「0000・・・・・」+IPv4アドレス IPv4網に接続されたIPv6ノード同士が使用するもの 尾部32ビットは、IPv4表記(10進数)のままで良い 「::192.168.1.1」 (4) IPv4射影アドレス IPv6機器が、IPv4機器(DNSなど)と通信する場合に使用するアドレス。 =80ビット「0000・・・・・」+16ビット「ffff」+IPv4アドレス IPv6ノードがIPv4ノードと通信する際に利用するもの 尾部32ビットは、IPv4表記(10進数)のままで良い 「::ffff:192.168.1.1」 (5) 要請マルチキャストアドレス IPv6ノードは自身のインターフェースIDを元に、 必ず要請マルチキャストアドレスを生成し、 当該アドレス宛てのパケットが来れば、これを受信する。 =「ff02::1:ff」+インターフェースID 要請マルチキャストアドレスは、同一リンク内でのみ有効である。 (6) 集約可能グローバルユニキャストアドレス 「001・・・」から始まるもの → 例 「2000::1」 (7) 全ノードリンクローカルマルチキャストアドレス 「ff02::1」 同一イーサネット網上の全ホストに配信するアドレス 「ping6(ピングロク)」を全ノードに打つ場合などに使用する (8) 全ルータリンクローカルマルチキャストアドレス 「ff02::2」 同一イーサネット網上に存在するルータを検索する時に使う ■ アドレスプレフィックスのまとめ IPv6の先頭ビットは、アドレスのタイプを意味しています。 次に現在すでに決定しているアドレスプレフィックスを挙げます。 +-------------------------------------+---------------+--------------+ | 割り当て | 先頭ビット | 16進数表記 | +-------------------------------------+---------------+--------------+ | 予約済み | 0000 0000 | 0000::/8 | +-------------------------------------+---------------+--------------+ | グローバルユニキャストアドレス | 001 | 0200::/3 | +-------------------------------------+---------------+--------------+ | リンクローカルユニキャストアドレス | 1111 1110 10 | fe80::/10 | +-------------------------------------+---------------+--------------+ | サイトローカルユニキャストアドレス | 1111 1110 11 | fec0::/10 | +-------------------------------------+---------------+--------------+ | マルチキャストアドレス | 1111 1111 | ff00::/8 | +-------------------------------------+---------------+--------------+ ■ IPv6アドレスの自動設定。 IPv6では、 IPv4のように各ホストがIPアドレスを設定する必要が無く、 プラグアンドプレイで自動設定できる。 IPv6では、 IPアドレスの自動設定機能(プラグアンドプレイ)が 標準装備されている プラグ&プレイ機能。 IPアドレスが自動設定される。ネットワークの設定を簡単にする。 IPv6ではコンピュータにIPアドレスをユーザーが設定する必要はない。 コンピュータが起動する時に, 自動的に自身が使うIPアドレスを生成して設定するしくみがあるからだ。 IPv4アドレスの割当ては、DHCP割当てか固定割当てだが、 IPv6アドレスの割当ては、RA(ルータ・アドバタイズ)による方法と DHCPv6による方法、固定的に割当てる方法の3種類ある。 IPv6端末でのIPアドレスの生成は、自動設定機能を利用する方法と DHCPv6(ディーエッチシーピーブイシックス)を利用する方法がある DHCPv6の仕様はほぼ固まっており、近くRFC化される予定である IPv6アドレスの自動設定には、 ステートフルアドレス自動設定と、 ステートレスアドレス自動設定の2種類がある。 ■ ステートフルアドレス自動設定。 ネットワークID(プレフィックス)については、 IPv6対応のルータから配布してもらう。 インターフェースIDについては、 48ビットのMACアドレスに16ビットの固定ビットを挿入して、 64ビットのアドレスを自動生成する。 IPアドレスの自動設定機能(プラグアンドプレイ)では 下記の手順で自身のIPアドレスを生成する (1) ネットワークアドレスは、ルータに聞いて教えてもらう (2) ホストアドレスは、自身のMACアドレスを使用する ルータにプレフィックスを要求するとともに、 自身のMACアドレスから生成したインターフェースIDを生成、 2つを合わせてIPv6アドレスを生成する方法。 IPv6ホストは、自動でリンクローカルアドレスを設定した後 ルータとメッセージ交換を行ってグローバルアドレスを設定する この後、デフォルトルータを決めてパケットの転送を開始する ノードをネットワークに接続するだけで、アドレス設定ができる。 自身の持つ情報(インターフェースID)からIPアドレスを生成するので、 アドレスを予めプールしておく必要がない。 (1) リンクローカルアドレスの自動設定 ホストは自分自身だけでリンクローカルアドレスを生成する この際、上位64ビットには定められた値「fe80::」を 下位64ビットは「インターフェース識別子」を使用する インターフェース識別子は、下記の方法でMACアドレスから生成する a) MACアドレス48ビットを24ビットづつに分ける b) その間に「ff::fe」=「1111 1111 1111 1110」を挿入する c) 前から7ビット目(u bit と呼ぶ)を反転する IPv6ノードは、(電源を投入すると)最初に 「fe80::」と自身のインターフェースIDを組合せて リンクローカルアドレスを生成する。 IPv6アドレスの下位64bitは、ホスト番号を表すホスト部である。 ほとんどの場合、ホスト部のアドレスは ノードのMacアドレスを用いて自動的に割り当てられる。 この際、Macアドレスの上位24bit(ベンダーコード部)と下位24bit(シリアルNo.)を、 16進数「fffe」でつなぎ合わせて生成されるものを「EUI-64」と呼ぶ。 インターフェースIDは、EUI-64規定に基づき、 自身のMACアドレスを元に生成する。 具体的には、MACアドレスを前半と後半に2分割し、 その間に「fffe」を挿入して生成する。 とくにホストアドレス(後半64bit)については、 インターフェースのMACアドレスから生成することとになっており、 なにも管理しなくても、世界中で一意性が保たれる。 リンクローカルアドレスを生成したノードは、 近隣要請メッセージを発信し、 同一リンク内に重複するアドレスがないか確認する。 他のホストからの返答(近隣通知メッセージ)がなければ、 重複は無いと見なし、当該アドレスを使用する。 (2) グローバルアドレスの自動設定 ホストはルータとメッセージ交換を行ってグローバルアドレスを設定する 具体的には、下記のような手順となる a) ホストが全ルータリンクローカルマルチキャストを使って ルータに「RS(アールエス、Router Solicitation)」要求を出す b) ルータが「RA(アールエー、Router Advertisement)」広告で ホストに「プレフィックス」情報を返す c) ホストは上位64ビットにこの値を 下位64ビットにはリンクローカルアドレスと同値を使用する (3) デフォルトルータの自動設定 ホストはRAを受けたルータをデフォルトルータに設定する ただし、1つのイーサネット網上に複数のルータがあり 各々がRAを返した場合、現行仕様では優先順位を付けられない このため優先度を含めて広告できる仕様が検討されている (4) パケットの転送動作 ホストはルータのMACアドレスを解決し、パケットの送信を開始する 結局、Macアドレスが02:48:ab:cd:12:34のモノを 3ffe:200::/64のネットワークへ接続すると.... 3ffe:200::248:abff:fecd:1234/64 というアドレスが割り当てられる。 ただしこの方法では、IPアドレスにMACアドレスを含むことになるために プライバシー上の問題が発生することが指摘されている (1) どのメーカーのNICを使っているか判別できる (2) どこから接続していても、接続者を特定できる 解決策として「プライバシーエクステンション」が提案されている WindowsXPなどでは、デフォルトで「プライバシーエクステンション」を 使うようになっている ■ ステートレスアドレス自動設定 あらかじめIPv6アドレスをプールしておき、 その中から端末に割り当てる方式。IPv4のDHCPに相当するもの。 IPv4と同様、DHCPでアドレスを自動設定するもの。 アドレスを予めプールしておく必要がある。 ■ ルータ自身へのプレフィックスの割当 ルータへ自身のプレフィックスの割当ては、PD(プレフィックス・デリ ゲーション)という方法を使う。PDにより、プレフィックスの自動割当 てが可能である。 IPv6アドレスの割当ては、このように、RAとPDの組合せで実現さ れる。 [ つづきはこちら ] 2004/03/24 pm