idnits 2.17.1 draft-xu-mpls-unified-source-routing-instruction-00.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 doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (March 9, 2017) is 2605 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) == Unused Reference: 'RFC4817' is defined on line 355, but no explicit reference was found in the text == Outdated reference: A later version (-26) exists of draft-ietf-6man-segment-routing-header-05 == Outdated reference: A later version (-01) exists of draft-ietf-isis-encapsulation-cap-00 == Outdated reference: A later version (-09) exists of draft-ietf-ospf-encapsulation-cap-01 == Outdated reference: A later version (-27) exists of draft-ietf-ospf-segment-routing-extensions-12 == Outdated reference: A later version (-22) exists of draft-ietf-spring-segment-routing-mpls-07 == Outdated reference: A later version (-13) exists of draft-xu-intarea-ip-in-udp-04 == Outdated reference: A later version (-03) exists of draft-xu-mpls-service-chaining-00 Summary: 0 errors (**), 0 flaws (~~), 10 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group X. Xu, Ed. 3 Internet-Draft S. Bryant 4 Intended status: Standards Track Huawei 5 Expires: September 10, 2017 R. Raszuk 6 Bloomberg LP 7 U. Chunduri 8 Huawei 9 L. Contreras 10 Telefonica I+D 11 L. Jalil 12 Verizon 13 H. Assarpour 14 Broadcom 15 March 9, 2017 17 Unified Source Routing Instruction using MPLS Label Stack 18 draft-xu-mpls-unified-source-routing-instruction-00 20 Abstract 22 MPLS-SPRING is an MPLS-based source routing paradigm in which a 23 sender of a packet is allowed to partially or completely specify the 24 route the packet takes through the network by imposing stacked MPLS 25 labels to the packet. This MPLS -based source routing paradigm could 26 actually be leveraged to realize a unified source routing instruction 27 for both IPv4 and IPv6 underlays. 29 Status of This Memo 31 This Internet-Draft is submitted in full conformance with the 32 provisions of BCP 78 and BCP 79. 34 Internet-Drafts are working documents of the Internet Engineering 35 Task Force (IETF). Note that other groups may also distribute 36 working documents as Internet-Drafts. The list of current Internet- 37 Drafts is at http://datatracker.ietf.org/drafts/current/. 39 Internet-Drafts are draft documents valid for a maximum of six months 40 and may be updated, replaced, or obsoleted by other documents at any 41 time. It is inappropriate to use Internet-Drafts as reference 42 material or to cite them other than as "work in progress." 44 This Internet-Draft will expire on September 10, 2017. 46 Copyright Notice 48 Copyright (c) 2017 IETF Trust and the persons identified as the 49 document authors. All rights reserved. 51 This document is subject to BCP 78 and the IETF Trust's Legal 52 Provisions Relating to IETF Documents 53 (http://trustee.ietf.org/license-info) in effect on the date of 54 publication of this document. Please review these documents 55 carefully, as they describe your rights and restrictions with respect 56 to this document. Code Components extracted from this document must 57 include Simplified BSD License text as described in Section 4.e of 58 the Trust Legal Provisions and are provided without warranty as 59 described in the Simplified BSD License. 61 Table of Contents 63 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 64 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 65 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 66 3. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 3 67 4. Packet Forwarding Procedures . . . . . . . . . . . . . . . . 4 68 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 7 69 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 70 7. Security Considerations . . . . . . . . . . . . . . . . . . . 7 71 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 7 72 8.1. Normative References . . . . . . . . . . . . . . . . . . 7 73 8.2. Informative References . . . . . . . . . . . . . . . . . 7 74 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 9 76 1. Introduction 78 MPLS-SPRING [I-D.ietf-spring-segment-routing-mpls] is a MPLS-based 79 source routing paradigm in which a sender of a packet is allowed to 80 partially or completely specify the route the packet takes through 81 the network by imposing stacked MPLS labels to the packet. This 82 MPLS-based source routing paradigm could actually be leveraged to 83 realize a unified source routing instruction for both IPv4 and IPv6 84 underlays. In other words, the source routing instruction 85 information contained in IPv4 and IPv6 source routed packets could be 86 uniformly encoded as an MPLS label stack. As a result, there is no 87 need any more to develop and implement transport-dependent source 88 routing mechanisms for IPv4 and IPv6 respectively. 90 The traditional IPv4 and IPv6 source routing mechanisms by use of 91 IPv4 Source Routing Options and IPv6 Route Header Type 0 Extension 92 respectively have been deprecated due to their obvious security 93 vulnerabilities. IPv6 SPRING [I-D.ietf-6man-segment-routing-header] 94 is a newly proposed IPv6 source routing mechanism in which the source 95 route instruction information is encoded as an ordered list of 96 128-bit long IPv6 addresses and contained in the Source Routing 97 Header (SRH). Although it has overcome the security vulnerability 98 issues associated with the traditional IPv6 source routing mechanism 99 as claimed in [I-D.ietf-6man-segment-routing-header], it still has 100 the following obvious drawbacks at least: 1) the encapsulation 101 overhead is significant especially when the list of the explicit 102 routing hops is very long; 2) for those transit IPv6 routers that 103 don't support the flow label based load-balancing mechanism yet, the 104 ECMP load-balancing effect may be impacted seriously since they could 105 not recognize the SRH and therefore could not obtain the five tuple 106 of the source routed IPv6 packet; 3) it requires a new forwarding 107 logic on basis of the SRH and the forwarding performance associated 108 with the IPv6 SRH may still be a big concern for some hardware 109 platforms. 111 Section 3 describes various use cases for the unified source routing 112 and Section 4 describes a typical application scenario and how the 113 packet forwarding happens. 115 1.1. Requirements Language 117 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 118 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 119 document are to be interpreted as described in RFC 2119 [RFC2119]. 121 2. Terminology 123 This memo makes use of the terms defined in [RFC3031] and 124 [I-D.ietf-spring-segment-routing-mpls]. 126 3. Use Cases 128 The unified source routing mechanism across MPLS, IPv4 and IPv6 is 129 useful at least in the following use cases: 131 o Incremental deployment of the MPLS-SPRING technology. Since there 132 is no need to run any other label distribution protocol (e.g., 133 LDP, see [I-D.filsfils-spring-segment-routing-ldp-interop] for 134 more details.) on those non-MPLS-SPRING routers, the network 135 provisioning is greatly simplified, which is one of the major 136 claimed benefits of the MPLS-SPRING technology (i.e., running a 137 single protocol). 139 o MPLS-based Service Function Chaining (SFC) 140 [I-D.xu-mpls-service-chaining]. Based on the unified source 141 routing mechanism as described in this document, only SFC-related 142 nodes including Service Function Forwarders (SFF), Service 143 Functions (SF) and classifiers are required to recognize the SFC 144 encapsulation header in the MPLS label stack form, while the 145 intermediate routers just need to support vanilla IP forwarding 146 (either IPv4 or IPv6). In other words, it undoubtedly complies 147 with the transport-independence requirement as listed in the SFC 148 architecture document [RFC7665]. 150 o Traffic Engineering scenarios where only a few routers (e.g., the 151 entry and exit nodes of each plane in the dual-plane network ) are 152 specified as segments of explicit paths. In this way, only a few 153 routers are required to support the MPLS-SPRING capability while 154 all the other routers just need to support IP forwarding 155 capability, which would significantly reduce the deployment cost 156 of this new technology. 158 o A light-weight alternative to IPv6 SPRING technology 159 [I-D.ietf-6man-segment-routing-header]. The Source Routing Header 160 (SRH) [I-D.ietf-6man-segment-routing-header] consisting of an 161 ordered list of 128-bit long IPv6 addresses is now replaced by an 162 ordered list of 20-bit long labels (i.e., label stack). As a 163 result, the encapsulation overhead and forwarding performance 164 issues associated with the IPv6 SPRING are eliminated. 166 o A new IPv4 source routing mechanism which has overcome the 167 security vulnerability issues associated with the traditional IPv4 168 source routing mechanism. 170 4. Packet Forwarding Procedures 171 +-----+ +-----+ +-----+ +-----+ +-----+ 172 | A +-------+ B +-------+ C +--------+ D +--------+ H | 173 +-----+ +--+--+ +--+--+ +--+--+ +-----+ 174 | | | 175 | | | 176 +--+--+ +--+--+ +--+--+ 177 | E +-------+ F +--------+ G | 178 +-----+ +-----+ +-----+ 180 +--------+ 181 |IP(A->E)| 182 +--------+ +--------+ 183 | L(G) | |IP(E->G)| 184 +--------+ +--------+ +--------+ 185 | L(H) | | L(H) | |IP(G->H)| 186 +--------+ +--------+ +--------+ 187 | Packet | ---> | Packet | ---> | Packet | 188 +--------+ +--------+ +--------+ 189 Figure 1 191 As shown in Figure 1, Assume Router A, E, G and H are MPLS-SPRING- 192 capable routers while the remaining are only capable of forwarding IP 193 packets. Router A, E, G and H advertise their Segment Routing 194 related information via IS-IS or OSPF. Now assume router A wants to 195 send a given IP or MPLS packet via an explicit path of {E->G->H}, 196 router A would impose an MPLS label stack corresponding to that 197 explicit path on the received IP packet. Since there is no Label 198 Switching Path (LSP) towards router E, router A would replace the top 199 label indicating router E with an IP-based tunnel for MPLS (e.g., 200 MPLS-over-UDP [RFC7510] or MPLS-over-GRE [RFC4023]) towards router E 201 and then send it out. In other words, router A would pop the top 202 label and then encapsulate the MPLS packet with an IP-based tunnel 203 towards router E. When the IP-encapsulated MPLS packet arrives at 204 router E, router E would strip the IP-based tunnel header and then 205 process the decapsulated MPLS packet accordingly. Since there is no 206 LSP towards router G which is indicated by the current top label of 207 the decapsulated MPLS packet, router E would replace the current top 208 label with an IP-based tunnel towards router G and send it out. When 209 the packet arrives at router G, router G would strip the IP-based 210 tunnel header and then process the decapsulated MPLS packet. Since 211 there is no LSP towards router H, router G would replace the current 212 top label with an IP-based tunnel towards router H. Now the packet 213 encapsulated with the IP-based tunnel towards router H is exactly the 214 original packet that router A had intended to send towards router H. 215 If the packet is an MPLS packet, router G could use any IP-based 216 tunnel for MPLS (e.g., MPLS-over-UDP [RFC7510] or MPLS-over-GRE 217 [RFC4023]). If the packet is an IP packet, router G could use any IP 218 tunnel for IP (e.g., IP-in-UDP [I-D.xu-intarea-ip-in-udp] or GRE 220 [RFC2784]). That original IP or MPLS packet would be forwarded 221 towards router H via an IP-based tunnel. When the encapsulated 222 packet arrives at router H, router H would decapsulate it into the 223 original packet and then process it accordingly. Note that in the 224 above description, it's assumed that the label associated with each 225 prefix-SID advertised by the owner of the prefix-SID is a Penultimate 226 Hop Popping (PHP) label (e.g., the NP-flag 227 [I-D.ietf-ospf-segment-routing-extensions] associated with the 228 corresponding prefix SID is not set). Figure 2 demostrates the 229 packet walk in the case where the label associated with each prefix- 230 SID advertised by the owner of the prefix-SID is not a Penultimate 231 Hop Popping (PHP) label (e.g., the NP-flag 232 [I-D.ietf-ospf-segment-routing-extensions] associated with the 233 corresponding prefix SID is set). 235 +-----+ +-----+ +-----+ +-----+ +-----+ 236 | A +-------+ B +-------+ C +--------+ D +--------+ H | 237 +-----+ +--+--+ +--+--+ +--+--+ +-----+ 238 | | | 239 | | | 240 +--+--+ +--+--+ +--+--+ 241 | E +-------+ F +--------+ G | 242 +-----+ +-----+ +-----+ 244 +--------+ 245 |IP(A->E)| 246 +--------+ +--------+ 247 | L(E) | |IP(E->G)| 248 +--------+ +--------+ +--------+ 249 | L(G) | | L(G) | |IP(G->H)| 250 +--------+ +--------+ +--------+ 251 | L(H) | | L(H) | | L(H) | 252 +--------+ +--------+ +--------+ 253 | Packet | ---> | Packet | ---> | Packet | 254 +--------+ +--------+ +--------+ 255 Figure 2 257 Note that as for which tunnel encapsulation type should be used, it 258 could be manually specified on each tunnel ingress routers or be 259 learnt from the tunnel egress routers' advertisements of its tunnel 260 encapsulation capability. How to advertise the tunnel encapsulation 261 capability using IS-IS or OSPF are specified in 262 [I-D.ietf-isis-encapsulation-cap] and 263 [I-D.ietf-ospf-encapsulation-cap] respectively. 265 5. Acknowledgements 267 Thanks Joel Halpern, Bruno Decraene and Loa Andersson for their 268 insightful comments on this draft. 270 6. IANA Considerations 272 No IANA action is required. 274 7. Security Considerations 276 TBD. 278 8. References 280 8.1. Normative References 282 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 283 Requirement Levels", BCP 14, RFC 2119, 284 DOI 10.17487/RFC2119, March 1997, 285 . 287 8.2. Informative References 289 [I-D.filsfils-spring-segment-routing-ldp-interop] 290 Filsfils, C., Previdi, S., Bashandy, A., Decraene, B., 291 Litkowski, S., Horneffer, M., Milojevic, I., Shakir, R., 292 Ytti, S., Henderickx, W., Tantsura, J., and E. Crabbe, 293 "Segment Routing interoperability with LDP", draft- 294 filsfils-spring-segment-routing-ldp-interop-03 (work in 295 progress), March 2015. 297 [I-D.ietf-6man-segment-routing-header] 298 Previdi, S., Filsfils, C., Field, B., Leung, I., Linkova, 299 J., Aries, E., Kosugi, T., Vyncke, E., and D. Lebrun, 300 "IPv6 Segment Routing Header (SRH)", draft-ietf-6man- 301 segment-routing-header-05 (work in progress), February 302 2017. 304 [I-D.ietf-isis-encapsulation-cap] 305 Xu, X., Decraene, B., Raszuk, R., Chunduri, U., Contreras, 306 L., and L. Jalil, "Advertising Tunnelling Capability in 307 IS-IS", draft-ietf-isis-encapsulation-cap-00 (work in 308 progress), October 2016. 310 [I-D.ietf-ospf-encapsulation-cap] 311 Xu, X., Decraene, B., Raszuk, R., Chunduri, U., Contreras, 312 L., and L. Jalil, "Advertising Tunnelling Capability in 313 OSPF", draft-ietf-ospf-encapsulation-cap-01 (work in 314 progress), October 2016. 316 [I-D.ietf-ospf-segment-routing-extensions] 317 Psenak, P., Previdi, S., Filsfils, C., Gredler, H., 318 Shakir, R., Henderickx, W., and J. Tantsura, "OSPF 319 Extensions for Segment Routing", draft-ietf-ospf-segment- 320 routing-extensions-12 (work in progress), March 2017. 322 [I-D.ietf-spring-segment-routing-mpls] 323 Filsfils, C., Previdi, S., Bashandy, A., Decraene, B., 324 Litkowski, S., Horneffer, M., Shakir, R., 325 jefftant@gmail.com, j., and E. Crabbe, "Segment Routing 326 with MPLS data plane", draft-ietf-spring-segment-routing- 327 mpls-07 (work in progress), February 2017. 329 [I-D.xu-intarea-ip-in-udp] 330 Xu, X., Lee, Y., and F. Yongbing, "Encapsulating IP in 331 UDP", draft-xu-intarea-ip-in-udp-04 (work in progress), 332 December 2016. 334 [I-D.xu-mpls-service-chaining] 335 Xu, X., Bryant, S., Assarpour, H., Shah, H., Contreras, 336 L., and d. daniel.bernier@bell.ca, "Service Chaining using 337 MPLS Source Routing", draft-xu-mpls-service-chaining-00 338 (work in progress), October 2016. 340 [RFC2784] Farinacci, D., Li, T., Hanks, S., Meyer, D., and P. 341 Traina, "Generic Routing Encapsulation (GRE)", RFC 2784, 342 DOI 10.17487/RFC2784, March 2000, 343 . 345 [RFC3031] Rosen, E., Viswanathan, A., and R. Callon, "Multiprotocol 346 Label Switching Architecture", RFC 3031, 347 DOI 10.17487/RFC3031, January 2001, 348 . 350 [RFC4023] Worster, T., Rekhter, Y., and E. Rosen, Ed., 351 "Encapsulating MPLS in IP or Generic Routing Encapsulation 352 (GRE)", RFC 4023, DOI 10.17487/RFC4023, March 2005, 353 . 355 [RFC4817] Townsley, M., Pignataro, C., Wainner, S., Seely, T., and 356 J. Young, "Encapsulation of MPLS over Layer 2 Tunneling 357 Protocol Version 3", RFC 4817, DOI 10.17487/RFC4817, March 358 2007, . 360 [RFC7510] Xu, X., Sheth, N., Yong, L., Callon, R., and D. Black, 361 "Encapsulating MPLS in UDP", RFC 7510, 362 DOI 10.17487/RFC7510, April 2015, 363 . 365 [RFC7665] Halpern, J., Ed. and C. Pignataro, Ed., "Service Function 366 Chaining (SFC) Architecture", RFC 7665, 367 DOI 10.17487/RFC7665, October 2015, 368 . 370 Authors' Addresses 372 Xiaohu Xu (editor) 373 Huawei 375 Email: xuxiaohu@huawei.com 377 Stewart Bryant 378 Huawei 380 Email: stewart.bryant@gmail.com 382 Robert Raszuk 383 Bloomberg LP 385 Email: robert@raszuk.net 387 Uma Chunduri 388 Huawei 390 Email: uma.chunduri@gmail.com 392 Luis M. Contreras 393 Telefonica I+D 395 Email: luismiguel.contrerasmurillo@telefonica.com 396 Luay Jalil 397 Verizon 399 Email: luay.jalil@verizon.com 401 Hamid Assarpour 402 Broadcom 404 Email: hamid.assarpour@broadcom.com