IPv6アドレス
基本的な知識
IPv6アドレスとは、IPアドレスを128ビットに拡張したものです。
32ビットのIPv4アドレスは、インターネット利用者の増加やネットワークの大規模化によって、枯渇状態にあります。
そこで導入されたのが、IPv6アドレスです。
IPv6アドレスの特徴としては、以下のことが挙げられます。
・128ビットのため、膨大な数のIPアドレスを割り当て可能
・同一ホストに複数のIPv6アドレスを設定可能(同一ホストに複数の役割を持たせることができる)
・ヘッダを拡張できる(拡張ヘッダにより、オプション機能を使える)
・IPv4との連携が可能
IPv6アドレスの表記ルールは、以下のルールになります。
・128ビットのアドレスを、8ブロックに分割する(各16ビット)
・ブロックの区切りは「:」で示す
・各ブロックの値を「0000」〜「ffff」の4桁で示す(16進数表記)
以下は、IPv6アドレス「12b3:2ac1:0015:0000:123a:0000:0000:32df」を表しています。
12b3 | 2ac1 | 0015 | 0000 | 123a | 0000 | 0000 | 32df |
また、表記における省略ルールとして、以下の3つがあります。
・各ブロックにおける先頭の「0」は省略(「0」が続く場合も)
・「0000」のブロックが2つ以上連続する場合、「::」と表記する
・「::」の部分が2つ以上ある場合は、「0000」の連続数が多い方を「::」で表記し、少ない方はそのまま表記する
この省略ルールで上記のIPv6アドレスを表記すると、「12b3:2ac1:15:0:123a::32df」となります。
3ブロック目:先頭の「0」を省略
4ブロック目:「0000」を「0」に省略
6、7ブロック目:連続する「0000」を「::」に省略
また、ネットワークアドレスについては、IPv4のCIDRと同じ表記になります。
「IPv6アドレス/プレフィックス長(ネットワーク部の長さ)」です。
IPv6アドレス「12b3:2ac1:15:0:123a::32df」で、ネットワーク部分が上位64ビットの場合、以下のような表記になります。
「12b3:2ac1:15:0:123a::32df/64」
ネットワークアドレスは、「12b3:2ac1:15:0/64」となります。
アドレスの種類
IPv6アドレスには、大きく3種類に分類できます。
①ユニキャストアドレス
1対1の通信に使われるアドレスで、プライベートIPアドレスとグローバルIPアドレスがあります。
また、プライベートIPアドレスは、ユニークローカルアドレスとリンクローカルアドレスの2種類に分類されます。
【ユニークローカルアドレス】
・「fc00::/7」のアドレス(上位7ビットが「1111110」のアドレス)
・IPv4のプライベートIPアドレスと同じ役割を持ち、インターネット上以外のネットワークにおける通信に使われる(組織のネットワーク内での通信など)
【リンクローカルアドレス】
・「fe80::/10」のアドレス(上位10ビットが「11111010」のアドレス)
・ルータを超えない範囲内のホストに対する通信に使われる
【グローバルIPアドレス】
・「2000::/3」のアドレス(上位3ビットが「001」のアドレス)
・IPv4のグローバルアドレスと同じ役割を持ち、インターネット上での通信に使われる
②マルチキャストアドレス
1対多の通信に使われるアドレスで、同一のマルチキャストアドレスを持つ複数ホストに対しての一斉送信のためのアドレスです。
「ff00::/8」のアドレスになります。
③エニーキャストアドレス
1対1の通信に使われるアドレスで、同じエニーキャストアドレスを持つ複数のホストのうち、特定のホストに対して送信するためのアドレスです。
これは、ユニキャストアドレスを応用的に使う場合のアドレスです。
複数のホストに同一のアドレスを付与することで、負荷分散が実現されます。
④その他
その他の種類として、以下の3つがあります。
・未指定アドレス(「::/128」のアドレス)
ホストにアドレスが割り当てられるまでの間、送信元アドレスとして使われるアドレス
・ループバックアドレス(「::1/128」のアドレス)
ループバック用のアドレス(自分自身への通信に使われるアドレス)
・IPv4射影アドレス(「::ffff:0:0/96」のアドレス)
IPv6サーバがIPv4ネットワーク上で運用される場合に、IPv6サーバ内でのみ使われるアドレス
上位96ビットがネットワークアドレス、下位32ビットにIPv4アドレスが設定される
IPv6パケットの構成
IPv6パケットは、IPv6ヘッダ、拡張ヘッダ、ペイロード(データ部)で構成されます。
構成は、以下のようになっています。
IPv6ヘッダ(40バイト) | 拡張ヘッダ | ペイロード(データ部) |
IPv6ヘッダは、40バイトで固定であり、以下の情報を含みます。
・バージョン(4ビット)
IPのバージョンであり、IPv6の場合は「6」が設定される
・トラフィッククラス(8ビット)
パケットの優先度や通信品質が設定される
・フローラベル(20ビット)
通信経路の品質や経路の優先度の情報が設定される
・ペイロード長
拡張ヘッダとペイロード長の合計の長さが設定される
・次ヘッダ
拡張ヘッダの種別や、上位プロトコルの種別が設定される
・最大ホップ数
パケットの生存期間が設定される(IPv4のTTLと同じフィールド)
・送信元アドレス(128ビット)
送信元IPv6アドレスが設定される(32ビット×4行で構成される)
・宛先アドレス(128ビット)
宛先IPv6アドレスが設定される(32ビット×4行で構成される)
IPv6ヘッダの構成は、以下の図のようになります。
拡張ヘッダ部(可変長)には、複数の拡張ヘッダを設定可能です。
拡張ヘッダを設定することで、様々なオプション機能を使用できます。
拡張ヘッダには、格納される順番がありますので、格納順に紹介していきます。
①ホップバイホップオプションヘッダ
中継するルータが処理する内容が設定される
②終点オプションヘッダ
宛先のノードが処理する内容が設定される(宛先に到達したときに処理される)
③ルーティングヘッダ
IPv6パケットが経由するノードのアドレスのリストが格納されている
④フラグメントヘッダ
IPv6パケットが分割(フラグメント)された際に使われるヘッダ
分割されたIPv6パケットを受信側で再構築するための情報が格納されている
⑤認証ヘッダ(AH)
認証の情報が格納されている
⑥暗号化ペイロード(ESP)ヘッダ
暗号化と認証の情報が格納されている
⑤⑥は、セキュリティ関連技術のIPsecにおける情報であり、IPv6では拡張ヘッダにてAHやESPの機能に対応できるように設計されています。
IPv4とIPv6の連携技術
IPv4とIPv6での連携ができないと、IPv4で構築されたネットワークとIPv6で構築されたネットワークでの通信が不可能になり、大きな問題になります。
そこで、以下の3つの技術を用いることで、IPv4とIPv6の連携を実現します。
デュアルスタック
デュアルスタックとは、ネットワーク上のすべての機器(ホスト)をIPv4/IPv6の両方に対応した機器で構成し、IPv4/IPv6を共存させることです。
この方法のメリットは、特別な設定や必要なく、IPv6に完全移行した場合でもネットワークをそのまま利用できることです。
デメリットとしては、IPv4/IPv6の両方に対応した機器でネットワークを構成する必要があるため、機器費用(コスト)が高くなります。
トンネリング
トンネリングとは、通信したいIPパケットに、新たな送信元アドレスと宛先アドレスを追加することで、通信を実現する方法です。
カプセル化と言われる技術です。
この方法のメリットとしては、IPv4とIPv6のネットワークの境界となるルータで、IPパケットをカプセル化するだけで良いので、既存の機器やネットワークが利用できる点です。
デメリットとしては、カプセル化(トンネリング)によってオーバーヘッドが発生し、通信回線の亜拍やトラフィック性能の低下を引き起こす可能性があることです。
要するに、通信したいIPパケットに情報が付加されるので、通信量が多くなってしまうということです。
トンネリングのイメージ図は、以下です。
トランスレーション
トランスレーションとは、IPv4とIPv6のネットワークの境界に「トランスレータ」を設置し、パケットを変換することです。
この方法のメリットとしては、トランスレータを置くだけで良い点です。
デメリットとしては、変換が必要なIPパケットが流れてきたらトランスレータがすべて処理する必要があるため、大きな負荷がかかるということです。
トランスレータでの処理がボトルネックになり、トラフィック性能が低下する可能性があります。
トランスレーションのイメージ図は、以下です。
コメント