Network Working Group | J. Schoenwaelder |
Internet-Draft | V. Bajpai |
Intended status: Standards Track | Jacobs University Bremen |
Expires: May 4, 2016 | November 1, 2015 |
Using RESTCONF with LMAP Measurement Agents
draft-ietf-lmap-restconf-01.txt
This document describes how RESTCONF can be used with a YANG data model for Large-Scale Measurement Platforms (LMAP).
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 May 4, 2016.
Copyright (c) 2015 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 the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
This document discusses how a Controller can use the RESTCONF protocol [I-D.ietf-netconf-restconf] to configure Large-Scale Measurement of Broadband Performance (LMAP) Measurement Agents [RFC7594]. It also discusses how RESTCONF can be used by a Measurement Agent to report measurement results to a Collector.
Measurement Agents may be deployed as separate hardware devices or as functions embedded in consumer electronic devices and home routers or as pure software solutions that can be installed on off-the-shelf computing equipment. Measurement Agents receive instructions from a Controller about when and how to conduct what measurements (the measurement schedule) and how and when to report measurement results to a data Collector (the report schedule). Further information about the interaction between Measurement Agents and Controllers and Collectors can be found in [RFC7594].
The LMAP information model [I-D.ietf-lmap-information-model] defines the information exchanged between a Controller and an Measurement Agent and the information exchanged between an Measurement Agent and a Collector. An information model is conceptual and protocol-independent. A concrete YANG [RFC6020] data model derived from the conceptual information model is defined in [I-D.ietf-lmap-yang].
This document uses the LMAP terminology defined in [RFC7594].
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].
The RESTCONF protocol [I-D.ietf-netconf-restconf] provides a REST-like interface to access and manipulate a so-called unified YANG datastore [RFC6020]. The basic idea behind RESTCONF is expose a YANG datastores as a collection of Web resources that can be manipulated using standard HTTP [RFC7230] DELETE, PATCH, POST, and PUT methods. The resource hierarchy is derived from the nesting structure of the YANG schema tree, leading to a so-called data model driven REST API.
RESTCONF is essentially a convention how to use HTTP over TLS to access a datastore that has a structure defined by a YANG data model. The data is exchanged in XML encoding or JSON encoding.
The normal mode of operation is that the RESTCONF client initiates a secure transport to the RESTCONF server. For devices located behind a NAT, a so called 'call-home' mechanism has been defined [I-D.ietf-netconf-call-home] that enables the RESTCONF server to establish a secure transport to a RESTCONF client. Note that call home only changes the TCP connection establishment, the TLS and HTTP client/server roles do not change. The policy used to call home can be configured through a configuration data model [I-D.ietf-netconf-server-model]. This model provides a mechanism to configure a list of redundant endpoints and it provides control over call-home policies (e.g, call-home frequency, idle-timers, keep-alive timers).
It is straight-forward to use RESTCONF as a control protocol. The YANG data model [I-D.ietf-lmap-yang] derived from the underlying information model [I-D.ietf-lmap-information-model] translates into a collection of RESTCONF resources that can be manipulated at various levels of granularity using DELETE, PATCH, POST, and PUT methods.
An example exchange showing a REST call to create a schedule object is shown in Appendix A.
For reporting results from the Measurement Agent to a Collector, the Collector is assumed to act as a RESTCONF server. The Measurement Agent pushes results to the Collector by invoking an operation on the Controller.
TBD
This document has no requests for IANA.
Juergen Schoenwaelder and Vaibhav Bajpai worked in part on the Leone research project, which received funding from the European Union Seventh Framework Programme [FP7/2007-2013] under grant agreement number 317647.
Juergen Schoenwaelder and Vaibhav Bajpai were partly funded by Flamingo, a Network of Excellence project (ICT-318488) supported by the European Commission under its Seventh Framework Programme.
[I-D.ietf-lmap-information-model] | Burbridge, T., Eardley, P., Bagnulo, M. and J. Schönwälder, "Information Model for Large-Scale Measurement Platforms (LMAP)", Internet-Draft draft-ietf-lmap-information-model-06, July 2015. |
[I-D.ietf-lmap-yang] | Schönwälder, J. and V. Bajpai, "A YANG Data Model for LMAP Measurement Agents", Internet-Draft draft-ietf-lmap-yang-01, July 2015. |
[I-D.ietf-netconf-call-home] | Watsen, K., "NETCONF Call Home and RESTCONF Call Home", Internet-Draft draft-ietf-netconf-call-home-11, September 2015. |
[I-D.ietf-netconf-restconf] | Bierman, A., Bjorklund, M. and K. Watsen, "RESTCONF Protocol", Internet-Draft draft-ietf-netconf-restconf-08, October 2015. |
[I-D.ietf-netconf-server-model] | Watsen, K. and J. Schönwälder, "NETCONF Server and RESTCONF Server Configuration Models", Internet-Draft draft-ietf-netconf-server-model-08, October 2015. |
[RFC2119] | Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997. |
[RFC6020] | Bjorklund, M., "YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)", RFC 6020, DOI 10.17487/RFC6020, October 2010. |
[RFC7223] | Bjorklund, M., "A YANG Data Model for Interface Management", RFC 7223, DOI 10.17487/RFC7223, May 2014. |
[RFC7230] | Fielding, R. and J. Reschke, "Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing", RFC 7230, DOI 10.17487/RFC7230, June 2014. |
[RFC7277] | Bjorklund, M., "A YANG Data Model for IP Management", RFC 7277, DOI 10.17487/RFC7277, June 2014. |
[RFC7317] | Bierman, A. and M. Bjorklund, "A YANG Data Model for System Management", RFC 7317, DOI 10.17487/RFC7317, August 2014. |
[RFC7594] | Eardley, P., Morton, A., Bagnulo, M., Burbridge, T., Aitken, P. and A. Akhter, "A Framework for Large-Scale Measurement of Broadband Performance (LMAP)", RFC 7594, DOI 10.17487/RFC7594, September 2015. |
Below is a YANG tree diagram of a part of the data model covering schedules. This is taken from [I-D.ietf-lmap-yang].
module: ietf-lmap +--rw lmap +--rw schedules +--rw schedule* [name] +--rw name string +--rw event leafref +--rw action* [name] | +--rw name string | +--rw task leafref | +--rw option* [name] | | +--rw name string | | +--rw value? string | +--rw destination* leafref +--rw execution-mode enumeration
Below is an XML representation of instance data conforming to the YANG data model is shown below. Note that some of the strings are references to other portions of the instance data not show here. This is again taken from [I-D.ietf-lmap-yang].
<lmap xmlns="urn:ietf:params:xml:ns:yang:ietf-lmap"> <schedules> <schedule> <name>hourly-schedule</name> <event>hourly</event> <action> <name>icmp-latency-hourly</name> <task>icmp-latency-measurement</task> <destination>daily</destination> </action> <execution-mode>sequential</execution-mode> </schedule> </schedules> </lmap>
Below is an example showing how RESTCONF can be used to create the above schedule. The prefix C: indicates the Controller, the prefix M: indicates the Measurement Agent. This example uses a JSON encoding (and note that much of the white-space can be removed, this is only there to help with readability).
C: POST /restconf/data/ietf-lmap:lmap/schedules HTTP/1.1 C: Host: example.com C: Content-Type: application/yang.data+json C: C: { C: "ietf-lmap:schedule": { C: "name": "hourly-schedule", C: "event": "hourly", C: "action": [ C: { C: "name": "icmp-latency-hourly", C: "task": "icmp-latency-measurement", C: "destination": "daily", C: } C: ], C: "execution-mode": "sequential" C: } C: } M: HTTP/1.1 201 Created M: Date: Mon, 26 Mar 2015 17:01:00 GMT M: Server: example-server M: Location: https://example.com/restconf/data M: /ietf-lmap:lmap/schedules/schedule=hourly-schedule M: Last-Modified: Mon, 26 Mar 2015 17:01:00 GMT M: ETag: b3a3e673be2
Below is an example showing how a Measurement Agent can submit results to a Collector running an RESTCONF server. The prefix C: indicates the Collector, the prefix M: indicates the Measurement Agent.
M: POST /restconf/operations/ietf-lmap-report:report HTTP/1.1 M: Host: example.com M: Content-Type: application/yang.operation+xml M: M: <input> M: <report xmlns="urn:ietf:params:xml:ns:yang:ietf-lmap-report"> M: <date>2015-10-28T13:27:42+02:00</date> M: <agent-id>550e8400-e29b-41d4-a716-446655440000</agent-id> M: <group-id>wireless measurement at the north-pole</group-id> M: <task> M: <name>icmp-latency-measurement</name> M: <metric> M: <uri>urn:....</uri> M: </metric> M: <header> M: <column>target</column> M: <column>rtt</column> M: </header> M: <row> M: <start-time>2015-03-25T00:00:55+00:00</start-time> M: <value>192.0.2.1</value> M: <value>42</value> M: </row> M: <row> M: <start-time>2015-03-25T00:00:56+00:00</start-time> M: <value>192.0.2.1</value> M: <value>42</value> M: </row> M: </task> M: </report> M: </input> C: HTTP/1.1 200 OK