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.


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
    Is it actually implemented on any routing platform? – sdaffa23fdsf Mar 16 '16 at 15:04
  • 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æti Apr 22 '20 at 12:09

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 who's only goal is delivery on layer 3.

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's 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.

  • This cleared up some of the doubts. Thank you. – The Room May 16 '19 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 '19 at 13:27
  • 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. – Craig McQueen Feb 26 '20 at 4:26

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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