Network Working Group B. Carpenter Internet-Draft Univ. of Auckland Intended status: Informational S. Jiang Expires: April 3, 2017 Huawei Technologies Co., Ltd September 30, 2016 Guidelines for Autonomic Service Agents draft-carpenter-anima-asa-guidelines-00 Abstract This document proposes guidelines for the design of Autonomic Service Agents for autonomic networks. It is based on the Autonomic Network Infrastructure outlined in the ANIMA reference model, making use of the Autonomic Control Plane and the Generic Autonomic Signaling Protocol. 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 April 3, 2017. Copyright Notice Copyright (c) 2016 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 Carpenter & Jiang Expires April 3, 2017 [Page 1] Internet-Draft ASA Guidelines September 2016 the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 2. Logical Structure of an Autonomic Service Agent . . . . . . . 3 3. Interaction with the Autonomic Infrastructure . . . . . . . . 4 3.1. Interaction with the security mechanisms . . . . . . . . 4 3.2. Interaction with the ACP . . . . . . . . . . . . . . . . 4 3.3. Interaction with GRASP and its API . . . . . . . . . . . 5 3.4. Interaction with Intent mechanism . . . . . . . . . . . . 6 4. Design of GRASP Objectives . . . . . . . . . . . . . . . . . 6 5. Life Cycle . . . . . . . . . . . . . . . . . . . . . . . . . 6 6. Coordination . . . . . . . . . . . . . . . . . . . . . . . . 6 7. Security Considerations . . . . . . . . . . . . . . . . . . . 6 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 6 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 6 10.1. Normative References . . . . . . . . . . . . . . . . . . 6 10.2. Informative References . . . . . . . . . . . . . . . . . 7 Appendix A. Change log [RFC Editor: Please remove] . . . . . . . 8 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 8 1. Introduction This document proposes guidelines for the design of Autonomic Service Agents (ASAs) in the context of an Autonomic Network (AN) based on the Autonomic Network Infrastructure (ANI) outlined in the ANIMA reference model [I-D.ietf-anima-reference-model]. This infrastructure makes use of the Autonomic Control Plane (ACP) [I-D.ietf-anima-autonomic-control-plane] and the Generic Autonomic Signaling Protocol (GRASP) [I-D.ietf-anima-grasp]. There is a considerable literature about autonomic agents with a variety of proposals about how they should be characterized. Some examples are [DeMola06], [Huebscher08], [Movahedi12] and [GANA13]. However, for the present document, the basic definitions and goals for autonomic networking given in [RFC7575] apply . According to RFC 7575, an Autonomic Service Agent is "An agent implemented on an autonomic node that implements an autonomic function, either in part (in the case of a distributed function) or whole." The reference model [I-D.ietf-anima-reference-model] expands this by adding that an ASA is "a process that makes use of the features provided by the ANI to achieve its own goals, usually including interaction with other ASAs via the GRASP protocol [I-D.ietf-anima-grasp] or otherwise. Of course it also interacts Carpenter & Jiang Expires April 3, 2017 [Page 2] Internet-Draft ASA Guidelines September 2016 with the specific targets of its function, using any suitable mechanism. Unless its function is very simple, the ASA will need to be multi-threaded so that it can handle overlapping asynchronous operations. It may therefore be a quite complex piece of software in its own right, forming part of the application layer above the ANI." A basic property of an ASA is that it is a relatively complex software component that will in many cases control and monitor simpler entities in the same host or elsewhere. For example, a device controller that manages tens or hundreds of simple devices might contain a single ASA. The remainder of this document offers guidance on the design of ASAs. NOTE: This is an early version of this document. It is expected to grow considerably. 2. Logical Structure of an Autonomic Service Agent As mentioned above, all but the simplest ASAs will be multi-threaded programs. A typical ASA will have a main thread that performs various initial housekeeping actions such as: o Obtain authorization credentials. o Register the ASA with GRASP. o Acquire relevant policy Intent. o Define data structures for relevant GRASP objectives. o Register with GRASP those objectives that it will actively manage. o Launch a self-monitoring thread. o Enter its main loop. The logic of the main loop will depend on the details of the autonomic function concerned. Whenever asynchronous operations are required, extra threads will be launched. Examples of such threads include: o A background thread to repeatedly flood an objective to the AN, so that any ASA can receive the objective's latest value. Carpenter & Jiang Expires April 3, 2017 [Page 3] Internet-Draft ASA Guidelines September 2016 o A thread to accept incoming synchronization requests for an objective managed by this ASA. o A thread to accept incoming negotiation requests for an objective managed by this ASA, and then to conduct the resulting negotiation with the counterpart ASA. o A thread to manage subsidiary non-autonomic devices directly. These threads should all either exit after their job is done, or enter a wait state for new work, to avoid blocking other threads unnecessarily. According to the degree of parallelism needed by the application, some of these threads might be launched in multiple instances. In particular, if negotiation sessions with other ASAs are expected to be long or to involve wait states, the ASA designer might allow for multiple simultaneous negotiating threads, with appropriate use of queues and locks to maintain consistency. The main loop itself could act as the initiator of synchronization requests or negotiation requests, when the ASA needs data or resources from other ASAs. In particular, the main loop should watch for changes in policy Intent that affect its operation. It should also do whatever is required to avoid unnecessary resource consumption, such as including an arbitrary wait time in each cycle of the main loop. The self-monitoring thread is of considerable importance. Autonomic service agents must never fail. To a large extent this depends on careful coding and testing, with no unhandled error returns or exceptions, but if there is nevertheless some sort of failure, the self-monitoring thread should detect it, fix it if possible, and in the worst case restart the entire ASA. 3. Interaction with the Autonomic Infrastructure 3.1. Interaction with the security mechanisms TBD 3.2. Interaction with the ACP TBD Carpenter & Jiang Expires April 3, 2017 [Page 4] Internet-Draft ASA Guidelines September 2016 3.3. Interaction with GRASP and its API GRASP [I-D.ietf-anima-grasp] is expected to run as an operating system kernel module with its API [I-D.liu-anima-grasp-api] available in user space. Thus ASAs may operate without special privilege, unless they need it for other reasons. The ASA's view of GRASP is built around GRASP objectives (Section 4), defined as data structures containing administrative information such as the objective's unique name, and its current value. The format and size of the value is not restricted by the protocol, except that it must be possible to serialise it for transmission in CBOR [RFC7049], which is no restriction at all in practice. The GRASP API offers the following features: o Registration functions, so that an ASA can register itself and the objectives that it manages. o A discovery function, by which an ASA can discover other ASAs supporting a given objective. o A negotiation request function, by which an ASA can start negotiation of an objective with a counterpart ASA. With this, there is a corresponding listening function for an ASA that wishes to respond to negotiation requests, and a set of functions to support negotiating steps. o A synchronization function, by which an ASA can request the current value of an objective from a counterpart ASA. With this, there is a corresponding listening function for an ASA that wishes to respond to synchronization requests. o A flood function, by which an ASA can cause the current value of an objective to be flooded throughout the AN so that any ASA can receive it. For further details and some additional housekeeping functions, see [I-D.liu-anima-grasp-api]. This API is intended to support the various interactions expected between most ASAs, such as the interactions outlined in Section 2. However, if ASAs require additional communication between themselves, they can do so using any desired protocol. One option is to use GRASP discovery and synchronization as a rendez-vous mechanism between two ASAs, passing communication parameters such as a TCP port number as the value of a GRASP objective. Carpenter & Jiang Expires April 3, 2017 [Page 5] Internet-Draft ASA Guidelines September 2016 3.4. Interaction with Intent mechanism TBD 4. Design of GRASP Objectives TBD 5. Life Cycle TBD, citing "A Day in the Life of an Autonomic Function" [I-D.peloso-anima-autonomic-function]. 6. Coordination TBD, citing "Autonomic Functions Coordination" [I-D.ciavaglia-anima-coordination]. 7. Security Considerations TBD. Authorization of ASAs is a subject for future study. 8. IANA Considerations This document makes no request of the IANA. 9. Acknowledgements TBD. 10. References 10.1. Normative References [I-D.ietf-anima-autonomic-control-plane] Behringer, M., Eckert, T., and S. Bjarnason, "An Autonomic Control Plane", draft-ietf-anima-autonomic-control- plane-03 (work in progress), July 2016. [I-D.ietf-anima-grasp] Bormann, C., Carpenter, B., and B. Liu, "A Generic Autonomic Signaling Protocol (GRASP)", draft-ietf-anima- grasp-07 (work in progress), September 2016. [RFC7049] Bormann, C. and P. Hoffman, "Concise Binary Object Representation (CBOR)", RFC 7049, DOI 10.17487/RFC7049, October 2013, . Carpenter & Jiang Expires April 3, 2017 [Page 6] Internet-Draft ASA Guidelines September 2016 10.2. Informative References [DeMola06] De Mola, F. and R. Quitadamo, "An Agent Model for Future Autonomic Communications", Proceedings of the 7th WOA 2006 Workshop From Objects to Agents 51-59, September 2006. [GANA13] ETSI GS AFI 002, , "Autonomic network engineering for the self-managing Future Internet (AFI): GANA Architectural Reference Model for Autonomic Networking, Cognitive Networking and Self-Management.", April 2013, . [Huebscher08] Huebscher, M. and J. McCann, "A survey of autonomic computing--degrees, models, and applications", ACM Computing Surveys (CSUR) Volume 40 Issue 3 DOI: 10.1145/1380584.1380585, August 2008. [I-D.ciavaglia-anima-coordination] Ciavaglia, L. and P. Peloso, "Autonomic Functions Coordination", draft-ciavaglia-anima-coordination-01 (work in progress), March 2016. [I-D.ietf-anima-reference-model] Behringer, M., Carpenter, B., Eckert, T., Ciavaglia, L., Pierre, P., Liu, B., Nobre, J., and J. Strassner, "A Reference Model for Autonomic Networking", draft-ietf- anima-reference-model-02 (work in progress), July 2016. [I-D.liu-anima-grasp-api] Carpenter, B., Liu, B., Wang, W., and X. Gong, "Generic Autonomic Signaling Protocol Application Program Interface (GRASP API)", draft-liu-anima-grasp-api-01 (work in progress), June 2016. [I-D.peloso-anima-autonomic-function] Pierre, P. and L. Ciavaglia, "A Day in the Life of an Autonomic Function", draft-peloso-anima-autonomic- function-01 (work in progress), March 2016. [Movahedi12] Movahedi, Z., Ayari, M., Langar, R., and G. Pujolle, "A Survey of Autonomic Network Architectures and Evaluation Criteria", IEEE Communications Surveys & Tutorials Volume: 14 , Issue: 2 DOI: 10.1109/SURV.2011.042711.00078, Page(s): 464 - 490, 2012. Carpenter & Jiang Expires April 3, 2017 [Page 7] Internet-Draft ASA Guidelines September 2016 [RFC7575] Behringer, M., Pritikin, M., Bjarnason, S., Clemm, A., Carpenter, B., Jiang, S., and L. Ciavaglia, "Autonomic Networking: Definitions and Design Goals", RFC 7575, DOI 10.17487/RFC7575, June 2015, . Appendix A. Change log [RFC Editor: Please remove] draft-carpenter-anima-asa-guidelines-00, 2016-09-30: Initial version Authors' Addresses Brian Carpenter Department of Computer Science University of Auckland PB 92019 Auckland 1142 New Zealand Email: brian.e.carpenter@gmail.com Sheng Jiang Huawei Technologies Co., Ltd Q14, Huawei Campus, No.156 Beiqing Road Hai-Dian District, Beijing, 100095 P.R. China Email: jiangsheng@huawei.com Carpenter & Jiang Expires April 3, 2017 [Page 8]