One document matched: draft-scharf-alto-yang-00.xml
<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt'?>
<?rfc toc="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc iprnotified="no"?>
<?rfc strict="no"?>
<?rfc compact="no"?>
<?rfc subcompact="no"?>
<rfc category="std" docName="draft-scharf-alto-yang-00" ipr="trust200902">
<front>
<title abbrev="ALTO Extension for YANG">ALTO Extension for YANG Modules</title>
<author fullname="Michael Scharf" initials="M." surname="Scharf">
<organization abbrev="Alcatel-Lucent Bell Labs">Alcatel-Lucent Bell Labs</organization>
<address>
<postal>
<street>Lorenzstrasse 10</street>
<code>70435</code>
<city>Stuttgart</city>
<country>Germany</country>
</postal>
<email>michael.scharf@alcatel-lucent.com</email>
</address>
</author>
<date year="2014" />
<area>Transport</area>
<workgroup>ALTO WG</workgroup>
<keyword>ALTO</keyword>
<keyword>YANG</keyword>
<abstract>
<t>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.</t>
</abstract>
</front>
<middle>
<section title="Introduction">
<t>The Application-Layer Traffic Optimization (ALTO) protocol
<xref target="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 <xref
target="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.</t>
<t>The ALTO protocol is designed to be extensible, and several
protocols extensions have been suggested, including for
instance <xref target="I-D.roome-alto-pid-properties"/> or
<xref target="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
<xref target="RFC6020"/> as data modeling language.</t>
<t>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.</t>
</section>
<section title="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"/>.</t>
</section>
<section title="ALTO Network Topology Exposure vs. Network Configuration">
<t>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.</t>
<t>Given the focus on topology exposure to guidance, there are
several differences between ALTO and other protocols used for
network management, such as SNMP <xref target="RFC3411"></xref>
or NETCONF <xref target="RFC6241"></xref>:</t>
<t><list style="symbols">
<t>Specialization: ALTO is an optimized protocol focused on
exposing network topology data. This is different to
general-purpose protocols.</t>
<t>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.</t>
<t>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.</t>
<t>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).</t>
<t>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.</t>
<t>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.</t>
</list></t>
<t>These aspects are also detailed in <xref
target="I-D.ietf-alto-deployments"/>.</t>
<t>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).</t>
</section>
<section title="Benefits of Using YANG Data Models">
<t>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 <xref
target="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.</t>
<t>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 <xref target="RFC6020"/>,
it could optionally also expose that data to ALTO clients,
provided that the aforementioned restrictions are taken into
account.</t>
<t>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.</t>
<t>As a specific example, an ALTO server may have access to
interface statistics for endpoints in the network, using the
YANG module "ietf-interfaces" <xref target="RFC7223"/>, and it
may use these statistics to e.g. to calculate network and cost
maps. If an ALTO client would 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 <xref
target="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.</t>
</section>
<section title="Extending ALTO to Support YANG Modules">
<t>This section specifies how an ALTO server can announce the
support of additional, optional services defined by YANG
modules.</t>
<section title="ALTO Information Resource Directory">
<t>According <xref target="I-D.ietf-alto-protocol"/>, objects in
the ALTO Information Resource Directory (IRD) have the following
format:</t>
<t><figure><artwork><![CDATA[
object {
JSONString uri;
JSONString media-type;
[JSONString accepts;]
[Capabilities capabilities;]
[ResourceID uses<0..*>;]
} IRDResourceEntry;
]]></artwork></figure></t>
<t>The extension in this document use this format and defines
the following setting of these objects:</t>
<t><list style="symbols">
<t>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 <xref
target="I-D.ietf-alto-protocol"/>). This extension uses the
URI to refer to data described in YANG modules.</t>
<t>media-type: The media type that is to be used by GET (or
POST) requests to the corresponding URI. This is further
detailed below.</t>
<t>accepts: This optional parameter can also be set if
required, as described in <xref
target="I-D.ietf-alto-protocol"/>.</t>
<t>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.</t>
<t>uses: The setting of this parameter is for further
study. According to <xref target="I-D.ietf-alto-protocol"/>,
this setting can be used to 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.</t>
</list></t>
<t>An example of a corresponding ALTO Information Resource
Directory entry would be:</t>
<t><figure><artwork><![CDATA[
...
"my-own-map-data" : {
"uri" :
"http://alto.example.com/restconf/data/my-own-map-data",
"media-type" : "application/yang.data+json",
"capabilities" : {
"yang" : true
}
},
...
]]></artwork></figure></t>
</section>
<section title="JSON Encoding">
<t>The ALTO protocol uses a REST-ful design and encodes its
requests and responses using JSON <xref target="RFC4627"/>.
Therefore, all data returned using this specification MUST be
encoded in JSON.</t>
<t><xref target="I-D.ietf-netmod-yang-json"/> defines rules
for representing data defined using YANG as JSON text.</t>
</section>
<section title="YANG Data Model Assumptions">
<t>YANG can model configuration data as well as state data.
The latter is marked by the "config false" statement <xref
target="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.</t>
<t>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.</t>
<t>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 ways to ensure
read-only access, e.g., by appropriate selection of the
URI.</t>
<t>Any write access by a client using the information in the
ALTO IRD is outside the scope of this memo.</t>
<t>This document does not cover notifications. The handling of
"notifications" in a YANG module is therefore outside the
scope of the document.</t>
<t>The handling of "rpc" statements in a YANG module is for
further study.</t>
</section>
<section title="Media Type">
<t>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.</t>
<t>An example media type could be "application/yang.data+json"
as defined in <xref target="I-D.ietf-netconf-restconf"/>.</t>
</section>
<section title="Accessing the URI">
<t>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.</t>
<t>One approach to retrieve additional data described by a
YANG model would be RESTCONF <xref
target="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
<xref target="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 <xref
target="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.</t>
<t>In a simpler variant, an ALTO server would just return the
complete tree of state data encoded in JSON <xref
target="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 all
available data without fine-grained query access. Details of
this mode are for further study.</t>
</section>
</section>
<section title="Example">
<t>In the following, we illustrate the mechanism described in
this document with a simple example.</t>
<t>The initial query of an ALTO client to an ALTO server's IRD
could be:</t>
<t><figure><artwork><![CDATA[
GET /directory HTTP/1.1
Host: alto.example.com
Accept: application/alto-directory+json,
application/alto-error+json
]]></artwork></figure></t>
<t>The server would then return the supported ALTO services,
including the one specified in this document:</t>
<t><figure><artwork><![CDATA[
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
}
},
...
}
}
]]></artwork></figure></t>
<t>Since the media type refers to <xref
target="I-D.ietf-netconf-restconf"/>, a follow-up query of
the ALTO client supporting this protocol could be:</t>
<t><figure><artwork><![CDATA[
GET /restconf/data/my-own-map-data HTTP/1.1
Host: alto.example.com
Accept: application/yang.data+json
]]></artwork></figure></t>
<t>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:</t>
<t><figure><artwork><![CDATA[
module my-own-map-data {
...
container my-own-map-data {
config false;
list pid-list {
key pid;
leaf pid {
type string;
}
}
}
...
}
]]></artwork></figure></t>
<t>Then, the server response could be:</t>
<t><figure><artwork><![CDATA[
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",
}
]
}
}
]]></artwork></figure></t>
<t>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.</t>
</section>
<section title="IANA Considerations">
<t>TBD</t>
</section>
<section title="Security Considerations">
<t>This document descibes read-only access to data optionally
announced by an ALTO server. The security considerations of the
ALTO protocol as detailed in <xref
target="I-D.ietf-alto-protocol"/> and <xref
target="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.</t>
</section>
<section title="Conclusion">
<t>TBD</t>
</section>
</middle>
<back>
<references title="Normative References">
<?rfc include="reference.RFC.2119"?>
<?rfc include="reference.RFC.4627"?>
<?rfc include="reference.RFC.6020"?>
<?rfc include="reference.I-D.ietf-alto-protocol"?>
<?rfc include="reference.I-D.ietf-netmod-yang-json"?>
<?rfc include="reference.I-D.ietf-netconf-restconf"?>
</references>
<references title="Informative References">
<?rfc include="reference.RFC.3411"?>
<?rfc include="reference.RFC.6241"?>
<?rfc include="reference.RFC.7223"?>
<?rfc include="reference.I-D.roome-alto-pid-properties"?>
<?rfc include="reference.I-D.randriamasy-alto-multi-cost"?>
<?rfc include="reference.I-D.ietf-alto-deployments"?>
</references>
</back>
</rfc>
| PAFTECH AB 2003-2026 | 2026-04-24 02:44:00 |