3. ステートレスシナリオにおけるフローラベリング要件 (Flow Labeling Requirements in the Stateless Scenario)
このセクションでは、ステートレスフローラベリングの最小要件を定義します。ステートフルフローラベリングを実装しないノードは、これらの要件に従う必要があります (MUST)。
ソースノード要件 (Source Node Requirements)
ソースノードは、無関係な各トランスポート接続を異なるフローに割り当てる必要があります (SHOULD)。この目的のために、フローは送信元アドレスと宛先アドレス、送信元ポートと宛先ポート、およびトランスポートプロトコル番号によって定義されます。ソースノードは、離散一様分布に近似するフローラベル値を生成する必要があります (SHOULD)。
これを達成するために、ソースノードは疑似ランダム関数を使用してフローラベル値を生成する必要があります (SHOULD)。この関数は、送信元アドレスと宛先アドレス、送信元ポートと宛先ポート、およびトランスポートプロトコル番号を入力として受け取る必要があります (SHOULD)。出力は20ビットのフローラベル値である必要があります (SHOULD)。
使用できるハッシュ関数の例は、付録Aで説明されています。ただし、実装は、適切なフローラベル値の分布を生成する任意の方法を自由に使用できます。
特定のフローのすべてのパケットに同じフローラベル値を使用する必要があります (MUST)。これは、フローラベル値がフローに割り当てられると、そのフローの期間中は変更してはならない (MUST NOT) ことを意味します。
ソースノードがフローラベリングを実装しない場合は、フローラベルフィールドをゼロに設定する必要があります (MUST)。
転送ノード要件 (Forwarding Node Requirements)
ステートフルフローラベリングを実装しない転送ノードは、セクション6.1でセキュリティ上の理由で説明されている場合を除き、フローラベルフィールドを変更してはなりません (MUST NOT)。
転送ノードは、たとえば複数のパス全体の負荷分散において、転送決定の一部としてフローラベル値を使用できます (MAY)。その場合、転送ノードは、適切な負荷分散を確保するために、フローラベルを他のパケットヘッダーフィールド (送信元アドレスや宛先アドレスなど) と組み合わせて使用する必要があります (SHOULD)。
宛先ノード要件 (Destination Node Requirements)
ゼロ以外のフローラベル値を持つパケットを受信する宛先ノードは、特定の方法でフローラベルを処理するように構成されていない限り、フローラベルフィールドを無視する必要があります (SHOULD)。
フローラベルの有効期間 (Flow Label Lifetime)
フローラベル値の有効期間は、フロー自体の有効期間です。フローが終了すると (たとえば、TCP接続が閉じられたとき)、フローラベル値は別のフローに再利用できます (MAY)。
以前に使用されたフローラベル値に関する状態を維持する必要はありません。ただし、分布の品質を維持するために、ソースノードは、異なるフローに対して同じフローラベル値を急速に連続して再利用することを避ける必要があります (SHOULD)。