Type of Service

Type of Service（タイプ・オブ・サービス、ToS、サービス種別）フィールドは、IPv4ヘッダの先頭から2バイト目（8 - 15ビット目）である。このフィールドには長年にわたって様々な目的が割り当てられ、5つのRFCにそれぞれ異なる方法で定義されている 再定義される以前は、ToSフィールドはデータグラムの優先順位を指定し、低遅延、高スループット、または信頼性の高いサービスのための経路を要求するために使用されていた。ToS値に基づいて、パケットは優先送信キューに入れられ、あるいは適切なレイテンシ、スループット、または信頼性により転送されることになる。実際には、この目的でのToSフィールドの利用は、米国国防総省のネットワーク以外では広く使用されていない。しかしながら、多くの実験的、研究的、展開的な研究はこの8ビットをどのように利用するかに焦点を合わせており、その結果が現在のDSフィールドの定義になっている。 再定義後のToSフィールドは、6ビットのDifferentiated Services Code Point(DSCP)フィールドと2ビットのExplicit Congestion Notification(ECN)フィールドから構成される8ビットのDS(differentiated services)フィールドである。Differentiated ServicesはToSとやや後方互換性があるが、ECNにはない。このDSフィールドのフォーマットは、IPv6のTraffic Classフィールドにも使用されている。 IPヘッダのToSフィールドは、元々 RFC 791 で定義されたもので、それ以来IP優先順位とToSとして解釈されてきた。この定義は、主にメッセージ優先順位を定義する米国国防総省仕様JANAP-128から派生したものである。これは、各IPパケットに優先順位を割り当てるためのメカニズム、および高スループット、高信頼性、低遅延などの特定の処理を要求するためのメカニズムを定義している。 RFC1349 では、Monetary Costビットが導入された（このビットは、RFC 791では将来の使用のために予約されていた）。 RFC 1583 (OSPFv2)のセクション2.4で、ToS対応ルーティング方式が導入された。 実際には、このフィールドのIP優先順位の部分だけが米国DoDネットワークの外で使用されたことがある。IP優先順位フィールドの値が高いほど、IPパケットの優先順位が高くなる。米国DoDネットワークの中には、海洋ケーブル経路と衛星通信(SATCOM)経路の間の経路選択（両方の経路が存在する場合）に遅延ビットを使用したものもあった。作者がその起草時にDiffServの取り組みを知っていたこともあり、IPv6にはIPv4のような伝統的なToSフィールドがなかった（ RFC 2460 Section 7）。 RFC 2474 では、このフィールド全体の定義が変更された。現在はDS(Differentiated Services、DiffServ）フィールドと呼ばれており、上位6ビットにはDSCP(Differentiated Services Code Point)と呼ばれる値が含まれている。DSの上位3ビットは、IP優先順位との互換性を維持する。RFC 3168 以降、残りの2ビット（最下位2ビット）はExplicit Congestion Notification(ECN)に使用される。 RFC 791 では、Type of Serviceフィールドは次のように定義されていた。 優先順位(Precedence)は先頭3ビットのフィールドであり、この数値の高いパケットを他のパケットよりも重要なものとして扱う。ルータが輻輳していて、いくつかのパケットを破棄する必要がある場合は、優先順位が最も低いパケットが最初に破棄される。優先順位フィールドはIPv4の一部であるが、使用されることはなかった。 RFC 1349 で低コスト(lowcost)フィールドが追加され、ToSの4つのビットの役割が以下のようになった。 ここでの命名は、Unixオペレーティングシステムの規約に従う。 RFC 1349 および RFC 1060 では、アプリケーションのデフォルト値として同時に使用される1ビットの例のみを示しているが、 RFC 791 では、3つのビットのうち最大2つを名目上設定する必要があると述べている。そのような用途の1つがmod_iptosにある。 最後の3ビットはRFC 2474以前に多くの定義を経ているため（下記参照）、文書化と実装の際に混乱し矛盾を来す可能性がある。 RFC 2474 （1998年12月発表）ではDSフィールドの最初の6ビットをDifferentiated Services Code Point(DSCP)用に予約し、RFC 3168では後ろの2ビットをExplicit Congestion Notification（英語版）用に予約した。 DSCPは、定義した各値に名前を付けるクラスセレクタ(CS)を定義しており、先頭の3ビットは従前の仕様のIP優先順位を反映している。 DSCPの命名法: CS クラスセレクタ (RFC 2474) AFxy Assured Forwarding (x=class, y=drop precedence) (RFC 2597) EF Expedited Forwarding (RFC 3246) 上記の表では、ToSフィールド全体の値に対して個々の値が書き出されている。 注：上の表では、ToSは十進数で表示されている。多くのルータはToSを16進形式で表す。 例えば、IP優先順位が1、すなわち2進数で0b001の場合、未使用の5ビットがゼロであると仮定すると、ToSフィールド全体は001 00000になる。これを001000 00と解釈すると、先頭5ビットの001000 = 8がDSCP値となる。 ^ RFC 791 、 RFC 1122 、 RFC 1349 、 RFC 2474 、 RFC 3168 の5つ。ToSフィールドの歴史については RFC 3168 のsection 22を参照。 ^ http://www.tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.qdisc.classless.html Linux Advanced Routing & Traffic Control ^ RFC 3260 Section 4 ^ RFC 3168 Section 5 ^ “openbsd/src:sys/netinet/ip.h” (英語). GitHub. 10 October 2018閲覧。 ^ “mod_iptos.c (mod_iptos 1.0)”. 10 October 2018時点のオリジナルよりアーカイブ。10 October 2018閲覧。 John Evans, Clarence Filsfils (2007). Deploying IP and MPLS QoS for Multiservice Networks: Theory and Practice. Morgan Kaufmann. ISBN 978-0123705495  Class of Service（英語版） Quality of Service Explicit Congestion Notification（英語版） Linux Advanced Routing & Traffic Control. How to set ToS byte via IPChains Simple Traffic Queueing by ToS values