idnits 2.17.1 draft-ietf-mpls-lsp-ping-lag-multipath-03.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 : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (November 30, 2017) is 2338 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) ** Obsolete normative reference: RFC 7537 (Obsoleted by RFC 8029) -- Obsolete informational reference (is this intentional?): RFC 5226 (Obsoleted by RFC 8126) Summary: 1 error (**), 0 flaws (~~), 1 warning (==), 2 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Internet Engineering Task Force N. Akiya 3 Internet-Draft Big Switch Networks 4 Updates: 8029 (if approved) G. Swallow 5 Intended status: Standards Track Cisco Systems 6 Expires: June 3, 2018 S. Litkowski 7 B. Decraene 8 Orange 9 J. Drake 10 Juniper Networks 11 M. Chen 12 Huawei 13 November 30, 2017 15 Label Switched Path (LSP) Ping/Trace Multipath Support for 16 Link Aggregation Group (LAG) Interfaces 17 draft-ietf-mpls-lsp-ping-lag-multipath-03 19 Abstract 21 This document defines an extension to the MPLS Label Switched Path 22 (LSP) Ping and Traceroute as specified in RFC 8029. The extension 23 allows the MPLS LSP Ping and Traceroute to discover and exercise 24 specific paths of Layer 2 (L2) Equal-Cost Multipath (ECMP) over Link 25 Aggregation Group (LAG) interfaces. 27 This document updates RFC8029. 29 Requirements Language 31 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 32 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 33 document are to be interpreted as described in RFC 2119 [RFC2119]. 35 Status of This Memo 37 This Internet-Draft is submitted in full conformance with the 38 provisions of BCP 78 and BCP 79. 40 Internet-Drafts are working documents of the Internet Engineering 41 Task Force (IETF). Note that other groups may also distribute 42 working documents as Internet-Drafts. The list of current Internet- 43 Drafts is at https://datatracker.ietf.org/drafts/current/. 45 Internet-Drafts are draft documents valid for a maximum of six months 46 and may be updated, replaced, or obsoleted by other documents at any 47 time. It is inappropriate to use Internet-Drafts as reference 48 material or to cite them other than as "work in progress." 49 This Internet-Draft will expire on June 3, 2018. 51 Copyright Notice 53 Copyright (c) 2017 IETF Trust and the persons identified as the 54 document authors. All rights reserved. 56 This document is subject to BCP 78 and the IETF Trust's Legal 57 Provisions Relating to IETF Documents 58 (https://trustee.ietf.org/license-info) in effect on the date of 59 publication of this document. Please review these documents 60 carefully, as they describe your rights and restrictions with respect 61 to this document. Code Components extracted from this document must 62 include Simplified BSD License text as described in Section 4.e of 63 the Trust Legal Provisions and are provided without warranty as 64 described in the Simplified BSD License. 66 Table of Contents 68 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 69 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 70 1.2. Background . . . . . . . . . . . . . . . . . . . . . . . 3 71 2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 4 72 3. LSR Capability Discovery . . . . . . . . . . . . . . . . . . 6 73 4. Mechanism to Discover L2 ECMP Multipath . . . . . . . . . . . 7 74 4.1. Initiator LSR Procedures . . . . . . . . . . . . . . . . 7 75 4.2. Responder LSR Procedures . . . . . . . . . . . . . . . . 7 76 4.3. Additional Initiator LSR Procedures . . . . . . . . . . . 9 77 5. Mechanism to Validate L2 ECMP Traversal . . . . . . . . . . . 10 78 5.1. Incoming LAG Member Links Verification . . . . . . . . . 11 79 5.1.1. Initiator LSR Procedures . . . . . . . . . . . . . . 11 80 5.1.2. Responder LSR Procedures . . . . . . . . . . . . . . 11 81 5.1.3. Additional Initiator LSR Procedures . . . . . . . . . 12 82 5.2. Individual End-to-End Path Verification . . . . . . . . . 13 83 6. LSR Capability TLV . . . . . . . . . . . . . . . . . . . . . 14 84 7. LAG Description Indicator Flag: G . . . . . . . . . . . . . . 15 85 8. Local Interface Index Sub-TLV . . . . . . . . . . . . . . . . 16 86 9. Remote Interface Index Sub-TLV . . . . . . . . . . . . . . . 17 87 10. Detailed Interface and Label Stack TLV . . . . . . . . . . . 18 88 10.1. Sub-TLVs . . . . . . . . . . . . . . . . . . . . . . . . 20 89 10.1.1. Incoming Label Stack Sub-TLV . . . . . . . . . . . . 20 90 10.1.2. Incoming Interface Index Sub-TLV . . . . . . . . . . 20 91 11. Security Considerations . . . . . . . . . . . . . . . . . . . 21 92 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 22 93 12.1. LSR Capability TLV . . . . . . . . . . . . . . . . . . . 22 94 12.1.1. LSR Capability Flags . . . . . . . . . . . . . . . . 22 95 12.2. Local Interface Index Sub-TLV . . . . . . . . . . . . . 22 96 12.2.1. Interface Index Flags . . . . . . . . . . . . . . . 23 98 12.3. Remote Interface Index Sub-TLV . . . . . . . . . . . . . 23 99 12.4. Detailed Interface and Label Stack TLV . . . . . . . . . 23 100 12.4.1. Sub-TLVs for TLV Type TBD4 . . . . . . . . . . . . . 24 101 12.5. DS Flags . . . . . . . . . . . . . . . . . . . . . . . . 24 102 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 24 103 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 25 104 14.1. Normative References . . . . . . . . . . . . . . . . . . 25 105 14.2. Informative References . . . . . . . . . . . . . . . . . 25 106 Appendix A. LAG with L2 Switch Issues . . . . . . . . . . . . . 26 107 A.1. Equal Numbers of LAG Members . . . . . . . . . . . . . . 26 108 A.2. Deviating Numbers of LAG Members . . . . . . . . . . . . 26 109 A.3. LAG Only on Right . . . . . . . . . . . . . . . . . . . . 26 110 A.4. LAG Only on Left . . . . . . . . . . . . . . . . . . . . 27 111 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 27 113 1. Introduction 115 1.1. Terminology 117 The following acronyms/terms are used in this document: 119 o MPLS - Multiprotocol Label Switching. 121 o LSP - Label Switched Path. 123 o LSR - Label Switching Router. 125 o ECMP - Equal-Cost Multipath. 127 o LAG - Link Aggregation Group. 129 o Initiator LSR - LSR which sends MPLS echo request. 131 o Responder LSR - LSR which receives MPLS echo request and sends 132 MPLS echo reply. 134 1.2. Background 136 The MPLS Label Switched Path (LSP) Ping and Traceroute as specified 137 in [RFC8029] are powerful tools designed to diagnose all available 138 layer 3 (L3) paths of LSPs, i.e., provides diagnostic coverage of L3 139 Equal-Cost Multipath (ECMP). In many MPLS networks, Link Aggregation 140 Group (LAG) as defined in [IEEE802.1AX], which provide Layer 2 (L2) 141 ECMP, are often used for various reasons. MPLS LSP Ping and 142 Traceroute tools were not designed to discover and exercise specific 143 paths of L2 ECMP. The result raises a limitation for following 144 scenario when LSP X traverses over LAG Y: 146 o Label switching of LSP X over one or more member links of LAG Y 147 have succeeded. 149 o Label switching of LSP X over one or more member links of LAG Y 150 have failed. 152 o MPLS echo request for LSP X over LAG Y is load balanced over a 153 member link which is label switching successfully. 155 With the above scenario, MPLS LSP Ping and Traceroute will not be 156 able to detect the label switching failure of problematic member 157 link(s) of the LAG. In other words, lack of L2 ECMP diagnostic 158 coverage can produce an outcome where MPLS LSP Ping and Traceroute 159 can be blind to label switching failures over problematic LAG 160 interface. It is, thus, desirable to extend the MPLS LSP Ping and 161 Traceroute to have deterministic diagnostic coverage of LAG 162 interfaces. 164 Creation of this document was motivated by issues encountered in live 165 networks. 167 2. Overview 169 This document defines an extension to the MPLS LSP Ping and 170 Traceroute to describe Multipath Information for LAG member links 171 separately, thus allowing MPLS LSP Ping and Traceroute to discover 172 and exercise specific paths of L2 ECMP over LAG interfaces. Reader 173 is expected to be familiar with mechanics of the MPLS LSP Ping and 174 Traceroute described in Section 3.3 of [RFC8029] and Downstream 175 Detailed Mapping TLV (DDMAP) described in Section 3.4 of [RFC8029]. 177 MPLS echo request carries a DDMAP and an optional TLV to indicate 178 that separate load balancing information for each L2 nexthop over LAG 179 is desired in MPLS echo reply. Responder LSR places the same 180 optional TLV in the MPLS echo reply to provide acknowledgement back 181 to the initiator. It also adds, for each downstream LAG member, a 182 load balance information (i.e. multipath information and interface 183 index). The following figure and the texts provides an example using 184 an LDP network. However the problem and the mechanism is applicable 185 to all types of LSPs which can traverse over LAG interfaces. 187 <----- LDP Network -----> 189 +-------+ 190 | | 191 A-------B=======C-------E 192 | | 193 +-------D-------+ 195 ---- Non-LAG 196 ==== LAG comprising of two member links 198 Figure 1: Example LDP Network 200 When node A is initiating LSP Traceroute to node E, node B will 201 return to node A load balance information for following entries. 203 1. Downstream C over Non-LAG (upper path). 205 2. First Downstream C over LAG (middle path). 207 3. Second Downstream C over LAG (middle path). 209 4. Downstream D over Non-LAG (lower path). 211 This document defines: 213 o In Section 3, a mechanism discover capabilities of responder LSRs; 215 o In Section 4, a mechanism to discover L2 ECMP multipath 216 information; 218 o In Section 5, a mechanism to validate L2 ECMP traversal in some 219 LAG provisioning models; 221 o In Section 6, the LSR Capability TLV; 223 o In Section 7, the LAG Description Indicator flag; 225 o In Section 8, the Local Interface Index Sub-TLV; 227 o In Section 9, the Remote Interface Index Sub-TLV; 229 o In Section 10, the Detailed Interface and Label Stack TLV; 231 o In Appendix A, issues with LAG having an L2 Switch. 233 Note that the mechanism described in this document does not impose 234 any changes to scenarios where an LSP is pinned down to a particular 235 LAG member (i.e. the LAG is not treated as one logical interface by 236 the LSP). 238 Also note that many LAGs are built from p2p links, and thus router X 239 and router X+1 have the same number of LAG members. It is possible 240 to build LAGs asymmetrically by using Ethernet switches in the 241 middle. Appendix A lists some cases which this document does not 242 address; if an operator deploys LAGs in a manner similar to what's 243 shown in Appendix A, the mechanisms in this document may not suit 244 them. 246 3. LSR Capability Discovery 248 The MPLS Ping operates by an initiator LSR sending an MPLS echo 249 request message and receiving back a corresponding MPLS echo reply 250 message from a responder LSR. The MPLS Traceroute operates in a 251 similar way except the initiator LSR potentially sends multiple MPLS 252 echo request messages with incrementing TTL values. 254 There has been many extensions to the MPLS Ping and Traceroute 255 mechanism over the years. Thus it is often useful, and sometimes 256 necessary, for the initiator LSR to deterministically disambiguate 257 the difference between: 259 o The responder LSR sent the MPLS echo reply message with contents C 260 because it has feature X, Y and Z implemented. 262 o The responder LSR sent the MPLS echo reply message with contents C 263 because it has subset of features X, Y and Z implemented but not 264 all. 266 o The responder LSR sent the MPLS echo reply message with contents C 267 because it does not have features X, Y and Z implemented. 269 To allow the initiator LSR to disambiguate the above differences, 270 this document defines the LSR Capability TLV (described in 271 Section 6). When the initiator LSR wishes to discover the 272 capabilities of the responder LSR, the initiator LSR includes the LSR 273 Capability TLV in the MPLS echo request message. When the responder 274 LSR receives an MPLS echo reply message with the LSR Capability TLV 275 included, then the responder LSR MUST include the LSR Capability TLV 276 in the MPLS echo reply message with the LSR Capability TLV describing 277 features and extensions supported by the local LSR. 279 It is RECOMMENDED that implementations supporting the LAG Multipath 280 extensions defined in this document include the LSR Capability TLV in 281 MPLS echo request messages. 283 4. Mechanism to Discover L2 ECMP Multipath 285 4.1. Initiator LSR Procedures 287 The MPLS echo request carries a DDMAP with the "LAG Description 288 Indicator flag" (G) set in the DS Flags to indicate that separate 289 load balancing information for each L2 nexthop over LAG is desired in 290 MPLS echo reply. The new "LAG Description Indicator flag" is 291 described in Section 7. 293 4.2. Responder LSR Procedures 295 This section describes the handling of the new TLVs by nodes which 296 understand the "LAG Description Indicator flag". There are two cases 297 - nodes which understand the "LAG Description Indicator flag" but 298 which for some reason cannot describe LAG members separately, and 299 nodes which both understand the "LAG Description Indicator flag" and 300 are able to describe LAG members separately. Note that Section 6, 301 Section 8 and Section 9 describe the new TLVs referenced by this 302 section , and looking over the definition of the new TLVs first may 303 make it easier to read this section. 305 A responder LSR that understand the "LAG Description Indicator flag" 306 but is not capable of describing outgoing LAG member links separately 307 uses the following procedures: 309 o If the received MPLS echo request message had the LSR Capability 310 TLV, the responder LSR MUST include the LSR Capability TLV in the 311 MPLS echo reply message. 313 o The responder LSR MUST clear the "Downstream LAG Info 314 Accommodation flag" in the LSR Capability Flags field of the LSR 315 Capability TLV. This will allow the initiator LSR to understand 316 that the responder LSR cannot describe outgoing LAG member links 317 separately in the DDMAP. 319 A responder LSR that understands the "LAG Description Indicator flag" 320 and is capable of describing outgoing LAG member links separately 321 uses the follow procedures, regardless of whether or not outgoing 322 interfaces include LAG interfaces: 324 o If the received MPLS echo request message had the LSR Capability 325 TLV, the responder LSR MUST include the LSR Capability TLV in the 326 MPLS echo reply message. 328 o The responder LSR MUST set the "Downstream LAG Info Accommodation 329 flag" in the LSR Capability Flags field of the LSR Capability TLV. 331 o For each downstream that is a LAG interface: 333 * The responder LSR MUST add DDMAP in the MPLS echo reply. 335 * The responder LSR MUST set the "LAG Description Indicator flag" 336 in the DS Flags field of the DDMAP. 338 * In the DDMAP, Local Interface Index Sub-TLV, Remote Interface 339 Index Sub-TLV and Multipath Data Sub-TLV are to describe each 340 LAG member link. All other fields of the DDMAP are to describe 341 the LAG interface. 343 * For each LAG member link of this LAG interface: 345 + The responder LSR MUST add a Local Interface Index Sub-TLV 346 (described in Section 8) with the "LAG Member Link Indicator 347 flag" set in the Interface Index Flags field, describing the 348 interface index of this outgoing LAG member link (the local 349 interface index is assigned by the local LSR). 351 + The responder LSR MAY add a Remote Interface Index Sub-TLV 352 (described in Section 9) with the "LAG Member Link Indicator 353 flag" set in the Interface Index Flags field, describing the 354 interface index of the incoming LAG member link on the 355 downstream LSR (this interface index is assigned by the 356 downstream LSR). How the local LSR obtains the interface 357 index of the LAG member link on the downstream LSR is 358 outside the scope of this document. 360 + The responder LSR MUST add an Multipath Data Sub-TLV for 361 this LAG member link, if received DDMAP requested multipath 362 information. 364 Based on the procedures described above, every LAG member link will 365 have a Local Interface Index Sub-TLV and a Multipath Data Sub-TLV 366 entries in the DDMAP. The order of the Sub-TLVs in the DDMAP for a 367 LAG member link MUST be Local Interface Index Sub-TLV immediately 368 followed by Multipath Data Sub-TLV. A LAG member link may also have 369 a corresponding Remote Interface Index Sub-TLV. When a Local 370 Interface Index Sub-TLV, a Remote Interface Index-Sub-TLV and a 371 Multipath Data Sub-TLV are placed in the DDMAP to describe a LAG 372 member link, they MUST be placed in the order of Local Interface 373 Index Sub-TLV, Remote Interface Index-Sub-TLV and Multipath Data Sub- 374 TLV. 376 A responder LSR possessing a LAG interface with two member links 377 would send the following DDMAP for this LAG interface: 379 0 1 2 3 380 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 381 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 382 ~ DDMAP fields describing LAG interface with DS Flags G set ~ 383 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 384 |[MANDATORY] Local Interface Index Sub-TLV of LAG member link #1| 385 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 386 |[OPTIONAL] Remote Interface Index Sub-TLV of LAG member link #1| 387 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 388 |[MANDATORY] Multipath Data Sub-TLV LAG member link #1 | 389 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 390 |[MANDATORY] Local Interface Index Sub-TLV of LAG member link #2| 391 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 392 |[OPTIONAL] Remote Interface Index Sub-TLV of LAG member link #2| 393 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 394 |[MANDATORY] Multipath Data Sub-TLV LAG member link #2 | 395 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 396 | Label Stack Sub-TLV | 397 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 399 Figure 2: Example of DDMAP in MPLS Echo Reply 401 When none of the received multipath information maps to a particular 402 LAG member link, then the responder LSR MUST still place the Local 403 Interface Index Sub-TLV and the Multipath Data Sub-TLV for that LAG 404 member link in the DDMAP, with the Multipath Length field of the 405 Multipath Data Sub-TLV being zero. 407 4.3. Additional Initiator LSR Procedures 409 The procedures above allow an initiator LSR to: 411 o Identify whether or not the responder LSR can describe outgoing 412 LAG member links separately, by looking at the LSR Capability TLV. 414 o Utilize the value of the "LAG Description Indicator flag" in DS 415 Flags to identify whether each received DDMAP describes a LAG 416 interface or a non-LAG interface. 418 o Obtain multipath information which is expected to traverse the 419 specific LAG member link described by corresponding interface 420 index. 422 When an initiator LSR receives a DDMAP containing LAG member 423 information from a downstream LSR with TTL=n, then the subsequent 424 DDMAP sent by the initiator LSR to the downstream LSR with TTL=n+1 425 through a particular LAG member link MUST be updated with following 426 procedures: 428 o The Local Interface Index Sub-TLVs MUST be removed in the sending 429 DDMAP. 431 o If the Remote Interface Index Sub-TLVs were present and the 432 initiator LSR is traversing over a specific LAG member link, then 433 the Remote Interface Index Sub-TLV corresponding to the LAG member 434 link being traversed SHOULD be included in the sending DDMAP. All 435 other Remote Interface Index Sub-TLVs MUST be removed from the 436 sending DDMAP. 438 o The Multipath Data Sub-TLVs MUST be updated to include just one 439 Multipath Data Sub-TLV. The initiator MAY keep just the Multipath 440 Data Sub-TLV corresponding to the LAG member link being traversed, 441 or combine the Multipath Data Sub-TLVs for all LAG member links 442 into a single Multipath Data Sub-TLV when diagnosing further 443 downstream LSRs. 445 o All other fields of the DDMAP are to comply with procedures 446 described in [RFC8029]. 448 Using the DDMAP example described in the Figure 2, the DDMAP being 449 sent by the initiator LSR through LAG member link #1 to the next 450 downstream LSR should be: 452 0 1 2 3 453 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 454 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 455 ~ DDMAP fields describing LAG interface with DS Flags G set ~ 456 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 457 |[OPTIONAL] Remote Interface Index Sub-TLV of LAG member link #1| 458 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 459 | Multipath Data Sub-TLV LAG member link #1 | 460 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 461 | Label Stack Sub-TLV | 462 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 464 Figure 3: Example of DDMAP in MPLS Echo Request 466 5. Mechanism to Validate L2 ECMP Traversal 468 Section 4 defines the responder LSR procedures to constructs a DDMAP 469 for a downstream LAG, and also defines that inclusion of the Remote 470 Interface Index Sub-TLVs describing the incoming LAG member links of 471 the downstream LSR is optional. The reason why it is optional for 472 the responder LSR to include the Remote Interface Index Sub-TLVs is 473 that this information from the downstream LSR is often not available 474 on the responder LSR. In such case, the traversal of LAG member 475 links can be validated with procedures described in Section 5.1. If 476 LSRs can provide the Remote Interface Index Sub-TLVs in DDMAP 477 objects, then the validation procedures described in Section 5.2 can 478 be used. 480 5.1. Incoming LAG Member Links Verification 482 Without downstream LSRs returning remote Interface Index Sub-TLVs in 483 the DDMAP, validation of the LAG member link traversal requires that 484 initiator LSR traverses all available LAG member links and taking the 485 results through a logic. This section provides the mechanism for the 486 initiator LSR to obtain additional information from the downstream 487 LSRs and describes the additional logic in the initiator LSR to 488 validate the L2 ECMP traversal. 490 5.1.1. Initiator LSR Procedures 492 The MPLS echo request is sent with a DDMAP with the "Interface and 493 Label Stack Object Request flag" and "LAG Description Indicator flag" 494 set in the DS Flags to indicate the request for Detailed Interface 495 and Label Stack TLV with additional LAG member link information (i.e. 496 interface index) in the MPLS echo reply. 498 5.1.2. Responder LSR Procedures 500 A responder LSR that understands the "LAG Description Indicator flag" 501 but is not capable of describing incoming LAG member link is to use 502 following procedures: 504 o If the received MPLS echo request message had the LSR Capability 505 TLV, the responder LSR MUST include the LSR Capability TLV in the 506 MPLS echo reply message. 508 o The responder LSR MUST clear the "Upstream LAG Info Accommodation 509 flag" in the LSR Capability Flags field of the LSR Capability TLV. 510 This will allow the initiator LSR to understand that the responder 511 LSR cannot describe incoming LAG member link. 513 A responder LSR that understands the "LAG Description Indicator flag" 514 and is capable of describing incoming LAG member link MUST use the 515 following procedures, regardless of whether or not incoming interface 516 was a LAG interface: 518 o If the received MPLS echo request message had the LSR Capability 519 TLV, the responder LSR MUST include the LSR Capability TLV in the 520 MPLS echo reply message. 522 o The responder LSR MUST set the "Upstream LAG Info Accommodation 523 flag" in the LSR Capability Flags field of the LSR Capability TLV. 525 o When the received DDMAP had "Interface and Label Stack Object 526 Request flag" set in the DS Flags field, the responder LSR MUST 527 add the Detailed Interface and Label Stack TLV (described in 528 Section 10) in the MPLS echo reply. 530 o When the received DDMAP had "Interface and Label Stack Object 531 Request flag" set in the DS Flags field and the incoming interface 532 was a LAG, the responder LSR MUST add the Incoming Interface Index 533 Sub-TLV (described in Section 10.1.2) in the Detailed Interface 534 and Label Stack TLV. The "LAG Member Link Indicator flag" MUST be 535 set in the Interface Index Flags field, and the Interface Index 536 field set to the LAG member link which received the MPLS echo 537 request. 539 These procedures allow initiator LSR to: 541 o Identify whether or not the responder LSR can describe the 542 incoming LAG member link, by looking at the LSR Capability TLV. 544 o Utilize the Incoming Interface Index Sub-TLV in the Detailed 545 Interface and Label Stack TLV to identify, if the incoming 546 interface was a LAG, the identity of the incoming LAG member. 548 5.1.3. Additional Initiator LSR Procedures 550 Along with procedures described in Section 4, the procedures 551 described in this section will allow an initiator LSR to know: 553 o The expected load balance information of every LAG member link, at 554 LSR with TTL=n. 556 o With specific entropy, the expected interface index of the 557 outgoing LAG member link at TTL=n. 559 o With specific entropy, the interface index of the incoming LAG 560 member link at TTL=n+1. 562 Expectation is that there's a relationship between the interface 563 index of the outgoing LAG member link at TTL=n and the interface 564 index of the incoming LAG member link at TTL=n+1 for all discovered 565 entropies. In other words, set of entropies that load balances to 566 outgoing LAG member link X at TTL=n should all reach the nexthop on 567 same incoming LAG member link Y at TTL=n+1. 569 With additional logics, the initiator LSR can perform following 570 checks in a scenario where the initiator knows that there is a LAG, 571 with two LAG members, between TTL=n and TTL=n+1, and has the 572 multipath information to traverse the two LAG members. 574 The initiator LSR sends two MPLS echo request messages to traverse 575 the two LAG members at TTL=1: 577 o Success case: 579 * One MPLS echo request message reaches TTL=n+1 on an LAG member 580 1. 582 * The other MPLS echo request message reaches TTL=n+1 on an LAG 583 member 2. 585 The two MPLS echo request messages sent by the initiator LSR reach 586 two different LAG members at the immediate downstream LSR. 588 o Error case: 590 * One MPLS echo request message reaches TTL=n+1 on an LAG member 591 1. 593 * The other MPLS echo request message also reaches TTL=n+1 on an 594 LAG member 1. 596 One or two MPLS echo request messages sent by the initiator LSR 597 does not reach the immediate downstream LSR, or the two MPLS echo 598 request messages reach a same LAG member at the immediate 599 downstream LSR. 601 Note that defined procedures will provide a deterministic result for 602 LAG interfaces that are back-to-back connected between routers (i.e. 603 no L2 switch in between). If there is a L2 switch between LSR at 604 TTL=n and LSR at TTL=n+1, there is no guarantee that traversal of 605 every LAG member link at TTL=n will result in reaching different 606 interface index at TTL=n+1. Issues resulting from LAG with L2 switch 607 in between are further described in Appendix A. LAG provisioning 608 models in operated network should be considered when analyzing the 609 output of LSP Traceroute exercising L2 ECMPs. 611 5.2. Individual End-to-End Path Verification 613 When the Remote Interface Index Sub-TLVs are available from an LSR 614 with TTL=n, then the validation of LAG member link traversal can be 615 performed by the downstream LSR of TTL=n+1. The initiator LSR 616 follows the procedures described in Section 4.3. 618 The DDMAP validation procedures by the downstream responder LSR are 619 then updated to include the comparison of the incoming LAG member 620 link (which MPLS echo request was received on) to the interface index 621 described in the Remote Interface Index Sub-TLV in the DDMAP. 623 Failure of this comparison results in the return code being set to 624 "Downstream Mapping Mismatch (5)". 626 A responder LSR that is not able to perform the above additional 627 DDMAP validation procedures is considered to lack the upstream LAG 628 capability. Thus, if the received MPLS echo request contained the 629 LSR Capability TLV, then the responder LSR MUST include the LSR 630 Capability TLV in the MPLS echo reply and the LSR Capability TLV MUST 631 have the "Upstream LAG Info Accomodation flag" cleared. 633 6. LSR Capability TLV 635 The LSR Capability object is a new TLV that MAY be included in the 636 MPLS echo request message and the MPLS echo reply message. An MPLS 637 echo request message and an MPLS echo reply message MUST NOT include 638 more than one LSR Capability object. Presence of an LSR Capability 639 object in an MPLS echo request message is a request that a responder 640 LSR includes an LSR Capability object in the MPLS echo reply message, 641 with the LSR Capability object describing features and extensions 642 supported. When the received MPLS echo request message contains an 643 LSR Capability object, an responder LSR MUST include the LSR 644 Capability object in the MPLS echo reply message. 646 LSR Capability TLV Type is TBD1. Length is 4. The value field of 647 the LSR Capability TLV has following format: 649 0 1 2 3 650 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 651 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 652 | Type | Length | 653 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 654 | LSR Capability Flags | 655 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 657 Figure 4: LSR Capability TLV 659 LSR Capability Flags 661 The LSR Capability Flags field is a bit vector with following 662 format: 664 0 1 2 3 665 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 666 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 667 | Must Be Zero (Reserved) |U|D| 668 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 669 Two flags are defined: U and D. The remaining flags MUST be set 670 to zero when sending and ignored on receipt. Both U and D flags 671 MUST be cleared in MPLS echo request message when sending, and 672 ignored on receipt. Neither, either or both U and D flags MAY be 673 set in MPLS echo reply message. 675 Flag Name and Meaning 676 ---- ---------------- 678 U Upstream LAG Info Accommodation 680 An LSR sets this flag when the node is capable of 681 describing a LAG member link in the Incoming Interface 682 Index Sub-TLV in the in the Detailed Interface and 683 Label Stack TLV. 685 D Downstream LAG Info Accommodation 687 An LSR sets this flag when the node is capable of 688 describing LAG member links in the Local Interface 689 Index Sub-TLV and the Multipath Data Sub-TLV in the 690 Downstream Detailed Mapping TLV. 692 7. LAG Description Indicator Flag: G 694 One flag, G, is added in DS Flags field of the DDMAP TLV. The G flag 695 of the DS Flags field in the MPLS echo request message indicates the 696 request for detailed LAG information from the responder LSR. In the 697 MPLS echo reply message, the G flag MUST be set if the DDMAP TLV 698 describes a LAG interface. It MUST be cleared otherwise. 700 DS Flags 702 DS Flags G is added, in Bit Number TBD5, in DS Flags bit vector. 704 0 1 2 3 4 5 6 7 705 +-+-+-+-+-+-+-+-+ 706 | MBZ |G|MBZ|I|N| 707 +-+-+-+-+-+-+-+-+ 709 RFC-Editor-Note: Please update above figure to place the flag G in 710 the bit number TBD5. 712 Flag Name and Meaning 713 ---- ---------------- 715 G LAG Description Indicator 717 When this flag is set in the MPLS echo request, responder is 718 requested to respond with detailed LAG information. When this 719 flag is set in the MPLS echo reply, the corresponding DDMAP 720 describes a LAG interface. 722 8. Local Interface Index Sub-TLV 724 The Local Interface Index object is a Sub-TLV that MAY be included in 725 a DDMAP TLV. Zero or more Local Interface Index object MAY appear in 726 a DDMAP TLV. The Local Interface Index Sub-TLV describes the index 727 assigned by the local LSR to the egress interface. 729 The Local Interface Index Sub-TLV Type is TBD2. Length is 8, and the 730 Value field has following format: 732 0 1 2 3 733 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 734 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 735 | Type | Length | 736 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 737 | Interface Index Flags | Must Be Zero | 738 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 739 | Local Interface Index | 740 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 742 Figure 5: Local Interface Index Sub-TLV 744 Interface Index Flags 746 Interface Index Flags field is a bit vector with following format. 748 0 1 749 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 750 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 751 | Must Be Zero (Reserved) |M| 752 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 754 One flag is defined: M. The remaining flags MUST be set to zero 755 when sending and ignored on receipt. 757 Flag Name and Meaning 758 ---- ---------------- 760 M LAG Member Link Indicator 762 When this flag is set, interface index described in 763 this sub-TLV is a member of a LAG. 765 Local Interface Index 767 An Index assigned by the LSR to this interface. 769 9. Remote Interface Index Sub-TLV 771 The Remote Interface Index object is a Sub-TLV that MAY be included 772 in a DDMAP TLV. Zero or more Remote Interface Index object MAY 773 appear in a DDMAP TLV. The Remote Interface Index Sub-TLV describes 774 the index assigned by the downstream LSR to the ingress interface. 776 The Remote Interface Index Sub-TLV Type is TBD3. Length is 8, and 777 the Value field has following format: 779 0 1 2 3 780 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 781 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 782 | Type | Length | 783 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 784 | Interface Index Flags | Must Be Zero | 785 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 786 | Remote Interface Index | 787 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 789 Figure 6: Remote Interface Index Sub-TLV 791 Interface Index Flags 793 Interface Index Flags field is a bit vector with following format. 795 0 1 796 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 797 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 798 | Must Be Zero (Reserved) |M| 799 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 801 One flag is defined: M. The remaining flags MUST be set to zero 802 when sending and ignored on receipt. 804 Flag Name and Meaning 805 ---- ---------------- 807 M LAG Member Link Indicator 809 When this flag is set, interface index described in 810 this sub-TLV is a member of a LAG. 812 Remote Interface Index 814 An Index assigned by the downstream LSR to the ingress interface. 816 10. Detailed Interface and Label Stack TLV 818 The "Detailed Interface and Label Stack" object is a TLV that MAY be 819 included in a MPLS echo reply message to report the interface on 820 which the MPLS echo request message was received and the label stack 821 that was on the packet when it was received. A responder LSR MUST 822 NOT insert more than one instance of this TLV. This TLV allows the 823 initiator LSR to obtain the exact interface and label stack 824 information as it appears at the responder LSR. 826 Detailed Interface and Label Stack TLV Type is TBD4. Length is K + 827 Sub-TLV Length (sum of Sub-TLVs). K is the sum of all fields of this 828 TLV prior to Sub-TLVs, but the length of K depends on the Address 829 Type. Details of this information is described below. The Value 830 field has following format: 832 0 1 2 3 833 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 834 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 835 | Type | Length | 836 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 837 | Address Type | Must Be Zero | 838 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 839 | IP Address (4 or 16 octets) | 840 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 841 | Interface (4 or 16 octets) | 842 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 843 | Must Be Zero | Sub-TLV Length | 844 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 845 . . 846 . List of Sub-TLVs . 847 . . 848 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 850 Figure 7: Detailed Interface and Label Stack TLV 852 The Detailed Interface and Label Stack TLV format is derived from the 853 Interface and Label Stack TLV format (from [RFC8029]). Two changes 854 are introduced. First is that label stack, which is of variable 855 length, is converted into a sub-TLV. Second is that a new sub-TLV is 856 added to describe an interface index. The fields of Detailed 857 Interface and Label Stack TLV have the same use and meaning as in 858 [RFC8029]. A summary of the fields taken from the Interface and 859 Label Stack TLV is as below: 861 Address Type 863 The Address Type indicates if the interface is numbered or 864 unnumbered. It also determines the length of the IP Address 865 and Interface fields. The resulting total for the initial part 866 of the TLV is listed in the table below as "K Octets". The 867 Address Type is set to one of the following values: 869 Type # Address Type K Octets 870 ------ ------------ -------- 871 1 IPv4 Numbered 16 872 2 IPv4 Unnumbered 16 873 3 IPv6 Numbered 40 874 4 IPv6 Unnumbered 28 876 IP Address and Interface 878 IPv4 addresses and interface indices are encoded in 4 octets; 879 IPv6 addresses are encoded in 16 octets. 881 If the interface upon which the echo request message was 882 received is numbered, then the Address Type MUST be set to IPv4 883 Numbered or IPv6 Numbered, the IP Address MUST be set to either 884 the LSR's Router ID or the interface address, and the Interface 885 MUST be set to the interface address. 887 If the interface is unnumbered, the Address Type MUST be either 888 IPv4 Unnumbered or IPv6 Unnumbered, the IP Address MUST be the 889 LSR's Router ID, and the Interface MUST be set to the index 890 assigned to the interface. 892 Note: Usage of IPv6 Unnumbered has the same issue as [RFC8029], 893 described in Section 3.4.2 of [RFC7439]. A solution should be 894 considered an applied to both [RFC8029] and this document. 896 Sub-TLV Length 898 Total length in octets of the sub-TLVs associated with this 899 TLV. 901 10.1. Sub-TLVs 903 This section defines the sub-TLVs that MAY be included as part of the 904 Detailed Interface and Label Stack TLV. 906 Sub-Type Value Field 907 --------- ------------ 908 1 Incoming Label stack 909 2 Incoming Interface Index 911 10.1.1. Incoming Label Stack Sub-TLV 913 The Incoming Label Stack sub-TLV contains the label stack as received 914 by the LSR. If any TTL values have been changed by this LSR, they 915 SHOULD be restored. 917 Incoming Label Stack Sub-TLV Type is 1. Length is variable, and the 918 Value field has following format: 920 0 1 2 3 921 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 922 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 923 | Type | Length | 924 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 925 | Label | TC |S| TTL | 926 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 927 . . 928 . . 929 . . 930 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 931 | Label | TC |S| TTL | 932 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 934 Figure 8: Incoming Label Stack Sub-TLV 936 10.1.2. Incoming Interface Index Sub-TLV 938 The Incoming Interface Index object is a Sub-TLV that MAY be included 939 in a Detailed Interface and Label Stack TLV. The Incoming Interface 940 Index Sub-TLV describes the index assigned by this LSR to the 941 interface which received the MPLS echo request message. 943 Incoming Interface Index Sub-TLV Type is 2. Length is 8, and the 944 Value field has the same format as the Local Interface Index Sub-TLV 945 described in Section 8, and has following format: 947 0 1 2 3 948 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 949 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 950 | Type | Length | 951 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 952 | Interface Index Flags | Must Be Zero | 953 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 954 | Incoming Interface Index | 955 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 957 Figure 9: Incoming Interface Index Sub-TLV 959 Interface Index Flags 961 Interface Index Flags field is a bit vector with following format. 963 0 1 964 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 965 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 966 | Must Be Zero (Reserved) |M| 967 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 969 One flag is defined: M. The remaining flags MUST be set to zero 970 when sending and ignored on receipt. 972 Flag Name and Meaning 973 ---- ---------------- 975 M LAG Member Link Indicator 977 When this flag is set, interface index described in 978 this sub-TLV is a member of a LAG. 980 Incoming Interface Index 982 An Index assigned by the LSR to this interface. 984 11. Security Considerations 986 This document extends LSP Traceroute mechanism to discover and 987 exercise L2 ECMP paths. As a result of supporting the code points 988 and procedures described in this document, additional processing are 989 required by initiator LSRs and responder LSRs, especially to compute 990 and handle increasing number of multipath information. Due to 991 additional processing, it is critical that proper security measures 992 described in [RFC8029] are followed. 994 The LSP Traceroute allows an initiator LSR to discover the paths of 995 tested LSPs, providing deep knowledge of the MPLS network. Exposing 996 such information to a malicious user is considered dangerous. To 997 prevent leakage of vital information to untrusted users, a responder 998 LSR MUST only accept MPLS echo request messages from trusted sources 999 via filtering source IP address field of received MPLS echo request 1000 messages. 1002 12. IANA Considerations 1004 12.1. LSR Capability TLV 1006 The IANA is requested to assign new value TBD1 for LSR Capability TLV 1007 from the "Multiprotocol Label Switching Architecture (MPLS) Label 1008 Switched Paths (LSPs) Ping Parameters - TLVs" registry. 1010 Value Meaning Reference 1011 ----- ------- --------- 1012 TBD1 LSR Capability TLV this document 1014 12.1.1. LSR Capability Flags 1016 The IANA is requested to create and maintain a registry entitled "LSR 1017 Capability Flags" with following registration procedures: 1019 Registry Name: LAG Interface Info Flags 1021 Bit number Name Reference 1022 ---------- ---------------------------------------- --------- 1023 31 D: Downstream LAG Info Accommodation this document 1024 30 U: Upstream LAG Info Accommodation this document 1025 0-29 Unassigned 1027 Assignments of LSR Capability Flags are via Standards Action 1028 [RFC5226]. 1030 12.2. Local Interface Index Sub-TLV 1032 The IANA is requested to assign new value TBD2 (from the range 1033 4-31743) for the Local Interface Index Sub-TLV from the 1034 "Multiprotocol Label Switching Architecture (MPLS) Label Switched 1035 Paths (LSPs) Ping Parameters - TLVs" registry, "Sub-TLVs for TLV 1036 Types 20" sub-registry. 1038 Value Meaning Reference 1039 ----- ------- --------- 1040 TBD2 Local Interface Index Sub-TLV this document 1042 12.2.1. Interface Index Flags 1044 The IANA is requested to create and maintain a registry entitled 1045 "Interface Index Flags" with following registration procedures: 1047 Registry Name: Interface Index Flags 1049 Bit number Name Reference 1050 ---------- ---------------------------------------- --------- 1051 15 M: LAG Member Link Indicator this document 1052 0-14 Unassigned 1054 Assignments of Interface Index Flags are via Standards Action 1055 [RFC5226]. 1057 Note that this registry is used by the Interface Index Flags field of 1058 following Sub-TLVs: 1060 o The Local Interface Index Sub-TLV which may be present in the 1061 "Downstream Detailed Mapping" TLV. 1063 o The Remote Interface Index Sub-TLV which may be present in the 1064 "Downstream Detailed Mapping" TLV. 1066 o The Incoming Interface Index Sub-TLV which may be present in the 1067 "Detailed Interface and Label Stack" TLV. 1069 12.3. Remote Interface Index Sub-TLV 1071 The IANA is requested to assign new value TBD3 (from the range 1072 32768-49161) for the Remote Interface Index Sub-TLV from the 1073 "Multiprotocol Label Switching Architecture (MPLS) Label Switched 1074 Paths (LSPs) Ping Parameters - TLVs" registry, "Sub-TLVs for TLV 1075 Types 20" sub-registry. 1077 Value Meaning Reference 1078 ----- ------- --------- 1079 TBD3 Remote Interface Index Sub-TLV this document 1081 12.4. Detailed Interface and Label Stack TLV 1083 The IANA is requested to assign new value TBD4 for Detailed Interface 1084 and Label Stack TLV from the "Multiprotocol Label Switching 1085 Architecture (MPLS) Label Switched Paths (LSPs) Ping Parameters - 1086 TLVs" registry ([IANA-MPLS-LSP-PING]). 1088 Value Meaning Reference 1089 ----- ------- --------- 1090 TBD4 Detailed Interface and Label Stack TLV this document 1092 12.4.1. Sub-TLVs for TLV Type TBD4 1094 The IANA is requested to create and maintain a sub-registry entitled 1095 "Sub-TLVs for TLV Type TBD4" under "Multiprotocol Label Switching 1096 Architecture (MPLS) Label Switched Paths (LSPs) Ping Parameters - 1097 TLVs" registry. 1099 Initial values for this sub-registry, "Sub-TLVs for TLV Types TBD4", 1100 are described below. 1102 Sub-Type Name Reference 1103 ----------- -------------------------------------- --------- 1104 1 Incoming Label Stack this document 1105 2 Incoming Interface Index this document 1106 3-16383 Unassigned (mandatory TLVs) 1107 16384-31743 Experimental 1108 32768-49161 Unassigned (optional TLVs) 1109 49162-64511 Experimental 1111 Assignments of Sub-Types in the mandatory and optional spaces are are 1112 via Standards Action [RFC5226]. Assignments of Sub-Types in the 1113 experimental space is via Specification Required [RFC5226]. 1115 12.5. DS Flags 1117 The IANA is requested to assign a new bit number from the "DS flags" 1118 sub-registry from the "Multi-Protocol Label Switching (MPLS) Label 1119 Switched Paths (LSPs) Ping Parameters - TLVs" registry 1120 ([IANA-MPLS-LSP-PING]). 1122 Note: the "DS flags" sub-registry is created by [RFC7537]. 1124 Bit number Name Reference 1125 ---------- ---------------------------------------- --------- 1126 TBD5 G: LAG Description Indicator this document 1128 13. Acknowledgements 1130 The authors would like to thank Nagendra Kumar and Sam Aldrin for 1131 providing useful comments and suggestions. The authors would like to 1132 thank Loa Andersson for performing a detailed review and providing 1133 number of comments. 1135 The authors also would like to extend sincere thanks to the MPLS RT 1136 review members who took time to review and provide comments. The 1137 members are Eric Osborne, Mach Chen and Yimin Shen. The suggestion 1138 by Mach Chen to generalize and create the LSR Capability TLV was 1139 tremendously helpful for this document and likely for future 1140 documents extending the MPLS LSP Ping and Traceroute mechanism. The 1141 suggestion by Yimin Shen to create two separate validation procedures 1142 had a big impact to the contents of this document. 1144 14. References 1146 14.1. Normative References 1148 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1149 Requirement Levels", BCP 14, RFC 2119, 1150 DOI 10.17487/RFC2119, March 1997, 1151 . 1153 [RFC7537] Decraene, B., Akiya, N., Pignataro, C., Andersson, L., and 1154 S. Aldrin, "IANA Registries for LSP Ping Code Points", 1155 RFC 7537, DOI 10.17487/RFC7537, May 2015, 1156 . 1158 [RFC8029] Kompella, K., Swallow, G., Pignataro, C., Ed., Kumar, N., 1159 Aldrin, S., and M. Chen, "Detecting Multiprotocol Label 1160 Switched (MPLS) Data-Plane Failures", RFC 8029, 1161 DOI 10.17487/RFC8029, March 2017, 1162 . 1164 14.2. Informative References 1166 [IANA-MPLS-LSP-PING] 1167 IANA, "Multi-Protocol Label Switching (MPLS) Label 1168 Switched Paths (LSPs) Ping Parameters", 1169 . 1172 [IEEE802.1AX] 1173 IEEE Std. 802.1AX, "IEEE Standard for Local and 1174 metropolitan area networks - Link Aggregation", November 1175 2008. 1177 [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an 1178 IANA Considerations Section in RFCs", RFC 5226, 1179 DOI 10.17487/RFC5226, May 2008, 1180 . 1182 [RFC7439] George, W., Ed. and C. Pignataro, Ed., "Gap Analysis for 1183 Operating IPv6-Only MPLS Networks", RFC 7439, 1184 DOI 10.17487/RFC7439, January 2015, 1185 . 1187 Appendix A. LAG with L2 Switch Issues 1189 Several flavors of "LAG with L2 switch" provisioning models are 1190 described in this section, with MPLS data plane ECMP traversal 1191 validation issues with each. 1193 A.1. Equal Numbers of LAG Members 1195 R1 ==== S1 ==== R2 1197 The issue with this LAG provisioning model is that packets traversing 1198 a LAG member from R1 to S1 can get load balanced by S1 towards R2. 1199 Therefore, MPLS echo request messages traversing specific LAG member 1200 from R1 to S1 can actually reach R2 via any LAG members, and sender 1201 of MPLS echo request messages have no knowledge of this nor no way to 1202 control this traversal. In the worst case, MPLS echo request 1203 messages with specific entropies to exercise every LAG members from 1204 R1 to S1 can all reach R2 via same LAG member. Thus it is impossible 1205 for MPLS echo request sender to verify that packets intended to 1206 traverse specific LAG member from R1 to S1 did actually traverse that 1207 LAG member, and to deterministically exercise "receive" processing of 1208 every LAG member on R2. 1210 A.2. Deviating Numbers of LAG Members 1212 ____ 1213 R1 ==== S1 ==== R2 1215 There are deviating number of LAG members on the two sides of the L2 1216 switch. The issue with this LAG provisioning model is the same as 1217 previous model, sender of MPLS echo request messages have no 1218 knowledge of L2 load balance algorithm nor entropy values to control 1219 the traversal. 1221 A.3. LAG Only on Right 1223 R1 ---- S1 ==== R2 1225 The issue with this LAG provisioning model is that there is no way 1226 for MPLS echo request sender to deterministically exercise both LAG 1227 members from S1 to R2. And without such, "receive" processing of R2 1228 on each LAG member cannot be verified. 1230 A.4. LAG Only on Left 1232 R1 ==== S1 ---- R2 1234 MPLS echo request sender has knowledge of how to traverse both LAG 1235 members from R1 to S1. However, both types of packets will terminate 1236 on the non-LAG interface at R2. It becomes impossible for MPLS echo 1237 request sender to know that MPLS echo request messages intended to 1238 traverse a specific LAG member from R1 to S1 did indeed traverse that 1239 LAG member. 1241 Authors' Addresses 1243 Nobo Akiya 1244 Big Switch Networks 1246 Email: nobo.akiya.dev@gmail.com 1248 George Swallow 1249 Cisco Systems 1251 Email: swallow@cisco.com 1253 Stephane Litkowski 1254 Orange 1256 Email: stephane.litkowski@orange.com 1258 Bruno Decraene 1259 Orange 1261 Email: bruno.decraene@orange.com 1263 John E. Drake 1264 Juniper Networks 1266 Email: jdrake@juniper.net 1268 Mach(Guoyi) Chen 1269 Huawei 1271 Email: mach.chen@huawei.com