<?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-01" 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="January" 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.lindblad-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.lindblad-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 storying 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, storying 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 bellow the use case desciption.). This 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.lindblad-netconf-transaction-id"/>.</t>

</section>
<section anchor="system-performaednce-profiling"><name>System performaednce 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>

<t>TBD Errors ....</t>

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

</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="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.lindblad-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='8' month='June' year='2022'/>
      <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-lindblad-netconf-transaction-id-02'/>
   <format target='https://www.ietf.org/archive/id/draft-lindblad-netconf-transaction-id-02.txt' type='TXT'/>
</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-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.lindblad-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>Manage versioning of the trace-context specification</t>
  <t>Error handling specification</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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
7IIbdlVSym8pIjJF7z8B9rLq9pJSAAA=

-->

</rfc>

