<?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-02" 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="March" day="13"/>

    <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 can associated to 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 monitor 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 include as an optional resource 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 what are the 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 circuntances, we could perceive that tracing infomration could be 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:notif="urn:ietf:params:xml:ns:netconf:notification:1.0",</t>
  <t>xmlns:yp="urn:ietf:params:xml:ns:yang:ietf-yang-patch" and</t>
  <t>xmlns:ypatch="urn:ietf:params:xml:ns:yang:ietf-yang-patch".</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 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 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="errors-handling"><name>Errors 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 relevant details about the error.</t>

<t>TBD: Define a sx:structure for this extension.</t>

<t>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>And the expected error message:</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"
              message-id="1">
     <rpc-error>
       <error-type>protocol</error-type>
       <error-tag>operation-failed</error-tag>
       <error-severity>error</error-severity>
       <error-info>
          <!-- TBD -->
       </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 that SHOULD be included in the YANG library per <xref target="RFC8525"/> of the NETCONF server supporting the NETCONF Trace Context extension that will refer to the headers' supported versions. Future updates of this document could include additional YANG modules for new headers' versions.</t>

<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>
<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 NETCONF WG of the IETF.

  XML: N/A, the requested URI is an XML namespace.
]]></artwork></figure>

<t>This document registers two 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-otlpoarent-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>

</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'><organization/></author>
<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'><organization/></author>
<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'><organization/></author>
<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'><organization/></author>
<author fullname='M. Bjorklund' initials='M.' surname='Bjorklund'><organization/></author>
<author fullname='J. Schoenwaelder' initials='J.' surname='Schoenwaelder'><organization/></author>
<author fullname='K. Watsen' initials='K.' surname='Watsen'><organization/></author>
<author fullname='R. Wilton' initials='R.' surname='Wilton'><organization/></author>
<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-00'>
   <front>
      <title>Transaction ID Mechanism for NETCONF</title>
      <author fullname='Jan Lindblad' initials='J.' surname='Lindblad'>
         <organization>Cisco Systems</organization>
      </author>
      <date day='9' month='March' year='2023'/>
      <abstract>
	 <t>   NETCONF clients and servers often need to have a synchronized view of
   the server&#39;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-00'/>
   
</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'><organization/></author>
<author fullname='E. Voit' initials='E.' surname='Voit'><organization/></author>
<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'><organization/></author>
<author fullname='W. Liu' initials='W.' surname='Liu'><organization/></author>
<author fullname='A. Farrel' initials='A.' surname='Farrel'><organization/></author>
<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"><name>Changes</name>

<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>Error handling sx:structure for this extension.</t>
  <t>We intend to extend the trace-concext capability to RESTCONF in a future draft</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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
+C/7dALhz18AAA==

-->

</rfc>

