<?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.4 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-netconf-trace-ctx-extension-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.0 -->
  <front>
    <title abbrev="nc_trace">NETCONF Extension to support Trace Context propagation</title>
    <seriesInfo name="Internet-Draft" value="draft-netconf-trace-ctx-extension-00"/>
    <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="January" day="11"/>
    <area>Operations and Management</area>
    <workgroup>NETCONF</workgroup>
    <keyword>telemetry</keyword>
    <keyword>distributed systems</keyword>
    <keyword>opentelemetry</keyword>
    <abstract>
      <?line 76?>

<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="TBD"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-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>
    <?line 80?>

<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>
      <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>
      <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>
        <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>
        <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>
        <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>
      </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>
        <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-netconf-otlp-context=
"urn:ietf:params:xml:ns:yang:ietf-netconf-otlp-context"</t>
          </li>
        </ul>
      </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"/>.</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>
        <artwork><![CDATA[
  error-tag:      operation-failed
  error-type:     protocol
  error-severity: error
]]></artwork>
        <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>
        <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-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>
      </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>
        <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>
      </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"><![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>
      </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"><![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>
      </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>
      <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://tools.ietf.org/html/rfc3688).</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-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>
      <t>and</t>
      <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>
      <t>and</t>
      <artwork><![CDATA[
  name: ietf-netconf-otlp-context

  prefix: ietf-netconf-otlp-context

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

  RFC: XXXX
]]></artwork>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TBD</t>
    </section>
  </middle>
  <back>
    <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="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">
          <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">
          <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="2022" month="August" day="29"/>
          </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="10" month="October" year="2023"/>
            <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 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-02"/>
        </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 556?>

<section anchor="changes-to-be-deleted-by-rfc-editor">
      <name>Changes (to be deleted by RFC Editor)</name>
      <section anchor="from-version-03-to-draft-netconf-trace-ctx-extension-00-00">
        <name>From version 03 to draft-netconf-trace-ctx-extension-00-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">
        <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">
        <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="to-do-list-to-be-deleted-by-rfc-editor">
      <name>TO DO List (to be deleted by RFC Editor)</name>
      <ul spacing="normal">
        <li>
          <t>Security Considerations</t>
        </li>
        <li>
          <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>
        </li>
      </ul>
    </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:
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
jC+ZFO6353DTMycHtdDg7Kmy998+x10zVHUAAA==

-->

</rfc>
