<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.19 (Ruby 2.6.10) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-kompella-teas-mpte-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="MPTE">Multipath Traffic Engineering</title>

    <author initials="K." surname="Kompella" fullname="Kireeti Kompella">
      <organization>Juniper Networks</organization>
      <address>
        <postal>
          <city>Sunnyvale</city>
          <region>California</region>
          <code>94089</code>
          <country>United States of America</country>
        </postal>
        <email>kireeti.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="L." surname="Jalil" fullname="Luay Jalil">
      <organization>Verizon</organization>
      <address>
        <postal>
          <city>Richardson</city>
          <region>Texas</region>
          <code>75081</code>
          <country>United States of America</country>
        </postal>
        <email>luay.jalil@verizon.com</email>
      </address>
    </author>
    <author initials="M." surname="Khaddam" fullname="Mazen Khaddam">
      <organization>Cox Communications</organization>
      <address>
        <postal>
          <city>Atlanta</city>
          <region>Georgia</region>
          <code>30328</code>
          <country>United States of America</country>
        </postal>
        <email>mazen.khaddam@cox.com</email>
      </address>
    </author>
    <author initials="A." surname="Smith" fullname="Andy Smith">
      <organization>Oracle Cloud Infrastructure</organization>
      <address>
        <postal>
          <city>Austin</city>
          <region>Texas</region>
          <code>78741</code>
          <country>United States of America</country>
        </postal>
        <email>andy.j.smith@oracle.com</email>
      </address>
    </author>

    <date year="2025"/>

    <area>Routing</area>
    <workgroup>TEAS WG</workgroup>
    <keyword>multipath, traffic engineering</keyword>

    <abstract>


<?line 65?>

<t>Shortest path routing offers an easy-to-understand, easy-to-implement method of establishing loop-free connectivity in a network, but offers few other features. Equal-cost multipath (ECMP), a simple extension, uses multiple equal-cost paths between any two points in a network: at any node in a path (really, Directed Acyclic Graph), traffic can be (typically equally) load-balanced among the next hops. ECMP is easy to add on to shortest path routing, and offers a few more features, such as resiliency and load distribution, but the feature set is still quite limited.</t>

<t>Traffic Engineering (TE), on the other hand, offers a very rich toolkit for managing traffic flows and the paths they take in a network. A TE network can have link attributes such as bandwidth, colors, risk groups and alternate metrics. A TE path can use these attributes to include or avoid certain links, increase path diversity, manage bandwidth reservations, improve service experience, and offer protection paths. However, TE typically doesn't offer multipathing as the tunnels used to implement TE usually take a single path.</t>

<t>This memo proposes multipath traffic-engineering (MPTE), combining the best of ECMP and TE. The multipathing proposed here need not be strictly equal-cost, nor the load balancing equally weighted to each next hop. Moreover, the desired destination may be reachable via multiple egresses. The proposal includes a protocol for signaling MPTE paths using various types of tunnels, some of which are better suited to multipathing.</t>



    </abstract>



  </front>

  <middle>


<?line 73?>

<section anchor="intro"><name>Introduction</name>

<t>Operators managing traffic within their networks have several tools, among them:</t>

<t><list style="numbers" type="1">
  <t>Equal-cost Multipath (ECMP): balance traffic along multiple paths. This yields some resilience and some traffic management, as traffic can be load-balanced across multiple paths. To use ECMP effectively, one may have to adjust link metrics to allow multiple paths to have the same overall distance.</t>
  <t>Traffic Engineering (TE): state constraints for a path from an ingress router to an egress router, and let a path computation engine compute it. This gives much greater control over the nodes and links traversed, but is usually limited to finding a single path from ingress to egress <xref target="RFC2702"/>.</t>
  <t>Multi-egress: allow traffic from an ingress router to a destination dst to use several egress routers, all of which have routes to that destination. dst may be an Internet prefix <xref target="RFC4271"/>, a VPN prefix <xref target="RFC4364"/>, an EVPN address <xref target="RFC7432"/>, a VPLS site <xref target="RFC4761"/>, <xref target="RFC4762"/> or some other service destination. For BGP-signaled destinations, this requires that the BGP tie-breaking algorithm yield multiple results (rather than a single one), all of which become candidates for egress.</t>
</list></t>

<t><xref target="RFC2702"/> describes requirements for MPLS-based TE, and thus is relevant to this memo. At the same time, the authors appear to believe that one can either have TE or multipathing, but not both. This is further emphasized by the notion of a Label Switched Path, which is used to implement MPLS-based TE. RSVP-TE (<xref target="RFC3209"/>), the protocol designed to meet the requirements of <xref target="RFC2702"/>, builds a single path from one ingress to one egress (for unicast traffic).</t>

<t>In order to satisfy the constraints, TE often uses non-shortest paths. To do so without looplng packets, a tunnel is used. Such tunnels have to be signaled. RSVP-TE is a signaling protocol for MPLS-based tunnels.</t>

<t>In this memo, we introduce a new tool: multipath TE (MPTE). This allows an operator to specify constraints for paths (as in TE), specify multiple egresses, and use multiple paths to each egress. Effectively, MPTE combines the advantages of the three tools above. The resulting set of paths from an ingress to egresses is a Directed Acyclic Graph (DAG), here called an MPTE DAG or MPTED. Finally, this memo allows the use of multiple types of tunnels. The main contribution of this memo is a protocol for signaling a (multipath) unicast tunnel across an MPTED.</t>

<section anchor="terminology"><name>Terminology</name>

<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.
<?line -6?></t>

<section anchor="definition-of-commonly-used-terms"><name>Definition of Commonly Used Terms</name>

<t>This section provides definitions for terms and abbreviations that have a specific meaning to the MPTE protocol and that are used throughout this memo.</t>

<dl>
  <dt>constraints:</dt>
  <dd>
    <t>desired properties of paths between ingresses and egresses.</t>
  </dd>
  <dt>directed acyclic graph:</dt>
  <dd>
    <t>a directed graph that has no cycles.</t>
  </dd>
  <dt>directed graph:</dt>
  <dd>
    <t>a set of nodes and directed links. A network is represented by a directed graph.</t>
  </dd>
  <dt>egress:</dt>
  <dd>
    <t>an end node of an MPTE DAG.</t>
  </dd>
  <dt>ingress:</dt>
  <dd>
    <t>a starting node of an MPTE DAG.</t>
  </dd>
  <dt>link:</dt>
  <dd>
    <t>A (directed) edge between two nodes. A pair of nodes may have 0 or more links between them. A link between nodes u and v will be denoted by (u, v, i), where i is u's oif for the link. A link may have associated attributes, in particular, a metric.</t>
  </dd>
  <dt>metric:</dt>
  <dd>
    <t>a link attribute denoted by met(u, v, i), a positive number.</t>
  </dd>
  <dt>node:</dt>
  <dd>
    <t>a vertex of a graph. A node may have associated attributes.</t>
  </dd>
  <dt>outgoing interface:</dt>
  <dd>
    <t>a unique number (oif) assigned by a node for each outgoing link it has.</t>
  </dd>
  <dt>path length:</dt>
  <dd>
    <t>the sum of the metrics of the links that constitute path p, denoted by len(p)</t>
  </dd>
  <dt>shortest path:</dt>
  <dd>
    <t>a path between a pair of nodes u, v with minimum length. The set of shortest paths between u and v is a DAG, denoted by sp(u, v). The length of a shortest path from u to v is denoted by min(u, v)</t>
  </dd>
  <dt>slack:</dt>
  <dd>
    <t>a path p from u to v is acceptable with slack s if len(p) &lt;= min(u, v) + s.</t>
  </dd>
  <dt>traffic trunk:</dt>
  <dd>
    <t>a unidirectional aggregate of traffic flows from an ingress to a set of egresses that is treated identically in the forwarding plane.</t>
  </dd>
</dl>

<t>The following abbreviations are used in this memo:</t>

<dl>
  <dt>CSPF:</dt>
  <dd>
    <t>constrained shortest path first. A modification to SPF to take into account path constraints.</t>
  </dd>
  <dt>DAG:</dt>
  <dd>
    <t>directed acyclic graph. The result of a multipath SPF or CSPF computation is a DAG.</t>
  </dd>
  <dt>ECMP:</dt>
  <dd>
    <t>equal-cost multipath.</t>
  </dd>
  <dt>FALB:</dt>
  <dd>
    <t>flow-aware load balancing</t>
  </dd>
  <dt>LB:</dt>
  <dd>
    <t>load balancing</t>
  </dd>
  <dt>LSP:</dt>
  <dd>
    <t>label-switched path</t>
  </dd>
  <dt>MC:</dt>
  <dd>
    <t>MPTED computer: the entity computing the MPTED, typically the ingress (if there is a single ingress) or a Path Computation Element</t>
  </dd>
  <dt>MPTE:</dt>
  <dd>
    <t>multipath TE with path constraints (including a slack) using nECMP paths from an ingress to one or more egresses.</t>
  </dd>
  <dt>MPTED:</dt>
  <dd>
    <t>an MPTE DAG resulting from CSPF-type computation on MPTE constraints.</t>
  </dd>
  <dt>MPTEP:</dt>
  <dd>
    <t>MPTE protocol: the protocol used to signal MPTEDs.</t>
  </dd>
  <dt>nECMP:</dt>
  <dd>
    <t>non-equal-cost multipath; generally qualified by "with slack s", meaning within slack s of the minimum path length.</t>
  </dd>
  <dt>oif:</dt>
  <dd>
    <t>outgoing interface index</t>
  </dd>
  <dt>PCE:</dt>
  <dd>
    <t>Path Computation Element</t>
  </dd>
  <dt>SPF:</dt>
  <dd>
    <t>shortest path first. Typically refers to Dijkstra's algorithm for computing shortest paths between a given pair of nodes, or pairwise between all nodes.</t>
  </dd>
  <dt>SRG:</dt>
  <dd>
    <t>shared risk group -- nodes and/or links that share "risk" (e.g., have common power, or use a common fiber conduit)</t>
  </dd>
  <dt>TE:</dt>
  <dd>
    <t>traffic engineering</t>
  </dd>
</dl>

</section>
</section>
</section>
<section anchor="overview"><name>Overview</name>

<t>Consider <xref target="nw-1"/>:</t>

<figure title="Network 1" anchor="nw-1"><artwork><![CDATA[
    2 == 3         Link Metrics (symm): 0-2: 100; 0-4: 200; 0-6: 110
 r/ r\  r\\        1-2 (not shown): 110; 1-4 (not sh): 100; 1-6: 100
 0 -- 4 -- 5       2-3: (100, 100); 2-4: 100; 3-5: (100, 110)
  \  / \  / \      4-5: 100; 4-6: 110; 4-7: 50
1 - 6 = 7 -- 8     5-7: 100; 5-8: 10; 6-7: (100, 110); 7-8: 50
      r            Node pairs 2-3, 4-5 and 6-7 each have two links.
                   Links marked with 'r' have color red.
]]></artwork></figure>

<section anchor="multipathing"><name>Multipathing</name>

<section anchor="ecmp-slack-0-from-node-0-to-node-5"><name>ECMP (slack 0) from node 0 to node 5</name>

<t>There are 4 ECMP paths from node 0 to node 5:</t>

<t><list style="numbers" type="1">
  <t>0-2=3-5 (2 paths)</t>
  <t>0-2-4-5</t>
  <t>0-4-5</t>
</list></t>

<t>These 4 distinct paths all have length 300.</t>

</section>
<section anchor="necmp-from-node-0-to-node-5-with-slack-10"><name>nECMP from node 0 to node 5 with slack 10</name>

<t>There are 7 nECMP paths with slack 10 to node 5:</t>

<t><list style="numbers" type="1">
  <t>0-2=3=5 (4 paths)</t>
  <t>0-2-4-5</t>
  <t>0-4-5</t>
  <t>0-6-7-5</t>
</list></t>

<t>These 7 paths have lengths 300 or 310. Thus, allowing nECMP paths a slack of 10 has yielded 3 additional paths, which provide increased diversity and load balancing, and possibly decreased congestion.</t>

</section>
<section anchor="multipathing-from-node-0-to-egresses-5-8"><name>Multipathing from node 0 to egresses {5, 8}</name>

<t>If, for some traffic trunk that starts at node 0, nodes 5 and 8 are equally good as egresses, then one can compute an ECMPD from 0 to {5, 8}; this yields 4 paths to 5 and 6 paths to 8, for a total of 10 paths this traffic trunk can take. Similarly, a nECMP DAG to {5, 8} with slack 10 has 15 paths, whereas one with slack 5 has the same 11 paths as with slack 0.</t>

</section>
<section anchor="mpted-from-ingresses-0-1-to-egresses-5-8"><name>MPTED from ingresses {0, 1} to egresses {5, 8}</name>

<t>If traffic from node 0 to nodes {5, 8} and from node 1 to nodes {5, 8} have common characteristics, it may make sense to compute a single DAG from {0, 1} to {5, 8}. Doing so allows the operator to view this entire DAG as one logical entity; a nice side benifit is reduced control and data plane state due to state sharing.</t>

</section>
</section>
<section anchor="load-balancing"><name>Load balancing</name>

<t>Nodes in a netword have a Forwarding Information Base (FIB). A FIB maps a packet's destination address da to one or more "next hops". When a packet with address da arrives at n, n sends the packet to one of the next hops. n typically will distribute packets in a given ratio among the next hops. This is load balancing.</t>

<t>The main goal of ECMP/nECMP is to supply as many nodes as possible in the MPTED with multiple next hops on which to forward the traffic trunk. At such nodes, traffic belonging to the trunk can be distributed among the next hops instead of going to a single next hop. This has the potential to reduce congestion and provide better utilization of available links.</t>

<section anchor="flow-aware-load-balancing"><name>Flow-aware load balancing</name>

<t>When load balancing packets from a traffic trunk, it is often required that packets from a given flow be sent to the same next hop. This improves the probability of in-order delivery of packets in that flow, which is important for certain types of traffic. This is called flow-aware load balancing (FALB). The most common flow in IP traffic is defined by a 5-tuple consisting of the source IP address, the destination IP address, the protocol, the source port and the destination port. A 16- or 20-bit hash of this 5-tuple is called the packet's entropy.</t>

<t>There are two common ways to achieve FALB of IP traffic. One is to do a "deepish" packet inspection (dPI), find the relevant 5-tuple, and use that to compute the packet's entropy. The entropy is then used to ensure that packets in the flow are sent to the same next hop. This memo suggests sending TE traffic over a tunnel (see {tunnels}); this makes the identification of IP flows expensive and error-prone.</t>

<t>Another way of accomplishing this is to insert the entropy in the tunnel header. Many of the tunnels suggested in this memo have such a field. The ingress is in a good position to identify flows, and, when encapsulating the packet into the tunnel, can insert the entropy in the header. The heavy lifting of identifying flows is thus placed on the ingress. Transit nodes can simply use the entropy field to correctly map packets in a flow to the same next hop, thus ensuring FALB.</t>

</section>
<section anchor="per-packet-load-balancing"><name>Per-packet load balancing</name>

<t>FALB is often required and is a good default behavior, especially as end applications may be expecting packets in a flow to be delivered in order. However, FALB has the issue that it attempts (statistically) to place roughly the number of flows in the given ratio on the outgoing links; that may not place traffic in the same ratio, as flows need not carry the same traffic. In some cases (typically when configured to), one can do per-packet load balancing (PPLB), meaning that load balancing is no longer flow aware. This can be done when the end applications do not require packets in a flow to be in order, or if some (bookended) devices outside the network put the packets back in order before delivering them to the applications (typically by addind a sequence number). When feasible, PPLB gives much better load distribution, and is currently the subject of investigation, implementation and standardization.</t>

<t>One can achieve this by configuring each router in the DAG to do PPLB for the traffic trunks in the DAG, or more simply by the ingress router assigning entropy at random to the traffic it places in the DAG. The latter approach keeps the decision of which DAGs (and corresponding traffic trunks) should be flow-aware and which not at the ingress; all other nodes simply do what the entropy fields tells them to do.</t>

</section>
</section>
<section anchor="constraints"><name>Constraints</name>

<t>Constraints are an intent-based specification of acceptable paths that a traffic trunk may take from ingress to egress(es). Constraints are thus an abstract way to control the resources that a particular traffic trunk uses.</t>

<t>One way to do this is to add "resource class attributes" or "colors" <xref target="RFC2702"/> to links, and then specify "include" and "exclude" sets. An include set means that all links that a path traverses must contain at least one element of the include set. An exclude set means that no link in the path can contain any color from the exclude set.</t>

<t>Another way is to specify a (maximum) bandwidth that a traffic trunk can carry. This means that all links in the path must have that much available capacity. Packets exceending the bandwidth can forwarded normally, marked as droppable, or dropped.</t>

<t>Let's add some simple constraints to our DAG. We associate the color red to one of the links from B to C, and to the shorter of the links from F to G. Then, we constrain the paths to "exclude red", meaning avoid links with color red. This yields the following:</t>

<t><list style="symbols">
  <t>ECMP from node 0 to node 5 with constraints "include red or blue" yields a single path.</t>
</list></t>

</section>
<section anchor="protection"><name>Protection</name>

<t>One very useful aspect of TE is the ability to specify that a path must be link- or node- or shared-risk-disjoint from another path. That means that the two paths do not have links or nodes or "shared risk groups". Additionally, one can build protection paths for an existing path to protect against link or node failures <xref target="RFC4090"/>. This is especially important as TE currently takes a single path through the network, meaning that a link or node failure will result in dropped traffic until the TE path is restored.</t>

<t>While not quite as crucial in the case of an MPTED, since ideally, there will be multiple nexthops at each node, there will be cases where a node has a single next hop, or all next hops share a common failure mode. Identifying these cases and building protection paths for such nodes will be described in a future version of this memo.</t>

</section>
<section anchor="tunnels"><name>Tunnels</name>

<t>The shortest path first algorithm <xref target="SPF"/> is an easy-to-implement and very efficient algorithm whereby all routers in a network can agree on the path that a packet to a particular destination should take. That means, if all routers are agreed (roughly) on the topology and metrics of the network, they will forward packets in a loop-free manner to all destinations -- without the need for signaling or tunnels. However, an MPTED will not take the same paths -- some paths may be rejected as they don't conform to the constraints, and others may be used even though they are not shortest paths. Thus, to route packets in a traffic trunk over a computed MPTED, a tunnel is typically used. This tunnel will have to be signaled to the MPTED nodes. The tunnel may be MPLS- or IP-based.</t>

<t>A few things are important about tunnels: whether they carry an entropy field (EF), whether they have a "discriminator" (D) that allows multiple tunnels between an ingress-egress pair, whether they allow multiple egresses (ME), and whether they allow multiple ingresses (MI). These will be discussed in the description of the tunnels below.</t>

<t>In the memo, we consider the following tunnel types:</t>

<t><list style="numbers" type="1">
  <t>IP-in-IP: <xref target="RFC2003"/> encapsulation allows the creation of an "outer" IP header to carry a payload packet (which is typically an IP payload). The outer IP header's protocol field indicates the "protocol" of the inner payload packet. The outer header of IP-in-IP tunnel doesn't contain an EF; transit nodes can either spray packets across outgoing next hops, attempt to do dPI, or use the same next hop for all packets. To accommodate ME, the egresses have to have the same (anycast) IP address which would be used as the destination IP of the tunnel. MI is not possible.</t>
  <t>GRE: Generic Routing Encapsulation. We include in this definition <xref target="RFC2784"/> and <xref target="RFC2890"/> with the Key Present (bit 2) set to 0. This is similar to IP-in-IP; however, the payload is not required to be IP. There is no EF in the header. D, ME and MI same as for IP-in-IP.</t>
  <t>GRE-E: GRE with Key Present; the Key value is the EF. D, ME and MI same as for IP-in-IP.</t>
  <t>GRE6: GRE with IPv6 addresses. The entropy is carried in the Flow Label field of the IPv6 header. D, ME and MI same as for IP-in-IP.</t>
  <t>G-in-U: GRE-in-UDP <xref target="RFC8086"/>. The UDP source port is the EF; the GRE Key, if present, can be ignored from a load balancing point of view. D, ME and MI as in IP-in-IP.</t>
  <t>MPLS-in-UDP <xref target="RFC7510"/>. The UDP source port is the EF; D, ME and MI as in IP-in-IP.</t>
  <t>SigLab (signaled label switching). The labels to be used are signaled. Signaling proceeds from egress(es) to ingress(es). An entropy label can be used as the EF. At each node, a different label is used for each MPTED; this is the discriminator. ME and MI are both allowed.</t>
  <t>StatLab (static label). A single statically-assigned label defines the tunnel throughout the MPTED. Here, a block of MPLS labels is given to a label allocator; these labels MUST NOT be allocated by any node in the network. EF, D, ME and MI are as for SigLab. The MPTED computer (MC) must interact with the allocator when creating or deleting an MPTED.</t>
</list></t>

</section>
</section>
<section anchor="operation"><name>Operation</name>

<t>The starting point in building an MPTE DAG is to define the properties of a traffic trunk from ingress to egress. Examples include "BGP destinations with community xyz" or "gold class traffic belonging to VPN foo". Next, define a set of constraints that capture the types of paths permissible for this traffic trunk. These include a metric to minimize (perhaps with slack); this could capture delay or fiber length, link colors, shared risk groups (SRGs) and bandwidth. The desired outcome is an MPTED into which the traffic trunk can be mapped.</t>

<t>An MPTED is specified by defining:</t>

<t><list style="numbers" type="1">
  <t>a (non-empty) set of ingresses</t>
  <t>a (non-empty) set of egresses</t>
  <t>the metric to use and the slack</t>
  <t>path constraints</t>
  <t>whether or not the MPTED is "strict".</t>
</list></t>

<t>An MPTED is strict if all paths from all ingresses to all egresses are within slack of the shortest path. An MPTED is loose if all paths from a given ingress I to a given egress E are within slack of each other, but paths from I to a different egress F may not be within slack of the paths to I.</t>

<t>Computation (possibly using a variant of CSPF) of an MPTED is done by the MC, which is either an ingress or a PCE <xref target="RFC4655"/>. (This memo does not specify such an algorithm.) Signaling primarily occurs between the MC and each junction node. Auxiliary signaling may occur between a junction node and its phops.</t>

<section anchor="mpted"><name>MPTED</name>

<t>In this memo, a node is identified by its (16-octet) IPv6 loopback address. A link from node u to node v is identified by u's loopback address and its (4-octet) outgoing interface index (oif), a unique identifier for the link allocated by u. oifs are usually exchanged in the TE extensions of an IGP. (A link also has a (4-octet) incoming interface index, the iif. For neighbors u and v, the correlation between u's oif and v's iif is typically done by the IGP. iifs are not used in this memo.) For now, this memo only deals with point-to-point links; a future revision will describe the use of multi-access links.</t>

<t>An MPTED is identified by a unique (4-octet) ID (the MID) assigned to the MPTED by the MC. As an MPTED can change over its lifetime, it is assigned a version number starting at 0 and incremented every time the MPTED is recomputed. Thus, a full MPTED ID (the FID) consists of &lt;MC, MID, version&gt;.</t>

<t>An MPTED consists two or more "junction nodes". A junction node can have one of five types:</t>

<t><list style="numbers" type="1">
  <t>a pure ingress node has zero incoming links and one or more outgoing links in the MPTED. Traffic routed on a MPTED enters at the ingress.</t>
  <t>a pure egress node has one or more incoming links and zero outgoing links in the MPTED. Traffic routed on a MPTED leaves at an egress.</t>
  <t>a transit ingress node where traffic can either enter the MPTED or arrive from another ingress node to continue on in the MPTED.</t>
  <t>a transit egress node where traffic can either exit the MPTED or go on to another egress node.</t>
  <t>a "regular" junction node has one or more incoming links and one or more outgoing links. Traffic does not enter or leave at such a node: it comes from a phop and goes to an nhop.</t>
</list></t>

<t>A junction node v consists of v, its previous hops (phops) and its next hops (nhops). A phop is specified by an incoming link of v: (u, v, oif1); an nhop by an outgoing link of v: (v, w, oif2). Note that, since links are point-to-point, it is sufficient to specify (u, oif1) ((v, oif2)) for a phop (nhop, respectively). The nodes u (and w) are loosely referred to as a phop (and nhop) of v, although strictly speaking the link should be included. A pure ingress has no phops and a pure egress has no nhops.</t>

<t>The MPTED is broken down into a set of junction nodes. A junction node v is specified by:</t>

<t><list style="numbers" type="1">
  <t>bandwidth (coming in to and going out of v)</t>
  <t>a list of phops of v</t>
  <t>a list of nhops of v, with corresponding load balancing splits</t>
</list></t>

</section>
<section anchor="signaling-overview"><name>Signaling overview</name>

<t>The MC signals the creation or update of an MPTED by sending to each junction node v a JUNCTION message consisting of:</t>

<t><list style="numbers" type="1">
  <t>the MPTED ID</t>
  <t>the junction node specification</t>
  <t>the tunnel type</t>
  <t>some flags</t>
</list></t>

<t>After v parses this specification, for all tunnel types other than SigLab, it installs FIB state for the junction.</t>

<t>For tunnel type SigLab, v allocates an incoming MPLS label L_u for each phop u, and sends a LABEL message to u containing:</t>

<t><list style="numbers" type="1">
  <t>the MPTED ID</t>
  <t>the phop (u's loopback + u's oif for the link)</t>
  <t>the allocated label L_u</t>
</list></t>

<t>u records label L_u as part of its own junction state.</t>

<t>When v receives a LABEL message from all its nhops, it installs swap state in its LFIB.</t>

</section>
<section anchor="forwarding-state"><name>Forwarding state</name>

<t>&lt;TBD&gt;</t>

</section>
</section>
<section anchor="protocol"><name>Protocol</name>

<t>MPTEP, the protocol used to create an MPTED, runs over TCP, and is loosely modeled on BGP <xref target="RFC4271"/>. The following TCP sessions are needed:</t>

<t><list style="numbers" type="1">
  <t>between any ingress acting as MC and all potential junction nodes;</t>
  <t>between the PCE and all potential junction nodes;</t>
  <t>if tunnel type SigLab is used, between a junction node and all its immediate neighbors.</t>
</list></t>

<t>Thus, there will be a full mesh of TCP sessions between all pairs of potential junction nodes. For networks with several hundreds or thousands of nodes, see <xref target="reflector"/> for an alternative solution.</t>

<section anchor="message-ids"><name>Message IDs</name>

<t>Every semantically significant message (SSM) (i.e., one that causes state to be created in a receiver) has a (4-octet) message ID (msgID). msgID starts from 1 and counts up in a session. The last processed and stored message ID is sent in a hello. This tells the sender of the SSM that the receiver of the SSM (sender of the hello) has finished processing the SSM. See <xref target="GR"/>.</t>

</section>
<section anchor="messages"><name>Messages</name>

<t>An MPTEP message consists of a fixed-length message header (including a message type) followed by a variable length body that depends on the type. There are two types of message headers, MSGHDR and REFHDR. MSGHDR MUST NOT be used for messages to or from a reflector. REFHDR MUST be used for all messages to or from a reflector.</t>

<section anchor="msghdr"><name>MSGHDR</name>

<t>A "normal" MPTEP message header has the following format:</t>

<figure><artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Type (2 octets)      |      Length (2 octets)        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<dl>
  <dt>Type:</dt>
  <dd>
    <t>message type (2 octets)</t>
  </dd>
  <dt>Length:</dt>
  <dd>
    <t>total length of the message (including header) in octets (2 octets)</t>
  </dd>
</dl>

</section>
<section anchor="refhdr"><name>REFHDR</name>

<t>An MPTEP message to or from an MPTEP reflector uses the following header:</t>

<figure><artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Type (2 octets)      |      Length (2 octets)        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                   MPTEP Sender (16 octets)                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                  MPTEP Receiver (16 octets)                   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

</section>
</section>
<section anchor="message-types"><name>Message types</name>

<section anchor="open"><name>OPEN</name>

<figure><artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Version    |               Capabilities                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Hello Time           |           Keep Time           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                   Sender Identifier (16 octets)               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                  Receiver Identifier (16 octets)              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                 Supported Tunnel Types (4 octets)             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Opt Param Len (2 octets)   |     Optional Parameters       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
|                                                               |
|                        (variable)                             |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<dl>
  <dt>Version:</dt>
  <dd>
    <t>0 (MUST match between endpoints)</t>
  </dd>
  <dt>Capabilities:</dt>
  <dd>
    <t>bit vector of sender's capabilities</t>
  </dd>
  <dt>0x1:</dt>
  <dd>
    <t>node is capable of Graceful Restart (see <xref target="GR"/>)</t>
  </dd>
  <dt>Rest:</dt>
  <dd>
    <t>SHOULD be zero on sending and ignored on receipt</t>
  </dd>
  <dt>Hello Time:</dt>
  <dd>
    <t>time in seconds between hellos. If a hello is not received in time, it is deemed to be missed. If three consecutive hellos are missed, the session is torn down.</t>
  </dd>
  <dt>Keep Time:</dt>
  <dd>
    <t>time that control plane and forwarding plane state received from neighbor is kept after session teardown.</t>
  </dd>
  <dt>Sender Identifier, Receiver Identifier:</dt>
  <dd>
    <t>IPv6 loopback addresses of the two endpoints</t>
  </dd>
  <dt>Supported Tunnel Types:</dt>
  <dd>
    <t>bit vector of tunnel types that the sender can install. If the receiver is an MC, it MUST NOT send an MPTED with a tunnel type that the sender does not implement.</t>
  </dd>
  <dt>Opt Param Len, Optional Parameters:</dt>
  <dd>
    <t>none defined yet</t>
  </dd>
</dl>

</section>
<section anchor="hello"><name>HELLO</name>

<figure><artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                  Last Processed MsgID (4 octets)              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>Indication that the sender is alive and functioning; also, that the sender has processed and safely stored state related to messages up to and including the enclosed msgID; the receiver can throw away signaling state for messages with a lower msgID.</t>

</section>
<section anchor="junction"><name>JUNCTION</name>

<t>A JUNCTION message has the following format:</t>

<figure><artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       MC ID (16 octets)                       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      MPTED ID (4 octets)                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    MPTED Version (4 octets)                   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Tunnel Type          |       Flags   |   TunInfLen   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Tunnel Information (TunInfLen octets)            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               Tunnel Bandwidth in MBPS (4 octets)             | (?)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  # Ingresses (m) (2 octets)   |   # Egresses (n) (2 octets)   | \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|                     Ingress ID 1 (16 octets)                  | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|                     Ingress ID 2 (16 octets)                  | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|                              ...                              | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|                     Ingress ID m (16 octets)                  | | (?)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|                     Egress ID 1 (16 octets)                   | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|                     Egress ID 2 (16 octets)                   | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|                              ...                              | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|                     Egress ID n (16 octets)                   | /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    # phops (p) (2 octets)     |     # nhops (q) (2 octets)    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                 Junction bandwidth (4 octets)                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                   phop node 1 ID (16 octets)                  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     phop oif 1 (4 octets)                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                              ...                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                   phop node ID p (16 octets)                  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     phop oif p (4 octets)                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     nhop oif 1 (4 octets)                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    nhop share 1 (2 octets)                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                              ...                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     nhop oif q (4 octets)                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    nhop share q (2 octets)                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>The Tunnel Information field is to identify the type of tunnel to use for the MPTED. For example, for an MPLS tunnel with a statically assigned label, the Tunnel Information is the label. For IP-based tunnels, the Tunnel Information is the source and destination IP addresses (plus possibly other information). Details TBD.</t>

<t>The fields marked (?) may not be required in a Junction message; TBD.</t>

<section anchor="tunnel-flags-1-octet"><name>Tunnel Flags (1 octet)</name>

<dl>
  <dt>0x1:</dt>
  <dd>
    <t>Junction is an ingress</t>
  </dd>
  <dt>0x2:</dt>
  <dd>
    <t>Junction is an egress</t>
  </dd>
</dl>

<t>(Pure vs. transit ingresses/egresses are distinguished by the number of phops/nhops.)</t>

<dl>
  <dt>Rest:</dt>
  <dd>
    <t>Reserved (MUST be sent as 0 and ignored on receipt)</t>
  </dd>
</dl>

</section>
<section anchor="junction-bandwidth"><name>Junction bandwidth</name>

<t>bandwidth incoming to the junction in Megabits per second (Mbps) as a 4 octet non-negative integer</t>

</section>
<section anchor="nhop-share"><name>nhop share</name>

<t>2-octet share of the outgoing bandwidth. A Junction should attempt to send a ratio of (share n)/(sum (share i)) of the incoming bandwidth to nhop #n.</t>

</section>
</section>
<section anchor="label"><name>LABEL</name>

<t>A LABEL message MUST only be used for MPTEDs of type SigLab. A LABEL message is sent from an egress junction node to each of its phops. Any other junction node MUST only send a LABEL message when it has received a LABEL message from all of its nhops (cf "Ordered Label Distribution Control" <xref section="2.6.1.2" sectionFormat="comma" target="RFC3036"/>). A pure ingress node never sends a LABEL message as it has no phops.</t>

<figure><artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       MC ID (16 octets)                       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      MPTED ID (4 octets)                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    MPTED Version (4 octets)                   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      phop node (16 octets)                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       phop oif (4 octets)                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Label (20 bits)          |        Reserved       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

</section>
<section anchor="notification"><name>NOTIFICATION</name>

<t>&lt;TBD&gt;</t>

</section>
</section>
</section>
<section anchor="reflector"><name>MPTEP Reflector</name>

<t>Instead of establishing a full mesh of MPTEP connections among the nodes participating in establishing MPTE DAGs, one could instead have a small set of designated MPTEP Reflectors with whom all MPTEP nodes establish connections. An MPTEP Reflector passes on an MPTEP message from the sender to the (single) ultimate receiver. In this, an MPTEP's function is different from that of a BGP Reflector: an MPTEP Reflector sends a received message to exactly one destination node.</t>

<t>The goal of having MPTEP Reflectors is simply to reduce the number of MPTEP sessions that a node (typically, a router) has. In a network of (say) 500 nodes and (say) 3 Reflectors, each of these 500 nodes would only need 3 sessions with the Reflectors. The Reflectors themselves would need 500 sessions with the router nodes, plus 2 sessions among themselves.</t>

</section>
<section anchor="GR"><name>Graceful Restart</name>

<t>A node N is capable of Graceful Restart if a) it can maintain control plane state across restarts; and b) it can maintain forwarding state across restarts. If N is capable of Graceful Restart, an MPTE DAG going through N can continue functioning while N restarts. While N is restarting, new JUNCTION/LABEL messages will be dropped or ignored; new MPTE DAGs passing through N will not be established. Once restart is complete, N will send an OPEN message and re-establish connections will all its peers (or all the MPTEP Reflectors). Thereafter, N can participate in new DAGs passing through it by processing received JUNCTION messages.</t>

<t>More details will be described in a future version.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>TBD</t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>TBD</t>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>

<reference anchor="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>

<reference anchor="RFC2003">
  <front>
    <title>IP Encapsulation within IP</title>
    <author fullname="C. Perkins" initials="C." surname="Perkins"/>
    <date month="October" year="1996"/>
    <abstract>
      <t>This document specifies a method by which an IP datagram may be encapsulated (carried as payload) within an IP datagram. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="2003"/>
  <seriesInfo name="DOI" value="10.17487/RFC2003"/>
</reference>

<reference anchor="RFC2784">
  <front>
    <title>Generic Routing Encapsulation (GRE)</title>
    <author fullname="D. Farinacci" initials="D." surname="Farinacci"/>
    <author fullname="T. Li" initials="T." surname="Li"/>
    <author fullname="S. Hanks" initials="S." surname="Hanks"/>
    <author fullname="D. Meyer" initials="D." surname="Meyer"/>
    <author fullname="P. Traina" initials="P." surname="Traina"/>
    <date month="March" year="2000"/>
    <abstract>
      <t>This document specifies a protocol for encapsulation of an arbitrary network layer protocol over another arbitrary network layer protocol. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="2784"/>
  <seriesInfo name="DOI" value="10.17487/RFC2784"/>
</reference>

<reference anchor="RFC2890">
  <front>
    <title>Key and Sequence Number Extensions to GRE</title>
    <author fullname="G. Dommety" initials="G." surname="Dommety"/>
    <date month="September" year="2000"/>
    <abstract>
      <t>This document describes extensions by which two fields, Key and Sequence Number, can be optionally carried in the GRE Header. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="2890"/>
  <seriesInfo name="DOI" value="10.17487/RFC2890"/>
</reference>

<reference anchor="RFC8086">
  <front>
    <title>GRE-in-UDP Encapsulation</title>
    <author fullname="L. Yong" initials="L." role="editor" surname="Yong"/>
    <author fullname="E. Crabbe" initials="E." surname="Crabbe"/>
    <author fullname="X. Xu" initials="X." surname="Xu"/>
    <author fullname="T. Herbert" initials="T." surname="Herbert"/>
    <date month="March" year="2017"/>
    <abstract>
      <t>This document specifies a method of encapsulating network protocol packets within GRE and UDP headers. This GRE-in-UDP encapsulation allows the UDP source port field to be used as an entropy field. This may be used for load-balancing of GRE traffic in transit networks using existing Equal-Cost Multipath (ECMP) mechanisms. There are two applicability scenarios for GRE-in-UDP with different requirements: (1) general Internet and (2) a traffic-managed controlled environment. The controlled environment has less restrictive requirements than the general Internet.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8086"/>
  <seriesInfo name="DOI" value="10.17487/RFC8086"/>
</reference>

<reference anchor="RFC7510">
  <front>
    <title>Encapsulating MPLS in UDP</title>
    <author fullname="X. Xu" initials="X." surname="Xu"/>
    <author fullname="N. Sheth" initials="N." surname="Sheth"/>
    <author fullname="L. Yong" initials="L." surname="Yong"/>
    <author fullname="R. Callon" initials="R." surname="Callon"/>
    <author fullname="D. Black" initials="D." surname="Black"/>
    <date month="April" year="2015"/>
    <abstract>
      <t>This document specifies an IP-based encapsulation for MPLS, called MPLS-in-UDP for situations where UDP (User Datagram Protocol) encapsulation is preferred to direct use of MPLS, e.g., to enable UDP-based ECMP (Equal-Cost Multipath) or link aggregation. The MPLS- in-UDP encapsulation technology must only be deployed within a single network (with a single network operator) or networks of an adjacent set of cooperating network operators where traffic is managed to avoid congestion, rather than over the Internet where congestion control is required. Usage restrictions apply to MPLS-in-UDP usage for traffic that is not congestion controlled and to UDP zero checksum usage with IPv6.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7510"/>
  <seriesInfo name="DOI" value="10.17487/RFC7510"/>
</reference>




    </references>

    <references title='Informative References' anchor="sec-informative-references">

<reference anchor="SPF" target="https://doi.org/10.1007/BF01386390">
  <front>
    <title>A note on two problems in connexion with graphs</title>
    <author initials="E. W." surname="Dijkstra" fullname="Dijkstra, E. W.">
      <organization></organization>
    </author>
    <date year="1959" month="December" day="01"/>
  </front>
</reference>


<reference anchor="RFC2702">
  <front>
    <title>Requirements for Traffic Engineering Over MPLS</title>
    <author fullname="D. Awduche" initials="D." surname="Awduche"/>
    <author fullname="J. Malcolm" initials="J." surname="Malcolm"/>
    <author fullname="J. Agogbua" initials="J." surname="Agogbua"/>
    <author fullname="M. O'Dell" initials="M." surname="O'Dell"/>
    <author fullname="J. McManus" initials="J." surname="McManus"/>
    <date month="September" year="1999"/>
    <abstract>
      <t>This document presents a set of requirements for Traffic Engineering over Multiprotocol Label Switching (MPLS). It identifies the functional capabilities required to implement policies that facilitate efficient and reliable network operations in an MPLS domain. This memo provides information for the Internet community.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="2702"/>
  <seriesInfo name="DOI" value="10.17487/RFC2702"/>
</reference>

<reference anchor="RFC4271">
  <front>
    <title>A Border Gateway Protocol 4 (BGP-4)</title>
    <author fullname="Y. Rekhter" initials="Y." role="editor" surname="Rekhter"/>
    <author fullname="T. Li" initials="T." role="editor" surname="Li"/>
    <author fullname="S. Hares" initials="S." role="editor" surname="Hares"/>
    <date month="January" year="2006"/>
    <abstract>
      <t>This document discusses the Border Gateway Protocol (BGP), which is an inter-Autonomous System routing protocol.</t>
      <t>The primary function of a BGP speaking system is to exchange network reachability information with other BGP systems. This network reachability information includes information on the list of Autonomous Systems (ASes) that reachability information traverses. This information is sufficient for constructing a graph of AS connectivity for this reachability from which routing loops may be pruned, and, at the AS level, some policy decisions may be enforced.</t>
      <t>BGP-4 provides a set of mechanisms for supporting Classless Inter-Domain Routing (CIDR). These mechanisms include support for advertising a set of destinations as an IP prefix, and eliminating the concept of network "class" within BGP. BGP-4 also introduces mechanisms that allow aggregation of routes, including aggregation of AS paths.</t>
      <t>This document obsoletes RFC 1771. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="4271"/>
  <seriesInfo name="DOI" value="10.17487/RFC4271"/>
</reference>

<reference anchor="RFC4364">
  <front>
    <title>BGP/MPLS IP Virtual Private Networks (VPNs)</title>
    <author fullname="E. Rosen" initials="E." surname="Rosen"/>
    <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
    <date month="February" year="2006"/>
    <abstract>
      <t>This document describes a method by which a Service Provider may use an IP backbone to provide IP Virtual Private Networks (VPNs) for its customers. This method uses a "peer model", in which the customers' edge routers (CE routers) send their routes to the Service Provider's edge routers (PE routers); there is no "overlay" visible to the customer's routing algorithm, and CE routers at different sites do not peer with each other. Data packets are tunneled through the backbone, so that the core routers do not need to know the VPN routes. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="4364"/>
  <seriesInfo name="DOI" value="10.17487/RFC4364"/>
</reference>

<reference anchor="RFC7432">
  <front>
    <title>BGP MPLS-Based Ethernet VPN</title>
    <author fullname="A. Sajassi" initials="A." role="editor" surname="Sajassi"/>
    <author fullname="R. Aggarwal" initials="R." surname="Aggarwal"/>
    <author fullname="N. Bitar" initials="N." surname="Bitar"/>
    <author fullname="A. Isaac" initials="A." surname="Isaac"/>
    <author fullname="J. Uttaro" initials="J." surname="Uttaro"/>
    <author fullname="J. Drake" initials="J." surname="Drake"/>
    <author fullname="W. Henderickx" initials="W." surname="Henderickx"/>
    <date month="February" year="2015"/>
    <abstract>
      <t>This document describes procedures for BGP MPLS-based Ethernet VPNs (EVPN). The procedures described here meet the requirements specified in RFC 7209 -- "Requirements for Ethernet VPN (EVPN)".</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7432"/>
  <seriesInfo name="DOI" value="10.17487/RFC7432"/>
</reference>

<reference anchor="RFC4761">
  <front>
    <title>Virtual Private LAN Service (VPLS) Using BGP for Auto-Discovery and Signaling</title>
    <author fullname="K. Kompella" initials="K." role="editor" surname="Kompella"/>
    <author fullname="Y. Rekhter" initials="Y." role="editor" surname="Rekhter"/>
    <date month="January" year="2007"/>
    <abstract>
      <t>Virtual Private LAN Service (VPLS), also known as Transparent LAN Service and Virtual Private Switched Network service, is a useful Service Provider offering. The service offers a Layer 2 Virtual Private Network (VPN); however, in the case of VPLS, the customers in the VPN are connected by a multipoint Ethernet LAN, in contrast to the usual Layer 2 VPNs, which are point-to-point in nature.</t>
      <t>This document describes the functions required to offer VPLS, a mechanism for signaling a VPLS, and rules for forwarding VPLS frames across a packet switched network. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="4761"/>
  <seriesInfo name="DOI" value="10.17487/RFC4761"/>
</reference>

<reference anchor="RFC4762">
  <front>
    <title>Virtual Private LAN Service (VPLS) Using Label Distribution Protocol (LDP) Signaling</title>
    <author fullname="M. Lasserre" initials="M." role="editor" surname="Lasserre"/>
    <author fullname="V. Kompella" initials="V." role="editor" surname="Kompella"/>
    <date month="January" year="2007"/>
    <abstract>
      <t>This document describes a Virtual Private LAN Service (VPLS) solution using pseudowires, a service previously implemented over other tunneling technologies and known as Transparent LAN Services (TLS). A VPLS creates an emulated LAN segment for a given set of users; i.e., it creates a Layer 2 broadcast domain that is fully capable of learning and forwarding on Ethernet MAC addresses and that is closed to a given set of users. Multiple VPLS services can be supported from a single Provider Edge (PE) node.</t>
      <t>This document describes the control plane functions of signaling pseudowire labels using Label Distribution Protocol (LDP), extending RFC 4447. It is agnostic to discovery protocols. The data plane functions of forwarding are also described, focusing in particular on the learning of MAC addresses. The encapsulation of VPLS packets is described by RFC 4448. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="4762"/>
  <seriesInfo name="DOI" value="10.17487/RFC4762"/>
</reference>

<reference anchor="RFC3209">
  <front>
    <title>RSVP-TE: Extensions to RSVP for LSP Tunnels</title>
    <author fullname="D. Awduche" initials="D." surname="Awduche"/>
    <author fullname="L. Berger" initials="L." surname="Berger"/>
    <author fullname="D. Gan" initials="D." surname="Gan"/>
    <author fullname="T. Li" initials="T." surname="Li"/>
    <author fullname="V. Srinivasan" initials="V." surname="Srinivasan"/>
    <author fullname="G. Swallow" initials="G." surname="Swallow"/>
    <date month="December" year="2001"/>
    <abstract>
      <t>This document describes the use of RSVP (Resource Reservation Protocol), including all the necessary extensions, to establish label-switched paths (LSPs) in MPLS (Multi-Protocol Label Switching). Since the flow along an LSP is completely identified by the label applied at the ingress node of the path, these paths may be treated as tunnels. A key application of LSP tunnels is traffic engineering with MPLS as specified in RFC 2702. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="3209"/>
  <seriesInfo name="DOI" value="10.17487/RFC3209"/>
</reference>

<reference anchor="RFC4090">
  <front>
    <title>Fast Reroute Extensions to RSVP-TE for LSP Tunnels</title>
    <author fullname="P. Pan" initials="P." role="editor" surname="Pan"/>
    <author fullname="G. Swallow" initials="G." role="editor" surname="Swallow"/>
    <author fullname="A. Atlas" initials="A." role="editor" surname="Atlas"/>
    <date month="May" year="2005"/>
    <abstract>
      <t>This document defines RSVP-TE extensions to establish backup label-switched path (LSP) tunnels for local repair of LSP tunnels. These mechanisms enable the re-direction of traffic onto backup LSP tunnels in 10s of milliseconds, in the event of a failure.</t>
      <t>Two methods are defined here. The one-to-one backup method creates detour LSPs for each protected LSP at each potential point of local repair. The facility backup method creates a bypass tunnel to protect a potential failure point; by taking advantage of MPLS label stacking, this bypass tunnel can protect a set of LSPs that have similar backup constraints. Both methods can be used to protect links and nodes during network failure. The described behavior and extensions to RSVP allow nodes to implement either method or both and to interoperate in a mixed network. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="4090"/>
  <seriesInfo name="DOI" value="10.17487/RFC4090"/>
</reference>

<reference anchor="RFC4655">
  <front>
    <title>A Path Computation Element (PCE)-Based Architecture</title>
    <author fullname="A. Farrel" initials="A." surname="Farrel"/>
    <author fullname="J.-P. Vasseur" initials="J.-P." surname="Vasseur"/>
    <author fullname="J. Ash" initials="J." surname="Ash"/>
    <date month="August" year="2006"/>
    <abstract>
      <t>Constraint-based path computation is a fundamental building block for traffic engineering systems such as Multiprotocol Label Switching (MPLS) and Generalized Multiprotocol Label Switching (GMPLS) networks. Path computation in large, multi-domain, multi-region, or multi-layer networks is complex and may require special computational components and cooperation between the different network domains.</t>
      <t>This document specifies the architecture for a Path Computation Element (PCE)-based model to address this problem space. This document does not attempt to provide a detailed description of all the architectural components, but rather it describes a set of building blocks for the PCE architecture from which solutions may be constructed. This memo provides information for the Internet community.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="4655"/>
  <seriesInfo name="DOI" value="10.17487/RFC4655"/>
</reference>

<reference anchor="RFC3036">
  <front>
    <title>LDP Specification</title>
    <author fullname="L. Andersson" initials="L." surname="Andersson"/>
    <author fullname="P. Doolan" initials="P." surname="Doolan"/>
    <author fullname="N. Feldman" initials="N." surname="Feldman"/>
    <author fullname="A. Fredette" initials="A." surname="Fredette"/>
    <author fullname="B. Thomas" initials="B." surname="Thomas"/>
    <date month="January" year="2001"/>
    <abstract>
      <t>A fundamental concept in MPLS is that two Label Switching Routers (LSRs) must agree on the meaning of the labels used to forward traffic between and through them. This common understanding is achieved by using a set of procedures, called a label distribution protocol, by which one LSR informs another of label bindings it has made. This document defines a set of such procedures called LDP (for Label Distribution Protocol) by which LSRs distribute labels to support MPLS forwarding along normally routed paths. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="3036"/>
  <seriesInfo name="DOI" value="10.17487/RFC3036"/>
</reference>




    </references>

</references>



  </back>

<!-- ##markdown-source:
H4sIAPTyxWcAA+1963IbyZHufzxFHeqHgDAAgaRuQ3lsUySloYeUeESOJ06s
NzYaQAHsUaMb0xdSHFn7LPss+2SbX2bWpZugpFlLnhO75q5HQF+qsrLyfimM
RqNendaZ3TOnTVan66S+NBdlslikM3OUL9Pc2jLNl71kOi3tFT11dnHUmxez
PFnRO3N6sh69LVZrm2XJqLZJNVqtazuaTHrzpKYndiY7j3oz+rgsyps9U9Xz
Xu+eKaZVkdnaVnu9dF3umbpsqnpnMvlmstOr6tImqz1zfHTxopfQ5z3zpmhq
AHFdlG+XZdGs98zF0f65+fFl7+31nlk5yIc0kIBuI9BpxCSf/1uSFTkBdGOr
3jrdM/9SF7OhqYqSpltU9OlmhQ//2uslTX1ZlHs9Y0Ymzas98/3YfK9LpIvG
yNq/T0tr67R9qyiXSZ7+ktRpke+ZPzd5uraleWVrgF7xI7O0JkScN3l+c5Vk
lq+VdskvHCRZuijKPJXRZsWcJvrm4eTpN/q9yWug8Yc8re3cnNeE2MoUC7O/
orXO5C27StJsz7wV+MaprRd/WuLaeFaswqqipZw0yY35M82dbVjEX2jkX4o8
gv1NOrtMynmlFx3wF/ZdUkVwP3k0ebr96+HOCJjxTwDmT1cydQvuCOzT5Beb
m+8vk/k8WW2A/KB4R/9brWgXZnwp3oD9OkvyOmmt4KWlAVq4353s7jz99WtY
AbLxW4HsT7Pi3V1L2M/nN+Z8ldaXG+B/XSazzJqDrGjm5jhflAnxRjOrm9LG
CyHWST+xE0+fPPxv7ARxDe3EuAJ4fyoYGF5HLy/KFcF4Zfd6vTRfhG/GnJ+9
kPXVSbm09Z65rOt1tffgwbxIx7S8B9uT8fZk8uTB8xeT7d2nj3e/mcjjIoT2
TV7U1hS5IY4x67KYZnZVEdYI8jy372h55prAMcsyWV/KGgO/Brwepj+9JWQl
Q3M0Nj+O9R7T/dH4x7G/zzdEUm1/8+ib0fbOaLLd641ILOI/JpniqVnd653T
HISq2rCILEUiEeIWtqwIU4ZE382oLkZNPqcrkDhDfy1drWkZNq/NyhKsc+Cb
hkqmWVpdYpisKNajBfGrLHNG2KS9xbITk4vwGJppU7v5FvbaFPUliZaFTUAP
1dgc/dwk2WhWEIheIJr+0cHp2WBIw1QMhLHvaptXhMahaSraeXkUN8LreLMy
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

-->

</rfc>

