<?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.7.29 (Ruby 3.2.3) -->


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

]>


<rfc ipr="trust200902" docName="draft-vivek-nmop-simap-external-relationship-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="vivek-nmop-simap-ext-ref">External Relationship model for SIMAP</title>

    <author initials="V." surname="Boudia" fullname="Vivekananda Boudia">
      <organization>INSA-Lyon</organization>
      <address>
        <email>vivekananda.boudia@insa-lyon.fr</email>
      </address>
    </author>
    <author initials="P." surname="Francois" fullname="Pierre Francois">
      <organization>INSA-Lyon</organization>
      <address>
        <email>pierre.francois@insa-lyon.fr</email>
      </address>
    </author>
    <author initials="S." surname="Mostafa" fullname="Sherif Mostafa">
      <organization>Huawei</organization>
      <address>
        <email>sherif.mostafa@huawei.com</email>
      </address>
    </author>

    <date year="2025" month="November" day="03"/>

    <area>NMOP</area>
    <workgroup>NMOP Working Group</workgroup>
    <keyword>simap</keyword>

    <abstract>


<?line 37?>

<t>This document defines a SIMAP feature that enables modeling of external relationships between SIMAP entities and resources outside their core data models. 
It provides a templating approach to describe queries for external information, and an approach to link them to network elements.</t>



    </abstract>

    <note title="About This Document" removeInRFC="true">
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-vivek-nmop-simap-external-relationship/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        NMOP Working Group Working Group mailing list (<eref target="mailto:nmop@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/nmop/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/nmop/"/>.
      </t>
    </note>


  </front>

  <middle>


<?line 42?>

<section anchor="introduction"><name>Introduction</name>

<t><xref target="RFC8345"/> defines a base model for representing network topologies. 
This model can be augmented to include additional information, depending on the layer, service, or use case. 
However, continuously augmenting the base model can lead to excessive complexity and the inclusion of data that is irrelevant to many applications.</t>

<t>In some application contexts, it is impractical to maintain the whole network element information within the simap itself. To preserve an exploitable map of the network, it is thus sometimes preferable to keep the base topology model minimal and maintain context-specific information separately. 
Yet, a formal description of the method to be used to retrieve this information from the production network or any other external source should be maintained.</t>

<t>The goal of this document is to provide a common approach to describe such information retrieval methods, in a yang model.</t>

<t>The goal of this effort is to fulfill two key requirements: REQ-SCALES and REQ-SYNCH, defined in <xref section="4" sectionFormat="comma" target="I-D.draft-ietf-nmop-simap-concept"/>.</t>

<!-- TODO Move example to somewhere more appropriate -->
<t>For example, when simulating a what-if scenario involving IGP convergence time after an IS-IS link failure, one might require timer-related attributes for each router.
While this information is essential in that context, it is unnecessary for many other use cases. 
In addition, some data elements may change frequently, making it challenging to keep the model synchronized.</t>

<t>In the general case, the method to retrieve a given type of information among many network elements is the same, except for some parameters. 
We thus propose an approach to describe these methods using templates.</t>

<t>These templates are then associated with network element instances via a separate datastore referred to as the relation datastore. 
We introduce filtering mechanisms based on either the template type or the request type, allowing us to retrieve only the relevant data depending on the use case.
<!-- TODO PFR efficient, c'est vague. typing and label, c'est pas très compréhensible ici--></t>

<t>This document first introduces the terminology used throughout the draft. 
It then describes the concepts of Template and Relation, followed by the filtering mechanisms available and how it solves REQ-SCALES and REQ-SYNC. 
Next, it explains how the model can be extended. The workflow is then presented, and the document concludes with the YANG module.</t>

</section>
<section anchor="terminology"><name>Terminology</name>

<t>Network Element: A Network, Node, Link, or Termination Point (TP), as defined in <xref target="RFC8345"/>.</t>

<t>Template: A reusable model that describes how to retrieve a set of data.</t>

<t>Label: A set of keywords that describe the nature or category of information that can be retrieved using the Template.</t>

<t>Relation: An association between a Template and a Network Element, indicating that the Template should be applied to the element to retrieve a given set of information.</t>

</section>
<section anchor="template"><name>Template</name>

<t>A Template describes how to access data from a Network Element.
It is uniquely identified by an id in the form of a uri. The management of the id space is out of the scope of this document.</t>

<t>Each Template includes a textual description that explains its purpose and usage, along with additional key attributes, such as the Template's type, parameters, and request definitions, as described in the following sub section.</t>

<t>A separation between the template definition and their parameters is used in order to ensure reusability.</t>

<section anchor="type"><name>Type</name>

<t>Each Template includes a type attribute:</t>

<t>base-type: Indicates the general category of the data the Template is intended to retrieve. Possible values include:</t>

<t><list style="symbols">
  <t>config – for configuration data,</t>
  <t>state – for operational state data,</t>
  <t>metric – for performance metrics.</t>
</list></t>

<t>is-historical: A boolean flag indicating whether the Template is used to retrieve historical data (true) or only current data (false).</t>

<t>label: A set of keywords that describe the nature or category of information that can be retrieved using the Template. 
These labels serve as metadata, enabling filtering, classification, and discovery of Templates based on their purpose or content (e.g., timers, interface-metrics, isis-state).</t>

</section>
<section anchor="parameter"><name>Parameter</name>

<t>Consider two routers: one with the identifier R1 and another with R2. 
If we wish to retrieve specific data for each router, the access paths might be <spanx style="verb">/specific/data/id/R1</spanx> and <spanx style="verb">/specific/data/id/R2</spanx>, respectively. 
Without a parameterization mechanism, we would need to define a separate Template for each router, which does not scale.</t>

<t>To address this, Template supports parameters. 
Instead of hardcoding the identifier, the Template encodes the path using a placeholder: <spanx style="verb">/specific/data/id/{router-id}</spanx>. 
The actual value of {router-id} is not stored within the Template itself, but is instead provided via the Relation datastore (described in the next section).</t>

<t>This design enables a single Template definition to be reused across multiple Network Elements, with per-instance values injected dynamically through Relations.
<!-- TODO PFR pq dynamically? ça veut dire quoi dans ce contexte--></t>

</section>
<section anchor="request"><name>Request</name>

<t>While parameterization helps avoid duplication when all routers support the same protocol, challenges arise when devices support different access protocols. 
For instance, consider two routers: R1, which supports only RESTCONF, and R2, which supports only NETCONF. 
In such cases, although the data being retrieved is semantically the same, using a single protocol-specific Template per device would reintroduce redundancy.</t>

<t>To address this, a Template may define multiple protocol-specific access methods for retrieving the same data. 
Each method corresponds to a different protocol (e.g., RESTCONF, NETCONF) and includes a distinct request format or path.</t>

<t>For example:</t>

<t>The RESTCONF request path might be:
<spanx style="verb">/restconf/specific/data/id/{router-id}</spanx></t>

<t>The NETCONF XML filter might be:
<spanx style="verb">&lt;specific&gt;&lt;data&gt;&lt;id&gt;{router-id}&lt;/id&gt;&lt;/data&gt;&lt;/specific&gt;</spanx></t>

<t>The selection of which request to use for a given Network Element is determined by information stored in the Relation datastore (discussed in the next section). 
This allows a single Template to cover multiple access methods, while preserving reusability and minimizing duplication.</t>

</section>
</section>
<section anchor="relation"><name>Relation</name>

<t>A Relation defines the association between a Template and a Network Element. 
It provides the contextual parameters required to apply the Template to the targeted element.</t>

<t>Each Relation is uniquely identified by an id. To establish the linkage, the Relation contains:</t>

<t><list style="symbols">
  <t>A reference to the template-id of the associated Template.</t>
  <t>A reference to the network-element-id of the target Network Element.</t>
</list></t>

<t>A Relation contains additional contextual information that will be described in the following sections, including:</t>

<t><list style="symbols">
  <t>the supported request types,</t>
  <t>the parameter values, and</t>
  <t>the path identifying the target sub-layer (if applicable).</t>
</list></t>

<section anchor="request-supported"><name>Request supported</name>

<t>As previously described, a Template may include multiple protocol-specific request definitions. 
Since not all devices support all protocols, the Relation is responsible for specifying which request(s) are valid for the associated Network Element. 
This ensures that the correct method is used for data retrieval, without duplicating Template definitions.</t>

</section>
<section anchor="parameter-value"><name>Parameter value</name>

<t>In addition, each Relation stores the parameter values required to instantiate the associated Template. 
These values are used to replace placeholders (e.g., {router-id}) defined in the Template when constructing the actual request.</t>

<t>If a parameter required by the Template is not provided in the Relation, it is assumed that the user or the consuming system must supply this value at runtime. 
This design provides flexibility while ensuring that Templates remain reusable across different contexts.</t>

</section>
<section anchor="path"><name>Path</name>

<t>Depending on the network modeling approach, a Network Element may be encapsulated within multiple hierarchical layers — for example: base → L3 → IS-IS. 
Since each Network Element is uniquely identified at the base level, additional context may be required to indicate which layer or model a Template applies to.</t>

<t>To address this, the Relation includes an optional path value. This field specifies the relative path from the base element to the targeted sub-layer. For instance:</t>

<t><list style="symbols">
  <t>If the Template targets IS-IS attributes, the path value might be set to /l3/isis.</t>
  <t>If the Template applies to the base layer, the path is set to an empty string.</t>
</list></t>

<t>This mechanism enables precise scoping of the Template within a layered network model, without introducing ambiguity.</t>

</section>
</section>
<section anchor="filtering"><name>Filtering</name>

<t>To support efficient access and scalability, the system provides multiple filtering mechanisms for querying Relations and Templates. 
These filters allow consumers to only retrieve the relevant associations based on criteria.</t>

<t>Supported filtering options include:</t>

<t><list style="symbols">
  <t>By Network Element: Retrieve all Relations associated with a given network element identifier.</t>
  <t>By Request Type: Filter Relations or Templates based on supported protocol access methods (e.g., restconf, netconf).</t>
  <t>By Template Type: Select Templates based on their declared base-type (e.g., config, state, metric).</t>
  <t>By Label : Retrieve Templates based on semantic tags (e.g., timers, isis, interface-metrics) that describe the type of information provided.</t>
</list></t>

<t>These filtering capabilities enable flexible integration with automation systems and monitoring platforms, while minimizing unnecessary processing and data retrieval.</t>

</section>
<section anchor="simap-requirements"><name>SIMAP requirements</name>

<section anchor="req-scales"><name>REQ-SCALES</name>

<!-- TOOD Surtout, on scale les map vu qu'on ne doit pas tout mettre dedans-->
<t>By grouping all requests within a single template, we avoid defining multiple templates for retrieving the same information. 
Additionally, by using the supported attribute of the relation, we remove the need to create separate templates for each network element.
This approach also prevents overloading the SIMAP itself.</t>

</section>
<section anchor="req-synch"><name>REQ-SYNCH</name>

<t>Some types of information remain relatively static over time, while others may change frequently. 
Using templates to retrieve this information avoids introducing the complexity of storing it directly within SIMAP.
It allows the system to delegate data retrieval to external sources and focus solely on maintaining structural and relational data.
<!-- TODO Metadata? --></t>

</section>
</section>
<section anchor="extensions"><name>Extensions</name>

<t>The template can be augmented to support multiple use cases, such as adding a new base type of the template, adding additional labels, or most importantly defining the type of request and the associated request builder.</t>

<section anchor="base-type"><name>Base Type</name>

<t>A template can be categorized as STATE, CONFIG, or METRIC. However, some use cases may require other base types. 
These can be introduced through augmentation.</t>

<figure><sourcecode type="yang"><![CDATA[
identity AUGMENT-EXAMPLE-TEMPLATE-TYPE {
  base dr-tmp:template-type;
}
]]></sourcecode></figure>

</section>
<section anchor="label"><name>Label</name>

<t>A template can describe multiple types of data, and it is not feasible to include every possible label by default.
Additional labels can be introduced through augmentation.</t>

<figure><sourcecode type="yang"><![CDATA[
identity AUGMENT-EXAMPLE-LABEL {
  base dr-tmp:label;
}
]]></sourcecode></figure>

</section>
<section anchor="request-1"><name>Request</name>

<t>The structure of a request may differ across use cases. 
These variations can be handled by augmenting the base request definition.</t>

<t>The first step is to define a new request type.</t>

<figure><sourcecode type="yang"><![CDATA[
identity AUGMENT-EXAMPLE-REQUEST-TYPE {
  base dr-tmp:request-type;
}
]]></sourcecode></figure>

<t>Then, the required elements for the request can be specified.</t>

<figure><sourcecode type="yang"><![CDATA[
grouping augment-example-request {
  leaf foo {
    type string;
  }
}
augment "/dr-tmp:template/dr-tmp:template/" +
  "dr-tmp:request/dr-tmp:request-builder" {
  when "derived-from-or-self(../dr-tmp:request-type," +
  " 'AUGMENT-EXAMPLE-REQUEST-TYPE')";
  uses augment-example-request;
}
]]></sourcecode></figure>

<t>The example below illustrates how to define a NETCONF request with a subtree filter.</t>

<figure><sourcecode type="yang"><![CDATA[
identity NETCONF-EXAMPLE-REQUEST-TYPE {
  base dr-tmp:request-type;
}

grouping netconf-example-request {
  leaf subtree {
    type string;
  }
}

augment "/dr-tmp:template/dr-tmp:template/" +
"dr-tmp:request/dr-tmp:request-builder" {
  when "derived-from-or-self(../dr-tmp:request-type," 
  + " 'NETCONF-EXAMPLE-REQUEST-TYPE')";
  uses netconf-example-request;
}
]]></sourcecode></figure>

</section>
</section>
<section anchor="workflow"><name>Workflow</name>

<t>The following workflow outlines the typical steps involved in defining and using Templates and Relations to retrieve data from network elements of SIMAP :</t>

<!-- TODO position de "Create the SIMAP discutable, non? -->

<t>1) Define a reusable Template that describes how to access a type of data. 
2) Create the SIMAP from the network.
3) Establish Relations to bind Templates to Network Elements based on their role. Populate the required parameters, path, and supported request types.
4) Use the filtering concept to retrieve the needed template, resolve parameters, and select the correct request type to fetch the desired data.</t>

<t>Note: The order of steps 1 and 2 is not strict; either may be performed first depending on implementation preferences.</t>

</section>
<section anchor="yang-modules"><name>YANG Modules</name>

<section anchor="template-1"><name>Template</name>

<figure><sourcecode type="yang" markers="true"><![CDATA[
module draft-template {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:draft-template";
  prefix dr-tmp;

  import ietf-inet-types {
    prefix inet;
    reference
      "RFC 6991: Common YANG Data Types";
  }

  organization
    "INSA Lyon";
  contact
    "Editor:   Vivekananda Boudia
     <mailto:vivekananda.boudia@insa-lyon.fr>";
  description
    "template yang model";

  revision 2025-08-01 {
    description
      "Initial revision";
    reference
      "";
  }

  identity template-type {
    description
      "base identity for template type";
  }

  identity CONFIG {
    base template-type;
    description
      "template used to retrieve configuration data";
  }

  identity STATE {
    base template-type;
    description
      "template used to retrieve operational state data";
  }

  identity METRIC {
    base template-type;
    description
      "template used to retrieve metrics";
  }

  identity label {
    description
      "base identity for label";
  }

  identity request-type {
    description
      "base identity for request type";
  }

  identity ALL_REQUESTS {
    base request-type;
    description
      "all requests";
  }

  container template {
    description
      "template container";
    list template {
      key "template-id";
      description
        "template list";
      leaf template-id {
        type inet:uri;
        description
          "uniquely identifies a template";
      }
      leaf description {
        type string;
        description
          "template description";
      }
      container template-type {
        description
          "template type;
           used for filtering template";
        leaf base {
          type identityref {
            base template-type;
          }
          description
            "template base type";
        }
        leaf is-historical {
          type boolean;
          description
            "check if template is used 
            to get historical data or not";
        }
        leaf-list label {
          type identityref {
            base label;
          }
          description
            "used to defined which data can 
            be retrieve with the template";
        }
      }
      list parameter {
        key "param-id";
        description
          "list of parameter used by request";
        leaf param-id {
          type inet:uri;
          description
            "uniquely identifies a parameter";
        }
        leaf description {
          type string;
          description
            "parameter description";
        }
      }
      list request {
        key "request-type";
        description
          "request list";
        leaf request-type {
          type identityref {
            base request-type;
          }
          description
            "request type";
        }
         leaf description {
          type string;
          description
            "request description";
        }
        container request-builder {
          description
            "request container that contains 
             everything needed to build the request;
             parameters must be enclosed in brackets.";
        }
      }
      anydata extra {
        description
          "use for augmentation";
      }
    }
  }

}
]]></sourcecode></figure>

</section>
<section anchor="relation-1"><name>Relation</name>

<figure><sourcecode type="yang" markers="true"><![CDATA[
module draft-relation {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:draft-relation";
  prefix dr-rel;

  import ietf-inet-types {
    prefix inet;
    reference
      "RFC 6991: Common YANG Data Types";
  }
  import ietf-network {
    prefix nw;
    reference
      "RFC 8345: A YANG Data Model for Network Topologies";
  }
  import ietf-network-topology {
    prefix nt;
    reference
      "RFC 8345: A YANG Data Model for Network Topologies";
  }
  import draft-template {
    prefix dr-tmp;
  }

  organization
    "INSA Lyon";
  contact
    "Editor:   Vivekananda Boudia
     <mailto:vivekananda.boudia@insa-lyon.fr>";
  description
    "relations external of RFC8345";

  revision 2025-08-01 {
    description
      "Initial revision";
    reference
      "";
  }

  container relation {
    description
      "relation container";
    list relation {
      key "relation-id";
      description
        "relation list";
      leaf relation-id {
        type inet:uri;
        description
          "relation id";
      }
      choice network-element-ref {
        description
          "reference to network element";
        leaf network-ref {
          type leafref {
            path "/nw:networks/nw:network/nw:network-id";
          }
          description
            "reference to network";
        }
        leaf node-ref {
          type leafref {
            path "/nw:networks/nw:network/nw:node/nw:node-id";
          }
          description
            "reference to node";
        }
        leaf link-ref {
          type leafref {
            path "/nw:networks/nw:network/nt:link/nt:link-id";
          }
          description
            "reference to link";
        }
        leaf tp-ref {
          type leafref {
            path "/nw:networks/nw:network/nw:node" +
             "/nt:termination-point/nt:tp-id";
          }
          description
            "reference to termination point";
        }
      }
      leaf template-ref {
        type leafref {
          path "/dr-tmp:template/dr-tmp:template/dr-tmp:template-id";
        }
        description
          "reference to template";
      }
      leaf-list request-type-supported {
        type identityref {
          base dr-tmp:request-type;
        }
        description
          "template is generic and may include requests 
           that are not supported by the network element
           here, we specify the types of requests 
           that the network element supports
           if network element supports all request types 
           ALL-REQUEST may be used";
      }
      leaf path {
        type string;
        description
          "network element can be augmented and may contain 
           containers nested within other containers.
           path is used for filtering";
      }
      list parameter-value {
        key "param-ref request-type";
        description
          "parameter value for network element";
        leaf param-ref {
          type leafref {
            path "/dr-tmp:template/dr-tmp:template" + 
            "/dr-tmp:parameter/dr-tmp:param-id";
          }
          description
            "reference to template parameter";
        }
        leaf request-type {
          type identityref {
            base dr-tmp:request-type;
          }
          description
            "value can be different depending on the request";
        }
        leaf value {
          type string;
          description
            "value of the parameter";
        }
      }
    }
  }
}
]]></sourcecode></figure>

</section>
</section>


  </middle>

  <back>



    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC8345">
  <front>
    <title>A YANG Data Model for Network Topologies</title>
    <author fullname="A. Clemm" initials="A." surname="Clemm"/>
    <author fullname="J. Medved" initials="J." surname="Medved"/>
    <author fullname="R. Varga" initials="R." surname="Varga"/>
    <author fullname="N. Bahadur" initials="N." surname="Bahadur"/>
    <author fullname="H. Ananthakrishnan" initials="H." surname="Ananthakrishnan"/>
    <author fullname="X. Liu" initials="X." surname="Liu"/>
    <date month="March" year="2018"/>
    <abstract>
      <t>This document defines an abstract (generic, or base) YANG data model for network/service topologies and inventories. The data model serves as a base model that is augmented with technology-specific details in other, more specific topology and inventory data models.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8345"/>
  <seriesInfo name="DOI" value="10.17487/RFC8345"/>
</reference>


<reference anchor="I-D.draft-ietf-nmop-simap-concept">
   <front>
      <title>SIMAP: Concept, Requirements, and Use Cases</title>
      <author fullname="Olga Havel" initials="O." surname="Havel">
         <organization>Huawei</organization>
      </author>
      <author fullname="Benoît Claise" initials="B." surname="Claise">
         <organization>Huawei</organization>
      </author>
      <author fullname="Oscar Gonzalez de Dios" initials="O. G." surname="de Dios">
         <organization>Telefonica</organization>
      </author>
      <author fullname="Thomas Graf" initials="T." surname="Graf">
         <organization>Swisscom</organization>
      </author>
      <date day="7" month="July" year="2025"/>
      <abstract>
	 <t>   This document defines the concept of Service &amp; Infrastructure Maps
   (SIMAP) and identifies a set of SIMAP requirements and use cases.
   The SIMAP was previously known as Digital Map.

   The document intends to be used as a reference for the assessment of
   the various topology modules to meet SIMAP requirements.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-nmop-simap-concept-05"/>
   
</reference>




    </references>




<?line 609?>

<section numbered="false" anchor="acknowledgments"><name>Acknowledgments</name>
<t>Acknowledgments</t>

</section>


  </back>

<!-- ##markdown-source:
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
oS/jJ7dRf8z/AKn0CUykUgAA

-->

</rfc>

