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


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

]>


<rfc ipr="trust200902" docName="draft-rogaglia-netconf-trace-ctx-extension-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="nc_trace">NETCONF Extension to support Trace Context propagation</title>

    <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="2023" month="July" day="06"/>

    <area>Operations and Management</area>
    <workgroup>NETCONF</workgroup>
    <keyword>telemetry</keyword> <keyword>distributed systems</keyword> <keyword>opentelemetry</keyword>

    <abstract>


<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 title="About This Document" removeInRFC="true">
      <t>
        The latest revision of this draft can be found at <eref target="TBD"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-rogaglia-netconf-trace-ctx-extension/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        NETCONF Working Group mailing list (<eref target="mailto:netconf@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/netmod/"/>.
        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/TBD"/>.</t>
    </note>


  </front>

  <middle>


<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 complemetary 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 RFC 8309 shows the impact of distributed traces for a network operator.</t>

<figure><sourcecode type="art"><![CDATA[
                 ------------------                    -------------
                |   Orchestrator   |                   |           |
                |                  |     ------------> |           |
                .------------------.                   |           |
               .          :         .                  |           |
              .           :          .                 | Collector |
   ------------     ------------     ------------      | (Metrics, |
  |            |   |            |   |            |     |  Events,  |
  | Controller |   | Controller |   | Controller | --> |  Logs,    |
  |            |   |            |   |            |     |  Traces)  |
   ------------     ------------     ------------      |           |
      :              .       .               :         |           |
      :             .         .              :         |           |
      :            .           .             :         |           |
 ---------     ---------   ---------     ---------     |           |
| Network |   | Network | | Network |   | Network |    |           |
| Element |   | Element | | Element |   | Element | -> |           |
 ---------     ---------   ---------     ---------     -------------

    Figure 1: 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.
]]></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>

<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 Figure 2, we show a deployment based on Figure 1 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><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 |  -------------------------->  |           |
 ---------     ---------                                -------------

        Figure 2: 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.
]]></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 resources 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 an 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>

<t>Note to be removed in the future: Some initial ideas are under discussion in the IETF for defining a standard YANG data model for traces. For example see: I-D.quilbeuf-opsawg-configuration-tracing which focusses only on configuration change root cause analysis use case (see the use case desciption below). These ideas are complementary to this draft.</t>

<figure><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 |  -------------------------->  |           |
|   YG DS |   |   YG DS |         pull or push          |           |
 ---------     ---------                                -------------

        Figure 3: 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.
]]></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 faciliate 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 Figure 2, 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 infomration 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 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>The XML prefixes used in this document are mapped as follows:</t>

<t><list style="symbols">
  <t>xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0",</t>
  <t>xmlns:w3ctc="urn:ietf:params:xml:ns:netconf:w3ctc:1.0" and</t>
  <t>xmlns:ietf-netconf-otlp-context=
"urn:ietf:params:xml:ns:yang:ietf-netconf-otlp-context"</t>
</list></t>

</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>

<figure><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></figure>

<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>

<figure><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></figure>

<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>

<figure><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></figure>

<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"/>.</t>

<t>If the server rejects the RPC because of the trace context extension value, the server MUST return an rpc-error with the following values:</t>

<figure><artwork><![CDATA[
  error-tag:      operation-failed
  error-type:     protocol
  error-severity: error
]]></artwork></figure>

<t>Additionally, the error-info tag SHOULD contain a 
otlp-trace-context-error-info structure with relevant details about
the error.  This structure is defined in the module
ietf-netconf-otlp-context.yang.  Example of a badly formated trace
context extension:</t>

<figure><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></figure>

<t>This might give the following error response:</t>

<figure><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-netconf-otlp-context=
            "urn:ietf:params:xml:ns:yang:otlp-context"
            message-id="1">
  <rpc-error>
    <error-type>protocol</error-type>
    <error-tag>operation-failed</error-tag>
    <error-severity>error</error-severity>
    <error-message>
      OTLP traceparent attribute incorrectly formatted
    </error-message>
    <error-info>
      <ietf-netconf-otlp-context:meta-name>
        w3ctc:traceparent
      </ietf-netconf-otlp-context:meta-name>
      <ietf-netconf-otlp-context:meta-value>
        Bad Format
      </ietf-netconf-otlp-context:meta-value>
      <ietf-netconf-otlp-context:error-type>
        ietf-netconf-otlp-context:bad-format
      </ietf-netconf-otlp-context:error-type>
    </error-info>
  </rpc-error>
</rpc-reply>
]]></sourcecode></figure>

</section>
<section anchor="trace-context-extension-versionning"><name>Trace Context extension versionning</name>

<t>This extension refers to the <xref target="W3C-Trace-Context"/> trace context capability. The W3C traceparent and trace-state 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 deffinition of new NETCONF capabilities for each headers' version.</t>

<t>We define a pair YANG modules (ietf-netconf-otlp-context-traceparent-version-1.0.yang and ietf-netconf-otlp-context-tracestate-version-1.0.yang) that SHOULD 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-otlp-trace-context-error-info-structure"><name>YANG module for otlp-trace-context-error-info structure</name>

<figure><sourcecode type="yang" markers="true"><![CDATA[
module ietf-netconf-otlp-context {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:otlp-context";
  prefix ietf-netconf-otlp-context;

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

  organization
     "IETF NETCONF (Network Configuration) Working Group";

  contact
    "WG Web:   <http://tools.ietf.org/wg/netconf/>
    WG List:  <mailto:netconf@ietf.org>";
  
  description 
    "When propagating tracing information across applications,
    client and servers needs to share some specific contextual 
    information. This NETCONF extensions aligns the NETCONF 
    protocol to the W3C trace-context document: 
    https://www.w3.org/TR/2021/REC-trace-context-1-20211123

    Copyright (c) <year> 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 2023-07-01 {
    description
      "Initial revision";
    reference
      "RFC XXXX";
  }

  identity meta-error {
    description "Base identity for otlp 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 otlp-trace-context-error-info {
    container otlp-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 OTLP 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-netconf-otlp-context:bad-format'.";
      }
    }
  }
}
]]></sourcecode></figure>

</section>
<section anchor="yang-module-for-traceparent-header-version-10"><name>YANG module for traceparent header version 1.0</name>
<figure><sourcecode type="yang" markers="true"><![CDATA[
module ietf-netconf-otlp-context-traceparent-version-1.0 {
  namespace "urn:ietf:params:xml:ns:yang:traceparent:1.0";
  prefix ietf-netconf-otlpparent-1.0;
}
]]></sourcecode></figure>

</section>
<section anchor="yang-module-for-tracestate-header-version-10"><name>YANG module for tracestate header version 1.0</name>
<figure><sourcecode type="yang" markers="true"><![CDATA[
module ietf-netconf-otlp-context-tracestate-version-1.0 {
  namespace "urn:ietf:params:xml:ns:yang:tracestate:1.0";
  prefix ietf-netconf-otlpstate-1.0;
}
]]></sourcecode></figure>

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

<t>TODO Security</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>

<figure><artwork><![CDATA[
  urn:ietf:params:netconf:capability:w3ctc:1.0
]]></artwork></figure>

<t>This document registers one XML namespace URN in the 'IETF XML registry', following the format defined in <xref target="RFC3688"/> (https://tools.ietf.org/html/rfc3688).</t>

<figure><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></figure>

<t>This document registers three module names in the 'YANG Module Names' registry, defined in RFC 6020:</t>

<figure><artwork><![CDATA[
  name: ietf-netconf-otlp-context-traceparent-version-1.0

  prefix: ietf-netconf-otlpparent-1.0

  namespace: urn:ietf:params:xml:ns:yang:traceparent:1.0

  RFC: XXXX
]]></artwork></figure>

<t>and</t>

<figure><artwork><![CDATA[
  name: ietf-netconf-otlp-context-tracestate-version-1.0

  prefix: ietf-netconf-otlpstate-1.0

  namespace: urn:ietf:params:xml:ns:yang:tracestate:1.0

  RFC: XXXX
]]></artwork></figure>

<t>and</t>

<figure><artwork><![CDATA[
  name: ietf-netconf-otlp-context

  prefix: ietf-netconf-otlp-context

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

  RFC: XXXX
]]></artwork></figure>

</section>
<section anchor="acknowledgments"><name>Acknowledgments</name>

<t>TBD</t>

</section>


  </middle>

  <back>


    <references title='Normative References'>



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

<reference anchor='RFC8174' target='https://www.rfc-editor.org/info/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='RFC3688' target='https://www.rfc-editor.org/info/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='RFC8525' target='https://www.rfc-editor.org/info/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></organization>
    </author>
    <date year="2021" month="November" day="23"/>
  </front>
</reference>


    </references>

    <references title='Informative References'>

<reference anchor="OpenTelemetry" target="https://opentelemetry.io">
  <front>
    <title>OpenTelemetry Cloud Native Computing Foundation project</title>
    <author >
      <organization></organization>
    </author>
    <date year="2022" month="August" day="29"/>
  </front>
</reference>



<reference anchor='I-D.ietf-netconf-transaction-id' target='https://datatracker.ietf.org/doc/html/draft-ietf-netconf-transaction-id-01'>
   <front>
      <title>Transaction ID Mechanism for NETCONF</title>
      <author fullname='Jan Lindblad' initials='J.' surname='Lindblad'>
         <organization>Cisco Systems</organization>
      </author>
      <date day='4' month='July' year='2023'/>
      <abstract>
	 <t>   NETCONF clients and servers often need to have a synchronized view of
   the server&#x27;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 an inefficient mechanism for synchronization.  This
   document specifies an extension to NETCONF 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-01'/>
   
</reference>

<reference anchor='RFC8641' target='https://www.rfc-editor.org/info/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></organization>
    </author>
    <date year="2021" month="November" day="23"/>
  </front>
</reference>


<reference anchor='RFC8309' target='https://www.rfc-editor.org/info/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>


<section anchor="changes-to-be-deleted-by-rfc-editor"><name>Changes (to be deleted by RFC Editor)</name>

<section anchor="from-version-02-to-03"><name>From version 02 to 03</name>
<t><list style="symbols">
  <t>Changed IANA section to IESG per IANA email</t>
  <t>Created sx:structure and improved error example</t>
  <t>Added ietf-netconf-otlp-context.yang for the sx:structure</t>
  <t>Created a dedicated section for the YANG modules</t>
</list></t>

</section>
<section anchor="from-version-01-to-02"><name>From version 01 to 02</name>
<t><list style="symbols">
  <t>Added Error Handling intial section</t>
  <t>Added how to manage versioning by defining YANG modules for each traceparent and trastate versions as defined by W3C.</t>
  <t>Added 'YANG Module Names'  to IANA Considerations</t>
</list></t>

</section>
<section anchor="from-version-00-to-01"><name>From version 00 to 01</name>
<t><list style="symbols">
  <t>Added new section: Implementation example 2: YANG DataStore</t>
  <t>Added new use case: Billing and auditing</t>
  <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>
</list></t>

</section>
</section>
<section anchor="to-do-list-to-be-deleted-by-rfc-editor"><name>TO DO List (to be deleted by RFC Editor)</name>

<t><list style="symbols">
  <t>Security Considerations</t>
  <t>The W3C is working on a draft document to introduce the concept of "baggage" <xref target="W3C-Baggage"/> that we expect part of a future draft for NETCONF and RESTCONF</t>
</list></t>

</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>

<t><list style="symbols">
  <t>Literal alignment with W3C specification</t>
  <t>Same encoding for RESTCONF and NETCONF enabling code reuse</t>
  <t>One specification for all current and future rpcs</t>
</list></t>

<t>XML Attributes Cons:</t>

<t><list style="symbols">
  <t>No YANG modeling, multiple values represented as a single string</t>
  <t>Dependency on W3C for any extension or changes in the future as encoding will be dictated by string encoding</t>
</list></t>

<t>RPCs Input Augmentations Pro:</t>

<t><list style="symbols">
  <t>YANG model of every leaf</t>
  <t>Re-use of YANG toolkits</t>
  <t>Simple updates by augmentations on existing YANG module</t>
  <t>Possibility to express deviations in case of partial support</t>
</list></t>

<t>RPCs Input Augmentations Cons:</t>

<t><list style="symbols">
  <t>Need to augment every rpc, including future rpcs would need to consider these augmentations, which is harder to maintain</t>
  <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>
  <t>Would need updated RFP for each change at W3C, which will make adoption of new features slower</t>
</list></t>

</section>


  </back>

<!-- ##markdown-source:
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
dAAA

-->

</rfc>

