draft-ietf-lmap-information-model-01.txt | draft-ietf-lmap-information-model-02.txt | |||
---|---|---|---|---|
Network Working Group T. Burbridge | Network Working Group T. Burbridge | |||
Internet-Draft P. Eardley | Internet-Draft P. Eardley | |||
Intended status: Standards Track BT | Intended status: Standards Track BT | |||
Expires: December 28, 2014 M. Bagnulo | Expires: February 21, 2015 M. Bagnulo | |||
Universidad Carlos III de Madrid | Universidad Carlos III de Madrid | |||
J. Schoenwaelder | J. Schoenwaelder | |||
Jacobs University Bremen | Jacobs University Bremen | |||
June 26, 2014 | August 20, 2014 | |||
Information Model for Large-Scale Measurement Platforms (LMAP) | Information Model for Large-Scale Measurement Platforms (LMAP) | |||
draft-ietf-lmap-information-model-01 | draft-ietf-lmap-information-model-02 | |||
Abstract | Abstract | |||
This Information Model applies to the Measurement Agent within a | This Information Model applies to the Measurement Agent within a | |||
Large-Scale Measurement Platform. As such it outlines the | Large-Scale Measurement Platform. As such it outlines the | |||
information that is (pre-)configured on the MA or exists in | information that is (pre-)configured on the MA or exists in | |||
communications with a Controller or Collector within an LMAP | communications with a Controller or Collector within an LMAP | |||
framework. The purpose of such an Information Model is to provide a | framework. The purpose of such an Information Model is to provide a | |||
protocol and device independent view of the MA that can be | protocol and device independent view of the MA that can be | |||
implemented via one or more Control and Report protocols. | implemented via one or more Control and Report protocols. | |||
skipping to change at page 1, line 46 | skipping to change at page 1, line 46 | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on December 28, 2014. | This Internet-Draft will expire on February 21, 2015. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2014 IETF Trust and the persons identified as the | Copyright (c) 2014 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
skipping to change at page 2, line 28 | skipping to change at page 2, line 28 | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Notation . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Notation . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3. LMAP Information Model . . . . . . . . . . . . . . . . . . . 4 | 3. LMAP Information Model . . . . . . . . . . . . . . . . . . . 4 | |||
3.1. Information Structure . . . . . . . . . . . . . . . . . . 4 | 3.1. Information Structure . . . . . . . . . . . . . . . . . . 4 | |||
3.2. Pre-Configuration Information . . . . . . . . . . . . . . 8 | 3.2. Pre-Configuration Information . . . . . . . . . . . . . . 8 | |||
3.3. Configuration Information . . . . . . . . . . . . . . . . 9 | 3.3. Configuration Information . . . . . . . . . . . . . . . . 9 | |||
3.4. Instruction Information . . . . . . . . . . . . . . . . . 10 | 3.4. Instruction Information . . . . . . . . . . . . . . . . . 11 | |||
3.5. Logging Information . . . . . . . . . . . . . . . . . . . 13 | 3.5. Logging Information . . . . . . . . . . . . . . . . . . . 13 | |||
3.6. Capability and Status Information . . . . . . . . . . . . 15 | 3.6. Capability and Status Information . . . . . . . . . . . . 15 | |||
3.7. Reporting Information . . . . . . . . . . . . . . . . . . 16 | 3.7. Reporting Information . . . . . . . . . . . . . . . . . . 17 | |||
3.8. Schedules . . . . . . . . . . . . . . . . . . . . . . . . 18 | 3.8. Schedules . . . . . . . . . . . . . . . . . . . . . . . . 18 | |||
3.9. Channels . . . . . . . . . . . . . . . . . . . . . . . . 20 | 3.9. Channels . . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
3.10. Task Configurations . . . . . . . . . . . . . . . . . . . 21 | 3.10. Task Configurations . . . . . . . . . . . . . . . . . . . 22 | |||
3.11. Timing Information . . . . . . . . . . . . . . . . . . . 22 | 3.11. Timing Information . . . . . . . . . . . . . . . . . . . 23 | |||
3.11.1. Periodic Timing . . . . . . . . . . . . . . . . . . 23 | 3.11.1. Periodic Timing . . . . . . . . . . . . . . . . . . 24 | |||
3.11.2. Calendar Timing . . . . . . . . . . . . . . . . . . 23 | 3.11.2. Calendar Timing . . . . . . . . . . . . . . . . . . 25 | |||
3.11.3. One-Off Timing . . . . . . . . . . . . . . . . . . . 24 | 3.11.3. One-Off Timing . . . . . . . . . . . . . . . . . . . 26 | |||
3.11.4. Immediate Timing . . . . . . . . . . . . . . . . . . 24 | 3.11.4. Immediate Timing . . . . . . . . . . . . . . . . . . 26 | |||
3.11.5. Startup Timing . . . . . . . . . . . . . . . . . . . 25 | 3.11.5. Startup Timing . . . . . . . . . . . . . . . . . . . 26 | |||
4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 25 | 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 26 | |||
5. Security Considerations . . . . . . . . . . . . . . . . . . . 25 | 5. Security Considerations . . . . . . . . . . . . . . . . . . . 26 | |||
6. Appendix: JSON Example . . . . . . . . . . . . . . . . . . . 25 | 6. Appendix: JSON Example . . . . . . . . . . . . . . . . . . . 27 | |||
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 34 | 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 35 | |||
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 34 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 35 | |||
8.1. Normative References . . . . . . . . . . . . . . . . . . 34 | 8.1. Normative References . . . . . . . . . . . . . . . . . . 35 | |||
8.2. Informative References . . . . . . . . . . . . . . . . . 34 | 8.2. Informative References . . . . . . . . . . . . . . . . . 35 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 34 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 35 | |||
1. Introduction | 1. Introduction | |||
A large-scale measurement platform is a collection of components that | A large-scale measurement platform is a collection of components that | |||
work in a coordinated fashion to perform measurements from a large | work in a coordinated fashion to perform measurements from a large | |||
number of vantage points. The main components of a large-scale | number of vantage points. The main components of a large-scale | |||
measurement platform are the Measurement Agents (hereafter MAs), the | measurement platform are the Measurement Agents (hereafter MAs), the | |||
Controller(s) and the Collector(s). | Controller(s) and the Collector(s). | |||
The MAs are the elements actually performing the measurements. The | The MAs are the elements actually performing the measurements. The | |||
skipping to change at page 4, line 22 | skipping to change at page 4, line 22 | |||
functionality described in the LMAP framework | functionality described in the LMAP framework | |||
4. Enable existing protocols and data models to be assessed for | 4. Enable existing protocols and data models to be assessed for | |||
their suitability as part of a large-scale measurement system | their suitability as part of a large-scale measurement system | |||
2. Notation | 2. Notation | |||
This document use an object-oriented programming-like notation to | This document use an object-oriented programming-like notation to | |||
define the parameters (names/values) of the objects of the | define the parameters (names/values) of the objects of the | |||
information model. An optional field is enclosed by [ ], and an | information model. An optional field is enclosed by [ ], and an | |||
array is indicated by two numbers in angle brackets, <m..n>>, where m | array is indicated by two numbers in angle brackets, <m..n>, where m | |||
indicates the minimal number of values, and n is the maximum. The | indicates the minimal number of values, and n is the maximum. The | |||
symbol * for n means no upper bound. | symbol * for n means no upper bound. | |||
3. LMAP Information Model | 3. LMAP Information Model | |||
3.1. Information Structure | 3.1. Information Structure | |||
The information described herein relates to the information stored, | The information described herein relates to the information stored, | |||
received or transmitted by a Measurement Agent as described within | received or transmitted by a Measurement Agent as described within | |||
the LMAP framework [I-D.ietf-lmap-framework]. As such, some subsets | the LMAP framework [I-D.ietf-lmap-framework]. As such, some subsets | |||
skipping to change at page 5, line 27 | skipping to change at page 5, line 27 | |||
4. Logging Information. Information transmitted from the MA to the | 4. Logging Information. Information transmitted from the MA to the | |||
Controller detailing the results of any configuration operations | Controller detailing the results of any configuration operations | |||
along with error and status information from the operation of the | along with error and status information from the operation of the | |||
MA. | MA. | |||
5. Capability and Status Information. Information on the general | 5. Capability and Status Information. Information on the general | |||
status and capabilities of the MA. For example, the set of | status and capabilities of the MA. For example, the set of | |||
measurements that are supported on the device. | measurements that are supported on the device. | |||
6. Reporting Information. Information transmitted from the MA to | 6. Reporting Information. Information transmitted from the MA to | |||
the Collector including measurement results and the context in | one or more Collectors including measurement results and the | |||
which they were conducted. | context in which they were conducted. | |||
In addition the MA may hold further information not described herein, | In addition the MA may hold further information not described herein, | |||
and which may be optionally transferred to or from other systems | and which may be optionally transferred to or from other systems | |||
including the Controller and Collector. One example of information | including the Controller and Collector. One example of information | |||
in this category is subscriber or line information that may be | in this category is subscriber or line information that may be | |||
extracted by a task and reported by the MA in the reporting | extracted by a task and reported by the MA in the reporting | |||
communication to a Collector. | communication to a Collector. | |||
It should also be noted that the MA may be in communication with | It should also be noted that the MA may be in communication with | |||
other management systems which may be responsible for configuring and | other management systems which may be responsible for configuring and | |||
skipping to change at page 7, line 5 | skipping to change at page 7, line 5 | |||
4. Timings. A set of Timing objects that can be referenced from the | 4. Timings. A set of Timing objects that can be referenced from the | |||
Schedules. Each Schedule always references exactly one Timing | Schedules. Each Schedule always references exactly one Timing | |||
object. A Timing object specfies either a singleton or series of | object. A Timing object specfies either a singleton or series of | |||
time events. They are used to indicate when Tasks should be | time events. They are used to indicate when Tasks should be | |||
executed. | executed. | |||
The following diagram illustrates the structure in which these common | The following diagram illustrates the structure in which these common | |||
information objects are referenced. The references are achieved by | information objects are referenced. The references are achieved by | |||
each object (Channel, Task Configuration, Timing) being given a short | each object (Channel, Task Configuration, Timing) being given a short | |||
text name that is used by other objects. The objects shown in | text name that is used by other objects. The objects shown in | |||
brackets are part of the internal object structure of a Schedule. | parenthesis are part of the internal object structure of a Schedule. | |||
Schedule | Schedule | |||
|----------> Timing | |----------> Timing | |||
|----------> (Scheduled Tasks) | |----------> (Scheduled Tasks) | |||
|----------> Task Configuration | |----------> Task Configuration | |||
|----------> (Task datasets) | |----------> (Task Channels and downstream Tasks) | |||
|----------> Channels | |----------> Channels | |||
|----------> Ouput Tasks | |----------> Downstream Tasks | |||
It should be clear that the general capability of an MA is simply to | It should be clear that the top-level bahaviour of an MA is simply to | |||
execute Schedules. Every other action of an MA is implemented as a | execute Schedules. Every action referenced by a Schedule is defined | |||
Task. As such, these actions are configured through Task | as a Task. As such, these actions are configured through Task | |||
Configurations and executed according to the Timing referenced by the | Configurations and executed according to the Timing referenced by the | |||
Schedule in which they appear. Tasks can implement a variety of | Schedule in which they appear. Tasks can implement a variety of | |||
different types of actions. While in terms of the Information Model, | different types of actions. While in terms of the Information Model, | |||
all Tasks have the same information, it can help conceptually to | all Tasks have the same structure, it can help conceptually to think | |||
think of different Task categories: | of different Task categories: | |||
1. Measurement Tasks | 1. Measurement Tasks | |||
A. Active Measurement Tasks implement an active measurement | A. Measurement Tasks measure some aspect of network performance | |||
protocol to a remote network host | or traffic | |||
B. Passive Measurement Tasks analyse traffic passing through the | ||||
MA device or traffic that may be eavesdropped | ||||
C. Data Capture Tasks capture and analyse passive information | B. Data Capture Tasks capture and analyse passive information | |||
stored on the MA device such as counters and device/network | stored on the MA device such as counters and device/network | |||
status information | status information | |||
2. Data Transfer Tasks | 2. Data Transfer Tasks | |||
A. Reporting Tasks report the results or Measurement Tasks to | A. Reporting Tasks report the results or Measurement Tasks to | |||
Collectors | Collectors | |||
B. Control Task(s) implement the Control Protocol and | B. Control Task(s) implement the Control Protocol and | |||
communicate with the Controller. Depending on the Control | communicate with the Controller. Depending on the Control | |||
skipping to change at page 8, line 19 | skipping to change at page 8, line 19 | |||
a Controller during the registration process. The pre-configuration | a Controller during the registration process. The pre-configuration | |||
information is a subset of the Configuration Information along with | information is a subset of the Configuration Information along with | |||
some parameters that are not under the control of the LMAP framework | some parameters that are not under the control of the LMAP framework | |||
(such as the the device identifier and device security credentials). | (such as the the device identifier and device security credentials). | |||
This pre-configuration information needs to include a URL of the | This pre-configuration information needs to include a URL of the | |||
initial Controller where configuration information can be retrieved | initial Controller where configuration information can be retrieved | |||
along with the security information required for the communication | along with the security information required for the communication | |||
including the certificate of the Controller (or the certificate of | including the certificate of the Controller (or the certificate of | |||
the Certification Authority which was used to issue the certificate | the Certification Authority which was used to issue the certificate | |||
for the Controller). All this is expressed as a Channel. Multiple | for the Controller). All this is expressed as a Channel. While | |||
channels may be given to the Controller (such as over different | multiple Channels may be provided in the pre-configuration | |||
interfaces or network protocols). | information they must all be associated with a single Controller | |||
(e.g. over different interfaces or network protocols). | ||||
Where the MA pulls information from the Controller, the Pre- | Where the MA pulls information from the Controller, the Pre- | |||
Configuration Information also needs to contain the timing of the | Configuration Information also needs to contain the timing of the | |||
communication with the Controller as well as the nature of the | communication with the Controller as well as the nature of the | |||
communication itself (such as the protocol and data to be | communication itself (such as the protocol and data to be | |||
transfered). The timing is given as a Schedule that executes the | transfered). The timing is given as a Schedule that executes the | |||
Task(s) responsible for communication with the Controller. It is | Task(s) responsible for communication with the Controller. It is | |||
this Task (or Tasks) that implement the Control protocol between the | this Task (or Tasks) that implement the Control protocol between the | |||
MA and the Controller. The Task(s) may take additional parameters in | MA and the Controller. The Task(s) may take additional parameters in | |||
which case a Task Configuration can also be included. | which case a Task Configuration can also be included. | |||
skipping to change at page 8, line 48 | skipping to change at page 8, line 49 | |||
It can be seen that these Channels, Schedules and Task Configurations | It can be seen that these Channels, Schedules and Task Configurations | |||
for the initial MA-Controller communication are no different in terms | for the initial MA-Controller communication are no different in terms | |||
of the Information Model to any other Channel, Schedule or Task | of the Information Model to any other Channel, Schedule or Task | |||
Configuration that might execute a Measurement Task or report the | Configuration that might execute a Measurement Task or report the | |||
measurement results (as described later). | measurement results (as described later). | |||
The MA may be pre-configured with an MA ID, or may use a Device ID in | The MA may be pre-configured with an MA ID, or may use a Device ID in | |||
the initial Controller contact before it is assigned an MA ID. The | the initial Controller contact before it is assigned an MA ID. The | |||
Device ID may be a MAC address or some other device identifier | Device ID may be a MAC address or some other device identifier | |||
expressed as a URN. | expressed as a URN. If the MA ID is not provided at this stage then | |||
it must be provided by the Controller during Configuration. | ||||
Detail of the information model elements: | Detail of the information model elements: | |||
// MA pre-configuration minimal information to communicate initially with Controller | // MA pre-configuration minimal information to communicate initially with Controller | |||
object { | object { | |||
[uuid ma-agent-id;] | [uuid ma-agent-id;] | |||
ma-task-obj ma-control-tasks<0..*>; | ma-task-obj ma-control-tasks<1..*>; | |||
ma-channel-obj ma-control-channels<1..*>; | ma-channel-obj ma-control-channels<1..*>; | |||
ma-schedule-obj ma-control-schedules<0..*>; | ma-schedule-obj ma-control-schedules<1..*>; | |||
[urn ma-device-id;] | [urn ma-device-id;] | |||
credentials ma-credentials; | credentials ma-credentials; | |||
} ma-config-obj; | } ma-config-obj; | |||
The detail of the Channel and Schedule objects are described later | The detail of the Channel and Schedule objects are described later | |||
since they are common to several parts of the information model. | since they are common to several parts of the information model. | |||
3.3. Configuration Information | 3.3. Configuration Information | |||
During registration or at any later point at which the MA contacts | During registration or at any later point at which the MA contacts | |||
skipping to change at page 9, line 39 | skipping to change at page 9, line 39 | |||
access technology type or broadband product). The initial | access technology type or broadband product). The initial | |||
communication Schedule may be replaced with one more relevant to | communication Schedule may be replaced with one more relevant to | |||
routine communications between the MA and the Controller. | routine communications between the MA and the Controller. | |||
While some Control protocols and uses may only use a single Schedule, | While some Control protocols and uses may only use a single Schedule, | |||
other protocols and uses may uses several Schedules (and related data | other protocols and uses may uses several Schedules (and related data | |||
transfer Tasks) to update the Configuration Information, transfer the | transfer Tasks) to update the Configuration Information, transfer the | |||
Instruction Information, transfer Capability and Status Information | Instruction Information, transfer Capability and Status Information | |||
and send other information to the Controller such as log or error | and send other information to the Controller such as log or error | |||
notifications. Multiple Channels may be used to communicate with the | notifications. Multiple Channels may be used to communicate with the | |||
Controller over multiple interfaces (e.g. to send logging information | same Controller over multiple interfaces (e.g. to send logging | |||
over a different network). | information over a different network). | |||
In addition the MA will be given further items of information that | In addition the MA will be given further items of information that | |||
relate specifically to the MA rather than the measurements it is to | relate specifically to the MA rather than the measurements it is to | |||
conduct or how to report results. The assignment of an ID to the MA | conduct or how to report results. The assignment of an ID to the MA | |||
is mandatory. Optionally a Group ID may also be given which | is mandatory. If the MA Agent ID was not optionally provided during | |||
the pre-configuration then one must be provided by the Controller | ||||
during Configuration. Optionally a Group ID may also be given which | ||||
identifies a group of interest to which that MA belongs. For example | identifies a group of interest to which that MA belongs. For example | |||
the group could represent an ISP, broadband product, technology, | the group could represent an ISP, broadband product, technology, | |||
market classification, geographic region, or a combination of | market classification, geographic region, or a combination of | |||
multiple such characteristics. Where the Measurement Group ID is set | multiple such characteristics. Where the Measurement Group ID is set | |||
an additional flag (the Report MA ID flag) is required to control | an additional flag (the Report MA ID flag) is required to control | |||
whether the Measurement Agent ID is also to be reported. The | whether the Measurement Agent ID is also to be reported. The | |||
reporting of a Group ID without the MA ID allows the MA to remain | reporting of a Group ID without the MA ID allows the MA to remain | |||
anonymous, which may be particularly useful to prevent tracking of | anonymous, which may be particularly useful to prevent tracking of | |||
mobile MA devices. | mobile MA devices. | |||
Optionally an MA can also be configured to stopexecuting any | Optionally an MA can also be configured to stop executing any | |||
Instruction Schedule if the Controller is unreachable. This can be | Instruction Schedule if the Controller is unreachable. This can be | |||
used as a fail-safe to stop Measurement and other Tasks being | used as a fail-safe to stop Measurement and other Tasks being | |||
conducted when there is doubt that the Instruction Information is | conducted when there is doubt that the Instruction Information is | |||
still valid. This is simply represented as a time window in | still valid. This is simply represented as a time window in | |||
milliseconds since the last communication with the Controller after | milliseconds since the last communication with the Controller after | |||
which Instruction Schedules are to be suspended. The appropriate | which Instruction Schedules are to be suspended. The appropriate | |||
vaue of the time window will depend on the specified communication | vaue of the time window will depend on the specified communication | |||
Schedule with the Controller and the duration for which the system is | Schedule with the Controller and the duration for which the system is | |||
willing to tolerate continued operation with potentially stale | willing to tolerate continued operation with potentially stale | |||
Instruction Information. | Instruction Information. | |||
While pre-configuration is persistent upon device reset or power | While pre-configuration is persistent upon device reset or power | |||
cycle due to its very nature, the persistency of the addtional | cycle due to its very nature, the persistency of the addtional | |||
configuration information may be control protocol dependent. Some | configuration information may be control protocol dependent. Some | |||
protocols may assume that reset devices will revert back to their | protocols may assume that reset devices will revert back to their | |||
pre-configuration state, while other protocols may assume that all | pre-configuration state, while other protocols may assume that all | |||
configuration and instruction information is held in persistent | configuration and instruction information is held in persistent | |||
storage. | storage. | |||
It should be noted that control shedules and tasks cannot be | ||||
suppressed as evidenced by the lack of suppression information in the | ||||
Configuration. The control schedule must only reference tasks listed | ||||
as control tasks. Any suppress-by-default flag against control tasks | ||||
will be ignored. | ||||
Detail of the additional and updated information model elements: | Detail of the additional and updated information model elements: | |||
// MA Configuration | // MA Configuration | |||
object { | object { | |||
uuid ma-agent-id; | uuid ma-agent-id; | |||
[ma-task-obj ma-control-tasks<0..*>;] | [ma-task-obj ma-control-tasks<0..*>;] | |||
ma-channel-obj ma-control-channels<1..*>; | ma-channel-obj ma-control-channels<1..*>; | |||
[mas-schedule-obj ma-control-schedules<0..*>]; | [ma-schedule-obj ma-control-schedules<0..*>]; | |||
[urn ma-device-id;] | [urn ma-device-id;] | |||
credentials ma-credentials; | credentials ma-credentials; | |||
[string ma-group-id;] | [string ma-group-id;] | |||
[boolean ma-report-ma-id-flag;] | [boolean ma-report-ma-id-flag;] | |||
[int ma-control-channel-failure-threshold;] | [int ma-control-channel-failure-threshold;] | |||
} ma-config-obj; | } ma-config-obj; | |||
3.4. Instruction Information | 3.4. Instruction Information | |||
The Instruction information model has four sub-elements: | The Instruction information model has four sub-elements: | |||
skipping to change at page 11, line 37 | skipping to change at page 11, line 48 | |||
Schedules to transfer data at different cycles to the same Collector. | Schedules to transfer data at different cycles to the same Collector. | |||
E.g. a single Collector may receive data at three different cycle | E.g. a single Collector may receive data at three different cycle | |||
rates, one Schedule reporting hourly, another reporting daily and a | rates, one Schedule reporting hourly, another reporting daily and a | |||
third specifying that results should be sent immediately for on- | third specifying that results should be sent immediately for on- | |||
demand measurement tasks. Alternatively multiple Report Channels can | demand measurement tasks. Alternatively multiple Report Channels can | |||
be used to send Measurement Task results to different Collectors. | be used to send Measurement Task results to different Collectors. | |||
The details of the Channel element is described later as it is common | The details of the Channel element is described later as it is common | |||
to several objects. | to several objects. | |||
Instruction Schedules specify which Tasks to execute according to a | Instruction Schedules specify which Tasks to execute according to a | |||
simngle given Timing (that can execute a single or repeated series of | given Timing (that can execute a single or repeated series of Tasks). | |||
Tasks). The Schedule also specifies how to deal with Task inputs and | The Schedule also specifies how to deal with Task inputs and outputs | |||
outputs - e.g. sending selected outputs to other Tasks or specifying | - e.g. sending selected outputs to other Tasks or specifying the | |||
the Report Channels that should be used to report results to | Report Channels that should be used to report results to Collectors. | |||
Collectors. | ||||
Measurement Suppression information is used to over-ride the | Measurement Suppression information is used to over-ride the | |||
Instruction Schedule and temporarily stop measurements or other Tasks | Instruction Schedule and temporarily stop measurements or other Tasks | |||
from running on the MA for a defined or indefinite period. While | from running on the MA for a defined or indefinite period. While | |||
conceptually measurements can be stopped by simply removing them from | conceptually measurements can be stopped by simply removing them from | |||
the Measurement Schedule, splitting out separate information on | the Measurement Schedule, splitting out separate information on | |||
Measurement Suppression allows this information to be updated on the | Measurement Suppression allows this information to be updated on the | |||
MA on a different timing cycle or protocol implementation to the | MA on a different timing cycle or protocol implementation to the | |||
Measurement Schedule. It is also considered that it will be easier | Measurement Schedule. It is also considered that it will be easier | |||
for a human operator to implement a temporary explicit suppression | for a human operator to implement a temporary explicit suppression | |||
skipping to change at page 12, line 21 | skipping to change at page 12, line 31 | |||
Measurement Schedules is supported. Support for disabling specific | Measurement Schedules is supported. Support for disabling specific | |||
Task Configurations allows malfunctioning or mis-configured Tasks or | Task Configurations allows malfunctioning or mis-configured Tasks or | |||
Task Configurations that have an impact on a particular part of the | Task Configurations that have an impact on a particular part of the | |||
network infrastructure (e.g., a particular Measurement Peer) to be | network infrastructure (e.g., a particular Measurement Peer) to be | |||
targetted. Support for disabling specific Schedules allows for | targetted. Support for disabling specific Schedules allows for | |||
particularly heavy cycles or sets of less essential Measurement Tasks | particularly heavy cycles or sets of less essential Measurement Tasks | |||
to be suppressed quickly and effectively. Note that Suppression has | to be suppressed quickly and effectively. Note that Suppression has | |||
no effect on either Controller Tasks or Controller Schedules. | no effect on either Controller Tasks or Controller Schedules. | |||
When no tasks or schedules are explicitly listed, all Instruction | When no tasks or schedules are explicitly listed, all Instruction | |||
tasks will be suppressed as indicated by the suppress-by-default flag | tasks will be suppressed (or not) as indicated by the suppress-by- | |||
in the Task Configuration. If tasks or schedules are listed | default flag in the Task Configuration. If tasks or schedules are | |||
explicitly then these tasks will be suppressed regardless of the | listed explicitly then only these listed tasks or schedules will be | |||
suppress-by-default flag. | suppressed regardless of the suppress-by-default flag. If both | |||
individual tasks and individual schedules are listed then the union | ||||
of these options is considered - i.e. the listed shcedules plus the | ||||
listed tasks where present in other schedules. | ||||
Suppression stops new Tasks from executing. In addtion, the | Suppression stops new Tasks from executing. In addtion, the | |||
Suppression information also supports an additional Boolean that is | Suppression information also supports an additional Boolean that is | |||
used to select whether on-going tasks are also to be terminated. | used to select whether on-going tasks are also to be terminated. | |||
Unsuppression is achieved through either overwriting the Measurement | Unsuppression is achieved through either overwriting the Measurement | |||
Suppression information (e.g. changing 'enabled' to False) or through | Suppression information (e.g. changing 'enabled' to False) or through | |||
the use of an End time such that the Measurement Suppression will no | the use of an End time such that the Measurement Suppression will no | |||
longer be in effect beyond this time. The datetime format used for | longer be in effect beyond this time. The datetime format used for | |||
all elements in the information model (e.g. the suppression start and | all elements in the information model (e.g. the suppression start and | |||
skipping to change at page 15, line 19 | skipping to change at page 15, line 31 | |||
datetime ma-log-event-time; | datetime ma-log-event-time; | |||
code ma-log-code; | code ma-log-code; | |||
string ma-log-description; | string ma-log-description; | |||
} ma-log-obj; | } ma-log-obj; | |||
3.6. Capability and Status Information | 3.6. Capability and Status Information | |||
The MA will hold Capability Information that can be retrieved by a | The MA will hold Capability Information that can be retrieved by a | |||
Controller. Capabilities include the interface details available to | Controller. Capabilities include the interface details available to | |||
Measurement Tasks and Channels as well as the set of Measurement | Measurement Tasks and Channels as well as the set of Measurement | |||
Tasks that are actually installed or available on the MA. Status | Tasks/Roles that are actually installed or available on the MA. | |||
information includes the times that operations were last performed | Status information includes the times that operations were last | |||
such as contacting the Controller or producing Reports. | performed such as contacting the Controller or producing Reports. | |||
MA Status information model elements: | MA Status information model elements: | |||
// Main MA Status information object | // Main MA Status information object | |||
object { | object { | |||
uuid ma-agent-id; | uuid ma-agent-id; | |||
urn ma-device-id; | urn ma-device-id; | |||
string ma-hardware; | string ma-hardware; | |||
string ma-firmware; | string ma-firmware; | |||
string ma-version; | string ma-version; | |||
ma-interface-obj ma-interfaces<0..*>; | ma-interface-obj ma-interfaces<0..*>; | |||
datetime ma-last-measurement; | datetime ma-last-measurement; | |||
datetime ma-last-report; | datetime ma-last-report; | |||
datetime ma-last-instruction; | datetime ma-last-instruction; | |||
datetime ma-last-configuration; | datetime ma-last-configuration; | |||
[ma-condition-obj ma-conditions<0..*>;] | ||||
ma-task-capability-obj ma-supported-tasks<0..*>; | ma-task-capability-obj ma-supported-tasks<0..*>; | |||
} ma-status-obj; | } ma-status-obj; | |||
// Additional status conditions | ||||
object { | ||||
string ma-condition-code; | ||||
string ma-condition-text; | ||||
} ma-condition-obj | ||||
// Interface information | // Interface information | |||
object { | object { | |||
string ma-interface-name; | string ma-interface-name; | |||
string ma-interface-type; | string ma-interface-type; | |||
[int ma-interface-speed;] // mbps | [int ma-interface-speed;] // bps | |||
[string ma-link-layer-address;] | [string ma-link-layer-address;] | |||
[ip-address ma-interface-ip-addresses<0..*>]; | [ip-address ma-interface-ip-addresses<0..*>]; | |||
[ip-address ma-interface-gateways<0..*>;] | [ip-address ma-interface-gateways<0..*>;] | |||
[ip-address ma-interface-dns-servers<0..*>;] | [ip-address ma-interface-dns-servers<0..*>;] | |||
} ma-interface-obj; | } ma-interface-obj; | |||
// Supported tasks | // Supported tasks/roles | |||
object { | object { | |||
string ma-task-name; | string ma-task-name; | |||
uri ma-task-registry; | uri ma-task-registry; | |||
string ma-task-role; | ||||
} ma-task-capability-obj; | } ma-task-capability-obj; | |||
3.7. Reporting Information | 3.7. Reporting Information | |||
At a point in time specified by a Schedule, the MA will execute a | At a point in time specified by a Schedule, the MA will execute a | |||
task or tasks that communicate a set of measurement results to the | task or tasks that communicate a set of measurement results to the | |||
Collector. Some of these Tasks (notably Reporting Tasks) will | Collector. Some of these Tasks (notably Reporting Tasks) will | |||
understand how to transmit task results over a specified Report | understand how to transmit task results over a specified Report | |||
Channel to a Collector. | Channel to a Collector. Where to send the data is defined within the | |||
Schedule information. | ||||
It should be noted that the output from Tasks does not need to be | It should be noted that the output from Tasks does not need to be | |||
sent to communication Channels. It can alternatively, or | sent to communication Channels. It can alternatively, or | |||
additionally, be sent to other Tasks on the MA. This facilitates | additionally, be sent to other Tasks on the MA. This facilitates | |||
using a first Measurement Task to control the operation of a later | using a first Measurement Task to control the operation of a later | |||
Measurement Task (such as first probing available line speed and then | Measurement Task (such as first probing available line speed and then | |||
adjusting the operation of a video testing measurement) and also to | adjusting the operation of a video testing measurement) and also to | |||
allow local processing of data to output alarms (e.g. when | allow local processing of data to output alarms (e.g. when | |||
performance drops from earlier levels). Of course, subsequent Tasks | performance drops from earlier levels). Of course, subsequent Tasks | |||
also include Tasks that implement the reporting protocol(s) and | also include Tasks that implement the reporting protocol(s) and | |||
skipping to change at page 17, line 12 | skipping to change at page 17, line 43 | |||
reported by individual tasks at the time they execute. Either a | reported by individual tasks at the time they execute. Either a | |||
Measurement Task can report contextual parameters that are relevant | Measurement Task can report contextual parameters that are relevant | |||
to that particular measurement, or specific tasks can be used to | to that particular measurement, or specific tasks can be used to | |||
gather a set of contextual and environmental data. at certain times | gather a set of contextual and environmental data. at certain times | |||
independent of the reporting schedule. | independent of the reporting schedule. | |||
After the report header information the results are reported grouped | After the report header information the results are reported grouped | |||
according to different Measurement Task Configurations. Each Task | according to different Measurement Task Configurations. Each Task | |||
section starts with replicating the Measurement Task Configuration | section starts with replicating the Measurement Task Configuration | |||
information before the result headers (titles for data columns) and | information before the result headers (titles for data columns) and | |||
the result data rows. The result data rows may optionally include an | the result data rows. | |||
indication of the cross-traffic. Cross traffic is defined as the | ||||
total number of Bytes both upstream and downstream of non-measurement | The result row data inlcudes a time for the start of the measurement | |||
traffic passing through the interfaces used by a Measurement Task | and optionally an end time where the duration also needs to be | |||
during the measurement period. | considered in the data analysis. The result data rows may optionally | |||
include an indication of the cross-traffic. Cross traffic is defined | ||||
as the total number of Bytes both upstream and downstream of non- | ||||
measurement traffic passing through the interfaces used by a | ||||
Measurement Task during the measurement period. The specific | ||||
Measurement Task may also output other environmental measures in | ||||
addtion to cross-traffic such as CPU utlisation or interface speed. | ||||
The encoding of this information will vary dependent upon the data | ||||
model chosen for the Report Protocol. | ||||
Where the Configuration and Instruction information represent | Where the Configuration and Instruction information represent | |||
information transmitted via the Control Protocol, the Report | information transmitted via the Control Protocol, the Report | |||
represents the information that is transmitted via the Report | represents the information that is transmitted via the Report | |||
Protocol. It is constructed at the time of sending a report and | Protocol. It is constructed at the time of sending a report and | |||
represents the inherent structure of the information that is sent to | represents the inherent structure of the information that is sent to | |||
the Collector. | the Collector. | |||
Information model elements: | Information model elements: | |||
skipping to change at page 18, line 8 | skipping to change at page 18, line 37 | |||
object { | object { | |||
ma-task-obj ma-report-task-config; | ma-task-obj ma-report-task-config; | |||
string ma-report-task-column-labels<0..*>; | string ma-report-task-column-labels<0..*>; | |||
ma-result-row-obj ma-report-task-rows<0..*>; | ma-result-row-obj ma-report-task-rows<0..*>; | |||
} ma-report-task-obj; | } ma-report-task-obj; | |||
// Report tasks result rows | // Report tasks result rows | |||
object { | object { | |||
datetime ma-report-result-time; | datetime ma-report-result-start-time; | |||
string ma-report-conflicting-tasks<0..*>; | [datetime ma-report-result-end-time;] | |||
string ma-report-result-conflicting-tasks<0..*>; | ||||
[int ma-report-result-cross-traffic;] // Bytes of non-measurement traffic | [int ma-report-result-cross-traffic;] // Bytes of non-measurement traffic | |||
// on measurement interface during measurement period | // on measurement interface during measurement period | |||
data ma-report-result-values<0..*>; | data ma-report-result-values<0..*>; | |||
} ma-result-row-obj; | } ma-result-row-obj; | |||
The ma-context-obj, which covers things like line speed or the device | ||||
type, is not further detailed here. | ||||
3.8. Schedules | 3.8. Schedules | |||
A Schedule specifies the execution of a single or repeated series of | A Schedule specifies the execution of a single or repeated series of | |||
Tasks. Each Schedule contains basically two elements: a list of | Tasks. Each Schedule contains basically two elements: a list of | |||
Tasks to be executed and a timing object for the Schedule. The | Tasks to be executed and a timing object for the Schedule. The | |||
Schedule basically states what Tasks to run (with what | Schedule states what Tasks to run (with what configuration), how to | |||
configuration), how to report the results, and when to run the Tasks. | report the results, and when to run the Tasks. | |||
Multiple Tasks in the list of a single Measurement Schedule will be | Multiple Tasks in the list of a single Measurement Schedule will be | |||
executed in order with minimal gaps. Tasks in different Schedules | executed in order with minimal gaps. Tasks in different Schedules | |||
can execute in parallel with such conflicts beings reported in the | can execute in parallel with such conflicts beings reported in the | |||
Reporting Information. | Reporting Information. | |||
As well as specifying which Tasks to execute, the Schedule also | As well as specifying which Tasks to execute, the Schedule also | |||
specifies where to send the data outputs from each Task. Specifying | specifies where to send the data outputs from each Task. Specifying | |||
this within the Schedule allows the highest level of flexibility | this within the Schedule allows the highest level of flexibility | |||
since it is even possible to send the output from different | since it is even possible to send the output from different | |||
executions of the same Task to different destinations. Since a | executions of the same Task to different destinations. Since a | |||
single Task may have multiple outputs, the Schedule can independently | single Task may have multiple outputs, the Schedule can independently | |||
specify which outputs go to which destinations. For example, a | specify which outputs go to which destinations. For example, a | |||
Measurement Task might report routine results to a data Reporting | Measurement Task might report routine results to a data Reporting | |||
Task that communicates hourly via the Broadband PPP interface, but | Task that communicates hourly via the Broadband PPP interface, but | |||
also outputs emergency conditions via an alarm Reporting Task | also outputs emergency conditions via an alarm Reporting Task | |||
communicating immediately over a GPRS channel. | communicating immediately over a GPRS channel. | |||
The destination options for a Task are either another Task or a | The interface options for a Task are either another downstream Task | |||
Channel. In this way the output of a Task can be sent to another | or a Channel. The output of a Task can be sent to another Task. For | |||
Task. For example a Measurement Task may send its output to a data | example a Measurement Task may send its output to a data transfer | |||
transfer Task that reports the batched data to a Collector at a later | Task that reports the batched data to a Collector at a later time. | |||
time. Alternatively the output from a Measurement Task may be fed to | Alternatively the output from a Measurement Task may be fed to an | |||
an alarm processing task that monitors the results of a series of | alarm processing task that monitors the results of a series of | |||
Measurement Tasks. Some Tasks will also understand how to send/ | Measurement Tasks. | |||
receive data to/from Channels using the Reporting/Control protocol. | ||||
Since Channels are bi-directional they can be considered inputs as | ||||
well as outputs to the Control and Reporting Tasks that utlilise | ||||
them. Any Task that does not implement either the Reporting or | ||||
Control protocol will ignore any specified Channels (e.g. A | ||||
Measurement Task will not know how to report results to a Collector | ||||
using the Report Protocol. Instead results can be passed to a | ||||
Reporting Task that has the apropriate Collector specified as a | ||||
Channel). | ||||
The tasks outputs and channels are controlled using a series of | Only some Tasks will understand how to send/receive data to/from | |||
filters. Each filter is an array of integers specifying which Task | Channels using the Reporting/Control protocol. Any Task that does | |||
datasets should be mapped to which output tasks and/or channels. | not implement either the Reporting or Control protocol will not have | |||
any channel interfaces to configure. Instead results should be | ||||
passed to a Reporting Task that has the appropriate Collector | ||||
specified as a Channel. | ||||
When a task is referenced by a schedule there will be a simultaneous | ||||
definition of which (if any) channels to use and which (if any) other | ||||
downstream tasks to send data to. Note that task-to-task data | ||||
transfer is always specified in association with the scheduled | ||||
execution of the sending task - there is no need for a corresponding | ||||
input specification for the receiving task. | ||||
Example: A Schedule references a single Measurement Task | Example: A Schedule references a single Measurement Task | |||
Configuration for the UDP latency. It specifies that results are | Configuration for the UDP latency. It specifies that results are | |||
to be sent to a Reporting Task. This Reporting Task is executed | to be sent to a Reporting Task. This Reporting Task is executed | |||
by a separate Schedule that specifies that it should run hourly at | by a separate Schedule that specifies that it should run hourly at | |||
5 minutes past the hour. When run this Reporting Task takes the | 5 minutes past the hour. When run this Reporting Task takes the | |||
data generated by the UDP latency Task as well as any other data | data generated by the UDP latency Task as well as any other data | |||
to be included in the hourly report and transfers it to the | to be included in the hourly report and transfers it to the | |||
Collector over the Report Channel specified within its own | Collector over the Report Channel specified within its own | |||
Schedule. | Schedule. | |||
// main Schedule object with Timing and list of Scheduled Tasks | // main Schedule object with Timing and list of Scheduled Tasks | |||
object { | object { | |||
string ma-schedule-name; | string ma-schedule-name; | |||
ma-sched-task-obj ma-schedule-tasks<0..*>; | ma-sched-task-obj ma-schedule-tasks<0..*>; | |||
ma-timing-obj ma-schedule-timing; | ma-timing-obj ma-schedule-timing; | |||
} ma-schedule-obj; | } ma-schedule-obj; | |||
// Scheduled Task object with reference (by name string) to Task Configuration and input/output mapping | // Scheduled Task object with reference (by name string) to Task Configuration to execute and mapping | |||
// of task datasets to output tasks and channels | // to channels and onward tasks | |||
object { | object { | |||
string ma-schedule-task-name; | string ma-schedule-task-name; | |||
ma-sched-dataset-obj ma-schedule-task-datasets<0..*>; | [ma-sched-channels-obj ma-schedule-channels<0..*>;] | |||
[ma-sched-downstream-tasks-obj ma-schedule-downstream-tasks<0..*>;] | ||||
} ma-sched-task-obj; | } ma-sched-task-obj; | |||
// Selected Task interfaces (filtered by Integer list) can be output to other Task Configurations | // Selected Task channel interfaces (selected by integer from array defined by the task) can be connected to | |||
// (referenced by name string) or connected to input/output Channels (referenced by name string) | // Channels (referenced by name string(s)) | |||
object { | object { | |||
[int ma-schedule-task-filters<0..*>;] // default: all | [int ma-schedule-channel-interface-selection<0..*>;] // default: all | |||
[string ma-schedule-task-output-task-names<0..*>]; | [string ma-schedule-channel-names<0..*>]; | |||
[string ma-schedule-task-channel-names<0..*>]; | } ma-sched-channels-obj; | |||
} ma-sched-dataset-obj; | ||||
// Selected Task outputs to onward tasks (selected by integer from an output array defined by the task) can be sent to | ||||
// Task Configurations (referenced by name string(s)) | ||||
object { | ||||
[int ma-schedule-task-output-selection<0..*>;] // default: all | ||||
[string ma-schedule-task-downstream-task-configuration-names<0..*>]; | ||||
} ma-sched-downstream-tasks-obj; | ||||
Example: A measurement task has two defined inter-task outputs, one | ||||
for routine measurement results and one for errors during the task | ||||
execution. These are defined as available outputs by the task and | ||||
are denoted by the integers 1 & 2. In this example, both outputs | ||||
are sent to the same reporting task called "Hourly reporting | ||||
Task". This is done by creating a ma-sched-send-to-tasks-obj with | ||||
the output selection as [1,2] and the downstream task | ||||
configuration names as ["Hourly Reporting Task"]. | ||||
Measurement Task | ||||
Output 1 -------------+--------------> "Hourly Reporting Task" | ||||
Output 2 ------------/ | ||||
3.9. Channels | 3.9. Channels | |||
A Channel defines a bi-directional communication channel between the | A Channel defines a bi-directional communication channel between the | |||
MA and a Controller or Collector. Multiple Channels can be defined | MA and a Controller or Collector. Multiple Channels can be defined | |||
to enable results to be split or duplicated across different | to enable results to be split or duplicated across different | |||
Collectors. | Collectors. | |||
Each Channel contains the details of the endpoint (including location | Each Channel contains the details of the remote endpoint (including | |||
and security credential information such as the certificate). The | location and security credential information such as the | |||
timing of when to communicate over a Channel is specified within the | certificate). The timing of when to communicate over a Channel is | |||
Schedule. The certificate can be the digital certificate associated | specified within the Schedule. The certificate can be the digital | |||
to the FQDN in the URL or it can be the certificate of the | certificate associated to the FQDN in the URL or it can be the | |||
Certification Authority that was used to issue the certificate for | certificate of the Certification Authority that was used to issue the | |||
the FQDN (Fully Qualified Domain Name) of the target URL (which will | certificate for the FQDN (Fully Qualified Domain Name) of the target | |||
be retrieved later on using a communication protocol such as TLS). | URL (which will be retrieved later on using a communication protocol | |||
In order to establish a secure channel, the MA will use it's own | such as TLS). In order to establish a secure channel, the MA will | |||
security credentials (in the Configuration Information) and the given | use it's own security credentials (in the Configuration Information) | |||
credentials for the individual Channel end-point. | and the given credentials for the individual Channel end-point. | |||
As with theTask Configurations, each Channel is also given a local | As with theTask Configurations, each Channel is also given a local | |||
short name by which it can be referenced from a Schedule. | short name by which it can be referenced from a Schedule. | |||
Although the same in terms of information, Channels used for | Although the same in terms of information, Channels used for | |||
communication with the Controller are refered to as Control Channels | communication with the Controller are refered to as Control Channels | |||
whereas Channels to Collectors are refered to as Report Channels. | whereas Channels to Collectors are refered to as Report Channels. | |||
Hence Control Channels will be referenced from within the Control | Hence Control Channels will be referenced from within the Control | |||
Schedule, whereas Report Channels will be referenced from within the | Schedule, whereas Report Channels will be referenced from within the | |||
Instruction Schedule. | Instruction Schedule. | |||
skipping to change at page 21, line 30 | skipping to change at page 22, line 30 | |||
It does not by itself actually instruct the MA to perform them at any | It does not by itself actually instruct the MA to perform them at any | |||
particular time (this is done by a Schedule). Tasks can be | particular time (this is done by a Schedule). Tasks can be | |||
Measurement Tasks (i.e. those Tasks actually performing some type of | Measurement Tasks (i.e. those Tasks actually performing some type of | |||
passive or active measurement) or any other scheduled activity | passive or active measurement) or any other scheduled activity | |||
performed by the MA such as transferring information to or from the | performed by the MA such as transferring information to or from the | |||
Controller and Collectors. Other examples of Tasks may include data | Controller and Collectors. Other examples of Tasks may include data | |||
manipulation or processing Tasks conducted on the MA. | manipulation or processing Tasks conducted on the MA. | |||
A Measurement Task Configuration is the same in information terms to | A Measurement Task Configuration is the same in information terms to | |||
any other Task Configuration. Both measurement and non-measurement | any other Task Configuration. Both measurement and non-measurement | |||
Tasks have a registry entry to enable the MA to uniquely identify the | Tasks have a registry entry and specified role to enable the MA to | |||
Task it should execute and retrieve the schema for any parameters | uniquely identify the Task it should execute and retrieve the schema | |||
that may be passed to the Task. This registry entry is specified as | for any parameters that may be passed to the Task. This registry | |||
a URI and can therefore identify the Task within a namespace or point | entry is specified as a URI and can therefore bye used to identify | |||
to a web or local file location for the Task information. As | the Task within a namespace or point to a web or local file location | |||
mentioned previously this entry may refer to the Measurement Task in | for the Task information. As mentioned previously this entry may be | |||
a public namespace [I-D.bagnulo-ippm-new-registry] that is used to | used to identify the Measurement Task in a public namespace | |||
define the Measurement Task. | [I-D.bagnulo-ippm-new-registry] . | |||
Example: A Measurement Task Configuration may configure a single | Example: A Measurement Task Configuration may configure a single | |||
Measurement Task for measuring UDP latency. The Measurement Task | Measurement Task for measuring UDP latency. The Measurement Task | |||
Configuration could define the destination port and address for | Configuration could define the destination port and address for | |||
the measurement as well as the duration, internal packet timing | the measurement as well as the duration, internal packet timing | |||
strategy and other parameters (for example a stream for one hour | strategy and other parameters (for example a stream for one hour | |||
and sending one packet every 500 ms). It may also define the | and sending one packet every 500 ms). It may also define the | |||
output type and possible parameters (for example the output type | output type and possible parameters (for example the output type | |||
can be the 95th percentile mean) where the measurement task | can be the 95th percentile mean) where the measurement task | |||
accepts such parameters. It does NOT define when the task starts | accepts such parameters. It does NOT define when the task starts | |||
(this is defined by the Schedule element), so it does not by | (this is defined by the Schedule element), so it does not by | |||
itself instruct the MA to actually perform this Measurement Task. | itself instruct the MA to actually perform this Measurement Task. | |||
The Task Configuration will include a local short name for reference | The Task Configuration will include a local short name for reference | |||
by a Schedule. Task Configurations will also contain a registry | by a Schedule. Task Configurations will also contain a registry | |||
entry as described above. In addition the Task can be configured | entry as described above. In addition the Task can be configured | |||
through a set of configuration Options. The nature and number of | through a set of configuration Options. The nature and number of | |||
these Options will depend upon the Task and will be resolved through | these Options will depend upon the Task and will be resolved through | |||
the registry parameter. | the registry parameter. These options are expressed as name-value | |||
pairs although the 'value' may be a structured object instead of a | ||||
simple string or numeric value. The implementation of these name- | ||||
value pairs will vary between data models such as JSON, XML or TR- | ||||
069. | ||||
A parameter that may be present for Reporting Tasks is whether to | A parameter that may be present for Reporting Tasks is whether to | |||
report if there is no measurement result data pending to be | report if there is no measurement result data pending to be | |||
transferred to the Collector. | transferred to the Collector. In addtion many tasks will also take | |||
as a parameter which interface to operate over. | ||||
The Task Configuration also contains a suppress-by-default flag that | The Task Configuration also contains a suppress-by-default flag that | |||
specifies the behaviour of a default suppress instruction (that does | specifies the behaviour of a default suppress instruction (that does | |||
not list explicit tasks or schedules). If this flag is set to FALSE | not list explicit tasks or schedules). If this flag is set to FALSE | |||
then the Task will not be suppressed. It should be noted that | then the Task will not be suppressed. It should be noted that | |||
Controller Tasks are not subject to the suppression instruction and | Controller Tasks are not subject to the suppression instruction and | |||
therefore this flag will be ignored in such cases. | therefore this flag will be ignored in such cases. | |||
In addition the Task Configuration may optionally also be given a | In addition the Task Configuration may optionally also be given a | |||
Measurement Cycle ID. The purpose of this ID is to easily identify a | Measurement Cycle ID. The purpose of this ID is to easily identify a | |||
set of measurement results that have been produced by Measurement | set of measurement results that have been produced by Measurement | |||
Tasks with comparable Options. This ID could be manually incremented | Tasks with comparable Options. This ID could be manually incremented | |||
or otherwise changed when an Option change is implemented which could | or otherwise changed when an Option change is implemented which could | |||
mean that two sets of results should not be directly compared. | mean that two sets of results should not be directly compared. | |||
// Task Configuration object with string name to allow reference from Schedule. Contains URI to link to registry or local | // Task Configuration object with string name to allow reference from Schedule. Contains URI to link to registry or local | |||
// specification of Task. Options allow the configuration of Task parameters (in the form of name-value pairs) | // specification of the Task. | |||
// Options allow the configuration of Task parameters (in the form of name-value pairs) | ||||
object { | object { | |||
string ma-task-name; | string ma-task-name; | |||
uri ma-task-registry; | uri ma-task-registry-entry; | |||
string ma-role; | ||||
name-value-pair ma-task-options<0..*>; | name-value-pair ma-task-options<0..*>; | |||
[boolean ma-task-suppress-by-default;] // default: TRUE | [boolean ma-task-suppress-by-default;] // default: TRUE | |||
[string ma-task-cycle-id;] | [string ma-task-cycle-id;] | |||
} ma-task-obj; | } ma-task-obj; | |||
3.11. Timing Information | 3.11. Timing Information | |||
The Timing information object used throughout the information models | The Timing information object used throughout the information models | |||
can take one of five different forms: | can take one of five different forms: | |||
skipping to change at page 23, line 4 | skipping to change at page 24, line 11 | |||
1. Periodic. Specifies a start, end and interval time in | 1. Periodic. Specifies a start, end and interval time in | |||
milliseconds | milliseconds | |||
2. Calendar: Specifies a calendar based pattern - e.g. 22 minutes | 2. Calendar: Specifies a calendar based pattern - e.g. 22 minutes | |||
past each hour of the day on weekdays | past each hour of the day on weekdays | |||
3. One Off: A single instance occurring at a specific time | 3. One Off: A single instance occurring at a specific time | |||
4. Immediate: Should occur as soon as possible | 4. Immediate: Should occur as soon as possible | |||
5. Startup: Should occur whenever the MA is started (e.g. at device | 5. Startup: Should occur whenever the MA is started (e.g. at device | |||
startup) | startup) | |||
Optionally each of the options may also specify a randomness that | Optionally each of the options may also specify a randomness that | |||
should be evaluated and applied separately to each indicated event. | should be evaluated and applied separately to each indicated event. | |||
This randomness parameter defines a uniform interval in milliseconds | ||||
over which the start of the task is delayed from the starting times | ||||
specified by the timing object. | ||||
Both the Periodic and Calendar timing objects allow for a series of | ||||
tasks to be executed. While both have an optional end time, it is | ||||
best practice to always configure an end time and refresh the | ||||
information periodically to ensure that lost MAs do not continue | ||||
their tasks forever. | ||||
The datetime format used for all elements in the information model | The datetime format used for all elements in the information model | |||
MUST conform to RFC 3339 [RFC3339] and ISO8601. | MUST conform to RFC 3339 [RFC3339] and ISO8601. | |||
// Main Timing object with name string to allow reference by Schedule | // Main Timing object with name string to allow reference by Schedule | |||
// Must be specialised by one of the Timing options. | // Must be specialised by one of the Timing options. | |||
// Includes optional uniform random spread in ms from start time given by Timing specialisation | // Includes optional uniform random spread in ms from start time given by Timing specialisation | |||
object { | object { | |||
[string ma-timing-name;] | [string ma-timing-name;] | |||
skipping to change at page 24, line 11 | skipping to change at page 25, line 31 | |||
Calendar Timing is also required to perform measurements at | Calendar Timing is also required to perform measurements at | |||
meaningful instances in relation to network usage (e.g., at peak | meaningful instances in relation to network usage (e.g., at peak | |||
times). If the optional timezone offset is not supplied then local | times). If the optional timezone offset is not supplied then local | |||
system time is assumed. This is essential in some use cases to | system time is assumed. This is essential in some use cases to | |||
ensure consistent peak-time measurements as well as supporting MA | ensure consistent peak-time measurements as well as supporting MA | |||
devices that may be in an unknown timezone or roam between different | devices that may be in an unknown timezone or roam between different | |||
timezones (but know their own timezone information such as through | timezones (but know their own timezone information such as through | |||
the mobile network). | the mobile network). | |||
Days of week are define using three character strings "Mon", "Tue", | ||||
"Wed", "Thu", "Fri", "Sat", "Sun". | ||||
If a day of the month is specified that does not exist in the month | ||||
(e.g. 29 in Feburary) then those values are ignored. | ||||
Information model elements: | Information model elements: | |||
// Timing specialisation to run repeated Tasks at specific times and/or days | // Timing specialisation to run repeated Tasks at specific times and/or days | |||
object { | object { | |||
[datetime ma-calendar-start;] // default: immediate | [datetime ma-calendar-start;] // default: immediate | |||
[datetime ma-calendar-end;] // default: indefinite | [datetime ma-calendar-end;] // default: indefinite | |||
[int ma-calendar-months<0..*>;] // default: 1-12 | [int ma-calendar-months<0..*>;] // default: 1-12 | |||
[days ma-calendar-days-of-week<0..*>;] // default: all | [days ma-calendar-days-of-week<0..*>;] // default: all | |||
[int ma-calendar-days-of-month<0..*>;] // default 1-31 | ||||
[int ma-calendar-hours<0..*>;] // default: 0-23 | [int ma-calendar-hours<0..*>;] // default: 0-23 | |||
[int ma-calendar-minutes<0..*>;] // default: 0-59 | [int ma-calendar-minutes<0..*>;] // default: 0-59 | |||
[int ma-calendar-seconds<0..*>;] // default: 0-59 | [int ma-calendar-seconds<0..*>;] // default: 0-59 | |||
[int ma-calendar-timezone-offset;] | [int ma-calendar-timezone-offset;] | |||
// default: system timezone offset | // default: system timezone offset | |||
} ma-calendar-obj; | } ma-calendar-obj; | |||
3.11.3. One-Off Timing | 3.11.3. One-Off Timing | |||
Information model elements: | Information model elements: | |||
// Timing specialisation to run once at a specified time/date | // Timing specialisation to run once at a specified time/date | |||
object { | object { | |||
datetime ma-one-off-time; | datetime ma-one-off-time; | |||
} ma-one-off-obj; | } ma-one-off-obj; | |||
skipping to change at page 27, line 13 | skipping to change at page 28, line 13 | |||
the reader. | the reader. | |||
// Pre-Configuration | // Pre-Configuration | |||
{ | { | |||
"ma-config": { | "ma-config": { | |||
"ma-agent-id": "550e8400-e29b-41d4-a716-446655440000", | "ma-agent-id": "550e8400-e29b-41d4-a716-446655440000", | |||
"ma-control-tasks": [ | "ma-control-tasks": [ | |||
{ | { | |||
"ma-task-name": "Controller configuration", | "ma-task-name": "Controller configuration", | |||
"uri": "urn:ietf:lmap:control:http_controller_configuration" | "ma-task-registry-entry": "urn:ietf:lmap:control:http_controller_configuration" | |||
} | } | |||
] | ] | |||
"ma-control-channels": [ | "ma-control-channels": [ | |||
{ | { | |||
"ma-channel-name": "Controller channel", | "ma-channel-name": "Controller channel", | |||
"ma-channel-target": "http://www.example.com/lmap/controller", | "ma-channel-target": "http://www.example.com/lmap/controller", | |||
"ma-channel-credientials": { } // structure of certificate ommitted for brevity | "ma-channel-credientials": { } // structure of certificate ommitted for brevity | |||
} | } | |||
] | ] | |||
"ma-control-schedules": [ | "ma-control-schedules": [ | |||
{ | { | |||
"ma-schedule-name": "pre-configured schedule", | "ma-schedule-name": "pre-configured schedule", | |||
"ma-schedule-tasks": { | "ma-schedule-tasks": { | |||
{ | { | |||
"ma-schedule-task-name": "Controller configuration", | "ma-schedule-task-name": "Controller configuration", | |||
"ma-schedule-task-datasets": [ | "ma-schedule-channels": [ | |||
{ | { | |||
"ma-schedule-task-channel-names": "Controller channel" | "ma-schedule-channel-interface-selection": [1], | |||
"ma-schedule-task-source-channel-names": ["Controller channel"] | ||||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
"ma-schedule-timing": { | "ma-schedule-timing": { | |||
"ma-timing-name": "startup plus up to one hour", | "ma-timing-name": "startup plus up to one hour", | |||
"ma-timing-startup": { | "ma-timing-startup": { | |||
} | } | |||
"ma-timing-random-spread": "3600000" | "ma-timing-random-spread": "3600000" | |||
} | } | |||
skipping to change at page 28, line 16 | skipping to change at page 29, line 17 | |||
hourly. | hourly. | |||
// Configuration | // Configuration | |||
{ | { | |||
"ma-config": { | "ma-config": { | |||
"ma-agent-id": "550e8400-e29b-41d4-a716-446655440000", | "ma-agent-id": "550e8400-e29b-41d4-a716-446655440000", | |||
"ma-control-tasks": [ | "ma-control-tasks": [ | |||
{ | { | |||
"ma-task-name": "Controller configuration", | "ma-task-name": "Controller configuration", | |||
"uri": "urn:ietf:lmap:control:http_controller_configuration" | "ma-task-registry-entry": "urn:ietf:lmap:control:http_controller_configuration" | |||
}, | }, | |||
{ | { | |||
"ma-task-name": "Controller status and capabilities", | "ma-task-name": "Controller status and capabilities", | |||
"uri": "urn:ietf:lmap:control:http_controller_status_and_capabilities" | "ma-task-registry-entry": "urn:ietf:lmap:control:http_controller_status_and_capabilities" | |||
}, | }, | |||
{ | { | |||
"ma-task-name": "Controller instruction", | "ma-task-name": "Controller instruction", | |||
"uri": "urn:ietf:lmap:control:http_controller_instruction" | "ma-task-registry-entry": "urn:ietf:lmap:control:http_controller_instruction" | |||
} | } | |||
] | ] | |||
"ma-control-channels": [ | "ma-control-channels": [ | |||
{ | { | |||
"ma-channel-name": "Controller instruction", | "ma-channel-name": "Controller instruction", | |||
"ma-channel-target": "http://www.example.com/lmap/controller", | "ma-channel-target": "http://www.example.com/lmap/controller", | |||
"ma-channel-credientials": { } // structure of certificate ommitted for brevity | "ma-channel-credientials": { } // structure of certificate ommitted for brevity | |||
} | } | |||
] | ] | |||
"ma-control-schedules": [ | "ma-control-schedules": [ | |||
{ | { | |||
"ma-schedule-name": "Controller schedule", | "ma-schedule-name": "Controller schedule", | |||
"ma-schedule-tasks": { | "ma-schedule-tasks": [ | |||
{ | { | |||
"ma-schedule-task-name": "Controller configuration", | "ma-schedule-task-name": "Controller configuration", | |||
"ma-schedule-task-datasets": [ | "ma-schedule-channels": [ | |||
{ | { | |||
"ma-schedule-task-channel-names": ["Controller channel"] | "ma-schedule-channel-interface-selection": [1], | |||
"ma-schedule-task-source-channel-names": ["Controller channel"] | ||||
} | } | |||
] | ] | |||
}, | }, | |||
{ | { | |||
"ma-schedule-task-name": "Controller status and capabilities", | "ma-schedule-task-name": "Controller status and capabilities", | |||
"ma-schedule-task-datasets": [ | "ma-schedule-channels": [ | |||
{ | { | |||
"ma-schedule-task-channel-names": ["Controller channel"] | "ma-schedule-channel-interface-selection": [1], | |||
"ma-schedule-task-source-channel-names": ["Controller channel"] | ||||
} | } | |||
] | ] | |||
}, | }, | |||
{ | { | |||
"ma-schedule-task-name": "Controller instruction", | "ma-schedule-task-name": "Controller instruction", | |||
"ma-schedule-task-datasets": [ | "ma-schedule-channels": [ | |||
{ | { | |||
"ma-schedule-task-channel-names": ["Controller channel"] | "ma-schedule-channel-interface-selection": [1], | |||
"ma-schedule-task-source-channel-names": ["Controller channel"] | ||||
} | } | |||
] | ] | |||
} | } | |||
} | ] | |||
"ma-schedule-timing": { | "ma-schedule-timing": { | |||
"ma-timing-name": "hourly randomly", | "ma-timing-name": "hourly randomly", | |||
"ma-timing-calendar": { | "ma-timing-calendar": { | |||
"ma-calendar-minutes": ["00"], | "ma-calendar-minutes": ["00"], | |||
"ma-calendar-seconds": ["00"] | "ma-calendar-seconds": ["00"] | |||
} | } | |||
"ma-timing-random-spread": "3600000" | "ma-timing-random-spread": "3600000" | |||
} | } | |||
} | } | |||
] | ] | |||
skipping to change at page 31, line 15 | skipping to change at page 32, line 15 | |||
Instruction to the MA to perform a single UDP latency measurement | Instruction to the MA to perform a single UDP latency measurement | |||
task 4 times a day and to report the results immediately. | task 4 times a day and to report the results immediately. | |||
// Instruction | // Instruction | |||
{ | { | |||
"ma-instruction": { | "ma-instruction": { | |||
"ma-instruction-tasks": [ | "ma-instruction-tasks": [ | |||
{ | { | |||
"ma-task-name": "UDP Latency", | "ma-task-name": "UDP Latency", | |||
"uri": "urn:ietf:ippm:measurement:UDPLatency-Poisson-XthPercentileMean", | "ma-task-registry-entry": "urn:ietf:ippm:measurement:UDPLatency-Poisson-XthPercentileMean", | |||
"ma-task-options": [ | "ma-task-options": [ | |||
{"name": "X", "value": "99"}, | {"name": "X", "value": "99"}, | |||
{"name":"rate", "value": "5"}, | {"name":"rate", "value": "5"}, | |||
{"name":"duration", "value": "30.000"}, | {"name":"duration", "value": "30.000"}, | |||
{"name":"interface", "value": "broadband"}, | {"name":"interface", "value": "broadband"}, | |||
{"name":"destination-ip", "value": {"version":"ipv4", "ip-address":"192.168.2.54"}}, | {"name":"destination-ip", "value": {"version":"ipv4", "ip-address":"192.168.2.54"}}, | |||
{"name":"destination-port", "value": "50000"}, | {"name":"destination-port", "value": "50000"}, | |||
{"name":"source-port", "value": "50000"} | {"name":"source-port", "value": "50000"} | |||
], | ], | |||
"ma-task-suppress-by-default": "TRUE" | "ma-task-suppress-by-default": "TRUE" | |||
}, | }, | |||
{ | { | |||
"ma-task-name": "Report", | "ma-task-name": "Report", | |||
"uri": "urn:ietf:lmap:report:http_report", | "ma-task-registry-entry": "urn:ietf:lmap:report:http_report", | |||
"ma-task-options": [ | "ma-task-options": [ | |||
{"name": "report-with-no-data", "value": "FALSE"} | {"name": "report-with-no-data", "value": "FALSE"} | |||
], | ], | |||
"ma-task-suppress-by-default": "FALSE" | "ma-task-suppress-by-default": "FALSE" | |||
} | } | |||
] | ] | |||
"ma-report-channels": [ | "ma-report-channels": [ | |||
{ | { | |||
"ma-channel-name": "Collector A", | "ma-channel-name": "Collector A", | |||
"ma-channel-target": "http://www.example2.com/lmap/collector", | "ma-channel-target": "http://www.example2.com/lmap/collector", | |||
"ma-channel-credientials": { } // structure of certificate ommitted for brevity | "ma-channel-credientials": { } // structure of certificate ommitted for brevity | |||
} | } | |||
] | ] | |||
"ma-instruction-schedules": [ | "ma-instruction-schedules": [ | |||
{ | { | |||
"ma-schedule-name": "4 times daily test UDP latency and report", | "ma-schedule-name": "4 times daily test UDP latency and report", | |||
"ma-schedule-tasks": { | "ma-schedule-tasks": { | |||
{ | { | |||
"ma-schedule-task-name": "UDP Latency", | "ma-schedule-task-name": "UDP Latency", | |||
"ma-schedule-task-datasets": [ | "ma-schedule-downstream-tasks": [ | |||
{ | { | |||
"ma-schedule-task-output-task-names": "Report" | "ma-schedule-task-output-selection": [1], | |||
"ma-schedule-task-downstream-task-configuration-names": "Report" | ||||
} | } | |||
] | ] | |||
}, | }, | |||
{ | { | |||
"ma-schedule-task-name": "Report", | "ma-schedule-task-name": "Report", | |||
"ma-schedule-task-datasets": [ | "ma-schedule-channels": [ | |||
{ | { | |||
"ma-schedule-task-channel-names": "Collector A" | "ma-schedule-channel-interface-selection": [1], | |||
"ma-schedule-channel-names": "Collector A" | ||||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
"ma-schedule-timing": { | "ma-schedule-timing": { | |||
"ma-timing-name": "once every 6 hours", | "ma-timing-name": "once every 6 hours", | |||
"ma-timing-calendar": { | "ma-timing-calendar": { | |||
"ma-calendar-hours": ["00", "06", "12", "18"], | "ma-calendar-hours": ["00", "06", "12", "18"], | |||
"ma-calendar-minutes": ["00"], | "ma-calendar-minutes": ["00"], | |||
"ma-calendar-seconds": ["00"] | "ma-calendar-seconds": ["00"] | |||
skipping to change at page 33, line 14 | skipping to change at page 34, line 14 | |||
// Report | // Report | |||
{ | { | |||
ma-report: { | ma-report: { | |||
"ma-report-date": "2014-06-09T02:30:45+00:00", | "ma-report-date": "2014-06-09T02:30:45+00:00", | |||
"ma-report-agent-id": "550e8400-e29b-41d4-a716-446655440000", | "ma-report-agent-id": "550e8400-e29b-41d4-a716-446655440000", | |||
"ma-report-tasks": [ | "ma-report-tasks": [ | |||
"ma-report-task-config": { | "ma-report-task-config": { | |||
"ma-task-name": "UDP Latency", | "ma-task-name": "UDP Latency", | |||
"uri": "urn:ietf:ippm:measurement:UDPLatency-Poisson-XthPercentileMean", | "ma-task-registry-entry": "urn:ietf:ippm:measurement:UDPLatency-Poisson-XthPercentileMean", | |||
"ma-task-options": [ | "ma-task-options": [ | |||
{"name": "X", "value": "99"}, | {"name": "X", "value": "99"}, | |||
{"name":"rate", "value": "5"}, | {"name":"rate", "value": "5"}, | |||
{"name":"duration", "value": "30.000"}, | {"name":"duration", "value": "30.000"}, | |||
{"name":"interface", "value": "broadband"}, | {"name":"interface", "value": "broadband"}, | |||
{"name":"destination-ip", "value": {"version":"ipv4", "ip-address":"192.168.2.54"}}, | {"name":"destination-ip", "value": {"version":"ipv4", "ip-address":"192.168.2.54"}}, | |||
{"name":"destination-port", "value": "50000"}, | {"name":"destination-port", "value": "50000"}, | |||
{"name":"source-port", "value": "50000"} | {"name":"source-port", "value": "50000"} | |||
] | ] | |||
}, | }, | |||
"ma-report-task-column-labels": ["time", "conflicting-tasks", "cross-traffic", "mean"], | "ma-report-task-column-labels": ["start-time", "conflicting-tasks", "cross-traffic", "mean", "min", "max"], | |||
"ma-report-task-rows": [ | "ma-report-task-rows": [{"2014-06-09T02:30:10+00:00", "", "0", "20.13", "18.3", "24.1"}] | |||
{"2014-06-09T02:30:10+00:00", "", "0", "20.13"} | ||||
] | ||||
] | ] | |||
} | } | |||
} | } | |||
The Controller decides that there is a problem with the UDP L:atency | The Controller decides that there is a problem with the UDP L:atency | |||
test and issues a Suppression Instruction. Since the task is marked | test and issues a Suppression Instruction. Since the task is marked | |||
as suppressable by default, simply turning on suppression will stop | as suppressable by default, simply turning on suppression will stop | |||
the task being executed in future. | the task being executed in future. | |||
// Suppression | // Suppression | |||
End of changes. 80 change blocks. | ||||
159 lines changed or deleted | 234 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |