RFC 6088

Traffic Selectors for Flow Bindings

πŸ“… published January 2011, from ietf

RFC 6088: Traffic Selectors for Flow Bindings πŸ’–

Okay bestie, here's the title block πŸŽ€ It's an IETF doc, Standards Track (ISSN 2070-1721), dated January 2011 πŸ“… Authors: G. Tsirtsis, G. Giaretta (both Qualcomm), H. Soliman (Elevate Technologies), and N. Montavont (IT/TB) 🧚 The title block doesn't list anything it obsoletes or updates, so there's nothing to chase there ✨

Abstract πŸ¦‹

Okay so this doc defines binary formats for IPv4 and IPv6 traffic selectors, and they're meant to be used with flow bindings for Mobile IPv6 🌸 Main character energy, honestly πŸ‘‘

Status of This Memo πŸ“œ

This is an Internet Standards Track document πŸ”₯

It's a product of the Internet Engineering Task Force (IETF), so it represents the consensus of the IETF community 🫢 It got public review and was approved for publication by the Internet Engineering Steering Group (IESG) βœ… If you want more on Internet Standards, check Section 2 of RFC 5741 πŸ’œ

For the current status, any errata, and how to give feedback, go to http://www.rfc-editor.org/info/rfc6088 πŸ“

Copyright (c) 2011 IETF Trust and the persons identified as the document authors. All rights reserved πŸ’…

This doc is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) as they stood on the publication date. Please actually read these, because they spell out your rights and restrictions for this document πŸ™ˆ

Code Components pulled out of this doc must include Simplified BSD License text, as described in Section 4.e of the Trust Legal Provisions. They come without warranty, as described in the Simplified BSD License ⚠️

Table of Contents πŸ—‚οΈ

1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  2
2.  Requirements Notation  . . . . . . . . . . . . . . . . . . . .  2
3.  Traffic Selector Sub-Options . . . . . . . . . . . . . . . . .  2
  3.1.  IPv4 Binary Traffic Selector . . . . . . . . . . . . . . .  2
  3.2.  IPv6 Binary Traffic Selector . . . . . . . . . . . . . . .  6
4.  Security Considerations  . . . . . . . . . . . . . . . . . . . 11
5.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 11
6.  Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 11
7.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 12
  7.1.  Normative References . . . . . . . . . . . . . . . . . . . 12
  7.2.  Informative References . . . . . . . . . . . . . . . . . . 12

1. Introduction ✨

Okay so this doc defines binary formats for IPv4 and IPv6 traffic selector sub-options, as defined in [RFC6089] πŸŽ€

The binary traffic selector format defined here allows for efficient identification of flow(s). It works off well-known fields in IPv4 [RFC0791], IPv6 [RFC2460], and transport layer headers like TCP [RFC0793] and UDP [RFC0768] πŸ¦‹ It's giving "read the header, find the flow, move on" πŸ’…

2. Requirements Notation πŸ’œ

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this doc are to be read as described in [RFC2119] πŸ”₯ Those words are doing serious work, so keep an eye on them πŸ‘€

3. Traffic Selector Sub-Options 🧚

[RFC6089] defines the format for the traffic selector sub-option 🌸

Here are the TS Format values that this spec defines for binary traffic selectors. It's giving a tiny lookup table πŸ“

TS Format:

   1 IPv4 binary traffic selector

   2 IPv6 binary traffic selector

3.1. IPv4 Binary Traffic Selector πŸŽ€

okay so this is the IPv4 binary one πŸ’… if the TS Format field says "IPv4 binary traffic selector", then the traffic selector gets laid out exactly like Figure 1 below πŸ¦‹

the alignment requirement for this sub-option is:

   4n if A, B, C, D, E, or F is set

   2n if G, H, I, or J is set

   n if K, L, M, or N is set
    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Sub-opt Type   |  Sub-Opt Len  |   TS Format   |   Reserved    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |A|B|C|D|E|F|G|H|I|J|K|L|M|N|          Reserved                 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                 (A)Start Source Address                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                 (B)End Source Address                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                 (C)Start Destination Address                  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                 (D)End Destination Address                    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     (E)Start IPsec SPI                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      (F)End IPsec SPI                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   (G)Start Source port        |   (H)End Source port          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   (I)Start Destination port   |   (J)End Destination port     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  (K)Start DS  |  (L)End DS    |(M)Start Prot. | (N) End Prot. |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 1: IPv4 binary traffic selector

Flags (A-N) 🌸

each flag tells you whether its matching field is present in the message ✨

(A)Start Source Address πŸ’–

this one identifies the first source address, from the range of 32-bit IPv4 addresses being matched, on data packets that go from a corresponding node to the mobile node as the home agent sees them. basically, it's one of the correspondent node's addresses 🫢

(B)End Source Address 🌈

if you need to match more than one contiguous source address, this field can give the end of a range that starts at the Start Source Address field. this field MUST NOT be included unless the Start Source Address field is included πŸ’€ when it's there, the receiver matches every address between (A) and (B), including (A) and (B) πŸ”₯

(C)Start Destination Address 🧚

this one is the first destination address, from the range of 32-bit IPv4 addresses being matched, on data packets going from a corresponding node to the mobile node as the home agent sees them. so here it's one of the mobile node's registered home addresses πŸ‘‘

(D)End Destination Address πŸ“

same energy as (B), but for destinations. if you need a contiguous run of destination addresses, this field marks the end of a range starting from the Start Destination Address field. this field MUST NOT be included unless the Start Destination Address field is included πŸ™ˆ when it's there, the receiver matches everything between (C) and (D), including (C) and (D) πŸ’œ

(E)Start IPsec SPI - Security Parameter Index πŸ”

this identifies the first 32-bit IPsec SPI value, from the range of SPI values being matched, on data packets going from a corresponding node to the mobile node as the home agent sees them. this field is defined in [RFC4303] ✨

(F)End IPsec SPI - Security Parameter Index πŸ¦‹

if you want a contiguous run of SPI values, this field gives the end value of a range starting from the Start IPsec SPI field. this field MUST NOT be included unless the Start IPsec SPI field is included. when it's included, the receiver matches all the SPI values between (E) and (F), including (E) and (F) 😭

(G)Start Source Port 🌸

this is the first 16-bit source port number, from the range of port numbers being matched, on data packets going from a corresponding node to the mobile node as the home agent sees them. these come from the port number ranges defined by IANA (http://www.iana.org) 🌈

(H)End Source Port πŸ’…

if you need more than one contiguous source port number, this field gives the end of a range starting from the Start Source Port field. this field MUST NOT be included unless the Start Source Port field is included 🫢 when it's there, the receiver matches every port number between (G) and (H), including (G) and (H) ✨

(I)Start Destination Port 🧚

this one is the first 16-bit destination port number, from the range of port numbers being matched, on data packets going from a corresponding node to the mobile node as the home agent sees them πŸ’–

(J)End Destination Port πŸŽ€

same vibe as (H) but for destination ports. if you need a contiguous run, this field gives the end of a range starting from the Start Destination Port field. this field MUST NOT be included unless the Start Destination Port field is included πŸ’€ when it's there, the receiver matches all the port numbers between (I) and (J), including (I) and (J) πŸ”₯

(K)Start DS - Differential Services πŸ‘‘

this identifies the first differential services value, from the range of DS values being matched, on data packets going from a corresponding node to the mobile node as the home agent sees them. quick history moment: this field is called a "Type of Service field" in [RFC0791]. then [RFC3260] clarified that it got redefined as a 6-bit DS field with 2 bits reserved, which were later claimed by Explicit Congestion Notification (ECN) [RFC3168] 🧠 for this spec, the (K)Start DS field is 8 bits long, where the 6 most significant bits are the DS field being matched, and the 2 least significant bits MUST be ignored in any comparison πŸ™ˆ

(L)End DS - Differential Services πŸ“

if you need more than one contiguous DS value, this field gives the end of a range starting from the Start DS field. this field MUST NOT be included unless the Start DS field is included. when it's included, it MUST be coded the same way as defined for (K). the receiver matches all the values between (K) and (L), including (K) and (L) 😭

(M)Start Protocol 🌈

this is the first 8-bit protocol value, from the range of protocol values being matched, on data packets going from a corresponding node to the mobile node as the home agent sees them πŸ¦‹

(N)End Protocol πŸ’œ

if more than one contiguous protocol value needs matching, this field gives the end of a range starting from the Start Protocol field. this field MUST NOT be included unless the Start Protocol field is included 🫢 when it's there, the receiver matches every value between (M) and (N), including (M) and (N) πŸ”₯

Reserved 🧚

reserved for future use, so these bits MUST be set to zero by the sender and ignored by the receiver 🌸

3.2. IPv6 Binary Traffic Selector ✨

okay so this is the IPv6 version of the binary traffic selector, and it's giving bigger, fancier, more fields πŸ’…. If the TS Format field of the traffic selector sub-option says "IPv6 binary traffic selector", then the traffic selector gets formatted like this:

The alignment requirement for this sub-option is:

  • 8n if A, B, C, or D is set
  • 4n if E, F, G, or H is set
  • 2n if I, J, K, or L is set
  • n if M, N, O, or P is set

Here's the layout, bestie πŸŽ€

     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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Sub-opt Type   |  Sub-Opt Len  |   TS Format   |   Reserved    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|          Reserved             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                                                               +
   |                                                               |
   +                  (A)Start Source Address                      +
   |                                                               |
   +                                                               +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                                                               +
   |                                                               |
   +                  (B)End Source Address                        +
   |                                                               |
   +                                                               +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                                                               +
   |                                                               |
   +               (C)Start Destination Address                    +
   |                                                               |
   +                                                               +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                                                               +
   |                                                               |
   +                (D)End Destination Address                     +
   |                                                               |
   +                                                               +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     (E)Start IPsec SPI                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      (F)End IPsec SPI                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      (G)Start Flow Label                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                       (H)End Flow Label                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   (I)Start Source port        |   (J)End Source port          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   (K)Start Destination port   |   (L)End Destination port     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  (M)Start TC  |  (N)End TC    | (O)Start NH   | (P) End NH    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 2: IPv6 binary traffic selector

Flags (A-P)

Each flag indicates whether the corresponding field is present in the message. Think of each letter as a little on/off switch πŸ¦‹

(A)Start Source Address

This field identifies the first source address, from the range of 128-bit IPv6 addresses to be matched, on data packets sent from a corresponding node to the mobile node as seen by the home agent. In other words, this is one of the addresses of the correspondent node. 🌸

(B)End Source Address

If more than one contiguous source address needs to be matched, then this field can be used to indicate the end value of a range starting from the value of the Start Source Address field. This field MUST NOT be included unless the Start Source Address field is included. When this field is included, the receiver will match all of the addresses between fields (A) and (B), inclusive of (A) and (B). πŸ’…

(C)Start Destination Address

This field identifies the first destination address, from the range of 128-bit IPv6 addresses to be matched, on data packets sent from a corresponding node to the mobile node as seen by the home agent. In other words, this is one of the registered home addresses of the mobile node. 🏠

(D)End Destination Address

If more than one contiguous destination address needs to be matched, then this field can be used to indicate the end value of a range starting from the value of the Start Destination Address field. This field MUST NOT be included unless the Start Destination Address field is included. When this field is included, the receiver will match all of the addresses between fields (C) and (D), inclusive of (C) and (D). 🫢

(E)Start IPsec SPI - Security Parameter Index

This field identifies the first 32-bit IPsec SPI value, from the range of SPI values to be matched, on data packets sent from a corresponding node to the mobile node as seen by the home agent. This field is defined in [RFC4303]. πŸ”

(F)End IPsec SPI - Security Parameter Index

If more than one contiguous SPI value needs to be matched, then this field can be used to indicate the end value of a range starting from the value of the Start IPsec SPI field. This field MUST NOT be included unless the Start IPsec SPI field is included. When this field is included, the receiver will match all of the SPI values between fields (E) and (F), inclusive of (E) and (F). ✨

(G)Start Flow Label

This field identifies the first flow label value, from the range of flow label values to be matched, on data packets sent from a corresponding node to the mobile node as seen by the home agent. According to [RFC2460], the flow label is 24 bits long. For the purpose of this specification, the sender of this option MUST prefix the flow label value with 8 bits of "0" before inserting it in the (G)Start Flow Label field. The receiver SHOULD ignore the first 8 bits of this field before using it in comparisons with flow labels in packets. 🧚

(H)End Flow Label

If more than one contiguous flow label value needs to be matched, then this field can be used to indicate the end value of a range starting from the value of the Start Flow Label field. This field MUST NOT be included unless the Start Flow Label field is included. When this field is included, the receiver will match all of the flow label values between fields (G) and (H), inclusive of (G) and (H). When this field is included, it MUST be coded the same way as defined for (G). πŸ“

(I)Start Source Port

This field identifies the first 16-bit source port number, from the range of port numbers to be matched, on data packets sent from a corresponding node to the mobile node as seen by the home agent. πŸ”₯

(J)End Source Port

If more than one contiguous source port number needs to be matched, then this field can be used to indicate the end value of a range starting from the value of the Start Source Port field. This field MUST NOT be included unless the Start Source Port field is included. When this field is included, the receiver will match all of the port numbers between fields (I) and (J), inclusive of (I) and (J). πŸ‘‘

(K)Start Destination Port

This field identifies the first 16-bit destination port number, from the range of port numbers to be matched, on data packets sent from a corresponding node to the mobile node as seen by the home agent. 🌈

(L)End Destination Port

If more than one contiguous destination port number needs to be matched, then this field can be used to indicate the end value of a range starting from the value of the Start Destination Port field. This field MUST NOT be included unless the Start Destination Port field is included. When this field is included, the receiver will match all of the port numbers between fields (K) and (L), inclusive of (K) and (L). πŸ’œ

(M)Start TC - Traffic Class

This field identifies the first traffic class value, from the range of traffic class values to be matched, on data packets sent from a corresponding node to the mobile node as seen by the home agent. This field is equivalent to the Start DS field in the IPv4 traffic selector in Figure 1. As per [RFC3260], the field is defined as a 6-bit DS field with 2 bits reserved, later claimed by Explicit Congestion Notification (ECN) [RFC3168]. For the purpose of this specification, the (M)Start TC field is 8 bits long, where the 6 most significant bits indicate the DS field to be matched and the 2 least significant bits' values MUST be ignored in any comparison. πŸŽ€

(N)End TC - Traffic Class

If more than one contiguous TC value needs to be matched, then this field can be used to indicate the end value of a range starting from the value of the Start TC field. This field MUST NOT be included unless the Start TC field is included. When this field is included, it MUST be coded the same way as defined for (M). When this field is included, the receiver will match all of the values between fields (M) and (N), inclusive of (M) and (N). 🌸

(O)Start NH - Next Header

This field identifies the first 8-bit next header value, from the range of next header values to be matched, on data packets sent from a corresponding node to the mobile node as seen by the home agent. πŸ¦‹

(P)End NH - Next Header

If more than one contiguous next header value needs to be matched, then this field can be used to indicate the end value of a range starting from the value of the Start NH field. This field MUST NOT be included unless the Start next header field is included. When this field is included, the receiver will match all of the values between fields (O) and (P), inclusive of (O) and (P). πŸ’–

Reserved

Reserved for future use. These bits MUST be set to zero by the sender and ignored by the receiver. πŸ™ˆ


4. Security Considerations πŸ”’

This document defines the format of the traffic selector field of a sub-option defined for flow bindings [RFC6089]. The authors have not identified any security concerns pertaining to this document beyond what is already identified in [RFC6089]. Lowkey a chill section, but it's still important, so read it 🫢


5. IANA Considerations πŸ“‹

The following new TS format values have been assigned from the "Traffic Selector Format" namespace for the traffic selector sub-option defined in [RFC6089].

1 IPv4 Binary Traffic Selector
2 IPv6 Binary Traffic Selector

6. Acknowledgements 🫢

Huge thanks to Patrick Stupar and Julien Laganier for their contributions to this document. πŸ’– Also big love to Benjamin Lim, Dave Craig, Patrick Stupar, and Basavaraj Patil for their reviews and comments. The squad really showed up for this one ✨

7. References πŸ“š

7.1. Normative References

These are the references the document depends on. πŸ’…

[RFC0768]  Postel, J., "User Datagram Protocol", STD 6, RFC 768,
           August 1980.

[RFC0791]  Postel, J., "Internet Protocol", STD 5, RFC 791,
           September 1981.

[RFC0793]  Postel, J., "Transmission Control Protocol", STD 7,
           RFC 793, September 1981.

[RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
           Requirement Levels", BCP 14, RFC 2119, March 1997.

[RFC2460]  Deering, S. and R. Hinden, "Internet Protocol, Version 6
           (IPv6) Specification", RFC 2460, December 1998.

[RFC3168]  Ramakrishnan, K., Floyd, S., and D. Black, "The Addition
           of Explicit Congestion Notification (ECN) to IP",
           RFC 3168, September 2001.

[RFC4303]  Kent, S., "IP Encapsulating Security Payload (ESP)",
           RFC 4303, December 2005.

[RFC6089]  Tsirtsis, G., Soliman, H., Montavont, N., Giaretta, G.,
           and K. Kuladinithi, "Flow Bindings in Mobile IPv6 and
           Network Mobility (NEMO) Basic Support", RFC 6089,
           January 2011.

7.2. Informative References

And this one is just good background reading 🌸

[RFC3260]  Grossman, D., "New Terminology and Clarifications for
           Diffserv", RFC 3260, April 2002.

Authors' Addresses πŸ¦‹

Here's how to reach the authors, bestie πŸ’Œ

George Tsirtsis
Qualcomm

EMail: tsirtsis@qualcomm.com


Gerardo Giaretta
Qualcomm

EMail: gerardog@qualcomm.com


Hesham Soliman
Elevate Technologies

EMail: hesham@elevatemobile.com


Nicolas Montavont
Institut Telecom / Telecom Bretagne
2, rue de la chataigneraie
Cesson Sevigne  35576
France

Phone: (+33) 2 99 12 70 23
EMail: nicolas.montavont@telecom-bretagne.eu
URI:   http://www.rennes.enst-bretagne.fr/~nmontavo//

That's the whole RFC, bestie! πŸŒˆπŸ‘‘ Thank you for letting me be your protocol-explaining bestie πŸ’–βœ¨

πŸ“¦ where this page comes from