こんにちは、小澤です。
今回は、IPv6拡張ヘッダについて説明することにしましょう。教科書「プロフェッショナルIPv6」では「4.3 IPv6拡張ヘッダ」(105ページ〜114ページ)の部分です。
なお、「プロフェッショナルIPv6」の電子書籍は無償でダウンロードできます。以下をご覧ください。
https://booth.pm/ja/items/913273
IPv6拡張ヘッダとは
IPv6拡張ヘッダは、IPv6パケットに追加の情報を含めるための仕組みで、IPv6の大きな特徴です。
IPv6パケットには、IPv6ヘッダに続いて0個以上のIPv6拡張ヘッダが存在する場合があります。IPv6ヘッダは、主にIPv6パケットの基本的なヘッダ情報を提供しますが、IPv6拡張ヘッダには追加の情報やオプションを含むことができます。これにより、IPv6ヘッダを固定長にしながら、特定のネットワーク機能やサービスのための拡張をすることが可能となります。
IPv6の柔軟性と拡張性を高めるために拡張ヘッダが活用される具体的なケースには、以下のようなものがあります。
- 新しい機能の追加
新しい拡張ヘッダを定義することで、IPv6に新しい機能を追加できます。例えば、暗号化や認証、フロー制御などの機能を拡張ヘッダで実装できます。
- 経路制御の柔軟性
ルーティングヘッダを使用することで、パケットの経路を細かく制御できます。複数のルーティングを指定できるため、経路の冗長性や負荷分散が実現できます。
- 追加情報のカプセル化
拡張ヘッダに任意の追加情報を含めることができます。QoSやパケットの優先順位などのメタデータを付加することができます。
- オプション機能の実装
Hop-by-Hopオプションヘッダや宛先オプションヘッダを使って、必要に応じて特定のノードでのみ処理するオプション機能を実装できます。
- パケットサイズの柔軟性
フラグメントヘッダを使ってパケットを任意のサイズに分割できるため、ネットワークのMTU(Maximum Transmission Unit)に対する柔軟性が向上することがあります。ただし、IPv6では、パケットヘッダにフラグメンテーション機能が標準装備されていないため、パケットの分割は送信元ノードで行う必要があります。そのため、IPv6の方がフラグメンテーションに制約があり、ネットワークのMTUサイズに応じてパケットサイズを調整する必要性が高くなる場合があります。
主な拡張ヘッダ
- Hop-by-Hop(ホップバイホップ)オプションヘッダ
通信経路上の各ノードで処理されるオプションを含みます。例えば、通信経路上のノードによるパケットのトレースや、特定のノードでの処理指示などが含まれるので、経路全体に影響するオプションを設定する必要がある場合に使用されます。パフォーマンス測定やネットワーク診断での利用が多いです。
- パケットの送信元から最終宛先までの経路上のすべてのノード(ルータ)で処理される。ただし、最新の基本仕様では、Hop-by-Hopオプションヘッダを処理するように設定されたルータのみが処理するという内容に変わっている。
- 経路上のノードの動作を制御するオプションを含むことができる。
- パケットの優先順位の指定、フローラベルの設定、パケットの検査要求などに利用できる。
- ヘッダ内に1つ以上のTLV(Type-Length-Value)エンコードのオプションを含む。
- パディングオプションでヘッダサイズの調整が可能。
- 宛先オプションヘッダ
宛先のみで意味ある処理を指定する場合に指定します。エンドツーエンドの通信品質の管理に有効です。
- パケットの経路上のルータでは処理されず、最終宛先ノードでのみ処理される。
- 宛先ノードでのパケット処理を制御するオプションを含めることができる。
- パケットの経路最適化やQoS制御、エンドツーエンドの信頼性確保に利用できる。
- Type-Length-Value(TLV)エンコードのオプションを含むことができる。
- パディングオプションでヘッダサイズの調整が可能。
- ルーティングヘッダ
パケットの経路情報を指定するためのもので、特定の経路を指定して通信を制御する際に有用です。
- パケットが通過すべき中継路(ノード)を指定できる。
- 複数の経路を指定可能で、経路の冗長性が実現できる。
- ソースルーティングの実現に利用される。
- ルーティングタイプを指定できる。
- 中継路のアドレスは、ヘッダ内のアドレスリストに含まれる。
- 各中継路は、パケット到着時にアドレスリストから削除される。
- 宛先到着前にアドレスがなくなるとパケットが破棄される。
- フラグメントヘッダ
パケットの断片化および再結合に関する情報を含みます。例えば、ネットワークのMTUサイズ以下にパケットを分割する必要がある場合に使用されます。
- 大きなパケットを小さなフラグメントに分割するために使用する。
- フラグメントオフセットとMF(More Fragments)フラグを含む。
- フラグメントオフセットはフラグメントの位置を示す。
- MFフラグは、後続のフラグメントがあるかを示す。
- フラグメントは中継ルータで再構成される。
- IDフィールドは、同じパケットのフラグメントを識別する。
- フラグメントは任意のサイズに分割できる。
- 認証ヘッダ
パケットの認証および完全性の確認のための情報を含みます。通信のセキュリティ向上のために有用です。
- 送信元アドレスの認証を行うことで、IPスプーフィングを防ぐ。
- パケットの改ざん検出を実現し、データの整合性を保証する。
- HMACアルゴリズムに基づいて認証処理が行われる。
- 共通鍵や公開鍵による認証が利用できる。
- シーケンス番号により、リプレイアタックを防止する。
- 認証範囲をパケット全体またはペイロードのみに限定できる。
- VPNなどのセキュアな通信でよく利用される。
- Encrypted Security Payload(暗号)ヘッダ
パケットの暗号化に関する情報を提供します。機密性が求められる通信において有用です。
- データの暗号化を行い、通信内容を秘匿する。
- 暗号アルゴリズムにAES、3DES、RC5などを利用できる。
- 認証データによりメッセージの整合性を検証する。
- 共通鍵暗号方式や公開鍵暗号方式が利用可能。
- IPsecのIKE(鍵交換プロトコル)と連携する。
- トランスポートモードとトンネルモードの両方に対応する。
- VPNなどのセキュアな通信で広く使われている。
- 認証ヘッダと組み合わせて使用することが多い。
拡張ヘッダの配置順序
IPv6拡張ヘッダは、IPv6ヘッダの直後に配置し、複数を連結することが可能です。ただし、拡張ヘッダの配置順序には以下のようなルールが定められています。
- Hop-by-Hopオプションヘッダは、IPv6ヘッダの直後に配置しなければならない。
- 宛先オプションヘッダは、ルーティングヘッダやフラグメントヘッダの直前に配置しなければならない。
- Encrypted Security Payloadヘッダは、認証ヘッダの直前に配置しなければならない。
- フラグメントヘッダは、ルーティングヘッダの直前に配置しなければならない。
- ルーティングヘッダーは、Hop-by-Hop Optionsヘッダーの直後に配置できる。
つまり、IPv6パケットに拡張ヘッダを含める場合の順序は、以下のようになります。
- IPv6ヘッダ
- Hop-by-Hopオプション(必要に応じて)
- 宛先オプションヘッダ(必要に応じて)
- ルーティングヘッダ(必要に応じて)
- フラグメントヘッダ(必要に応じて)
- 認証ヘッダ(必要に応じて)
- Encrypted Security Payload ヘッダ(必要に応じて)
- 宛先オプションヘッダ(必要に応じて)
- 上位層ヘッダ(TCP/UDPなど)
この拡張ヘッダの配置順序は、IPv6通信を正しく処理するために重要です。
まとめ
今回は、IPv6拡張ヘッダについて説明しました。IPv6は将来の変更や新しい要件に柔軟に対応できる設計で、IPv6拡張ヘッダはその柔軟性と拡張性を支える重要な要素です。ヘッダタイプを組み合わせることで、ニーズに適した機能を提供できるようになります。ただし、実際には、そこまで万能な拡張性を提供できているものでもないという点にも注意が必要です。
次回は、ICMPv6について説明します。ICMPは主に制御メッセージの送受信に利用され、ネットワークの正常な動作やエラーの通知に重要な役割を果たします。次回も引き続きご覧ください。
<お知らせ>
IPv6の学習のチェックにIPv6基礎検定はいかがでしょうか?全国350か所で通年受験が可能です。詳細は以下をご覧ください。
https://network-engineer.jp/ipv6basic