2. IPv6 Addressing (IPv6アドレッシング)
2. IPv6 Addressing (IPv6アドレッシング)
IPv6アドレスは、インターフェースとインターフェースセットの128ビット識別子です (「インターフェース」の定義は [IPV6] のセクション2を参照)。3種類のアドレスがあります:
Unicast (ユニキャスト):
単一のインターフェースの識別子。ユニキャストアドレスに送信されたパケットは、そのアドレスで識別されるインターフェースに配信されます。
Anycast (エニーキャスト):
インターフェースのセットの識別子 (通常は異なるノードに属する)。エニーキャストアドレスに送信されたパケットは、ルーティングプロトコルの距離測定に従って、そのアドレスを持つインターフェースの1つ (「最も近い」もの) に配信されます。
Multicast (マルチキャスト):
インターフェースのセットの識別子 (通常は異なるノードに属する)。マルチキャストアドレスに送信されたパケットは、そのアドレスで識別されるすべてのインターフェースに配信されます。
IPv6にはブロードキャストアドレス (Broadcast Addresses) はなく、その機能はマルチキャストアドレスに置き換えられています。
このドキュメントでは、アドレス内のフィールドに特定の名前が付けられています。たとえば「subnet」です。この名前が識別子を意味する用語「ID」と一緒に使用される場合 (例: 「subnet ID」)、それは名前付きフィールドの内容を指します。プレフィックスを意味する用語「prefix」と一緒に使用される場合 (例: 「subnet prefix」)、それは左側からこのフィールドを含むすべてのアドレス部分を指します。
IPv6では、特に除外されない限り、すべてゼロとすべて1は任意のフィールドの正当な値です。具体的には、プレフィックスにゼロ値のフィールドが含まれているか、ゼロ値のフィールドで終わる場合があります。
2.1. Addressing Model (アドレッシングモデル)
すべてのタイプのIPv6アドレスは、ノードではなくインターフェースに割り当てられます。IPv6ユニキャストアドレスは単一のインターフェースを指します。各インターフェースは単一のノードに属しているため、そのノードのインターフェースのユニキャストアドレスのいずれかをノードの識別子として使用できます。
すべてのインターフェースには、少なくとも1つのリンクローカルユニキャストアドレス (Link-Local Unicast Address) が必要です (追加の必須アドレスについては、セクション2.8を参照してください)。単一のインターフェースには、任意のタイプ (ユニキャスト、エニーキャスト、マルチキャスト) または範囲の複数のIPv6アドレスを持つこともできます。非隣接ノードとの間で送受信されるIPv6パケットの送信元または宛先として使用されないインターフェースには、リンク範囲 (Link-Scope) を超える範囲のユニキャストアドレスは必要ありません。これはポイントツーポイントインターフェースの場合に便利です。このアドレッシングモデルには1つの例外があります:
実装が複数の物理インターフェースをインターネット層に提示するときに1つのインターフェースとして扱う場合、ユニキャストアドレスまたはユニキャストアドレスのセットを複数の物理インターフェースに割り当てることができます。これは、複数の物理インターフェース間での負荷分散に役立ちます。
現在、IPv6はIPv4モデルを継続しており、サブネットプレフィックスが1つのリンクに関連付けられています。複数のサブネットプレフィックスを同じリンクに割り当てることができます。
2.2. Text Representation of Addresses (アドレスのテキスト表現)
IPv6アドレスをテキスト文字列として表現するための3つの従来の形式があります:
形式1: 推奨形式
推奨形式は x:x:x:x:x:x:x:x です。ここで、'x' はアドレスの8つの16ビット部分の1〜4桁の16進数です。
例:
ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
2001:DB8:0:0:8:800:200C:417A
個々のフィールドで先頭のゼロを記述する必要はありませんが、すべてのフィールドに少なくとも1つの数字が必要です (以下の2番目のケースを除く)。
形式2: ゼロ圧縮形式
一部のIPv6アドレス割り当て方法により、アドレスに長いゼロビット文字列が含まれることが一般的です。ゼロビットを含むアドレスの記述を容易にするために、ゼロを圧縮するための特別な構文を使用できます。:: を使用して、1つ以上の16ビットゼログループを示します。:: はアドレス内に1回だけ出現できます。:: は、アドレス内の先頭または末尾のゼロを圧縮するためにも使用できます。
例:
以下のアドレス:
2001:DB8:0:0:8:800:200C:417A ユニキャストアドレス
FF01:0:0:0:0:0:0:101 マルチキャストアドレス
0:0:0:0:0:0:0:1 ループバックアドレス
0:0:0:0:0:0:0:0 未指定アドレス
は次のように表現できます:
2001:DB8::8:800:200C:417A ユニキャストアドレス
FF01::101 マルチキャストアドレス
::1 ループバックアドレス
:: 未指定アドレス
形式3: 混合IPv4-IPv6表現
IPv4とIPv6ノードの混在環境を扱う場合、より便利な代替形式は x:x:x:x:x:x:d.d.d.d です。ここで、'x' はアドレスの上位6つの16ビット部分の16進値であり、'd' はアドレスの下位4つの8ビット部分の10進値です (標準IPv4表現)。
例:
0:0:0:0:0:0:13.1.68.3
0:0:0:0:0:FFFF:129.144.52.38
または圧縮形式:
::13.1.68.3
::FFFF:129.144.52.38
2.3. Text Representation of Address Prefixes (アドレスプレフィックスのテキスト表現)
IPv6アドレスプレフィックスのテキスト表現は、クラスレスドメイン間ルーティング (CIDR, Classless Inter-Domain Routing) [CIDR] でIPv4アドレスプレフィックスが記述される方法に似ています。IPv6アドレスプレフィックスは次の表記法で表されます:
ipv6-address/prefix-length
ここで:
- ipv6-address: セクション2.2にリストされている任意の表記法のIPv6アドレスです。
- prefix-length: アドレスの左端の連続ビットのうち、プレフィックスを構成するビット数を指定する10進値です。
例:
以下は、60ビットプレフィックス 20010DB80000CD3 (16進数) の正当な表現です:
2001:0DB8:0000:CD30:0000:0000:0000:0000/60
2001:0DB8::CD30:0:0:0:0/60
2001:0DB8:0:CD30::/60
以下は上記のプレフィックスの正当な表現ではありません:
2001:0DB8:0:CD3/60 先頭のゼロは削除できますが、アドレスの
任意の16ビットチャンク内の末尾のゼロは削除できません
2001:0DB8::CD30/60 "/" の左側のアドレスは
2001:0DB8:0000:0000:0000:0000:0000:CD30 に展開されます
2001:0DB8::CD3/60 "/" の左側のアドレスは
2001:0DB8:0000:0000:0000:0000:0000:0CD3 に展開されます
ノードアドレスとそのノードアドレスのプレフィックス (例: ノードのサブネットプレフィックス) の両方を記述する場合、2つを次のように組み合わせることができます:
ノードアドレス: 2001:0DB8:0:CD30:123:4567:89AB:CDEF
そのサブネット番号: 2001:0DB8:0:CD30::/60
次のように省略できます: 2001:0DB8:0:CD30:123:4567:89AB:CDEF/60
2.4. Address Type Identification (アドレスタイプ識別)
IPv6アドレスのタイプは、アドレスの上位ビットによって識別されます:
| アドレスタイプ | 2進プレフィックス | IPv6表記法 | セクション |
|---|---|---|---|
| Unspecified | 00...0 (128ビット) | ::/128 | 2.5.2 |
| Loopback | 00...1 (128ビット) | ::1/128 | 2.5.3 |
| Multicast | 11111111 | FF00::/8 | 2.7 |
| Link-Local unicast | 1111111010 | FE80::/10 | 2.5.6 |
| Global Unicast | (その他すべて) | - | 2.5.4 |
エニーキャストアドレスは、ユニキャストアドレス空間 (任意の範囲) から取得され、構文的にユニキャストアドレスと区別できません。
グローバルユニキャストアドレスの一般的な形式は、セクション2.5.4で説明されています。埋め込まれたIPv4アドレスを含むグローバルユニキャストアドレスの特殊目的サブタイプ (IPv4-IPv6相互運用用) は、セクション2.5.5で説明されています。
将来の仕様では、他の目的のためにグローバルユニキャスト空間の1つ以上のサブレンジを再定義する可能性がありますが、それが発生するまで、実装は上記のプレフィックスのいずれかで始まらないすべてのアドレスをグローバルユニキャストアドレスとして扱う必要があります。
2.5. Unicast Addresses (ユニキャストアドレス)
IPv6ユニキャストアドレスは、クラスレスドメイン間ルーティング下のIPv4アドレスと同様に、任意のビット長のプレフィックスで集約できます。
IPv6には、特にグローバルユニキャスト、サイトローカルユニキャスト (廃止、セクション2.5.7を参照)、リンクローカルユニキャストなど、いくつかのタイプのユニキャストアドレスがあります。埋め込まれたIPv4アドレスを持つIPv6アドレスなど、特殊目的のサブタイプのグローバルユニキャストアドレスもあります。他のタイプのユニキャストアドレスが将来定義される可能性があります。
IPv6ノードは、ノードが果たす役割 (たとえば、ホストとルーター) に応じて、IPv6アドレスの内部構造についてかなりの知識またはほとんど知識を持っていない場合があります。少なくとも、ノードは、ユニキャストアドレス (自身のアドレスを含む) には内部構造がないと見なすことができます:
| 128ビット |
+-----------------------------------------------------------------+
| ノードアドレス |
+-----------------------------------------------------------------+
わずかに高度なホスト (それでもかなり単純) は、接続されているリンクのサブネットプレフィックスをさらに認識している場合があります。異なるアドレスのnの値が異なる場合があります:
| nビット | 128-nビット |
+-------------------------------+---------------------------------+
| サブネットプレフィックス | インターフェースID |
+-------------------------------+---------------------------------+
非常に単純なルーターはIPv6ユニキャストアドレスの内部構造についての知識を持っていない場合がありますが、ルーターは通常、ルーティングプロトコルの動作のために1つ以上の階層境界の知識を持っています。既知の境界は、ルーターがルーティング階層のどの位置にあるかに応じて、ルーターごとに異なります。
前の段落で説明したサブネット境界の知識を除いて、ノードはIPv6アドレスの構造について何も仮定すべきではありません。
2.5.1. Interface Identifiers (インターフェース識別子)
IPv6ユニキャストアドレスのインターフェース識別子は、リンク上のインターフェースを識別するために使用されます。サブネットプレフィックス内で一意である必要があります。同じインターフェース識別子をリンク上の異なるノードに割り当てないことをお勧めします。より広い範囲で一意である場合もあります。場合によっては、インターフェースの識別子は、そのインターフェースのリンク層アドレスから直接派生します。異なるサブネットに接続されている限り、単一ノードの複数のインターフェースで同じインターフェース識別子を使用できます。
インターフェース識別子の一意性は、IPv6アドレスの一意性とは独立していることに注意してください。たとえば、ローカル範囲インターフェース識別子を使用してグローバルユニキャストアドレスを作成でき、ユニバーサル範囲インターフェース識別子を使用してリンクローカルアドレスを作成できます。
2進値000で始まるアドレスを除くすべてのユニキャストアドレスについて、インターフェースIDは64ビット長である必要があり、修正EUI-64形式 (Modified EUI-64 Format) で構築される必要があります。
修正EUI-64形式ベースのインターフェース識別子は、ユニバーサルトークン (例: IEEE 802 48ビットMACまたはIEEE EUI-64識別子 [EUI64]) から派生した場合はユニバーサル範囲を持つ場合があり、グローバルトークンが利用できない場合 (例: シリアルリンク、トンネルエンドポイント) またはグローバルトークンが望ましくない場合 (例: プライバシー用の一時トークン [PRIV]) はローカル範囲を持つ場合があります。
修正EUI-64形式インターフェース識別子は、IEEE EUI-64識別子からインターフェース識別子を形成するときに「u」ビット (IEEE EUI-64用語でのuniversal/localビット) を反転することによって形成されます。結果の修正EUI-64形式では、「u」ビットは、ユニバーサル範囲を示すために1に設定され、ローカル範囲を示すために0に設定されます。IEEE EUI-64識別子の最初の3つのオクテットの2進形式は次のとおりです:
0 0 0 1 1 2
|0 7 8 5 6 3|
+----+----+----+----+----+----+
|cccc|ccug|cccc|cccc|cccc|cccc|
+----+----+----+----+----+----+
インターネット標準ビット順序で記述されており、ここで「u」はuniversal/localビット、「g」はindividual/groupビット、「c」は会社IDのビットです。付録A「修正EUI-64形式インターフェース識別子の作成」は、修正EUI-64形式ベースのインターフェース識別子の作成例を提供します。
インターフェース識別子を形成するときに「u」ビットを反転する動機は、ハードウェアトークンが利用できない場合にシステム管理者が非グローバル識別子を手動で簡単に設定できるようにすることです。これは、たとえば、シリアルリンクやトンネルエンドポイントの場合に予想されます。代替案は、これらが0200:0:0:1、0200:0:0:2などの形式である代わりに、はるかに単純な0:0:0:1、0:0:0:2などです。
IPv6ノードは、「u」ビットがuniversalに設定された修正EUI-64トークンで作成されたインターフェース識別子が一意であることを検証する必要はありません。
修正EUI-64形式識別子でのuniversal/localビットの使用は、ユニバーサル範囲を持つインターフェース識別子を利用できる将来の技術の開発を可能にするためです。
インターフェース識別子を形成する詳細は、「IPv6 over <link>」仕様 (「IPv6 over Ethernet」[ETHER] や「IPv6 over FDDI」[FDDI] など) で定義されています。
2.5.2. The Unspecified Address (未指定アドレス)
アドレス 0:0:0:0:0:0:0:0 は未指定アドレスと呼ばれます。どのノードにも割り当ててはなりません。アドレスがないことを示します。その使用例の1つは、初期化中のホストが自身のアドレスを学習する前に送信するIPv6パケットの送信元アドレスフィールドです。
未指定アドレスは、IPv6パケットの宛先アドレスまたはIPv6ルーティングヘッダーで使用してはなりません。送信元アドレスが未指定のIPv6パケットは、IPv6ルーターによって転送してはなりません。
2.5.3. The Loopback Address (ループバックアドレス)
ユニキャストアドレス 0:0:0:0:0:0:0:1 はループバックアドレスと呼ばれます。ノードは、それを使用して自身にIPv6パケットを送信できます。どの物理インターフェースにも割り当ててはなりません。リンクローカル範囲を持つものとして扱われ、どこにも行かない仮想リンクへの仮想インターフェース (通常「ループバックインターフェース」と呼ばれる) のリンクローカルユニキャストアドレスと考えることができます。
ループバックアドレスは、単一ノードの外部に送信されるIPv6パケットの送信元アドレスとして使用してはなりません。宛先アドレスがループバックのIPv6パケットは、単一ノードの外部に送信してはならず、IPv6ルーターによって転送してはなりません。インターフェースで受信された宛先アドレスがループバックのパケットはドロップする必要があります。
2.5.4. Global Unicast Addresses (グローバルユニキャストアドレス)
IPv6グローバルユニキャストアドレスの一般的な形式は次のとおりです:
| nビット | mビット | 128-n-mビット |
+------------------------+-----------+----------------------------+
| グローバルルーティング | サブネットID | インターフェースID |
| プレフィックス | | |
+------------------------+-----------+----------------------------+
ここで、グローバルルーティングプレフィックスは、サイト (サブネット/リンクのクラスター) に割り当てられた (層次化された) 値であり、サブネットIDはそのサイト内のサブネットの識別子であり、インターフェースIDはセクション2.5.1で定義されています。
2進値000で始まるアドレス以外のすべてのグローバルユニキャストアドレスには、64ビットのインターフェースIDフィールドがあります (つまり、グローバルルーティングプレフィックスでは、n + m = 64である必要があります)。
グローバルルーティングプレフィックスの構造と割り当ては、このドキュメントの範囲を超えています。
2.5.5. IPv6 Addresses with Embedded IPv4 Addresses (埋め込まれたIPv4アドレスを持つIPv6アドレス)
IPv6移行メカニズムには、アドレスの下位32ビットにIPv4アドレスを持つIPv6アドレスを含むいくつかの技術が含まれています。これらのアドレスには、IPv4互換IPv6アドレスとIPv4マップIPv6アドレスの2つのタイプがあります。
2.5.5.1. IPv4-Compatible IPv6 Address (IPv4互換IPv6アドレス)
注意: IPv4互換IPv6アドレスタイプは廃止されました。
IPv4互換IPv6アドレスの形式は次のとおりです:
| 80ビット | 16ビット | 32ビット |
+--------------------+------+---------------+
| 0000......0000 | 0000 | IPv4アドレス |
+--------------------+------+---------------+
表記: ::d.d.d.d (ここで、d.d.d.d はIPv4アドレスの10進表現です)
2.5.5.2. IPv4-Mapped IPv6 Address (IPv4マップIPv6アドレス)
IPv4マップIPv6アドレスの形式は次のとおりです:
| 80ビット | 16ビット | 32ビット |
+--------------------+------+---------------+
| 0000......0000 | FFFF | IPv4アドレス |
+--------------------+------+---------------+
表記: ::FFFF:d.d.d.d (ここで、d.d.d.d はIPv4アドレスの10進表現です)
これらのアドレスは、IPv4のみのノードのアドレスをIPv6アドレスとして表すために使用されます。これらはIPv6ノード内でのみ使用され、IPv4ノードのアドレスを表します。IPv4マップIPv6アドレスは、IPv6パケットの送信元または宛先アドレスとして使用されることはありません。
2.5.6. Link-Local IPv6 Unicast Addresses (リンクローカルIPv6ユニキャストアドレス)
リンクローカルアドレスは、単一リンク上のアドレス自動構成、近隣探索、またはルーターが存在しない場合の通信に使用されます。
リンクローカルアドレスの形式は次のとおりです:
| 10ビット | 54ビット | 64ビット |
+----------+------------+---------------------+
|1111111010| 0 | インターフェースID |
+----------+------------+---------------------+
プレフィックス: FE80::/10
リンクローカルアドレスは、アドレス自動構成、近隣探索、ルーターが存在しない場合の通信などの目的で単一リンク上のアドレス指定に使用されるように設計されています。ルーターは、リンクローカル送信元または宛先アドレスを持つパケットを他のリンクに転送してはなりません。
2.5.7. Site-Local IPv6 Unicast Addresses (サイトローカルIPv6ユニキャストアドレス)
注意: サイトローカルアドレスは廃止されており、新しい実装または展開では使用しないでください。[RFC3879] を参照してください。
サイトローカルアドレスの形式は次のとおりです:
| 10ビット | 54ビット | 64ビット |
+----------+------------+---------------------+
|1111111011| サブネットID | インターフェースID |
+----------+------------+---------------------+
プレフィックス: FEC0::/10
サイトローカルアドレスは、グローバルプレフィックスなしでサイト内のアドレス指定に使用されるように設計されていました。ただし、サイト境界の定義が不明確であり、その他の問題があるため、サイトローカルアドレスは廃止され、ユニークローカルアドレス (Unique Local Addresses, ULA) [RFC4193] に置き換えられました。