<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" []>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc strict="yes" ?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<?rfc iprnotified="no" ?>

<rfc category="info"
     docName="draft-shytyi-opsawg-vysm-10"
     ipr="trust200902">

  <!-- category values: std, bcp, info, exp, and historic ipr values:
       trust200902, noModificationTrust200902,
       noDerivativesTrust200902, or pre5378Trust200902 you can add the
       attributes updates="NNNN" and obsoletes="NNNN" they will
       automatically be output with "(if approved)" -->

  <front>

    <title abbrev="A YANG Module for uCPE management">
            A YANG Module for uCPE management. 
    </title>

    <author initials='D.' surname="Shytyi" fullname='Dmytro Shytyi'>
            <organization>SFR</organization>
      <address>
        <postal>
          <street>
          </street>
          <city>
            Paris
          </city>
          <region>
            Ile-de-France
          </region>
          <code>
          </code>
          <country>
            France
          </country>
        </postal>
        <phone>
        </phone>
        <email>
          ietf.dmytro@shytyi.net
        </email>
                <uri>
                https://dmytro.shytyi.net
                </uri>
      </address>
    </author>
      <author initials='L.' surname="Beylier" fullname='Laurent Beylier'>
      <organization>SFR</organization>
      <address>
        <postal>
          <street>
          </street>
          <city>
            Paris
          </city>
          <region>
            Ile-de-France
          </region>
          <code>
          </code>
          <country>
            France
          </country>
        </postal>
        <phone>
        </phone>
        <email>
                laurent.beylier@sfr.com
        </email>
        <uri>
        </uri>
      </address>
    </author>
    

    <author initials='L.' surname="Iannone" fullname='Luigi Iannone'>
      <organization>Telecom ParisTech</organization>
      <address>
        <postal>
          <street>
          </street>
          <city>
            Paris
          </city>
          <region>
            Ile-de-France
          </region>
          <code>
          </code>
          <country>
            France
          </country>
        </postal>
        <phone>
        </phone>
        <email>
                luigi.iannone@telecom-paristech.fr
        </email>
      </address>
    </author>

        
    <!-- Meta-data Declarations -->
    <date/>
    <area>Internet</area>

    <workgroup>Network Working Group</workgroup>

    <!-- WG name at the upperleft corner of the doc, IETF is fine for
         individual submissions.  If this element is not present, the
         default is "Network Working Group", which is used by the RFC
         Editor as a nod to the history of the IETF. -->

    <keyword>
            ucpe, yang, model, network controller, orchestrator. 
    </keyword>

    <!-- Keywords will be incorporated into HTML output files in a
         meta tag but they have no effect on text or nroff output. If
         you submit your draft to the RFC Editor, the keywords will be
         used for the search engine. -->

    <abstract>
      <t>
        This document provides a YANG data model for uCPE management (VYSM) and
        definition of the uCPE equipment.  The YANG  Model serves as a
        base framework for managing an universal Customer-Premises Equipment
        (uCPE) subsystem. The model can be used by a Network
        Orchestrator.  </t>
    </abstract>
  </front>


  <middle>
          <section title="Introduction"
                   anchor="Introduction">
      <t>
        Network Function Virtualization is a technology that allows to
        virtualize the network services running on dedicated hardware.  This
        technology became a base for universal Customer-Premises Equipment
        (uCPE). This document defines the uCPE as hardware with x86 capabilities
        that has a hypervisor. In other words, uCPE is a host that may run
        multiple Virtual Machines with guest OSs, where each Guest OS may
        represent a Physical Network Function.  This document presents the YANG
         Model (VYSM) to manage from an Orchestrator the infrastructure
        inside the uCPE.
      </t>
 
    </section>
    
    <section title="Terminology"
            anchor="Terminology">
      <t>
        The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
        "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
        document are to be interpreted as described in  <xref target="RFC2119">RFC 2119</xref>.
      </t>
      <t>
        Link - is an entity that enables link layer communication of nodes.       
      </t>
      <t>
        Port - node connector to the link.
     </t>
     <t>
        NE - Network Element.
     </t>
     <t>
        NSYM - Network Yang Module.
     </t>
     <t>
        VYSM - VNF YANG Model.
     </t>
    </section>
    <section
        title="Universal CPE"
        anchor="uCPE">
        <t>
                Firstly, this document defines the platform that is controlled
                with VYSM - universal CPE (uCPE). The uCPE as hardware with x86
                capabilities that is generally running Linux distribution with
                additional virtualization layer. Virtualization layer provides
                virtual compute, virtual storage and virtual network resources.
                Each VNF running in the uCPE requires the amount of virtual
                resources (for example: 4 vCPUs, 4GB RAM, 40GB storage, 4
                vPorts). VNFs MAY be interconnected between each other and
                physical ports via Virtual Networks. Topology construction and
                VM life-cycle management is allowed via high level interface
                (Configuration can be done in the same transaction). The figure
                below presents the uCPE architecture.
        </t> 
        <t>
        <figure align="center">
                <artwork align="center">
                <![CDATA[
----------------------------------------|--------------
VNF1            VNF2            VNF3    |       
----------------------------------------|
Virtual         Virtual         Virtual | uCPE software
Compute         Storage         Networks|
----------------------------------------|---------------
PHY x86         RAM+PHY         PHYsical| uCPE Hardware                 
processor       storage         ports   |

        
                ]]>
          </artwork>
        </figure>

        </t>


        <t>
                The next elements can be managed in the uCPE:
                        <list style="symbols">
                                <t>Virtual Network Funcitons:
                                        <list style="symbols">
                                                <t>Number of assigned vCPUs.</t>
                                                <t>Size of allocated RAM.</t>
                                                <t>VNF day0 config (bootstrap).</t>
                                                <t>vLinks that are attached to the VNF.</t>
                                        </list>
                                </t>
                                <t>Virtual Switches:
                                        <list style="symbols">
                                                <t>vLinks that are attached to the vSW.</t> 
                                        </list>
                                </t>
                                <t>Virtual Links(vLinks).</t>
                                <t>Physical Ports of the uCPE.</t>
                        </list>
        </t>

    <section title="uCPE purpose"
            anchor="purpose">
                                <t>
                                        <list style="symbols">
                                                <t>uCPE replaces multiple types of equipment (Node#1 - Node#5) with 1 unit by virtualizing them as Virtual Network Functions on the top of NFVIs:
                                                
                        <figure align="center">
                          <artwork align="center">
                                  <![CDATA[
 :     NODE #1     :   NODE #2 :  NODE #3  :NODE #4: NODE #5  :
 :   +-----------+ :  +------+ :  +------+ :  +--+ :  +-----+ :
.----|Aggregation|----|CE-L2 |----| CE-L3|----|FW|----|SDWAN|---LAN
 :   |  switch   | :  |      | :  |      | :  |  | :  |     | :
 :   +-----------+ :  +------+ :  +------+ :  +--+ :  +-----+ :
                              ]]>
                        </artwork>
                </figure>

                      <figure align="center">
                        <artwork align="center">
                                <![CDATA[
 :     NODE #1   :           NODE #2                           :
 :               : +.........................................+ :
 : +-----------+ : |  +------+    +------+    +--+   +-----+ | :
.--|Aggregation|---|--|CE-L2 |----| CE-L3|----|FW|---|SDWAN|-|---LAN
 : |  switch   | : |  |      |    |      |    |  |   |     | | :
 : +-----------+ : |  +------+    +------+    +--+   +-----+ | :
 :               : |  universal Customer-Premises Equipment  | :
 :               : +-----------------------------------------+ :
                      ]]>
                        </artwork>
                       </figure>
                                               </t>
                                                <t>uCPE facilitates the interconnection between the Network Functions (NF) as interconnection between NF is performed via virtual links(that is part of the uCPE management). That means that no need to hire technician to cable the equipment, it could be done via orchestrator. </t>
                                                <t>
                                                        uCPE facilitates the 0day configuration of the VNFs as its 0day configuration can be putted remotely.
                                                </t>
                                        </list>
                                </t>
    </section>
    <section title="uCPE VNF ecosystem example"
            anchor="ecosystem">
                                <t>uCPE supports a Virtual Network Functions of different type:
                                        <list style="symbols">
                                                <t>SD-WAN</t>
                                                <t>vRouter</t>
                                                <t>vFirewall</t>
                                                <t>vLB(vLoad Balancer)</t>
                                                <t>vCGNAT(vCarrier Grade NAT)</t>
                                                <t>virtual WAN Optimistaion</t>
                                                <t>vWireless LAN controller</t>
                                                <t>Other...</t>

                                        </list>
                                </t>
    </section>

    <section title="Internal uCPE service example"
            anchor="servicetypes">
        <t>
                The VNF in the uCPE could be a vRouter or vFirewall or an
                SD-WAN that is not a default part of virtual network resources
                of the uCPE.  Multiple VNFs MAY be instantiated in the uCPE.
                With support of links and switches, VNFs MAY participate a
                service chains.  Example of service chains (Note that virtual
                switch "vs(WAN)" connected to LAN ports and vSW(WAN) is
                connected to WAN ports):
                
                <list style="symbols">
                        <t>vSW(WAN)-l1-vRouter-l2-vSW(LAN).</t>
                        <t>vSW(WAN)-l1-vRouter-l2-vSW(Service)-l3-vFirewall-l4-vSW(LAN).</t>
                        <t>vSW(WAN)-l1-vRouter-l2-vSW(Service1)-l3-vFirewall-l4-vSW(Service2)-l5-SD-WAN-l6-vSW(LAN).</t>
                        <t>vSW(WAN)-l1-SDWAN-l2-vSW(Service)-l3-vFirewall-l4-vSW(LAN).</t>
                        <t>
                        <figure align="center">
                          <artwork align="center">
                                <![CDATA[
vSW(WAN1)--vRouter--+
                    +--vLoadBalance  vFirewall--vSW(LAN)
vSW(WAN2)--vRouter--+     |              |
                          +-vSW(Service1)+
                                ]]>
                          </artwork>
                        </figure>
                        </t>
                        <t>
                        <figure align="center">
                          <artwork align="center">
                                <![CDATA[
vSW(WAN1)--vRouter(ISP1)--+
                          +--SD-WAN        vFirewall--vSW(LAN)
vSW(WAN2)--vRouter(ISP2)--+     |              |
                                +-vSW(Service1)+
                                ]]>
                          </artwork>
                        </figure>
                        </t>

                </list>
        </t>
   </section>
   </section>

    <section title="YANG Model for uCPE management"
            anchor="service">
        <t>
        Secondly, this document defines and classifies the YANG Model for uCPE Management.
        This Module is modeled representation of the specific network requirements. It provides abstraction of network configuration and operations. The YANG Model for uCPE Management  does not describe all configuration to be performed on the devices, but provides
        the configuration that is required for the "Network to Network Element(s)" decomposition process <xref target="RFC8199">RFC 8199</xref>.
        Example of the decomposition is presented in  the figure below. 
        </t>
        <t>
                The Network YANG module exposes the configuration commands via the Northbound interfaces
                of the orchestrator. Therefore the set of the commands modeled in the VYSM can be inputted via Notrhbound interfaces(for example CLI).
                In the example the command "vm VNF1" is passed via Northbound interface to the orchestrator. It defines the virtual machine name. 
                Further the same configuration MAY be transformed to the one or multiple Network Element payloads (for example xml for NETCONF) that carry an equivalent of commands such as "nf nf-name VNF1"

        </t>
        <t>
        <figure align="center">
          <artwork align="center">
                <![CDATA[

                             +-+-+-+-+-+-+-+-+-+
                             |                 |
                             |  config t       |
                             |      vm VNF1    |
                             +-+-+-+-+-+-+-+-+-+
                                      #
                                      #
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
:                                                                   :
:  +-+-+-+-+-+-+-+-+-+-+-+-+-+-++-+-+-+                             :
:  |  Network YANG Module             | <= scope of this document   :
:  +-+-+-+-+-+-+-+-+-+-+-+-+-+-++-+-+-+                             :
:                   #                                               :
:     ##############################                                :
:     #             #              #                                :
: '---------' '------------' '-----------'                          :
: 'Module1  ' ' Module 2   ' '  Module3  '          :
: '---------' '------------' '-----------'          : 
:      #             #               #                              :
:      #             #               #######################        :
:      ####          ##############                        #        :
:         #                       #                        #        :
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
          #                       #                        #         
 Network  #  element 1    Network # element 2      Network # element3
++-+-+-+-+-+-+-+-+-+-+  -+-+-+-++-+-+-+-+-+-+-+-+-  +-+-+-+-+-+-+-+-+
| domains domain VNF1|  |tenants tenant name VNF1|  |nf nf-name VNF1|
++-+-+-+-+-+-+-+-+-+-+  -+-+-+-++-+-+-+-+-+-+-+-+-  +-+-+-+-+-+-+-+-+

                ]]>
          </artwork>
        </figure>

        </t>
    </section>
    
    <section 
        title="Components for uCPE Management"
        anchor="Components">
      <t>
        This section provides a components overview to manage the uCPE. 
      </t>
      <t>
        There are multiple RFCs and drafts produced by the IETF community, that are referenced in the YANG tree to manage the uCPE.
        Each document produced by the IETF covers a part of uCPE Management.
        The list of the documents is provided below:
      </t>      
      <t>
                <list style="symbols">
                        <t><xref target="RFC8530"></xref> - logical network elements (VNFs) properties.</t>
                        <t><xref target="RFC8345"></xref> - definition of networks, nodes, node-termination-points: network includes the uCPE with uCPE's physical termination points.</t>
                        <t><xref target="I-D.ietf-teas-sf-aware-topo-model"></xref>physical ports and service functions (VNFs) interconnection matrices (PhyPort-VNF, VNF-VNF).</t>
                        <t>This document itself provides yang modules that completes the existing documents produced by IETF.</t>
                </list>
        
          
        </t>
        <t>
                This document introduces yang modules for 'logical network elements properties(VNFs)" part:
        </t>
      <t>
              <list style="symbols">
                      <t>day0-info: mapping between variables inside of the bootstrap config and required values in the list "day0-info". In the bootstrap config the variable could be putted instead value. The value could be set in the day0-info part (check the YANG model) and after the value in the list will be mapped to the variable in the bootstrap config. </t>
                      <t>vCPU/vRAM/vDisk/VNF-ports leafs and lists.</t>
              </list>
        
          
      </t>
  <t>
      The minimal list of yang models required for compilation of the YANG tree to manage the uCPE is presented below:
  </t>

      <t>
        <list style="symbols">
      <t>ieee-dot1Q-types</t>
      <t>ietf-interfaces</t>
      <t>ietf-ip</t>
      <t>ietf-logical-network-element</t>
      <t>ietf-network</t>
      <t>ietf-network-instance</t>
      <t>ietf-ietf-network-topology</t>
      <t>ietf-routing-types</t>
      <t>ietf-te-topology</t>
      <t>ietf-te-topology-sf</t>
      <t>ietf-te-types</t>
      <t>ietf-yang-schema-mount</t>
      <t>etsi-sol-006-deviation</t>
      <t>The YANG modules introduced in this document:</t>
      <t>
        <list style="symbols">
          <t>ietf-ucpe-lne-properties</t>
          <t>ietf-ucpe-lt-virtual-link-id</t>
          <t>ietf-ucpe-ni-properties</t>
          <t>ietf-ucpe-node-type</t>
        </list>
      </t>



    </list>
        
          
        </t>
    </section>

    <section 
            title="Set of YANG Models"
            anchor="model" >
      <t>
              This section provides a YANG models that address
          uCPE netowork service resources management oranized according to the ID 
          <xref target="I-D.ietf-netmod-yang-packages"></xref>
      </t>

      <t>
        <figure align="center">
          <artwork align="center">
          <![CDATA[
<CODE BEGINS> file "ietf-ucpe-network-service-pkg.json"
 ========= NOTE: '\' line wrapping per BCP XX (RFC XXXX) ===========

  {
   "ietf-yang-instance-data:instance-data-set": {
     "name": "ietf-ucpe-network-service-pkg",
     "pkg-schema": {
        package: "ietf-yang-package-defn-pkg@0.1.0.json"
     },
     "description": "YANG package for universal CPE network service",
     "content-data": {
       "ietf-yang-package-instance:yang-package": {
         "name": "ietf-ucpe-network-service-pkg",
         "version": "0.0.1",
         "timestamp": "2021-09-09T17:00:00Z",
         "organization": "IETF OPSAWG Working Group",
         "contact" : "WG Web:   <http://tools.ietf.org/wg/opsawg/>, \
                      WG List:  <mailto:opsawg@ietf.org>, \
          Author:   <mailto:ietf.dmytro@shytyi.net>",     
     "description": "IETF uCPE network service YANG package.\
            \
            This package defines a small sample set of \
            YANG modules that could represent the basic set of \
        modules that a standard universal CPE device might be \
        expected \
            to support.",

         "reference": "XXX, draft-shytyi-opsawg-vysm-10.xml",
         "location": [ "https://github.com/dmytroshytyi/ucpe-ietf/\
                                   ietf-ucpe-service@v0.0.1.json" ],
         "module": [
           {
             "name": "ieee-dot1Q-types,
             "revision": "2015-08-18",
             "location": [ "/https://github.com/dmytroshytyi/\
              ucpe-ietf/blob/master/ieee-dot1Q-types.yang" ],
           },
           {
             "name": "ietf-interfaces",
             "revision": "2018-02-20",
             "location": [ "https://github.com/dmytroshytyi/\
              ucpe-ietf/blob/master/\
              ietf-interfaces%402018-02-20.yang" ],
           },
           {
             "name": "ietf-ip",
             "revision": "2018-02-22",
             "location": [ "https://github.com/dmytroshytyi/ucpe-ietf\
              /blob/master/ietf-ip%402018-02-22.yang" ],
           },
           {
             "name": "ietf-logical-network-element",
             "revision": "2019-01-25",
             "location": [ "https://github.com/dmytroshytyi/\
              ucpe-ietf/blob/master/\
              ietf-logical-network-element%402019-01-25.yang" ],
           },
           {
             "name": "ietf-network",
             "revision": "2018-02-26",
             "location": [ "https://github.com/dmytroshytyi/\
              ucpe-ietf/blob/master/\
              ietf-network%402018-02-26.yang" ],
           },
           {
             "name": "ietf-network-instance",
             "revision": "2019-01-21",
             "location": [ "https://github.com/dmytroshytyi/\
              ucpe-ietf/blob/master/\
              ietf-network-instance%402019-01-21.yang" ],
           },
           {
             "name": "ietf-network-topology",
             "revision": "2018-02-26",
             "location": [ "https://github.com/dmytroshytyi/\
              ucpe-ietf/blob/master/\
              ietf-network-topology%402018-02-26.yang" ],
           },
           {
             "name": "ietf-routing-types",
             "revision": "2017-12-04",
             "location": [ "https://github.com/dmytroshytyi/\
              ucpe-ietf/blob/master/\
              ietf-routing-types%402017-12-04.yang" ],
           },
           {
             "name": "ietf-te-topology",
             "revision": "2019-02-07",
             "location": [ "https://github.com/dmytroshytyi/\
              ucpe-ietf/blob/master/\
              ietf-te-topology%402019-02-07.yang" ],
           },
           {
             "name": "ietf-te-topology-sf",
             "revision": "2019-11-03",
             "location": [ "https://github.com/dmytroshytyi/\
              ucpe-ietf/blob/master/\
              ietf-te-topology-sf%402019-11-03.yang" ],
           },
           {
             "name": "ietf-te-types",
             "revision": "2019-11-18",
             "location": [ "https://github.com/dmytroshytyi/\
              ucpe-ietf/blob/master/\
              ietf-te-types%402019-11-18.yang" ],
           },
           {
             "name": "ietf-ucpe-lne-properties",
             "revision": "2019-11-21",
             "location": [ "https://github.com/dmytroshytyi/\
              ucpe-ietf/blob/master/\
              ietf-ucpe-lne-properties%402019-11-21.yang" ],
           },
           {
             "name": "ietf-ucpe-lt-virtual-link-id",
             "revision": "2020-02-14",
             "location": [ "https://github.com/dmytroshytyi/\
              ucpe-ietf/blob/master/\
              ietf-ucpe-lt-virtual-link-id%402020-02-14.yang" ],
           },
           {
             "name": "ietf-ucpe-ni-properties",
             "revision": "2019-11-27",
             "location": [ "https://github.com/dmytroshytyi/\
              ucpe-ietf/blob/master/\
              ietf-ucpe-ni-properties%402019-11-27.yang" ],
           },
           {
             "name": "ietf-ucpe-node-type",
             "revision": "2020-02-14",
             "location": [ "https://github.com/dmytroshytyi/\
              ucpe-ietf/blob/master/\
              ietf-ucpe-node-type%402020-02-14.yang" ],
           },
           {
             "name": "ietf-ucpe-ni-properties",
             "revision": "2019-11-27",
             "location": [ "https://github.com/dmytroshytyi/\
              ucpe-ietf/blob/master/\
              ietf-ucpe-ni-properties%402019-11-27.yang" ],
           },
           {
             "name": "ietf-yang-schema-mount",
             "revision": "2019-01-14",
             "location": [ "https://github.com/dmytroshytyi/\
              ucpe-ietf/blob/master/\
              ietf-yang-schema-mount%402019-01-14.yang" ],
           },
           {
             "name": "etsi-nfv-common-deviation",
             "revision": "2020-06-10",
             "location": [ "https://github.com/dmytroshytyi/\
              ucpe-ietf/blob/master/\
              submodules/etsi-nfv-common-deviation.yang" ],
           },
           {
             "name": "etsi-nfv-vnf-deviation",
             "revision": "2020-06-10",
             "location": [ "https://github.com/dmytroshytyi/\
              ucpe-ietf/blob/master/\
              submodules/etsi-nfv-vnf-deviation.yang" ],
           }
         ]
       }
     }
   }
 }
 <CODE ENDS>

        ]]>
          </artwork>
        </figure>
      </t>

    </section>

     <section 
        title="Diagram overview of YANG Data Model tree for uCPE management"
        anchor="Overview">
      <t>
        This section provides an overview of the Data YANG Model that
        MAY be made with "pyang" utility. The figure below presents the tree
        diagram. 
      </t>

      <t>
        <figure align="center">
          <artwork align="center">
            <![CDATA[ 
module: ietf-logical-network-element
+--rw logical-network-elements
   +--rw logical-network-element* [name]
      +--rw name                                            string
      +--rw managed?                                        boolean
      +--rw description?                                    string
      +--rw root
      +--rw ietf-ucpe:logical-network-element-properties
         +--rw ietf-ucpe:etsi
         |  +--rw ietf-ucpe:vnfd?   -> /nfv/vnfd/id
         |  +--rw ietf-ucpe:vdu?    -> /nfv/vnfd[id=current()\
                      /../vnfd]/vdu/id
         +--rw ietf-ucpe:supporting-node?        -> /nw:networks\
                      /network/node/node-id
         +--rw ietf-ucpe:uuid?                   enumeration
         +--rw ietf-ucpe:uuid-custom-value?      string
         +--rw ietf-ucpe:persistance-id?         string
         +--rw ietf-ucpe:pci-passthrough
         |  +--rw ietf-ucpe:device* [device-name]
         |     +--rw ietf-ucpe:device-name     string
         |     +--rw ietf-ucpe:vendor-id?      string
         |     +--rw ietf-ucpe:device-id?      string
         |     +--rw ietf-ucpe:device-index?   int64
         +--rw ietf-ucpe:sf-cp-params* [sf-connection-point-id]
         |  +--rw ietf-ucpe:sf-connection-point-id    string
         |  +--rw ietf-ucpe:io-acceleration
         |  |  +--rw ietf-ucpe:interface-type?     enumeration
         |  |  +--rw ietf-ucpe:interface-model?    enumeration
         |  |  +--rw ietf-ucpe:number-of-queues?   uint64
         |  +--rw ietf-ucpe:mac-params
         |     +--rw ietf-ucpe:mac-type?             enumeration
         |     +--rw ietf-ucpe:custom-mac-address?   string
         +--rw ietf-ucpe:simplified-lne-props
         |  +--rw ietf-ucpe:sf-connection-points* \
                      [sf-connection-point-id]
         |  |  +--rw ietf-ucpe:sf-connection-point-id    string
         |  +--rw ietf-ucpe:ram?                    uint64
         |  +--rw ietf-ucpe:cpu?                    uint64
         |  +--rw ietf-ucpe:storages* [id]
         |     +--rw ietf-ucpe:id          string
         |     +--rw ietf-ucpe:location?   string
         +--rw ietf-ucpe:day0-config
            +--rw ietf-ucpe:location?        string
            +--rw ietf-ucpe:day0-var-path?   string
            +--rw ietf-ucpe:variable* [name]
               +--rw ietf-ucpe:name     string
               +--rw ietf-ucpe:value?   string
module: ietf-network
+--rw networks
   +--rw network* [network-id]
   |  +--rw network-id                    network-id
   |  +--rw network-types
   |  |  +--rw tet:te-topology!
   |  |     +--rw tet-sf:sf!
   |  +--rw supporting-network* [network-ref]
   |  |  +--rw network-ref    -> /networks/network\
                      /network-id
   |  +--rw node* [node-id]
   |  |  +--rw node-id                           node-id
   |  |  +--rw supporting-node* [network-ref node-ref]
   |  |  |  +--rw network-ref    -> ../../../supporting\
                      -network/network-ref
   |  |  |  +--rw node-ref       -> /networks/network\
                      /node/node-id
   |  |  +--rw nt:termination-point* [tp-id]
   |  |  |  +--rw nt:tp-id                           tp-id
   |  |  |  +--rw nt:supporting-termination-point* \
                  [network-ref node-ref tp-ref]
   |  |  |  |  +--rw nt:network-ref    -> ../../../\
                  nw:supporting-node/network-ref
   |  |  |  |  +--rw nt:node-ref       -> ../../../\
                  nw:supporting-node/node-ref
            |  |  |  |  +--rw nt:tp-ref         -> \
                  /nw:networks/network[nw:network-id=current()/ \
            ../network-ref]/node[nw:node-id=current()/\
                      ../node-ref]/termination-point/tp-id
   |  |  +--rw tet:te-node-id?                   te-types:te-node-id
   |  |  +--rw tet:te!
   |  |  |  +--rw tet:te-node-template*              -> ../../../..\
                  /te/templates/node-template\
                  /name {template}?
   |  |  |  +--rw tet:te-node-attributes
   |  |  |  |  +--rw tet-sf:service-function
   |  |  |  |     +--rw tet-sf:connectivity-matrices
   |  |  |  |     |  +--rw tet-sf:connectivity-matrix* [id]
   |  |  |  |     |     +--rw tet-sf:id                 uint32
   |  |  |  |     |     +--rw tet-sf:from
   |  |  |  |     |     |  +--rw tet-sf:service-function-id?    string
   |  |  |  |     |     |  +--rw tet-sf:sf-connection-point-id? string
   |  |  |  |     |     +--rw tet-sf:to
   |  |  |  |     |     |  +--rw tet-sf:service-function-id?    string
   |  |  |  |     |     |  +--rw tet-sf:sf-connection-point-id? string
   |  |  |  |     |     +--rw tet-sf:enabled?           boolean
   |  |  |  |     |     +--rw tet-sf:direction?  \
                      connectivity-direction
   |  |  |  |     |     +--rw tet-sf:virtual-link-id?   string
   |  |  |  |     +--rw tet-sf:link-terminations
   |  |  |  |        +--rw tet-sf:link-termination* [id]
   |  |  |  |           +--rw tet-sf:id                      uint32
   |  |  |  |           +--rw tet-sf:from
   |  |  |  |           |  +--rw tet-sf:tp-ref?   -> ../../../../../\
                      ../../nt:termination-point/tp-id
   |  |  |  |           +--rw tet-sf:to
   |  |  |  |           |  +--rw tet-sf:service-function-id?    \
                                    string
   |  |  |  |           |  +--rw tet-sf:sf-connection-point-id? \
                                    string
   |  |  |  |           +--rw tet-sf:enabled?                boolean
   |  |  |  |           +--rw tet-sf:direction?        \
                      connectivity-direction
   |  |  |  |           +--rw lt-vlink-id:virtual-link-id?   string


module: ietf-network-instance
  +--rw network-instances
     +--rw network-instance* [name]
        +--rw name                                              string
        +--rw enabled?                                          boolean
        +--rw description?                                      string
        +--rw (ni-type)?
        +--rw (root-type)
           +--:(vrf-root)
           |  +--rw vrf-root
           +--:(vsi-root)
           |  +--rw vsi-root
           |  +--rw ietf-ucpe-ni:network-instance-properties
           |     +--rw ietf-ucpe-ni:sf-connection-points*       \
              [sf-connection-point-id]
           |     |  +--rw ietf-ucpe-ni:sf-connection-point-id    string
           |     |  +--rw ietf-ucpe-ni:stacked-vlans
           |     |  |  +--rw ietf-ucpe-ni:outer-VLAN-0x8100?    \
                            d1q:vid-range
           |     |  |  +--rw ietf-ucpe-ni:inner-VLANs-0x8100*   uint16
           |     |  +--rw ietf-ucpe-ni:QinQ
           |     |  |  +--rw ietf-ucpe-ni:svlan-0x88a8?    d1q:vid-range
           |     |  |  +--rw ietf-ucpe-ni:cvlans-0x8100*   uint16
           |     |  +--rw ietf-ucpe-ni:dot1q-vlan
           |     |     +--rw ietf-ucpe-ni:access-tag?            \
              d1q:vid-range
           |     |     +--rw ietf-ucpe-ni:trunk-allowed-vlans*   \
                            uint16
           |     |     +--rw ietf-ucpe-ni:port-mode?             \
                            enumeration
           |     +--rw ietf-ucpe-ni:io-acceleration
           |     |  +--rw ietf-ucpe-ni:dpdk
           |     |  |  +--rw ietf-ucpe-ni:rx-queues?   uint16
           |     |  |  +--rw ietf-ucpe-ni:tx-queues?   uint16
           |     |  |  +--rw ietf-ucpe-ni:cpu-mask?    uint16
           |     |  +--rw ietf-ucpe-ni:ebpf-xdp
           |     +--rw ietf-ucpe-ni:ni-area?                identityref
           |     +--rw ietf-ucpe-ni:supporting-node?        -> \
                        /nw:networks\
                            /network/node/node-id
           +--:(vv-root)
              +--rw vv-root

module: ietf-ucpe-lne-properties
  +--rw nfv
     +--rw vnfd* [id]
        +--rw id                               string
        +--rw provider                         string
        +--rw product-name                     string
        +--rw software-version                 string
        +--rw version                          string
        +--rw product-info-name?               string
        +--rw product-info-description?        string
        +--rw vnfm-info*                       string
        +--rw localization-language?           string
        +--rw default-localization-language?   string
        +--rw vdu* [id]
        |  +--rw id                         string
        |  +--rw name                       string
        |  +--rw description?               string
        |  +--rw int-cpd* [id]
    etc... Following ETSI SOL006
          
    ]]>
          </artwork>
        </figure> 
      </t>
  
        </section>

    <!-- Possibly a 'Contributors' section ... -->

    <section anchor="Security" title="Security Considerations">
    <t>
      At this time, no security considerations are addressed by this
      memo.
    </t>
    </section>    

    <section anchor="IANA" title="IANA Considerations">
      <t>
        No request to IANA at this time.
      </t>
    </section>

    <section anchor="Acknowledgements"
             title="Acknowledgements">
      <t>
              the authors would like to thank:
                        <list style="symbols">
                        <t>Mahesh Jethanandani.</t>
                        <t>Robert Varga.</t>
                        <t>Bill Wu.</t>
                        <t>Joe Clarke.</t>
                        <t>Tom Petch.</t>
                        <t>Martin Bjorklund.</t>
                        <t>Schonwalder Jurgen.</t>
                        <t>Dean Bogdanovic.</t>
                        <t>Bo Wu.</t>
                </list>
        
              for their valuable comments.
          
      </t>

    </section>

  </middle>


  <back>
      <references title="Normative References">

            <?rfc
            include="http://xml2rfc.ietf.org/public/rfc/bibxml-ids/reference.I-D.draft-ietf-netmod-yang-packages-01.xml"
            ?>
            <?rfc
            include="http://xml2rfc.ietf.org/public/rfc/bibxml-ids/reference.I-D.draft-ietf-teas-sf-aware-topo-model-03.xml"
            ?>
            <?rfc
            include="http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8345"
            ?>
            <?rfc
            include="http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8530"
            ?>
            <?rfc
            include="http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119"
            ?>
            <?rfc
            include="http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8199"
            ?>

    </references>
    <section
    title="Example of the uCPE resources management"
    anchor="Example_yin">
      <t>
         This section provides an overview of the YIN format.
      </t>
      <t>
        <figure align="center">
          <artwork align="center">
                <![CDATA[
<networks xmlns="urn:ietf:params:xml:ns:yang:ietf-network">
 <network>
   <network-id>network-1</network-id>
   <network-types>
     <te-topology xmlns="urn:ietf:params:xml:ns:yang:ietf-te-topology">
       <sf xmlns="urn:ietf:params:xml:ns:yang:ietf-te-topology-sf"/>
     </te-topology>
   </network-types>
   <node>
     <node-id>ucpe1</node-id>
     <te-node-id xmlns="urn:ietf:params:xml:ns:yang:ietf-te-topology" \
         >0.0.0.0</te-node-id>
     <te xmlns="urn:ietf:params:xml:ns:yang:ietf-te-topology">
       <te-node-attributes>
       <service-function 
           xmlns="urn:ietf:params:xml:ns:yang:ietf-te-topology-sf">
           <connectivity-matrices>
             <connectivity-matrix>
               <id>1</id>
               <from>
                 <service-function-id>VMone</service-function-id>
                 <sf-connection-point-id>1</sf-connection-point-id>
               </from>
               <to>
                 <service-function-id>SwitchOne</service-function-id>
                 <sf-connection-point-id>11</sf-connection-point-id>
               </to>
               <virtual-link-id>l11</virtual-link-id>
             </connectivity-matrix>
             <connectivity-matrix>
               <id>2</id>
               <from>
                 <service-function-id>VMtwo</service-function-id>
                 <sf-connection-point-id>1</sf-connection-point-id>
               </from>
               <to>
                 <service-function-id>SwitchOne</service-function-id>
                 <sf-connection-point-id>12</sf-connection-point-id>
               </to>
               <virtual-link-id>l12</virtual-link-id>
             </connectivity-matrix>
             <connectivity-matrix>
               <id>3</id>
               <from>
                 <service-function-id>VMthree</service-function-id>
                 <sf-connection-point-id>1</sf-connection-point-id>
               </from>
               <to>
                 <service-function-id>SwitchOne</service-function-id>
                 <sf-connection-point-id>13</sf-connection-point-id>
               </to>
               <virtual-link-id>l13</virtual-link-id>
             </connectivity-matrix>
             <connectivity-matrix>
               <id>4</id>
               <from>
                 <service-function-id>VMfour</service-function-id>
                 <sf-connection-point-id>1</sf-connection-point-id>
               </from>
               <to>
                 <service-function-id>SwitchOne</service-function-id>
                 <sf-connection-point-id>14</sf-connection-point-id>
               </to>
               <virtual-link-id>l14</virtual-link-id>
             </connectivity-matrix>
           </connectivity-matrices>
         </service-function>
       </te-node-attributes>
     </te>
   </node>
 </network>
</networks>

<logical-network-elements \
       xmlns="urn:ietf:params:xml:ns:yang:ietf-logical-network-element">
  <logical-network-element>
    <name>VMfour</name>
    <logical-network-element-properties \
       xmlns="urn:ietf:params:xml:ns:yang:ietf-ucpe-lne-properties">
      <sf-connection-points>
        <sf-connection-point-id>1</sf-connection-point-id>
      </sf-connection-points>
      <supporting-node>ucpe1</supporting-node>
      <ram>1024</ram>
      <cpu>4</cpu>
      <storages>
        <id>1</id>
        <location>vm4.qcow2</location>
      </storages>
    </logical-network-element-properties>
  </logical-network-element>
  <logical-network-element>
    <name>VMone</name>
    <logical-network-element-properties \
       xmlns="urn:ietf:params:xml:ns:yang:ietf-ucpe-lne-properties">
      <sf-connection-points>
        <sf-connection-point-id>1</sf-connection-point-id>
      </sf-connection-points>
      <supporting-node>ucpe1</supporting-node>
      <ram>1024</ram>
      <cpu>4</cpu>
      <storages>
        <id>1</id>
        <location>vm1.qcow2</location>
      </storages>
    </logical-network-element-properties>
  </logical-network-element>
  <logical-network-element>
    <name>VMthree</name>
    <logical-network-element-properties \
       xmlns="urn:ietf:params:xml:ns:yang:ietf-ucpe-lne-properties">
      <sf-connection-points>
        <sf-connection-point-id>1</sf-connection-point-id>
      </sf-connection-points>
      <supporting-node>ucpe</supporting-node>
      <ram>1024</ram>
      <cpu>4</cpu>
      <storages>
        <id>1</id>
        <location>vm3qcow2</location>
      </storages>
    </logical-network-element-properties>
  </logical-network-element>
  <logical-network-element>
    <name>VMtwo</name>
    <logical-network-element-properties \
       xmlns="urn:ietf:params:xml:ns:yang:ietf-ucpe-lne-properties">
      <sf-connection-points>
        <sf-connection-point-id>1</sf-connection-point-id>
      </sf-connection-points>
      <supporting-node>ucpe1</supporting-node>
      <ram>1024</ram>
      <cpu>4</cpu>
      <storages>
        <id>1</id>
        <location>vm4.iso</location>
      </storages>
    </logical-network-element-properties>
  </logical-network-element>
</logical-network-elements>
<network-instances \
    xmlns="urn:ietf:params:xml:ns:yang:ietf-network-instance">
  <network-instance>
    <name>SwitchOne</name>
    <network-instance-properties \
        xmlns="urn:ietf:params:xml:ns:yang:ietf-ucpe-ni-properties">
      <sf-connection-points>
        <sf-connection-point-id>10</sf-connection-point-id>
          <dot1q-vlan>
            <trunk-allowed-vlans>112</trunk-allowed-vlans>
            <trunk-allowed-vlans>113</trunk-allowed-vlans>
            <trunk-allowed-vlans>114</trunk-allowed-vlans>
            <port-mode>trunk</port-mode>
          </dot1q-vlan>
      </sf-connection-points>
      <sf-connection-points>
        <sf-connection-point-id>11</sf-connection-point-id>
      </sf-connection-points>
        <dot1q-vlan>
          <access-tag>111</access-tag>
        </dot1q-vlan>
      <sf-connection-points>
        <sf-connection-point-id>12</sf-connection-point-id>
      </sf-connection-points>
      <sf-connection-points>
        <sf-connection-point-id>13</sf-connection-point-id>
      </sf-connection-points>
      <sf-connection-points>
        <sf-connection-point-id>14</sf-connection-point-id>
      </sf-connection-points>
      <supporting-node>ucpe1</supporting-node>
    </network-instance-properties>
  </network-instance>
</network-instances>
   ]]>
          </artwork>
        </figure>
      </t>
    </section>

    <section 
        title="Example of the uCPE resources management (deprecated)"
        anchor="Overview_deprecated">
      <t>
        This section provides an overview of the deprecated YANG Model that
        MAY give an alternative view on the uCPE management.
      </t>

      <t>
        <figure align="center">
          <artwork align="center">
            <![CDATA[ 
module: ietf-example-ucpe
    +--rw ucpe* [name]
       +--rw name             string
       +--rw links* [link]
       |  +--rw link    string
       +--rw phyInterfaces* [interface]
       |  +--rw interface    string
       |  +--rw ports* [port]
       |     +--rw port    string
       |     +--rw link?   -> ../../../links/link
       +--rw switches* [switch]
       |  +--rw switch    string
       |  +--rw ports* [port]
       |     +--rw port    string
       |     +--rw name?   string
       |     +--rw link?   -> ../../../links/link
       +--rw vms* [vm]
          +--rw vm             string
          +--rw ports* [port]
          |  +--rw port    string
          |  +--rw name?   string
          |  +--rw link?   -> ../../../links/link
          +--rw ram?           uint64
          +--rw cpu?           uint64
          +--rw storages* [id]
          |  +--rw id          string
          |  +--rw location?   string
          +--rw day0-config
             +--rw location?        string
             +--rw day0-var-path?   string
             +--rw variable* [name]
                +--rw name     string
                +--rw value?   string   
        ]]>
          </artwork>
        </figure> 
      </t>
  
        </section> 
    <section 
            title="Deprecated VNF YANG Model"
            anchor="deprecated_model" >
      <t>
              This section provides a deprecated yang model that addresses the 
              configuration of the uCPE resources presented above. 
      </t>
      <t>
        <figure align="center">
          <artwork align="center">
            <![CDATA[ 
<CODE BEGINS> file "ietf-example-ucpe@2019-10-28.yang"
module ietf-example-ucpe {
  namespace "urn:ietf:params:xml:ns:yang:ietf-example-ucpe";
  prefix ietf-example-ucpe;

  organization
    "SFR";
  contact
    "Dmytro Shytyi
     EMail:ietf.dmytro@shytyi.net";
  description
    "This is a Network Function Virtualization (NFV) YANG
     service model.

     Copyright (c) 2019 IETF Trust and the persons identified as
     authors of the code.  All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject to
     the license terms contained in, the Simplified BSD License set
     forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.";

  revision 2019-10-28 {
    description
      "Yang model with vPorts assigned to the interfaces";
    reference
      "draft-shytyi-opsawg-vysm-05";
  }
  revision 2019-10-19 {
    description
      "Yang model was cleaned. Interfaces added";
    reference
      "draft-shytyi-opsawg-vysm-04";
  }
  revision 2019-09-16 {
    description
      "Added 0day config for VNFs.
       Yang model modified according
       to the received comments.";
    reference
      "draft-shytyi-opsawg-vysm-00";
  }
  revision 2018-01-07 {
    description
      "Initial revision.";
    reference
      "draft-shytyi-netmod-vysm-01";
  }

  list ucpe {
    key "name";
    leaf name {
      type string;
      description
        "ID of uCPE where
         a service is instantiated";
    }
    list links {
      key "link";
      leaf link {
        type string;
        description
          "Name of the virtual link from the pool
           of the links";
      }
      description
        "Pool of the virtual links that connect VMs and
         Interfaces";
    }
    list phyInterfaces {
      key "interface";
      leaf interface {
        type string;
        description
          "Name of physical interface";
      }
      list ports {
        key "port";
        leaf port {
          type string;
          description
            "Name of the connector";
        }
        leaf link {
          type leafref {
            path "../../../links/link";
          }
          description
            "Link that is connected to
             the port via connector";
        }
        description
          "Set of the connectors the
           physical interface has";
      }
      description
        "Set of physical interfaces";
    }
    list switches {
      key "switch";
      leaf switch {
        type string;
        description
          "Name of the forwarding domain";
      }
      list ports {
        key "port";
        leaf port {
          type string;
          description
            "Name of the connector";
        }
        leaf name {
          type string;
          description
            "Name of the
             subconnector";
        }
        leaf link {
          type leafref {
            path "../../../links/link";
          }
          description
            "Link that is connected to the
             switch via port";
        }
        description
          "Set of the connectors the
           forwarding domain has";
      }
      description
        "Set of the forwarding domains";
    }
    list vms {
      key "vm";
      leaf vm {
        type string;
        description
          "ID of the Virtual Machine";
      }
      list ports {
        key "port";
        leaf port {
          type string;
          description
            "Name of the connector";
        }
        leaf name {
          type string;
          description
            "Name of
             the subconnector";
        }
        leaf link {
          type leafref {
            path "../../../links/link";
          }
          description
            "Link that connects the
             VM with a switch or Interface
             via connector";
        }
        description
          "Set of Virtual Machine connectors";
      }
      leaf ram {
        type uint64;
        description
          "Size of RAM to allocate for
           the Guest OS";
      }
      leaf cpu {
        type uint64;
        description
          "Number of vCPUs to
           allocate for the Guest OS";
      }
      list storages {
        key "id";
        leaf id {
          type string;
          description
            "Number of
             vDisk attached to the VM";
        }
        leaf location {
          type string;
          description
            "External location where
             the image (ex.qcow2) is saved.";
        }
        description
          "Virtual storge/vDisk
           attached to the Virtual Machine";
      }
      container day0-config {
        leaf location {
          type string;
          description
            "0day configuration location";
        }
        leaf day0-var-path {
          type string;
          description
            "path of the file
             that contains the 0day variables";
        }
        list variable {
          key "name";
          leaf name {
            type string;
            description
              "variable name";
          }
          leaf value {
            type string;
            description
              "variable value";
          }
          description
            "list of variables";
        }
        description
          "0day configuration:init config";
      }
      description
        "Set of the Virtual Machines configured
         on the universal Customer-Premises Equipment";
    }
    description
      "This is an uCPE management service";
  }
}

<CODE ENDS>
        ]]>
          </artwork>
        </figure>
      </t>
      
    </section>

    <section anchor="Example_deprecated" title="XML example of deprecated YANG model">
        <t>
                The XML example below presents the configuration of 
                the next service in the uCPE, where: vSW(LAN), 
                vSW(WAN), vSW(Service) - virtual switches; 
                l1,l2,l3,l4 - virtual links; VMs represent PNFs
                (Physical Network Fuctions) that could be bootstrapped 
                with 0day config/license.
        </t>
      <t>
        <figure align="center">
          <artwork align="center">
        <![CDATA[ 
+--------+      +-------------+      +------------+
|vSW(LAN)|--l2--|VNF-vFirewall|--l3--|            |
+--------+      +-------------+      |            |
+--------+      +-------------+      |vSW(Service)|
|vSW(WAN)|--l1--|   VNF_vRtr  |--l4--|            |
+--------+      +-------------+      +------------+
        ]]>
          </artwork>
        </figure> 
      </t>

      <t>
        <figure align="center">
          <artwork align="center">
        <![CDATA[ 
  <ucpe xmlns="urn:ietf:params:xml:ns:yang:ietf-ucpe">
      <name>ucpe1</name>
      <links>
        <link>l1</link>
      </links>
      <links>
        <link>l2</link>
      </links>
      <links>
        <link>l3</link>
      </links>
      <links>
        <link>l4</link>
      </links>
      <switches>
        <switch>lan</switch>
        <ports>
          <port>10</port>
          <name>l2p10</name>
          <link>l2</link>
        </ports>
      </switches>
      <switches>
        <switch>service</switch>
        <ports>
          <port>10</port>
          <name>l3p10</name>
          <link>l3</link>
        </ports>
        <ports>
          <port>11</port>
          <name>l4p10</name>
          <link>l4</link>
        </ports>
      </switches>
      <switches>
        <switch>wan</switch>
        <ports>
          <port>10</port>
          <link>l1</link>
        </ports>
      </switches>
      <vms>
        <vm>VNF-vRtr</vm>
        <ports>
          <port>1</port>
          <name>l1p1</name>
          <link>l1</link>
        </ports>
        <ports>
          <port>2</port>
          <name>l4p2</name>
          <link>l4</link>
        </ports>
        <ram>2048</ram>
        <cpu>2</cpu>
        <storages>
          <id>1</id>
          <location>http://192.168.2.1/vRtr-x86.qcow2</location>
        </storages>
        <day0-config>
          <location>https://192.168.2.1/vRtr-day0.iso</location>
          <day0-var-path>/config.rom</day0-var-path>
          <variable>
            <name>hostname</name>
            <value>IETF-vRtr</value>
          </variable>
          <variable>
            <name>ipaddress</name>
            <value>192.168.1.2 255.255.255.0</value>
          </variable>
        </day0-config>
      </vms>
      <vms>
        <vm>VNF-vFirewall</vm>
        <ports>
          <port>1</port>
          <name>l3p1</name>
          <link>l3</link>
        </ports>
        <ports>
          <port>2</port>
          <name>l2p2</name>
          <link>l2</link>
        </ports>
        <ram>2048</ram>
        <cpu>2</cpu>
        <storages>
          <id>1</id>
          <location>http://192.168.2.1/vFirewall-x86.qcow2</location>
        </storages>
        <day0-config>
          <location>https://192.168.2.1/vFirewall-day0.iso</location>
          <day0-var-path>/config.rom</day0-var-path>
          <variable>
            <name>hostname</name>
            <value>vFirewall</value>
          </variable>
          <variable>
            <name>ipaddress</name>
            <value>192.168.1.3 255.255.255.0</value>
          </variable>
        </day0-config>
      </vms>
    </ucpe>
        ]]>
          </artwork>
        </figure> 
      </t>
    </section>

     
  </back>
</rfc>
