AMA Application Data Modeling
draft-birrane-dtn-adm-00
The information below is for an old version of the document.
| Document | Type | Active Internet-Draft (individual) | |
|---|---|---|---|
| Authors | Edward J. Birrane , Evana DiPietro , David Linko | ||
| Last updated | 2017-10-30 | ||
| Stream | (None) | ||
| Formats | plain text xml htmlized pdfized bibtex | ||
| Stream | Stream state | (No stream defined) | |
| Consensus boilerplate | Unknown | ||
| RFC Editor Note | (None) | ||
| IESG | IESG state | I-D Exists | |
| Telechat date | (None) | ||
| Responsible AD | (None) | ||
| Send notices to | (None) |
draft-birrane-dtn-adm-00
Delay-Tolerant Networking E. Birrane
Internet-Draft E. DiPietro
Intended status: Informational D. Linko
Expires: May 3, 2018 Johns Hopkins Applied Physics Laboratory
October 30, 2017
AMA Application Data Modeling
draft-birrane-dtn-adm-00
Abstract
This document defines a data model suitable for managing applications
in asynchronously managed networks. This includes a description of
the data structures and type definitions that comprise the data model
as well as a template for publishing standardized representations of
static elements of the model. A YANG representation of the data
model and the template are also provided.
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 https://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 3, 2018.
Copyright Notice
Copyright (c) 2017 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
(https://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
Birrane, et al. Expires May 3, 2018 [Page 1]
Internet-Draft ADM October 2017
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. Purpose . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2. Scope . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Requirements Language . . . . . . . . . . . . . . . . . . . . 4
3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4
4. Data Modeling Concept of Operations . . . . . . . . . . . . . 5
5. Type Definitions . . . . . . . . . . . . . . . . . . . . . . 6
5.1. Primitive Types . . . . . . . . . . . . . . . . . . . . . 6
5.2. Derived Types . . . . . . . . . . . . . . . . . . . . . . 7
5.2.1. Hex String . . . . . . . . . . . . . . . . . . . . . 7
5.2.2. Timestamp (TS) . . . . . . . . . . . . . . . . . . . 8
5.2.3. Type-Name-Value Collection . . . . . . . . . . . . . 8
6. Identification . . . . . . . . . . . . . . . . . . . . . . . 9
6.1. Asynchronous Resource Namespace (ARNs) . . . . . . . . . 10
6.2. Managed Identifiers . . . . . . . . . . . . . . . . . . . 10
6.2.1. MID Semantic Information . . . . . . . . . . . . . . 10
6.2.2. MID Value . . . . . . . . . . . . . . . . . . . . . . 11
6.2.3. MID Parameters . . . . . . . . . . . . . . . . . . . 12
6.2.4. MID References . . . . . . . . . . . . . . . . . . . 15
7. Collections . . . . . . . . . . . . . . . . . . . . . . . . . 15
7.1. MID Collection (MC) . . . . . . . . . . . . . . . . . . . 15
7.2. Expression (EXPR) . . . . . . . . . . . . . . . . . . . . 16
7.3. Predicate (PRED) . . . . . . . . . . . . . . . . . . . . 16
8. ADM Structures . . . . . . . . . . . . . . . . . . . . . . . 16
8.1. AMA Overview . . . . . . . . . . . . . . . . . . . . . . 16
8.2. Externally Defined Data (EDD) . . . . . . . . . . . . . . 18
8.3. Variables (VAR) . . . . . . . . . . . . . . . . . . . . . 19
8.4. Tables . . . . . . . . . . . . . . . . . . . . . . . . . 20
8.4.1. Table Template (TBLT) . . . . . . . . . . . . . . . . 20
8.4.2. Table (TBL) . . . . . . . . . . . . . . . . . . . . . 21
8.5. Reports . . . . . . . . . . . . . . . . . . . . . . . . . 22
8.5.1. Report Template (RPTT) . . . . . . . . . . . . . . . 22
8.5.2. Report (RPT) . . . . . . . . . . . . . . . . . . . . 23
8.6. Control (CTRL) . . . . . . . . . . . . . . . . . . . . . 24
8.7. Time-Based Rule (TRL) . . . . . . . . . . . . . . . . . . 25
8.8. State-Based Rule (SRL) . . . . . . . . . . . . . . . . . 27
8.9. Macro (MAC) . . . . . . . . . . . . . . . . . . . . . . . 28
8.10. Constant (CONST) . . . . . . . . . . . . . . . . . . . . 29
8.11. Operator (OP) . . . . . . . . . . . . . . . . . . . . . . 30
9. Data Type IDs and Enumerations . . . . . . . . . . . . . . . 32
9.1. Numeric Promotions . . . . . . . . . . . . . . . . . . . 33
9.2. Numeric Conversions . . . . . . . . . . . . . . . . . . . 34
10. YANG Modules . . . . . . . . . . . . . . . . . . . . . . . . 34
Birrane, et al. Expires May 3, 2018 [Page 2]
Internet-Draft ADM October 2017
10.1. ADM Types and Structures . . . . . . . . . . . . . . . . 34
10.2. Application Data Template . . . . . . . . . . . . . . . 47
11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 49
12. Security Considerations . . . . . . . . . . . . . . . . . . . 50
13. Informative References . . . . . . . . . . . . . . . . . . . 50
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 50
1. Introduction
This document defines a data model suitable for managing applications
in asynchronously managed networks.
1.1. Purpose
The Asynchronous Management Architecture [I-D.birrane-dtn-ama]
documents a concept for open-loop control of applications and
protocols for situations where timely, highly-available connections
cannot exist amongst managing and and managed nodes in a network.
While the AMA describes a logical data model, it does not include the
detailed information necessary to produce interoperable physical
models.
This document provides a normative physical model, called an
Application Data Model (ADM), that is compliant with the AMA logical
data model and can be used to manage individual applications (or
protocols). An ADM is comprised of both predefined and dynamic
information. Predefined information is represented in an Application
Data Definition (ADD) document populated in conformance with an an
Application Data Template (ADT). Dynamic information is created on-
the-fly by operators in the context of individual network deployments
and management scenarios.
1.2. Scope
The ADM presented in this document is a data model. In order to
communicate this model between agents and managers in a network, the
model must be encoded for transmission. Any such encoding scheme is
outside of the scope of this document. Generally, encoding of the
model is a separate concern from the specification of data within the
model.
Since different networks may use different encodings for data,
mandating an encoding format would require incompatible networks to
encapsulate data in ways that could introduce inefficiency and
obfuscation. It is envisioned that different networks would be able
to encode ADMs in their native encodings such that translating ADM
data from one encoding to the next could be a mechanical action taken
at network borders. For this reason, the ADM model must provide
Birrane, et al. Expires May 3, 2018 [Page 3]
Internet-Draft ADM October 2017
information necessary to allow for the coherent translation of of
different encodings.
Since the specification does not mandate an encoding format, the data
model itself must provide enough information to make encoding (and
translating from one encoding to another) an unambiguous process.
Therefore, where necessary, this document provides identification,
enumeration and other schemes that ensure ADMs provide enough
information to prevent ambiguities caused by different encoding
schemes.
2. Requirements Language
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. Terminology
Note: The terms "Actor", "Agent", "Application Data Model", "Atomic
Data", "Computed Data", "Control", "Literal", "Macro", "Manager",
"Report Template", "Report Entry", and "Rule" are used without
modification from the definitions provided in [AMA].
Additional terms critical to understanding the ADMT are as follows.
o Application - A software implementation running on an Agent and
being managed by a manager. This includes software that
implements protocol processing on an Agent.
o Application Data Definitions (ADD) - The set of predefined data
items for an ADM, captured in the format of the ADT.
o Application Data Model (ADM) - The full set of data items
necessary to manage an application (or set of applications)
asynchronously. This includes both predefined and dynamically-
constructed data items.
o Application Data Template (ADT) - A standard format for expressing
predefined data items for an application.
o Managed Item Definition (MID) - A parameterized structure used to
uniquely identify all ADM objects.
o Report (RPT) - An ordered collection of report entries gathered by
an Agent and provided to one or more Managers. Reports represent
the fundamental unit of data exchange from an Agent to a Manager.
Birrane, et al. Expires May 3, 2018 [Page 4]
Internet-Draft ADM October 2017
o State-Based Rule (SRL) - A rule whose action is performed if a
defined predicate evaluates to true. SRLs are defined in
Section 8.8.
o Time-Based Rule (TRL) - A rule whose action is performed at
regular intervals. SRLs are defined in Section 8.7.
4. Data Modeling Concept of Operations
When a new application is to be asynchronously managed in accordance
with the [I-D.birrane-dtn-ama], the series of control and data
information specific to that application must be captured in a data
model. Portions of that data model will be predefined and common to
all instances of the application and portions of the data model will
be ad-hoc in the context of specific network deployments and
operational conditions.
The conceptual set of all information necessary to manage an
application is defined as the data model for that application and
termed the Application Data Model (ADM). The portions of the ADM
that are predefined can be published as a common set of management
information that is otherwise agnostic of any specific network
deployment. That set of predefined information is termed the
Application Data Definitions (ADD).
To aid in the exchange of data model information, a common
identification scheme and data format should be used to capture
information. This is defined in this document as a template that can
be filled out for each application and is terms the Application Data
Template (ADT).
The relationship of the ADM, ADD, and ADT are illustrated in
Figure 1.
Birrane, et al. Expires May 3, 2018 [Page 5]
Internet-Draft ADM October 2017
Data Model Relationship
+---------+
| ADT |
+----+----+
|
V
+---------+ +-----------+
| Ad-Hoc | | Published |
| Info | | ADD |
+----+----+ +-----+-----+
| |
V V
+-----------------------------+
| ADM |
+-----------------------------+
Figure 1
5. Type Definitions
This section describes custom type definitions used by the ADM.
Specifying basic type definitions is important as it forms the basis
for interchangeable encodings of the model.
5.1. Primitive Types
ADMs support a series of primitive types such as bytes, (un)signed
integers, floating point values, and others as outlined in Table 1.
Birrane, et al. Expires May 3, 2018 [Page 6]
Internet-Draft ADM October 2017
+--------------------+----------------------------------------------+
| Type | Description |
+--------------------+----------------------------------------------+
| BYTE | unsigned byte value |
| | |
| INT | 32-bit signed integer in 2's complement |
| | |
| UINT | 32-bit unsigned integer in 2's complement |
| | |
| VAST | 64-bit signed integer in 2's complement |
| | |
| UVAST | 64-bit unsigned integer in 2's complement |
| | |
| REAL32 | Single-precision, 32-bit floating point |
| | value in IEEE-754 format. |
| | |
| REAL64 | Double-precision, 64-bit floating point |
| | value in IEEE-754 format. |
| | |
| STRING | NULL-terminated series of characters in |
| | UTF-8 format. |
| | |
| BOOL | A Boolean value of FALSE (whose integer |
| | interpretation is 0) or TRUE (which is any |
| | integer interpretation that is not FALSE). |
+--------------------+----------------------------------------------+
Table 1: Primitive Types
5.2. Derived Types
A derived typed is a primitive type that is interpreted with special
semantics. The ADM supports the following derived types.
5.2.1. Hex String
A Hex String is a special type of STRING.
A Hex String contents a written representation of a hexadecimal
value, without prefix. In this scheme, byte values are separated by
colons (:). While either upper or lower case characters are
acceptable, by convention lower-case characters should be used for
increased readability.
For example, given the hexadecimal value 0x12AB the resultant Hex
String would be "12:ab".
Birrane, et al. Expires May 3, 2018 [Page 7]
Internet-Draft ADM October 2017
Hex Strings follow the format of the hex-string derived type as
defined in RFC6991.
5.2.2. Timestamp (TS)
A Timestamp is a special type of UVAST.
There are two "types" of timestamp within an ADM: a relative
timestamp and an absolute timestamp. A relative timestamp is defined
as the number of seconds between two events (such as the receipt of a
control by an agent and the execution of that control). An absolute
timestamp is defined as UTC time since the Unix/POSIX Epoch.
Rather than define two separate data types (one for relative
timestamps and one for absolute timestamps) or adding an extra field
(e.g., a timestamp type identifier) the type of timestamp can be
simply and unambiguously inferred from a single timestamp value. The
ADMT defines a Relative Timestamp Epoch. Timestamp values less than
the RTE will be interpreted as relative timestamps. Timestamp values
greater than or equal to the RTE will be interpreted as absolute
timestamps. The RTE is defined as September 9th, 2012 (UTC time
1347148800).
For example, a timestamp value of "10" refers to 10 seconds in the
future. A timestamp value of "1508554859" refers to Saturday,
October 21, 2017 3:00:59 AM.
It should be noted that absolute and relative times are
interchangeable. An absolute time can be converted into a relative
time by subtracting the current time from the absolute time. A
relative time can be converted into an absolute time by adding to the
relative time the current time. A pseudo-code example of this
conversion is as follows.
IF (timestamp < 1347148800) THEN
absolute_time = current_time + timestamp
ELSE
absolute_time = timestamp
5.2.3. Type-Name-Value Collection
A Type-Name-Value Collection (TNV) is a special type of STRING.
A TNV describes a list of ADM items with each item described as the
three-tuple of {type, name, value} or certain permitted subsets of
that three-tuple. The general form of the string is
Birrane, et al. Expires May 3, 2018 [Page 8]
Internet-Draft ADM October 2017
<type>:<name>=<value> with each item in the collection separated by
"&".
Type refers to the string representation of the ADM item type as
defined in Section 9. Name refers to the name of the ADM item.
Value refers to the string (or hex string) value of the ADM item.
For each item in a TNV, there are three acceptable formulations that
can be used to represent the item, as illustrated in the following
table. For the examples in this table, consider the REAL32 value of
PI as 3.14159.
+----------+---------------------+----------------------------------+
| Desc | Format | Example |
+----------+---------------------+----------------------------------+
| Full | <type>:<name>=<valu | REAL32:PI=3.14159&INT:PI_INT=3 |
| | e> | |
| | | |
| Named | <type>:<name> | REAL32:PI&INT:PI_INT |
| Type | | |
| | | |
| Anonymou | <type> | REAL32&INT |
| s Type | | |
| | | |
| Anonymou | <type>:=<value> | REAL32:=3.14159&INT:=3 |
| s Type | | |
| Value | | |
| | | |
| Anonymou | =<value> | =3.14159&=3 |
| s Value | | |
| | | |
| Mixed | Varies | REAL32:PI=3.14159&INT:PI_INT&INT |
| | | &=3 |
+----------+---------------------+----------------------------------+
Table 2: TNV Formulations
In ADMs, TNVs are used to capture parameterized items and describe
the contents of reports.
6. Identification
The primary responsibility of an ADM is to uniquely identify the
components necessary to asynchronously manage the application. This
section describes the two mechanisms used to identify every item
within every ADM: Asynchronous Resource Names (ARNs) and Managed
Identifiers (MIDs).
Birrane, et al. Expires May 3, 2018 [Page 9]
Internet-Draft ADM October 2017
6.1. Asynchronous Resource Namespace (ARNs)
Every ADM must identify itself by an asynchronous resource namespace
(ARN). This is separate from the YANG namespace and provides a
moderated, formatted way of identifying the ADM in the context of
other ADMs. Such a naming provides important semantic information
necessary for encodings of ADM contents. The format of an ARN is a
colon-separated set of moderated scoping keywords, as follows.
arn:<Broadest-Scoped Keyword>:<Narrowest-Scoped Keyword>
For example, the DTN community publishes the Bundle Protocol and the
ADM for the Bundle Protocol could be assigned the namespace
arn:Dtn:BundleProtocol. Another ADM published specifically for
management of a particular implementation of a Bundle Protocol Agent
(for example, the Interplanetary Overlay network (ION)) could have
the separate namespace arn:DTN:ION:BundleProtocolAdmin.
ARN keywords will be moderated to create a known keyword list and
associated ontology that provides some semantic structure to ADM
names beyond the associations that may or may not be present to allow
groupings in the YANG format.
6.2. Managed Identifiers
Every item codified in a published ADM (or generated in operational
use) must be uniquely identifiable. The Managed Identifier (MID)
accomplishes this by providing a variable-length, flexible structure
with optional fields to capture special identifier-related
circumstances.
A MID in an ADM consists of three types of information: (1) human-
readable semantic information, (2) the identifier value, and (3)
parameters, if necessary.
6.2.1. MID Semantic Information
A MID can have an optional name and description associated with it.
These help provide documentation of the ADM item identified by the
MID.
The MID Name is a string that should uniquely identify the ADM item
within the context of the ADM. It is recommended that this name be a
human-readable and user-friendly alternative to the numeric ID
portion of the MID.
The MID Description is a string that captures important information
describing the purpose of usage of the ADM item. The description
Birrane, et al. Expires May 3, 2018 [Page 10]
Internet-Draft ADM October 2017
should also be human-readable and user-friendly. The MID description
is not considered part of the uniquely identifying part of the MID
and may be duplicated across multiple MIDs in an ADM. No part of the
MID description should be used to interpret the uniqueness of any ADM
item.
6.2.2. MID Value
There are two categories of information that can be identified by a
MID in an ADM: named and literal items. A named item is an item in
an ADM whose value should not be used as its identifier. This can be
because the value is not unique to the item, or the value is of such
length or complexity as to make its use as an identifier impractical.
A literal item is one that can be uniquely and succinctly identified
by its value.
6.2.2.1. Named Item
The identification of a named item consists of four parts: (1) The
type of item being identified, (2) a unique identifying value for the
item, (3) an optional issuer field, and (4) an optional tag field.
These four items are represented as a string with the format
<Type>_<enumeration>:<issuer>:<tag>. The description of each of
these types is as follows.
Item Type
The type of the ADM item being identified is the string
representation of the type, as defined in Section 9.
Unique Identifier
The identifier may be any uniquely identifying information, such as
the name of the MID, or a numeric enumeration of the order of the MID
in the ADM.
Issuer
The issuer field is any string (or hex string) representing some
identification of the organization defining this item. This value
may come from a global registry of organizations, an issuing node
address, a signed known value, or some other network-unique marking.
When an item is defined in the context of an ADM, the issuer tag MUST
NOT be present. ADD-defined items are defined relative to their ARN
and need no additional information to determine their issuer.
Therefore, the issuer tag is only present in ADM items created on-
the-fly as part of an operational network.
Tag
The tag field is any string (including a hex string) used to
disambiguate or otherwise validate a MID created by an issuer.
Birrane, et al. Expires May 3, 2018 [Page 11]
Internet-Draft ADM October 2017
Similar to the issuer field, the tag field MUST NOT be present in a
MID identified in an ADM. Since a tag field has meaning only in the
context of its issuer it MUST NOT be present in a MID that is lacking
an issuer field. The contents of the tag field is left to the
discretion of the issuer. Examples of envisioned tag values include
an issuer-known version number or a signed or unsigned hashing of the
data associated with the MID.
6.2.2.2. Literal Item
The identification of a literal item consists of three parts: (1) The
type of item being identified, (2) the data type of the value, and
(3) the value of the item. These two items are represented as a
string in the ADM with the format <Type>_<value type>.<value>. The
description of each of these types is as follows.
Item Type
The type of a literal item MUST be LIT.
Value Type
The type of the literal value. This MUST be one of the primitive
types as described in Table 1.
Value
The value is simply the value of the item.
For example, here are some ways of identifying the literal value "9"
in an ADM.
+---------------------------+----------------+
| Description | Example |
+---------------------------+----------------+
| As a signed integer | LIT_INT.9 |
| | |
| As an unsigned integer | LIT_UINT.9 |
| | |
| As a floating point value | LIT_REAL32.9.0 |
| | |
| As a string | LIT_STR.Nine |
+---------------------------+----------------+
Sample Literal MIDs
6.2.3. MID Parameters
Certain ADM items can be parameterized to support a cleaner and less-
chatty interface between agents and managers. When a MID is
parameterized, a parameter specification is appended to the end of
Birrane, et al. Expires May 3, 2018 [Page 12]
Internet-Draft ADM October 2017
the string representation of the MID. This specification may capture
"formal parameters" or "actual parameters". The ADM also supports
the specification of optional parameters.
6.2.3.1. Formal Parameters
A "formal parameter" defines the type, name, and order of the
variables that should be provided to the MID. Formal parameters are
defined in the context of an ADM using static, strong typing. This
approach is similar to how parameters are defined in a function
definition, such as "foo(int a, float b)". In this example, the
function foo is defined as accepting two variables: an integer named
"a" and a floating point value named "b".
Formal parameters MUST include TYPE and NAME information and MAY
include an optional default VALUE. If specified, a default value
will be used whenever a set of Actual Parameters fails to provide a
value for this Formal Parameter.
Formal parameters are represented in a MID using a TNV Collection.
The TNV for the example above could be represented as
"INT:a&REAL32:b". Also, if parameter a had a default value of 7, the
Formal Parameter list could have been represented as
"INT:a=7&REAL32:b".
6.2.3.2. Actual Parameters
An "actual parameter" defines the type, name, and value of a set of
variables that serve as arguments for a previously-defined formal
parameter set. Actual parameters are used when a particular instance
of a parameterized ADM item is generated by an Agent or a Manager and
the MID of that instance must contain values that match, in type and
number, the formal parameters of the ADM item. Using the "foo"
example above, an actual parameter list would be represented in the
call "foo(3, 3.14)".
An Actual Parameter MAY have any combination of TYPE or VALUE
information. If the Formal Parameter list defined a default value,
then the associated Actual Parameter MAY also be empty. If a TYPE is
provided in an Actual Parameter then the type MUST match the type
provided by the Formal Parameter. An Actual Parameter MUST NOT
include NAME information.
Actual parameters are represented in a MID using a TNV string. The
TNV for the example above could be represented as
"INT:a=3&REAL32:b=3.14". If parameter a had a default value defined,
then another possible Actual Parameter list for the above example
could be represented as "INT:=&b=3.14" or simply "&b=3.14".
Birrane, et al. Expires May 3, 2018 [Page 13]
Internet-Draft ADM October 2017
6.2.3.3. Optional Parameters
When parameterizing an ADM item, some parameters may be optional with
default values defined if parameters are omitted. The use of
optional parameters helps keep MID values small when using default
values for parameters is a common case, rather than forcing all
parameters to be provided all the time.
Consider the following TNV string capturing a set of formal
parameters: "INT:a&REAL32:b&UINT:c=0&INT:d=-1". The following table
shows the values of formal parameters c and d given a variety of TNV
strings representing actual parameters.
+-------------------------------------+----------+------------------+
| Actual Parameter | C Value | D Value |
+-------------------------------------+----------+------------------+
| INT:=3&REAL32:=3.14 | 0 | -1 |
| | | |
| INT:=3&REAL32:=3.14&UINT:=1 | 1 | -1 |
| | | |
| INT:=3&REAL32:=3.14&UINT:=1&INT:=-2 | 1 | -2 |
| | | |
| INT:=3&REAL32:=3.14&&INT:=-2 | 0 | -2 |
+-------------------------------------+----------+------------------+
Table 3: TNV Formulations
6.2.3.4. Parameter Evaluation
Actual Parameters in a MID may be represented in one of two ways: the
parameter itself (parameter by value), or an expression used to
determine the parameter (parameter by evaluation).
6.2.3.4.1. Parameter By Value
When specifying a parameter using a value, the type of the Actual
Parameter MUST be present and MUST match the expected Formal
Parameter type. The Actual Parameter value will be used as the value
of the parameter.
For example, consider a Formal Parameter list that takes 1 parameter,
an unsigned integer (UINT). When populating this parameter by value,
the type of the Actual Parameter MUST be UINT and the parameter value
MUST be the desired unsigned integer.
Birrane, et al. Expires May 3, 2018 [Page 14]
Internet-Draft ADM October 2017
6.2.3.4.2. Parameter By Evaluation
When the value of a Actual Parameter is likely to change, an
Expression (EXPR) may be substituted for the Actual Parameter value.
The Expression can then be evaluated to calculate the value.
An Actual Parameter defined by evaluation MUST be of type EXPR, and
the type of the EXPR must be equal to the expected type. Expressions
and Expression types are discussed in Section 3.6.2.
NOTE: If the type of the Formal Parameter is already EXPR, and an
Actual Parameter of type EXPR is provided, then the Actual Parameter
MUST be processed in the same way as Parameter By Value. The ADM
does not support an EXPR which references another EXPR as doing so
leads to significant confusion in implementations and the possibility
of circular reference.
6.2.3.4.3. Identifying Parameter Approach
The determination of whether an Actual Parameter should be
interpreted by value or by evaluation is made by comparing the given
type of the Actual Parameter to the expected type of the Formal
Parameter.
If the types match, then the Actual Parameter MUST be considered by
value. If the Actual Parameter type is an EXPR and the EXPR type
matches the Formal Parameter type, then the Actual Parameter MUST be
considered by evaluation of the EXPR. In any other case, the Actual
Parameter MUST be considered invalid as being from a type mismatch.
6.2.4. MID References
There are several times when a MID must be referenced within the
contents of an ADM document and a useful shorthand is defined to
allow for this expression. Since a MID name is required to be unique
for a given data type, the combination of MID type and MID name may
be used as a reference.
Specifically, a MID reference is a string with the form
<type>.<name>.
7. Collections
7.1. MID Collection (MC)
Often, in either an ADM or an ADD, it is necessary to discuss
collections of items that are provided as parameters to other items.
For example, a Control that is used to generate a series of Report
Birrane, et al. Expires May 3, 2018 [Page 15]
Internet-Draft ADM October 2017
Entries may accept, as a parameter, a list of the MIDs defining the
Report Templates to be generated.
A MC may be represented as a string that contains zero or more MID
representations separated by whitespace. A MID within a MC MAY be
either a MID Reference or a MID Identifier.
A MC may alternatively be represented as an array with zero or more
elements, with each element being a MID representation (either a MID
reference or a MID identifier).
7.2. Expression (EXPR)
Expression apply mathematical operations to values to generate new
values, typically on computers fulfilling the Agent role within the
AMA. Since the variables, operators, and literals that comprise
these operations are all formal ADM items, they are all identified by
MIDs. Because they are all identified by MIDs, the expression may be
represented by a MC.
An expression (EXPR) is a MC in which a series of items are ordered
so as to produce a valid post-fix mathematical expression. For
example, the infix expression A * (B * C) is represented as the
sequence A B C * *.
7.3. Predicate (PRED)
Predicates are Expressions whose values are interpreted as a Boolean.
The value of zero MUST be considered "false" and all other values
MUST be considered "true".
8. ADM Structures
This section identifies the ADM structures that implement the AMA
logical data model.
8.1. AMA Overview
The AMA defines a series of logical components that should be
included as part of an ADM. These components are summarized from the
AMA in the following table. The ADM implements these logical
components in largely a one-to-one fashion with a few exceptions.
Birrane, et al. Expires May 3, 2018 [Page 16]
Internet-Draft ADM October 2017
+-----------+-----------------------------------+-------------------+
| AMA | Summary Description | ADM Structure |
| Component | | |
+-----------+-----------------------------------+-------------------+
| Atomic | A typed, measured value whose | Externally |
| Data | definition and value | Defined Data |
| | determination occurs externally | |
| | from the network management | |
| | system. | |
| | | |
| Computed | A typed, computed value whose | Variable |
| Data | definition and value | |
| | determination occurs within the | |
| | network management system. | |
| | | |
| Report | Collections of Atomic and/or | Table Definition, |
| Entry | Computed data and/or other | Table, Report |
| | Reports. | Definition, |
| | | Report |
| | | |
| Control | Parameterized opcode for any | Control |
| | action that can be taken by an | |
| | Agent. | |
| | | |
| Rule | A pre-configured response to a | State-Based Rule, |
| | predefined time or state on an | Time-Based Rule |
| | Agent. | |
| | | |
| Macro | An ordered collection of | Macro |
| | Controls. | |
| | | |
| Literal | A constant used when evaluating | Literal, Constant |
| | Rules or determining the value of | |
| | Computed Data. | |
| | | |
| Operator | An opcode representing a | Operator |
| | mathematical function known to an | |
| | Agent. | |
+-----------+-----------------------------------+-------------------+
AMA Logical Components
The remainder of this section describes the format of these
structures in the context of the aforementioned ADM data types.
Birrane, et al. Expires May 3, 2018 [Page 17]
Internet-Draft ADM October 2017
8.2. Externally Defined Data (EDD)
Externally defined data (EDD) are predefined components of an ADM for
various applications and protocols. These represent values that are
calculated outside of the context of Agents and Managers, such as
those values measured by firmware. As such, their value is defined
external to the ADM system.
8.2.1. Definition
An EDD consists of a MID, type, and a description, as follows.
MID
EDDs are defined solely in the context of an ADD. Since they
are sampled external to the management system, changes or
additions to EDDs require changes to how the network
management system interfaces with other components on an
Agent.
Because an EDD is defined in the context of an ADD, it MUST
NOT contain an Issuer or Tag field and the type of the MID
MUST be the EDD type.
Type
This represents the data type of the value associated with
the EDD.
Description
This represents the human-readable description of the EDD, as
a string.
8.2.2. Processing
Managers
o Store the MID for each known EDD definition.
o Associate a data type to each known EDD definition.
o Encode EDD MIDs in Controls to Agents, as appropriate.
Agents
o Store the MID for each known EDD definition.
o Associate a data type to each known EDD definition.
o Calculate the value of an EDD definition when required, such as
when generating a Report Entry or evaluating an Expression.
Birrane, et al. Expires May 3, 2018 [Page 18]
Internet-Draft ADM October 2017
8.3. Variables (VAR)
Variables (VAR) may be predefined in an ADD or dynamically in a
network deployment. VARs differ from EDDs in that they are
completely described by other known data in the system (either other
VARs or other EDDs). For example, letting E# be a EDD item and V# be
a VAR item, the following are examples of VAR definitions.
V1 = E1 * E2
V2 = V1 + E3
8.3.1. Definition
VARs are defined by a MID, a type, an initializing expression, and a
description, as follows.
MID
The type of this MID MUST be type VAR, and the MID MUST NOT
contain parameters.
Type
This is the type of the VAR, and acts as a static cast for
the result of the initializing EXPR. This type MUST be one
of the data types defined in Table 1. Note, it is possible
to specify a type different than the resultant type of the
initializing EXPR. For example, if an EXPR adds two single-
precision floating point numbers, the VAR MAY have an integer
type associated with it.
Initializer
The initial value of the VAR is given by an initializing
EXPR. In the case where the type of the VAR itself is EXPR
the initializer is used as the value of the VAR. In the case
where the type of the VAR is anything other than EXPR, then
the initializer EXPR will be evaluated and the resultant
value will be used as the initial value of the VAR.
Description
This represents the human-readable description of the VAR, as
a string.
8.3.2. Processing
Managers
o Store the MID for each ADD-defined VAR definition.
Birrane, et al. Expires May 3, 2018 [Page 19]
Internet-Draft ADM October 2017
o Send requests to Agents to add, list, describe, and remove VAR
definitions.
o Remember custom VAR definitions.
o Encode VAR MIDs in Controls to Agents, as appropriate.
Agents
o Store the MID for each ADD-defined VAR definition.
o Calculate the value of VARs when required, such as during Rule
evaluation, calculating other VAR values, and generating Reports.
o Add, remove, list, and describe custom VAR definitions.
8.4. Tables
A Table is a named, typed, collection of tabular data. Columns
within a table are named and typed. Rows within a table capture
individual data sets with one value in each row corresponding to one
column in the table.
Tables are represented in two ways in the ADM: Table Definitions and
Table Instances. A Table Definition appears in an ADD and describes
the general format of a table. A Table Instance is a set of data
populated according to the structure of a Table Definition.
8.4.1. Table Template (TBLT)
Table definitions are predefined items of an ADM and, as such, MUST
appear in the ADD for an application.
8.4.1.1. Definition
TBLTs are defined by a MID, a set of column descriptions, and a
description, as follows.
MID
The type of this MID MUST be type TBLT, and the MID MUST NOT
contain parameters. Since Table Template definitions only
appear in an ADD document, this MID MUST NOT contain an
Issuer or a Tag field.
Columns
A Table is completely defined by its ordered set of columns
descriptions. Each column description is a name and a type.
Birrane, et al. Expires May 3, 2018 [Page 20]
Internet-Draft ADM October 2017
The type of each column MUST be one of the primitive types
defined in Table 1.
A column description is represented as a TNV string that MUST
contain TYPE and NAME information and MUST NOT contain VALUE
information. For example, a table with three columns could
be represented by the TNV string
"REAL32:col1&INT:col2&UINT:col3".
Description
This represents the human-readable description of the TABLE
template, as a string.
8.4.2. Table (TBL)
Tables are collections of data that MUST be constructed in accordance
with an associated Table Template. Tables MUST NOT appear in the ADD
for an application; they are only instantiated dynamically as part of
the operation of a network.
8.4.2.1. Definition
TBLs are defined by their Table Template, the number of rows in the
table, and the associated set of data values for each row.
Template MID
This is the MID of the Table Template holding the column
definitions for this table. This MID MUST match a known
Table Template defined in an ADD.
Number of Rows
This is the number of rows in the table. A Table MAY have
zero rows.
Rows Information
Each row in a TBL is represented as the number of data
elements in the row, followed by the data elements
themselves.
The number of data values for each row MUST be equal to the
number of columns defined for the Table Template.
The data values for each row are represented by a TNV that
optionally contains TYPE information and MUST contain value
information. Type information MAY be included when necessary
to verify that elements entered into a table match the type
expected by a column in the table.
For example, given the above Table Template example, a valid
row could be represented as "=3.14&=3&=3" or as
"REAL32:=3.14&INT:=3&UINT:=3".
Birrane, et al. Expires May 3, 2018 [Page 21]
Internet-Draft ADM October 2017
8.4.3. Processing
Managers
o Store the MID for each ADD-defined Table Template definition.
o Request that Agents populate tables according to this template.
Agents
o Store the MID for each ADD-defined Table Template definition.
o Produce Tables in accordance with Table Template definitions when
required.
8.5. Reports
A Report is a set of non-tabular, potentially nested data items that
may be predefined in the context of an ADD, or defined dynamically in
the context of a deployed network.
Reports are represented in two ways in the ADM: Report Templates and
Reports. A Report Template defines the type of information to be
included in a report, and a Report contains that information.
8.5.1. Report Template (RPTT)
A Report Template (RPTT) is the ordered set of data descriptions that
describe how values will be represented in a corresponding Report.
RPTTs can be viewed as a schema that describes how to interpret a
Report; they contain no values and are either defined in an ADM or
configured between Managers and Agents during network operations.
8.5.1.1. Definition
RPTTs are defined by a MID, the set of information comprising the
report, and a description, as follows.
MID
The type of this MID MUST be type RPTT. If the RPTT is
defined in an ADD it MUST NOT contain an Issuer or Tag field.
If the RPTT is defined outside of an ADD it MUST contain an
Issuer field and MAY contain a Tag field.
An RPTT MID MAY be parameterized. If the RPTT MID is
parameterized, the parameters MUST be used (in the same
number and order) to customize any parameterized data in any
Report generated using this template.
Birrane, et al. Expires May 3, 2018 [Page 22]
Internet-Draft ADM October 2017
Entries
The list of ordered data items to be included in the report
is represented by the list of identifiers for those items.
Since every structure in the ADM can be identified by a MID,
this value is represented by a MC.
NOTE: Since a RPTT is identified by a MID, it is possible
that a RPTT contains the MID of another RPTT. This signifies
that a report has, as one of its entries, another report.
This is allowed in the system, but MUST NOT lead to circular
references.
Description
This represents the human-readable description of the Report
template, as a string.
8.5.2. Report (RPT)
A Report (RPT) is a set of data values populated in conformance to a
given RPTT. Each data value in a report is termed a Report Entry
(RPTE).
8.5.2.1. Definition
RPTs are defined by their associated report template and the report
entries themselves, as follows.
RPTT MID
This is the identifier associated with the structure used to
help interpret the Report. A Report may be generated in
accordance with a predefined Report Template, in which case
the MID MUST be the MID of the RPTT. However, a Report MAY
be generated without an RPTT (called an anonymous report) in
which case this MID MUST be the MID of the Control that
caused the report to be generated.
Report Entries)
This is the collect of data that comprise the report. These
entires MUST consist of a series of data values and MAY
additionally contain type information for each entry.
RPTEs are represented by a TNV collection. This TNV MUST
contain VALUEs and MAY contain NAMES. If the RPTT MID
associated with this Report is of type CTRL (in which case
this is an anonymous Report) then the TNV MUST contain TYPE
information as well. Otherwise, the TNV MAY contain TYPE
information.
Birrane, et al. Expires May 3, 2018 [Page 23]
Internet-Draft ADM October 2017
8.5.3. Processing
Managers
o Store the MID for each ADD-defined Report Template.
o Send requests to Agents to add, list, describe, and remove custom
Report Templates.
o Remember custom Report Templates when processing Report Entries
received by Agents.
o Encode Report Template MIDs in Controls to Agents, as appropriate.
Agents
o Store the MID for each ADD-defined Report Template.
o Populate Report Entries for transmission to Managers when required
by a Control.
o Add, remove, list, and describe custom Report Templates.
8.6. Control (CTRL)
A Control represents a predefined (possibly parameterized) opcode
that can be run on an Agent. Controls in the ADM are always defined
in the context of an ADD as there is no concept of an operator-
defined Control. Since Controls are pre-configured in Agents and
Managers as part of ADM support, their representation is simply the
MID that identifies them, similar to EDDs.
8.6.1. Definition
Controls are identified by their MID and their description, as
follows.
MID
This is the MID identifying the Control. The MID MUST be of
type CTRL. Since Controls are only defined in ADDs, this MID
MUST NOT have an Issuer field and MUST NOT have a Tag field.
The MID MAY have parameters.
When defined in the context of an ADD, the Control MID MUST
match the definition of a Formal Parameter list (e.g., there
are no VALUES). This is because the ADD defines the Controls
that can be invoked, but does not define any particular
invocation of a Control.
Birrane, et al. Expires May 3, 2018 [Page 24]
Internet-Draft ADM October 2017
When used as part of network operations, a Control MID MUST
match the definition of an Actual Parameter list (e.g., there
are VALUES). This is because when used operationally, a
parameterized Control required parameters to be run.
In cases where a Control takes no parameters, the definition
in the ADD document MUST be considered the definition of the
Control and the presence of the same MID in the context of an
operational system MUST be seen as an invocation of that
Control.
Description
This represents the human-readable description of the
Control, as a string.
8.6.2. Processing
Managers
o Store the MID for each ADD-defined Control definition.
o Store the number of parameters and each parameter type for
parameterized Controls.
o Encode Control MIDs in other Controls to Agents, as appropriate.
Agents
o Store the MID for each ADD-defined Control definition.
o Implement Controls in firmware and run Controls with appropriate
parameters when necessary in the context of Manager direction and
Rule execution.
o Communicate "return" values from Controls back to Managers as
Report Entries where appropriate.
8.7. Time-Based Rule (TRL)
A Time-Based Rule (TRL) specifies that a particular action should be
taken by an Agent based on some time interval. A TRL specifies that
starting at a particular START time, and for every PERIOD seconds
thereafter, an ACTION should be run by the Agent until the ACTION has
been run for COUNT times. When the TRL is no longer valid it MAY BE
discarded by the Agent.
Examples of TRLs include:
Birrane, et al. Expires May 3, 2018 [Page 25]
Internet-Draft ADM October 2017
Starting 2 hours from receipt, produce a Report Entry for Report
Template R1 every 10 hours ending after 20 times.
Starting at the given absolute time, run Macro M1 every 24 hours
ending after 365 times.
8.7.1. Definition
MID
This is the MID identifying the TRL. When a TRL is defined
in an ADD this MID MUST NOT have an Issuer field and MUST NOT
have a Tag field. When the TRL is defined outside of an ADD,
the MID MUST have an Issuer field and MAY have a Tag field.
This MID MUST NOT be parameterized.
START
The time at which the TRL should start to be evaluated. This
will mark the first running of the action associated with the
TRL.
PERIOD
The number of seconds to wait between running the action
associated with the TRL.
COUNT
The number of times the TRL action may be run. The special
value of 0 indicates the TRL should continue running the
action indefinitely.
ACTION
The collection of Controls and/or Macros to run by the TRL.
This is captured as a MC with the constraint that every MID
within the MC represent a Control or Macro.
Description
This represents the human-readable description of the TRL, as
a string.
8.7.2. Processing
Managers
o Send requests to Agents to add, list, describe, and remove custom
TRL definitions.
o Remember custom TRL definitions when processing Reports received
by Agents.
Birrane, et al. Expires May 3, 2018 [Page 26]
Internet-Draft ADM October 2017
o Send requests to Agents to suspend/resume the evaluation of TRLs.
o Encode TRL MIDs in Controls to Agents, as appropriate.
Agents
o Run the actions associated with TRLs in accordance with their
start time and period.
o Add, remove, list, and describe custom TRL definitions.
o Suspend and resume the evaluation of a TRL when directed by a
Manager or another Rule.
o Report on the status of TRLs.
8.8. State-Based Rule (SRL)
A State-Based Rule (SRL) specifies that a particular action should be
taken by an Agent based on some evaluation of the internal state of
the Agent. A SRL specifies that starting at a particular START time
an ACTION should be run by the agent if some CONDITION evaluates to
true, until the ACTION has been run COUNT times. When the SRL is no
longer valid it MAY be discarded by the agent.
Examples of SRLs include:
Starting 2 hours from receipt, whenever V1 > 10, produce a Report
Entry for Report Template R1 no more than 20 times.
Starting at some future absolute time, whenever V2 != V4, run
Macro M1 no more than 36 times.
8.8.1. Definition
MID
This is the MID identifying the SRL. When a report is
defined in an ADM this MID MUST NOT have an Issuer field and
MUST NOT have a Tag field. When the SRL is defined outside
of an ADM, the MID MUST have an Issuer field and MAY have a
Tag field. This MID MUST NOT be parameterized.
START
The time at which the SRL condition should start to be
evaluated. This will mark the first evaluation of the
condition associated with the SRL.
CONDITION
Birrane, et al. Expires May 3, 2018 [Page 27]
Internet-Draft ADM October 2017
The Predicate which, if true, results in the SRL running the
associated action.
COUNT
The number of times the SRL action can be run. The special
value of 0 indicates there is no limit on how many times the
action can be run.
ACTION
The collection of Controls and/or Macros to run as part of
the action. This is captured as a MC data type with the
constraint that every MID within the MC represent a Control
or Macro.
Description
This represents the human-readable description of the SRL, as
a string.
8.8.2. Processing
Managers
o Send requests to Agents to add, list, describe, suspend, resume,
and remove custom SRL definitions.
o Remember custom SRL definitions when processing Report Entries
received by Agents.
o Encode SRL MIDs in Controls to Agents, as appropriate.
Agents
o Run the actions associated with SRLs in accordance with their
start time and evaluation of their predicate.
o Add, remove, list, and describe custom SRL definitions.
o Suspend and resume SRL evaluation when commanded by a Manager or
another Rule.
8.9. Macro (MAC)
Macros are ordered collections of MIDs (an MC) that contain Controls
or other Macros. When run by an Agent, each MID in the MC is run in
order.
Birrane, et al. Expires May 3, 2018 [Page 28]
Internet-Draft ADM October 2017
8.9.1. Definition
A Macro is defined by a MID, a set of Controls, and a description, as
follows.
MID
This is the MID identifying the Macro. When a Macro is
defined in an ADD this MID MUST NOT have an Issuer field and
MUST NOT have a Tag field. When the Macro is defined outside
of an ADD, the MID MUST have an Issuer field and MAY have a
Tag field. This MID MUST NOT be parameterized.
Definition
This is the ordered collection of MIDs that identify the
Controls and other Macros that should be run as part of
running this Macro. This is represented by a MC.
Description
This represents the human-readable description of the MACRO,
as a string.
8.9.2. Processing
Managers
o Store the MID for each ADD-defined Macro definition.
o Send requests to Agents to add, list, describe, and remove custom
Macro definitions.
o Encode macro MIDs in Controls to Agents, as appropriate.
Agents
o Store the MID for each ADD-defined Macro definition.
o Remember custom Macro definitions and run Macros when appropriate,
such as when responding to a run-Macro Control or when executing
the action of a TRL or SRL.
o Add, remove, list, and describe custom Macro definitions.
8.10. Constant (CONST)
Constants represent named basic values. Examples include common
mathematical values such as PI or well-known Epochs such as the UNIX
Epoch. Constants are defined solely within the context of ADDs.
Birrane, et al. Expires May 3, 2018 [Page 29]
Internet-Draft ADM October 2017
8.10.1. Definition
A CONST is defined by its MID, value, and description, as follows.
MID
The MID MUST have type CONST and MUST NOT have an Issuer
field and MUST NOT have a Tag field. MIDs for CONST
structures MUST NOT be parameterized.
Typed Value
The value of a constant is the immutable value that should be
used in lieu of the Constant MID when evaluating Expressions
and Predicates.
The typed value of a CONST is represented by a TNV collection
that MUST have 1 element and MUST contain a TYPE and a VALUE
and MUST NOT contain a NAME. An example of a typed value for
a CONST would be ""REAL32:=3.14".
Description
This represents the human-readable description of the CONST,
as a string.
8.10.2. Processing
Managers
o Store the MID for each ADD-defined Constant definition.
o Encode Constant MIDs in controls to Agents, as appropriate.
Agents
o Store the MID for each ADD-defined Constant definition.
o Calculate the value of Constants where appropriate, such as when
generating a Report Entry or when evaluating an Expression.
8.11. Operator (OP)
Operators represent user-defined mathematical functions implemented
in the firmware of an Agent for the purpose of aiding the evaluation
of Expressions and Predicates. The ADM separates the concepts of
Operators and Controls to prevent side-effects in Expression and
Predicate evaluation (e.g. to avoid constructs such as A = B +
GenerateReport()) which is why Operators are given their own
structure type and Controls do not support a return value.
Birrane, et al. Expires May 3, 2018 [Page 30]
Internet-Draft ADM October 2017
Because Operators represent custom firmware implemented on the Agent,
they are not defined dynamically as part of network operations.
Therefore, they may only be defined in the ADD for an application.
8.11.1. Definition
An Operator is defined by its MID, its resultant type, the number of
operands, the type of operands, and a description, as follows.
MID
The MID MUST have type OP and MUST NOT have an Issuer or Tag
field. The MID MUST NOT be parameterized.
Out Type
This is the return value of the Operator and MAY be different
than the operand types accepted by the Operator.
Num Operands
This is the number of operands accepted by the operator. For
example, the unary NOT Operator ("!") would accept one
parameter. The binary PLUS Operator ("+") would accept two
parameters. A custom function to calculate the average of
the last 10 samples of a data item would accept 10
parameters.
In Types
This is the TYPE information for each operand accepted by the
Operator. This is represented as a TNV Collection that MUST
contain TYPE information, MAY contain NAME information and
MUST NOT contain VALUE information. There MUST be exactly
the same number of elements in the TNV collection as the Num
Operands specified for the Operator.
Description
This represents the human-readable description of the
Operator, as a string.
8.11.2. Processing
Managers
o Store the MID for each ADD-defined Operator definition.
o Encode Operator MIDs in Controls to Agents, as appropriate.
Agents
o Store the MID for each ADD-defined Operator definition.
Birrane, et al. Expires May 3, 2018 [Page 31]
Internet-Draft ADM October 2017
o Store the number of parameters expected for each Operator.
o Calculate the value of applying an Operator to a given set of
parameters, such as when evaluating an Expression.
9. Data Type IDs and Enumerations
This section defines identifiers and enumeration values for objects
defined in the ADM. Identifiers are the text abbreviations used in
ADMs to identify data types. Enumerations associate data types with
a numeric value. These enumerations MUST be used whenever a data
type is represented as a numerical representation.
IDs and enumerations are grouped by the kind of data they represent,
as follows. ADM structure identifiers occupy enumerations 0 - 9 and
represent data structures that are formally identified by a MID.
Basic data types occupy enumerations 10-18 and represent primitive
data types. Special types occupy the remaining enumeration space.
While the ADM does not specify any encoding of data model elements, a
common set of enumerations help to ensure that various encoding
standards can interoperate.
Structure ID Enumeration Numeric
------------------------------- -------------- ----------- ----------
Externally Defined Data EDD 0 No
Variable VAR 1 No
Table Template TBLT 2 No
Report Template RPTT 3 No
Control CTRL 4 No
Time-Based Rule TRL 5 No
State-Based Rule SRL 6 No
Macro MACRO 7 No
Constant CONST 8 No
Operator OP 9 No
Birrane, et al. Expires May 3, 2018 [Page 32]
Internet-Draft ADM October 2017
Basic Data Type ID Enumeration Numeric
------------------------------- -------------- ----------- ----------
BYTE BYTE 10 No
Signed 32-bit Integer INT 11 Yes
Unsigned 32-bit Integer UINT 12 Yes
Signed 64-bit Integer VAST 13 Yes
Unsigned 64-bit Integer UVAST 14 Yes
Single-Precision Floating Point REAL32 15 Yes
Double-Precision Floating Point REAL64 16 Yes
Character String STR 17 No
Boolean BOOL 18 No
Compound/Special Data Type ID Enumeration Numeric
------------------------------- -------------- ----------- ----------
Hex String TS 19 No
Timestamp TS 20 No
Type-Name-Value Collection TNV 21 No
Asynchronous Resource Namespace ARN 22 No
Managed Identifier MID 23 No
MID Collection MC 24 No
Expression EXPR 25 No
Predicate EXPR 26 No
9.1. Numeric Promotions
When attempting to evaluate operators of different types, wherever
possible, an Agent MAY need to promote operands until they are of the
correct type. For example, if an Operator is given both an INT and a
REAL32, the INT SHOULD be promoted to a REAL32 before the Operator is
applied.
Listing legal promotion rules is mandatory for ensuring that behavior
is similar across multiple implementations of Agents and Managers.
Birrane, et al. Expires May 3, 2018 [Page 33]
Internet-Draft ADM October 2017
The listing of legal promotions in the ADM are listed in Figure 2.
In this Figure, operands are listed across the top row and down the
first column. The resultant type of the promotion is listed in the
table at their intersection.
INT UINT VAST UVAST REAL32 REAL64
+--------+--------+--------+--------+--------+--------+
INT | INT | INT | VAST | UNK | REAL32 | REAL64 |
UINT | INT | UINT | VAST | UVAST | REAL32 | REAL64 |
VAST | VAST | VAST | VAST | VAST | REAL32 | REAL64 |
UVAST | UNK | UVAST | VAST | UVAST | REAL32 | REAL64 |
REAL32 | REAL32 | REAL32 | REAL32 | REAL32 | REAL32 | REAL64 |
REAL64 | REAL64 | REAL64 | REAL64 | REAL64 | REAL64 | REAL64 |
+--------+--------+--------+--------+--------+--------+
Figure 2: Numeric Promotions
ADMs do not permit promotions between non-numeric types, and numeric
promotions not listed in this section are not allowed. Any attempt
to perform an illegal promotion SHOULD result in an error.
9.2. Numeric Conversions
Variables, Expressions, and Predicates are typed values. When
attempting to assign a value of a different type, a numeric
conversion must be performed. Any numeric type may be converted to
any other numeric type in accordance with the C rules for arithmetic
type conversions.
10. YANG Modules
This section contains three sets of YANG modules which capture the
ADM and ADT concepts.
10.1. ADM Types and Structures
There are two YANG modules that capture all elements of the ADM:
basic structures and complex structures, as follows.
module basic-structures{
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:basic-structures";
prefix basic;
Birrane, et al. Expires May 3, 2018 [Page 34]
Internet-Draft ADM October 2017
organization "JHUAPL";
contact
"Edward.Birrane@jhuapl.edu";
revision "2017-10-30" {
description "Initial Revision";
}
description
"This YANG module models the basic structures and collections that make up the complex structures in asynchronous systems.";
typedef type-enum{
type enumeration{
enum EDD{description "external defined data";}
enum VAR{description "variable";}
enum RPT{description "report";}
enum CTRL{description "control";}
enum SRL{description "state-based rule";}
enum TRL{description "time-based rule";}
enum MACRO{description "macro";}
enum CONST{description "constant";}
enum OP{description "operator";}
enum TBL{description "table";}//moved to capture in a nibble
enum LIT{description "literal";}
enum BYTE{description "unsigned byte value";}
enum INT{description "32bit signed integer";}
enum UINT{description "32bit unsigned integer";}
enum VAST{description "64bit signed integer";}
enum UVAST{description "64bit unsigned integer";}
enum REAL32{description "32bit floating point";}
enum REAL64{description "64bit floating point";}
enum BOOL{description "boolean";}
enum SDNV{description "self-delimiting numeric value";}
enum TS{description "timestamp";}
enum STR{description "string";}
enum BLOB{description "binary large object";}
enum MID{description "managed identifier";}
enum MC{description "MID collection";}
enum EXPR{description "expression";}
enum DC{description "data-collection";}
enum TC{description "type-collection";}
enum TDC{description "type-data-collection";}
}
description "This is the enumeration for the various basic data types.";
}
typedef hex-string{
Birrane, et al. Expires May 3, 2018 [Page 35]
Internet-Draft ADM October 2017
type string{
pattern
'[0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*';
}
description
"This defines a hexadecimal string with octets represented as hex digits
separated by colons. The canonical representation uses
lowercase characters.";
reference
"RFC 6991:Common YANG Data Types";
}
typedef mid-ref{
type string{
pattern
'^(EDD|VAR|RPT|CTRL|SRL|TRL|MACRO|CONST|OP|TBL).\w+$';
}
description
"A mid reference uses the MID's type and it's unique name to quickly identify it.
They are used in MID collections to avoid restating already defined MIDs, helping to reduce space.";
}
typedef ts{
type uint64;
description
"A timestamp value can represent either a relative or absolute time.
A relative time is defined as the number of seconds between two events.
An absolute time is defined as UTC time using the UNIX/POSIX Epoch.";
}
typedef type-name-value-collection{
type string{
pattern
'^((EDD|VAR|RPT|CTRL|SRL|TRL|MACRO|CONST|OP|BYTE|INT|UINT|VAST|UVAST|REAL32|REAL64|BOOL|SDNV|TS|STR|BLOB|MID|MC|EXR|DC|TDC|TBL):\S+(&(EDD|VAR|RPT|CTRL|SRL|TRL|MACRO|CONST|OP|BYTE|INT|UINT|VAST|UVAST|REAL32|REAL64|BOOL|SDNV|TS|STR|BLOB|MID|MC|EXR|DC|TDC|TBL):\S+)*)|(^\S+=\S+(&\S+=\S+)*)|((EDD|VAR|RPT|CTRL|SRL|TRL|MACRO|CONST|OP|BYTE|INT|UINT|VAST|UVAST|REAL32|REAL64|BOOL|SDNV|TS|STR|BLOB|MID|MC|EXR|DC|TDC|TBL):\S+=\S+(&(EDD|VAR|RPT|CTRL|SRL|TRL|MACRO|CONST|OP|BYTE|INT|UINT|VAST|UVAST|REAL32|REAL64|BOOL|SDNV|TS|STR|BLOB|MID|MC|EXR|DC|TDC|TBL):\S+=\S+)*)(&((EDD|VAR|RPT|CTRL|SRL|TRL|MACRO|CONST|OP|BYTE|INT|UINT|VAST|UVAST|REAL32|REAL64|BOOL|SDNV|TS|STR|BLOB|MID|MC|EXR|DC|TDC|TBL):\S+(&(EDD|VAR|RPT|CTRL|SRL|TRL|MACRO|CONST|OP|BYTE|INT|UINT|VAST|UVAST|REAL32|REAL64|BOOL|SDNV|TS|STR|BLOB|MID|MC|EXR|DC|TDC|TBL):\S+)*)|(^\S+=\S+(&\S+=\S+)*)|((EDD|VAR|RPT|CTRL|SRL|TRL|MACRO|CONST|OP|BYTE|INT|UINT|VAST|UVAST|REAL32|REAL64|BOOL|SDNV|TS|STR|BLOB|MID|MC|EXR|DC|TDC|TBL):\S+=\S+(&(EDD|VAR|RPT|CTRL|SRL|TRL|MACRO|CONST|OP|BYTE|INT|UINT|VAST|UVAST|REAL32|REAL64|BOOL|SDNV|TS|STR|BLOB|MID|MC|EXR|DC|TDC|TBL):\S+=\S+)*))*$';
}
description
"A TNV collection describes a list of ADM items where each item is described as a three tuple of {type, name, value}
or certain permitted subsets of that three-tuple.
GENERAL FORMAT- <type>:<name>=<value>";
}
grouping mid{
description
"A managed identifier(MID) is used to provide unique naming for structures.
There is a general MID format for everything except for Literals.
Literal MIDs are interpreted in a different way to express numeric values without the need to store numbers as full MIDs.
Birrane, et al. Expires May 3, 2018 [Page 36]
Internet-Draft ADM October 2017
Regular expressions are used to show a general human readable organization of a MID.";
leaf name{
type string;
description
"The human readable name identifying the MID. Should act as the key in the structure containing the MIDs.";
}
choice mid{
case reg-mid{
leaf id{
type string{
pattern
'^(EDD|VAR|RPT|CTRL|SRL|TRL|MACRO|CONST|OP|TBL)_(\w+)(\.\w+)?(:\w+(:\w+)?)?$';
}
mandatory true;
description
"This pattern organizes the needed information for a MID.
<TYPE>_<ID>.<opt nicknamed>:<opt issuer>:<opt tag>
The type and ID field is mandatory. Everything else is optional and can be left as an empty section.
The type gives the type of the identifed object. The ID is the unique ID of the object.
The optional but encouraged nickname helps to reduce the total space of the MID.
The optional issuer represents a predetermined issuer name.
The optional tag is used to disambiguate multiple MIDs with the same OID/Issuer combination. MIDs can't have a tag without an issuer.
ex.) VAR_01.14 => MID for a for a non-parameterized compressed variable with nickname 14 and id 01";
}
choice params{
case proto{
leaf paramspec-proto{
type type-name-value-collection;
description
"In a proto-mid, parameters represents a prototype with parameters being a type collection.";
}
}
case full{
leaf paramspec{
type type-name-value-collection;
description
"This parameter specification can represent a function call with the parameters being a typed data collection.";
}
}
description
"Depending on if the MID's parameters have values or not, a type-collection or a type-data-collection could be used.";
}
Birrane, et al. Expires May 3, 2018 [Page 37]
Internet-Draft ADM October 2017
}
case LIT-mid{
leaf num-id{
type string{
pattern
'^LIT_(INT|UINT|VAST|UVAST|REAL32|REAL64)\.(\d+(\.\d+))?$';
}
mandatory true;
description
"Literals are specialized MIDs.
Since Literals are not stored and evaluated when needed, there is no 'name field' associated with them.
Literals only contain type value information.
ex.) LIT_INT.9 is how the integer value 9 would be expressed";
}
}
mandatory true;
description
"You can use either a standard MID or a specialized literal MID to represent numbers.";
}
}
grouping mid-collection{
description
"A mid collection(MC) is a collection of MIDs. The ideal way to show a MC is to list the MIDs using a mid-ref or nickname id pair,
and use the full-MIDs only when that MID is being defined for the first time.";
choice mc-type{
case string{
leaf string-mc{
type string;
description
"The MID collection is represented using a string to list all the mids.
If it contains MIDs that have already been defined, then it should use the mid-ref format previously stated.
MIDs are separated by spaces.";
}
}
case array{
leaf-list array-mc{
type string;
description
"The MID collection is represented using an array to list all the MIDs.
If it contains MIDs that have already been defined then it should use the mid-ref format previously stated.";
}
}
mandatory true;
description
Birrane, et al. Expires May 3, 2018 [Page 38]
Internet-Draft ADM October 2017
"A MID collection can be modeled as a string, where MIDs are separated by spaces, or by an array of MIDs.";
}
}
grouping expr{
description
"Expressions apply operations to values to generate new values.";
leaf type{
type type-enum;
mandatory true;
description
"This is the enumeration representing the type of the result of the evaluated expression";
}
uses mid-collection{
description
'An expression is represented as a MID collection,
where each MID in the ordered collection represents the data, constants
and/or operations that comprise the expression. The expression must use the following pattern:
EDD/VAR/CONST/NUM.name OP.name EDD/VAR/CONST/NUM.name.....
(((EDD)|(VAR)|(CONST)|(NUM)).(\w+)_?)+op.\S)+
Uses post fix format.';
}
}
}
module complex-structures{
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:complex-structures";
prefix complex;
import basic-structures{
prefix basic;
}
organization "JHUAPL";
contact
"Edward.Birrane@jhuapl.edu";
revision "2017-10-30" {
description "Initial Revision";
}
description
"This module models complex structures for asynchronous systems.";
Birrane, et al. Expires May 3, 2018 [Page 39]
Internet-Draft ADM October 2017
grouping externally-defined-data {
description
"Externally defined data (EDD) represents values that are calculated outside of the context of Agents and Managers
such as values that are measured by firmware.";
uses basic:mid;
leaf type {
type basic:type-enum;
mandatory true;
description
"This is the type of the stored data.";
}
leaf description{
type string;
description
"This gives a human readable description of the EDD.";
}
}
grouping variable{
description
"Variables are values that are completely described by other known data in the system such as other variables or other EDDs.";
uses basic:mid{
description
"This is the MID for the variable.";
}
leaf type{
type basic:type-enum;
mandatory true;
description
"This is the type of the variable. It acts as a static cast for the result of the initializing expression.";
}
container initializer{
uses basic:expr;
presence
"This is the initializer represented by an expression";
description
"An expression is used as the initializer for the variable.";
}
leaf description{
type string;
description
Birrane, et al. Expires May 3, 2018 [Page 40]
Internet-Draft ADM October 2017
"This is the human readable description of the variable.";
}
}
grouping table-template {
description
"This is the template for prototyping tables.";
uses basic:mid{
description
"This is the MID for the table-template.";
}
leaf columns{
type basic:type-name-value-collection;
mandatory true;
description
"A TNV collection is used to store the type and names of the columns in the table-template.";
}
leaf description{
type string;
description
"This is the human readable description of the table.";
}
}
grouping table {
description
"A table is a names, typed, collection of tabular data with each row represented as a data collection
and each column defined by both a column name and a column type.";
uses basic:mid{
description
"This is the MID for the table.";
}
leaf columns{
type basic:type-name-value-collection;
mandatory true;
description
"A TNV collection is used to store the type and names of the columns in the table.";
}
leaf num-rows{
type uint64;
mandatory true;
description
Birrane, et al. Expires May 3, 2018 [Page 41]
Internet-Draft ADM October 2017
"This is the number of rows in the TBL.";
}
list rows{
key "num";
leaf num{
type uint64;
description "This is the number of data values in the row.";
}
leaf data{
type basic:type-name-value-collection;
description
"A TNV collection is used since col-types gives the types.";
}
description
"These are the rows of the table.";
}
leaf description{
type string;
description "This is the human readable description of the table.";
}
}
grouping report{
description
"A report is a typed data collection that is identified by a mid and generated to capture the return value of a control.";
uses basic:mid{
description
"This contains the MID for the report entry.";
}
leaf values{
type basic:type-name-value-collection;
description
"This TNV collection contains the values for the report entry.";
}
leaf description{
type string;
description
"This is the human readable description of the report-entry.";
}
}
Birrane, et al. Expires May 3, 2018 [Page 42]
Internet-Draft ADM October 2017
grouping report-template{
description
"A report template is the ordered set of data descriptions which describe
how values will be represented in a corresponding report entry.";
uses basic:mid{
description
"This contains the MID for the report entry.";
}
uses basic:mid-collection;
leaf description{
type string;
description
"This is the human readable description of the report-template.";
}
}
grouping control{
description
"A control represents a pre-defined opcode that can be run on an agent.";
uses basic:mid{
description
"This is the MID identifying the control. It must NOT have an issuer field nor a tag field.";
}
leaf description{
type string;
description
"This is the human readable description of the control.";
}
}
grouping time-based-rule{
description
"A time based rule specifies that a particular action should be taken by an agent
based on some time interval.";
uses basic:mid{
description
"This is the MID identifying the time-based rule.";
}
leaf start{
type basic:ts;
mandatory true;
description
Birrane, et al. Expires May 3, 2018 [Page 43]
Internet-Draft ADM October 2017
"This is the time at which the TRL should start.";
}
leaf period{
type uint64;
default 1;
description
"This is the length of time to wait in between running the action associated with the TRL.";
}
leaf count{
type uint64;
mandatory true;
description
"This is the number of times that action is performed. 0 = inf";
}
container action{
uses basic:mid-collection;
presence
"The action is a mid-collection;";
description
"This is the collection of controls and/or macros to be run by the TRL.";
}
leaf description{
type string;
description
"This is the human readable description of the time-based-rule.";
}
}
grouping state-based-rule{
description
"A state based rule(SRL) specifies that a particular action should be taken by an agent
based on some evaluation of the internal state of the agent.";
uses basic:mid{
description
"This is the MID identifying the SRL.";
}
leaf start{
type basic:ts;
mandatory true;
description
"This is the time at which the SRL should start to be evaluated.";
}
Birrane, et al. Expires May 3, 2018 [Page 44]
Internet-Draft ADM October 2017
container condition{
uses basic:expr;
presence
"The condition is represented by an expression.";
description
"This contains the boolean expression, which, if true, results in the SRL running the associated action.";
}
leaf count{
type uint64;
mandatory true;
description
"This is the number of times the action is run. 0 = inf";
}
container action{
uses basic:mid-collection;
presence
"The action is a mid-collection.";
description
"This is the collection of controls and/or macros to be run as part of the action.";
}
leaf description{
type string;
description
"This is the human readable description of the state-based-rule.";
}
}
grouping macro{
description
"This is the ordered collections of MIDs that contain controls or other macros. When run by an agent, each MID in the mid-collection
is run in order.";
uses basic:mid{
description
"This is the MID identifying the Macro.";
}
container definition{
uses basic:mid-collection;
presence
"The definition is represented by a mid collection.";
description
"This is the ordered collections of MIDs which identify the controls and
other macros that should be run as part of the running macro.";
}
Birrane, et al. Expires May 3, 2018 [Page 45]
Internet-Draft ADM October 2017
leaf description{
type string;
description
"This is the human readable description of the macro.";
}
}
grouping constant{
description
"Constants represent named values defined in an ADM.";
uses basic:mid{
description
"This is the MID that corresponds to the constant.";
}
leaf typed-value{
type basic:type-name-value-collection{
pattern
}
mandatory true;
description
"This is the type and value of the constant.";
}
leaf description{
type string;
description
"This is the human readable description of the constant.";
}
}
grouping operator{
description
"Operators are always defined in the context of an ADM. They represent functions
implemented by the firmware of the agent.";
uses basic:mid{
description
"Since Operators are always defined soley in the context of an ADM,
the issuer and tag field should not be used.";
}
leaf out-type{
type basic:type-enum;
description
"This is the type of the return value of the operator.";
}
Birrane, et al. Expires May 3, 2018 [Page 46]
Internet-Draft ADM October 2017
leaf in-type{
type basic:type-name-value-collection{
pattern
}
description
"This is the type(s) of the inputs of the operator.";
}
leaf num-operands{
type uint32;
mandatory true;
description
"This is the number of operands needed to utilize the operator.";
}
leaf description{
type string;
description
"This is the human readable description of the operator.";
}
}
}
10.2. Application Data Template
The ADT lists the set of predefined information necessary to capture
the non-dynamic parts of an application data model, as follows.
module adm{
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:adm";
prefix adm;
import complex-structures{
prefix complex;
}
organization "JHUAPL";
contact
"Edward.Birrane@jhuapl.edu";
revision "2017-10-30" {
description "Initial Revision";
}
description
Birrane, et al. Expires May 3, 2018 [Page 47]
Internet-Draft ADM October 2017
"This YANG module is used for modeling Application Data Models (ADMs). All keys in the list of the information uses the associated with the data's MIDs.";
list metadata{
key "name";
uses complex:constant;
description
"This is the metadata for the ADM. Should contain Name, Version, Namespace, and Issuing organization of the adm";
}
list externally-defined-data{
key "name";
uses complex:externally-defined-data{
description
"These are the EDD definitions that are defined by the ADM and its firmware";
}
description
"This is the listing of all the EDDs that are defined in the ADM.";
}
list tables{
key "name";
uses complex:table-template;
description
"This is the list of all the table/table-templates in the ADM.";
}
list variables{
key "name";
uses complex:variable{
description "These are the variables created and defined by the ADM.";
}
description
"Variable definitions are expressions used to calculate data values, on the fly,
from a set of other variable definitions, EDDs, constants, or numerics using any
of the operators defined.";
}
list report-templates{
key "name";
uses complex:report-template;
description
Birrane, et al. Expires May 3, 2018 [Page 48]
Internet-Draft ADM October 2017
"This is the collection of report templates, which is the ordered set of data descriptions that
describe how values will be represented in a corresponding Report Entry.";
}
list controls{
key "name";
uses complex:control;
description
"This is the collection of controls which represent well-known command opcodes
that can be run by the Agent in response to direct request by an AMP manager or
in response to time- or state-based rules on the agent itself.";
}
list constants{
key "name";
uses complex:constant;
description
"These are the constants made available in the ADM.";
}
list macros{
key "name";
uses complex:macro;
description
"Macro definitions are ordered collections of controls that can be sequentially run.";
}
list operators{
key "name";
uses complex:operator;
description
"This is the set of operators that are made available in the ADM";
}
}
11. IANA Considerations
TBD.
Birrane, et al. Expires May 3, 2018 [Page 49]
Internet-Draft ADM October 2017
12. Security Considerations
TBD
13. Informative References
[I-D.birrane-dtn-ama]
Birrane, E., "Asynchronous Management Architecture",
draft-birrane-dtn-ama-05 (work in progress), March 2017.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>.
Authors' Addresses
Edward J. Birrane
Johns Hopkins Applied Physics Laboratory
Email: Edward.Birrane@jhuapl.edu
Evana DiPietro
Johns Hopkins Applied Physics Laboratory
Email: Evana.DiPietro@jhuapl.edu
David Linko
Johns Hopkins Applied Physics Laboratory
Email: David.Linko@jhuapl.edu
Birrane, et al. Expires May 3, 2018 [Page 50]