idnits 2.17.1 draft-ietf-lmap-yang-07.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 236 has weird spacing: '...nterval uin...' == Line 252 has weird spacing: '...rw time yan...' == Line 260 has weird spacing: '...nnected emp...' == Line 272 has weird spacing: '...started yan...' -- The document date (November 17, 2016) is 2717 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Outdated reference: A later version (-18) exists of draft-ietf-lmap-information-model-11 == Outdated reference: A later version (-08) exists of draft-ietf-netmod-entity-01 -- Obsolete informational reference (is this intentional?): RFC 6536 (Obsoleted by RFC 8341) -- Obsolete informational reference (is this intentional?): RFC 7223 (Obsoleted by RFC 8343) Summary: 0 errors (**), 0 flaws (~~), 7 warnings (==), 3 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group J. Schoenwaelder 3 Internet-Draft V. Bajpai 4 Intended status: Standards Track Jacobs University Bremen 5 Expires: May 21, 2017 November 17, 2016 7 A YANG Data Model for LMAP Measurement Agents 8 draft-ietf-lmap-yang-07.txt 10 Abstract 12 This document defines a data model for Large-Scale Measurement 13 Platforms (LMAP). The data model is defined using the YANG data 14 modeling language. 16 Status of This Memo 18 This Internet-Draft is submitted in full conformance with the 19 provisions of BCP 78 and BCP 79. 21 Internet-Drafts are working documents of the Internet Engineering 22 Task Force (IETF). Note that other groups may also distribute 23 working documents as Internet-Drafts. The list of current Internet- 24 Drafts is at http://datatracker.ietf.org/drafts/current/. 26 Internet-Drafts are draft documents valid for a maximum of six months 27 and may be updated, replaced, or obsoleted by other documents at any 28 time. It is inappropriate to use Internet-Drafts as reference 29 material or to cite them other than as "work in progress." 31 This Internet-Draft will expire on May 21, 2017. 33 Copyright Notice 35 Copyright (c) 2016 IETF Trust and the persons identified as the 36 document authors. All rights reserved. 38 This document is subject to BCP 78 and the IETF Trust's Legal 39 Provisions Relating to IETF Documents 40 (http://trustee.ietf.org/license-info) in effect on the date of 41 publication of this document. Please review these documents 42 carefully, as they describe your rights and restrictions with respect 43 to this document. Code Components extracted from this document must 44 include Simplified BSD License text as described in Section 4.e of 45 the Trust Legal Provisions and are provided without warranty as 46 described in the Simplified BSD License. 48 Table of Contents 50 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 51 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 2 52 1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 53 2. Data Model Overview . . . . . . . . . . . . . . . . . . . . . 3 54 3. Relationship to the Information Model . . . . . . . . . . . . 8 55 4. YANG Modules . . . . . . . . . . . . . . . . . . . . . . . . 10 56 4.1. LMAP Common YANG Module . . . . . . . . . . . . . . . . . 10 57 4.2. LMAP Control YANG Module . . . . . . . . . . . . . . . . 18 58 4.3. LMAP Report YANG Module . . . . . . . . . . . . . . . . . 39 59 5. Security Considerations . . . . . . . . . . . . . . . . . . . 44 60 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 46 61 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 47 62 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 48 63 8.1. Normative References . . . . . . . . . . . . . . . . . . 48 64 8.2. Informative References . . . . . . . . . . . . . . . . . 48 65 Appendix A. Example IPPM Extension Module for UDP Latency 66 Metrics . . . . . . . . . . . . . . . . . . . . . . 49 67 Appendix B. Example Configuration . . . . . . . . . . . . . . . 51 68 Appendix C. Example State . . . . . . . . . . . . . . . . . . . 55 69 Appendix D. Example Report . . . . . . . . . . . . . . . . . . . 57 70 Appendix E. Change History . . . . . . . . . . . . . . . . . . . 59 71 E.1. Non-editorial Changes since -06 . . . . . . . . . . . . . 59 72 E.2. Non-editorial Changes since -05 . . . . . . . . . . . . . 60 73 E.3. Non-editorial Changes since -04 . . . . . . . . . . . . . 60 74 E.4. Non-editorial Changes since -03 . . . . . . . . . . . . . 61 75 E.5. Non-editorial Changes since -02 . . . . . . . . . . . . . 61 76 E.6. Non-editorial Changes since -01 . . . . . . . . . . . . . 61 77 E.7. Non-editorial Changes since -00 . . . . . . . . . . . . . 62 78 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 62 80 1. Introduction 82 This document defines a data model for Large-Scale Measurement 83 Platforms (LMAP) [RFC7594]. The data model is defined using the YANG 84 [RFC6020] data modeling language. It aims to be consistent with the 85 LMAP Information Model [I-D.ietf-lmap-information-model]. 87 1.1. Terminology 89 This document uses the LMAP terminology defined in [RFC7594]. 91 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 92 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 93 document are to be interpreted as described in [RFC2119]. 95 1.2. Tree Diagrams 97 A simplified graphical representation of the data model is used in 98 this document. The meaning of the symbols in these diagrams is as 99 follows: 101 o Brackets "[" and "]" enclose list keys. 103 o Abbreviations before data node names: "rw" means configuration 104 (read-write), "ro" means state data (read-only), and "w" means RPC 105 input date (write-only). 107 o Symbols after data node names: "?" means an optional node, "!" 108 means a presence container, and "*" denotes a list and leaf-list. 110 o Parentheses enclose choice and case nodes, and case nodes are also 111 marked with a colon (":"). 113 o Ellipsis ("...") stands for contents of subtrees that are not 114 shown. 116 2. Data Model Overview 118 The LMAP framework has three basic elements: Measurement Agents, 119 Controllers, and Collectors. Measurement Agents initiate the actual 120 measurements, which are called Measurement Tasks in the LMAP 121 terminology. The Controller instructs one or more MAs and 122 communicates the set of Measurement Tasks an MA should perform and 123 when. The Collector accepts Reports from the MAs with the Results 124 from their Measurement Tasks. 126 The YANG data model for LMAP has been split into three modules: 128 1. The module ietf-lmap-common.yang provides common definitions such 129 as LMAP specific data types. 131 2. The module ietf-lmap-config.yang defines the data structures 132 exchanged between a Controller and Measurement Agents. 134 3. The module ietf-lmap-report.yang defines the data structures 135 exchanged between Measurement Agents and Collectors. 137 As shown in Figure 1, a Controller, implementing ietf-lmap- 138 common.yang and ietf-lmap-control.yang as a client, will instruct 139 Measurement Agents, implementing ietf-lmap-common.yang and ietf-lmap- 140 control.yang as servers. A Measurement Agent, implementing ietf- 141 lmap-common.yang and ietf-lmap-report.yang, will send results to a 142 Collector, implementing ietf-lmap-common.yang and ietf-lmap- 143 report.yang as a server. 145 +------------------------+ 146 | LMAP Controller | 147 | | 148 | Client: | 149 | ietf-lmap-comman.yang | 150 | ietf-lmap-control.yang | 151 +------------------------+ 152 +------------------------+ | 153 | LMAP Measurement Agent | | 154 | | <- request | 155 | Server: |<---------------------' 156 | ietf-lmap-comman.yang | response -> 157 | ietf-lmap-control.yang | 158 | | 159 | | request -> 160 | Client: |----------------------. 161 | ietf-lmap-comman.yang | <- response | 162 | ietf-lmap-report.yang | | 163 +------------------------+ v 164 +------------------------+ 165 | LMAP Collector | 166 | | 167 | Server: | 168 | ietf-lmap-comman.yang | 169 | ietf-lmap-report.yang | 170 +------------------------+ 172 Figure 1: LMAP Controller, Measurement Agents, and Collector and the 173 YANG modules they implement as client or server 175 The tree diagram below shows the structure of the configuration data 176 model. 178 module: ietf-lmap-control 179 +--rw lmap 180 +--rw agent 181 | +--rw agent-id? yang:uuid 182 | +--rw group-id? string 183 | +--rw measurement-point? string 184 | +--rw report-agent-id? boolean 185 | +--rw report-measurement-point? boolean 186 | +--rw controller-timeout? uint32 187 +--rw tasks 188 | +--rw task* [name] 189 | +--rw name lmap:identifier 190 | +--rw metric* [uri] 191 | | +--rw uri inet:uri 192 | | +--rw role* string 193 | +--rw program? string 194 | +--rw option* [id] 195 | | +--rw id lmap:identifier 196 | | +--rw name? string 197 | | +--rw value? string 198 | +--rw tag* lmap:identifier 199 +--rw schedules 200 | +--rw schedule* [name] 201 | +--rw name lmap:identifier 202 | +--rw start event-ref 203 | +--rw (stop)? 204 | | +--:(end) 205 | | | +--rw end? event-ref 206 | | +--:(duration) 207 | | +--rw duration? uint32 208 | +--rw execution-mode? enumeration 209 | +--rw tag* lmap:tag 210 | +--rw suppression-tag* lmap:tag 211 | +--rw action* [name] 212 | +--rw name lmap:identifier 213 | +--rw task task-ref 214 | +--rw parameters 215 | | +--rw (extension)? 216 | +--rw option* [id] 217 | | +--rw id lmap:identifier 218 | | +--rw name? string 219 | | +--rw value? string 220 | +--rw destination* schedule-ref 221 | +--rw tag* lmap:tag 222 | +--rw suppression-tag* lmap:tag 223 +--rw suppressions 224 | +--rw suppression* [name] 225 | +--rw name lmap:identifier 226 | +--rw start? event-ref 227 | +--rw end? event-ref 228 | +--rw match* lmap:glob-pattern 229 | +--rw stop-running? boolean 230 +--rw events 231 +--rw event* [name] 232 +--rw name lmap:identifier 233 +--rw (event-type)? 234 | +--:(periodic) 235 | | +--rw periodic 236 | | +--rw interval uint32 237 | | +--rw start? yang:date-and-time 238 | | +--rw end? yang:date-and-time 239 | +--:(calendar) 240 | | +--rw calendar 241 | | +--rw month* lmap:month-or-all 242 | | +--rw day-of-month* lmap:day-of-months-or-all 243 | | +--rw day-of-week* lmap:weekday-or-all 244 | | +--rw hour* lmap:hour-or-all 245 | | +--rw minute* lmap:minute-or-all 246 | | +--rw second* lmap:second-or-all 247 | | +--rw timezone-offset? lmap:timezone-offset 248 | | +--rw start? yang:date-and-time 249 | | +--rw end? yang:date-and-time 250 | +--:(one-off) 251 | | +--rw one-off 252 | | +--rw time yang:date-and-time 253 | +--:(immediate) 254 | | +--rw immediate empty 255 | +--:(startup) 256 | | +--rw startup empty 257 | +--:(controller-lost) 258 | | +--rw controller-lost empty 259 | +--:(controller-connected) 260 | +--rw controller-connected empty 261 +--rw random-spread? uint32 262 +--rw cycle-interval? uint32 264 The tree diagram below shows the structure of the state data model. 266 module: ietf-lmap-control 267 +--ro lmap-state 268 +--ro agent 269 | +--ro agent-id? yang:uuid 270 | +--ro version string 271 | +--ro tag* lmap:tag 272 | +--ro last-started yang:date-and-time 273 +--ro tasks 274 | +--ro task* [name] 275 | +--ro name lmap:identifier 276 | +--ro metric* [uri] 277 | | +--ro uri inet:uri 278 | | +--ro role* string 279 | +--ro version? string 280 | +--ro program? string 281 +--ro schedules 282 | +--ro schedule* [name] 283 | +--ro name lmap:identifier 284 | +--ro state? enumeration 285 | +--ro storage? yang:gauge64 286 | +--ro invocations? yang:counter32 287 | +--ro suppressions? yang:counter32 288 | +--ro overlaps? yang:counter32 289 | +--ro failures? yang:counter32 290 | +--ro last-invocation? yang:date-and-time 291 | +--ro action* [name] 292 | +--ro name lmap:identifier 293 | +--ro state? enumeration 294 | +--ro storage? yang:gauge64 295 | +--ro invocations? yang:counter32 296 | +--ro suppressions? yang:counter32 297 | +--ro overlaps? yang:counter32 298 | +--ro failures? yang:counter32 299 | +--ro last-invocation? yang:date-and-time 300 | +--ro last-completion? yang:date-and-time 301 | +--ro last-status? lmap:status-code 302 | +--ro last-message? string 303 | +--ro last-failed-completion? yang:date-and-time 304 | +--ro last-failed-status? lmap:status-code 305 | +--ro last-failed-message? string 306 +--ro suppressions 307 +--ro suppression* [name] 308 +--ro name lmap:identifier 309 +--ro state? enumeration 311 The tree diagram below shows the structure of the reporting data 312 model. 314 module: ietf-lmap-report 315 rpcs: 316 +---x report 317 +---w input 318 +---w date yang:date-and-time 319 +---w agent-id? yang:uuid 320 +---w group-id? string 321 +---w measurement-point? string 322 +---w result* 323 +---w schedule-name? lmap:identifier 324 +---w action-name? lmap:identifier 325 +---w task-name? lmap:identifier 326 +---w parameters 327 | +---w (extension)? 328 +---w option* [id] 329 | +---w id lmap:identifier 330 | +---w name? string 331 | +---w value? string 332 +---w tag* lmap:tag 333 +---w event? yang:date-and-time 334 +---w start yang:date-and-time 335 +---w end? yang:date-and-time 336 +---w cycle-number? lmap:cycle-number 337 +---w status lmap:status-code 338 +---w conflict* 339 | +---w schedule-name? lmap:identifier 340 | +---w action-name? lmap:identifier 341 | +---w task-name? lmap:identifier 342 +---w table* 343 +---w metric* [uri] 344 | +---w uri inet:uri 345 | +---w role* string 346 +---w column* string 347 +---w row* 348 +---w value* string 350 3. Relationship to the Information Model 352 The LMAP information model [I-D.ietf-lmap-information-model] is 353 devided into six sections. They are mapped into the YANG data model 354 as explained below: 356 o Pre-Configuration Information: This is not modeled explicitly 357 since bootstrapping information is outside the scope of this data 358 model. Implementations may use some of the Configuration 359 Information also for bootstrapping purposes. 361 o Configuration Information: This is modeled in the /lmap/agent 362 subtree, the /lmap/schedules subtree, and the /lmap/tasks subtree 363 described below. Some items have been left out because they are 364 expected to be dealt with by the underlying protocol. 366 o Instruction Information: This is modeled in the /lmap/suppressions 367 subtree, the /lmap/schedules subtree, and the /lmap/tasks subtree 368 described below. 370 o Logging Information: Some of the logging information, in 371 particular 'success/failure/warning messages in response to 372 information updates from the Controller', will be handled by the 373 protocol used to manipulate the lmap specific configuration. For 374 the first version of the LMAP data models, it is assumed that 375 runtime logging information will be dealt with using protocols 376 that do not require a formal data model, e.g., the Syslog protocol 377 defined in [RFC5424]. 379 o Capability and Status Information: Some of the status information 380 is modeled in the /lmap-state/agent subtree and the /lmap-state/ 381 schedules subtree. Information about network interfaces can be 382 obtained from the ietf-interfaces YANG data model [RFC7223]. 383 Information about the hardware and the firmware can be obtained 384 from the ietf-system YANG data model [RFC7317]. A device 385 identifier can be obtained from the ietf-hardware YANG data model 386 [I-D.ietf-netmod-entity]. The list of supported tasks is modeled 387 in the /lmap-state/tasks subtree. 389 o Reporting Information: This is modeled by the report data model to 390 be implemented by the Collector. Measurement Agents send results 391 to the Collector via an RPC operation. 393 These six sections are build on the following common information 394 objects: 396 o Schedules: This is modeled in the /lmap/schedules subtree. 398 o Channels: Channels are not modeled since the NETCONF and RESTCONF 399 server configuration data model [I-D.ietf-netconf-server-model] 400 already provides a mechanism to configure NETCONF and RESTCONF 401 server channels. 403 o Task Configurations: This is modeled in the /lmap/tasks subtree. 405 o Event Information: This is modeled in the /lmap/events subtree. 407 4. YANG Modules 409 4.1. LMAP Common YANG Module 411 This module imports definitions from [RFC6536]. 413 file "ietf-lmap-common@2016-11-17.yang" 414 module ietf-lmap-common { 416 namespace "urn:ietf:params:xml:ns:yang:ietf-lmap-common"; 417 prefix "lmap"; 419 import ietf-inet-types { 420 prefix inet; 421 } 423 organization 424 "IETF Large-Scale Measurement Platforms Working Group"; 426 contact 427 "WG Web: 428 WG List: 430 Editor: Juergen Schoenwaelder 431 433 Editor: Vaibhav Bajpai 434 "; 436 description 437 "This module provides common definitions used by the data 438 models written for Large-Scale Measurement Platforms (LMAP). 439 This module defines typedefs and groupings but no schema 440 tree elements."; 442 revision "2016-11-17" { 443 description 444 "Initial version"; 445 reference 446 "RFC XXX: A YANG Data Model for LMAP Measurement Agents"; 447 } 449 /* 450 * Typedefs 451 */ 453 typedef identifier { 454 type string { 455 length "1..max"; 456 } 457 description 458 "An string value used to name something."; 459 } 461 typedef tag { 462 type string { 463 length "1..max"; 464 } 465 description 466 "A tag consists of at least one character."; 467 } 469 typedef glob-pattern { 470 type string { 471 length "1..max"; 472 } 473 description 474 'A glob style pattern (following POSIX.2 fnmatch() without 475 special treatment of file paths): 477 * matches a sequence of characters 478 ? matches a single character 479 [seq] matches any character in seq 480 [!seq] matches any character not in seq 482 A backslash followed by a character matches the following 483 character. In particular: 485 \* matches * 486 \? matches ? 487 \\ matches \ 489 A sequence seq may be a sequence of characters (e.g., [abc] 490 or a range of characters (e.g., [a-c]).'; 491 } 493 typedef wildcard { 494 type string { 495 pattern '\*'; 496 } 497 description 498 "A wildcard for calendar scheduling entries."; 499 } 501 typedef cycle-number { 502 type string { 503 pattern '[0-9]{8}\.[0-9]{6}'; 504 } 505 description 506 "A cycle number represented in the format YYYYMMDD.HHMMSS 507 where YYYY represents the year, MM the month (1..12), DD 508 the day of the months (01..31), HH the hour (00..23), MM 509 the minute (00..59), and SS the second (00..59)."; 510 } 512 typedef month { 513 type enumeration { 514 enum january { 515 value 1; 516 description 517 "January of the Gregorian calendar."; 518 } 519 enum february { 520 value 2; 521 description 522 "February of the Gregorian calendar."; 523 } 524 enum march { 525 value 3; 526 description 527 "March of the Gregorian calendar."; 528 } 529 enum april { 530 value 4; 531 description 532 "April of the Gregorian calendar."; 533 } 534 enum may { 535 value 5; 536 description 537 "May of the Gregorian calendar."; 538 } 539 enum june { 540 value 6; 541 description 542 "June of the Gregorian calendar."; 543 } 544 enum july { 545 value 7; 546 description 547 "July of the Gregorian calendar."; 548 } 549 enum august { 550 value 8; 551 description 552 "August of the Gregorian calendar."; 553 } 554 enum september { 555 value 9; 556 description 557 "September of the Gregorian calendar."; 558 } 559 enum october { 560 value 10; 561 description 562 "October of the Gregorian calendar."; 563 } 564 enum november { 565 value 11; 566 description 567 "November of the Gregorian calendar."; 568 } 569 enum december { 570 value 12; 571 description 572 "December of the Gregorian calendar."; 573 } 574 } 575 description 576 "A type modeling the month in the Gregorian calendar."; 577 } 579 typedef month-or-all { 580 type union { 581 type month; 582 type wildcard; 583 } 584 description 585 "A month or a wildcard indicating all twelve months."; 586 } 588 typedef day-of-month { 589 type uint8 { range "1..31"; } 590 description 591 "A day of a month of the Gregorian calendar."; 592 } 594 typedef day-of-months-or-all { 595 type union { 596 type day-of-month; 597 type wildcard; 598 } 599 description 600 "A day of a months or a wildcard indicating all days 601 of a month."; 602 } 604 typedef weekday { 605 type enumeration { 606 enum monday { 607 value 1; 608 description 609 "Monday of the Gregorian calendar."; 610 } 611 enum tuesday { 612 value 2; 613 description 614 "Tuesday of the Gregorian calendar."; 615 } 616 enum wednesday { 617 value 3; 618 description 619 "Wednesday of the Gregorian calendar."; 620 } 621 enum thursday { 622 value 4; 623 description 624 "Thursday of the Gregorian calendar."; 625 } 626 enum friday { 627 value 5; 628 description 629 "Friday of the Gregorian calendar."; 630 } 631 enum saturday { 632 value 6; 633 description 634 "Saturday of the Gregorian calendar."; 635 } 636 enum sunday { 637 value 7; 638 description 639 "Sunday of the Gregorian calendar."; 640 } 641 } 642 description 643 "A type modeling the weekdays in the Gregorian calendar. 644 The numbering follows the ISO 8601 scheme."; 645 } 646 typedef weekday-or-all { 647 type union { 648 type weekday; 649 type wildcard; 650 } 651 description 652 "A weekday or a wildcard indicating all seven weekdays."; 653 } 655 typedef hour { 656 type uint8 { range "0..23"; } 657 description 658 "An hour of a day."; 659 } 661 typedef hour-or-all { 662 type union { 663 type hour; 664 type wildcard; 665 } 666 description 667 "An hour of a day or a wildcard indicating all hours 668 of a day."; 669 } 671 typedef minute { 672 type uint8 { range "0..59"; } 673 description 674 "A minute of an hour."; 675 } 677 typedef minute-or-all { 678 type union { 679 type minute; 680 type wildcard; 681 } 682 description 683 "A minute of an hour or a wildcard indicating all 684 minutes of an hour."; 685 } 687 typedef second { 688 type uint8 { range "0..59"; } 689 description 690 "A second of a minute."; 691 } 693 typedef second-or-all { 694 type union { 695 type second; 696 type wildcard; 697 } 698 description 699 "A second of a minute or a wildcard indicating all 700 seconds of a minute."; 701 } 703 typedef status-code { 704 type int32; 705 description 706 "A status code returned by the execution of a task. Note 707 that the actual range is implementation dependent but it 708 should be portable to use values in the range 0..127 for 709 regular exit codes. By convention, 0 indicates successful 710 termination. Negative values may be used to indicate 711 abnormal termination due to a signal; the absolute value 712 may identify the signal number in this case."; 713 } 715 typedef timezone-offset { 716 type string { 717 pattern 'Z|[\+\-]\d{2}:\d{2}'; 718 } 719 description 720 "A timezone-offset as it is used by the date-and-time type 721 defined in the ietf-yang-types module. The value Z is 722 equivalent to +00:00. The value -00:00 indicates and 723 unknown time-offset."; 724 reference 725 "RFC 6991: Common YANG Data Types"; 726 } 728 /* 729 * Groupings 730 */ 732 grouping registry-grouping { 733 description 734 "This grouping models a list of entries in a registry 735 that identify functions of a tasks."; 737 list metric { 738 key uri; 739 description 740 "A list of entries in a registry identifying functions."; 742 leaf uri { 743 type inet:uri; 744 description 745 "A URI identifying an entry in a registry."; 746 } 748 leaf-list role { 749 type string; 750 description 751 "A set of roles for the identified registry entry."; 752 } 753 } 754 } 756 grouping task-options-grouping { 757 description 758 "A list of options of a task. Each option is a name/value 759 pair (where the value may be absent)."; 761 list option { 762 key "id"; 763 ordered-by user; 764 description 765 "A list of options passed to the task. It is a list of 766 key / value pairs and may be used to model options. 767 Options may be used to identify the role of a task 768 or to pass a channel name to a task."; 770 leaf id { 771 type lmap:identifier; 772 description 773 "An identifier uniquely identifying an option. This 774 identifier is required by YANG to uniquely identify 775 a name value pair but it otherwise has no semantic 776 value"; 777 } 779 leaf name { 780 type string; 781 description 782 "The name of the option."; 783 } 785 leaf value { 786 type string; 787 description 788 "The value of the option."; 789 } 791 } 792 } 793 } 794 796 4.2. LMAP Control YANG Module 798 This module imports definitions from [RFC6536], [RFC6991] and the 799 common LMAP module and it references [RFC7398]. 801 file "ietf-lmap-control@2016-11-17.yang" 802 module ietf-lmap-control { 804 namespace "urn:ietf:params:xml:ns:yang:ietf-lmap-control"; 805 prefix "lmapc"; 807 import ietf-yang-types { 808 prefix yang; 809 } 810 import ietf-netconf-acm { 811 prefix nacm; 812 } 813 import ietf-lmap-common { 814 prefix lmap; 815 } 817 organization 818 "IETF Large-Scale Measurement Platforms Working Group"; 820 contact 821 "WG Web: 822 WG List: 824 Editor: Juergen Schoenwaelder 825 827 Editor: Vaibhav Bajpai 828 "; 830 description 831 "This module defines a data model for controlling measurement 832 agents that are part of a Large-Scale Measurement Platform 833 (LMAP). This data model is expected to be implemented by a 834 measurement agent."; 836 revision "2016-11-17" { 837 description 838 "Initial version"; 839 reference 840 "RFC XXX: A YANG Data Model for LMAP Measurement Agents"; 841 } 843 /* 844 * Typedefs 845 */ 847 typedef event-ref { 848 type leafref { 849 path "/lmap/events/event/name"; 850 } 851 description 852 "This type is used by data models that need to reference 853 a configured event source."; 854 } 856 typedef task-ref { 857 type leafref { 858 path "/lmap/tasks/task/name"; 859 } 860 description 861 "This type is used by data models that need to reference 862 a configured task."; 863 } 865 typedef schedule-ref { 866 type leafref { 867 path "/lmap/schedules/schedule/name"; 868 } 869 description 870 "This type is used by data models that need to reference 871 a configured schedule."; 872 } 874 /* 875 * Groupings 876 */ 878 grouping timing-start-end-grouping { 879 description 880 "A grouping that provides start and end times for 881 timing objects."; 882 leaf start { 883 type yang:date-and-time; 884 description 885 "The date and time when the timing object 886 starts to create triggers."; 887 } 888 leaf end { 889 type yang:date-and-time; 890 description 891 "The date and time when the timing object 892 stops to create triggers. 894 It is generally a good idea to always configure 895 an end time and to refresh the configuration 896 of timing object as needed to ensure that agents 897 that loose connectivity to their controller 898 do not continue their tasks forever."; 899 } 900 } 902 /* 903 * Configuration data nodes 904 */ 906 container lmap { 907 description 908 "Configuration of the LMAP agent."; 910 /* 911 * Agent Configuration 912 */ 914 container agent { 915 description 916 "Configuration of parameters affecting the whole 917 measurement agent."; 919 leaf agent-id { 920 type yang:uuid; 921 description 922 "The agent-id identifies a measurement agent with 923 a very low probability of collision. In certain 924 deployments, the agent-id may be considered 925 sensitive and hence this object is optional."; 926 } 928 leaf group-id { 929 type string; 930 description 931 "The group-id identifies a group of measurement 932 agents. In certain deployments, the group-id 933 may be considered less sensitive than the 934 agent-id."; 935 } 937 leaf measurement-point { 938 type string; 939 description 940 "The measurement point indicating where the 941 measurement agent is located on a path."; 942 reference 943 "RFC 7398: A Reference Path and Measurement Points 944 for Large-Scale Measurement of Broadband 945 Performance"; 946 } 948 leaf report-agent-id { 949 type boolean; 950 must '. != "true" or ../agent-id' { 951 description 952 "An agent-id must exist for this to be set 953 to true."; 954 } 955 default false; 956 description 957 "The 'report-agent-id' controls whether the 958 'agent-id' is reported to collectors if the 959 'group-id' is configured. If the 'group-id' 960 is not configured, the agent-id is always 961 reported."; 962 } 964 leaf report-measurement-point { 965 type boolean; 966 must '. != "true" or ../measurement-point' { 967 description 968 "A measurement-point must exist for this to be 969 set to true."; 970 } 971 default false; 972 description 973 "The 'report-measurement-point' controls whether 974 the 'measurement-point' is reported to collectors 975 if the 'measurement-point' is configured."; 976 } 978 leaf controller-timeout { 979 type uint32; 980 units "seconds"; 981 description 982 "A timer is started after each successful contact 983 with a controller. When the timer reaches the 984 controller-timeout, an event (controller-lost) is 985 raised indicating that connectivity to the controller 986 has been lost."; 987 } 988 } 990 /* 991 * Task Configuration 992 */ 994 container tasks { 995 description 996 "Configuration of LMAP tasks."; 998 list task { 999 key name; 1000 description 1001 "The list of tasks configured on the LMAP agent."; 1003 leaf name { 1004 type lmap:identifier; 1005 description 1006 "The unique name of a task."; 1007 } 1009 uses lmap:registry-grouping; 1011 leaf program { 1012 type string; 1013 nacm:default-deny-write; 1014 description 1015 "The (local) program to invoke in order to execute 1016 the task. If this leaf is not set, then the system 1017 will try to identify a suitable program based on 1018 the registry information present."; 1019 } 1021 uses lmap:task-options-grouping { 1022 description 1023 "The list of task specific options."; 1024 } 1026 leaf-list tag { 1027 type lmap:identifier; 1028 description 1029 "A set of task specific tags that are reported 1030 together with the measurement results to a collector. 1031 A tag can be used, for example, to carry the 1032 Measurement Cycle ID."; 1033 } 1034 } 1035 } 1037 /* 1038 * Schedule Instructions 1039 */ 1041 container schedules { 1042 description 1043 "Configuration of LMAP schedules. Schedules control 1044 which tasks are executed by the LMAP implementation."; 1046 list schedule { 1047 key name; 1048 description 1049 "Configuration of a particular schedule."; 1051 leaf name { 1052 type lmap:identifier; 1053 description 1054 "The locally-unique, administratively assigned name 1055 for this schedule."; 1056 } 1058 leaf start { 1059 type event-ref; 1060 mandatory true; 1061 description 1062 "The event source controlling the start of the 1063 scheduled actions."; 1064 } 1066 choice stop { 1067 description 1068 "This choice contains optional leafs that control the 1069 graceful forced termination of scheduled actions. 1070 When the end has been reached, the scheduled actions 1071 should be forced to terminate the measurements. 1072 This may involve being active some additional time in 1073 order to properly finish the action's activity (e.g., 1074 waiting for any still outstanding messages)."; 1076 leaf end { 1077 type event-ref; 1078 description 1079 "The event source controlling the graceful 1080 forced termination of the scheduled actions."; 1081 } 1083 leaf duration { 1084 type uint32; 1085 units "seconds"; 1086 description 1087 "The duration controlling the graceful forced 1088 termination of the scheduled actions."; 1089 } 1090 } 1092 leaf execution-mode { 1093 type enumeration { 1094 enum sequential { 1095 value 1; 1096 description 1097 "The actions of the schedule are executed 1098 sequentially."; 1099 } 1100 enum parallel { 1101 value 2; 1102 description 1103 "The actions of the schedule are executed 1104 concurrently"; 1105 } 1106 enum pipelined { 1107 value 3; 1108 description 1109 "The actions of the schedule are executed in a 1110 pipelined mode. Output created by an action is 1111 passed as input to the subsequent action."; 1112 } 1113 } 1114 default pipelined; 1115 description 1116 "The execution mode of this schedule determins in 1117 which order the actions of the schedule are executed."; 1118 } 1120 leaf-list tag { 1121 type lmap:tag; 1122 description 1123 "A set of schedule specific tags that are reported 1124 together with the measurement results to a collector."; 1125 } 1126 leaf-list suppression-tag { 1127 type lmap:tag; 1128 description 1129 "A set of suppression tags that are used to select 1130 schedules to be suppressed."; 1131 } 1133 list action { 1134 key name; 1135 description 1136 "An action describes a task that is invoked by the 1137 schedule. Multiple actions are invoked sequentially."; 1139 leaf name { 1140 type lmap:identifier; 1141 description 1142 "The unique identifier for this action."; 1143 } 1145 leaf task { 1146 type task-ref; 1147 mandatory true; 1148 description 1149 "The task invoked by this action."; 1150 } 1152 container parameters { 1153 description 1154 "This container is a place-holder for run-time 1155 parameters defined in task-specific data models 1156 augmenting the base lmap control data model."; 1158 choice extension { 1159 description 1160 "This choice is provided to augment in different 1161 sets of parameters."; 1162 } 1163 } 1165 uses lmap:task-options-grouping { 1166 description 1167 "The list of action specific options that are 1168 appended to the list of task specific options."; 1169 } 1171 leaf-list destination { 1172 type schedule-ref; 1173 description 1174 "A set of schedules receiving the output produced 1175 by this action. A queue is internally used to pass 1176 results to another schedule. The behaviour of 1177 an action passing data to its own schedule is 1178 implementation specific. 1180 Data passed to a sequential or pipelined schedule 1181 is received by the schedule's first action. Data 1182 passed to a parallel schedule is received by all 1183 actions of the schedule."; 1184 } 1186 leaf-list tag { 1187 type lmap:tag; 1188 description 1189 "A set of action specific tags that are reported 1190 together with the measurement results to a 1191 collector."; 1192 } 1194 leaf-list suppression-tag { 1195 type lmap:tag; 1196 description 1197 "A set of suppression tags that are used to select 1198 actions to be suppressed."; 1199 } 1200 } 1201 } 1202 } 1204 /* 1205 * Suppression Instructions 1206 */ 1208 container suppressions { 1209 description 1210 "Suppression information to prevent schedules or 1211 certain actions from starting."; 1213 list suppression { 1214 key name; 1215 description 1216 "Configuration of a particular suppression."; 1218 leaf name { 1219 type lmap:identifier; 1220 description 1221 "The locally-unique, administratively assigned name 1222 for this suppression."; 1223 } 1225 leaf start { 1226 type event-ref; 1227 description 1228 "The event source controlling the start of the 1229 suppression period."; 1230 } 1232 leaf end { 1233 type event-ref; 1234 description 1235 "The event source controlling the end of the 1236 suppression period. If not present, supression 1237 continues indefinitely."; 1238 } 1240 leaf-list match { 1241 type lmap:glob-pattern; 1242 description 1243 "A set of suppression match pattern. The suppression 1244 will apply to all schedules (and their actions) that 1245 have a matching value in their suppression-tags 1246 and to all actions that have a matching value in 1247 their suppression-tags."; 1248 } 1250 leaf stop-running { 1251 type boolean; 1252 default false; 1253 description 1254 "If 'stop-running' is true, running schedules and 1255 actions matching the suppression will be terminated 1256 when suppression is activated. If 'stop-running' is 1257 false, running schedules and actions will not be 1258 affected if suppression is activated."; 1259 } 1260 } 1261 } 1263 /* 1264 * Event Instructions 1265 */ 1267 container events { 1268 description 1269 "Configuration of LMAP events. 1271 Implementations may be forced to delay acting 1272 upon the occurance of events in the face of local 1273 constraints. An action triggered by an event 1274 therefore should not rely on the accuracy 1275 provided by the scheduler implementation."; 1277 list event { 1278 key name; 1279 description 1280 "The list of event sources configured on the 1281 LMAP agent."; 1283 leaf name { 1284 type lmap:identifier; 1285 description 1286 "The unique name of an event source."; 1287 } 1289 choice event-type { 1290 description 1291 "Different types of events are handled by 1292 different branches of this choice. Note that 1293 this choice can be extended via augmentations."; 1295 case periodic { 1296 container periodic { 1297 description 1298 "A periodic timing object triggers periodically 1299 according to a regular interval."; 1301 leaf interval { 1302 type uint32 { 1303 range "1..max"; 1304 } 1305 units "seconds"; 1306 mandatory true; 1307 description 1308 "The number of seconds between two triggers 1309 generated by this periodic timing object."; 1310 } 1311 uses timing-start-end-grouping; 1312 } 1313 } 1315 case calendar { 1316 container calendar { 1317 description 1318 "A calendar timing object triggers based on the 1319 current calendar date and time."; 1321 leaf-list month { 1322 type lmap:month-or-all; 1323 min-elements 1; 1324 description 1325 "A set of month at which this calendar timing 1326 will trigger. The wildcard means all months."; 1327 } 1329 leaf-list day-of-month { 1330 type lmap:day-of-months-or-all; 1331 min-elements 1; 1332 description 1333 "A set of days of the month at which this 1334 calendar timing will trigger. The wildcard means 1335 all days of a month."; 1336 } 1338 leaf-list day-of-week { 1339 type lmap:weekday-or-all; 1340 min-elements 1; 1341 description 1342 "A set of weekdays at which this calendar timing 1343 will trigger. The wildcard means all weekdays."; 1344 } 1346 leaf-list hour { 1347 type lmap:hour-or-all; 1348 min-elements 1; 1349 description 1350 "A set of hours at which this calendar timing will 1351 trigger. The wildcard means all hours of a day."; 1352 } 1354 leaf-list minute { 1355 type lmap:minute-or-all; 1356 min-elements 1; 1357 description 1358 "A set of minutes at which this calendar timing 1359 will trigger. The wildcard means all minutes of 1360 an hour."; 1361 } 1363 leaf-list second { 1364 type lmap:second-or-all; 1365 min-elements 1; 1366 description 1367 "A set of second at which this calendar timing 1368 will trigger. The wildcard means all seconds of 1369 a minute."; 1370 } 1372 leaf timezone-offset { 1373 type lmap:timezone-offset; 1374 description 1375 "The timezone in which this calendar timing 1376 object will be evaluated. If not present, 1377 the systems' local timezone will be used."; 1378 } 1379 uses timing-start-end-grouping; 1380 } 1381 } 1383 case one-off { 1384 container one-off { 1385 description 1386 "A one-off timing object triggers exactly once."; 1388 leaf time { 1389 type yang:date-and-time; 1390 mandatory true; 1391 description 1392 "This one-off timing object triggers once at 1393 the configured date and time."; 1394 } 1395 } 1396 } 1398 case immediate { 1399 leaf immediate { 1400 type empty; 1401 mandatory true; 1402 description 1403 "This immediate event object triggers immediately 1404 when it is configured."; 1405 } 1406 } 1408 case startup { 1409 leaf startup { 1410 type empty; 1411 mandatory true; 1412 description 1413 "This startup event object triggers whenever the 1414 LMAP agent (re)starts."; 1416 } 1417 } 1419 case controller-lost { 1420 leaf controller-lost { 1421 type empty; 1422 mandatory true; 1423 description 1424 "The controller-lost event object triggers when 1425 the connectivity to the controller has been lost 1426 for at least 'controller-timeout' seconds."; 1427 } 1428 } 1430 case controller-connected { 1431 leaf controller-connected { 1432 type empty; 1433 mandatory true; 1434 description 1435 "The controller-connected event object triggers 1436 when the connectivity to the controller has been 1437 restored after it was lost for at least 1438 'controller-timeout' seconds."; 1439 } 1440 } 1441 } 1443 leaf random-spread { 1444 type uint32; 1445 units seconds; 1446 description 1447 "This optional leaf adds a random spread to the 1448 computation of the event's trigger time. The 1449 random spread is a uniformly distributed random 1450 number taken from the interval [0:random-spread]."; 1451 } 1453 leaf cycle-interval { 1454 type uint32; 1455 units seconds; 1456 description 1457 "The optional cycle-interval defines the duration 1458 of the time interval in seconds that is used to 1459 calculate cycle numbers. No cycle number is 1460 calculated if the optional cycle-interval does 1461 not exist."; 1462 } 1463 } 1465 } 1466 } 1468 /* 1469 * The state subtree provides information about the capabilities 1470 * and the current status of the MA. 1471 */ 1473 container lmap-state { 1474 config false; 1475 description 1476 "A tree exporting state information about the LMAP agent."; 1478 container agent { 1479 description 1480 "Operations state of the measurement agent."; 1482 leaf agent-id { 1483 type yang:uuid; 1484 description 1485 "The agent-id identifies a measurement agent with 1486 a very low probability of collision. In certain 1487 deployments, the agent-id may be considered 1488 sensitive and hence this object is optional."; 1489 } 1491 leaf version { 1492 type string; 1493 mandatory true; 1494 description 1495 "A short description of the software implementing the 1496 measurement agent. This should include the version 1497 number of the measurement agent software."; 1498 } 1500 leaf-list tag { 1501 type lmap:tag; 1502 description 1503 "An optional unordered set of tags that provide 1504 additional information about the capabilities of 1505 the measurement agent."; 1506 } 1508 leaf last-started { 1509 type yang:date-and-time; 1510 mandatory true; 1511 description 1512 "The date and time the measurement agent last started."; 1514 } 1515 } 1517 container tasks { 1518 description 1519 "Available LMAP tasks, including information about their 1520 last execution and their last failed execution."; 1522 list task { 1523 key name; 1524 description 1525 "The list of tasks available on the LMAP agent."; 1527 leaf name { 1528 type lmap:identifier; 1529 description 1530 "The unique name of a task."; 1531 } 1533 uses lmap:registry-grouping; 1535 leaf version { 1536 type string; 1537 description 1538 "A short description of the software implementing 1539 the task. This should include the version 1540 number of the measurement task software."; 1541 } 1543 leaf program { 1544 type string; 1545 description 1546 "The (local) program to invoke in order to execute 1547 the task."; 1548 } 1549 } 1550 } 1552 container schedules { 1553 description 1554 "State of LMAP schedules."; 1556 list schedule { 1557 key name; 1558 description 1559 "State of a particular schedule."; 1561 leaf name { 1562 type lmap:identifier; 1563 description 1564 "The locally-unique, administratively assigned name 1565 for this schedule."; 1566 } 1568 leaf state { 1569 type enumeration { 1570 enum enabled { 1571 value 1; 1572 description 1573 "The value 'enabled' indicates that the 1574 schedule is currently enabled."; 1575 } 1576 enum disabled { 1577 value 2; 1578 description 1579 "The value 'disabled' indicates that the 1580 schedule is currently disabled."; 1581 } 1582 enum running { 1583 value 3; 1584 description 1585 "The value 'running' indicates that the 1586 schedule is currently running."; 1587 } 1588 enum suppressed { 1589 value 4; 1590 description 1591 "The value 'suppressed' indicates that the 1592 schedule is currently suppressed."; 1593 } 1594 } 1595 description 1596 "The current state of the schedule."; 1597 } 1599 leaf storage { 1600 type yang:gauge64; 1601 units "bytes"; 1602 description 1603 "The amount of secondary storage (e.g., allocated in a 1604 file system) holding temporary data allocated to the 1605 schedule in bytes. This object reports the amount of 1606 allocated physical storage and not the storage used 1607 by logical data records."; 1608 } 1609 leaf invocations { 1610 type yang:counter32; 1611 description 1612 "Number of invocations of this schedule. This counter 1613 does not include suppressed invocations or invocations 1614 that were prevented due to an overlap with a previous 1615 invocation of this schedule."; 1616 } 1618 leaf suppressions { 1619 type yang:counter32; 1620 description 1621 "Number of suppressed executions of this schedule."; 1622 } 1624 leaf overlaps { 1625 type yang:counter32; 1626 description 1627 "Number of executions prevented due to overlaps with 1628 a previous invocation of this schedule."; 1629 } 1631 leaf failures { 1632 type yang:counter32; 1633 description 1634 "Number of failed executions of this schedule. A 1635 failed execution is an execution where at least 1636 one action failed."; 1637 } 1639 leaf last-invocation { 1640 type yang:date-and-time; 1641 description 1642 "The date and time of the last invocation of 1643 this schedule."; 1644 } 1646 list action { 1647 key name; 1648 description 1649 "The state of the actions associated with this 1650 schedule entry."; 1652 leaf name { 1653 type lmap:identifier; 1654 description 1655 "The unique identifier for this action."; 1656 } 1657 leaf state { 1658 type enumeration { 1659 enum enabled { 1660 value 1; 1661 description 1662 "The value 'enabled' indicates that the 1663 action is currently enabled."; 1664 } 1665 enum disabled { 1666 value 2; 1667 description 1668 "The value 'disabled' indicates that the 1669 action is currently disabled."; 1670 } 1671 enum running { 1672 value 3; 1673 description 1674 "The value 'running' indicates that the 1675 action is currently runnning."; 1676 } 1677 enum suppressed { 1678 value 4; 1679 description 1680 "The value 'suppressed' indicates that the 1681 action is currently suppressed."; 1682 } 1683 } 1684 description 1685 "The current state of the action."; 1686 } 1688 leaf storage { 1689 type yang:gauge64; 1690 units "bytes"; 1691 description 1692 "The amount of secondary storage (e.g., allocated in a 1693 file system) holding temporary data allocated to the 1694 schedule in bytes. This object reports the amount of 1695 allocated physical storage and not the storage used 1696 by logical data records."; 1697 } 1699 leaf invocations { 1700 type yang:counter32; 1701 description 1702 "Number of invocations of this action. This counter 1703 does not include suppressed invocations or invocations 1704 that were prevented due to an overlap with a previous 1705 invocation of this action."; 1706 } 1708 leaf suppressions { 1709 type yang:counter32; 1710 description 1711 "Number of suppressed executions of this action."; 1712 } 1714 leaf overlaps { 1715 type yang:counter32; 1716 description 1717 "Number of executions prevented due to overlaps with 1718 a previous invocation of this action."; 1719 } 1721 leaf failures { 1722 type yang:counter32; 1723 description 1724 "Number of failed executions of this action."; 1725 } 1727 leaf last-invocation { 1728 type yang:date-and-time; 1729 description 1730 "The date and time of the last invocation of 1731 this action."; 1732 } 1734 leaf last-completion { 1735 type yang:date-and-time; 1736 description 1737 "The date and time of the last completion of 1738 this action."; 1739 } 1741 leaf last-status { 1742 type lmap:status-code; 1743 description 1744 "The status code returned by the last execution of 1745 this action."; 1746 } 1748 leaf last-message { 1749 type string; 1750 description 1751 "The status message produced by the last execution 1752 of this action."; 1754 } 1756 leaf last-failed-completion { 1757 type yang:date-and-time; 1758 description 1759 "The date and time of the last failed completion 1760 of this action."; 1761 } 1763 leaf last-failed-status { 1764 type lmap:status-code; 1765 description 1766 "The status code returned by the last failed 1767 execution of this action."; 1768 } 1770 leaf last-failed-message { 1771 type string; 1772 description 1773 "The status message produced by the last failed 1774 execution of this action."; 1775 } 1776 } 1777 } 1778 } 1780 container suppressions { 1781 description 1782 "State of LMAP suppressions."; 1784 list suppression { 1785 key name; 1786 description 1787 "State of a particular suppression."; 1789 leaf name { 1790 type lmap:identifier; 1791 description 1792 "The locally-unique, administratively assigned name 1793 for this suppression."; 1794 } 1796 leaf state { 1797 type enumeration { 1798 enum enabled { 1799 value 1; 1800 description 1801 "The value 'enabled' indicates that the 1802 suppression is currently enabled."; 1803 } 1804 enum disabled { 1805 value 2; 1806 description 1807 "The value 'disabled' indicates that the 1808 suppression is currently disabled."; 1809 } 1810 enum active { 1811 value 3; 1812 description 1813 "The value 'active' indicates that the 1814 suppression is currently active."; 1815 } 1816 } 1817 description 1818 "The current state of the suppression."; 1819 } 1820 } 1821 } 1822 } 1823 } 1824 1826 4.3. LMAP Report YANG Module 1828 This module imports definitions from [RFC6536] and the common LMAP 1829 module. 1831 file "ietf-lmap-report@2016-11-17.yang" 1832 module ietf-lmap-report { 1834 namespace "urn:ietf:params:xml:ns:yang:ietf-lmap-report"; 1835 prefix "lmapr"; 1837 import ietf-yang-types { 1838 prefix yang; 1839 } 1840 import ietf-lmap-common { 1841 prefix lmap; 1842 } 1844 organization 1845 "IETF Large-Scale Measurement Platforms Working Group"; 1847 contact 1848 "WG Web: 1849 WG List: 1851 Editor: Juergen Schoenwaelder 1852 1854 Editor: Vaibhav Bajpai 1855 "; 1857 description 1858 "This module defines a data model for reporting results from 1859 measurement agents, which are part of a Large-Scale Measurement 1860 Platform (LMAP), to result data collectors. This data model is 1861 expected to be implemented by a collector."; 1863 revision "2016-11-17" { 1864 description 1865 "Initial version"; 1866 reference 1867 "RFC XXX: A YANG Data Model for LMAP Measurement Agents"; 1868 } 1870 rpc report { 1871 description 1872 "The report operation is used by an LMAP measurement agent to 1873 submit measurement results produced by measurement tasks to 1874 a collector."; 1876 input { 1878 leaf date { 1879 type yang:date-and-time; 1880 mandatory true; 1881 description 1882 "The date and time when this result report was sent to 1883 a collector."; 1884 } 1886 leaf agent-id { 1887 type yang:uuid; 1888 description 1889 "The agent-id of the agent from which this 1890 report originates."; 1891 } 1893 leaf group-id { 1894 type string; 1895 description 1896 "The group-id of the agent from which this 1897 report originates."; 1898 } 1900 leaf measurement-point { 1901 type string; 1902 description 1903 "The measurement-point of the agent from which this 1904 report originates."; 1905 } 1907 list result { 1908 description 1909 "The list of tasks for which results are reported."; 1911 leaf schedule-name { 1912 type lmap:identifier; 1913 description 1914 "The name of the schedule that produced the result."; 1915 } 1917 leaf action-name { 1918 type lmap:identifier; 1919 description 1920 "The name of the action in the schedule that produced 1921 the result."; 1922 } 1924 leaf task-name { 1925 type lmap:identifier; 1926 description 1927 "The name of the task that produced the result."; 1928 } 1930 container parameters { 1931 description 1932 "This container is a place-holder for run-time 1933 parameters defined in task-specific data models 1934 augmenting the base lmap report data model."; 1936 choice extension { 1937 description 1938 "This choice is provided to augment in different 1939 sets of parameters."; 1940 } 1941 } 1943 uses lmap:task-options-grouping { 1944 description 1945 "The list of options there were in use then the 1946 measurement was performed. This list must include 1947 both the task specific options as well as the action 1948 specific options."; 1949 } 1951 leaf-list tag { 1952 type lmap:tag; 1953 description 1954 "A tag contains additional information that is passed 1955 with the result record to the collector. This is the 1956 joined set of tags defined for the task object and the 1957 action object. A tag can be used to carry the 1958 Measurement Cycle ID."; 1959 } 1961 leaf event { 1962 type yang:date-and-time; 1963 description 1964 "The date and time of the event that triggered the 1965 schedule of the action that produced the reported 1966 result values. The date and time does not include 1967 any added randomization."; 1968 } 1970 leaf start { 1971 type yang:date-and-time; 1972 mandatory true; 1973 description 1974 "The date and time when the task producing 1975 this result started."; 1976 } 1978 leaf end { 1979 type yang:date-and-time; 1980 description 1981 "The date and time when the task producing 1982 this result finished."; 1983 } 1985 leaf cycle-number { 1986 type lmap:cycle-number; 1987 description 1988 "The optional cycle number is the time closest to 1989 the time reported in the event leaf that is a multiple 1990 of the cycle-interval of the event that triggered the 1991 execution of the schedule. The value is only present 1992 if the event that triggered the execution of the 1993 schedule has a defined cycle-interval."; 1994 } 1996 leaf status { 1997 type lmap:status-code; 1998 mandatory true; 1999 description 2000 "The status code returned by the execution of this 2001 action."; 2002 } 2004 list conflict { 2005 description 2006 "The names of tasks overlapping with the execution 2007 of the task that has produced this result."; 2009 leaf schedule-name { 2010 type lmap:identifier; 2011 description 2012 "The name of a schedule that might have impacted 2013 the execution of the task that has produced this 2014 result."; 2015 } 2017 leaf action-name { 2018 type lmap:identifier; 2019 description 2020 "The name of an action within the schedule that 2021 might have impacted the execution of the task that 2022 has produced this result."; 2023 } 2025 leaf task-name { 2026 type lmap:identifier; 2027 description 2028 "The name of the task executed by an action within 2029 the schedule that might have impacted the execution 2030 of the task that has produced this result."; 2031 } 2032 } 2034 list table { 2035 description 2036 "A list of result tables."; 2038 uses lmap:registry-grouping; 2040 leaf-list column { 2041 type string; 2042 description 2043 "An ordered list of column labels. The order is 2044 determined by the system and must match the order 2045 of the columns in the result rows."; 2046 } 2048 list row { 2049 description 2050 "The rows of a result table."; 2052 leaf-list value { 2053 type string; 2054 description 2055 "The value of a cell in the result row."; 2056 } 2057 } 2058 } 2059 } 2060 } 2061 } 2062 } 2063 2065 5. Security Considerations 2067 The YANG module defined in this memo is designed to be accessed via 2068 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 2069 secure transport layer and the mandatory to implement secure 2070 transport is SSH [RFC6242]. The NETCONF access control model 2071 [RFC6536] provides the means to restrict access for particular 2072 NETCONF users to a pre-configured subset of all available NETCONF 2073 protocol operations and content. 2075 There are a number of data nodes defined in this YANG module which 2076 are writable/creatable/deletable (i.e., config true, which is the 2077 default). These data nodes may be considered sensitive or vulnerable 2078 in some network environments. Write operations (e.g., edit-config) 2079 to these data nodes without proper protection can have a negative 2080 effect on network operations. These are the subtrees and data nodes 2081 and their sensitivity/vulnerability: 2083 /lmap/agent This subtree configures general properties of 2084 the measurement agent such as its identity, its 2085 measurement point or controller timeout. This 2086 subtree should only have write access for the 2087 system responsible to configure the measurement 2088 agent. 2090 /lmap/tasks This subtree configures the tasks that can be 2091 invoked by a controller. This subtree should 2092 only have write access for the system 2093 responsible to configure the measurement agent. 2094 Care must be taken to not expose tasks to a 2095 controller that can cause damage to the system 2096 or the network. 2098 /lmap/schedules This subtree is used by a controller to define 2099 the schedules and actions that are executed 2100 when certain events occur. Unauthorized access 2101 can cause unwanted load on the device or 2102 network or it might direct measurement traffic 2103 to targets that become victims of an attack. 2105 /lmap/suppressions This subtree is used by a controller to define 2106 suppressions that can temporarily disable the 2107 execution of schedules or actions. 2108 Unauthorized access can either disable 2109 measurements that should normally take place or 2110 it can cause measurements to take place during 2111 times when normally no measurements should take 2112 place. 2114 /lmap/events This subtree is used by a controller to define 2115 events that trigger the execution of schedules 2116 and actions. Unauthorized access can either 2117 disable measurements that should normally take 2118 place or it can cause measurements to take 2119 place during times when normally no 2120 measurements should take place or at frequency 2121 that is higher than normally expected. 2123 Some of the readable data nodes in this YANG module may be considered 2124 sensitive or vulnerable in some network environments. It is thus 2125 important to control read access (e.g., via get, get-config or 2126 notification) to these data nodes. These are the subtrees and data 2127 nodes and their sensitivity/vulnerability: 2129 /lmap-state/agent This subtree provides information about the 2130 implementation (including version numbers). 2131 This information may be used to mount 2132 targeted attacks against the 2133 implementation. 2135 /lmap-state/tasks This subtree provides information about the 2136 tasks (including version numbers). This 2137 information may be used to mount targeted 2138 attacks against the implementation. 2140 /lmap-state/schedules This subtree provides information about the 2141 schedules executed on the system. This 2142 information may be used to check whether 2143 attacks against the implementation are 2144 effective. 2146 /lmap-state/suppressions This subtree provides information about the 2147 suppressions executed on the system. This 2148 information may be used to predict time 2149 periods where measurements take place (or 2150 do not take place). 2152 Some of the RPC operations in this YANG module may be considered 2153 sensitive or vulnerable in some network environments. It is thus 2154 important to control access to these operations. These are the 2155 operations and their sensitivity/vulnerability: 2157 /report The report operation is used to send locally collected 2158 measurement results to a remote collector. Unauthorized 2159 access may leak measurement results. 2161 The data model uses a number of identifiers that are set by the 2162 controller. Implementors may find these identifiers useful for the 2163 identification of resources, e.g., to identify objects in a 2164 filesystem providing temporary storage. Since the identifiers used 2165 by the YANG data model may allow characters that may be given special 2166 interpretation in a specific context, implementations MUST ensure 2167 that identifiers are properly mapped into safe identifiers. 2169 The data model allows to specify options in the form of name value 2170 pairs that are passed to programs. Implementers MUST taken care that 2171 option names and values are passed literally to programs. In 2172 particular, it MUST be avoided that any shell expansions are 2173 performed that may alter the option names and values. 2175 6. IANA Considerations 2177 This document registers a URI in the "IETF XML Registry" [RFC3688]. 2178 Following the format in RFC 3688, the following registrations have 2179 been made. 2181 URI: urn:ietf:params:xml:ns:yang:ietf-lmap-common 2182 Registrant Contact: The IESG. 2183 XML: N/A; the requested URI is an XML namespace. 2185 URI: urn:ietf:params:xml:ns:yang:ietf-lmap-control 2186 Registrant Contact: The IESG. 2187 XML: N/A; the requested URI is an XML namespace. 2189 URI: urn:ietf:params:xml:ns:yang:ietf-lmap-report 2190 Registrant Contact: The IESG. 2191 XML: N/A; the requested URI is an XML namespace. 2193 This document registers a YANG module in the "YANG Module Names" 2194 registry [RFC6020]. 2196 name: ietf-lmap-common 2197 namespace: urn:ietf:params:xml:ns:yang:ietf-lmap-common 2198 prefix: lmap 2199 reference: RFC XXXX 2201 name: ietf-lmap-control 2202 namespace: urn:ietf:params:xml:ns:yang:ietf-lmap-control 2203 prefix: lmapc 2204 reference: RFC XXXX 2206 name: ietf-lmap-report 2207 namespace: urn:ietf:params:xml:ns:yang:ietf-lmap-report 2208 prefix: lmapr 2209 reference: RFC XXXX 2211 7. Acknowledgements 2213 Several people contributed to this specification by reviewing early 2214 versions and actively participating in the LMAP working group 2215 (apologies to those unintentionally omitted): Marcelo Bagnulo, Martin 2216 Bjorklund, Trevor Burbridge, Timothy Carey, Philip Eardley, Al 2217 Morton, Dan Romascanu, Andrea Soppera, and Barbara Stark. 2219 Juergen Schoenwaelder and Vaibhav Bajpai worked in part on the Leone 2220 research project, which received funding from the European Union 2221 Seventh Framework Programme [FP7/2007-2013] under grant agreement 2222 number 317647. 2224 Juergen Schoenwaelder and Vaibhav Bajpai were partly funded by 2225 Flamingo, a Network of Excellence project (ICT-318488) supported by 2226 the European Commission under its Seventh Framework Programme. 2228 8. References 2230 8.1. Normative References 2232 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 2233 Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ 2234 RFC2119, March 1997, 2235 . 2237 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 2238 the Network Configuration Protocol (NETCONF)", RFC 6020, 2239 DOI 10.17487/RFC6020, October 2010, 2240 . 2242 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", RFC 2243 6991, DOI 10.17487/RFC6991, July 2013, 2244 . 2246 8.2. Informative References 2248 [I-D.ietf-lmap-information-model] 2249 Burbridge, T., Eardley, P., Bagnulo, M., and J. 2250 Schoenwaelder, "Information Model for Large-Scale 2251 Measurement Platforms (LMAP)", draft-ietf-lmap- 2252 information-model-11 (work in progress), August 2016. 2254 [I-D.ietf-netconf-server-model] 2255 Watsen, K. and J. Schoenwaelder, "NETCONF Server and 2256 RESTCONF Server Configuration Models", draft-ietf-netconf- 2257 server-model-09 (work in progress), March 2016. 2259 [I-D.ietf-netmod-entity] 2260 Bierman, A., Bjorklund, M., Dong, J., and D. Romascanu, "A 2261 YANG Data Model for Hardware Management", draft-ietf- 2262 netmod-entity-01 (work in progress), October 2016. 2264 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 2265 DOI 10.17487/RFC3688, January 2004, 2266 . 2268 [RFC5424] Gerhards, R., "The Syslog Protocol", RFC 5424, DOI 10 2269 .17487/RFC5424, March 2009, 2270 . 2272 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 2273 and A. Bierman, Ed., "Network Configuration Protocol 2274 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 2275 . 2277 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 2278 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 2279 . 2281 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 2282 Protocol (NETCONF) Access Control Model", RFC 6536, DOI 10 2283 .17487/RFC6536, March 2012, 2284 . 2286 [RFC7223] Bjorklund, M., "A YANG Data Model for Interface 2287 Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, 2288 . 2290 [RFC7317] Bierman, A. and M. Bjorklund, "A YANG Data Model for 2291 System Management", RFC 7317, DOI 10.17487/RFC7317, August 2292 2014, . 2294 [RFC7398] Bagnulo, M., Burbridge, T., Crawford, S., Eardley, P., and 2295 A. Morton, "A Reference Path and Measurement Points for 2296 Large-Scale Measurement of Broadband Performance", RFC 2297 7398, DOI 10.17487/RFC7398, February 2015, 2298 . 2300 [RFC7594] Eardley, P., Morton, A., Bagnulo, M., Burbridge, T., 2301 Aitken, P., and A. Akhter, "A Framework for Large-Scale 2302 Measurement of Broadband Performance (LMAP)", RFC 7594, 2303 DOI 10.17487/RFC7594, September 2015, 2304 . 2306 Appendix A. Example IPPM Extension Module for UDP Latency Metrics 2308 Sometimes tasks may require complicated parameters that cannot easily 2309 be fit into options, i.e., a list of name/value pairs. In such a 2310 situation, it is possible to augment the ietf-lmap-control.yang and 2311 ietf-lmap-report.yang data models with definitions for more complex 2312 parameters. The following example module demontrates this idea using 2313 the parameters of UDP latency metrics as an example (although UDP 2314 latency metric parameters do not really need such an extension 2315 module). 2317 module example-ietf-ippm-udp-latency { 2319 namespace "urn:example:ietf-ippm-udp-latency"; 2320 prefix "ippm-udp-latency"; 2322 import ietf-inet-types { 2323 prefix inet; 2324 } 2325 import ietf-lmap-control { 2326 prefix "lmapc"; 2327 } 2328 import ietf-lmap-report { 2329 prefix "lmapr"; 2330 } 2332 grouping ippm-udp-latency-parameter-grouping { 2333 leaf src-ip { 2334 type inet:ip-address; 2335 description 2336 "The source IP address of the UDP measurement traffic."; 2337 } 2339 leaf src-port { 2340 type inet:port-number; 2341 description 2342 "The source port number of the UDP measurement traffic."; 2343 } 2345 leaf dst-ip { 2346 type inet:ip-address; 2347 description 2348 "The destination IP address of the UDP measurement traffic."; 2349 } 2351 leaf dst-port { 2352 type inet:port-number; 2353 description 2354 "The destination port number of the UDP measurement traffic."; 2355 } 2357 leaf poisson-lambda { 2358 type decimal64 { 2359 fraction-digits 4; 2360 } 2361 units "seconds"; 2362 default 1.0000; 2363 description 2364 "The average interval for the poisson stream with a resolution 2365 of 0.0001 seconds (0.1 ms)."; 2366 } 2368 leaf poisson-limit { 2369 type decimal64 { 2370 fraction-digits 4; 2371 } 2372 units "seconds"; 2373 default 30.0000; 2374 description 2375 "The upper limit on the poisson distribution with a resolution 2376 of 0.0001 seconds (0.1 ms)."; 2377 } 2378 } 2380 augment "/lmapc:lmap/lmapc:schedules/lmapc:schedule/lmapc:action" 2381 + "/lmapc:parameters/lmapc:extension" { 2382 description 2383 "This augmentation adds parameters specific to IPPM UDP 2384 latency metrics to actions."; 2386 case "ietf-ippm-udp-latency" { 2387 uses ippm-udp-latency-parameter-grouping; 2388 } 2389 } 2391 augment "/lmapr:report/lmapr:input/lmapr:result" 2392 + "/lmapr:parameters/lmapr:extension" { 2393 description 2394 "This augmentation adds parameters specific to IPPM UDP 2395 latency metrics to reports."; 2397 case "ietf-ippm-udp-latency" { 2398 uses ippm-udp-latency-parameter-grouping; 2399 } 2400 } 2402 } 2404 Appendix B. Example Configuration 2406 2407 2409 2410 550e8400-e29b-41d4-a716-446655440000 2411 true 2412 2414 2415 2417 2418 S1 2419 E1 2420 sequential 2421 2422 A1 2423 update-ping-targets 2424 2425 2426 A2 2427 ping-all-targets 2428 S3 2429 2430 measurement:ping 2431 2432 2433 2434 S2 2435 E1 2436 parallel 2437 2438 A1 2439 traceroute 2440 2445 S3 2446 2447 2448 A2 2449 traceroute 2450 2455 S3 2456 2457 measurement:traceroute 2458 2459 2460 2461 S3 2462 E2 2463 2464 A1 2465 report 2466 2471 2472 2473 2475 2476 2477 2478 orphaned 2479 controller-lost 2480 controller-connected 2481 measurement:* 2482 2483 2485 2486 2487 2488 update-ping-targets 2489 /usr/bin/fping-update-targets 2490 2491 2492 2493 ping-all-targets 2494 /usr/bin/fping 2495 2496 2497 2498 traceroute 2499 /usr/bin/mtr 2500 2504 2505 2506 2507 report 2508 /usr/bin/lmap-report 2509 2511 2512 ippm-udp-latency-client 2513 /usr/bin/ippm-udp-latency 2514 2515 urn:example:tbd 2516 client 2517 2518 active 2519 2520 2522 2523 2525 2526 E1 2527 2528 3600000 2529 2016-09-01T00:00:00+00:00 2530 2016-11-01T00:00:00+00:00 2531 2532 60 2533 2534 2535 2536 E2 2537 2538 * 2539 monday 2540 * 2541 4 2542 0 2543 0 2544 +00:00 2545 2546 2547 2549 2550 controller-lost 2551 2552 2553 2555 2556 controller-connected 2557 2558 2559 2560 2561 2563 Appendix C. Example State 2565 2566 2568 2569 550e8400-e29b-41d4-a716-446655440000 2570 lmapd version 0.3 2571 2016-10-31T21:26:06+01:00 2572 2574 2575 2576 fping-update-targets 2577 /usr/bin/fping-update-targets 2578 2579 2580 fping 2581 /usr/bin/fping 2582 2583 2584 mtr 2585 /usr/bin/mtr 2586 2587 2588 report 2589 /usr/bin/lmap-report 2590 2591 2592 ippm-udp-latency-client 2593 /usr/bin/ippm-udp-latency 2594 2595 urn:example:tbd 2596 client 2597 2598 2599 2601 2602 2603 S1 2604 enabled 2605 0 2606 0 2607 0 2608 0 2609 0 2610 2611 A1 2612 enabled 2613 0 2614 0 2615 0 2616 0 2617 0 2618 2619 2620 A2 2621 enabled 2622 0 2623 0 2624 0 2625 0 2626 0 2627 2628 2629 2630 S2 2631 enabled 2632 0 2633 0 2634 0 2635 0 2636 0 2637 2638 A1 2639 enabled 2640 0 2641 0 2642 0 2643 0 2644 0 2645 2646 2647 A2 2648 enabled 2649 0 2650 0 2651 0 2652 0 2653 0 2654 2655 2656 2657 S3 2658 enabled 2659 0 2660 0 2661 0 2662 0 2663 0 2664 2665 A1 2666 enabled 2667 0 2668 0 2669 0 2670 0 2671 0 2672 2673 2674 2676 2677 2678 orphaned 2679 enabled 2680 2681 2682 2683 2685 Appendix D. Example Report 2687 2689 2690 2015-10-28T13:27:42+02:00 2691 550e8400-e29b-41d4-a716-446655440000 2692 2693 S1 2694 A1 2695 update-ping-targets 2696 2016-03-21T10:48:55+01:00 2697 2016-03-21T10:48:57+01:00 2698 0 2699 2700 2701 S1 2702 A2 2703 ping-all-targets 2704 2016-03-21T10:48:55+01:00 2705 2016-03-21T10:48:57+01:00 2706 0 2707 2708 target 2709 rtt 2710 2711 2001:db8::1 2712 42 2713 2714 2715 2001:db8::2 2716 24 2717 2718
2719
2720 2721 S2 2722 A1 2723 traceroute 2724 2729 2733 2016-03-21T10:48:55+01:00 2734 2016-03-21T10:48:57+01:00 2735 1 2736 2737 hop 2738 ip 2739 rtt 2740 2741 1 2742 2001:638:709:5::1 2743 10.5 2744 2745 2746 2 2747 ? 2748 2749 2750
2751
2752 2753 S2 2754 A2 2755 traceroute 2756 2761 2765 2016-03-21T10:48:55+01:00 2766 2016-03-21T10:48:57+01:00 2767 1 2768 2769 hop 2770 ip 2771 rtt 2772 2773 1 2774 2001:638:709:5::1 2775 11.8 2776 2777 2778 2 2779 ? 2780 2781 2782
2783
2784
2785
2787 Appendix E. Change History 2789 Note to the RFC Editor: this section should be removed on publication 2790 as an RFC. 2792 E.1. Non-editorial Changes since -06 2794 o Removed /lmap/agent/device-id and /lmap-state/agent/device-id, 2795 added pointer to the ietf-hardware YANG model. 2797 o Removed /lmap-state/agent/{hardware,firmware}, added pointer to 2798 the ietf-system YANG model. 2800 E.2. Non-editorial Changes since -05 2802 o Update the example in an attempt to aligned it with the example in 2803 the information model. 2805 o Added an extension hook to reports so that task-specific 2806 parameters can be echoed back to the collector. Updated the 2807 example extension module accordingly. 2809 o Added text and Figure 1 to describe the function and purpose of 2810 the three YANG modules. 2812 o Added a cycle-number type definition. 2814 o Added the optional cycle-interval to event definitions. 2816 o Added tags that report additional capabilities of the measurement 2817 agent. 2819 o Added event time and cycle-number to the result report. 2821 o Renamed the metrics-grouping to registry-grouping. 2823 o Removed JSON encoding of the examples (they will go into the 2824 RESTCONF document). 2826 E.3. Non-editorial Changes since -04 2828 o Tagged /lmap/tasks/task/program with nacm:default-deny-write. 2830 o Added /lmap-state/schedules/schedule/storage and /lmap-state/ 2831 schedules/schedule/action/storage. 2833 o Removed suppress-by-default. 2835 o Moved the metric list from /report/result into /report/result/ 2836 table. 2838 o Conflicts are now reported as a triple (schedule, action, task). 2840 o Replaced IPv4 address in the examples with IPv6 addresses. 2842 o Added result/status. 2844 E.4. Non-editorial Changes since -03 2846 o Reworked the reporting data model to align it with the changes in 2847 the information model. 2849 E.5. Non-editorial Changes since -02 2851 o Added a mechanism to enforce a runtime limit for schedules. 2853 o Added security considerations text warning about possible shell 2854 expansions of options. 2856 o Restricted all user-defined names and tags to lmap:identifier. 2857 Added security considerations text to make implementors aware of 2858 possible security issues if identifiers are naively mapped to say 2859 filesystem paths. 2861 o Schedules and actions now have tags (echoed to the collector) and 2862 suppression tags (used for suppression selection). 2864 o Introduced glob-style pattern to match tags. 2866 o Added an example module for IPPM udp latency metrics to 2867 demonstrate the usage of the extension mechanism. 2869 o Introduced parameters, an extension point for task/metric specific 2870 parameters defined in augmenting YANG modules. 2872 o Introduced the typedefs event-ref, task-ref, and schedule-ref. 2874 o Changed schedule/event to schedule/start and added the optional 2875 schedule/stop and schedule/duration leafs. 2877 E.6. Non-editorial Changes since -01 2879 o Updated and split examples (config vs state vs report). 2881 o Refactored the definitions so that common definitions used by both 2882 the control and report data models are in the new module ietf- 2883 lmap-common. 2885 o A report is submitted via an RPC operation instead of using a 2886 notification. 2888 o The default execution mode is pipelined. 2890 o Clarified which action consumes data in sequential, pipelines, and 2891 parallel execution mode. 2893 o Added /lmap/agent/measurement-point, /lmap/agent/report- 2894 measurement-point, and /report/measurement-point to configure and 2895 report the measurement point. 2897 o Turned /lmap/suppression into a list /lmap/suppressions/ 2898 suppression that uses a start and stop event to define the 2899 beginning and end of a suppression period. 2901 o Added controller-lost an controller-ok event choices to /lmap/ 2902 events/event. 2904 o Added a metrics-grouping to identify entries in a metric registry 2905 and associated roles. 2907 o Added /lmap-state/schedules to report the status of schedules and 2908 their actions. Refactored /lmap-state/tasks to only report the 2909 task capabilities. 2911 E.7. Non-editorial Changes since -00 2913 o A task can now reference multiply registry entries. 2915 o Schedules are triggered by Events instead of Timings; Timings are 2916 just one of many possible event sources. 2918 o Actions feed into other Schedules (instead of Actions within other 2919 Schedules). 2921 o Removed the notion of multiple task outputs. 2923 o Support for sequential, parallel, and pipelined execution of 2924 Actions. 2926 Authors' Addresses 2928 Juergen Schoenwaelder 2929 Jacobs University Bremen 2931 Email: j.schoenwaelder@jacobs-university.de 2933 Vaibhav Bajpai 2934 Jacobs University Bremen 2936 Email: v.bajpai@jacobs-university.de