Internet DRAFT - draft-scharf-alto-yang

draft-scharf-alto-yang







ALTO WG                                                        M. Scharf
Internet-Draft                                  Alcatel-Lucent Bell Labs
Intended status: Standards Track                            July 4, 2014
Expires: January 5, 2015


                    ALTO Extension for YANG Modules
                       draft-scharf-alto-yang-00

Abstract

   The Application-Layer Traffic Optimization (ALTO) protocol is
   designed to expose network topology information to applications.  The
   ALTO protocol includes a well-defined set of base services.  This
   document specifies an optional ALTO extension that enables ALTO
   clients to discover and query additional data being defined by YANG
   modules.  This document describes the corresponding extensions of the
   ALTO Information Resource Directory and other required mechanisms.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at http://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on January 5, 2015.

Copyright Notice

   Copyright (c) 2014 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of



Scharf                   Expires January 5, 2015                [Page 1]

Internet-Draft           ALTO Extension for YANG               July 2014


   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Terminology . . . . . . . . . . . . . . . . . . . . . . . . .   3
   3.  ALTO Network Topology Exposure vs. Network Configuration  . .   3
   4.  Benefits of Using YANG Data Models  . . . . . . . . . . . . .   4
   5.  Extending ALTO to Support YANG Modules  . . . . . . . . . . .   5
     5.1.  ALTO Information Resource Directory . . . . . . . . . . .   5
     5.2.  JSON Encoding . . . . . . . . . . . . . . . . . . . . . .   6
     5.3.  YANG Data Model Assumptions . . . . . . . . . . . . . . .   6
     5.4.  Media Type  . . . . . . . . . . . . . . . . . . . . . . .   7
     5.5.  Accessing the URI . . . . . . . . . . . . . . . . . . . .   7
   6.  Example . . . . . . . . . . . . . . . . . . . . . . . . . . .   8
   7.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  10
   8.  Security Considerations . . . . . . . . . . . . . . . . . . .  10
   9.  Conclusion  . . . . . . . . . . . . . . . . . . . . . . . . .  10
   10. References  . . . . . . . . . . . . . . . . . . . . . . . . .  10
     10.1.  Normative References . . . . . . . . . . . . . . . . . .  10
     10.2.  Informative References . . . . . . . . . . . . . . . . .  11
   Author's Address  . . . . . . . . . . . . . . . . . . . . . . . .  11

1.  Introduction

   The Application-Layer Traffic Optimization (ALTO) protocol
   [I-D.ietf-alto-protocol] is designed to expose network topology
   information to applications.  The ALTO Information Resource Directory
   (IRD) of an ALTO server describes the services supported by an ALTO
   server and corresponding attributes.  As defined in
   [I-D.ietf-alto-protocol], each information resource has several
   associated attributes, including an assigned identifier, a response
   format, capabilities, accepted input parameters, and other resources
   that it may depend on.  Prior to obtaining ALTO guidance, ALTO client
   may retrieve the Information Resource Directory from the ALTO server
   to determine the attributes of individual information resources that
   this ALTO Server provides.

   The ALTO protocol is designed to be extensible, and several protocols
   extensions have been suggested, including for instance
   [I-D.roome-alto-pid-properties] or [I-D.randriamasy-alto-multi-cost].
   In addition to such extensions of the ALTO protocol, an ALTO server
   may be willing to offer additional network information and guidance
   beyond the base functionality of the ALTO protocol.  In this case,
   one option is to specify the offered guidance using YANG [RFC6020] as
   data modeling language.




Scharf                   Expires January 5, 2015                [Page 2]

Internet-Draft           ALTO Extension for YANG               July 2014


   This document specifies an optional ALTO extension that enables ALTO
   clients to discover and query additional data offered by an ALTO
   server, being defined by YANG modules.  This document describes the
   corresponding extensions of the ALTO Information Resource Directory
   and other required mechanisms.

2.  Terminology

   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 [RFC2119].

3.  ALTO Network Topology Exposure vs. Network Configuration

   ALTO is designed as a protocol between clients integrated in
   applications and servers that provide network information and
   guidance (e.g., basic network location structure and preferences of
   network paths).  The objective is to modify network resource
   consumption patterns at application level while maintaining or
   improving application performance.  The basic information of ALTO is
   based on an abstract representation of the network as it matters to
   applications at endpoints.

   Given the focus on topology exposure to guidance, there are several
   differences between ALTO and other protocols used for network
   management, such as SNMP [RFC3411] or NETCONF [RFC6241]:

   o  Specialization: ALTO is an optimized protocol focused on exposing
      network topology data.  This is different to general-purpose
      protocols.

   o  Read-only: ALTO is a query/response protocol to retrieve data.
      Neither ALTO network/cost map queries nor queries to the ALTO
      endpoint property or cost services are designed to affect state in
      the ALTO server or in the ALTO client.  Network management
      protocols are typically designed to manipulate the configuration
      of network devices.

   o  Trust model: The ALTO protocol has been designed for use cases
      where the ALTO server and client can be located in different
      organizations or trust domains.  Network configuration will
      require a much stronger security model.

   o  Non-NMS applications: ALTO is designed for applications that
      perform resource selections among endpoints, e.g., in an
      application overlay.  Such applications are typically not part of
      an Element Management System (EMS) or Network Management System
      (NMS).



Scharf                   Expires January 5, 2015                [Page 3]

Internet-Draft           ALTO Extension for YANG               July 2014


   o  A priori knowledge: ALTO does not assume that an ALTO client has
      any a priori knowledge about the ALTO server and its supported
      features.  An ALTO server can be discovered automatically.  In
      network management, there is often a need for explicit
      configuration, e.g., of security credentials.

   o  Terminology: In ALTO, the application is running a client, while
      the network offers a service by means of a server.  SNMP would use
      the terms manager and agent for these entities, and NETCONF may
      use the terms server and client in the opposite way.  This
      reflects the different usage patterns.

   These aspects are also detailed in [I-D.ietf-alto-deployments].

   The same differences also apply to control plane protocols designed
   to configure state on network elements, such as components of a Path
   Computation Element (PCE) architecture or an Interface to the Routing
   System (I2RS).

4.  Benefits of Using YANG Data Models

   Despite different use cases, ALTO clients could use a limited set of
   functions originally designed for network management, including
   protocol functions for read-only retrieval of data.  For instance, an
   ALTO server may use network monitoring data or Operations,
   Administration, and Maintenance (OAM) measurement results as data
   sources [I-D.ietf-alto-deployments], and that data could originate
   from Network Management Systems (NMS).  If permitted by privacy
   policies, an ALTO server could be willing to optionally expose such
   input data used by the ALTO service to ALTO clients.

   In that case, a straightforward solution is to transform that input
   data into a format supported by ALTO, e.g., network and cost maps
   with additional cost metrics.  Yet, if the ALTO server already
   queries data specified in YANG [RFC6020], it could optionally also
   expose that data to ALTO clients, provided that the aforementioned
   restrictions are taken into account.

   Support of YANG modules would be a simple way for an ALTO server to
   offer optional, additional services, e.g., to access monitoring data.
   A data model described in YANG could enable an ALTO client to easily
   determine the type of additional data exposed by ALTO, since a YANG
   module specifies the corresponding syntax.

   As a specific example, an ALTO server may have access to interface
   statistics for endpoints in the network, using the YANG module "ietf-
   interfaces" [RFC7223], and it may use these statistics to e.g. to
   calculate network and cost maps.  If an ALTO client would



Scharf                   Expires January 5, 2015                [Page 4]

Internet-Draft           ALTO Extension for YANG               July 2014


   specifically be interested in counter metrics such as "out-errors",
   the ALTO server could obviously expose this by ALTO, e.g., as several
   cost maps or as an endpoint/PID property
   [I-D.roome-alto-pid-properties].  An alternative approach would be
   that the ALTO server natively exposes that data in a YANG-based
   format.  This requires a solution to support YANG modules in ALTO.

5.  Extending ALTO to Support YANG Modules

   This section specifies how an ALTO server can announce the support of
   additional, optional services defined by YANG modules.

5.1.  ALTO Information Resource Directory

   According [I-D.ietf-alto-protocol], objects in the ALTO Information
   Resource Directory (IRD) have the following format:

     object {
       JSONString      uri;
       JSONString      media-type;
       [JSONString     accepts;]
       [Capabilities   capabilities;]
       [ResourceID     uses<0..*>;]
     } IRDResourceEntry;

   The extension in this document use this format and defines the
   following setting of these objects:

   o  uri: A URI at which the data is provided.  This can both be an URI
      at the ALTO server, or it can delegate to another server
      (Section 9.2.4 of [I-D.ietf-alto-protocol]).  This extension uses
      the URI to refer to data described in YANG modules.

   o  media-type: The media type that is to be used by GET (or POST)
      requests to the corresponding URI.  This is further detailed
      below.

   o  accepts: This optional parameter can also be set if required, as
      described in [I-D.ietf-alto-protocol].

   o  capabilities: Capabilities are optional.  A server MAY announce
      the use of YANG as data modeling language for certain resources as
      a capability ("yang" : true), if this is not already implied by
      the media-type.  Further capabilities might be used to describe
      the YANG modules, but this is TBD.

   o  uses: The setting of this parameter is for further study.
      According to [I-D.ietf-alto-protocol], this setting can be used to



Scharf                   Expires January 5, 2015                [Page 5]

Internet-Draft           ALTO Extension for YANG               July 2014


      define other resources on which this resource directly depends.
      As a result, it could for instance be used to refer to ALTO cost
      maps that are related to the data described in this resource
      refering to YANG modules.

   An example of a corresponding ALTO Information Resource Directory
   entry would be:

     ...
     "my-own-map-data" : {
       "uri" :
         "http://alto.example.com/restconf/data/my-own-map-data",
       "media-type" : "application/yang.data+json",
       "capabilities" : {
         "yang" : true
       }
     },
     ...

5.2.  JSON Encoding

   The ALTO protocol uses a REST-ful design and encodes its requests and
   responses using JSON [RFC4627].  Therefore, all data returned using
   this specification MUST be encoded in JSON.

   [I-D.ietf-netmod-yang-json] defines rules for representing data
   defined using YANG as JSON text.

5.3.  YANG Data Model Assumptions

   YANG can model configuration data as well as state data.  The latter
   is marked by the "config false" statement [RFC6020].  State data on a
   system is no configuration data and cannot be changed, such as read-
   only status information and collected statistics.  When a node in a
   YANG module is tagged with "config false", its sub-hierarchy is
   flagged as state data as well.

   Since ALTO only offers read-only access to information, this document
   implicitly assumes that the URI announced by an ALTO server only
   exposes read-only data.  This document only describes how an ALTO
   client can discover the URI for additional data and learn now to
   retrieve data by a REST protocol from there; the actual communication
   and interpretation of data is outside the scope of this document.

   Read-only access can trivially be enforced if an ALTO server using
   the mechanism in this document only use YANG modules that contain
   state data only, i.e., all containers, lists, and leafs etc. are be
   covered by "config false" statements.  Alternatively, there could be



Scharf                   Expires January 5, 2015                [Page 6]

Internet-Draft           ALTO Extension for YANG               July 2014


   ways to ensure read-only access, e.g., by appropriate selection of
   the URI.

   Any write access by a client using the information in the ALTO IRD is
   outside the scope of this memo.

   This document does not cover notifications.  The handling of
   "notifications" in a YANG module is therefore outside the scope of
   the document.

   The handling of "rpc" statements in a YANG module is for further
   study.

5.4.  Media Type

   This document does not register additional media types.  An ALTO
   client SHOULD use the media type(s) defined in the ALTO IRD to access
   the URI, as detailed in the next section.

   An example media type could be "application/yang.data+json" as
   defined in [I-D.ietf-netconf-restconf].

5.5.  Accessing the URI

   The way to retrieve data from the URI returned by the ALTO IRD
   depends on the media type.  An ALTO client can determine from the
   media type whether it supports the method and whether optional data
   from an ALTO server can be retrieved.  This document describes an
   optional ALTO extension and does not mandate that an ALTO client
   supports any specific protocol.

   One approach to retrieve additional data described by a YANG model
   would be RESTCONF [I-D.ietf-netconf-restconf].  In this case, the
   ALTO IRD is basically used as a discovery mechanism for corresponding
   RESTCONF URIs.  For RESTCONF, the syntax of the URI, as well as the
   protocol for data retrieval is defined in
   [I-D.ietf-netconf-restconf].  For instance, a valid URI would be
   "http://alto.example.com/restconf/data/my-own-map-data", and a
   corresponding media type could be "application/yang.api".  If the URI
   points to the RESTCONF root, the client could also use other APIs as
   defined in [I-D.ietf-netconf-restconf], e.g., to retrieve the YANG
   module definition file.  The latter would enable an ALTO client to
   dynamically learn the YANG module definitions.

   In a simpler variant, an ALTO server would just return the complete
   tree of state data encoded in JSON [I-D.ietf-netmod-yang-json].  This
   could be sufficient for extensions equivalent to the current ALTO
   network and cost map services without filtering, which always return



Scharf                   Expires January 5, 2015                [Page 7]

Internet-Draft           ALTO Extension for YANG               July 2014


   all available data without fine-grained query access.  Details of
   this mode are for further study.

6.  Example

   In the following, we illustrate the mechanism described in this
   document with a simple example.

   The initial query of an ALTO client to an ALTO server's IRD could be:

     GET /directory HTTP/1.1
     Host: alto.example.com
     Accept: application/alto-directory+json,
             application/alto-error+json

   The server would then return the supported ALTO services, including
   the one specified in this document:

     HTTP/1.1 200 OK
     Content-Length: TBD
     Content-Type: application/alto-directory+json

     {
       "meta" : {
          ...
       },
       "resources" : {
          ...
          "my-own-map-data" : {
             "uri" :
               "http://alto.example.com/restconf/data/my-own-map-data",
             "media-type" : "application/yang.data+json",
             "capabilities" : {
               "yang" : true
             }
           },
          ...
       }
     }

   Since the media type refers to [I-D.ietf-netconf-restconf], a follow-
   up query of the ALTO client supporting this protocol could be:

     GET /restconf/data/my-own-map-data  HTTP/1.1
     Host: alto.example.com
     Accept: application/yang.data+json





Scharf                   Expires January 5, 2015                [Page 8]

Internet-Draft           ALTO Extension for YANG               July 2014


   The response of the server is outside the scope of this document and
   depends on the YANG data model accessed by that URI.  For instance,
   assume the following trivial model of an extension just giving a
   convenient list of the PIDs currently used by the ALTO server:

     module my-own-map-data {
       ...
       container my-own-map-data {
         config false;
         list pid-list {
           key pid;
           leaf pid {
             type string;
           }
         }
       }
       ...
     }

   Then, the server response could be:

     HTTP/1.1 200 OK
     Content-Length: TBD
     Content-Type: application/yang.data+json

     {
       "my-own-map-data" : {
         "pid-list" : [
           {
             "pid" : "PID1",
           },
           {
             "pid" : "PID2",
           },
           ...
           {
             "pid" : "PID9",
           }
         ]
       }
     }

   This is a trivial example, but the same principle is applicable to
   any YANG module.  Obviously, an ALTO client has to support processing
   of the corresponding YANG module (or modules) to make use of this
   extension.





Scharf                   Expires January 5, 2015                [Page 9]

Internet-Draft           ALTO Extension for YANG               July 2014


7.  IANA Considerations

   TBD

8.  Security Considerations

   This document descibes read-only access to data optionally announced
   by an ALTO server.  The security considerations of the ALTO protocol
   as detailed in [I-D.ietf-alto-protocol] and
   [I-D.ietf-alto-deployments] apply to the ALTO extension in this
   document.  Specifically, the operator of an ALTO server has to ensure
   that there is no unauthorized access to sensitive data.  This
   extension should not be used if there are privacy concerns.

9.  Conclusion

   TBD

10.  References

10.1.  Normative References

   [I-D.ietf-alto-protocol]
              Alimi, R., Penno, R., and Y. Yang, "ALTO Protocol", draft-
              ietf-alto-protocol-27 (work in progress), March 2014.

   [I-D.ietf-netconf-restconf]
              Bierman, A., Bjorklund, M., Watsen, K., and R. Fernando,
              "RESTCONF Protocol", draft-ietf-netconf-restconf-01 (work
              in progress), July 2014.

   [I-D.ietf-netmod-yang-json]
              Lhotka, L., "JSON Encoding of Data Modeled with YANG",
              draft-ietf-netmod-yang-json-00 (work in progress), April
              2014.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC4627]  Crockford, D., "The application/json Media Type for
              JavaScript Object Notation (JSON)", RFC 4627, July 2006.

   [RFC6020]  Bjorklund, M., "YANG - A Data Modeling Language for the
              Network Configuration Protocol (NETCONF)", RFC 6020,
              October 2010.






Scharf                   Expires January 5, 2015               [Page 10]

Internet-Draft           ALTO Extension for YANG               July 2014


10.2.  Informative References

   [I-D.ietf-alto-deployments]
              Stiemerling, M., Kiesel, S., Previdi, S., and M. Scharf,
              "ALTO Deployment Considerations", draft-ietf-alto-
              deployments-10 (work in progress), July 2014.

   [I-D.randriamasy-alto-multi-cost]
              Randriamasy, S., Roome, B., and N. Schwan, "Multi-Cost
              ALTO", draft-randriamasy-alto-multi-cost-07 (work in
              progress), October 2012.

   [I-D.roome-alto-pid-properties]
              Roome, W. and Y. Yang, "PID Property Extension for ALTO
              Protocol", draft-roome-alto-pid-properties-02 (work in
              progress), July 2014.

   [RFC3411]  Harrington, D., Presuhn, R., and B. Wijnen, "An
              Architecture for Describing Simple Network Management
              Protocol (SNMP) Management Frameworks", STD 62, RFC 3411,
              December 2002.

   [RFC6241]  Enns, R., Bjorklund, M., Schoenwaelder, J., and A.
              Bierman, "Network Configuration Protocol (NETCONF)", RFC
              6241, June 2011.

   [RFC7223]  Bjorklund, M., "A YANG Data Model for Interface
              Management", RFC 7223, May 2014.

Author's Address

   Michael Scharf
   Alcatel-Lucent Bell Labs
   Lorenzstrasse 10
   Stuttgart  70435
   Germany

   Email: michael.scharf@alcatel-lucent.com













Scharf                   Expires January 5, 2015               [Page 11]