<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.21 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-netconf-trace-ctx-extension-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.25.0 -->
  <front>
    <title abbrev="NETCONF Trace Context Extension">NETCONF Extension to support Trace Context propagation</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-netconf-trace-ctx-extension-03"/>
    <author fullname="Roque Gagliano">
      <organization>Cisco Systems</organization>
      <address>
        <postal>
          <street>Avenue des Uttins 5</street>
          <city>Rolle</city>
          <code>1180</code>
          <country>Switzerland</country>
        </postal>
        <email>rogaglia@cisco.com</email>
      </address>
    </author>
    <author fullname="Kristian Larsson">
      <organization>Deutsche Telekom AG</organization>
      <address>
        <email>kll@dev.terastrm.net</email>
      </address>
    </author>
    <author fullname="Jan Lindblad">
      <organization>Cisco Systems</organization>
      <address>
        <email>jlindbla@cisco.com</email>
      </address>
    </author>
    <date year="2024" month="December" day="12"/>
    <area>Operations and Management</area>
    <workgroup>Network Configuration</workgroup>
    <keyword>telemetry</keyword>
    <keyword>distributed systems</keyword>
    <keyword>opentelemetry</keyword>
    <abstract>
      <?line 86?>

<t>This document defines how to propagate trace context information across the Network Configuration Protocol (NETCONF), that enables distributed tracing scenarios.  It is an adaption of the HTTP-based W3C specification.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-netconf-trace-ctx-extension/"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-netconf-trace-ctx-extension/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Network Configuration Working Group mailing list (<eref target="mailto:netconf@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/netconf/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/netconf/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/netconf-wg/trace-ctx-extension"/>.</t>
    </note>
  </front>
  <middle>
    <?line 90?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Network automation and management systems commonly consist of multiple
sub-systems and together with the network devices they manage, they effectively form a distributed system.  Distributed tracing is a methodology implemented by tracing tools to follow, analyze and debug operations, such as configuration transactions, across multiple distributed systems.  An operation is uniquely identified by a trace-id and through a trace context, carries some metadata about the operation.  Propagating this "trace context" between systems enables forming a coherent view of the entire operation as carried out by all involved systems.</t>
      <t>The W3C has defined two HTTP headers for context propagation that are useful in use case scenarios of distributed systems like the ones defined in <xref target="RFC8309"/>.  This document defines an extension to the NETCONF protocol to add the same concepts and enable trace context propagation over NETCONF.</t>
      <t>It is worth noting that the trace context is not meant to have any relationship with the data that is carried with a given operation (including configurations, service identifiers or state information).</t>
      <t>A trace context also differs from <xref target="I-D.ietf-netconf-transaction-id"/> in several ways as the trace operation may involve any operation (including for example validate, lock, unlock, etc.) Additionally, a trace context scope may include the full application stack (orchestrator, controller, devices, etc) rather than a single NETCONF server, which is the scope for the transaction-id. The trace context is also complementary to <xref target="I-D.ietf-netconf-transaction-id"/> as a given trace-id can be associated with the different transaction-ids as part of the information exported to the collector.</t>
      <t>The following enhancement of the reference SDN Architecture from <xref target="RFC8309"/> shows the impact of distributed traces for a network operator.</t>
      <figure anchor="rfc8309-sample-arch">
        <name>A Sample SDN Architecture from RFC8309 augmented to include the export of metrics, events, logs and traces from the different components to a common collector.</name>
        <sourcecode type="art"><![CDATA[
                +------------------+                   +-----------+
                |   Orchestrator   |                   |           |
                |                  |     ------------> |           |
                .------------------.                   |           |
               .          :         .                  |           |
              .           :          .                 | Collector |
  +------------+   +------------+   +------------+     | (Metrics, |
  |            |   |            |   |            |     |  Events,  |
  | Controller |   | Controller |   | Controller | --> |  Logs,    |
  |            |   |            |   |            |     |  Traces)  |
  +------------+   +------------+   +------------+     |           |
      :              .       .               :         |           |
      :             .         .              :         |           |
      :            .           .             :         |           |
 +---------+  +---------+  +---------+  +---------+    |           |
 | Network |  | Network |  | Network |  | Network |    |           |
 | Element |  | Element |  | Element |  | Element | -> |           |
 +---------+  +---------+  +---------+  +---------+    +-----------+
]]></sourcecode>
      </figure>
      <t>The network automation, management and control architectures are distributed in nature.  In order to "manage the managers", operators would like to use the same techniques as any other distributed systems in their IT environment.  Solutions for analysing Metrics, Events, Logs and Traces (M.E.L.T) are key for the successful monitoring and troubleshooting of such applications.  Initiatives such as the OpenTelemetry <xref target="OpenTelemetry"/> enable rich ecosystems of tools that NETCONF-based applications would want to participate in.</t>
      <t>With the implementation of this trace context propagation extension to NETCONF, backend systems behind the M.E.L.T collector will be able to correlate information from different systems but related to a common context.</t>
      <t>This document does not cover the somewhat related functionality specified in <xref target="W3C-Baggage"/>.  Mapping of the Baggage functionality into YANG may be specified in a future document.</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.</t>
        <t>Additionally, the document utilizes the following abbreviations:</t>
        <dl>
          <dt>OTLP:</dt>
          <dd>
            <t>OpenTelemetry protocol as defined by <xref target="OpenTelemetry"/></t>
          </dd>
          <dt>M.E.L.T:</dt>
          <dd>
            <t>Metrics, Events, Logs and Traces</t>
          </dd>
          <dt>gNMI:</dt>
          <dd>
            <t>gRPC Network Management Interface, as defined by <xref target="gNMI"/></t>
          </dd>
        </dl>
        <t>The XML prefixes used in this document are mapped as follows:</t>
        <ul spacing="normal">
          <li>
            <t>xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0",</t>
          </li>
          <li>
            <t>xmlns:w3ctc="urn:ietf:params:xml:ns:netconf:w3ctc:1.0" and</t>
          </li>
          <li>
            <t>xmlns:ietf-trace-context=
  "urn:ietf:params:xml:ns:yang:ietf-trace-context"</t>
          </li>
        </ul>
      </section>
      <section anchor="implementation-example-1-opentelemetry">
        <name>Implementation example 1: OpenTelemetry</name>
        <t>We will describe an example to show the value of trace context propagation in the NETCONF protocol.  In the OTLP Sample Architecture <xref target="otlp-sample-arch"/>  below, we show a deployment based on the RFC8309 sample architecture <xref target="rfc8309-sample-arch"/> above, with a single controller and two network elements.  In this example, the NETCONF protocol is running between the Orchestrator and the Controller.  NETCONF is also used between the Controller and the Network Elements.</t>
        <t>Let's assume an edit-config operation between the orchestrator and the controller that results (either synchronously or asynchronously) in corresponding edit-config operations from the Controller towards the two network elements.  All trace operations are related and will create M.E.L.T data.</t>
        <figure anchor="otlp-sample-arch">
          <name>An implementation example where the NETCONF protocol is used between the Orchestrator and the Controller and also between the Controller and the Network Elements.  Every component exports M.E.L.T information to the collector using the OTLP protocol.</name>
          <sourcecode type="art"><![CDATA[
            +------------------+                        +-----------+
            |   Orchestrator   |    OTLP protocol       |           |
            |                  |  ------------------->  |           |
            .------------------+                        |           |
           .  NETCONF                                   |           |
          .   edit-config (trace-id "1", parent-id "A") | Collector |
+------------+                                          | (Metrics, |
|            |                                          |  Events,  |
| Controller |   ------------------------------------>  |  Logs,    |
|            |                 OTLP protocol            |  Traces)  |
+------------+                                          |           |
   :      .  NETCONF                                    |           |
   :        . edit-config (trace-id "1", parent-id "B") |           |
   :          .                                         |           |
+---------+   +---------+                               |           |
| Network |   | Network |       OTLP protocol           |           |
| Element |   | Element |  -------------------------->  |           |
+---------+   +---------+                               +-----------+
]]></sourcecode>
        </figure>
        <t>Each of the components in this example (Orchestrator, Controller and Network Elements) is exporting M.E.L.T information to the collector using the OpenTelemetry Protocol (OTLP).</t>
        <t>For every edit-config operation, the trace context is included.  In particular, the same trace-id "1" (simplified encoding for documentation) is included in all related NETCONF messages, which enables the collector and any backend application to correlate all M.E.L.T messages related to this transaction in this distributed stack.</t>
        <t>Another interesting attribute is the parent-id.  We can see in this example that the parent-id between the orchestrator and the controller ("A") is different from the one between the controller and the network elements ("B").  This attribute will help the collector and the backend applications to build a connectivity graph to understand how M.E.L.T information exported from one component relates to the information exported from a different component.</t>
        <t>With this additional metadata exchanged between the components and exposed to the M.E.L.T collector, there are important improvements to the monitoring and troubleshooting operations for the full application stack.</t>
      </section>
      <section anchor="implementation-example-2-yang-datastore">
        <name>Implementation example 2: YANG Datastore</name>
        <t>OpenTelemetry implements the "push" model for data streaming where information is sent to the back-end as soon as produced and is not required to be stored in the system. In certain cases, a "pull" model may be envisioned, for example for performing forensic analysis while not all OTLP traces are available in the back-end systems.</t>
        <t>An implementation of a "pull" mechanism for M.E.L.T. information in general and for traces in particular, could consist of storing traces in a YANG datastore (particularly the operational datastore.) Implementations should consider the use of circular buffers to avoid resource exhaustion. External systems could access traces (and particularly past traces) via NETCONF, RESTCONF, gNMI or other polling mechanisms. Finally, storing traces in a YANG datastore enables the use of YANG-Push <xref target="RFC8641"/> or gNMI Telemetry as additional "push" mechanisms.</t>
        <t>This document does not specify the YANG module in which traces could be stored inside the different components. That said, storing the context information described in this document as part of the recorded traces would allow back-end systems to correlate the information from different components as in the OpenTelemetry implementation.</t>
        <figure anchor="melt-example">
          <name>An implementation example where the NETCONF protocol is used between the Orchestrator and the Controller and also between the Controller and the Network Elements.  M.E.L.T. information is stored in local YANG Datastores and accessed by the collector using "pull" mechanisms using the NETCONF (NC), RESTCONF (RC) or gNMI protocols. A "push" strategy is also possible via YANG-Push or gNMI.</name>
          <sourcecode type="art"><![CDATA[
            +------------------+                        +-----------+
            | Orchestrator     |                        |           |
            |                  |    NC/RC/gNMI or YP    |           |
            |   YANG Datastore | <------------------->  |           |
            .------------------+     pull or push       |           |
           .  NETCONF                                   |           |
          .   edit-config (trace-id "1", parent-id "A") | Collector |
+----------------+                                      | (Metrics, |
|                |           NC/RC/gNMI or YP           |  Events,  |
| Controller     |   <------------------------------->  |  Logs,    |
|  YANG Datastore|             pull or push             |  Traces)  |
+----------------+                                      |           |
   :      .  NETCONF                                    |           |
   :        . edit-config (trace-id "1", parent-id "B") |           |
   :          .                                         |           |
+---------+   +---------+                               |           |
| Network |   | Network |        NC/RC/gNMI or YP       |           |
| Element |   | Element |  <------------------------->  |           |
| YANG DS |   | YANG DS |         pull or push          |           |
+---------+   +---------+                               +-----------+
]]></sourcecode>
        </figure>
      </section>
      <section anchor="use-cases">
        <name>Use Cases</name>
        <section anchor="provisioning-root-cause-analysis">
          <name>Provisioning root cause analysis</name>
          <t>When a provisioning activity fails, errors are typically propagated northbound, however this information may be difficult to troubleshoot and typically, operators are required to navigate logs across all the different components.</t>
          <t>With the support for trace context propagation as described in this document for NETCONF, the collector will be able to search every trace, event, metric, or log in connection to that trace-id and facilitate the performance of a root cause analysis due to a network changes. The trace information could also be included as an optional resource with the different NETCONF transaction ids described in <xref target="I-D.ietf-netconf-transaction-id"/>.</t>
        </section>
        <section anchor="system-performance-profiling">
          <name>System performance profiling</name>
          <t>When operating a distributed system such as the one shown in <xref target="otlp-sample-arch"/>, operators are expected to benchmark Key Performance Indicators (KPIs) for the most common tasks.  For example, what is the typical delay when provisioning a VPN service across different controllers and devices.</t>
          <t>Thanks to Application Performance Management (APM) systems, from these KPIs, an operator can detect a normal and abnormal behaviour of the distributed system. Also, an operator can better plan any upgrades or enhancements in the platform.</t>
          <t>With the support for context propagation as described in this document for NETCONF, much richer system-wide KPIs can be defined and used for troubleshooting as the metrics and traces propagated by the different components share a common context.  Troubleshooting for abnormal behaviours can also be troubleshot from the system view down to the individual element.</t>
        </section>
        <section anchor="billing-and-auditing">
          <name>Billing and auditing</name>
          <t>In certain circumstances, we could envision tracing information used as additional inputs to billing systems. In particular, trace context information could be used to validate that a certain northbound order was carried out in southbound systems.</t>
        </section>
      </section>
    </section>
    <section anchor="netconf-extension">
      <name>NETCONF Extension</name>
      <t>When performing NETCONF operations by sending NETCONF RPCs, a NETCONF client MAY include trace context information in the form of XML attributes.  The <xref target="W3C-Trace-Context"/> defines two HTTP headers; traceparent and tracestate for this purpose.  NETCONF clients that are taking advantage of this feature MUST add one w3ctc:traceparent attribute and MAY add one w3ctc:tracestate attribute to the nc:rpc tag.</t>
      <t>A NETCONF server that receives a trace context attribute in the form of a w3ctc:traceparent attribute SHOULD apply the mutation rules described in <xref target="W3C-Trace-Context"/>. A NETCONF server MAY add one w3ctc:traceparent attribute in the nc:rpc-reply response to the nc:rpc tag above.  NETCONF servers MAY also add one w3ctc:traceparent attribute in notification and update message envelopes: notif:notification, yp:push-update and yp:push-change-update.</t>
      <t>For example, a NETCONF client might send:</t>
      <sourcecode type="xml"><![CDATA[
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1"
     xmlns:w3ctc="urn:ietf:params:xml:ns:netconf:w3ctc:1.0"
     w3ctc:traceparent=
       "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01">
  <get-config/>
</rpc>
]]></sourcecode>
      <t>In all cases above where a client or server adds a w3ctc:traceparent attribute to a tag, that client or server MAY also add one w3ctc:tracestate attribute to the same tag.</t>
      <t>The proper encoding and interpretation of the contents of the w3ctc:traceparent attribute is described in <xref target="W3C-Trace-Context"/> section 3.2 except 3.2.1.  The proper encoding and interpretation of the contents in the w3ctc:tracestate attribute is described in <xref target="W3C-Trace-Context"/> section 3.3 except 3.3.1 and 3.3.1.1.  A NETCONF XML tag can only have zero or one w3ctc:tracestate attributes, so its content MUST always be encoded as a single string.  The tracestate field value is a list of list-members separated by commas (,).  A list-member is a key/value pair separated by an equals sign (=).  Spaces and horizontal tabs surrounding list-members are ignored.  There is no limit to the number of list-members in a list.</t>
      <t>For example, a NETCONF client might send:</t>
      <sourcecode type="xml"><![CDATA[
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1"
     xmlns:w3ctc="urn:ietf:params:xml:ns:netconf:w3ctc:1.0"
     w3ctc:tracestate="rojo=00f067aa0ba902b7,congo=t61rcWkgMzE"
     w3ctc:traceparent=
       "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01">
  <get-config/>
</rpc>
]]></sourcecode>
      <t>As in all XML documents, the order between the attributes in an XML tag has no significance.  Clients and servers MUST be prepared to handle the attributes no matter in which order they appear.  The tracestate value MAY contain double quotes in its payload.  If so, they MUST be encoded according to XML rules, for example:</t>
      <sourcecode type="xml"><![CDATA[
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1"
     xmlns:w3ctc="urn:ietf:params:xml:ns:netconf:w3ctc:1.0"
     w3ctc:traceparent=
       "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01"
     w3ctc:tracestate=
       "value-with-quotes=&quot;Quoted string&quot;,other-value=123">
  <get-config/>
</rpc>
]]></sourcecode>
      <section anchor="error-handling">
        <name>Error handling</name>
        <t>The NETCONF server SHOULD follow the "Processing Model for Working with Trace Context" as specified in <xref target="W3C-Trace-Context"/>.  Based on this processing model, it is NOT RECOMMENDED to reject an RPC because of the trace context attribute values.</t>
        <t>If the server still decides to reject the RPC because of the trace context attribute values, the server MUST return a NETCONF rpc-error with the following values:</t>
        <artwork><![CDATA[
  error-tag:      operation-failed
  error-type:     protocol
  error-severity: error
]]></artwork>
        <t>Additionally, the error-info tag MUST contain a
trace-context-error-info structure with relevant details about
the error.  This structure is defined in the module
ietf-netconf-context.yang.  Example of a badly formated trace
context extension:</t>
        <sourcecode type="xml"><![CDATA[
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1"
     xmlns:w3ctc="urn:ietf:params:xml:ns:netconf:w3ctc:1.0"
     w3ctc:traceparent=
       "Bad Format"
     w3ctc:tracestate=
       "value-with-quotes=&quot;Quoted string&quot;,other-value=123">
  <get-config/>
</rpc>
]]></sourcecode>
        <t>This might give the following error response:</t>
        <sourcecode type="xml"><![CDATA[
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"
            xmlns:w3ctc="urn:ietf:params:xml:ns:netconf:w3ctc:1.0"
            xmlns:ietf-trace-context=
            "urn:ietf:params:xml:ns:yang:ietf-trace-context"
            message-id="1">
  <rpc-error>
    <error-type>protocol</error-type>
    <error-tag>operation-failed</error-tag>
    <error-severity>error</error-severity>
    <error-message>
      Context traceparent attribute incorrectly formatted
    </error-message>
    <error-info>
      <ietf-trace-context:trace-context-error-info>
        <ietf-trace-context:meta-name>
          w3ctc:traceparent
        </ietf-trace-context:meta-name>
        <ietf-trace-context:meta-value>
          Bad Format
        </ietf-trace-context:meta-value>
        <ietf-trace-context:error-type>
          ietf-trace-context:bad-format
        </ietf-trace-context:error-type>
      </ietf-trace-context:trace-context-error-info>
    </error-info>
  </rpc-error>
</rpc-reply>
]]></sourcecode>
      </section>
      <section anchor="trace-context-extension-versioning">
        <name>Trace Context extension versioning</name>
        <t>This extension refers to the <xref target="W3C-Trace-Context"/> trace context capability. The W3C traceparent and tracestate headers include the notion of versions. It would be desirable for a NETCONF client to be able to discover the one or multiple versions of these headers supported by a server. We would like to achieve this goal avoiding the definition of new NETCONF capabilities for each headers' version.</t>
        <t>We define a pair YANG modules (ietf-trace-ctx-traceparent-1.0.yang and ietf-trace-ctx-tracestate-1.0.yang) that MUST be included in the YANG library per <xref target="RFC8525"/> of the NETCONF server supporting the NETCONF Trace Context extension. These capabilities that will refer to the headers' supported versions. Future updates of this document could include additional YANG modules for new headers' versions.</t>
      </section>
    </section>
    <section anchor="yang-modules">
      <name>YANG Modules</name>
      <section anchor="yang-module-for-trace-context-error-info-structure">
        <name>YANG module for trace-context-error-info structure</name>
        <sourcecode type="yang" markers="true" name="ietf-trace-context@2024-11-07.yang"><![CDATA[
module ietf-trace-context {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-trace-context";
  prefix ietf-trace-context;

  import ietf-yang-structure-ext {
    prefix sx;
    reference
      "RFC8791: YANG Data Structure Extensions";
  }

  organization
    "IETF NETCONF (Network Configuration) Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/netconf/>
     WG List:  <mailto:netconf@ietf.org>

     Authors:  Roque Gagliano
               <mailto:rogaglia@cisco.com>

               Jan Lindblad
               <mailto:jlindbla@cisco.com>

               Kristian Larsson
               <mailto:kll@dev.terastrm.net>
    ";
  description
    "When propagating tracing information across applications,
     client and servers needs to share some specific contextual
     information. This  extensions aligns the NETCONF and RESTCONF
     protocols to the W3C trace-context document:
     https://www.w3.org/TR/2021/REC-trace-context-1-20211123

     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

     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 (RFC 2119) (RFC 8174) when, and only when,
     they appear in all capitals, as shown here.
    ";

  revision 2024-11-07 {
    description
      "Initial revision";
    reference
      "RFC XXXX:
       NETCONF Extension to support Trace Context propagation";
  }

  identity meta-error {
    description
      "Base identity for trace context attribute errors.";
  }

  identity missing {
    base meta-error;
    description
      "Indicates an attribute or header that is required
       (in the current situation) is missing.";
  }

  identity bad-format {
    base meta-error;
    description
      "Indicates an attribute or header value where the
       value is incorrectly formatted.";
  }

  identity processing-error {
    base meta-error;
    description
      "Indicates that the server encountered a processing
       error while processing the attribute or header value.";
  }

  typedef meta-error-type {
    type identityref {
      base meta-error;
    }
    description
      "Error type";
  }

  sx:structure trace-context-error-info {
    container trace-context-error-info {
      description
        "This error is returned by a NETCONF or RESTCONF server
         when a client sends a NETCONF RPC with additonal
         attributes or RESTCONF RPC with additional headers
         for trace context processing, and there is an error
         related to them.  The server has aborted the RPC.";
      leaf meta-name {
        type string;
        description
          "The name of the problematic or missing meta information.
           In NETCONF, the qualified XML attribute name.
           In RESTCONF, the HTTP header name.
           If a client sent a NETCONF RPC with the attribute
           w3ctc:traceparent='incorrect-format'
           this leaf would have the value 'w3ctc:traceparent'";
      }
      leaf meta-value {
        type string;
        description
          "The value of the problematic meta information received
           by the server.
           If a client sent a NETCONF RPC with the attribute
           w3ctc:traceparent='incorrect-format'
           this leaf would have the value 'incorrect-format'.";
      }
      leaf error-type {
        type meta-error-type;
        description
          "Indicates the type of meta information problem
           detected by the server.
           If a client sent an RPC annotated with the attribute
           w3ctc:traceparent='incorrect-format'
           this leaf might have the value
           'ietf-trace-context:bad-format'.";
      }
    }
  }
}
]]></sourcecode>
      </section>
      <section anchor="yang-module-for-traceparent-header-version-10">
        <name>YANG module for traceparent header version 1.0</name>
        <sourcecode type="yang" markers="true" name="ietf-trace-ctx-traceparent-1.0@2024-11-07.yang"><![CDATA[
module ietf-trace-ctx-traceparent-1.0 {
  namespace 
  "urn:ietf:params:xml:ns:yang:ietf-trace-ctx-traceparent-1.0";
  prefix ietf-trace-ctx-traceparent-1.0;

  organization
    "IETF NETCONF (Network Configuration) Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/netconf/>
     WG List:  <mailto:netconf@ietf.org>

     Authors:  Roque Gagliano
               <mailto:rogaglia@cisco.com>

               Jan Lindblad
               <mailto:jlindbla@cisco.com>

               Kristian Larsson
               <mailto:kll@dev.terastrm.net>
    ";
  description
    "This module documents the support for trace context traceparent
     versiom 1.0 in alignment with W3C versions:
     https://www.w3.org/TR/2021/REC-trace-context-1-20211123

     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

     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 (RFC 2119) (RFC 8174) when, and only when,
     they appear in all capitals, as shown here.
    ";

  revision 2024-11-07 {
    description
      "Initial revision";
    reference
      "RFC XXXX:
       NETCONF Extension to support Trace Context propagation";
  }
}
]]></sourcecode>
      </section>
      <section anchor="yang-module-for-tracestate-header-version-10">
        <name>YANG module for tracestate header version 1.0</name>
        <sourcecode type="yang" markers="true" name="ietf-trace-ctx-tracestate-1.0@2024-11-07.yang"><![CDATA[
module ietf-trace-ctx-tracestate-1.0 {
  namespace 
    "urn:ietf:params:xml:ns:yang:ietf-trace-ctx-tracestate-1.0";
  prefix ietf-trace-ctx-tracestate-1.0;

  organization
    "IETF NETCONF (Network Configuration) Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/netconf/>
     WG List:  <mailto:netconf@ietf.org>

     Authors:  Roque Gagliano
               <mailto:rogaglia@cisco.com>

               Jan Lindblad
               <mailto:jlindbla@cisco.com>

               Kristian Larsson
               <mailto:kll@dev.terastrm.net>
    ";
  description
    "This module documents the support for trace context tracestate
     versiom 1.0 in alignment with W3C versions:
     https://www.w3.org/TR/2021/REC-trace-context-1-20211123

     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

     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 (RFC 2119) (RFC 8174) when, and only when,
     they appear in all capitals, as shown here.
    ";

  revision 2024-11-07 {
    description
      "Initial revision";
    reference
      "RFC XXXX:
       NETCONF Extension to support Trace Context propagation";
  }
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The YANG modules specified in this document are used to flag capabilities define and define an error information structure that is designed to be accessed via network management protocols such as NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>.</t>
      <t>As such, these YANG modules do not contain any configuration data, state data or RPC definitions, which makes their security implications very limited.  The additional attributes specified in this document (but not in YANG modules, since YANG cannot be used to specify attributes) are worth mentioning, however.</t>
      <t>The traceparent and tracestate attributes make it easier to track the flow of requests and their downstream effect on other systems.  This is indeed the whole point with these attributes.  This knowledge could also be of use to bad actors that are working to build a map of the managed network.</t>
      <t>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 Network Configuration Access Control Model (NACM) <xref target="RFC8341"/> provides the means to restrict access for particular NETCONF or RESTCONF users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document registers the following capability identifier URN in the 'Network Configuration Protocol (NETCONF) Capability URNs' registry:</t>
      <artwork><![CDATA[
  urn:ietf:params:netconf:capability:w3ctc:1.0
]]></artwork>
      <t>This document registers one XML namespace URN in the 'IETF XML registry', following the format defined in <xref target="RFC3688"/> (https://www.rfc-editor.org/rfc/rfc3688.html).</t>
      <artwork><![CDATA[
  URI: urn:ietf:params:xml:ns:netconf:w3ctc:1.0

  Registrant Contact: The IETF IESG.

  XML: N/A, the requested URI is an XML namespace.
]]></artwork>
      <t>This document registers three module names in the 'YANG Module Names' registry, defined in RFC 6020:</t>
      <artwork><![CDATA[
  name: ietf-trace-ctx-traceparent-1.0

  prefix: ietf-trace-ctx-traceparent-1.0

  namespace:
  urn:ietf:params:xml:ns:yang:ietf-trace-ctx-traceparent-1.0

  RFC: XXXX
]]></artwork>
      <t>and</t>
      <artwork><![CDATA[
  name: ietf-trace-ctx-tracestate-1.0

  prefix: ietf-trace-ctx-tracestate-1.0

  namespace:
  urn:ietf:params:xml:ns:yang:ietf-trace-ctx-tracestate-1.0

  RFC: XXXX
]]></artwork>
      <t>and</t>
      <artwork><![CDATA[
  name: ietf-trace-context

  prefix: ietf-trace-context

  namespace: urn:ietf:params:xml:ns:yang:trace-context

  RFC: XXXX
]]></artwork>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to acknowledge the valuable implementation feedback from Christian Rennerskog and Per Andersson.  Many thanks to Raul Rivas Felix, Alexander Stoklasa, Luca Relandini and Erwin Vrolijk for their help with the demos regarding integrations.  The help and support from Jean Quilbeuf and Benoit Claise has also been invaluable to this work.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="RFC6241">
          <front>
            <title>Network Configuration Protocol (NETCONF)</title>
            <author fullname="R. Enns" initials="R." role="editor" surname="Enns"/>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <author fullname="A. Bierman" initials="A." role="editor" surname="Bierman"/>
            <date month="June" year="2011"/>
            <abstract>
              <t>The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices. It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages. The NETCONF protocol operations are realized as remote procedure calls (RPCs). This document obsoletes RFC 4741. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6241"/>
          <seriesInfo name="DOI" value="10.17487/RFC6241"/>
        </reference>
        <reference anchor="RFC6242">
          <front>
            <title>Using the NETCONF Protocol over Secure Shell (SSH)</title>
            <author fullname="M. Wasserman" initials="M." surname="Wasserman"/>
            <date month="June" year="2011"/>
            <abstract>
              <t>This document describes a method for invoking and running the Network Configuration Protocol (NETCONF) within a Secure Shell (SSH) session as an SSH subsystem. This document obsoletes RFC 4742. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6242"/>
          <seriesInfo name="DOI" value="10.17487/RFC6242"/>
        </reference>
        <reference anchor="RFC3688">
          <front>
            <title>The IETF XML Registry</title>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <date month="January" year="2004"/>
            <abstract>
              <t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="81"/>
          <seriesInfo name="RFC" value="3688"/>
          <seriesInfo name="DOI" value="10.17487/RFC3688"/>
        </reference>
        <reference anchor="RFC8040">
          <front>
            <title>RESTCONF Protocol</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes an HTTP-based protocol that provides a programmatic interface for accessing data defined in YANG, using the datastore concepts defined in the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8040"/>
          <seriesInfo name="DOI" value="10.17487/RFC8040"/>
        </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="RFC8341">
          <front>
            <title>Network Configuration Access Control Model</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>The standardization of network configuration interfaces for use with the Network Configuration Protocol (NETCONF) or the RESTCONF protocol requires a structured and secure operating environment that promotes human usability and multi-vendor interoperability. There is a need for standard mechanisms to restrict NETCONF or RESTCONF protocol access for particular users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content. This document defines such an access control model.</t>
              <t>This document obsoletes RFC 6536.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="91"/>
          <seriesInfo name="RFC" value="8341"/>
          <seriesInfo name="DOI" value="10.17487/RFC8341"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8525">
          <front>
            <title>YANG Library</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="J. Schoenwaelder" initials="J." surname="Schoenwaelder"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <author fullname="R. Wilton" initials="R." surname="Wilton"/>
            <date month="March" year="2019"/>
            <abstract>
              <t>This document describes a YANG library that provides information about the YANG modules, datastores, and datastore schemas used by a network management server. Simple caching mechanisms are provided to allow clients to minimize retrieval of this information. This version of the YANG library supports the Network Management Datastore Architecture (NMDA) by listing all datastores supported by a network management server and the schema that is used by each of these datastores.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8525"/>
          <seriesInfo name="DOI" value="10.17487/RFC8525"/>
        </reference>
        <reference anchor="W3C-Trace-Context" target="https://www.w3.org/TR/2021/REC-trace-context-1-20211123/">
          <front>
            <title>W3C Recommendation on Trace Context</title>
            <author>
              <organization/>
            </author>
            <date year="2021" month="November" day="23"/>
          </front>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="OpenTelemetry" target="https://opentelemetry.io">
          <front>
            <title>OpenTelemetry Cloud Native Computing Foundation project</title>
            <author>
              <organization/>
            </author>
            <date year="2024" month="November" day="04"/>
          </front>
        </reference>
        <reference anchor="gNMI" target="https://github.com/openconfig/gnmi">
          <front>
            <title>gNMI - gRPC Network Management Interface</title>
            <author>
              <organization/>
            </author>
            <date year="2024" month="November" day="04"/>
          </front>
        </reference>
        <reference anchor="I-D.ietf-netconf-transaction-id">
          <front>
            <title>Transaction ID Mechanism for NETCONF</title>
            <author fullname="Jan Lindblad" initials="J." surname="Lindblad">
              <organization>Cisco Systems</organization>
            </author>
            <date day="19" month="October" year="2024"/>
            <abstract>
              <t>   NETCONF clients and servers often need to have a synchronized view of
   the server's configuration data stores.  The volume of configuration
   data in a server may be very large, while data store changes
   typically are small when observed at typical client resynchronization
   intervals.

   Rereading the entire data store and analyzing the response for
   changes is inefficient for synchronization.  This document specifies
   a NETCONF extension that allows clients and servers to keep
   synchronized with a much smaller data exchange and without any need
   for servers to store information about the clients.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-netconf-transaction-id-07"/>
        </reference>
        <reference anchor="RFC8641">
          <front>
            <title>Subscription to YANG Notifications for Datastore Updates</title>
            <author fullname="A. Clemm" initials="A." surname="Clemm"/>
            <author fullname="E. Voit" initials="E." surname="Voit"/>
            <date month="September" year="2019"/>
            <abstract>
              <t>This document describes a mechanism that allows subscriber applications to request a continuous and customized stream of updates from a YANG datastore. Providing such visibility into updates enables new capabilities based on the remote mirroring and monitoring of configuration and operational state.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8641"/>
          <seriesInfo name="DOI" value="10.17487/RFC8641"/>
        </reference>
        <reference anchor="W3C-Baggage" target="https://www.w3.org/TR/baggage/#examples-of-http-headers">
          <front>
            <title>W3C Propagation format for distributed context Baggage</title>
            <author>
              <organization/>
            </author>
            <date year="2021" month="November" day="23"/>
          </front>
        </reference>
        <reference anchor="RFC8309">
          <front>
            <title>Service Models Explained</title>
            <author fullname="Q. Wu" initials="Q." surname="Wu"/>
            <author fullname="W. Liu" initials="W." surname="Liu"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="January" year="2018"/>
            <abstract>
              <t>The IETF has produced many modules in the YANG modeling language. The majority of these modules are used to construct data models to model devices or monolithic functions.</t>
              <t>A small number of YANG modules have been defined to model services (for example, the Layer 3 Virtual Private Network Service Model (L3SM) produced by the L3SM working group and documented in RFC 8049).</t>
              <t>This document describes service models as used within the IETF and also shows where a service model might fit into a software-defined networking architecture. Note that service models do not make any assumption of how a service is actually engineered and delivered for a customer; details of how network protocols and devices are engineered to deliver a service are captured in other modules that are not exposed through the interface between the customer and the provider.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8309"/>
          <seriesInfo name="DOI" value="10.17487/RFC8309"/>
        </reference>
      </references>
    </references>
    <?line 691?>

<section anchor="changes-to-be-deleted-by-rfc-editor">
      <name>Changes (to be deleted by RFC Editor)</name>
      <t>## From version 02 to 03
- Changed document Abbreviation
- trace-context-error-info is a container in example</t>
      <section anchor="from-version-01-to-02">
        <name>From version 01 to 02</name>
        <ul spacing="normal">
          <li>
            <t>Enhanced Terminology and moved it up in the document.</t>
          </li>
          <li>
            <t>Changed namespaces and module names to map WGLC comments
and IETF requirements</t>
          </li>
        </ul>
      </section>
      <section anchor="from-version-00-to-01">
        <name>From version 00 to 01</name>
        <ul spacing="normal">
          <li>
            <t>Added Security considerations</t>
          </li>
          <li>
            <t>Added Acknowledgements</t>
          </li>
          <li>
            <t>Added several Normative references</t>
          </li>
          <li>
            <t>Updated link to latest document on github</t>
          </li>
          <li>
            <t>Firmed up error handling and YANG-library to MUST-requirements</t>
          </li>
        </ul>
      </section>
      <section anchor="from-version-03-to-draft-ietf-netconf-trace-ctx-extension-00">
        <name>From version 03 to draft-ietf-netconf-trace-ctx-extension-00</name>
        <ul spacing="normal">
          <li>
            <t>Adopted by NETCONF WG</t>
          </li>
          <li>
            <t>Moved repository to NETCONF WG</t>
          </li>
          <li>
            <t>Changed build system to use martinthomson's excellent framework</t>
          </li>
          <li>
            <t>Ran make fix-lint to remove white space at EOL etc.</t>
          </li>
          <li>
            <t>Added this change note. No other content changes.</t>
          </li>
        </ul>
      </section>
      <section anchor="from-version-02-to-03">
        <name>From version 02 to 03</name>
        <ul spacing="normal">
          <li>
            <t>Changed IANA section to IESG per IANA email</t>
          </li>
          <li>
            <t>Created sx:structure and improved error example</t>
          </li>
          <li>
            <t>Added ietf-netconf-otlp-context.yang for the sx:structure</t>
          </li>
          <li>
            <t>Created a dedicated section for the YANG modules</t>
          </li>
        </ul>
      </section>
      <section anchor="from-version-01-to-02-1">
        <name>From version 01 to 02</name>
        <ul spacing="normal">
          <li>
            <t>Added Error Handling intial section</t>
          </li>
          <li>
            <t>Added how to manage versioning by defining YANG modules for each traceparent and trastate versions as defined by W3C.</t>
          </li>
          <li>
            <t>Added 'YANG Module Names'  to IANA Considerations</t>
          </li>
        </ul>
      </section>
      <section anchor="from-version-00-to-01-1">
        <name>From version 00 to 01</name>
        <ul spacing="normal">
          <li>
            <t>Added new section: Implementation example 2: YANG Datastore</t>
          </li>
          <li>
            <t>Added new use case: Billing and auditing</t>
          </li>
          <li>
            <t>Added in introduction and in "Provisioning root cause analysis" the idea that the different transaction-ids defined in <xref target="I-D.ietf-netconf-transaction-id"/> could be added as part of the tracing information to be exported to the collectors, showing how the two documents are complementary.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="xml-attributes-vs-rpcs-input-augmentations-discussion-to-be-deleted-by-rfc-editor">
      <name>XML Attributes vs RPCs input augmentations discussion (to be deleted by RFC Editor)</name>
      <t>There are arguments that can be raised regarding using XML Attribute or to augment NETCONF RPCs.</t>
      <t>We studied Pros/Cons of each option and decided to propose XML attributes:</t>
      <t>XML Attributes Pro:</t>
      <ul spacing="normal">
        <li>
          <t>Literal alignment with W3C specification</t>
        </li>
        <li>
          <t>Same encoding for RESTCONF and NETCONF enabling code reuse</t>
        </li>
        <li>
          <t>One specification for all current and future rpcs</t>
        </li>
      </ul>
      <t>XML Attributes Cons:</t>
      <ul spacing="normal">
        <li>
          <t>No YANG modeling, multiple values represented as a single string</t>
        </li>
        <li>
          <t>Dependency on W3C for any extension or changes in the future as encoding will be dictated by string encoding</t>
        </li>
      </ul>
      <t>RPCs Input Augmentations Pro:</t>
      <ul spacing="normal">
        <li>
          <t>YANG model of every leaf</t>
        </li>
        <li>
          <t>Re-use of YANG toolkits</t>
        </li>
        <li>
          <t>Simple updates by augmentations on existing YANG module</t>
        </li>
        <li>
          <t>Possibility to express deviations in case of partial support</t>
        </li>
      </ul>
      <t>RPCs Input Augmentations Cons:</t>
      <ul spacing="normal">
        <li>
          <t>Need to augment every rpc, including future rpcs would need to consider these augmentations, which is harder to maintain</t>
        </li>
        <li>
          <t>There is no literal alignment with W3C standard. However, as mentioned before most of the time there will be modifications to the content</t>
        </li>
        <li>
          <t>Would need updated RFP for each change at W3C, which will make adoption of new features slower</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+09aXMbx7Hf8SumqKpHsgyAlyzb0PFCU5SthKQYko7iclyv
BrsDYM3FLrKzSwq2md/++phrD5Cg7FdJXsRKLAA7R093T1/T0zsYDHplUqZq
JMTZ8dXRu7M34vhDqTKd5Jkoc6GrxSIvSnFVyEiJozwr1YdSLIp8IaeyhEY9
OR4X6mbkutdbusF6kSzVNC+WI6HLuBfDt5HY391/Otjbh//1enEeZXIOP8aF
nJSDRJWTQabKKM8mgxLHHETlh4Gy4w12D3rJohiJsqh0ub+7+9Xufk9X43mi
8XG5XMBQb4+v3vRgBA19Kk1tVQ9ghb6yUHIkNt4tVEHr0EJmsTiVmZyqucrK
jd5tXlxPi7xaQLMzVeJXXNYkmVbcZaN3rZbwczzqiYEoVQody2KJX+JEl0Uy
rkoVC73UpZpr/DlfwMiu3Y3KKgV9xQOzCMGr2XgPD5NsKr7B9vj7XCYp/G7Q
9AfE2TAvpvhIFtEMHs3KcqFHOzvYEn9KbtTQNtvBH3bGRX6r1Y4ZYwf7TpNy
Vo1HwqL/drrTQQFomAIVdTkSdhagqsSW16rwswBhd9aj6U6vp0sgw//INM9g
wUule3oui/J//l7lMBNAlPcWyUj8UOZRX2hgzEJNNHxazvHDj72erMpZXiBB
ADwhJlWaMldd5H+vlPhGTtNEwij4EICTWfIzYXkkjhId5eLSEgv+gIRKweoO
iVAiVlp8V5YJsMrn9DzKYxh4b+/LXf6alEucJ02VeVxlJfL75W1S/qyKFFZG
DxSTrcinBM0fIpx5GOXzXhvsPxXASQCxOJGF1oT0JuCvVVXqaKbEFXDWdT4X
h9+E01yn6R9idTMsgdFhRfMhEKBjoj/iHEkWj1MZr4UdM/xPKXcKV5HlxRz6
3RBzX7w52t/b+8p8fLb/dM9/3DcfD559+aX5+OXu0137ce+Lp/bjgev25dOn
z+zHz/c/H8FaxPuDowHJnYGROyMC0Ug2eCouFEAG+zqm9Qj4X01OcXNZTFXA
zbe3t8PbA+Lhq4sdkFV7OxfHR5ZxueNgb4AP9vb2D3ZoECfY9gZ78Oyg10uy
SYgPkDjZlZUBNThrT8RRmlexOKN+AOZ8UZW4998AV5lFgBT+SUXdsNckzTDJ
67A9Rdh2nyLqpmenb2tQ4A8gqqYX50fCCiQvFsVbGLaYAAY6p2XJgVxAEEQk
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
it7/ApYYfNLrjQAA

-->

</rfc>
