Skip to main content

3. Flow Labeling Requirements in the Stateless Scenario

This section defines the minimum requirements for stateless flow labeling. A node that does not implement stateful flow labeling MUST follow these requirements.

Source Node Requirements

A source node SHOULD assign each unrelated transport connection to a different flow. For this purpose, a flow is defined by the source and destination addresses and ports, and the transport protocol number. The source node SHOULD generate flow label values that approximate a discrete uniform distribution.

To achieve this, the source node SHOULD use a pseudo-random function to generate flow label values. The function SHOULD take as input the source and destination addresses, the source and destination ports, and the transport protocol number. The output SHOULD be a 20-bit flow label value.

An example hash function that may be used is described in Appendix A. However, implementations are free to use any method that produces a suitable distribution of flow label values.

The same flow label value MUST be used for all packets of a given flow. This means that once a flow label value has been assigned to a flow, it MUST NOT be changed for the duration of that flow.

If a source node does not implement flow labeling, it MUST set the Flow Label field to zero.

Forwarding Node Requirements

A forwarding node that does not implement stateful flow labeling MUST NOT change the Flow Label field, except as described in Section 6.1 for security reasons.

A forwarding node MAY use the Flow Label value as part of its forwarding decision, for example, in load distribution across multiple paths. When doing so, the forwarding node SHOULD use the Flow Label in combination with other packet header fields (such as source and destination addresses) to ensure proper load distribution.

Destination Node Requirements

A destination node that receives packets with non-zero Flow Label values SHOULD ignore the Flow Label field unless it has been configured to process flow labels in a specific way.

Flow Label Lifetime

The lifetime of a flow label value is the lifetime of the flow itself. Once a flow terminates (for example, when a TCP connection closes), the flow label value MAY be reused for a different flow.

There is no requirement to maintain state about previously used flow label values. However, to maintain the quality of the distribution, source nodes SHOULD avoid reusing the same flow label value for different flows in rapid succession.