From 0bf7bb712b7c6dd835c3cb874f0f97c379913f56 Mon Sep 17 00:00:00 2001 From: Brian E Carpenter Date: Thu, 17 Nov 2022 15:34:51 +1300 Subject: [PATCH] New section on flow label + traffic class --- 2. IPv6 Basic Technology/2. IPv6 Basic Technology.md | 1 + .../Extension headers and options.md | 2 +- 2. IPv6 Basic Technology/Packet Format.md | 5 +++-- .../Traffic class and flow label.md | 12 ++++++++++++ Contents.md | 1 + 5 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 2. IPv6 Basic Technology/Traffic class and flow label.md diff --git a/2. IPv6 Basic Technology/2. IPv6 Basic Technology.md b/2. IPv6 Basic Technology/2. IPv6 Basic Technology.md index dfb4456..2a82adb 100644 --- a/2. IPv6 Basic Technology/2. IPv6 Basic Technology.md +++ b/2. IPv6 Basic Technology/2. IPv6 Basic Technology.md @@ -24,5 +24,6 @@ The rest of this chapter covers various basic aspects of IPv6. ## [Routing](Routing.md) ## [Transport protocols](Transport%20protocols.md) ## [Extension headers and options](Extension%20headers%20and%20options.md) +## [Traffic class and flow label](Traffic%20class%20and%20flow%20label.md) ### [Back to main Contents](../Contents.md) diff --git a/2. IPv6 Basic Technology/Extension headers and options.md b/2. IPv6 Basic Technology/Extension headers and options.md index 1e70f37..1c77134 100644 --- a/2. IPv6 Basic Technology/Extension headers and options.md +++ b/2. IPv6 Basic Technology/Extension headers and options.md @@ -3,4 +3,4 @@ Section text goes here -### [Previous](Transport%20protocols.md) [Chapter Contents](2.%20IPv6%20Basic%20Technology.md) \ No newline at end of file +### [Previous](Transport%20protocols.md) [Next](Traffic%20class%20and%20flow%20label.md) [Chapter Contents](2.%20IPv6%20Basic%20Technology.md) \ No newline at end of file diff --git a/2. IPv6 Basic Technology/Packet Format.md b/2. IPv6 Basic Technology/Packet Format.md index a4b36d8..1331dca 100644 --- a/2. IPv6 Basic Technology/Packet Format.md +++ b/2. IPv6 Basic Technology/Packet Format.md @@ -34,9 +34,10 @@ Some notes on these fixed fields: - Version: is always 6 -- Traffic class: six bits of [differentiated services](https://www.rfc-editor.org/info/rfc2474) code point followed by two [ECN](https://www.rfc-editor.org/info/rfc3168) bits. +- Traffic class: six bits of [differentiated services](https://www.rfc-editor.org/info/rfc2474) code point followed by two [ECN](https://www.rfc-editor.org/info/rfc3168) bits. See [Traffic class and flow label](Traffic%20class%20and%20flow%20label.md). -- Flow label: 20 bits. Should be a pseudo-random value unique to a given traffic flow. See [IPv6 Flow Label Specification](https://www.rfc-editor.org/info/rfc6437), [Using the IPv6 Flow Label for Equal Cost Multipath Routing and Link Aggregation in Tunnels](https://www.rfc-editor.org/info/rfc6438) and [Using the IPv6 Flow Label for Load Balancing in Server Farms](https://www.rfc-editor.org/info/rfc7098). +- Flow label: 20 bits. Should be a pseudo-random value unique to a given traffic flow. +See [Traffic class and flow label](Traffic%20class%20and%20flow%20label.md). - Payload length: Length of the rest of the packet following this IPv6 header, counted in bytes. diff --git a/2. IPv6 Basic Technology/Traffic class and flow label.md b/2. IPv6 Basic Technology/Traffic class and flow label.md new file mode 100644 index 0000000..946dd07 --- /dev/null +++ b/2. IPv6 Basic Technology/Traffic class and flow label.md @@ -0,0 +1,12 @@ +## Traffic class and flow label + +The Traffic Class in every IPv6 packet is a byte also known as the Differentiated Services field. It is treated in every respect exactly like the same field in every IPv4 packet (originally named the TOS octet in [RFC791](https://www.rfc-editor.org/info/rfc791)). It contains six bits of [differentiated services](https://www.rfc-editor.org/info/rfc2474) code point followed by two [ECN \(Explicit Congestion Notification)](https://www.rfc-editor.org/info/rfc3168) bits. [RFC8100](https://www.rfc-editor.org/info/rfc8100) gives a good overview of current differentiated service interconnection practices for ISPs. [RFC5127](https://www.rfc-editor.org/info/rfc5127), [RFC4594](https://www.rfc-editor.org/info/rfc4594), [RFC5865](https://www.rfc-editor.org/info/rfc5865), [RFC8622](https://www.rfc-editor.org/info/rfc8622) and [RFC8837](https://www.rfc-editor.org/info/rfc8837) also describe current practice. + +ECN is intended for use by transport protocols to support congestion control. + +*TBD: ECN deployment and practice?* + +The Flow Label is a 20 bit field in every IPv6 packet, although as it name indicates it is only relevant to sustained traffic flows. The sender of a packet should fill it with a pseudo-random non-zero value unique to a given traffic flow, such as a given TCP connection. It can then be used downstream in support of load balancing. By definition, the 20 bits have no semantics, although some deployments are known to have broken this guideline, which would interfere with load balancing. See [IPv6 Flow Label Specification](https://www.rfc-editor.org/info/rfc6437), [Using the IPv6 Flow Label for Equal Cost Multipath Routing and Link Aggregation in Tunnels](https://www.rfc-editor.org/info/rfc6438) and [Using the IPv6 Flow Label for Load Balancing in Server Farms](https://www.rfc-editor.org/info/rfc7098). + + +### [Previous](Extension%20headers%20and%20options.md) [Chapter Contents](2.%20IPv6%20Basic%20Technology.md) diff --git a/Contents.md b/Contents.md index b3f7037..5cbc6e0 100644 --- a/Contents.md +++ b/Contents.md @@ -23,6 +23,7 @@ This is the current list of contents. It will change as the book evolves. * Routing * Transport protocols * Extension headers and options +* Traffic class and flow label [3. Coexistence with Legacy IPv4](3.%20Coexistence%20with%20Legacy%20IPv4/3.%20Coexistence%20with%20Legacy%20IPv4.md) * Dual stacks