idnits 2.17.1 draft-ietf-ippm-stamp-yang-01.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 373 has weird spacing: '...-status boo...' == Line 393 has weird spacing: '...sion-id uin...' == Line 396 has weird spacing: '...sion-id uin...' -- The document date (March 1, 2018) is 2219 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 (-10) exists of draft-ietf-ippm-stamp-00 ** Obsolete normative reference: RFC 5246 (Obsoleted by RFC 8446) ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) Summary: 2 errors (**), 0 flaws (~~), 5 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group G. Mirsky 3 Internet-Draft X. Min 4 Intended status: Standards Track ZTE Corp. 5 Expires: September 2, 2018 W. Luo 6 Ericsson 7 March 1, 2018 9 Simple Two-way Active Measurement Protocol (STAMP) Data Model 10 draft-ietf-ippm-stamp-yang-01 12 Abstract 14 This document specifies the data model for implementations of 15 Session-Sender and Session-Reflector for Simple Two-way Active 16 Measurement Protocol (STAMP) mode using YANG. 18 Status of This Memo 20 This Internet-Draft is submitted in full conformance with the 21 provisions of BCP 78 and BCP 79. 23 Internet-Drafts are working documents of the Internet Engineering 24 Task Force (IETF). Note that other groups may also distribute 25 working documents as Internet-Drafts. The list of current Internet- 26 Drafts is at https://datatracker.ietf.org/drafts/current/. 28 Internet-Drafts are draft documents valid for a maximum of six months 29 and may be updated, replaced, or obsoleted by other documents at any 30 time. It is inappropriate to use Internet-Drafts as reference 31 material or to cite them other than as "work in progress." 33 This Internet-Draft will expire on September 2, 2018. 35 Copyright Notice 37 Copyright (c) 2018 IETF Trust and the persons identified as the 38 document authors. All rights reserved. 40 This document is subject to BCP 78 and the IETF Trust's Legal 41 Provisions Relating to IETF Documents 42 (https://trustee.ietf.org/license-info) in effect on the date of 43 publication of this document. Please review these documents 44 carefully, as they describe your rights and restrictions with respect 45 to this document. Code Components extracted from this document must 46 include Simplified BSD License text as described in Section 4.e of 47 the Trust Legal Provisions and are provided without warranty as 48 described in the Simplified BSD License. 50 Table of Contents 52 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 53 1.1. Conventions used in this document . . . . . . . . . . . . 2 54 1.1.1. Requirements Language . . . . . . . . . . . . . . . . 2 55 2. Scope, Model, and Applicability . . . . . . . . . . . . . . . 3 56 2.1. Data Model Parameters . . . . . . . . . . . . . . . . . . 3 57 2.1.1. STAMP-Sender . . . . . . . . . . . . . . . . . . . . 3 58 2.1.2. STAMP-Reflector . . . . . . . . . . . . . . . . . . . 4 59 3. Data Model . . . . . . . . . . . . . . . . . . . . . . . . . 4 60 3.1. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 4 61 3.2. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 9 62 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 30 63 5. Security Considerations . . . . . . . . . . . . . . . . . . . 30 64 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 32 65 7. Normative References . . . . . . . . . . . . . . . . . . . . 32 66 Appendix A. Example of STAMP Session Configuration . . . . . . . 33 67 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 35 69 1. Introduction 71 The Simple Two-way Active Measurement Protocol (STAMP) 72 [I-D.ietf-ippm-stamp] can be used to measure performance parameters 73 of IP networks such as latency, jitter, and packet loss by sending 74 test packets and monitoring their experience in the network. The 75 STAMP protocol [Editor:ref to STAMP draft] in unauthenticated mode is 76 on-wire compatible with STAMP Light, discussed in Appendix I 77 [RFC5357]. The STAMP Light is known to have many implementations 78 though no common management framework being defined, thus leaving 79 some aspects of test packet processing to interpretation. As one of 80 goals of STAMP is to support these variations, this document presents 81 their analysis; describes common STAMP and STAMP model while allowing 82 for STAMP extensions in the future. This document defines the STAMP 83 data model and specifies it formally using the YANG data modeling 84 language [RFC6020]. 86 This version of the interfaces data model confirms to the Network 87 Management Datastore Architecture (NMDA) defined in 88 [I-D.ietf-netmod-revised-datastores]. 90 1.1. Conventions used in this document 92 1.1.1. Requirements Language 94 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 95 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 96 "OPTIONAL" in this document are to be interpreted as described in BCP 97 14 [RFC2119] [RFC8174] when, and only when, they appear in all 98 capitals, as shown here. 100 2. Scope, Model, and Applicability 102 The scope of this document includes model of the STAMP as defined in 103 [Editor:ref to STAMP draft]. 105 o----------------------------------------------------------o 106 | Config client | 107 o----------------------------------------------------------o 108 || || 109 || NETCONF/RESTCONF || 110 || || 111 o----------------------o o-------------------------o 112 | Config server | | Config server | 113 | | | | 114 +----------------------+ +-------------------------+ 115 | STAMP Session-Sender | <--- STAMP---> | STAMP Session-Reflector | 116 +----------------------+ +-------------------------+ 118 Figure 1: STAMP Reference Model 120 2.1. Data Model Parameters 122 This section describes all the parameters of the the stamp data 123 model. 125 2.1.1. STAMP-Sender 127 The stamp-session-sender container holds items that are related to 128 the configuration of the stamp Session-Sender logical entity. 130 The stamp-session-sender-state container holds information about the 131 state of the particular STAMP test session. 133 RPCs stamp-sender-start and stamp-sender-stop respectively start and 134 stop the referenced by session-id STAMP test session. 136 2.1.1.1. Controls for Test Session and Performance Metric Calculation 138 The data model supports several scenarios for a STAMP Session-Sender 139 to execute test sessions and calculate performance metrics: 141 The test mode in which the test packets are sent unbound in time 142 at defined by the parameter 'interval' in the stamp-session-sender 143 container frequency is referred as continuous mode. Performance 144 metrics in the continuous mode are calculated at period defined by 145 the parameter 'measurement-interval'. 147 The test mode that has specific number of the test packets 148 configured for the test session in the 'number-of-packets' 149 parameter is referred as periodic mode. The test session may be 150 repeated by the STAMP-Sender with the same parameters. The 151 'repeat' parameter defines number of tests and the 'repeat- 152 interval' - the interval between the consecutive tests. The 153 performance metrics are calculated after each test session when 154 the interval defined by the 'session-timeout' expires. 156 2.1.2. STAMP-Reflector 158 The stamp-session-reflector container holds items that are related to 159 the configuration of the STAMP Session-Reflector logical entity. 161 The stamp-session-refl-state container holds Session-Reflector state 162 data for the particular STAMP test session. 164 3. Data Model 166 Creating STAMP data model presents number of challenges and among 167 them is identification of a test-session at Session-Reflector. A 168 Session-Reflector MAY require only as little as its IP and UDP port 169 number in received STAMP-Test packet to spawn new test session. More 170 so, to test processing of Class-of-Service along the same route in 171 Equal Cost Multi-Path environment Session-Sender may run STAMP test 172 sessions concurrently using the same source IP address, source UDP 173 port number, destination IP address, and destination UDP port number. 174 Thus the only parameter that can be used to differentiate these test 175 sessions would be DSCP value. The DSCP field may get re-marked along 176 the path and without use of [RFC7750] that will go undetected, but by 177 using five-tuple instead of four-tuple as a key we can ensure that 178 STAMP test packets that are considered as different test sessions 179 follow the same path even in ECMP environments. 181 3.1. Tree Diagrams 182 module: ietf-stamp 183 +--rw stamp 184 | +--rw stamp-session-sender {session-sender}? 185 | | +--rw sender-enable? enable 186 | | +--rw test-session* [session-id] 187 | | +--rw session-id uint32 188 | | +--rw test-session-enable? enable 189 | | +--rw number-of-packets? union 190 | | +--rw packet-padding-size? uint32 191 | | +--rw interval? uint32 192 | | +--rw session-timeout? uint32 193 | | +--rw measurement-interval? uint32 194 | | +--rw repeat? union 195 | | +--rw repeat-interval? uint32 196 | | +--rw dscp-value? inet:dscp 197 | | +--rw test-session-reflector-mode? session-reflector-mode 198 | | +--rw sender-ip inet:ip-address 199 | | +--rw sender-udp-port inet:port-number 200 | | +--rw reflector-ip inet:ip-address 201 | | +--rw reflector-udp-port? inet:port-number 202 | | +--rw sender-timestamp-format? timestamp-format 203 | | +--rw security! {stamp-security}? 204 | | | +--rw key-chain? kc:key-chain-ref 205 | | +--rw first-percentile? percentile 206 | | +--rw second-percentile? percentile 207 | | +--rw third-percentile? percentile 208 | +--rw stamp-session-reflector {session-reflector}? 209 | +--rw reflector-enable? enable 210 | +--rw ref-wait? uint32 211 | +--rw reflector-mode-state? session-reflector-mode 212 | +--rw test-session* [session-id] 213 | +--rw session-id uint32 214 | +--rw dscp-handling-mode? session-dscp-mode 215 | +--rw dscp-value? inet:dscp 216 | +--rw sender-ip? union 217 | +--rw sender-udp-port? union 218 | +--rw reflector-ip? union 219 | +--rw reflector-udp-port? inet:port-number 220 | +--rw reflector-timestamp-format? timestamp-format 221 | +--rw security! {stamp-security}? 222 | +--rw key-chain? kc:key-chain-ref 224 Figure 2: STAMP Configuration Tree Diagram 226 module: ietf-stamp 227 +--ro stamp-state 228 +--ro stamp-session-sender-state {session-sender}? 229 | +--ro test-session-state* [session-id] 230 | +--ro session-id uint32 231 | +--ro sender-session-state? enumeration 232 | +--ro current-stats 233 | | +--ro start-time yang:date-and-time 234 | | +--ro packet-padding-size? uint32 235 | | +--ro interval? uint32 236 | | +--ro duplicate-packets? uint32 237 | | +--ro reordered-packets? uint32 238 | | +--ro sender-ip inet:ip-address 239 | | +--ro sender-udp-port inet:port-number 240 | | +--ro reflector-ip inet:ip-address 241 | | +--ro reflector-udp-port? inet:port-number 242 | | +--ro sender-timestamp-format? timestamp-format 243 | | +--ro reflector-timestamp-format? timestamp-format 244 | | +--ro dscp? inet:dscp 245 | | +--ro sent-packets? uint32 246 | | +--ro rcv-packets? uint32 247 | | +--ro sent-packets-error? uint32 248 | | +--ro rcv-packets-error? uint32 249 | | +--ro last-sent-seq? uint32 250 | | +--ro last-rcv-seq? uint32 251 | | +--ro two-way-delay 252 | | | +--ro delay 253 | | | | +--ro min? yang:gauge32 254 | | | | +--ro max? yang:gauge32 255 | | | | +--ro avg? yang:gauge32 256 | | | +--ro delay-variation 257 | | | +--ro min? uint32 258 | | | +--ro max? uint32 259 | | | +--ro avg? uint32 260 | | +--ro one-way-delay-far-end 261 | | | +--ro delay 262 | | | | +--ro min? yang:gauge32 263 | | | | +--ro max? yang:gauge32 264 | | | | +--ro avg? yang:gauge32 265 | | | +--ro delay-variation 266 | | | +--ro min? uint32 267 | | | +--ro max? uint32 268 | | | +--ro avg? uint32 269 | | +--ro one-way-delay-near-end 270 | | | +--ro delay 271 | | | | +--ro min? yang:gauge32 272 | | | | +--ro max? yang:gauge32 273 | | | | +--ro avg? yang:gauge32 274 | | | +--ro delay-variation 275 | | | +--ro min? uint32 276 | | | +--ro max? uint32 277 | | | +--ro avg? uint32 278 | | +--ro low-percentile 279 | | | +--ro delay-percentile 280 | | | | +--ro rtt-delay? percentile 281 | | | | +--ro near-end-delay? percentile 282 | | | | +--ro far-end-delay? percentile 283 | | | +--ro delay-variation-percentile 284 | | | +--ro rtt-delay-variation? percentile 285 | | | +--ro near-end-delay-variation? percentile 286 | | | +--ro far-end-delay-variation? percentile 287 | | +--ro mid-percentile 288 | | | +--ro delay-percentile 289 | | | | +--ro rtt-delay? percentile 290 | | | | +--ro near-end-delay? percentile 291 | | | | +--ro far-end-delay? percentile 292 | | | +--ro delay-variation-percentile 293 | | | +--ro rtt-delay-variation? percentile 294 | | | +--ro near-end-delay-variation? percentile 295 | | | +--ro far-end-delay-variation? percentile 296 | | +--ro high-percentile 297 | | | +--ro delay-percentile 298 | | | | +--ro rtt-delay? percentile 299 | | | | +--ro near-end-delay? percentile 300 | | | | +--ro far-end-delay? percentile 301 | | | +--ro delay-variation-percentile 302 | | | +--ro rtt-delay-variation? percentile 303 | | | +--ro near-end-delay-variation? percentile 304 | | | +--ro far-end-delay-variation? percentile 305 | | +--ro two-way-loss 306 | | | +--ro loss-count? int32 307 | | | +--ro loss-ratio? percentage 308 | | | +--ro loss-burst-max? int32 309 | | | +--ro loss-burst-min? int32 310 | | | +--ro loss-burst-count? int32 311 | | +--ro one-way-loss-far-end 312 | | | +--ro loss-count? int32 313 | | | +--ro loss-ratio? percentage 314 | | | +--ro loss-burst-max? int32 315 | | | +--ro loss-burst-min? int32 316 | | | +--ro loss-burst-count? int32 317 | | +--ro one-way-loss-near-end 318 | | +--ro loss-count? int32 319 | | +--ro loss-ratio? percentage 320 | | +--ro loss-burst-max? int32 321 | | +--ro loss-burst-min? int32 322 | | +--ro loss-burst-count? int32 323 | +--ro history-stats* [id] 324 | +--ro id uint32 325 | +--ro end-time yang:date-and-time 326 | +--ro number-of-packets? uint32 327 | +--ro packet-padding-size? uint32 328 | +--ro interval? uint32 329 | +--ro duplicate-packets? uint32 330 | +--ro reordered-packets? uint32 331 | +--ro loss-packets? uint32 332 | +--ro sender-ip inet:ip-address 333 | +--ro sender-udp-port inet:port-number 334 | +--ro reflector-ip inet:ip-address 335 | +--ro reflector-udp-port? inet:port-number 336 | +--ro sender-timestamp-format? timestamp-format 337 | +--ro reflector-timestamp-format? timestamp-format 338 | +--ro dscp? inet:dscp 339 | +--ro sent-packets? uint32 340 | +--ro rcv-packets? uint32 341 | +--ro sent-packets-error? uint32 342 | +--ro rcv-packets-error? uint32 343 | +--ro last-sent-seq? uint32 344 | +--ro last-rcv-seq? uint32 345 | +--ro two-way-delay 346 | | +--ro delay 347 | | | +--ro min? yang:gauge32 348 | | | +--ro max? yang:gauge32 349 | | | +--ro avg? yang:gauge32 350 | | +--ro delay-variation 351 | | +--ro min? uint32 352 | | +--ro max? uint32 353 | | +--ro avg? uint32 354 | +--ro one-way-delay-far-end 355 | | +--ro delay 356 | | | +--ro min? yang:gauge32 357 | | | +--ro max? yang:gauge32 358 | | | +--ro avg? yang:gauge32 359 | | +--ro delay-variation 360 | | +--ro min? uint32 361 | | +--ro max? uint32 362 | | +--ro avg? uint32 363 | +--ro one-way-delay-near-end 364 | +--ro delay 365 | | +--ro min? yang:gauge32 366 | | +--ro max? yang:gauge32 367 | | +--ro avg? yang:gauge32 368 | +--ro delay-variation 369 | +--ro min? uint32 370 | +--ro max? uint32 371 | +--ro avg? uint32 372 +--ro stamp-session-refl-state {session-reflector}? 373 +--ro reflector-light-admin-status boolean 374 +--ro test-session-state* [session-id] 375 +--ro session-id uint32 376 +--ro sent-packets? uint32 377 +--ro rcv-packets? uint32 378 +--ro sent-packets-error? uint32 379 +--ro rcv-packets-error? uint32 380 +--ro last-sent-seq? uint32 381 +--ro last-rcv-seq? uint32 382 +--ro reflector-timestamp-format? timestamp-format 383 +--ro sender-ip inet:ip-address 384 +--ro sender-udp-port inet:port-number 385 +--ro reflector-ip inet:ip-address 386 +--ro reflector-udp-port? inet:port-number 388 Figure 3: STAMP State Tree Diagram 390 rpcs: 391 +---x stamp-sender-start 392 | +---w input 393 | +---w session-id uint32 394 +---x stamp-sender-stop 395 +---w input 396 +---w session-id uint32 398 Figure 4: STAMP RPC Tree Diagram 400 3.2. YANG Module 402 file "ietf-stamp@2018-03-01.yang" 404 module ietf-stamp { 406 yang-version 1.1; 408 namespace "urn:ietf:params:xml:ns:yang:ietf-stamp"; 409 //namespace need to be assigned by IANA 410 prefix "ietf-stamp"; 412 import ietf-inet-types { 413 prefix inet; 414 reference "RFC 6991"; 415 } 416 import ietf-yang-types { 417 prefix yang; 418 reference "RFC 6991"; 420 } 421 import ietf-key-chain { 422 prefix kc; 423 reference "RFC 8177"; 424 } 426 organization 427 "IETF IPPM (IP Performance Metrics) Working Group"; 429 contact 430 "draft-ietf-ippm-stamp-yang@tools.ietf.org"; 432 description "STAMP Data Model"; 434 revision "2018-03-01" { 435 description 436 "00 version. Base STAMP specification is covered"; 437 reference ""; 438 } 440 /* 441 * Feature definitions. 442 */ 443 feature session-sender { 444 description 445 "This feature relates to the device functions as the 446 STAMP Session-Sender"; 447 } 449 feature session-reflector { 450 description 451 "This feature relates to the device functions as the 452 STAMP Session-Reflector"; 453 } 455 feature stamp-security { 456 description "Secure STAMP supported"; 457 } 459 typedef enable { 460 type boolean; 461 description "enable"; 462 } 464 typedef session-reflector-mode { 465 type enumeration { 466 enum stateful { 467 description 468 "When the Session-Reflector is stateful, 469 i.e. is aware of STAMP-Test session state."; 470 } 471 enum stateless { 472 description 473 "When the Session-Reflector is stateless, 474 i.e. is not aware of the state of 475 STAMP-Test session."; 476 } 477 } 478 description "State of the Session-Reflector"; 479 } 481 typedef session-dscp-mode { 482 type enumeration { 483 enum copy-received-value { 484 description 485 "Use DSCP value copied from received 486 STAMP test packet of the test session."; 487 } 488 enum use-configured-value { 489 description 490 "Use DSCP value configured for this 491 test session on the Session-Reflector."; 492 } 493 } 494 description 495 "DSCP handling mode by Session-Reflector."; 496 } 498 typedef timestamp-format { 499 type enumeration { 500 enum ntp-format { 501 description 502 "NTP 64 bit format of a timestamp"; 503 } 504 enum ptp-format { 505 description 506 "PTPv2 truncated format of a timestamp"; 507 } 508 } 509 description 510 "Timestamp format used by Session-Sender 511 or Session-Reflector."; 512 } 514 typedef percentage { 515 type decimal64 { 516 fraction-digits 5; 517 } 518 description "Percentage"; 519 } 521 typedef percentile { 522 type decimal64 { 523 fraction-digits 2; 524 } 525 description 526 "Percentile is a measure used in statistics 527 indicating the value below which a given 528 percentage of observations in a group of 529 observations fall."; 530 } 532 grouping maintenance-statistics { 533 description "Maintenance statistics grouping"; 534 leaf sent-packets { 535 type uint32; 536 description "Packets sent"; 537 } 538 leaf rcv-packets { 539 type uint32; 540 description "Packets received"; 541 } 542 leaf sent-packets-error { 543 type uint32; 544 description "Packets sent error"; 545 } 546 leaf rcv-packets-error { 547 type uint32; 548 description "Packets received error"; 549 } 550 leaf last-sent-seq { 551 type uint32; 552 description "Last sent sequence number"; 553 } 554 leaf last-rcv-seq { 555 type uint32; 556 description "Last received sequence number"; 557 } 558 } 560 grouping stamp-session-percentile { 561 description "Percentile grouping"; 562 leaf first-percentile { 563 type percentile; 564 default 95.00; 565 description 566 "First percentile to report"; 567 } 568 leaf second-percentile { 569 type percentile; 570 default 99.00; 571 description 572 "Second percentile to report"; 573 } 574 leaf third-percentile { 575 type percentile; 576 default 99.90; 577 description 578 "Third percentile to report"; 579 } 580 } 582 grouping delay-statistics { 583 description "Delay statistics grouping"; 584 container delay { 585 description "Packets transmitted delay"; 586 leaf min { 587 type yang:gauge32; 588 units microseconds; 589 description 590 "Min of Packets transmitted delay"; 591 } 592 leaf max { 593 type yang:gauge32; 594 units microseconds; 595 description 596 "Max of Packets transmitted delay"; 597 } 598 leaf avg { 599 type yang:gauge32; 600 units microseconds; 601 description 602 "Avg of Packets transmitted delay"; 603 } 604 } 606 container delay-variation { 607 description 608 "Packets transmitted delay variation"; 609 leaf min { 610 type uint32; 611 units microseconds; 612 description 613 "Min of Packets transmitted 614 delay variation"; 615 } 616 leaf max { 617 type uint32; 618 units microseconds; 619 description 620 "Max of Packets transmitted 621 delay variation"; 622 } 623 leaf avg { 624 type uint32; 625 units microseconds; 626 description 627 "Avg of Packets transmitted 628 delay variation"; 629 } 630 } 631 } 632 grouping time-percentile-report { 633 description "Delay percentile report grouping"; 634 container delay-percentile { 635 description 636 "Report round-trip, near- and far-end delay"; 637 leaf rtt-delay { 638 type percentile; 639 description 640 "Percentile of round-trip delay"; 641 } 642 leaf near-end-delay { 643 type percentile; 644 description 645 "Percentile of near-end delay"; 646 } 647 leaf far-end-delay { 648 type percentile; 649 description 650 "Percentile of far-end delay"; 651 } 652 } 653 container delay-variation-percentile { 654 description 655 "Report round-trip, near- and far-end delay variation"; 656 leaf rtt-delay-variation { 657 type percentile; 658 description 659 "Percentile of round-trip delay-variation"; 661 } 662 leaf near-end-delay-variation { 663 type percentile; 664 description 665 "Percentile of near-end delay variation"; 666 } 667 leaf far-end-delay-variation { 668 type percentile; 669 description 670 "Percentile of far-end delay-variation"; 671 } 672 } 673 } 675 grouping packet-loss-statistics { 676 description 677 "Grouping for Packet Loss statistics"; 678 leaf loss-count { 679 type int32; 680 description 681 "Number of lost packets 682 during the test interval."; 683 } 684 leaf loss-ratio { 685 type percentage; 686 description 687 "Ratio of packets lost to packets 688 sent during the test interval."; 689 } 690 leaf loss-burst-max { 691 type int32; 692 description 693 "Maximum number of consecutively 694 lost packets during the test interval."; 695 } 696 leaf loss-burst-min { 697 type int32; 698 description 699 "Minimum number of consecutively 700 lost packets during the test interval."; 701 } 702 leaf loss-burst-count { 703 type int32; 704 description 705 "Number of occasions with packet 706 loss during the test interval."; 707 } 708 } 710 grouping session-parameters { 711 description 712 "Parameters common among 713 Session-Sender and Session-Reflector"; 714 leaf sender-ip { 715 type inet:ip-address; 716 mandatory true; 717 description "Sender IP address"; 718 } 719 leaf sender-udp-port { 720 type inet:port-number { 721 range "49152..65535"; 722 } 723 mandatory true; 724 description "Sender UDP port number"; 725 } 726 leaf reflector-ip { 727 type inet:ip-address; 728 mandatory true; 729 description "Reflector IP address"; 730 } 731 leaf reflector-udp-port { 732 type inet:port-number{ 733 range "862 | 49152..65535"; 734 } 735 default 862; 736 description "Reflector UDP port number"; 737 } 738 } 740 grouping session-security { 741 description 742 "Grouping for STAMP security and related parameters"; 743 container security { 744 if-feature stamp-security; 745 presence "Enables secure STAMP"; 746 description 747 "Parameters for STAMP authentication or encryption"; 748 leaf key-chain { 749 type kc:key-chain-ref; 750 description "Name of key-chain"; 751 } 752 } 753 } 755 /* Configuration Data */ 756 container stamp { 757 description 758 "Top level container for stamp configuration"; 760 container stamp-session-sender { 761 if-feature session-sender; 762 description "stamp Session-Sender container"; 764 leaf sender-enable { 765 type enable; 766 default "true"; 767 description 768 "Whether this network element is enabled to 769 act as STAMP Session-Sender"; 770 } 772 list test-session { 773 key "session-id"; 774 unique "sender-ip sender-udp-port reflector-ip" 775 +" reflector-udp-port dscp-value"; 776 description 777 "This structure is a container of test session 778 managed objects"; 780 leaf session-id { 781 type uint32; 782 description "Session ID"; 783 } 785 leaf test-session-enable { 786 type enable; 787 default "true"; 788 description 789 "Whether this STAMP Test session is enabled"; 790 } 792 leaf number-of-packets { 793 type union { 794 type uint32 { 795 range 1..4294967294 { 796 description 797 "The overall number of UDP test packet 798 to be transmitted by the sender for this 799 test session"; 800 } 801 } 802 type enumeration { 803 enum forever { 804 description 805 "Indicates that the test session SHALL 806 be run *forever*."; 807 } 808 } 809 } 810 default 10; 811 description 812 "This value determines if the STAMP-Test session is 813 bound by number of test packets or not."; 814 } 816 leaf packet-padding-size { 817 type uint32; 818 default 27; 819 description 820 "Size of the Packet Padding. Suggested to run 821 Path MTU Discovery to avoid packet fragmentation in 822 IPv4 and packet blackholing in IPv6"; 823 } 825 leaf interval { 826 type uint32; 827 units microseconds; 828 description 829 "Time interval between transmission of two 830 consecutive packets in the test session in 831 microseconds"; 832 } 834 leaf session-timeout { 835 when "../number-of-packets != 'forever'" { 836 description 837 "Test session timeout only valid if the 838 test mode is periodic."; 839 } 840 type uint32; 841 units "seconds"; 842 default 900; 843 description 844 "The timeout value for the Session-Sender to 845 collect outstanding reflected packets."; 846 } 848 leaf measurement-interval { 849 when "../number-of-packets = 'forever'" { 850 description 851 "Valid only when the test to run forever, 852 i.e. continuously."; 853 } 854 type uint32; 855 units "seconds"; 856 default 60; 857 description 858 "Interval to calculate performance metric when 859 the test mode is 'continuous'."; 860 } 862 leaf repeat { 863 type union { 864 type uint32 { 865 range 0..4294967294; 866 } 867 type enumeration { 868 enum forever { 869 description 870 "Indicates that the test session SHALL 871 be repeated *forever* using the 872 information in repeat-interval 873 parameter, and SHALL NOT decrement 874 the value."; 875 } 876 } 877 } 878 default 0; 879 description 880 "This value determines if the STAMP-Test session must 881 be repeated. When a test session has completed, the 882 repeat parameter is checked. The default value 883 of 0 indicates that the session MUST NOT be repeated. 884 If the repeat value is 1 through 4,294,967,294 885 then the test session SHALL be repeated using the 886 information in repeat-interval parameter. 887 The implementation MUST decrement the value of repeat 888 after determining a repeated session is expected."; 889 } 891 leaf repeat-interval { 892 when "../repeat != '0'"; 893 type uint32; 894 units seconds; 895 default 0; 896 description 897 "This parameter determines the timing of repeated 898 STAMP-Test sessions when repeat is more than 0."; 899 } 901 leaf dscp-value { 902 type inet:dscp; 903 default 0; 904 description 905 "DSCP value to be set in the test packet."; 906 } 908 leaf test-session-reflector-mode { 909 type session-reflector-mode; 910 default "stateless"; 911 description 912 "The mode of STAMP-Reflector for the test session."; 913 } 915 uses session-parameters; 916 leaf sender-timestamp-format { 917 type timestamp-format; 918 default ntp-format; 919 description "Sender Timestamp format"; 920 } 921 uses session-security; 922 uses stamp-session-percentile; 923 } 924 } 926 container stamp-session-reflector { 927 if-feature session-reflector; 928 description 929 "stamp Session-Reflector container"; 930 leaf reflector-enable { 931 type enable; 932 default "true"; 933 description 934 "Whether this network element is enabled to 935 act as stamp Session-Reflector"; 936 } 938 leaf ref-wait { 939 type uint32 { 940 range 1..604800; 941 } 942 units seconds; 943 default 900; 944 description 945 "REFWAIT(STAMP test session timeout in seconds), 946 the default value is 900"; 947 } 949 leaf reflector-mode-state { 950 type session-reflector-mode; 951 default stateless; 952 description 953 "The state of the mode of the stamp 954 Session-Reflector"; 955 } 957 list test-session { 958 key "session-id"; 959 unique "sender-ip sender-udp-port reflector-ip" 960 +" reflector-udp-port"; 961 description 962 "This structure is a container of test session 963 managed objects"; 965 leaf session-id { 966 type uint32; 967 description "Session ID"; 968 } 970 leaf dscp-handling-mode { 971 type session-dscp-mode; 972 default copy-received-value; 973 description 974 "Session-Reflector handling of DSCP: 975 - use value copied from received STAMP-Test packet; 976 - use value explicitly configured"; 977 } 979 leaf dscp-value { 980 when "../dscp-handling-mode = 'use-configured-value'"; 981 type inet:dscp; 982 default 0; 983 description 984 "DSCP value to be set in the reflected packet 985 if dscp-handling-mode is set to use-configured-value."; 986 } 988 leaf sender-ip { 989 type union { 990 type inet:ip-address; 991 type enumeration { 992 enum any { 993 description 994 "Indicates that the Session-Reflector 995 accepts STAMP test packets from 996 any Session-Sender"; 997 } 999 } 1000 } 1001 default any; 1002 description 1003 "This value determines whether specific 1004 IPv4/IPv6 address of the Session-Sender 1005 or the wildcard, i.e. any address"; 1006 } 1008 leaf sender-udp-port { 1009 type union { 1010 type inet:port-number { 1011 range "49152..65535"; 1012 } 1013 type enumeration { 1014 enum any { 1015 description 1016 "Indicates that the Session-Reflector 1017 accepts STAMP test packets from 1018 any Session-Sender"; 1019 } 1020 } 1021 } 1022 default any; 1023 description 1024 "This value determines whether specific 1025 port number of the Session-Sender 1026 or the wildcard, i.e. any"; 1027 } 1028 leaf reflector-ip { 1029 type union { 1030 type inet:ip-address; 1031 type enumeration { 1032 enum any { 1033 description 1034 "Indicates that the Session-Reflector 1035 accepts STAMP test packets on 1036 any of its interfaces"; 1037 } 1038 } 1039 } 1040 default any; 1041 description 1042 "This value determines whether specific 1043 IPv4/IPv6 address of the Session-Reflector 1044 or the wildcard, i.e. any address"; 1045 } 1046 leaf reflector-udp-port { 1047 type inet:port-number{ 1048 range "862 | 49152..65535"; 1049 } 1050 default 862; 1051 description "Reflector UDP port number"; 1052 } 1053 leaf reflector-timestamp-format { 1054 type timestamp-format; 1055 default ntp-format; 1056 description "Reflector Timestamp format"; 1057 } 1058 uses session-security; 1059 } 1060 } 1061 } 1063 /* Operational state data nodes */ 1064 container stamp-state { 1065 config false; 1066 description 1067 "Top level container for stamp state data"; 1069 container stamp-session-sender-state { 1070 if-feature session-sender; 1071 description 1072 "Session-Sender container for state data"; 1073 list test-session-state{ 1074 key "session-id"; 1075 description 1076 "This structure is a container of test session 1077 managed objects"; 1079 leaf session-id { 1080 type uint32; 1081 description "Session ID"; 1082 } 1084 leaf sender-session-state { 1085 type enumeration { 1086 enum active { 1087 description "Test session is active"; 1088 } 1089 enum ready { 1090 description "Test session is idle"; 1091 } 1092 } 1093 description 1094 "State of the particular stamp test 1095 session at the sender"; 1096 } 1098 container current-stats { 1099 description 1100 "This container contains the results for the current 1101 Measurement Interval in a Measurement session "; 1102 leaf start-time { 1103 type yang:date-and-time; 1104 mandatory true; 1105 description 1106 "The time that the current Measurement Interval started"; 1107 } 1109 leaf packet-padding-size { 1110 type uint32; 1111 default 27; 1112 description 1113 "Size of the Packet Padding. Suggested to run 1114 Path MTU Discovery to avoid packet fragmentation 1115 in IPv4 and packet blackholing in IPv6"; 1116 } 1118 leaf interval { 1119 type uint32; 1120 units microseconds; 1121 description 1122 "Time interval between transmission of two 1123 consecutive packets in the test session"; 1124 } 1126 leaf duplicate-packets { 1127 type uint32; 1128 description "Duplicate packets"; 1129 } 1130 leaf reordered-packets { 1131 type uint32; 1132 description "Reordered packets"; 1133 } 1135 uses session-parameters; 1136 leaf sender-timestamp-format { 1137 type timestamp-format; 1138 default ntp-format; 1139 description "Sender Timestamp format"; 1140 } 1141 leaf reflector-timestamp-format { 1142 type timestamp-format; 1143 default ntp-format; 1144 description "Reflector Timestamp format"; 1145 } 1146 leaf dscp { 1147 type inet:dscp; 1148 description 1149 "The DSCP value that was placed in the header of 1150 STAMP UDP test packets by the Session-Sender."; 1151 } 1152 uses maintenance-statistics; 1154 container two-way-delay { 1155 description 1156 "two way delay result of the test session"; 1157 uses delay-statistics; 1158 } 1160 container one-way-delay-far-end { 1161 description 1162 "one way delay far-end of the test session"; 1163 uses delay-statistics; 1164 } 1166 container one-way-delay-near-end { 1167 description 1168 "one way delay near-end of the test session"; 1169 uses delay-statistics; 1170 } 1172 container low-percentile { 1173 when "/stamp/stamp-session-sender/" 1174 +"test-session[session-id]/" 1175 +"first-percentile != '0.00'" { 1176 description 1177 "Only valid if the 1178 the first-percentile is not NULL"; 1179 } 1180 description 1181 "Low percentile report"; 1182 uses time-percentile-report; 1183 } 1185 container mid-percentile { 1186 when "/stamp/stamp-session-sender/" 1187 +"test-session[session-id]/" 1188 +"second-percentile != '0.00'" { 1189 description 1190 "Only valid if the 1191 the first-percentile is not NULL"; 1192 } 1193 description 1194 "Mid percentile report"; 1195 uses time-percentile-report; 1196 } 1198 container high-percentile { 1199 when "/stamp/stamp-session-sender/" 1200 +"test-session[session-id]/" 1201 +"third-percentile != '0.00'" { 1202 description 1203 "Only valid if the 1204 the first-percentile is not NULL"; 1205 } 1206 description 1207 "High percentile report"; 1208 uses time-percentile-report; 1209 } 1211 container two-way-loss { 1212 description 1213 "two way loss count and ratio result of 1214 the test session"; 1215 uses packet-loss-statistics; 1216 } 1217 container one-way-loss-far-end { 1218 when "/stamp/stamp-session-sender/" 1219 +"test-session[session-id]/" 1220 +"test-session-reflector-mode = 'stateful'" { 1221 description 1222 "One-way statistic is only valid if the 1223 session-reflector is in stateful mode."; 1224 } 1225 description 1226 "one way loss count and ratio far-end of 1227 the test session"; 1228 uses packet-loss-statistics; 1229 } 1230 container one-way-loss-near-end { 1231 when "/stamp/stamp-session-sender/" 1232 +"test-session[session-id]/" 1233 +"test-session-reflector-mode = 'stateful'" { 1234 description 1235 "One-way statistic is only valid if the 1236 session-reflector is in stateful mode."; 1237 } 1238 description 1239 "one way loss count and ratio near-end of 1240 the test session"; 1241 uses packet-loss-statistics; 1242 } 1243 } 1245 list history-stats { 1246 key id; 1247 description 1248 "This container contains the results for the history 1249 Measurement Interval in a Measurement session "; 1250 leaf id { 1251 type uint32; 1252 description 1253 "The identifier for the Measurement Interval 1254 within this session"; 1255 } 1256 leaf end-time { 1257 type yang:date-and-time; 1258 mandatory true; 1259 description 1260 "The time that the Measurement Interval ended"; 1261 } 1262 leaf number-of-packets { 1263 type uint32; 1264 description 1265 "The overall number of UDP test packets to be 1266 transmitted by the sender for this test session"; 1267 } 1269 leaf packet-padding-size { 1270 type uint32; 1271 default 27; 1272 description 1273 "Size of the Packet Padding. Suggested to run 1274 Path MTU Discovery to avoid packet fragmentation 1275 in IPv4 and packet blackholing in IPv6"; 1276 } 1278 leaf interval { 1279 type uint32; 1280 units microseconds; 1281 description 1282 "Time interval between transmission of two 1283 consecutive packets in the test session"; 1284 } 1285 leaf duplicate-packets { 1286 type uint32; 1287 description "Duplicate packets"; 1288 } 1289 leaf reordered-packets { 1290 type uint32; 1291 description "Reordered packets"; 1292 } 1293 leaf loss-packets { 1294 type uint32; 1295 description "Loss packets"; 1296 } 1298 uses session-parameters; 1299 leaf sender-timestamp-format { 1300 type timestamp-format; 1301 default ntp-format; 1302 description "Sender Timestamp format"; 1303 } 1304 leaf reflector-timestamp-format { 1305 type timestamp-format; 1306 default ntp-format; 1307 description "Reflector Timestamp format"; 1308 } 1309 leaf dscp { 1310 type inet:dscp; 1311 description 1312 "The DSCP value that was placed in the header of 1313 STAMP UDP test packets by the Session-Sender."; 1314 } 1315 uses maintenance-statistics; 1317 container two-way-delay{ 1318 description 1319 "two way delay result of the test session"; 1320 uses delay-statistics; 1321 } 1322 container one-way-delay-far-end{ 1323 description 1324 "one way delay far end of the test session"; 1325 uses delay-statistics; 1326 } 1327 container one-way-delay-near-end{ 1328 description 1329 "one way delay near end of the test session"; 1330 uses delay-statistics; 1331 } 1332 } 1333 } 1335 } 1337 container stamp-session-refl-state { 1338 if-feature session-reflector; 1339 description 1340 "stamp Session-Reflector container for 1341 state data"; 1342 leaf reflector-light-admin-status { 1343 type boolean; 1344 mandatory "true"; 1345 description 1346 "Whether this network element is enabled to 1347 act as stamp Session-Reflector"; 1348 } 1350 list test-session-state { 1351 key "session-id"; 1352 description 1353 "This structure is a container of test session 1354 managed objects"; 1356 leaf session-id { 1357 type uint32; 1358 description "Session ID"; 1359 } 1361 uses maintenance-statistics; 1362 leaf reflector-timestamp-format { 1363 type timestamp-format; 1364 default ntp-format; 1365 description "Reflector Timestamp format"; 1366 } 1367 uses session-parameters; 1368 } 1369 } 1370 } 1372 rpc stamp-sender-start { 1373 description 1374 "start the configured sender session"; 1375 input { 1376 leaf session-id { 1377 type uint32; 1378 mandatory true; 1379 description 1380 "The session to be started"; 1381 } 1382 } 1384 } 1386 rpc stamp-sender-stop { 1387 description 1388 "stop the configured sender session"; 1389 input { 1390 leaf session-id { 1391 type uint32; 1392 mandatory true; 1393 description 1394 "The session to be stopped"; 1395 } 1396 } 1397 } 1398 } 1400 1402 4. IANA Considerations 1404 This document registers a URI in the IETF XML registry [RFC3688]. 1405 Following the format in [RFC3688], the following registration is 1406 requested to be made. 1408 URI: urn:ietf:params:xml:ns:yang:ietf-stamp 1410 Registrant Contact: The IPPM WG of the IETF. 1412 XML: N/A, the requested URI is an XML namespace. 1414 This document registers a YANG module in the YANG Module Names 1415 registry [RFC6020]. 1417 name: ietf-stamp 1419 namespace: urn:ietf:params:xml:ns:yang:ietf-stamp 1421 prefix: stamp 1423 reference: RFC XXXX 1425 5. Security Considerations 1427 The YANG module specified in this document defines a schema for data 1428 that is designed to be accessed via network management protocols such 1429 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 1430 is the secure transport layer, and the mandatory-to-implement secure 1431 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 1432 is HTTPS, and the mandatory-to-implement secure transport is TLS 1433 [RFC5246]. 1435 The NETCONF access control model [RFC6536] provides the means to 1436 restrict access for particular NETCONF or RESTCONF users to a 1437 preconfigured subset of all available NETCONF or RESTCONF protocol 1438 operations and content. 1440 There are a number of data nodes defined in this YANG module that are 1441 writable/creatable/deletable (i.e., config true, which is the 1442 default). These data nodes may be considered sensitive or vulnerable 1443 in some network environments. Write operations (e.g., edit-config) 1444 to these data nodes without proper protection can have a negative 1445 effect on network operations. These are the subtrees and data nodes 1446 and their sensitivity/vulnerability: 1448 TBD 1450 Unauthorized access to any data node of these subtrees can adversely 1451 affect the routing subsystem of both the local device and the 1452 network. This may lead to corruption of the measurement that may 1453 result in false corrective action, e.g. false negative or false 1454 positive. That could be, for example, prolonged and undetected 1455 deterioration of quality of service or actions to improve the quality 1456 unwarranted by the real network conditions. 1458 Some of the readable data nodes in this YANG module may be considered 1459 sensitive or vulnerable in some network environments. It is thus 1460 important to control read access (e.g., via get, get-config, or 1461 notification) to these data nodes. These are the subtrees and data 1462 nodes and their sensitivity/vulnerability: 1464 /ietf-vrrp:stamp 1466 TBD 1468 Unauthorized access to any data node of these subtrees can disclose 1469 the operational state information of VRRP on this device. 1471 Some of the RPC operations in this YANG module may be considered 1472 sensitive or vulnerable in some network environments. It is thus 1473 important to control access to these operations. These are the 1474 operations and their sensitivity/vulnerability: 1476 TBD 1478 6. Acknowledgements 1480 Authors recognize and appreciate valuable comments provided by Adrian 1481 Pan. 1483 7. Normative References 1485 [I-D.ietf-ippm-stamp] 1486 Mirsky, G., Jun, G., and H. Nydell, "Simple Two-way Active 1487 Measurement Protocol", draft-ietf-ippm-stamp-00 (work in 1488 progress), January 2018. 1490 [I-D.ietf-netmod-revised-datastores] 1491 Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 1492 and R. Wilton, "Network Management Datastore 1493 Architecture", draft-ietf-netmod-revised-datastores-10 1494 (work in progress), January 2018. 1496 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1497 Requirement Levels", BCP 14, RFC 2119, 1498 DOI 10.17487/RFC2119, March 1997, 1499 . 1501 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1502 DOI 10.17487/RFC3688, January 2004, 1503 . 1505 [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security 1506 (TLS) Protocol Version 1.2", RFC 5246, 1507 DOI 10.17487/RFC5246, August 2008, 1508 . 1510 [RFC5357] Hedayat, K., Krzanowski, R., Morton, A., Yum, K., and J. 1511 Babiarz, "A Two-Way Active Measurement Protocol (TWAMP)", 1512 RFC 5357, DOI 10.17487/RFC5357, October 2008, 1513 . 1515 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1516 the Network Configuration Protocol (NETCONF)", RFC 6020, 1517 DOI 10.17487/RFC6020, October 2010, 1518 . 1520 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1521 and A. Bierman, Ed., "Network Configuration Protocol 1522 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1523 . 1525 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 1526 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 1527 . 1529 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 1530 Protocol (NETCONF) Access Control Model", RFC 6536, 1531 DOI 10.17487/RFC6536, March 2012, 1532 . 1534 [RFC7750] Hedin, J., Mirsky, G., and S. Baillargeon, "Differentiated 1535 Service Code Point and Explicit Congestion Notification 1536 Monitoring in the Two-Way Active Measurement Protocol 1537 (TWAMP)", RFC 7750, DOI 10.17487/RFC7750, February 2016, 1538 . 1540 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 1541 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 1542 . 1544 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 1545 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 1546 May 2017, . 1548 Appendix A. Example of STAMP Session Configuration 1550 Figure 5 shows a configuration example for a STAMP-Sender. 1552 1553 1554 1555 1556 enable 1557 10 1558 enable 1559 forever 1560 1561 10 1562 1563 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1582 Figure 5: XML instance of STAMP Session-Sender configuration 1584 1585 1586 1587 1588 enable 1589 1590 1591 1592 1593 1594 1595 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1608 Figure 6: XML instance of STAMP Session-Reflector configuration 1610 Authors' Addresses 1612 Greg Mirsky 1613 ZTE Corp. 1615 Email: gregimirsky@gmail.com 1617 Xiao Min 1618 ZTE Corp. 1620 Email: xiao.min2@zte.com.cn 1622 Wei S Luo 1623 Ericsson 1625 Email: wei.s.luo@ericsson.com