12. IP ヘッダーフィールド (IP Header Fields)
このセクションでは、クライアントとピア間、またはその逆方向でリレーする際に、サーバーが IP ヘッダー内のさまざまなフィールドをどのように設定するかについて説明します。このセクションの説明は、(a) サーバーがピアに UDP データグラムを送信する場合、または (b) サーバーが UDP トランスポート経由でクライアントに Data インディケーションまたは ChannelData メッセージを送信する場合に適用されます。このセクションの説明は、サーバーから TCP または TLS トランスポート経由でクライアントに送信される TURN メッセージには適用されません。
以下の説明は、優先動作と代替動作の 2 つの動作に分かれています。サーバーは優先動作を実装すべきです (SHOULD)。ただし、特定のフィールドでこれが不可能な場合は、代替動作を実装すべきです (SHOULD)。
生存時間 (Time to Live, TTL) フィールド
-
優先動作: 受信値が 0 の場合、受信パケットを破棄します。それ以外の場合は、送信 Time to Live/Hop Count を受信値より 1 少ない値に設定します。
-
代替動作: 送信値を送信パケットのデフォルト値に設定します。
差別化サービスコードポイント (Differentiated Services Code Point, DSCP) フィールド [RFC2474]
-
優先動作: サーバーが差別化サービス分類器およびマーカー (Differentiated Services Classifier and Marker) [RFC2474] を含まない限り、送信値を受信値に設定します。
-
代替動作: 送信値を固定値に設定します。デフォルトはベストエフォート (Best Effort) ですが、設定可能です。
-
どちらの場合も、サーバーが差別化サービス分類器およびマーカーに直接隣接している場合、分類器に向かう方向では、DSCP を任意の値に設定できます (MAY)。
明示的輻輳通知 (Explicit Congestion Notification, ECN) フィールド [RFC3168]
-
優先動作: サーバーがアクティブキュー管理 (Active Queue Management) を行っていない限り、送信値を受信値に設定します。アクティブキュー管理を行っている場合で、受信 ECN フィールドが ECT(1) (=0b01) または ECT(0) (=0b10) に設定されており、サーバーが輻輳を経験したことを示したい場合は、送信値を CE (=0b11) に設定します。
-
代替動作: 送信値を Not-ECT (=0b00) に設定します。
IPv4 フラグメンテーションフィールド (IPv4 Fragmentation Fields)
-
優先動作: サーバーが DONT-FRAGMENT 属性を含む Send インディケーションに応答してピアにパケットを送信する場合、送信 IP ヘッダーの DF ビットを 1 に設定します。アプリケーションデータを含む送信パケットを送信する他のすべての場合(例:Data インディケーション、ChannelData メッセージ、または DONT-FRAGMENT 属性のない Send インディケーション)では、アプリケーションデータを含む受信パケットの DF ビットから DF ビットをコピーします。
その他のフラグメンテーションフィールド(識別 (Identification)、More Fragments、Fragment Offset)は、サーバーが送信するパケットに適した値に設定します。
-
代替動作: 優先動作と同様ですが、受信 DF ビットが常に 0 であると仮定します。
-
優先動作と代替動作の両方で、結果として得られるパケットが送信リンクに対して大きすぎる可能性があります。その場合は、通常のフラグメンテーションルール [RFC1122] が適用されます。
IPv4 オプション (IPv4 Options)
-
優先動作: 送信パケットは IPv4 オプションなしで送信されます。
-
代替動作: 優先動作と同じ。