idnits 2.17.1 draft-kumar-ippm-ifa-01.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack an IANA Considerations section. (See Section 2.2 of https://www.ietf.org/id-info/checklist for how to handle the case when there are no actions for IANA.) Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (February 21, 2019) is 1883 days in the past. Is this intentional? Checking references for intended status: Experimental ---------------------------------------------------------------------------- No issues found here. Summary: 1 error (**), 0 flaws (~~), 1 warning (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 INTERNET-DRAFT J. Kumar 3 Intended Status: Experimental S. Anubolu 4 J. Lemon 5 R. Manur 6 Broadcom Inc. 7 H. Holbrook 8 Arista Networks 9 A. Ghanwani 10 Dell EMC 11 D. Cai 12 H. OU 13 AliBaba Inc. 14 Y. Li 15 Huawei 16 Expires: August 25, 2019 February 21, 2019 18 Inband Flow Analyzer 19 draft-kumar-ippm-ifa-01 21 Abstract 23 Inband Flow Analyzer (IFA) records flow specific information from an 24 end station and/or switches across a network. This document 25 discusses the method to collect data on a per hop basis across a 26 network and perform localized or end to end analytics operations on 27 the data. This document also describes a transport-agnostic header 28 definition that may be used for tunneled and non-tunneled flows 29 alike. 31 Status of this Memo 33 This Internet-Draft is submitted to IETF in full conformance with the 34 provisions of BCP 78 and BCP 79. 36 Internet-Drafts are working documents of the Internet Engineering 37 Task Force (IETF), its areas, and its working groups. Note that 38 other groups may also distribute working documents as 39 Internet-Drafts. 41 Internet-Drafts are draft documents valid for a maximum of six months 42 and may be updated, replaced, or obsoleted by other documents at any 43 time. It is inappropriate to use Internet-Drafts as reference 44 material or to cite them other than as "work in progress." 46 The list of current Internet-Drafts can be accessed at 47 http://www.ietf.org/1id-abstracts.html 49 The list of Internet-Draft Shadow Directories can be accessed at 50 http://www.ietf.org/shadow.html 52 Copyright and License Notice 54 Copyright (c) 2018 IETF Trust and the persons identified as the 55 document authors. All rights reserved. 57 This document is subject to BCP 78 and the IETF Trust's Legal 58 Provisions Relating to IETF Documents 59 (http://trustee.ietf.org/license-info) in effect on the date of 60 publication of this document. Please review these documents 61 carefully, as they describe your rights and restrictions with respect 62 to this document. Code Components extracted from this document must 63 include Simplified BSD License text as described in Section 4.e of 64 the Trust Legal Provisions and are provided without warranty as 65 described in the Simplified BSD License. 67 Table of Contents 69 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 70 1.1 Terminology . . . . . . . . . . . . . . . . . . . . . . . . 4 71 1.2 Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 72 1.3 Applicability . . . . . . . . . . . . . . . . . . . . . . . 4 73 1.4 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . 5 74 2. Requirements . . . . . . . . . . . . . . . . . . . . . . . . . 5 75 2.1 Encapsulation Requirements . . . . . . . . . . . . . . . . . 5 76 2.2 Operational Requirements . . . . . . . . . . . . . . . . . . 5 77 2.3 Cost and Performance Requirements . . . . . . . . . . . . . 6 78 3. IFA Operations . . . . . . . . . . . . . . . . . . . . . . . . 7 79 3.1 IFA Zones . . . . . . . . . . . . . . . . . . . . . . . . . 8 80 3.2 IFA Function Nodes . . . . . . . . . . . . . . . . . . . . . 8 81 3.2.1 Initiating Function Node . . . . . . . . . . . . . . . . 8 82 3.2.2 Transit Function Node . . . . . . . . . . . . . . . . . 9 83 3.2.3 Terminating Function Node . . . . . . . . . . . . . . . 9 84 3.2.4 Metadata Fragmentation Function . . . . . . . . . . . . 9 85 3.3 IFA Cloning, Truncation, and Drop . . . . . . . . . . . . . 10 86 3.4 IFA Header . . . . . . . . . . . . . . . . . . . . . . . . . 10 87 3.4.1 IFA Metadata Header . . . . . . . . . . . . . . . . . . 13 88 3.4.2 IFA Checksum Header . . . . . . . . . . . . . . . . . . 13 89 3.4.3 IFA Metadata Fragmentation (MF) Header . . . . . . . . . 14 90 3.5 IFA Metadata . . . . . . . . . . . . . . . . . . . . . . . . 15 91 3.5.1 Global Name Space (GNS) Identifier . . . . . . . . . . . 15 92 3.5.2 Local Name Space (LNS) Identifier . . . . . . . . . . . 16 93 3.5.3 Device ID . . . . . . . . . . . . . . . . . . . . . . . 16 94 3.6 IFA Network Overhead . . . . . . . . . . . . . . . . . . . . 16 95 3.7 IFA Analytics . . . . . . . . . . . . . . . . . . . . . . . 17 96 3.8 IFA Packet Format . . . . . . . . . . . . . . . . . . . . . 17 97 3.8.1 IFA Packet Format with TS Flag Set . . . . . . . . . . . 18 98 3.8.1 TCP/UDP Packet . . . . . . . . . . . . . . . . . . . . . 19 99 3.8.2 VxLAN Packet . . . . . . . . . . . . . . . . . . . . . . 21 100 3.8.3 GRE Packet . . . . . . . . . . . . . . . . . . . . . . . 23 101 3.8.4 Geneve Packet . . . . . . . . . . . . . . . . . . . . . 25 102 3.8.5 IPinIP Packet . . . . . . . . . . . . . . . . . . . . . 27 103 3.8.6 IPv6 Extension Headers with IFA . . . . . . . . . . . . 29 104 3.8.6 IP AH/ESP/WESP Packet . . . . . . . . . . . . . . . . . 31 105 3.9 IFA Load Balancing . . . . . . . . . . . . . . . . . . . . . 34 106 4. Interoperability Considerations . . . . . . . . . . . . . . . . 34 107 5. Security Considerations . . . . . . . . . . . . . . . . . . . . 34 108 6. References . . . . . . . . . . . . . . . . . . . . . . . . . . 34 109 6.1 Normative References . . . . . . . . . . . . . . . . . . . 34 110 6.2 Informative References . . . . . . . . . . . . . . . . . . . 35 111 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 35 112 Appendix A . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 113 A.1 Probe Marker . . . . . . . . . . . . . . . . . . . . . . . . 36 114 A.2 DSCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 115 A.3 IP Options . . . . . . . . . . . . . . . . . . . . . . . . . 36 116 A.4 IPv4 Identification or Reserved Flag . . . . . . . . . . . . 37 118 1. Introduction 120 This document describes Inband Flow Analyzer (IFA) which is a 121 mechanism to mark packets in a flow to enable the collection of 122 metadata regarding the analyzed flow. IFA defines an IFA header to 123 mark the flow and direct the collection of analyzed metadata per 124 marked packet per hop across a network. The ability to mark a packet 125 using an IFA OAM header can also be leveraged to create synthetic 126 flows meant for network data collection. This document describes a 127 mechanism that may be used to monitor live traffic and/or create 128 synthetic flows. This document also describes IFA zones, IFA 129 reports, and IFA metadata. IFA does not require changes to protocol 130 headers in order to collect metadata or analyze flows. IFA puts 131 minimal requirements on switching silicon. 133 1.1 Terminology 135 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 136 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 137 document are to be interpreted as described in RFC 2119 [RFC2119]. 139 IFA: Inband Flow Analyzer 141 MTU: Maximum Transmit Unit 143 1.2 Scope 145 This document describes IFA deployment, the type of traffic that is 146 supported, header definitions, analytics, and data path functions. 148 IFA deployment involves defining an IFA zone and understanding the 149 requirements in terms of traffic overhead and points of data 150 collection. Given that IFA provides the ability to perform local 151 analytics on the collected data, this document describes the scope of 152 the analytics function as well. The scope of IFA is from an end 153 station and/or ToR, through any/all nodes in the network, and 154 terminating in a network switch and/or an end station. 156 IFA can create a synthetic stream of traffic and use it to collect 157 metadata along the path. This sampled stream is later discarded. IFA 158 can also insert metadata on a per packet basis in live traffic. 159 Inband insertion of metadata can be done within the payload or via 160 tail stamping. 162 This draft defines an identification mechanism using a dedicated 163 protocol type in the IP header for identifying IFA. 165 1.3 Applicability 166 IFA is capable of providing traffic analysis in an encapsulation- 167 agnostic manner. Simple TCP and UDP flows, as well as tunneled flows, 168 can be monitored. IFA can be enabled on an end station, or it can be 169 enabled just on network switches. Enabling IFA on an end station 170 provides better scalability and visibility by monitoring intra end 171 station or inter end station traffic. IFA performs best when there is 172 hardware assistance for deriving the flow metadata in the data path. 173 This document describes data path functions for IFA. 175 1.4 Motivation 177 The main motivation for IFA is to collect analyzed metadata from 178 packets within a flow for a given application. The definition of the 179 IFA header ensures that it works for any IP packet, and with minimal 180 impact on hardware performance. 182 2. Requirements 184 IFA requirements are defined with operational efficiency, performance 185 of the network, and cost of hardware in mind. 187 2.1 Encapsulation Requirements 189 IFA packets MUST be clearly marked and identifiable so that a 190 networking element in the flow path can insert metadata or perform 191 other IFA operations. 193 IFA packets need to be easily identified for performance reasons. IFA 194 packet identification MUST be the same for all the IP packet types. 195 This means that expensive hardware modifications are not needed for 196 supporting new protocol types. 198 Since IFA packet processing is a data path function, the IFA header 199 MUST keep the processing overhead minimal. Simple parsing in the 200 switch hardware with localized read/write fields in IFA header will 201 optimize the switch performance and cost. 203 A single IFA encapsulation MUST support IPv4 and IPv6 protocol types 204 for tunneled and non-tunneled packets, preserving the fields used for 205 load balancing hash computation. 207 IFA MAY support a checksum for the entire IFA metadata stack instead 208 of a checksum per metadata element. 210 2.2 Operational Requirements 212 IFA MUST preserve the flow path across the network. 214 IFA MUST incur minimal traffic overhead. 216 IFA MUST provide an option to clone and truncate a packet to avoid 217 disrupting the PMTU discovery of a network. 219 Cloning SHOULD be supported. Sampling of cloned traffic MUST be at a 220 sampled ratio to keep the network overhead to a minimum. 222 IFA MUST provide the ability to insert metadata on cloned traffic. 224 IFA MUST provide the ability to insert metadata on live traffic. 226 IFA MAY provide the ability to specify checksum validation on the IFA 227 header and metadata. 229 IFA MUST provide the ability to define a zone using hop count. 231 IFA MUST provide the ability for a networking element to perform 232 metadata insertion in the payload. 234 IFA MAY provide the ability for networking element to insert metadata 235 as tail stamping. 237 IFA MUST be able to support an IFA zone name space, also referred to 238 as a global name space. 240 IFA MUST be able to support a per hop name space, also referred to as 241 a local name space. 243 IFA MAY be able to support fragmentation of metadata. Fragmentation 244 is needed to support a large number of hops in the network path. 246 2.3 Cost and Performance Requirements 248 The IFA header and metadata MUST be treated as foreign data present 249 in the application data. IFA SHOULD be able to insert or strip the 250 IFA header and metadata without modifying the layer 4 headers. This 251 will help keep the cost of hardware down with no degradation in 252 performance. 254 IFA MUST support the ability to clone and/or truncate, live traffic 255 for IFA metadata insertion. This is needed for PMTU protocols to work 256 within the IFA zone. 258 The IFA header MUST provide the ability to differentiate between a 259 cloned packet and an original packet. This is needed for hardware to 260 be able to identify and filter the cloned traffic at the edge of an 261 IFA zone. 263 IFA encapsulation MUST provide mechanism to avoid impacting the parse 264 depth of hardware for packet processing. 266 IFA MUST NOT require pre-allocation for reserving the space in a 267 packet. The overhead of managing reserved space in a packet can 268 result in performance degradation. 270 3. IFA Operations 272 IFA performs flow analysis, and possible actions on the flow data, 273 inband. Once a flow is enabled for analysis, a node with the role of 274 "Initiator" makes a copy of the flow or samples the live traffic 275 flow, or tags a live traffic flow for analysis and data collection. 276 Copying of a flow is done by sampling or cloning the flow. These new 277 packets are representative packets of the original flow and possess 278 the exact same characteristics as the original flow. This means that 279 IFA packets traverse the same path in the network and same queues in 280 the networking element as the original packet would. Figure 1 shows 281 the IFA based Telemetry Framework. The terminating node is 282 responsible for terminating the IFA flow by summarizing the metadata 283 of the entire path and sending it to a Collector. 285 +----------+ 286 | | 287 |Collector |--------------+ 288 | | | 289 +----------+ | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 +--------------+ +------------+ +----+-----------+ 299 |Initiator Node| |Transit Node| |Terminating Node| 300 | +------+ | | +------+ | | +------+ | 301 | | IFA | |------->| | IFA | |------->| | IFA | | 302 | +------+ |IFA flow| +------+ |IFA flow| +------+ | 303 +--------------+ +------------+ +----------------+ 305 Figure 1 IFA Zone Framework without fragmentation 306 +----------+ 307 | | 308 |Collector |<-------------+ 309 +----->| | | 310 | +----------+ | 311 | | 312 | | 313 | | 314 | | 315 | | 316 | | 317 | | 318 | | 319 +--------------+ | +------------+ +----+----------+ 320 |Initiator Node| | |Transit Node| |Fragmenter Node| 321 | +------+ | | | +------+ | | +------+ | 322 | | IFA | |------->| | IFA | |------->| | IFA | | 323 | +------+ |IFA flow| +------+ |IFA flow| +------+ | 324 +--------------+ | +------------+ +---------------+ 325 | |IFA 326 | |flow 327 | v 328 | +---------------+ +------+-----+ 329 | |Terminator Node| |Transit Node| 330 +--| +------+ | | +------+ | 331 | | IFA | |<-------| | IFA | | 332 | +------+ |IFA flow| +------+ | 333 +---------------+ +------------+ 334 Figure 2 IFA Zone Framework with metadata fragmentation 335 3.1 IFA Zones 337 An IFA zone is the domain of interest where IFA monitoring is 338 enabled. An IFA zone MUST have designated IFA function nodes. An IFA 339 zone can be controlled by setting an appropriate TTL value in the L3 340 header. Initiating and Terminating function nodes are always at the 341 edge of the IFA zone. Internal nodes in the IFA zone are always 342 Transit function nodes. 344 3.2 IFA Function Nodes 346 There are three types of IFA functional nodes with respect to a 347 specific or set of flows. Each node MAY perform metadata 348 fragmentation function as well. 350 3.2.1 Initiating Function Node 352 An end station, a switch, or any other middleware can perform the IFA 353 initiating function. It is advantageous to keep this role closest to 354 the application to maximize flow visibility. An IFA initiating 355 function node performs the following functions for a flow: 357 - Samples the flow traffic of interest based on a configuration. 358 - Converts the traffic into an IFA flow by adding an IFA header to 359 each sample. 360 - Updates the packet with initiating function node metadata. 361 - MAY mandate a specific template ID metadata by all networking 362 elements. 363 - MAY mandate tail stamping of metadata by all networking elements. 365 3.2.2 Transit Function Node 367 An IFA transit node is responsible for inserting transit node 368 metadata in the IFA packets in the specified flow. 370 3.2.3 Terminating Function Node 372 An IFA terminating node is responsible for the following for a flow: 373 - Inserts terminating node metadata in an IFA packet. 374 - Performs a local analytics function on one or more segments of 375 metadata, e.g., threshold breach for residence time, congestion 376 notifications, and so on. 377 - Filters an IFA flow in case of cloned traffic. 378 - Sends a copy or report of the packet to collector. 379 - Removes the IFA headers and forwards the packet in case of live 380 traffic. 382 3.2.4 Metadata Fragmentation Function 383 There are cases where the size of metadata may grow too big for link 384 MTU or path MTU, or where it imposes excessive overhead for the 385 terminating function node to remove it. This is specially true in 386 networks with a large number of hops between initiator function node 387 and terminating function node. This is also true where the size of 388 per hop metadata itself is large. For such cases, IFA defines a 389 metadata fragmentation function. Metadata fragmentation function 390 allows, removal of metadata from the packet and send a copy/report of 391 the packet to collector. Correlation of metadata fragments and 392 recreation of metadata stack for the entire flow path is done by the 393 collector. 395 There is no dedicated node performing the metadata fragmentation 396 function. As an IFA packet traverses the hops in an IFA zone, any 397 node MAY detect the need to fragment the packet's metadata stack and 398 perform metadata fragmentation. 400 Metadata fragmentation is done if the IFA header in the packet has 401 "MDF" bit set and the current length of the metadata would exceed the 402 maximum length after the addition of metadata by the current node. A 403 node MAY create a copy of the packet or create an IFA report, remove 404 the existing metadata stack from the packet, insert its own metadata, 405 and finally forward the packet. A node MAY also update the IFA MDF 406 (Meta Data Fragment) header fragment identifier, current length, IP 407 length, and IP header checksum. 409 The maximum length in an IFA header, if set to "0", MAY trigger the 410 metadata fragmentation special function. This mechanism can be used 411 to generate IFA reports at each hop and never insert metadata in the 412 packet. If maximum length is set to "0", a node MAY ONLY create an 413 IFA report or copy of the packet including its own metadata. A node 414 MUST NOT update the IFA MD header current length, IP length, or 415 insert metadata in the IFA packet. The node MUST increment the IFA 416 MDF header fragment identifier field. 418 3.3 IFA Cloning, Truncation, and Drop 420 IFA allows cloning of live traffic. It is expected that cloned 421 traffic will have the same network path characterization as the 422 original traffic i.e. follow the same network path, use the same 423 queues etc. 425 Cloned traffic can be truncated to accommodate the PMTU of the IFA 426 zone. 428 Cloned traffic MUST be dropped by the terminating function node of 429 the IFA zone. 431 3.4 IFA Header 433 The IFA header is described below. An experimental IP protocol number 434 is used in the IP header to identify an IFA packet. The IP header 435 protocol type field is copied into the IFA header NextHdr field for 436 hardware to correctly interpret the layer 4 header. 438 0 1 2 3 439 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 440 IPv4 Header: 441 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 442 |Version| IHL |Type of Service| Total Length | 443 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 444 | Identification |Flags| Fragment Offset | 445 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 446 | Time to Live | Protocol = IFA| Header Checksum | 447 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 448 | Source IPv4 Address | 449 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 450 | Destination IPv4 Address | 451 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 452 or 453 IPv6 Header: 454 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 455 |Version| Traffic Class | Flow Label | 456 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 457 | Payload Length |Next Hdr = IFA | Hop Limit | 458 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 459 | | 460 + + 461 | | 462 + Source IPv6 Address + 463 | | 464 + + 465 | | 466 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 467 | | 468 + + 469 | | 470 + Destination IPv6 Address + 471 | | 472 + + 473 | | 474 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 476 IFA Header: 477 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 478 |Ver=2.0| GNS |NextHdr = IP_xx|R|R|R|M|T|I|T|C| Max Length | 479 | | | | | | |F|S| |A| | | 480 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 482 Figure 3 IFA 2.0 Header Format 484 (1) Version (4 bits) - Specifies the version of IFA header. 486 (2) GNS (4 bits) - Global Name Space. Specifies the IFA zone scoped 487 name space for IFA metadata. 489 (3) Protocol Type (8 bits) - IP Header protocol type. This is copied 490 from the IP header. 492 (4) Flags (8 bits) 493 0: R - Reserved. MUST be initialized to 0 on transmission and 494 ignored on receipt. 496 1: R - Reserved. MUST be initialized to 0 on transmission and 497 ignored on receipt. 499 2: R - Reserved. MUST be initialized to 0 on transmission and 500 ignored on receipt. 502 3: MF - Metadata Fragment. Indicates the presence of the 503 optional metadata fragment header. This header is inserted and 504 initialized by the initiator node. If the MF bit is set, nodes 505 in the path MAY perform fragmentation of metadata stack if the 506 current length exceeds the maximum length. 508 4: TS - Tail Stamp. Indicates the IFA zone is requiring tail 509 stamping of metadata. 511 5: I - Inband. Indicates this is live traffic. Strip and forward 512 MUST be performed by the terminator node if this bit is set. 514 6: TA - Turn Around. Indicates that the IFA packet needs to be 515 turned around at the terminating node of the IFA zone and sent 516 back to source IP address. This bit MAY be used for probe 517 packets where probes are collection bidirectional information in 518 the network. This is same as echo request and echo reply. A 519 packet MAY be generated with TA bit set and collects metadata in 520 one direction and after it is turned around by the terminating 521 function node, collects metadata in the reverse direction. 523 7: C - Checksum - Indicates the presence of the optional 524 checksum header. The checksum MUST be computed and updated for 525 the IFA header and metadata at each node that modified the 526 header and/or metadata. A node MAY perform checksum validation 527 before updating the checksum. 529 (5) Max Length (8 bits) - Specifies the maximum allowed length of the 530 metadata stack in multiples of 4 octets. This field is initialized by 531 the initiator node. Each node in the path MUST compare the current 532 length with the max length, and if the current length equals or 533 exceeds the max length, the transit nodes MUST stop inserting 534 metadata. 536 3.4.1 IFA Metadata Header 538 The IFA metadata header is always present. 540 0 1 2 3 541 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 542 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 543 | Request Vector| Action Vector | Hop Limit | Current Length| 544 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 546 Figure 4 IFA Metadata Header Format 548 Request Vector (8 bits) - This vector specifies the presence of 549 fields as specified by GNS. Fields are always 4-octet aligned. This 550 field can be made extensible by defining a new GNS for an IFA zone. 552 Action Vector (8 bits) - This vector specifies node-local or end-to- 553 end action on the IFA packets. 555 Hop Limit (8 bits) - Specifies the maximum allowed hops in an IFA 556 zone. This field is initialized by the initiator node. The hop limit 557 MUST be decremented at each hop. If the incoming hop limit is 0, 558 current nodes MUST NOT insert metadata. A value of 0xFF means that 559 the Hop limit check MUST be ignored. 561 Current Length (8 bits) - Specifies the current length of the 562 metadata in multiples of 4 octets. 564 3.4.2 IFA Checksum Header 566 The IFA checksum header is optional. Presence of the checksum header 567 is indicated by the C bit in the flags field of the IFA header. 569 0 1 2 3 570 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 571 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 572 | Checksum | Reserved | 573 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 575 Figure 5 IFA Checksum Header Format 577 Checksum (16 bits) - The checksum covers the IFA header and metadata 578 stack. Initiator function node MAY compute the full checksum 579 including IFA header and metadata. Other nodes MAY compute delta 580 checksum for the inserted/deleted metadata. 582 Reserved (16 bits) - Reserved. MUST be initialized to 0 on 583 transmission and ignored on receipt. 585 3.4.3 IFA Metadata Fragmentation (MF) Header 587 The IFA metadata fragmentation (MF) header is optional. Presence of 588 the fragmentation header is indicated by the MF bit in the flags 589 field of the IFA header. 591 0 1 2 3 592 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 593 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 594 | Packet ID | MF ID |L| 595 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 597 Figure 6 IFA MF Header Format 599 Packet ID (26 bits) - Packet identification value generated by the 600 initiator node. This value is node scoped. 602 Metadata Fragment ID (5 bits) - The initiator MUST initialize this 603 value to 0. A node performing metadata fragmentation function MUST 604 increment the value by 1. 606 L (1 bit) - This bit is set by the node creating the last metadata 607 fragment. This will ALWAYS be the terminating function node. If 608 incoming hop limit is "0", terminating function node will still 609 generate copy/report of the packet and MUST set L bit. Collector MUST 610 implement mechanism to recover from lost packets/reports with L bit 611 set. 613 The MF header is a fixed overhead of 4 octets per packet. A network 614 operator MUST identify the need for using IFA metadata fragmentation. 615 The following network conditions can be considered: 617 - If an IFA packet may exceed the link or path MTU of the flow path 619 - If there are large number of hops in a flow path and MAY trigger 620 link or path MTU breach 622 - If the length of metadata creates excessive overhead for 623 terminating function node to delete the metadata. 625 - If each hop needs to generate its own IFA report (postcard 626 mechanism) 628 With 26 bits of packet id, a maximum datagram lifetime (MDL) of 3 629 seconds, and an average Internet mix (IMIX) packet size of 512 bytes, 630 we get 183.25 Gbps of IFA traffic bit rate per node before the packet 631 identifier wraps around. The collector can use [device id, packet id, 632 MF id, L] to rebuild the fragmented packet. 634 5 bits of MF id will support 32 metadata fragments. 636 3.5 IFA Metadata 638 The IFA metadata is the information inserted by each hop after the 639 IFA header. The IFA metadata can be inserted at the following 640 offsets: 642 - Payload Stamping: Immediately after the layer 4 header. This is the 643 default setting. 644 - Tail Stamping: After the end of the packet. This is controlled by 645 the TS bit in the flags field of the IFA header. 647 0 1 2 3 648 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 649 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 650 | LNS | Device ID | 651 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 652 | | 653 | | 654 ~ LNS/GNS defined metadata (contd) ~ 655 . . 656 . . 657 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 659 Figure 7 IFA Metadata Format 661 The IFA metadata header contains a set fields as defined by the name 662 space identifier. Two types of name space identifiers are proposed. 664 3.5.1 Global Name Space (GNS) Identifier 666 A Global Name Space (GNS) is specified in the IFA header by the 667 initiator node. The scope of a GNS is an IFA zone. All networking 668 elements in an IFA zone MUST insert metadata as per the GNS ID 669 specified in the IFA header. This is defined as the "Uniform Mode" of 670 deployment. 672 A GNS value of 0xF indicates that metadata in an IFA zone is defined 673 by the LNS of each hop. 675 The advantage of using the uniform mode is having a simple and 676 uniform metadata stack. This means less load on a collector for 677 parsing. 679 The disadvantage is that metadata fields are supported based on the 680 least capable networking element in the IFA zone. 682 3.5.2 Local Name Space (LNS) Identifier 684 A Local Name Space (LNS) is specified in the metadata header. A GNS 685 value of 0xF in the IFA header indicates the presence of an LNS. This 686 is defined as the "Non-uniform Mode" of deployment. 688 A switch pipeline MUST parse the GNS field in the IFA header. The 689 parsing result will dictate the name space ID that the hop needs to 690 comply with. 692 The advantage of using the non-uniform mode is having a flexible 693 metadata stack. This allows each hop to include the most relevant 694 data for that hop. 696 The disadvantage is more complex parsing by a collector. 698 3.5.3 Device ID 700 A 28-bit unique identifier for the device inserting the metadata. If 701 a GNS other than 0xF is present, then the device ID can be expanded 702 to a 32 bit value. This is to support including an IPv4 loopback 703 address as a Device ID. 705 3.6 IFA Network Overhead 707 A common problem associated with inserting metadata on a per packet 708 per flow basis is the amount of traffic overhead on the network. IFA 709 2.0 is defined to minimize the overhead on the network. 711 IFA Base Header : 4 octets 712 IFA Metadata Header : 4 octets 713 IFA Checksum Header : 4 octets 714 IFA Fragmentation Header : 4 octets 716 Minimum Overhead: 717 IFA header : 4 octets 718 IFA Metadata Header : 4 octets 720 Total Min Overhead : 8 octets per packet 722 3.7 IFA Analytics 724 There are two kinds of actions considered in this proposal. 726 (1) Action Bit MAP in IFA Header - This is encoded in the IFA 727 header. Each node in the path MAY use the action bitmap to insert or 728 not insert the metadata based on exceeding a locally-specified 729 threshold. Not inserting the metadata is indicated by setting the 730 field value to -1 (all 1s). 732 (2) Terminating Node Actions - A terminating node may decide to 733 perform threshold or other actions on the set of metadata in the 734 packet. This information is not encoded in the IFA header. 736 3.8 IFA Packet Format 738 The IFA header is treated as a layer 3 extension header. IFA header 739 and metadata stack length is reflected in IP total length field. IPv6 740 extension headers are ordered. The IFA header MUST be the last 741 extension header in the IPv6 extension header chain. Similarly in 742 case of IPv4 AH/ESP/WESP extension headers, IFA header MUST be the 743 last extension header. 745 0 1 2 3 746 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 747 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 748 ~ ~ 749 | IP Header | 750 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 751 ~ ~ 752 | IFA Header | 753 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 754 ~ ~ 755 | Layer 4 Header | 756 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 757 ~ ~ 758 | IFA Metadata Header | 759 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 760 ~ ~ 761 | IFA Metadata Stack | 762 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 763 ~ ~ 764 | Payload | 765 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 766 Figure 8 IFA Packet Format 768 3.8.1 IFA Packet Format with TS Flag Set 770 In case the Tail Stamp flag is set in the IFA header, the IFA 771 metadata header and metadata stack are inserted at the end of the 772 packet just before the FCS. Each node inserts metadata at the bottom 773 of IFA metadata stack. 775 One of the key advantages of using TS is to support legacy devices 776 and/or appliances that need to look at the layer 5 data. The IP 777 length and IP header checksum are updated at each hop inserting 778 metadata. This is the same as without the TS flag. 780 0 1 2 3 781 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 782 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 783 ~ ~ 784 | IP Header | 785 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 786 ~ ~ 787 | IFA Header | 788 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 789 ~ ~ 790 | Layer 4 | 791 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 792 ~ ~ 793 | Payload | 794 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 795 ~ ~ 796 | IFA Metadata Stack | 797 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 798 ~ ~ 799 | IFA Metadata Header | 800 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 801 | FCS | 802 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 804 Figure 9 IFA Packet Format with TS 806 3.8.1 TCP/UDP Packet 807 0 1 2 3 808 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 809 IPv4 Header: 810 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 811 |Version| IHL |Type of Service| Total Length | 812 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 813 | Identification |Flags| Fragment Offset | 814 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 815 | Time to Live | Protocol = IFA| Header Checksum | 816 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 817 | Source IPv4 Address | 818 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 819 | Destination IPv4 Address | 820 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 821 or 822 IPv6 Header: 823 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 824 |Version| Traffic Class | Flow Label | 825 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 826 | Payload Length |Next Hdr = IFA | Hop Limit | 827 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 828 | | 829 + + 830 | | 831 + Source IPv6 Address + 832 | | 833 + + 834 | | 835 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 836 | | 837 + + 838 | | 839 + Destination IPv6 Address + 840 | | 841 + + 842 | | 843 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 845 IFA Header: 846 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 847 |Ver=2.0| GNS |NextHdr = IP_xx|R|R|R|M|T|I|T|C| Max Length | 848 | | | | | | |F|S| |A| | | 849 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 851 TCP Header: 852 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 853 | Source Port | Destination Port | 854 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 855 | Sequence Number | 856 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 857 | Acknowledgment Number | 858 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 859 | Data | |U|A|P|R|S|F| | 860 | Offset| Reserved |R|C|S|S|Y|I| Window | 861 | | |G|K|H|T|N|N| | 862 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 863 | Checksum | Urgent Pointer | 864 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 865 | Options | Padding | 866 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 868 IFA Metadata Header: 869 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 870 ~ ~ 871 | IFA Metadata Header | 872 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 874 IFA Metadata Stack: 875 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 876 ~ ~ 877 | IFA Metadata Stack | 878 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 880 TCP Payload: 881 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 882 ~ ~ 883 | data | 884 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 886 Figure 10 TCP/UDP IFA Packet Format 888 3.8.2 VxLAN Packet 889 0 1 2 3 890 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 891 IPv4 Header: 892 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 893 |Version| IHL |Type of Service| Total Length | 894 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 895 | Identification |Flags| Fragment Offset | 896 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 897 | Time to Live | Protocol = IFA| Header Checksum | 898 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 899 | Source IPv4 Address | 900 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 901 | Destination IPv4 Address | 902 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 903 or 904 IPv6 Header: 905 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 906 |Version| Traffic Class | Flow Label | 907 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 908 | Payload Length |Next Hdr = IFA | Hop Limit | 909 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 910 | | 911 + + 912 | | 913 + Source IPv4 Address + 914 | | 915 + + 916 | | 917 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 918 | | 919 + + 920 | | 921 + Destination IPv6 Address + 922 | | 923 + + 924 | | 925 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 927 IFA Header: 928 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 929 |Ver=2.0| GNS |NextHdr = IP_xx|R|R|R|M|T|I|T|C| Max Length | 930 | | | | | | |F|S| |A| | | 931 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 933 Outer UDP Header: 934 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 935 | Source Port | Dest Port = VXLAN Port | 936 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 937 | UDP Length | UDP Checksum | 938 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 940 IFA Metadata Header: 941 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 942 ~ ~ 943 | IFA Metadata Header | 944 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 946 IFA Metadata Stack: 947 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 948 ~ ~ 949 | IFA Metadata Stack | 950 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 952 VXLAN Header: 953 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 954 |R|R|R|R|I|R|R|R| Reserved | 955 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 956 | VXLAN Network Identifier (VNI) | Reserved | 957 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 958 ~ ~ 959 | data | 960 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 962 Figure 11 VxLAN IFA Packet Format 964 3.8.3 GRE Packet 965 0 1 2 3 966 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 967 IPv4 Header: 968 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 969 |Version| IHL |Type of Service| Total Length | 970 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 971 | Identification |Flags| Fragment Offset | 972 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 973 | Time to Live | Protocol = IFA| Header Checksum | 974 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 975 | Source IPv4 Address | 976 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 977 | Destination IPv4 Address | 978 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 979 or 980 IPv6 Header: 981 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 982 |Version| Traffic Class | Flow Label | 983 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 984 | Payload Length |Next Hdr = IFA | Hop Limit | 985 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 986 | | 987 + + 988 | | 989 + Source IPv6 Address + 990 | | 991 + + 992 | | 993 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 994 | | 995 + + 996 | | 997 + Destination IPv6 Address + 998 | | 999 + + 1000 | | 1001 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1003 IFA Header: 1004 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1005 |Ver=2.0| GNS |NextHdr = IP_xx|R|R|R|M|T|I|T|C| Max Length | 1006 | | | | | | |F|S| |A| | | 1007 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1009 GRE Header: 1010 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1011 |C| Reserved0 | Ver | Protocol Type | 1012 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1013 | Checksum (optional) | Reserved1 (Optional) | 1014 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1016 IFA Metadata Header: 1017 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1018 ~ ~ 1019 | IFA Metadata Header | 1020 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1022 IFA Metadata Stack: 1023 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1024 ~ ~ 1025 | IFA Metadata Stack | 1026 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1028 GRE Payload: 1029 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1030 ~ ~ 1031 | data | 1032 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1033 Figure 12 GRE IFA Packet Format 1035 3.8.4 Geneve Packet 1036 0 1 2 3 1037 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 1038 IPv4 Header: 1039 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1040 |Version| IHL |Type of Service| Total Length | 1041 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1042 | Identification |Flags| Fragment Offset | 1043 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1044 | Time to Live | Protocol = IFA| Header Checksum | 1045 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1046 | Source IPv4 Address | 1047 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1048 | Destination IPv4 Address | 1049 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1050 or 1051 IPv6 Header: 1052 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1053 |Version| Traffic Class | Flow Label | 1054 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1055 | Payload Length |Next Hdr = IFA | Hop Limit | 1056 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1057 | | 1058 + + 1059 | | 1060 + Source IPv6 Address + 1061 | | 1062 + + 1063 | | 1064 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1065 | | 1066 + + 1067 | | 1068 + Destination IPv6 Address + 1069 | | 1070 + + 1071 | | 1072 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1074 IFA Header: 1075 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1076 |Ver=2.0| GNS |NextHdr = IP_xx|R|R|R|M|T|I|T|C| Max Length | 1077 | | | | | | |F|S| |A| | | 1078 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1080 Outer UDP Header: 1081 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1082 | Source Port = xxxx | Dest Port = Geneve Port | 1083 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1084 | UDP Length | UDP Checksum | 1085 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1087 IFA Metadata Header: 1088 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1089 ~ ~ 1090 | IFA Metadata Header | 1091 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1093 IFA Metadata Stack: 1094 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1095 ~ ~ 1096 | IFA Metadata Stack | 1097 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1099 Geneve Header: 1100 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1101 |Ver| Opt Len |O|C| Rsvd. | Protocol Type | 1102 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1103 | Virtual Network Identifier (VNI) | Reserved | 1104 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1105 ~ ~ 1106 | Variable Length Options | 1107 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1108 ~ ~ 1109 | data | 1110 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1112 Figure 13 Geneve IFA Packet Format 1114 3.8.5 IPinIP Packet 1115 0 1 2 3 1116 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 1117 IPv4 Header: 1118 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1119 |Version| IHL |Type of Service| Total Length | 1120 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1121 | Identification |Flags| Fragment Offset | 1122 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1123 | Time to Live | Protocol = IFA| Header Checksum | 1124 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1125 | Source IPv4 Address | 1126 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1127 | Destination IPv4 Address | 1128 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1129 or 1130 IPv6 Header: 1131 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1132 |Version| Traffic Class | Flow Label | 1133 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1134 | Payload Length |Next Hdr = IFA | Hop Limit | 1135 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1136 | | 1137 + + 1138 | | 1139 + Source IPv6 Address + 1140 | | 1141 + + 1142 | | 1143 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1144 | | 1145 + + 1146 | | 1147 + Destination IPv6 Address + 1148 | | 1149 + + 1150 | | 1151 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1153 IFA Header: 1154 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1155 |Ver=2.0| GNS |NextHdr = IP_xx|R|R|R|M|T|I|T|C| Max Length | 1156 | | | | | | |F|S| |A| | | 1157 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1159 Inner IP Header: 1160 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1161 ~ ~ 1162 | IPv4 or IPv6 Header | 1163 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1165 IFA Metadata Header: 1166 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1167 ~ ~ 1168 | IFA Metadata Header | 1169 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1171 IFA Metadata Stack: 1172 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1173 ~ ~ 1174 | IFA Metadata Stack | 1175 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1177 Inner IP L4 and Payload: 1178 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1179 ~ ~ 1180 | data | 1181 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1183 Figure 14 IPinIP IFA Packet Format 1185 3.8.6 IPv6 Extension Headers with IFA 1187 The IFA header is always the last extension header in the IPv6 1188 extension header chain. The last extension header's next header field 1189 is stored in the IFA next header field and is replaced by the IFA 1190 protocol value. 1192 IPv6 Header: 1193 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1194 |Version| Traffic Class | Flow Label | 1195 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1196 | Payload Length | Next Hdr = 43 | Hop Limit | 1197 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1198 ~ Source IPv6 Address ~ 1199 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1200 ~ Destination IPv6 Address ~ 1201 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1202 | Next Hdr = 60 | Extension Header | 1203 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1204 | Next Hdr = 44 | Extension Header | 1205 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1206 | Next Hdr = IFA| Extension Header | 1207 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1209 IFA Header: 1210 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1211 |Ver=2.0| GNS |NextHdr = IP_xx|R|R|R|M|T|I|T|C| Max Length | 1212 | | | | | | |F|S| |A| | | 1213 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1215 Layer 4 Header: 1216 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1217 ~ ~ 1218 | Layer 4 | 1219 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1221 IFA Metadata Header: 1222 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1223 ~ ~ 1224 | IFA Metadata Header | 1225 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1227 IFA Metadata Stack: 1228 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1229 ~ ~ 1230 | IFA Metadata Stack | 1231 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1233 UDP/TCP Payload: 1234 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1235 ~ ~ 1236 | data | 1237 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1239 Figure 15 IPv6 Extension Header with IFA Packet Format 1241 3.8.6 IP AH/ESP/WESP Packet 1243 An AH, ESP, or WESP header is treated as a chained header in IPv4. 1244 The IPv4 protocol field is replaced by the AH/ESP/WESP protocol value 1245 and the IPv4 protocol field value is stored in the AH/ESP/WESP next 1246 header field. 1248 The IFA header is ALWAYS placed as the last header in a header chain. 1249 In case of ESP/WESP where layer 4 and payload is encrypted, IFA 1250 metadata stack is placed immediately after IFA header. 1252 IPv4: AH Transport Mode 1253 -------------------------------------------------------------- 1254 | IP hdr | AH |IFA hdr|TCP|IFA MD Hdr| IFA MD stack| Data | 1255 -------------------------------------------------------------- 1256 |<------->| |<----->| |<---------------------->| | 1257 |<------------- mutable field processing ---------->| | 1258 | |<-->| |<->| |<------>| 1259 | |<------------- immutable fields ----------------->| 1260 |<-----------authenticated except for mutable fields-------->| 1262 IPv6: AH Transport Mode 1263 ---------------------------------------------------------------- 1264 | |hop-by-hop, dest, | |IFA| |IFA MD|IFA MD| | 1265 |IP hdr|routing, fragment | AH |hdr|TCP| hdr | stack| Data | 1266 ---------------------------------------------------------------- 1267 |<----------------------->| |<->| |<----------->| | 1268 |<---------- mutable field processing -------------->| | 1269 | |<-->| |<->| |<------->| 1270 | |<--------immutable fields---------->| 1271 |<-------- authenticated except for mutable fields ----------->| 1273 Figure 16 IP AH Transport Mode IFA Packet Format 1275 IPv4: AH Tunnel Mode 1276 ---------------------------------------------------------------- 1277 | | |IFA| Orig IP |IFA MD| IFA MD | | | 1278 |new IP header| AH |hdr| hdr | hdr | stack |TCP| Data | 1279 ---------------------------------------------------------------- 1280 |<----------->| |<->| |<------------->| | | 1281 |<------------- mutable field processing ------->| | | 1282 | |<-->| |<------->| |<----------->| 1283 | |<------------- immutable fields --------------->| 1284 |<--authenticated except for mutable fields in the new IP hdr->| 1286 IPv6: AH Tunnel Mode 1287 ---------------------------------------------------------------- 1288 |new IP header| |IFA| Orig IP |IFA MD| IFA MD | | | 1289 | +extn hdrs | AH |hdr| hdr | hdr | stack |TCP| Data | 1290 ---------------------------------------------------------------- 1291 |<----------->| |<->| |<------------->| | | 1292 |<------------- mutable field processing ------->| | | 1293 | |<-->| |<------->| |<----------->| 1294 | |<------------- immutable fields --------------->| 1295 |<--authenticated except for mutable fields in the new IP hdr->| 1297 Figure 17 IP AH Tunnel Mode IFA Packet Format 1299 IPv4: ESP Transport Mode 1300 -------------------------------------------------------------- 1301 | IP hdr | ESP |IFA hdr|IFA MD Hdr| IFA MD stack|TCP| Data | 1302 -------------------------------------------------------------- 1303 |<------->| |<------------------------------>| | 1304 |<------------ mutable field processing -------->| | 1305 | |<--->| |<--------->| 1306 | |<-------------- immutable fields ---------------->| 1307 |<------------ encrypted except for mutable fields --------->| 1309 IPv6: ESP Transport Mode 1310 ---------------------------------------------------------------- 1311 | |hop-by-hop, dest, | |IFA|IFA MD|IFA MD| | | 1312 |IP hdr|routing, fragment | ESP|hdr| hdr | stack|TCP| Data | 1313 ---------------------------------------------------------------- 1314 |<----------------------->| |<--------------->| | 1315 |<--------- mutable field processing ----------->| | 1316 | |<-->| |<----------->| 1317 | |<--------immutable fields---------->| 1318 |<---------- encrypted except for mutable fields ------------->| 1320 Figure 18 IP ESP Transport Mode IFA Packet Format 1322 IPv4: ESP Tunnel Mode 1323 ---------------------------------------------------------------- 1324 | | |IFA|IFA MD| IFA MD | Orig IP | | | 1325 |new IP header| AH |hdr| hdr | stack | hdr |TCP| Data | 1326 ---------------------------------------------------------------- 1327 |<----------->| |<----------------->| | 1328 |<----- mutable field processing ----->| | 1329 | |<-->| |<--------------------->| 1330 | |<------------- immutable fields --------------->| 1331 |<-- encrypted except for mutable fields in the new IP hdr --->| 1333 IPv4: ESP Tunnel Mode 1334 ---------------------------------------------------------------- 1335 |new IP header| |IFA|IFA MD| IFA MD | Orig IP | | | 1336 |+extn headers| AH |hdr| hdr | stack | hdr |TCP| Data | 1337 ---------------------------------------------------------------- 1338 |<----------->| |<----------------->| | 1339 |<----- mutable field processing ----->| | 1340 | |<-->| |<--------------------->| 1341 | |<------------- immutable fields --------------->| 1342 |<-- encrypted except for mutable fields in the new IP hdr --->| 1343 Figure 19 IP AH Tunnel Mode IFA Packet Format 1345 3.9 IFA Load Balancing 1347 IFA changes the IP protocol field value to the IFA protocol number. 1348 The IP protocol field value is included in the hash computation. This 1349 will impact load balancing of flows. 1351 The forwarding plane MUST support reading the IP protocol field value 1352 stored in the IFA NextHDR field for hash computation. 1354 The layer 4 header is available at a fixed offset from the IFA header 1355 and is available for hash computation. 1357 Hash computation based on the layer 4 payload will depend on the 1358 length of the IFA metadata stack present. 1360 4. Interoperability Considerations 1362 Version 2.0 of this protocol specification is not backward compatible 1363 with version 1.0. 1365 5. Security Considerations 1367 A successful attack on an OAM protocol can prevent the detection of 1368 failures or anomalies, or create a false illusion of nonexistent 1369 ones. 1371 The metadata elements of IFA can be used by attackers to collect 1372 information about the network hops. 1374 Adding IFA headers or adding to IFA metadata can be used to consume 1375 resources within the path being monitored or by a collector. 1377 Adding IFA headers or adding to IFA metadata can be used to force 1378 exceeding the MTU for the path being monitored resulting in 1379 fragmentation and/or packet drops. 1381 IFA is expected to be deployed within controlled network domains, 1382 containing attacks to that controlled domain. Limiting or preventing 1383 monitoring or attacks using IFA requires limiting or preventing 1384 unauthorized access to the domain in which IFA is to be used, and 1385 preventing leaking IFA metadata beyond the controlled domain. 1387 6. References 1389 6.1 Normative References 1391 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1392 Requirement Levels", BCP 14, RFC 2119, March 1997. 1394 6.2 Informative References 1396 [RFC791] https://tools.ietf.org/html/rfc791 1398 [RFC6864] https://tools.ietf.org/html/rfc6864 1400 [RFC3514] https://tools.ietf.org/html/rfc3514 1402 [IFA 1.0] https://tools.ietf.org/html/draft-kumar-ifa-00 1404 Authors' Addresses 1406 Jai Kumar 1407 Broadcom Inc. 1408 Email: jai.kumar@broadcom.com 1410 Surendra Anubolu 1411 Broadcom Inc. 1412 Email: surendra.anubolu@broadcom.com 1414 John Lemon 1415 Broadcom Inc. 1416 Email: john.lemon@broadcom.com 1418 Rajeev Manur 1419 Broadcom Inc. 1420 Email: rajeev.manur@broadcom.com 1422 Hugh Holbrook 1423 Arista Networks 1424 Email: holbrook@arista.com 1426 Anoop Ghanwani 1427 Dell EMC 1428 Email: anoop.ghanwani@dell.com 1430 Dezhong Cai 1431 AliBaba Inc. 1432 Email: d.cai@alibaba-inc.com 1434 Heidi OU 1435 AliBaba Inc. 1437 Email: heidi.ou@alibaba-inc.com 1439 Yizhou Li 1440 Huawei Technologies 1441 EMail: liyizhou@huawei.com 1443 Appendix A 1444 Appendix A is for informational purposes only. The following options 1445 were considered for the IFA protocol. 1447 A.1 Probe Marker 1449 One of the challenges of using probe signatures in an IFA header is a 1450 false positive. 1452 The IFA version 2.0 header takes care of large header sizes and 1453 identification based on probe markers. Probe markers can cause false 1454 positives if there is a match on the first 64 bits of the layer 4 1455 payload. 1457 This approach is not a preferred approach, but is supported by this 1458 draft as a version 1.0 header. 1460 A.2 DSCP 1462 [RFC791] EXP/LU Pool 3 can be used for identifying IFA packets. CU 1463 bits can be used for identifying IFA packets. 1465 The problem with using TOS bits is that they are pervasively used in 1466 the network deployment and are responsible for affecting the 1467 forwarding decision. 1469 This approach is not supported or recommended by this draft. 1471 A.3 IP Options 1473 [RFC791] The IP options provide for control functions that are needed 1474 or useful in some situations but unnecessary for the most common 1475 communications. The IP options include provisions for timestamps, 1476 security, and special routing. 1478 There are various problems with this approach. 1479 (1) The IPv4 header size can become arbitrarily large with the 1480 presence of options. 1482 (2) A switch pipeline typically handles IP option packets as 1483 exception path processing and punts them to a host CPU. 1484 (3) IP options make the construction of firewalls cumbersome, and are 1485 typically disallowed or stripped at the perimeter of enterprise 1486 networks by firewalls. 1488 This approach is not supported or recommended by this draft. 1490 A.4 IPv4 Identification or Reserved Flag 1492 [RFC6864] [RFC3514] Another suggestion is to use the IPv4 1493 identification field or reserved flag. This suggestion is also 1494 discarded and not supported for the following reasons: 1496 [RFC6864] prohibits usage of id field for any other purposes. 1498 [RFC3514] prohibits using flags bit 0 for security reasons.