9

I have been reading the IPv6 Flow Label Specification (RFC 6437) and I would like to ask about the purpose of setting this label.

In case of just using the 2-tuple (source address, destination address), the packets will reach the destination.

And since some hosts do not support the functions of the flow label field, this label might end up having a value of 0 anyways.

4 Answers 4

2

The purpose of flow label is to maintain the sequential flow of the packets belonging to a communication.

The source labels the sequence to help the router identify that a particular packet belongs to a specific flow of information. Basically it is designed to avoid reordering of data packets.

2
  • 2
    Is it actually implemented on any routing platform? Mar 16, 2016 at 15:04
  • 1
    This answer is not correct. There is no information about packet order within the flow label. By itself, without any other signalling, the flow ID can only differentiate between packet flows (i.e.: 3-tuple of the Flow Label, Source Address, and Destination Address)
    – Lætitia
    Apr 22, 2020 at 12:09
15

The above answer isn't really correct. The flow label isn't designed for packet ordering - IP does not care about order, it is an unreliable services whose only goal is delivery on layer3.

Better way to understand the flow label is that its a value given to a flow of packets, and that value is the same across that flow. Therefore there is no information that actually assists with ordering of that flow, its simply to identify them as part of that flow.

The intended use case here is for QoS - i.e. the source might want to ask for special handling for packets associated with a certain flow.

4
  • This cleared up some of the doubts. Thank you.
    – The Room
    May 16, 2019 at 9:25
  • QoS case might be tricky because of this note (rfc2460, app A): "A source must not re-use a flow label for a new flow ..." + the following sentence about crash. Since it has to be dynamic, is there a specified way for source to communicate to routers how to handle certain flows?
    – domen
    Jul 26, 2019 at 13:27
  • 1
    Referring to "the above answer" is ambiguous, because answers can be reordered on StackExchange sites, depending on votes. You should link to the specific answer that you are referring to. Feb 26, 2020 at 4:26
  • I just read recently that flow is not a new idea, essentially in the IPv4 world it is the source address and port, the destination address and port and protocol. Which serves as a unique identifier for the flow (or what I guess I thought of as a connection - though there are connectionless flows). The reason for generalising it was presented as an efficiency gain in routers, that could use this number as a key in a table for management, rather than the compound key used in IPv4. Jun 15 at 1:57
2

Semantics and Usage of the Flow Label Field

A flow is a sequence of packets sent from a particular source to a  particular (unicast or multicast) destination for which the source  desires special handling by the intervening routers. The nature of  that special handling might be conveyed to the routers by a control  protocol, such as a resource reservation protocol, or by information  within the flow's packets themselves, e.g., in a hop-by-hop option.  The details of such control protocols or options are beyond the scope of this document.

There may be multiple active flows from a source to a destination, as well as traffic that is not associated with any flow. A flow is uniquely identified by the combination of a source address and a  non-zero flow label. Packets that do not belong to a flow carry a  flow label of zero.

A flow label is assigned to a flow by the flow's source node. New flow labels must be chosen (pseudo-)randomly and uniformly from the  range 1 to FFFFF hex. The purpose of the random allocation is to  make any set of bits within the Flow Label field suitable for use as  a hash key by routers, for looking up the state associated with the  flow.

All packets belonging to the same flow must be sent with the same  source address, destination address, and flow label. If any of those packets includes a Hop-by-Hop Options header, then they all must be  originated with the same Hop-by-Hop Options header contents  (excluding the Next Header field of the Hop-by-Hop Options header).  If any of those packets includes a Routing header, then they all must be originated with the same contents in all extension headers up to  and including the Routing header (excluding the Next Header field in  the Routing header). The routers or destinations are permitted, but  not required, to verify that these conditions are satisfied. If a  violation is detected, it should be reported to the source by an ICMP Parameter Problem message, Code 0, pointing to the high-order octet  of the Flow Label field (i.e., offset 1 within the IPv6 packet). The maximum lifetime of any flow-handling state established along a flow's path must be specified as part of the description of the  state-establishment mechanism, e.g., the resource reservation  protocol or the flow-setup hop-by-hop option. A source must not re-  use a flow label for a new flow within the maximum lifetime of any  flow-handling state that might have been established for the prior  use of that flow label.

2

RFC 6294 "Survey of Proposed Use Cases for the IPv6 Flow Label" is definitely the answer to the question. One quote:

There was considerable debate in the IETF about the very purpose of the flow label. Was it to be a handle for fast switching, as in CATNIP, or was it to be meaningful to applications and used to specify quality of service? Must it be set by the sending host, or could it be set by routers? Could it be modified en route, or must it be delivered with no change? Because of these uncertainties, and more urgent work, the flow label was consistently ignored by implementors, and today is set to zero in almost every IPv6 packet. In fact, [RFC2460] defined it as "experimental and subject to change".

Nowadays there is no need in fast switching (flow cached forwarding) because of ASICs (TCAM), and there is no clear advantages of additional 20-bit QoS field over existent Traffic Class (Differentiated Class of Service) field. So "Flow Label" is still waiting for its meaningful usage.

And yes, this answer is totally incorrect.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.