<?xml version="1.0" encoding="iso-8859-1"?>
<!--
     vim: set softtabstop=2 shiftwidth=2 expandtab
     version=20150108
-->
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc strict="no" ?>
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC3444 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3444.xml">
<!ENTITY RFC4741 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4741.xml">
<!ENTITY RFC6020 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6020.xml">
<!ENTITY RFC7223 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7223.xml">
<!ENTITY RFC7407 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7407.xml">
<!ENTITY RFC7426 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7426.xml">
<!ENTITY RFC7491 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7491.xml">
]>
<rfc category="info" docName="draft-wu-opsawg-service-model-explained-00"
     ipr="trust200902">
  <front>
    <title abbrev="Service Models Explained">Service Models Explained</title>

    <author fullname="Qin Wu" initials="Q." surname="Wu">
      <organization>Huawei Technologies</organization>

      <address>
        <email>bill.wu@huawei.com</email>
      </address>
    </author>

    <author fullname="Will Liu" initials="W." surname="Liu">
      <organization>Huawei Technologies</organization>

      <address>
        <email>liushucheng@huawei.com</email>
      </address>
    </author>

    <author fullname="Adrian Farrel" initials="A." surname="Farrel">
      <organization>Juniper Networks</organization>

      <address>
        <email>adrian@olddog.co.uk</email>
      </address>
    </author>

    <date year="2016"/>

    <area>Operations and Management</area>

    <workgroup>OPS Area Working Group</workgroup>

    <keyword>YANG</keyword>

    <keyword>NETCONF</keyword>

    <keyword>Data Model</keyword>

    <keyword>SDN</keyword>

    <abstract>
      <t>The IETF has produced a considerable number of data models in the
      YANG modelling language. The majority of these are used to model devices
      and they allow access for configuration and to read operational
      status.</t>

      <t>A small number of YANG models are used to model services (for
      example, the Layer Three Virtual Private Network Service Model produced
      by the L3SM working group).</t>

      <t>This document briefly sets out the scope of and purpose of an IETF
      service model, and it shows where a service model might fit into a
      Software Defined Networking architecture or deployment.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="introduction" title="Introduction">
      <t>In recent years the number of data models written in the YANG
      modelling langauge <xref target="RFC6020"/> for configuration and
      monitoring has blossomed. Many of these are used for device-level
      configuration (for example, <xref target="RFC7223"/>) or for control of
      protocols (for example, <xref target="RFC7407"/>).</t>

      <t>Within the context of Software Defined Networking (SDN) <xref
      target="RFC7426"/> YANG data models may be used on Southbound Interfaces
      (SBIs) between a controller and network devices, and between network
      orchestrators and controllers.</t>

      <t>Recently there has been interest in using YANG to define and document
      data models that describe services in a portable way that is independent
      of which network operator uses the model. These models may be used in
      manual and even paper-driven service request processes moving to
      IT-based mechanisms. Ultimately they could be used in online,
      software-driven dynamic systems.</t>

      <t>This document explains the scope and purpose of service models within
      the IETF and describes how a service model can be used by a network
      operator. Equally, this document clarifies what a service model is not,
      and dispells some common misconceptions.</t>
    </section>

    <section anchor="terms" title="Terms and Concepts">
      <t>The following terms are used in this document: <list style="hanging">
          <t hangText="Network Operator:">This term is used interchangeably to
          refer to the company that owns a network that provides Internet
          connectivity and services, or the individual who performs operations
          and management on that network.</t>

          <t hangText="Customer:">Someone who purchases connectivity and other
          services from a network operator. In the context of this document, a
          customer is usually the company that runs their own network or
          computing platforms and wishes to connect to the Internet or between
          sites. Such a customer may operate an enterprise network or a data
          center. Sometimes this term may also be used to refer to the
          individual in such a company who contracts to buy services from a
          network operator. A customer as described here is a separate
          commercial operation from the network operator, but some companies
          may operate with internal customers so that, for example, an IP/MPLS
          packet network is the customer of an optical transport network.</t>

          <t hangText="Service:">A network operator delivers one or more
          services to a customer. A service is some form of connectivity
          between customer sites and the Internet or between customer sites
          across the network operator's network and across the Internet. A
          service may be limited to simple connectivity (such as IP-based
          Internet access), may be a tunnel (such as a virtual circuit), or
          may be a more complex connectivity model (such as a multi-site
          virtual private network). Services may be further enhanced by
          additional functions providing security, load-balancing, accounting,
          and so forth. Additionally, services usually include guarantees of
          quality, throughput, and fault reporting.</t>

          <t hangText="Data Model:">The concepts of information models and
          data models are described in <xref target="RFC3444"/>. That document
          defines a data model by contrasting it with the definition of an
          information model, so it may be helpful to quote some text to give
          context within this document.</t>
        </list></t>

      <t><list style="empty">
          <t><list style="empty">
              <t>The main purpose of an information model is to model managed
              objects at a conceptual level, independent of any specific
              implementations or protocols used to transport the data. The
              degree of specificity (or detail) of the abstractions defined in
              the information model depends on the modeling needs of its
              designers. In order to make the overall design as clear as
              possible, an information model should hide all protocol and
              implementation details. Another important characteristic of an
              information model is that it defines relationships between
              managed objects.</t>

              <t>Data models, conversely, are defined at a lower level of
              abstraction and include many details. They are intended for
              implementors and include protocol-specific constructs.</t>
            </list></t>
        </list></t>

      <t><list style="hanging">
          <t hangText="Service Model:">A service model is a specific type of
          data model. It describes a service and all of the parameters of the
          service in a portable, operator-independent way. It can be used by a
          human or by software to configure or request a service and may
          equally be consumed by a human or by a software component.</t>
        </list></t>

      <t>It needs to be repeatedly clarified that a service model is not a
      data model used to directly configure network devices, protocols, or
      functions: it is not something that is sent to network devices (i.e.,
      routers or switches) for processing. Equally, a service model is not a
      data model that describes how a network operator realizes and delivers
      the service described by the model. This issue is discussed further in
      later sections.</t>
    </section>

    <section anchor="usage" title="Using Service Models">
      <t>As already indicated, service models are used on the interface
      between customers and network operators. This is simply shown in <xref
      target="ref_model"/></t>

      <t>The language in which a service model is described is a choice for
      whoever specifies the model. The IETF uses the YANG data modeling
      language defined in <xref target="RFC6020"/></t>

      <t>The encoding and communication protocol used to exchange a service
      model between customer and network operator are deployment- and
      implementation-specific. The IETF recommends the use of the NETCONF
      Configuration Protocol <xref target="RFC4741"/> with data encoded in XML
      or JSON for interactions "on the wire" between software components.
      However, co-located software components might use an API, while systems
      with more direct huan interactions might use web pages or even paper
      forms.</t>

      <figure anchor="ref_model"
              title="Service Models used on the Interface between Customers and Network Operators">
        <artwork>
         
             --------------                       ----------------------
            |              |    Service Model    |                      |
            |   Customer   | &lt;-----------------&gt; |   Network Operator   |
            |              |                     |                      |
             --------------                       ----------------------
         
       </artwork>
      </figure>

      <t>How a network operator processes a service request described be a
      service model will depend on the commercial and operational tools,
      processes, and policies used by the operator. These may vary
      considerably from one network operator to another.</t>

      <t>However, the intent is that the network operator maps the service
      request into configuration and operational parameters that control one
      or more network to deliver the requested services. That means that the
      network operator (or software run by the network operator) takes the
      information in the service model and determines how to deliver the
      service by enabling and configuring network protocols and devices.</t>
    </section>

    <section anchor="sdn" title="Service Models in an SDN Context">
      <t>In an SDN system, the control and configuration of network resources
      and protocols is performed by software systems that determine how best
      to utilize the network. <xref target="sdn_arch"/> shows common
      architectural view of an SDN system where network elements are
      programmed by a component called a Controller, and where Controllers are
      instructed by an Orchestrator that has a wider view of the whole of, or
      part of, a network.</t>

      <figure anchor="sdn_arch" title="A Common SDN Architecture">
        <artwork>
         
                         ------------------
                        |                  |
                        |   Orchestrator   |
                        |                  |
                        .------------------.
                       .          :         .
                      .           :          .
           ------------     ------------     ------------
          |            |   |            |   |            |
          | Controller |   | Controller |   | Controller |
          |            |   |            |   |            |
           ------------     ------------     ------------
              :              .       .               :
              :             .         .              :
              :            .           .             :
          ---------     ---------   ---------     ---------
         | Network |   | Network | | Network |   | Network |
         | Element |   | Element | | Element |   | Element |
          ---------     ---------   ---------     ---------
         
       </artwork>
      </figure>

      <t>But a service request is (or should be) network-agnostic. That is,
      there should be an independence between the behavior and unctions that a
      customer requests and the technology that the network operator has
      available to deliver the service. This means that the service request
      must be mapped to the Orchestrator's view, and this mapping may include
      a choice of which networks to use depending on what technologies are
      available and which service features have been requested.</t>

      <t>This mapping can be achieved by splitting the orchestration function
      between a "Service Orchestrator" and a "Network Orchestrator" as shown
      in <xref target="svc_arch"/>. In a system that is fully implemented in
      software, this could lead to agile service delivery or service
      automation.</t>

      <figure anchor="svc_arch"
              title="An SDN Architecture with a Service Orchestrator">
        <artwork>
         
                              ------------------                   ----------
                             |                  |  Service Model  |          |
                             |     Service      |&lt;---------------&gt;| Customer |
                             |   Orchestrator   |                 |          |
                             |                  |                  ----------
                             .------------------.
                            .                    .
                           .                      .
                   ------------------    ------------------
                  |                  |  |                  |
                  |     Network      |  |     Network      |
                  |   Orchestrator   |  |   Orchestrator   |
                  |                  |  |                  |
                  .------------------    ------------------.
                 .           :                   :          .
                .            :                   :           .
        ------------     ------------     ------------    ------------
       |            |   |            |   |            |  |            |
       | Controller |   | Controller |   | Controller |  | Controller |
       |            |   |            |   |            |  |            |
        ------------     ------------     ------------    ------------
           :              .       .               :               :
           :             .         .              :               :
           :            .           .             :               :
       ---------     ---------   ---------     ---------      ---------
      | Network |   | Network | | Network |   | Network |    | Network |
      | Element |   | Element | | Element |   | Element |    | Element |
       ---------     ---------   ---------     ---------      ---------
         
       </artwork>
      </figure>

      <t>The split between control components that exposes a "service
      interface" is present in many figures showing extended SDN
      architectures: <list style="symbols">
          <t>Figure 1 of <xref target="RFC7426"/> shows a separation of the
          "Application Plane", the "Network Services Abstraction Layer
          (NSAL)", and the "Control Plane". It marks the "Service Interface"
          as situated between the NSAL and the Control Plane.</t>

          <t><xref target="RFC7491"/> describes an interface between an
          "Application Service Coordinator" and an "Application-Based Network
          Operations Controller".</t>
        </list></t>
    </section>

    <section anchor="confused" title="Possible Causes of Confusion">
      <t>In discussing service models, there are several possible causes of
      confusion: <list style="symbols">
          <t>The services we are discussing are services provided by network
          operators to customers. This is a completely different thing to "Foo
          as a Service" (for example, Infrastructure as a Service (IaaS))
          where a service provider offers a service at some location that is
          reached across a network. The confusion arises not only because of
          the use of the word "service", but also because network operators
          may also offer value-added services to their customers.</t>

          <t>Network operation is completely out of scope in the discussion of
          service models. That means that the service model does not reveal to
          the customer anything about how the network operator delivers the
          service. The model does not expose details of technology or network
          resources used to provide the service. For example, in the simple
          case of point-to-point virtual link connectivity provided by a
          network tunnel (such as an MPLS pseudowire) the network operator
          does not expose the path through the network followed by the tunnel.
          Of course, this does not preclude the network operator from taking
          guidance from the customer (such as to avoid routing traffic through
          a particular country) or from disclosing specific details (such as
          might be revealed by a route trace), but these are not standard
          features of the service as described in te service model.</t>

          <t>The network operator may use further data models that help to
          describe how the service is realized in the network. These models
          might be used on the interface between the Service Orchestrator and
          the Network Orchestrator as shown in <xref target="svc_arch"/> and
          might include many of the pieces of information in the service model
          alongside protocol parameters and device configuratin information.
          It is important that the Service Orchestrator should be able to map
          from a service model to these data models, but they are not the same
          things.</t>

          <t>Commercial terms are generally not a good subject for
          standardization. It is possible that some network operators will
          enhance standard service models to include commercial information,
          but the way this is done is likely to vary widely between network
          operators.</t>

          <t>Service Level Agreements (SLAs) have a high degree of overlap
          with the definition of sevices present in service models. Requests
          for specific bandwidth, for example, might be present in a service
          model, and agreement to deliver a service is a commitment to the
          description of the service in the service model, however, SLAs
          typically include a number of fine-grained details about how
          services are allowed to vary, by how much, and how often. SLAs are
          also linked to commercial terms with penalties and so forth, and so
          are also not good topics for standardization.</t>
        </list></t>
    </section>

    <section anchor="more" title="Further Concepts">
      <t>This section introduces a few further, more advanced concepts</t>

      <section anchor="agnostic" title="Technology Agnostic">
        <t>Service models should generally be technology agnostic. That is to
        say, the customer should not care how the service is provided so long
        as the service is delivered.</t>

        <t>However, some technologies reach the customer site and make a
        definition to the type of service delivered. Such features do need to
        be described in the service model.</t>

        <t>Two examples are: <list style="symbols">
            <t>The data passed between customer equipment and network operator
            equipment will be encapsulated in a specific way, and that data
            plane type forms part of the service.</t>

            <t>Protocols that are run between customer equipment and network
            operator equipment (for example, Operations, Administration, and
            Maintenance protocols, or protocols for exchanging routing
            information) need to be selected and configured as part of the
            service description.</t>
          </list></t>
      </section>

      <section anchor="policy" title="Relationship to Policy">
        <t>Policy appears as a crucial function in many places during network
        orchestration. A service orchestrator will, for example, apply the
        network operator's policies to determine how to provide a service for
        a particular customer (possibly considering commercial terms).
        However, the policies within a service model are limited to those over
        which a customer has direct influence, but which are acted on by the
        network operator.</t>

        <t>The policies that express desired behavior of services on
        occurrence of specific events are close to SLA definitions: they
        should only be included in the base service model where they are
        common to all network operators' offerings. Policies that describe who
        at a customer may request or modify services (that is, authorization)
        are close to commercial terms: they, too, should only be included in
        the base service model where they are common to all network operators'
        offerings.</t>

        <t>Nevertheless, policy is so important that all service models should
        be designed to be easily extensible to allow policy components to be
        added and associated with services as needed.</t>
      </section>

      <section anchor="specifics" title="Operator-Specific Features">
        <t>When work in Layer Three Virtual Private Network Service Model
        (L3SM) ws started, there was some doubt as to whether network
        operators would be able to agree on a common description of the
        services that they offer to their customers because, in a competitive
        environment, each markets the services in a different way with
        different additional features. Thus, when a basic description of the
        core service is agreed and documented in a service model, it is
        important that that model should be easily extended or augmented by
        each network operator so that the standardized model can be used in a
        common way and only the operator- specific features vary from one
        environment to another.</t>
      </section>

      <section anchor="multiplicity" title="Supporting Multiple Services">
        <t>Network operators will, in general, offer many different services
        to their customers. Each would normally be the subject of a separate
        service model.</t>

        <t>It is an implementation and deployment choice whether all service
        models are processed by a single Service Orchestrator that can
        coordinate between the different services, or whether each service
        model is handled by a specialized Service Orchestrator able to provide
        tuned behavior for a specific service.</t>
      </section>
    </section>

    <section anchor="security" title="Security Considerations">
      <t>TBD</t>
    </section>

    <section anchor="manageability" title="Manageability Considerations">
      <t>TBD</t>
    </section>

    <section anchor="iana" title="IANA Considerations">
      <t>This document makes no requests for IANA action</t>
    </section>

    <section anchor="acks" title="Acknowledgements">
      <t>Thanks to Daniel King for review comments.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      &RFC3444;

      &RFC7426;
    </references>

    <references title="Informative References">
      &RFC4741;

      &RFC6020;

      &RFC7223;

      &RFC7407;

      &RFC7491;
    </references>
  </back>
</rfc>
