<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="std" docName="draft-hu-lsr-igp-link-mtu-01" ipr="trust200902">
  <front>
    <title abbrev="IGP Extensions for Link MTU">IGP Extensions for Link
    MTU</title>

    <author fullname="Zhibo Hu" initials="Z. " surname="Hu">
      <organization>Huawei</organization>

      <address>
        <postal>
          <street>Huawei Bld., No.156 Beiqing Rd.</street>

          <city>Beijing</city>

          <code>100095</code>

          <country>China</country>
        </postal>

        <email>huzhibo@huawei.com</email>
      </address>
    </author>

    <author fullname="Shuping Peng" initials="S." surname="Peng">
      <organization>Huawei</organization>

      <address>
        <postal>
          <street>Huawei Bld., No. 156 Beiqing Rd.</street>

          <city>Beijing</city>

          <code>100095</code>

          <country>China</country>
        </postal>

        <email>pengshuping@huawei.com</email>
      </address>
    </author>

    <author fullname="Xing Xi" initials="X." surname="Xi">
      <organization>Huawei</organization>

      <address>
        <postal>
          <street>Huawei Bld., No. 156 Beiqing Rd.</street>

          <city>Beijing</city>

          <code>100095</code>

          <country>China</country>
        </postal>

        <email>xixing1@huawei.com</email>
      </address>
    </author>

    <date day="10" month="July" year="2023"/>

    <abstract>
      <t>Segment routing (SR) leverages the source routing mechanism. It
      allows for a flexible definition of end-to-end paths within IGP
      topologies by encoding paths as sequences of topological sub-paths which
      are called segments. These segments are advertised by the link-state
      routing protocols (IS-IS and OSPF). Unlike the MPLS, SR does not have
      the specific path construction signaling so that it cannot support the
      Path MTU. This draft provides the necessary IS-IS and OSPF extensions
      about the Path MTU that need to be used on SR. Here, the term "OSPF"
      means both OSPFv2 and OSPFv3.</t>
    </abstract>

    <note title="Requirements Language">
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
      "SHOULD", "SHOULD 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.</t>
    </note>
  </front>

  <middle>
    <section title="Introduction">
      <t>Segment routing (SR) leverages the source routing mechanism. SR
      allows for a flexible definition of end-to-end paths within IGP
      topologies by encoding paths as sequences of topological sub-paths which
      are called segments. These segments are advertised by the link-state
      routing protocols (IS-IS and OSPF). The SR architecture as well as the
      routing policy is proposed in <xref target="RFC8402"/> and <xref
      target="I-D.ietf-spring-segment-routing-policy"/>. Two types of segments
      are defined, Prefix segments and Adjacency segments. Prefix segments
      represent an ECMP-aware shortest path to a prefix (or a node), as per
      the state of the IGP topology. Adjacency segments represent a hop over a
      specific adjacency between two nodes in the IGP. A prefix segment is
      typically a multi-hop path while an adjacency segment, in most of the
      cases, is a one-hop path. SR can compute the paths from end to end and
      without requiring any LDP or RSVP-TE signaling. SR supports per-flow
      explicit routing while just maintaining per-flow state only at the
      source node.</t>

      <t>SR architecture supports the distributed scenario and the centralized
      scenario. In the distributed scenario, the segments are allocated and
      signaled by IGP or BGP and a node needs to compute the source-routed
      policy. Some necessary IS-IS and OSPF extensions for SR are proposed in
      <xref target="RFC8665"/> <xref target="RFC8666"/> <xref
      target="RFC8667"/>. In a centralized scenario, the SR controller decides
      which nodes need to steer which packets on which source-routed policies.
      However, in both conditions, the MTU is not included in the SR policy.
      As the SR may push more MPLS labels or SRv6 SIDs in the packet header,
      the packets are more likely to be larger than the minimum MTU in the
      path compared to the traditional MPLS forwarding process. Unfortunately,
      with the current mechanisms in SR, the path MTU information cannot be
      obtained in advance. Therefore it cannot be ensured that the packet size
      is less than the path MTU which is the minimum link MTU of all the links
      in a path between a source node and a destination node. The definition
      of the path MTU is discussed in <xref target="RFC1191"/> <xref
      target="RFC8201"/>.</t>

      <t>This draft describes the necessary IS-IS and OSPF extensions for
      obtaining the path MTU to be used on SR. New sub-TLVs are introduced for
      both the IS-IS and OSPF protocols. With the IGP flooding process in the
      distributed scenario or the BGP transmission to the controller, the
      ingress node or the controller is able to compute the path MTU for the
      SR policy.</t>
    </section>

    <section title="Terminology">
      <t>Router: A node that forwards IP packets not explicitly addressed to
      itself.</t>

      <t>Interface: A node's attachment to a link.</t>

      <t>Segment: An instruction a node executes on the incoming packet. For
      example, forward packet according to shortest path to destination or a
      specific interface, etc..</t>

      <t>SR Policy: An ordered list of segments.</t>

      <t>MTU: Maximum Transmission Unit, the size in bytes of the largest IP
      packet, including the IP header and payload, that can be transmitted on
      a link or path. Note that this could more properly be called the IP MTU,
      to be consistent with how other standards organizations use the acronym
      MTU.</t>

      <t>Link MTU: The maximum transmission unit, i.e., maximum IP packet size
      in bytes, that can be conveyed in one piece over a link. Be aware that
      this definition is different from the definition used by other standards
      organizations.</t>

      <t>For IETF documents, link MTU is uniformly defined as the IP MTU over
      the link. This includes the IP header, but excludes link layer headers
      and other framing that is not part of IP or the IP payload.</t>

      <t>Be aware that other standards organizations generally define link MTU
      to include the link layer headers.</t>

      <t>For the MPLS data plane, this size includes the IP header and data
      (or other payload) and the label stack but does not include any
      lower-layer headers. A link may be an interface (such as Ethernet or
      Packet-over- SONET), a tunnel (such as GRE or IPsec), or an LSP.</t>

      <t>Path: The set of links traversed by a packet between a source node
      and a destination node</t>

      <t>Path MTU: The minimum link MTU of all the links in a path between a
      source node and a destination node.</t>
    </section>

    <section title="Link MTU Application Examples">
      <t>This section uses the SR Policy and SR Best Effort scenarios as
      examples to describe the applications of link MTU.</t>

      <section title="Link MTU for SR Policy Scenario">
        <t>Figure 1 shows an example of the Link MTU application for the SR
        Policy scenario. In the SR Policy scenario, the link MTU application
        procedure is as follows:</t>

        <t>Step 1: Collect Link MTUs on the entire network through IGP.</t>

        <t>Step 2: BGP-LS reports the link MTU to the controller.</t>

        <t>Step 3: After the controller calculating the SR Policy path, record
        the minimum link MTU of all the links in the path as the Min Link MTU.
        Consider the SRv6 encapsulation length as X. Then Path MTU = Min Link
        MTU - X.</t>

        <t>Step 4: The Path MTU is delivered to the SR Policy headend through
        BGP SR policy / PCEP. Headend fragments Packets Based on the Path
        MTU.</t>

        <t>In the case of a Topology Independent Loop-Free Alternate (TI-LFA)
        in P routers with encapsulation, It will re-encapsulate a new IPv6
        header and fragments Packets with the Path MTU of the ti-lfa path.</t>

        <t><figure suppress-title="false"
            title="Figure 1: Link MTU for SR Policy Scenario">
            <artwork align="center"><![CDATA[
  |--------------[ Controller ]-------------|
  |                                         |
  |                                         |
[ P1 ]--1500--[ P2 ]--1500--[ P3 ]--1200--[ P4 ]
  |             |             |             |
  |             |             |             |
1400          1400          1400           1400 
  |             |             |             |
  |             |             |             |
[ P5 ]--1500--[ P6 ]--1500--[ P7 ]--1200--[ P8 ]
]]></artwork>
          </figure></t>
      </section>

      <section title="Link MTU for SR Best Effort Scenario">
        <t>Figure 2 shows an example of the link MTU application for the SR
        Best Effort scenario. The IGP calculates the Path MTU of per
        destination address. For per destination address, record the minimum
        link MTU of all the links in the IGP SPF path as the Min Link MTU. In
        the case of a Topology Independent Loop-Free Alternate (TI-LFA) in P
        routers with encapsulation, It will re-encapsulate a new IPv6 header
        and fragments Packets with the Path MTU of the ti-lfa path.</t>

        <t><figure suppress-title="false"
            title="Figure 2: Link MTU for SR Best Effort Scenario">
            <artwork align="center"><![CDATA[
[ P1 ]--1500--[ P2 ]--1500--[ P3 ]--1200--[ P4 ]
  |             |             |             |
  |             |             |             |
1400          1400          1400           1400 
  |             |             |             |
  |             |             |             |
[ P5 ]--1500--[ P6 ]--1500--[ P7 ]--1200--[ P8 ]
]]></artwork>
          </figure></t>
      </section>
    </section>

    <section title="IGP Extensions">
      <t>This document describes IS-IS and OSPF extensions to flood the router
      interface MTU to each node within an IGP domain. Then the controller or
      the original node collects all the link MTUs from the routers. So the
      original node can compute the minimum link MTU of all the links in the
      path. The source node can limit the packet size less than the path
      MTU.</t>

      <section title="IS-IS Extensions">
        <t>A new sub-TLV called link MTU sub-TLV is defined for TLVs 22, 23,
        25, 141, 222, 223 in the Router Information LSP to carry the MTU of
        the interface associated with the link . Each sub-TLV is encoded as
        shown in Figure 3.</t>

        <t>Type: MTU, 1 byte, TBD.</t>

        <t>Length: # of octets in the value field, 1 byte.</t>

        <t>Value: The value is the MTU size of a link, 2 bytes.</t>

        <t><figure suppress-title="false"
            title="Figure 3: Link MTU Sub-TLV for the IS-IS extension">
            <artwork align="center"><![CDATA[ 0                   1
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Type = MTU  |     Length    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            MTU-Value          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure></t>

        <t>The use and meaning of these fields are as follows:</t>

        <t>Type - A single octet encoding the sub-TLV type. Here the type is 1
        octet.</t>

        <t>Length - A single octet encoding the total length of the value
        field of the sub-TLV in octets.</t>

        <t>MTU-Value - Two octets encoding the MTU size of the sub-TLV. This
        field identifies the size of the router interfaces.</t>

        <t>This sub-TLV is optional.</t>

        <t>This document defines a link MTU sub-TLV for IS-IS extension. The
        codepoints need to be determined by the IANA.</t>
      </section>

      <section title="OSPF Extensions">
        <t>A new sub-TLV called link MTU sub-TLV is defined in the
        corresponding LSA as specified for OSPFv2 and OSPFv3 to carry the MTU
        of the interface associated with the link. Each sub-TLV is encoded as
        shown in Figure 4.</t>

        <t>Type: MTU, 2 bytes, TBD.</t>

        <t>Length: # of octets in the value field, 2 bytes.</t>

        <t>Value: The value is the MTU size of a link, 2 bytes.</t>

        <t><figure suppress-title="false"
            title="Figure 4: Link MTU Sub-TLV for the OSPF extension">
            <artwork align="center"><![CDATA[ 0                   1
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Type = MTU          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Length             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           MTU-Value           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>The use and meaning of these fields are as follows:</t>

        <t>Type - Two octets encoding the TLV type. Here the type is 2
        octets.</t>

        <t>For OSPFv2, the link MTU is advertised as an optional sub-TLV of
        the OSPFv2 Extended Link TLV in the OSPFv2 Extended Link Opaque LSA as
        defined in <xref target="RFC7684"/> and the codepoints need to be
        determined by the IANA.</t>

        <t>For OSPFv3, the link MTU is advertised as an optional sub-TLV of
        the Router-Link TLV in the OSPFv3 E-Router-LSA as defined in <xref
        target="RFC8362"/> and the codepoints need to be determined by the
        IANA.</t>

        <t>Length - Two octets encoding the total length of the value field of
        the sub-TLV in octets.</t>

        <t>MTU-Value - Two octets encoding the MTU size of the TLV. This field
        identifies the size of the router interfaces.</t>

        <t>If the link MTU sub-TLV is advertised for multiple times for the
        same link in different OSPFv2 Extended Link Opaque LSAs or OSPFv3
        E-Router-LSAs originated by the same OSPF router, the link MTU sub-TLV
        in the OSPFv2 Extended Link Opaque LSA with the smallest Opaque ID or
        in the OSPFv3 E-Router-LSA with the smallest Link State ID MUST be
        used by receiving OSPF routers.</t>
      </section>
    </section>

    <section title="Acknowledgements">
      <t>TBD.</t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>This document requests that IANA allocates a new sub-TLV type as
      defined in Section 3.1 from the "Sub-TLVs for TLVs 22, 23, 25, 141, 222,
      and 223 (Extended IS reachability, IS Neighbor Attribute, L2 Bundle
      Member Attributes, inter-AS reachability information, MT-ISN, and MT IS
      Neighbor Attribute TLVs)" registry as specified.</t>

      <t><figure align="center" title="Figure 3: IS-IS Link MTU">
          <artwork><![CDATA[Value                  Description                  Reference
---------------------- ---------------------------- --------------
TBD                    IS-IS Link MTU               This document
]]></artwork>
        </figure></t>

      <t>This document requests that IANA allocates a new sub-TLV type as
      defined in Section 3.2 from the "OSPFv2 Extended Link TLV Sub-TLVs"
      registry.<figure align="center" title="Figure 4: OSPFv2 Link MTU">
          <artwork><![CDATA[Value                  Description                  Reference
---------------------- ---------------------------- --------------
TBD                    OSPFv2 Link MTU              This document
]]></artwork>
        </figure></t>

      <t>This document requests that IANA allocates a new sub-TLV type as
      defined in Section 3.2 from the "OSPFv3 Extended LSA Sub-TLVs"
      registry.<figure align="center" title="Figure 5: OSPFv3 Link MTU">
          <artwork><![CDATA[Value                  Description                  Reference
---------------------- ---------------------------- --------------
TBD                    OPSFv3 Link MTU              This document
]]></artwork>
        </figure></t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>These extensions to IS-IS and OSPF do not add any new security issues
      to the existing IGP.</t>
    </section>
  </middle>

  <back>
    <references title="References">
      <?rfc include="reference.RFC.2119"?>

      <?rfc include="reference.RFC.8174"?>

      <?rfc include='reference.RFC.8402'?>

      <?rfc include='reference.I-D.ietf-spring-segment-routing-policy'?>

      <?rfc include='reference.RFC.8665'?>

      <?rfc include='reference.RFC.8666'?>

      <?rfc include='reference.RFC.8667'?>

      <?rfc include='reference.RFC.1191'?>

      <?rfc include='reference.RFC.8201'?>

      <?rfc include='reference.RFC.7684'?>

      <?rfc include='reference.RFC.8362'?>
    </references>
  </back>
</rfc>
