Internet Draft Internet Draft Eric Gray <draft-gray-mpls-arch-issues-00.txt> Lucent Technologies, Inc. Expires Oct 1998 Issues With MPLS Architecture Status of this Memo This document is an Internet-Draft. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." To learn the current status of any Internet-Draft, please check the "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe), munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or ftp.isi.edu (US West Coast). Abstract This document is intended to point out several issues with current proposals for MPLS architecture as adopted by the MPLS working group. Table of Contents Status of this Memo ...................................... 1 Abstract ................................................. 1 Table of Contents ........................................ 2 1 Architecture Issues ...................................... 2 1.1 Excessive Complexity ..................................... 2 1.2 Lack of Flexibility/Generality ........................... 3 1.3 Lack of Multicast and Explicit Route Support ............ 5 2 References ............................................... 7 3 Author Information ....................................... 7 Appendix A - Specific Editing Changes Recommended ........ 8 Gray, et al [Page 1] MPLS Architecture Issues - 2 - April 1998 1. Architecture Issues 1.1 Excessive Complexity Phasing In the familiar sense, the term architecture (in technical use) is used to bound the set of functions which need to be included in specifications of desirable protocol/behavior. In this way, people working on the different pieces can see how the whole is intended to fit together. Using the architecture as a guide, a group of people can prioritize various functional subsets into phases (or releases) each of which builds on pieces layed down in one or more previous phases. Generally, it is undesirable for an architecture to require the completion of all phases before realizing a useful product. With a variety of not-wholly-interoperable proprietary versions of essentially the same technology already being offered, it is important in our MPLS efforts for us to be able to define early phases of a standardized label switching technology that offers substantive functionality in as simplistic a way as possible in a manner consistent with an ongoing architecture. It is not clear that all of the contributors to the architecture draft agree that this is possible in the current draft [ARCH]. In particular, issues have been raised with draft proposals that do not address all of the functionality defined (in [ARCH]), and this seems to imply either that phasing is not possible with the current proposed architecture or that phasing is counter to the goals of those contributors. [ARCH] should indicate which pieces of the architecture are required to support what levels of functionality. Other elements relating to phasing of MPLS functionality are described in sections below. Definition The current draft architecture [ARCH] allows multiple choices in several key areas - providing no particular suggested priorities or preferred solutions. In addition, there are no less than 4 areas in which major issues are noted as FFS (for further study) - including LDP Procedures (section 4). As the first place where people look for these choices to be documented, this is a serious issue. Current consensus seems to be that the architecture should allow: Gray, et al [Page 2] MPLS Architecture Issues - 3 - April 1998 specification of LDP including explicit routes and simple QoS, specification for use of RSVP for label distribution, both intra- and inter-domain, for support of QoS or best effort (including explicit route) path setup and specification for use of BGP to distribute inter-domain labels within domains. Specification for these approaches to label setup may proceed in parallel; sufficiently well defined and implementable protocol would be included in an initial version of MPLS. Definition of other mechanisms for label switched path setup may be developed but are currently not considered priorities for an initial MPLS version. Decription Several of the descriptions (in [ARCH]) are - while rigorous in a mathematical/computability sense - very difficult to follow. While this allows implementers to determine if specifications based on this architecture will work, it does not generally let users, managers, etc. (in short - the people paying the bills) understand whether or not an implementation would be useful, or exactly what they want or need. In addition, these complicated descriptions increase the likelyhood that implementers will not build products that play well with each other. An example of this is the description of LSPs in section 2.11. Another, perhaps simpler, approach to describing an LSP of level m would be to define "ingress", "intermediate" and "egress" LSR behaviors from the perspective of the local LSR's handling of a packet for that LSP and then simply stating that the LSP is made up of these elements. 1.2 Lack of Flexibility/Generality Terminology What is the term for the collection of LSPs which any particular LSR is a part of? An MPLS domain is the theoretical outer bound for this conceptual entity, yet - at any given time - this thing will be some subset of the MPLS domain for each LSR within it. Amay overlap MPLS domains in practice as well - in special cases where LSPs are established between hosts (or networks) in one MPLS domain and hosts (or networks) in some other(s). Having a term for this would help in understanding a few of the issues with other parts of the architecture - for example, section 2.15.1 ("Loop Prevention") which specifies a particular loop prevention mechanism that requires per-LSP state maintenance (downstream LSR ID list) at each LSR. Gray, et al [Page 3] MPLS Architecture Issues - 4 - April 1998 Also, the terminology section defines the term LIB which appears to be composed of the NHLFE, ILM and STN (described in sections 2.7, 2.8 and 2.9, respectively) - although nowhere is this fact (if it is a fact) made clear. The architecture should make it clear that the descriptions associated with these sections are "functions" required of an LSR - not hard behavioral requirements or specifications. (No one should assume based on this draft - should it become an RFC - that there will be corresponding MIB variables for the mappings described). This is crucial because an implementation may establish tables in ways that are simpler and more consistent with other things being done in the specific implementation which - never-the-less - do the same things. As an issue relating to terminology (although not necessarily to flexibility and/or generality), the terms "LSP Tunnel" and "MPLS Hierarchy" are introduced in section 2.6 and discussed later in section 2.19 (and listed in the Table of Contents) but are not included in Terminology (section 1.2). Both terms are used in various parts of the draft. Behavior At least one aspect of the architecture appears to assume that a particular type of behavior is always possible - i.e. - use of a label by an LSR not negotiated between that LSR and a neighbor. In section 2.11, it is possible for an egress "LSR" to have only the ability to require its upstream neighbors to "pop" the label stack and it is possible for one (or more) of those neighbors to be unable to do so (both situations are described in the text). Obviously, this is an untenable combination of implementations, yet this issue is not made clear. This is just one example of a situation where it is obvious that an LSR must have the ability to refuse a label - and this may need to be an architectural requirement. Another section - 2.15.1 - actually specifies behavior (instead of specifying required functions of a specification) which is not consistent with other specifications accepted by the MPLS working group to accomplish the same thing. This section has an in-depth description of a loop prevention scheme which may not be required at all (the same effect can be achieved in any of a variety of ways using LDP - see [LDP] and [GLDP]). Section 2.16.3 defines specific behaviors for LDP rather than the requirements of the architecture. As an architecture, it could suggest such behavior as an illustrative example. At present, it implies that LSRs must announce their merge capability so that their downstream neighbors may determine whether or not to provide labels. What appears to be actually required of LDP is a means to provide more than one label for each FEC to an upstream neighbor Gray, et al [Page 4] MPLS Architecture Issues - 5 - April 1998 - when such labels are requested/required. In fact, the draft currently gives an example in which the merge-capability is not useful in determining neighbor behavior (bottom of page 25). Completeness Section 2.16.4.1 leaves the topic of avoiding VCI collisions as for further study. What the architecture needs to state is the requirement on LDP to provide a means for ensuring that any VCI collisions are detected and corrected. It is not necessary for the architecture to select a mechanism - only state the need. Inconsistency Text in section 2.6 is inconsistent with text in section 2.7. Section 2.6 states that forwarding is "based exclusively on the" top-of-stack label. Clearly, a reasonable implementation may map an incoming label to a pop-and-look-again instruction. This is one way to implement use of a label stack within an LSR and may be an essential approach in cases where a pop is required more than once at the same LSR (such as when it is the "egress" for more than one stacking level - or "tunnel" within a "tunnel"). Indeed, text in section 2.7 describes approximately this same scenario (i.e. - "pop the label stack" with next hop equal to the local LSR - which is logically the same thing). 1.3 Lack of Multicast and Explicit Route Support Multicast This section should at least suggest a relative priority for support of multicast in MPLS and may be updated to reflect work that is ongoing. Explicit Route Section 2.13 seems to take an architectural feasibility position that is unjustified. As a result, it [ARCH] appears to make the use of explicit routes a non-goal of the architecture for phases of MPLS deployment for which this architecture might apply. Two essentially incorrect statements are made: 1) LSRs may not mix explicit route and hop-by-hop routes on the same LSP and 2) all LSRs on intended LSPs must be able to support explicit routes in order to be able to use explicit routes to establish the LSP. These statements are not made in the form of an architecture choice - rather they are stated as facts. What is required is that the architecture state the issues associated with use of explicit routes which must be dealt with in protocols (e.g. - LDP) if MPLS is to support explicit routes in such a way that they will work (and stay loop-free). A goal of any protocols developed for the Gray, et al [Page 5] MPLS Architecture Issues - 6 - April 1998 architecture should be to minimize the requirements imposed on all implementations to support functional extensions. Since a number of working group members feel that explicit route support will be required (if not immediately, then eventually), the architecture should endeavor to account for how explicit route support will be supported in the future - with mixed MPLS version deployment - if it is not to be supported initially. An example of a combination of explicit and hop-by-hop routes is when one (or more) of the routers in the list of routers in a explicit route is a "wild card" - indicating that any available router(s) between the previous and next specified routers on the explicit path will work. An example of how LDP might support explicit routes - even where not all LSRs specified on the path support explicit routes can be seen by simply using LDP extensions which are opaque to those LSRs that do not support explicit routes. See [GLDP] for an example description of required LSR behavior. A commonly held belief is that MPLS must support explicit routes to allow for traffic engineering - and this is acknowledged in the architecture draft. However, [ARCH] goes further in saying that support for explicit routes is not a requirement for every LSR (and consequently, not a goal of MPLS) - throughout the applicability of the architecture. In this [ARCH] is just wrong. In section 2.16.3, the architectural requirements for merging of explicit route LSPs is left for further study. It is simple to define these requirements, however: LSPs established for best- effort forwarding on an explicit route LSP may be merged (if the specific LSR is capable of doing so both in general and as an explicit route); an LDP may define how LSRs can determine if stream merging is permissible in cases where it is not possible for the local LSR to determine that the associated LSP is best- effort - otherwise, stream-merging of explicit route LSPs is not permitted. (Note that one consequence of not requiring LSRs to support explicit routes is that this becomes harder - but not impossible - to do in LDP). Gray, et al [Page 6] MPLS Architecture Issues - 7 - April 1998 2. References [ARCH] "A Proposed Architecture for MPLS", E. Rosen, A. Viswanathan, R. Callon, work in progress, draft-ietf-mpls-arch-00.txt, August, 1997. [GLDP] "Generic Label Distribution Protocol Specification", Gray, et al, work in progress, Internet Draft , November, 1997. [LDP] "LDP Specification", N. Feldman, et al, work in progress, Internet Draft <draft-feldman-ldp-spec-00.txt>, November, 1997. 3. Author Information Eric Gray Lucent Technologies, Inc. 1600 Osgood Street North Andover, MA 01845 ewgray@lucent.com Gray, et al [Page 7] MPLS Architecture Issues - 8 - April 1998 Appendix A - Specific Editing Changes Recommended section 2.11, description of LSP of level m #1 - should read: 1. R1, the "LSP Ingress", pushes a label, or label stack, onto P's stack resulting in a label stack of depth m; (required for generality) - #2 should read: 2. For all i, 1=0) when received by Ri and prior to popping k labels from the stack; (required for generality, consistency with #5) - #5 may be easier to read written as follows: 5. For all i, 10). - Above the last paragraph on page 15 of the current (00) draft, add the following new paragraph: Also note that R[i+1] in the above described LSP may receive P with a label stack of depth m+k and pop k labels off of the stack prior to making a forwarding decision. This would happen, for example, if some non-zero number of forwarding devices between R[i] and R[i+1] are on a LSP of level m+k (k>0) and either penultimate hop popping is not supported or does not reduce k to zero. Gray, et al [Page 8] MPLS Architecture Issues - 9 - April 1998 section 2.11 - alternative description: A "Label Switched Path (LSP) of level m" for a particular packet P is a sequence of LSRs, where R1 is the LSP ingress, Rn is the LSP egress and all other LSRs are intermediate LSRs relative to P and m. An "LSP ingress" pushes a label, or label stack, onto P's label stack, in this case resulting in a label stack of depth m. An "LSP egress" receives packets labeled with distinguishable labels assigned to the current labeling depth, for which it assigned to an upstream LSR(s) (of depth plus one relative to current) the well known label corresponding to penultimate hop pop, receives packets for which it will pop k>0 labels, or both. If an LSR is the "LSP Egress" to an LSP of level m, then: in the first case, P is received with a labeling depth of m-1; in the second case, P is received with a labeling depth of m and pops k>0 labels off of the stack; in the third case, P is received with a labeling depth of m-1 and pops k>0 labels off of the stack. The term "intermediate LSR" has no generalizable meaning except relative to an LSP of level m. Intermediate LSRs for an LSP of level m are LSRs that make their forwarding decisions, relative to P, based on the level m label. Intermediate LSRs may also provide LSP ingress or egress to LSPs of level m+k (k>0) and still function as intermediate LSRs for an LSP of level m. (Above is recommended as in addition to or in place of all of the text in section 2.11 up to but not including the final paragraph on page 15) Gray, et al [Page 9] MPLS Architecture Issues - 10 - April 1998 section 2.16.3 - first paragraph The number of labels required per FEC depends on the number of contiguous non-merge-capable LSRs directly upstream of the LSR relative to the FEC in question. This is true because a merge capable LSR directly up stream will require only one label per FEC, regardless of the number it needs to provide to upstream neighbors itself. - third paragraph, first sentence Change "a single downstream streams" to "each downstream stream" (at end of sentence). Gray, et al [Page 10]