伝送をコントロールする情報がギッシリ!IPv6ヘッダフィールドの役割
「家に届く荷物の配送も、パケットの配送も、いろいろ気を使って行われているんですね。」
はい、こんにちは!松井真也です。シリーズ「着実に普及していくIPアドレスの進化版:IPv6」の第4回でございます。
前回は、IPv6のヘッダのうち、その構成と廃止されたフィールドについてご紹介しました。IPv4のヘッダよりも長くなったものの、長さが固定することで効率化を図るのでした。また、送信元でしか断片化しなくなったのでフラグメントに関するフィールドも廃止されました。
さて、今回はそのIPv6ヘッダの続きとして、各フィールドの役割について解説します。IPv4のフィールドから厳選されたフィールドや新規追加されたフィールドがあります。どんなフィールドでしょうか?
早速見ていきましょう!
これが各フィールドの役割だ!
IPv6ヘッダにはいくつかの重要なフィールドがあり、それぞれ異なる機能を持っています。以下に、それぞれのフィールドについて詳しく説明します。
まずはヘッダーの構成を再掲しましょう。
フィールドは、8つしかないですね。
バージョン
このフィールドは4ビットで構成され、IPv6プロトコルであることを示します。IPv6では、このフィールドは常に6(二進数で0110)の値を取ります。
一方、IPv4なら常に4(二進数で0100)の値を取りますよ。今後IPv6の後継バージョンが登場することがあるなら、この値が変わるのでしょう。
トラフィッククラス
この1バイト(8ビット)フィールドは、トラフィックの優先順位付けとネットワークの輻輳管理に使われます。
上位6ビットはDiffServ(Differential Services)フィールドで、トラフィックを分類するために使用されます。「お、IP電話のパケットですか、なら急ぎですね。お、メールのパケットですか、今混んでるので後回しでいいですね。」とかね。
残りの2ビットはECN(Explicit Congestion Notification)に使われ、ネットワークの輻輳を示すために使用されます。直訳すると「明白な輻輳の通知」です。2ビットなので4パターンあるのですが、00が「輻輳なし」、11が「輻輳発生」です。
これに対応するIPv4のフィールドは、ToS(Type of Service)です。
フローラベル
この20ビットフィールドは、特定の通信フローを識別するためのラベルです。フローラベルを使用すると、IPアドレスやポート番号を利用して、同じフローのパケットが同じ経路をたどることができるため、パケットの順序が保たれ、効率的なルーティングが可能になります…というのが一般的説明です。
しかし、実際のところ、技術的な利用方法が確立されていないのか?あまり積極的に利用されていないようでして、すべて0であることが多いようです。もったいないな~。
なお、このフィールドは、IPv4にはないものです。
ペイロード長
16ビットで示され、IPv6ヘッダに続くペイロード(拡張ヘッダと上位層プロトコルのデータ)の全長をオクテット単位で示します。
IPv4にも似たようなフィールドがありましたね。そう、「パケット長」です。こちらは、ヘッダを含む長さを示します。IPv6の場合、ヘッダが固定長なので「ヘッダ長」を含める必要がないんです。
ネクストヘッダ
8ビットフィールドで、ヘッダの次に来るデータのタイプを指定します。これは、IPv4のプロトコルフィールドに相当します。
拡張ヘッダはペイロードの先頭に含まれ、固定ヘッダの直後に配置されます。IPv6の固定ヘッダは常に同じ長さ(40バイト)ですが、拡張ヘッダを使用することで、追加の情報をパケットに含めることが可能になります。
拡張ヘッダがある場合、その機能を示します。一方、拡張ヘッダがない場合、このフィールドは上位層プロトコル(例えばTCPやUDP)を指定します。
ホップリミット
この8ビットフィールドは、IPv4のTime to Live(TTL)に相当します。パケットがルータを通過するたびに1減少し、0になるとパケットは破棄されます。ループを防止するためにあります。
送信元アドレス・宛先アドレス
それぞれ送信元ノードと宛先ノードを128ビットIPv6アドレスを指定します。これにより、パケットがどこから来たのか、どこに送るのかを識別できます。
はい、本日はここまで!今回は、IPv6のヘッダフィールドのそれぞれの役割について解説しました。IPv4と何が違うのか比較しながら調べると楽しいですよ!
さて、次回は、ユニキャストアドレスに入りましょう!
では!