<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc [
    <!ENTITY RFC2119 PUBLIC ''
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml'>
    <!ENTITY RFC3688 PUBLIC ''
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3688.xml'>
    <!ENTITY RFC6020 PUBLIC ''
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.6020.xml'>
    <!ENTITY RFC6241 PUBLIC ''
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.6241.xml'>
    <!ENTITY RFC6242 PUBLIC ''
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.6242.xml'>
    <!ENTITY RFC6991 PUBLIC ''
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.6991.xml'>
    <!ENTITY RFC7950 PUBLIC ''
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.7950.xml'>
    <!ENTITY RFC8040 PUBLIC ''
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8040.xml'>
    <!ENTITY RFC8174 PUBLIC ''
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8174.xml'>
    <!ENTITY RFC8340 PUBLIC ''
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8340.xml'>
    <!ENTITY RFC8341 PUBLIC ''
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8341.xml'>
    <!ENTITY RFC8342 PUBLIC ''
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8342.xml'>
    <!ENTITY RFC8446 PUBLIC ''
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8446.xml'>
    <!ENTITY RFC8667 PUBLIC ''
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8667.xml'>
    <!ENTITY I-D.qgp-lsr-isis-pics-yang PUBLIC ''
      'http://xml.resource.org/public/rfc/bibxml-ids/reference.I-D.draft-qgp-lsr-isis-pics-yang-03.xml'>
    ]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc strict="no" ?>
<?rfc toc="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes"?>

<?rfc rfcedstyle="yes" ?>
<?rfc subcompact="no" ?>

<rfc category="std" docName="draft-qgp-lsr-isis-pics-srmpls-yang-03" ipr="trust200902"
     consensus="true" submissionType="IETF" version="3">
  <!-- category values: std, bcp, info, exp, and historic
     ipr values: full3667, noModification3667, noDerivatives3667
     you can add the attributes updates="NNNN" and obsoletes="NNNN"
     they will automatically be output with "(if approved)" -->

  <!-- ***** FRONT MATTER ***** -->

  <front>
    <!-- The abbreviated title is used in the page header - it is only necessary if the
         full title is longer than 39 characters -->

  <title abbrev="IS-IS PICS SR-MPLS YANG">YANG Data Model for IS-IS Segment Routing MPLS PICS</title>

    <!-- add 'role="editor"' below for the editors if appropriate -->

    <!-- Another author who claims to be an editor -->

    <author fullname="Yingzhen Qu" initials="Y" surname="Qu">
      <organization>Futurewei Technologies</organization>
      <address>
        <email>yingzhen.ietf@gmail.com</email>
      </address>
    </author>
    <author fullname="Les Ginsberg" initials="L." surname="Ginsberg">
      <organization>Cisco Systems</organization>
      <address>
        <postal>
          <street></street>
          <city></city>
        </postal>
        <email>ginsberg@cisco.com.com</email>
      </address>
    </author>
    <author initials='A' surname='Przygienda' fullname='Antoni Przygienda'>
      <organization>Juniper Networks</organization>
      <address>
        <email>prz@juniper.net</email>
      </address>
    </author>
    <author fullname="Bruno Decraene" initials="B" surname="Decraene">
      <organization>Orange</organization>
      <address>
        <email>bruno.decraene@orange.com</email>
      </address>
    </author>
    <author initials='Y' surname='Zhu' fullname='Yongqing Zhu'>
      <organization>China Telecom</organization>
      <address>
        <email>zhuyq8@chinatelecom.cn</email>
      </address>
    </author>
    <date/>

    <!-- If the month and year are both specified and are the current ones, xml2rfc will fill
         in the current day for you. If only the current year is specified, xml2rfc will fill
   in the current day and month for you. If the year is not the current one, it is
   necessary to specify at least a month (xml2rfc assumes day="1" if not specified for the
   purpose of calculating the expiry date).  With drafts it is normally sufficient to
   specify just the year. -->

    <!-- Meta-data Declarations -->

    <area>General</area>

    <workgroup>Internet</workgroup>

    <!-- WG name at the upperleft corner of the doc,
         IETF is fine for individual submissions.
   If this element is not present, the default is "Network Working Group",
         which is used by the RFC Editor as a nod to the history of the IETF. -->

    <!-- Keywords will be incorporated into HTML output
         files in a meta tag but they have no effect on text or nroff
         output. If you submit your draft to the RFC Editor, the
         keywords will be used for the search engine. -->

    <abstract>
      <t>
        The YANG model in this document is to query an IS-IS Protocol Implementation Conformance Statement (PICS) of Segment Routing on MPLS data plane.
      </t>
    </abstract>
  </front>

  <middle>
    <section title="Overview">
      <t>
        YANG <xref target="RFC7950"></xref> is a data definition language
        used to define the contents of a conceptual data store
        that allows networked devices to be managed using NETCONF
        <xref target="RFC6241"/>.  YANG is proving relevant beyond its
        initial confines, as bindings to other interfaces (e.g., ReST) and
        encodings other than XML (e.g., JSON) are being defined.  Furthermore,
        YANG data models can be used as the basis for implementation of other
        interfaces, such as CLI and programmatic APIs.
      </t>

     <t>
      <xref target="I-D.qgp-lsr-isis-pics-yang"/> defines the framework to query 
      IS-IS Protocol Implementation Conformance Statement (PICS). The module
      defined in this document is used to query an IS-IS PICS of Segment
      Routing on MPLS data plane <xref target="RFC8667"/>.</t>

      <t>
        The YANG modules in this document conform to the Network Management
        Datastore Architecture (NMDA) <xref target="RFC8342"/>.
      </t>

      <section 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 <xref target="RFC2119"/>
        <xref target="RFC8174"/>.</t>
      </section>
    </section>



    <section title="Design of the Model">

        <t>
          The YANG module is used to query an IS-IS implementation of
          Segment Routing on MPLS data plane
          <xref target="RFC8667"/> for the conformance of the protocol
          implementation.
        </t>
        <t>
          Container "isis-pics-sr-mpls" only exists when "isis-pics-sr-mpls" is included
          in the list of "supported-isis-pics" in ietf-isis-pics module.
        </t>
        <t>
          The existence of a TLV support container means the support of
          a TLV. The details of the flags and features are included in the
          container.
        </t>

    </section>

    <section title="ISIS PICS for SR MPLS Tree">
      <t>
        This document uses the graphical representation of data models
        defined in <xref target="RFC8340"/>.
      </t>
            <artwork>
module: ietf-isis-pics-sr-mpls
  +--ro isis-pics-sr-mpls
     +--ro sr-capability-sub-tlv-support!
     |  +--ro i-bit-support?   isis-pics:support
     |  +--ro v-bit-support?   isis-pics:support
     +--ro prefix-sid-sub-tlv-support!
     |  +--ro tlv-135?   isis-pics:support
     |  +--ro tlv-235?   isis-pics:support
     |  +--ro tlv-236?   isis-pics:support
     |  +--ro tlv-237?   isis-pics:support
     +--ro adj-sid-sub-tlv-support!
     |  +--ro tlv-22?    isis-pics:support
     |  +--ro tlv-222?   isis-pics:support
     |  +--ro tlv-23?    isis-pics:support
     |  +--ro tlv-223?   isis-pics:support
     |  +--ro tlv-141?   isis-pics:support
     +--ro lan-adj-sid-sub-tlv-support!
     |  +--ro tlv-22?    isis-pics:support
     |  +--ro tlv-222?   isis-pics:support
     |  +--ro tlv-23?    isis-pics:support
     |  +--ro tlv-223?   isis-pics:support
     +--ro sid-label-tlv-support?              isis-pics:support
     +--ro sid-label-binding-tlv-support!
     |  +--ro srms
     |  |  +--ro sending?     isis-pics:support
     |  |  +--ro receiving?   isis-pics:support
     |  +--ro mirror-sid?   isis-pics:support
     +--ro mt-sid-label-binding-tlv-support!
     |  +--ro srms
     |  |  +--ro sending?     isis-pics:support
     |  |  +--ro receiving?   isis-pics:support
     |  +--ro mirror-sid?   isis-pics:support
     +--ro sr-algorithm-tlv-support!
     |  +--ro algo-support*   uint8
     +--ro sr-lb-tlv-support?                  isis-pics:support
     +--ro srms-preference-tlv-support?        isis-pics:support

  augment /isis-pics:isis-pics/isis-pics:isis-pics-mptlv:
    +--ro sid-label-binding-support?      isis-pics:support
    +--ro mt-sid-label-binding-support?   isis-pics:support
      </artwork>
    </section>


  <section title="IS-IS PICS SR-MPLS YANG Modules">

      <artwork><![CDATA[
<CODE BEGINS> file "ietf-isis-pics-sr-mpls@2024-07-03.yang"
module ietf-isis-pics-sr-mpls {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-isis-pics-sr-mpls";
  prefix isis-pics-sr-mpls;

  import iana-isis-pics {
    prefix "iana-isis-pics";
  }

  import ietf-isis-pics {
    prefix "isis-pics";
  }

  organization
    "IETF LSR - Link State Routing Working Group";
  contact
    "WG Web:   <http://datatracker.ietf.org/wg/lsr>
     WG List:  <mailto:lsr@ietf.org>

     Author:   Yingzhen Qu
               <mailto:yingzhen.ietf@gmail.com>
     Author:   Les Ginsberg
               <mailto:ginsberg@cisco.com>
     Author:   Tony Przygienda
               <mailto:prz@juniper.net>
     Author:   Yongqing Zhu
               <mailto:zhuyq8@chinatelecom.cn>";

  description
    "The YANG module is used to query an IS-IS Protocol 
     Implementation Conformance Statement (PICS) of Segment
     Routing for MPLS data plane (RFC8667).

     This YANG model conforms to the Network Management
     Datastore Architecture (NMDA) as described in RFC 8342.

     Copyright (c) 2024 IETF Trust and the persons identified as
     authors of the code.  All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject to
     the license terms contained in, the Revised BSD License set
     forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.";

  reference
    "RFC XXXX: YANG Data Model for IS-IS Segment Routing MPLS PICS";

  revision 2024-07-03 {
    description
      "Initial Version";
    reference
      "RFC XXXX: YANG Data Model for IS-IS Segment Routing MPLS PICS.";
  }

  container isis-pics-sr-mpls {
    when "/isis-pics:isis-pics/isis-pics:supported-isis-pics "
       + "= 'iana-isis-pics:isis-pics-sr-mpls'" {
      description
        "This container only exists when isis-pics-sr-mpls is present
         in the ietf-isis-pics module.";
    }
    config false;
    description
      "IS-IS Protocol Implementation Conformance Statement (PICS) of
       Segment Routing on MPLS data plane.";
    reference
       "RFC 8667: IS-IS Extensions for Segment Routing";


    container sr-capability-sub-tlv-support {
      presence "Support of sr-capability sub-tlv.";
      //config false;
      description
        "Support of sr-capability sub-tlv (Type 2).";

      leaf i-bit-support {
        type isis-pics:support;
        description
          "support mpls-ipv4 capability.";
      }
      leaf v-bit-support {
        type isis-pics:support;
        description
          "support mpls-ipv6 capability.";
      }
    }

    container prefix-sid-sub-tlv-support {
      presence "Support of prefix-sid sub-tlv.";
      description
        "Support of prefix-sid sub-tlv (Type 3).";  

      leaf tlv-135 {
        type isis-pics:support;
        description
          "May present in TLV-135, extended IPv4 reachability.";
      }
      leaf tlv-235 {
        type isis-pics:support;
        description
          "May present in TLV-235, multi-topology IPv4 reachability.";
      }
      leaf tlv-236 {
        type isis-pics:support;
        description
          "May present in TLV-236, IPv6 IP reachability.";
      }
      leaf tlv-237 {
        type isis-pics:support;
        description
          "May present in TLV-237, multi-topology IPv6 IP
           reachability.";
      }         
    }

    container adj-sid-sub-tlv-support {
      presence "Support of adj-sid sub-tlv.";
      description
        "Support of adjacency segment identifier sub-tlv (Type 31).";

      leaf tlv-22 {
        type isis-pics:support;
        description
          "May present in TLV-22, extended IS reachability.";
      }
      leaf tlv-222 {
        type isis-pics:support;
        description
          "May present in TLV-222, MT-ISN.";
      }
      leaf tlv-23 {
        type isis-pics:support;
        description
          "May present in TLV-23, IS neighbor attribute.";
      }
      leaf tlv-223 {
        type isis-pics:support;
        description
          "May present in TLV-223, MT IS neighbor attribute.";
      }
      leaf tlv-141 {
        type isis-pics:support;
        description
          "May present in TLV-141, inter-AS reachability information.";
      }      
    }

    container lan-adj-sid-sub-tlv-support {
      presence "Support of lan-adj-sid sub-tlv.";
      description
        "Support of LAN adj-sid sub-tlv (Type 32).";

      leaf tlv-22 {
        type isis-pics:support;
        description
          "May present in TLV-22, extended IS reachability.";
      }
      leaf tlv-222 {
        type isis-pics:support;
        description
          "May present in TLV-222, MT-ISN.";
      }
      leaf tlv-23 {
        type isis-pics:support;
        description
          "May present in TLV-23, IS neighbor attribute.";
      }
      leaf tlv-223 {
        type isis-pics:support;
        description
          "May present in TLV-223, MT IS neighbor attribute.";
      }      
    }

    leaf sid-label-tlv-support {
      type isis-pics:support;
      description
        "Support of sid/label sub-tlv (Type 1).";
    }

    container sid-label-binding-tlv-support {
      presence "Support of sid-label-binding sub-tlv.";
      description
        "Support of sid/label binding tlv (Type 149).";

      container srms {
        description
          "Support to advertise or receive prefix to sid/label
           mapping.";

        leaf sending {
          type isis-pics:support;
          description
            "Support to advertise SR mappings.";
        }
        leaf receiving {
          type isis-pics:support;
          description
            "Support to receive and use the MS mapping advertisement.";
        }
      }

      leaf mirror-sid {
        type isis-pics:support;
        description
          "Support to advertise a mirror sid indicating the ability
           of a node to process traffic originally destined to
           another IGP node.";
      }
    }

    container mt-sid-label-binding-tlv-support {
      presence "Support of multi-topology sid-label-binding sub-tlv.";
      description
        "Support of multi-topology sid/label binding tlv (Type 150).";

      container srms {
        description
          "Support to advertise or receive prefix to sid/label
           mapping.";

        leaf sending {
          type isis-pics:support;
          description
            "Support to advertise SR mappings.";
        }
        leaf receiving {
          type isis-pics:support;
          description
            "Support to receive and use the MS mapping advertisement.";
        }
      }

      leaf mirror-sid {
        type isis-pics:support;
        description
          "Support to advertise a mirror sid indicating the ability
           of a node to process traffic originally destined to
           another IGP node.";
      }
    }

    container sr-algorithm-tlv-support {
      presence "Support of SR-Algorithm sub-tlv.";
      description
        "Support of SR-Algorithm sub-tlv (Type 19).";
      
      leaf-list algo-support {
        type uint8;
        description
          "Supported algorithms.";
      }
    }

    leaf sr-lb-tlv-support {
      type isis-pics:support;
      description
       "Support of the SR Local Block sub-tlv (Type 22).";
    }

    leaf srms-preference-tlv-support {
      type isis-pics:support;
      description
       "Support of the SRMS Preference sub-tlv (Type 24).";
    }
  }

  augment "/isis-pics:isis-pics/isis-pics:isis-pics-mptlv" 
  {
    description
      "Augment isis-pics-mptlv container with the tlvs defined
       in RFC 8667.";

    leaf sid-label-binding-support {
      type isis-pics:support;
      description
        "MP-TLV support of sid/label binding tlv (Type 149).";
    }

    leaf mt-sid-label-binding-support {
      type isis-pics:support;
      description
        "MP-TLV support of multi-topology sid/label
        binding tlv (Type 150).";
    }
  }
}
<CODE ENDS>
      ]]></artwork>

  </section>


    <!-- Possibly a 'Contributors' section ... -->

    <section anchor="Security" title="Security Considerations">
      <t>
        The YANG modules specified in this document define a schema for
        data that is designed to be accessed via network
        management protocols such as NETCONF <xref target="RFC6241"/> or
        RESTCONF <xref target="RFC8040"/>. The lowest NETCONF layer is the secure transport
        layer, and the mandatory-to-implement secure transport is Secure Shell (SSH)
        <xref target="RFC6242"/>. The lowest RESTCONF layer is HTTPS, and the
        mandatory-to-implement secure transport is TLS <xref target="RFC8446"/>.
      </t>

      <t>
        The NETCONF access control model <xref target="RFC8341"/> provides the
        means to restrict access for particular NETCONF or RESTCONF users to a
        pre-configured subset of all available NETCONF or RESTCONF protocol
        operations and content.
      </t>

      <t>
        Some of the readable data nodes in the ietf-isis-pics-sr-mpls.yang module
        may be considered sensitive or vulnerable in some network environments. It is thus
        important to control read access (e.g., via get, get-config, or notification)
        to these data nodes.
      </t>

   </section>
<section title="IANA Considerations">
  <t>The document requests IANA to create a entry, called isis-pics-sr-mpls
   in the "IS-IS PICS" registry <xref target="I-D.qgp-lsr-isis-pics-yang"/>.
 </t>
 <t>This document requests IANA to add a new "identity" to the iana-isis-pics
  YANG module. The following statement is suggested:
  </t>
  <artwork>
    identity isis-pics-sr-mpls {
     base "isis-pics";
     description
        "The identity for support of SR MPLS.";
      reference
        "RFC 8667: IS-IS Extensions for Segment Routing.";
    }
  </artwork>

  <t>
    This document registers a URI in the IETF XML registry
    <xref target="RFC3688"/>.  Following the format in <xref target="RFC3688"/>,
    the following registration is requested to be made:
  </t>

   <artwork>
   URI: urn:ietf:params:xml:ns:yang:ietf-isis-pics-sr-mpls
   Registrant Contact: The IESG.
   XML: N/A, the requested URI is an XML namespace.
   </artwork>
   <t>
     This document registers a YANG module in the YANG Module Names
     registry <xref target="RFC6020"/>.
   </t>
   <artwork>
   name: ietf-isis-pics-sr-mpls
   namespace: urn:ietf:params:xml:ns:yang:ietf-isis-pics-sr-mpls
   prefix: isis-pics-sr-mpls
   reference: RFC XXXX
   </artwork>
</section>
    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>The YANG model was developed using the suite of YANG tools written
      and maintained by numerous authors.</t>
    </section>
  </middle>

  <!--  *****BACK MATTER ***** -->

  <back>
    <!-- References split into informative and normative -->

    <!-- There are 2 ways to insert reference entries from the citation libraries:
     1. define an ENTITY at the top, and use "ampersand character"RFC2629; here (as shown)
     2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xml"?> here
        (for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis.xml")

     Both are cited textually in the same manner: by using xref elements.
     If you use the PI option, xml2rfc will, by default, try to find included files in the same
     directory as the including file. You can also define the XML_LIBRARY environment variable
     with a value containing a set of directories to search.  These can be either in the local
     filing system or remote ones accessed by http (http://domain/dir/... ).-->

    <references title="Normative References">
      <!--?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml"?-->
      &RFC2119;
      &RFC3688;
      &RFC6020;
      &RFC6241;
      &RFC6242;
      &RFC6991;
      &RFC7950;
      &RFC8040;
      &RFC8174;
      &RFC8341;
      &RFC8342;
      &RFC8446;
      &RFC8667;
      <reference anchor="ISO10589" target="ISO/IEC 10589:2002">
        <front>
          <title>
            Intermediate system to Intermediate system routing information exchange protocol for use in conjunction with the Protocol for providing the Connectionless-mode Network Service (ISO 8473)
          </title>
          <author fullname="ISO" initials="" surname="ISO">
            <organization>IANA</organization>
          </author>
          <date month="August" year="1987"/>
        </front>
      </reference>
      &I-D.qgp-lsr-isis-pics-yang;
    </references>
    <references title="Informative References">
      <!-- Here we use entities that we defined at the beginning. -->
      &RFC8340;
    </references>
  </back>
</rfc>
