<?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.6.17 (Ruby 3.1.2) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

<!ENTITY RFC9012 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9012.xml">
<!ENTITY I-D.ietf-idr-segment-routing-te-policy SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-idr-segment-routing-te-policy.xml">
<!ENTITY RFC9256 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9256.xml">
<!ENTITY RFC3032 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3032.xml">
<!ENTITY RFC5462 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5462.xml">
<!ENTITY I-D.ietf-pim-sr-p2mp-policy SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-pim-sr-p2mp-policy.xml">
]>

<?rfc toc, sortrefs, symrefs, comments="yes"?>

<rfc ipr="trust200902" docName="draft-zzhang-idr-tunnel-encapsulation-label-stack-02" category="std" consensus="true">
  <front>
    <title abbrev="Label stacks in TEA">MPLS Label Stacks in Tunnel Encapsulation Attribute</title>

    <author initials="Z." surname="Zhang" fullname="Zhaohui Zhang">
      <organization>Juniper Networks</organization>
      <address>
        <email>zzhang@juniper.net</email>
      </address>
    </author>
    <author initials="S." surname="Hares" fullname="Susan Hares">
      <organization></organization>
      <address>
        <email>skh@ndzh.com</email>
      </address>
    </author>

    <date year="2023" month="February" day="06"/>

    <area>routing</area>
    <workgroup>idr</workgroup>
    

    <abstract>


<t>RFC 9012 defines an MPLS Label Stack sub-TLV for Tunnel Encapsulation
Attribute, and specifies that it is to be pushed BEFORE other labels.
This document clarifies the use case for that, defines a new
Tunnel Label Stack sub-TLV for a label stack to be pushed AFTER other
labels (e.g., the label embedded in the NLRI for a labeled address
family, and/or the stack in an MPLS Label Stack sub-TLV), and defines
two new Segment sub-TLVs to encode a segment list in a compact format.</t>



    </abstract>



  </front>

  <middle>


<section anchor="traffic-steering-after-tunnel-endpoint"><name>Traffic Steering after Tunnel Endpoint</name>

<t><xref target="RFC9012"/> defines an MPLS Label Stack sub-TLV for Tunnel Encapsulation
Attribute and specifies that:</t>

<figure><artwork><![CDATA[
 "If a packet is to be sent through the tunnel identified in a
 particular TLV, and if that TLV contains an MPLS Label Stack sub-TLV,
 then the label stack appearing in the sub-TLV MUST be pushed onto the
 packet before any other labels are pushed onto the packet."
]]></artwork></figure>

<t>Specifically, the label stack in the sub-TLV is to be pushed BEFORE
any other labels are pushed. This may sound counter-intuitive, in that
if a label stack (e.g. for Segment Routing) is to be used to steer
traffic to the tunnel endpoint, the stack should be pushed AFTER other
labels (e.g. the label embedded in the NLRI).</t>

<t>This document clarifies that it is NOT for steering traffic to but for
steering AFTER the tunnel endpoint. Consider the following use case:</t>

<figure><artwork><![CDATA[
              controller
             .          .
            .            .
 site1 --- PE1 -------- PE2 --- site2
]]></artwork></figure>

<t>Two sites are connected to two PEs respectively, and traffic steering
is desired within each site not just among the PEs. While PE2
could push the label stack used for steering within site2, there may
be situations where PE2 is not a device capable of pushing a large label
stack so PE1 is tasked with pushing the label stack that is used after the
tunnel end point PE2, within site2.</t>

</section>
<section anchor="traffic-steering-to-the-tunnel-endpoint"><name>Traffic Steering to the Tunnel Endpoint</name>

<t>Notice that in the above example, it may be desired that PE2 or the
controller wants PE1 to send service traffic to PE2 via a specific
path through the underlay network. The path may be an Segment Routing
path either as a pre-installed SR Policy tunnel in the Tunnel
Encapsulation Attribute (TEA), or as a label stack encoded in an
MPLS tunnel in the TEA of the service routes that PE1 receives.
There are different use cases for the two approaches - many TEAs
could reference a common SR Policy that has been pre-installed via means
in <xref target="I-D.ietf-idr-segment-routing-te-policy"/>, or a TEA can simply
specify an ad-hoc label statck without having to have an SR policy
pre-installed.</t>

<t>In this case, PE1 needs to impose the label stack AFTER it imposes other
labels like service labels or the labels for traffic steering at site2
after the traffic arrives at PE2. Obviously, a new sub-TLV is needed
to encode the label stack for steering traffic to the tunnel endpoint,
as the existing MPLS Label Stack sub-TLV is for steering after traffic
reaches the tunnel endpoint.</t>

<t>Notice that, if the routes are advertised by PE2 and received by many
other PEs, the path identified in the TEA needs to be a partial path
that are closer to PE2 (so that all ingress PEs can still use that
path). Otherwise, the more appropriate use case is when the routes
are advertised from the controller - whether the routes are for unicast
or for programming a multicast replication branch on a router where
the downstream node for that branch needs to be reached via a specific
path <xref target="I-D.ietf-pim-sr-p2mp-policy"/>.</t>

<section anchor="tunnel-label-stack-sub-tlv"><name>Tunnel Label Stack sub-TLV</name>

<t>This document defines a new Tunnel Label Stack sub-TLV for that purpose.
It has exactly the same syntax as the existing MPLS Label Stack sub-TLV.
Section 3.6 of <xref target="RFC9012"></xref> applies to this new sub-TLV, with the following
differences:</t>

<t><list style="symbols">
  <t>A new tunnel type will be allocated by IANA</t>
  <t>The label stack MUST be imposed AFTER other labels are pushed.</t>
</list></t>

<t>Both the existing MPLS Label Stack sub-TLV and the new Tunnel Label
Stack sub-TLV MAY be present in a tunnel TLV.</t>

</section>
<section anchor="sr-policy-tunnel"><name>SR Policy Tunnel</name>

<t>In <xref target="I-D.ietf-idr-segment-routing-te-policy"/>, an SR Policy tunnel type
is specified to be used in a TEA attached to an NLRI of SR Policy SAFI.</t>

<t>The SR Policy SAFI is used to install an SR Policy to a node,
specifying all applicable properties of that policy like policy name,
candidate path, segment list, etc.. After the policy is installed,
it can be used to steer traffic into the tunnel.</t>

<t>For the use case mentioned earlier, where a tunnel in a TEA for a
service route (that is not of the SR Policy SAFI) needs to
follow a particular SR path defined in an SR policy that has been
pre-installed via an SR Policy SAFI NLRI, the service route's TEA
can include an SR Policy tunnel, which MUST only include a policy name
sub-TLV, and a receiving router uses the policy name to resolve a
pre-installed SR policy.</t>

<t>In other words, the SR Policy tunnel in
<xref target="I-D.ietf-idr-segment-routing-te-policy"/> is used to install the policy,
while the SR Policy tunnel in this document is for referencing a
pre-installed policy. In this version of the document, the same
SR Policy tunnel type is used (though only the policy name and nothing
else is included), but we could specify a new tunnel type instead depending
on WG consensus.</t>

</section>
</section>
<section anchor="compact-segment-list"><name>Compact Segment List</name>

<t>Section 2.4.4 of <xref target="I-D.ietf-idr-segment-routing-te-policy"/> specifies
a Segment List sub-TLV that is optional in a tunnel TLV. It encodes
a segment list in an SR Policy tunnel, containing zero or more Segment
sub-TLVs.</t>

<t>Each Segment sub-TLV specifies a segment of various types defined in
Section 4 of <xref target="RFC9256"/>. For example, if a segment list is a 10-label
stack, then the Segment List sub-TLV for it has 10 sub-TLVs,
each being a Type A Segment as defined in 2.4.4.2.1 of <xref target="I-D.ietf-idr-segment-routing-te-policy"/>:</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      |   Length      |     Flags     |   RESERVED    |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |          Label                        | TC  |S|       TTL     |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>It is clear that this is not efficient on-the-wire encoding format,
and it involves additional encoding/decoding processing.</t>

<t>To address this inefficiency, this document specifies two new types of Segment sub-TLVs,
each encoding a label stack or an SRv6 SID list respectively.
A new segment type may be added in a future revision to encode a compressed SRv6 SID list.</t>

<t>Note that, while each new type is called a Segment sub-TLV in a
Segment List sub-TLV, it actually encodes a segment list (a label stack or an SRv6 SID list).
A Segment List sub-TLV MAY have a mixed Segment sub-TLVs of any types, e.g., a Type A segment that
encodes one label and another new segment type that encodes a label stack.
The actual segment list is a concatenation of all the labels in this example.</t>

<section anchor="segment-type-l"><name>Segment Type L</name>

<t>The Type L Segment Sub-TLV encodes multiple SR-MPLS SIDs.  The format
is as follows and is used to encode MPLS Label fields as specified in
<xref target="RFC3032"/> <xref target="RFC5462"/>:</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 TBD1   |   Length      |     Flags     |   RESERVED  |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |          Label                        | TC  |S|       TTL    //
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 //          Repeated Label Entries                              |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>The Type TBD1 is to be assigned by IANA from the "SR Policy Segment List
 Sub-TLVs" under the "BGP Tunnel Encapsulation" registry.</t>

<t>The Length value is (4 * number of labels + 2).</t>

<t>Other fields are as defined in 2.4.4.2.1 of <xref target="I-D.ietf-idr-segment-routing-te-policy"/>.</t>

</section>
<section anchor="segment-type-m"><name>Segment Type M</name>

<t>The Type M Segment Sub-TLV encodes multiple SRv6 SIDs with optional
SRv6 Endpoint Behavior and SID Structure:</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 TBD2     |   Length      |     Flags     |   RESERVED  |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 //                       SRv6 SID (16 octets)                  //
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 //                       Repeated SRv6 SIDs                    //
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 //     SRv6 Endpoint Behavior and SID Structure (optional)     //
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>The Type TBD2 is to be assigned by IANA from the "SR Policy Segment List
 Sub-TLVs" under the "BGP Tunnel Encapsulation" registry.</t>

<t>The Length value is (16 * number of SIDs + 2) when SRv6 Endpoint Behavior
and SID Structure is not present. If it is present, the Length value is
increased by 8.</t>

<t>Other fields are as defined in 2.4.4.2.2 of <xref target="I-D.ietf-idr-segment-routing-te-policy"/>.</t>

</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>This document does not introduce any new security issues besides
what is already discussed in RFC9012 and <xref target="I-D.ietf-idr-segment-routing-te-policy"/>.</t>

</section>
<section anchor="iana-assignments"><name>IANA Assignments</name>

<t>IANA is requested to assign a new sub-TLV type for "Tunnel Label Stack"
from "BGP Tunnel Encapsulation Attribute Sub-TLVs" registry,
in the 0~127 range.</t>

<t>IANA is requested to assign two new sub-TLV types from the "SR Policy Segment List
Sub-TLVs" under the "BGP Tunnel Encapsulation" registry, for Type L and Type M
segments respectively.</t>

</section>
<section anchor="acknowledgements"><name>Acknowledgements</name>

<t>The authors thank Eric Rosen, John Scudder and Robert Raszuk for their valuable
comments and suggestions.</t>

</section>


  </middle>

  <back>


    <references title='Normative References'>

&RFC9012;
&I-D.ietf-idr-segment-routing-te-policy;
&RFC9256;
&RFC3032;
&RFC5462;


    </references>

    <references title='Informative References'>

&I-D.ietf-pim-sr-p2mp-policy;


    </references>



  </back>

<!-- ##markdown-source:
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
EAVszVBIQPvR+56GoxpP4k60Ng8kWzCIFEjOimHP8QTKdkmdJVATKSz7AOVC
hcDtSM47SbQvSIaw0ahlQaDuIP3DMGT4JctsPm4uzYJPapto5woDgC8j2p2A
O10sae/DGYKqX7mwqXL8MqVVMwE0nY0NgDxL6ZF2r0BqCavO/dP7+BaJvzx8
8GgcSPvPz9vzx0/P5Mcy9x+Kt+/d+6TW3LvXzngFqo8232zXNPclUuU7P5+u
irR5QkFqXlopIPpV3rYE2qbRUWfP05WidXq5I26L882Pf3h18H3oEdDvCh4r
d2FLHIBxo7KKuPT4gfxK5tVmASMBBYTU/1qO8XUWNcOabMMd4yfRUAeY5HnH
Q88/hEmYlR13ZGrdLOh8/T5DPtbYTyYeT4nDZ76sEixKQAh/YjqocTZuzvy/
6KCbgL1PU1aPzx5Jm3jt3cn+XZ+RDnqfhhtaXB34fB5rPhSy8rhG+cmnt6bP
T+M/Ej8BProERcFBeuLu+2HviX3vBcEe2pqwoV6G9/HhDDcqBrMLkyelVuEV
xrcfzojj38GI4MakKo3fNa/2+V3zXvfcal6LwbcKaZXwLz1YF4YRjHOVxoYa
juPENvQXVAarSXcyNS6pXGirhs43Ie6jTAbYfMmgmBBKwg/d6IzB1/r/BhvC
u37G0eC1F8lX3Mof7b8DOBKEtDuB03kl2wKuxtJIhNdGp/85G38jS5WvUL6+
y7J6y9S1zb0f7b8T7CP+ARPrZnR8KILB326w3QI/T5Lr3G5h27PSwc+k7enn
gPT+OL+W09Ik8soCnEfyR7uG7EiqFK3CGa4sZJCXV8q9qa7r98emJKxjY1vU
P1XkH05VqxW4CPEXi/8CBh3lcpgpAAA=

-->

</rfc>

