Internet-Draft | An IPv4 Flowlabel Option | March 2022 |
Dreibholz | Expires 22 September 2022 | [Page] |
This draft defines an IPv4 option containing a flowlabel that is compatible to IPv6. It is required for simplified usage of IntServ and interoperability with IPv6.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 22 September 2022.¶
Copyright (c) 2022 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
This document uses the following terms:¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
This section describes the motivation to add a flow label option to the IPv4 protocol.¶
The Flow Label field (see [RFC6436] and [RFC6437]) of the IPv6 header (see [RFC2460]) is a 20-bit number. All packets from the same source address having the same flow label MUST contain the same destination address. Therefore, the flow label combined with the source address is a network- unique identification for a specific packet flow. The idea behind the flow label is marking specific flows for IntServ. That is, the routers on the path from source to destination keep e.g. reservation states for the flows. The flow label provides easy identification and utilizes efficient lookup, e.g. using a hash function on the 3-tuple (source address, destination address, flow label).¶
Using the IPv6 flow label, packets can be mapped easily to specific flows, with the following features:¶
Using IntServ with IPv4, there are several problems that can only be solved with high management effort:¶
All in all, using IntServ flows with IPv4 requires much more work compared to IPv6, where simply the flow label can be used. It is therefore useful to add such a field to IPv4, too. An appropriate place to add such a field is an IPv4 option header.¶
IPv4 (see [RFC0791]) already defines an option header for a 16-bit SATNET stream identifier. Since this identifier would be incompatible to the 20-bit IPv6 flow label, reuse of this existing option header is inappropriate. Therefore, a new one is defined as follows.¶
Flow Label Option 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length |0 0 0 0 0 0 0 0|0 0 0 0 0 0 0 0| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |0 0 0 0 0 0 0 0|0 0 0 0| Flow Label | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+¶
The Flow Label option SHOULD be copied on fragmentation. It MUST be the first option of the IP header and therefore MUST NOT appear more than once per IPv4 packet. The Router Alert option SHOULD NOT be used to mark the necessity for routers to examine the options. Placing the Flow Label option as first option allows for easy processing in hardware.¶
Since the new IPv4 flow label is fully compatible to the IPv6 flow label, the field MAY be translated in the other protocol's one during protocol translation. That is, a router can translate an IPv6 packet set from an IPv6-only host to an IPv4-mapped address of an IPv4-only host and the flow label may simply be copied. The same may also be applied in the backwards direction.¶
Note, that copying the flow label during protocol translation is not mandatory. There may be IntServ reservation reasons for not copying but setting the flow label to zero. But a router MUST NOT set the flow label to another value than the copy or 0, since the source is responsible to ensure that the source address combined with the flow label is network-unique.¶
Security considerations are similar to the IPv6 flow label, see [RFC6437].¶
This document introduces no additional considerations for IANA.¶
The author would like to thank Brian E. Carpenter, Wes George, Perry Lorier, Christoph Reichert and Michael Tuexen for their comments.¶