idnits 2.17.1 draft-mirsky-ippm-twamp-light-yang-09.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 374 has weird spacing: '...-status boo...' == Line 386 has weird spacing: '...dp-port ine...' == Line 391 has weird spacing: '...sion-id uin...' == Line 394 has weird spacing: '...sion-id uin...' -- The document date (June 13, 2017) is 2509 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) ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) == Outdated reference: A later version (-13) exists of draft-ietf-ippm-twamp-yang-03 Summary: 1 error (**), 0 flaws (~~), 6 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: December 15, 2017 A. Pan 6 W. Luo 7 Ericsson 8 June 13, 2017 10 Two-Way Active Measurement Protocol (TWAMP) Light Data Model 11 draft-mirsky-ippm-twamp-light-yang-09 13 Abstract 15 This document specifies the data model for implementations of 16 Session-Sender and Session-Reflector for Two-Way Active Measurement 17 Protocol (TWAMP) Light mode using YANG. 19 Status of This Memo 21 This Internet-Draft is submitted in full conformance with the 22 provisions of BCP 78 and BCP 79. 24 Internet-Drafts are working documents of the Internet Engineering 25 Task Force (IETF). Note that other groups may also distribute 26 working documents as Internet-Drafts. The list of current Internet- 27 Drafts is at http://datatracker.ietf.org/drafts/current/. 29 Internet-Drafts are draft documents valid for a maximum of six months 30 and may be updated, replaced, or obsoleted by other documents at any 31 time. It is inappropriate to use Internet-Drafts as reference 32 material or to cite them other than as "work in progress." 34 This Internet-Draft will expire on December 15, 2017. 36 Copyright Notice 38 Copyright (c) 2017 IETF Trust and the persons identified as the 39 document authors. All rights reserved. 41 This document is subject to BCP 78 and the IETF Trust's Legal 42 Provisions Relating to IETF Documents 43 (http://trustee.ietf.org/license-info) in effect on the date of 44 publication of this document. Please review these documents 45 carefully, as they describe your rights and restrictions with respect 46 to this document. Code Components extracted from this document must 47 include Simplified BSD License text as described in Section 4.e of 48 the Trust Legal Provisions and are provided without warranty as 49 described in the Simplified BSD License. 51 Table of Contents 53 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 54 1.1. Conventions used in this document . . . . . . . . . . . . 2 55 1.1.1. Requirements Language . . . . . . . . . . . . . . . . 2 56 2. Scope, Model, and Applicability . . . . . . . . . . . . . . . 3 57 2.1. Data Model Parameters . . . . . . . . . . . . . . . . . . 3 58 2.1.1. Session-Sender . . . . . . . . . . . . . . . . . . . 3 59 2.1.2. Session-Reflector . . . . . . . . . . . . . . . . . . 4 60 3. Data Model . . . . . . . . . . . . . . . . . . . . . . . . . 4 61 3.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 5 62 3.2. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 9 63 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 27 64 5. Security Considerations . . . . . . . . . . . . . . . . . . . 28 65 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 28 66 6.1. Normative References . . . . . . . . . . . . . . . . . . 28 67 6.2. Informative References . . . . . . . . . . . . . . . . . 29 68 Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 29 69 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 29 71 1. Introduction 73 The Two-Way Active Measurement Protocol (TWAMP) [RFC5357] can be used 74 to measure performance parameters of IP networks such as latency, 75 jitter, and packet loss by sending test packets and monitoring their 76 experience in the network. The [RFC5357] defines two protocols, 77 TWAMP Control and TWAMP Test, and a profile of TWAMP Test, TWAMP 78 Light. The TWAMP Light is known to have many implementations though 79 no common management framework being defined, thus leaving some 80 aspects of test packet processing to interpretation. The goal of 81 this document is to collect analyze these variations; describe common 82 model while allowing for extensions in the future. This document 83 defines such a TWAMP data model and specifies it formally using the 84 YANG data modeling language [RFC6020]. 86 1.1. Conventions used in this document 88 1.1.1. Requirements Language 90 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 91 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 92 "OPTIONAL" in this document are to be interpreted as described in BCP 93 14 [RFC2119] [RFC8174] when, and only when, they appear in all 94 capitals, as shown here. 96 2. Scope, Model, and Applicability 98 The scope of this document includes model of the TWAMP Light as 99 defined in Appendix I of [RFC5357]. This mode of TWAMP Light will be 100 referred in this document as Stateless. Another mode, where the 101 Session-Reflector is aware of the state of the TWAMP test session and 102 thus can independently count reflected test packets, referred as 103 Stateful. This document benefits from earlier attempt to define 104 TWAMP MIB in [I-D.elteto-ippm-twamp-mib] and from TWAMP YANG model 105 defined in [I-D.ietf-ippm-twamp-yang]. 107 Figure 1 updates TWAMP-Light reference model presented in Appendix I 108 [RFC5357] for the scenario when instantiation of a TWAMP-Test session 109 between Session-Sender and Session-Reflector controlled by 110 communication between a Configuration Client as a manager and 111 Configuration Servers as agents of the configuration session. 113 o----------------------------------------------------------o 114 | Config client | 115 o----------------------------------------------------------o 116 || || 117 || NETCONF/RESTCONF || 118 || || 119 o-------------------o o-------------------o 120 | Config server | | Config server | 121 | | | | 122 +-------------------+ +-------------------+ 123 | Session-Sender | <--- TWAMP-Test ---> | Session-Reflector | 124 +-------------------+ +-------------------+ 126 Figure 1: TWAMP Light Reference Model 128 2.1. Data Model Parameters 130 This section describes all the parameters of the the TWAMP-Light data 131 model. 133 2.1.1. Session-Sender 135 The twamp-light-session-sender container holds items that are related 136 to the configuration of the TWAMP-Light Session-Sender logical 137 entity. 139 The twamp-light-session-sender-state container holds information 140 about the state of the particular TWAMP-Light test session. 142 RPCs twamp-sender-start and twamp-sender-stop respectively start and 143 stop the referenced by session-id TWAMP-Light test session. 145 2.1.1.1. Controls for Test Session and Preforrmance Metric Calculation 147 The data model supports several scenarios for Session-Sender to 148 execute test sessions and calculate performance metrics: 150 The test mode in which the test packets are sent unbound in time 151 at defined by the parameter 'interval' in the twamp-light-session- 152 sender container frequency is referred as continuous mode. 153 Performance metrics in the continuous mode are calculated at 154 period defined by the parameter 'measurement-interval'. 156 The test mode that has specific number of the test packets 157 configured for the test session in the 'number-of-packets' 158 parameter is referred as periodic mode. The test session may be 159 repeated by the Session-Sender with the same parameters. The 160 'repeat' parameter defines number of tests and the 'repeat- 161 interval' - the interval between the consecuitive tests. The 162 performance metrics are calculated after each test session when 163 the interval defined by the 'session-timeout' expires. 165 2.1.2. Session-Reflector 167 The twamp-light-session-reflector container holds items that are 168 related to the configuration of the TWAMP-Light Session-Reflector 169 logical entity. 171 The twamp-light-session-refl-state container holds Session-Reflector 172 state data for the particular TWAMP-Light test session. 174 3. Data Model 176 Creating TWAMP-Light data model presents number of challenges and 177 among them is identification of a test-session at Session-Reflector. 178 A Session-Reflector MAY require only as little as its IP and UDP port 179 number in received TWAMP-Test packet to spawn new test session. More 180 so, to test processing of Class-of-Service along the same route in 181 Equal Cost Multi-Path environment Session-Sender may run TWAMP test 182 sessions concurrently using the same source IP address, source UDP 183 port number, destination IP address, and destination UDP port number. 184 Thus the only parameter that can be used to differentiate these test 185 sessions would be DSCP value. The DSCP field may get re-marked along 186 the path and without use of [RFC7750] that will go undetected, but by 187 using five-tuple instead of four-tuple as a key we can ensure that 188 TWAMP test packets that are considered as different test sessions 189 follow the same path even in ECMP environments. 191 3.1. Tree Diagram 193 module: ietf-twamp-light 194 +--rw twamp-light 195 | +--rw twamp-light-session-sender {session-sender-light}? 196 | | +--rw sender-light-enable? enable 197 | | +--rw test-session* [session-id] 198 | | +--rw session-id uint32 199 | | +--rw test-session-enable? enable 200 | | +--rw number-of-packets? union 201 | | +--rw packet-padding-size? uint32 202 | | +--rw interval? uint32 203 | | +--rw session-timeout? uint32 204 | | +--rw measurement-interval? uint32 205 | | +--rw repeat? union 206 | | +--rw repeat-interval? uint32 207 | | +--rw dscp-value? inet:dscp 208 | | +--rw test-session-reflector-mode? session-reflector-mode 209 | | +--rw sender-ip inet:ip-address 210 | | +--rw sender-udp-port inet:port-number 211 | | +--rw reflector-ip inet:ip-address 212 | | +--rw reflector-udp-port inet:port-number 213 | | +--rw authentication-params! {twamp-light-authentication}? 214 | | | +--rw key-chain? kc:key-chain-ref 215 | | +--rw first-percentile? percentile 216 | | +--rw second-percentile? percentile 217 | | +--rw third-percentile? percentile 218 | +--rw twamp-light-session-reflector {session-reflector-light}? 219 | +--rw reflector-light-enable? enable 220 | +--rw ref-wait? uint32 221 | +--rw reflector-light-mode-state? session-reflector-mode 222 | +--rw test-session* [session-id] 223 | +--rw session-id uint32 224 | +--rw dscp-handling-mode? session-dscp-mode 225 | +--rw dscp-value? inet:dscp 226 | +--rw sender-ip inet:ip-address 227 | +--rw sender-udp-port inet:port-number 228 | +--rw reflector-ip inet:ip-address 229 | +--rw reflector-udp-port inet:port-number 230 | +--rw authentication-params! {twamp-light-authentication}? 231 | +--rw key-chain? kc:key-chain-ref 232 +--ro twamp-light-state 233 +--ro twamp-light-session-sender-state {session-sender-light}? 234 | +--ro test-session-state* [session-id] 235 | +--ro session-id uint32 236 | +--ro sender-session-state? enumeration 237 | +--ro current-stats 238 | | +--ro start-time yang:date-and-time 239 | | +--ro packet-padding-size? uint32 240 | | +--ro interval? uint32 241 | | +--ro duplicate-packets? uint32 242 | | +--ro reordered-packets? uint32 243 | | +--ro sender-ip inet:ip-address 244 | | +--ro sender-udp-port inet:port-number 245 | | +--ro reflector-ip inet:ip-address 246 | | +--ro reflector-udp-port inet:port-number 247 | | +--ro dscp? inet:dscp 248 | | +--ro sent-packets? uint32 249 | | +--ro rcv-packets? uint32 250 | | +--ro sent-packets-error? uint32 251 | | +--ro rcv-packets-error? uint32 252 | | +--ro last-sent-seq? uint32 253 | | +--ro last-rcv-seq? uint32 254 | | +--ro two-way-delay 255 | | | +--ro delay 256 | | | | +--ro min? yang:gauge32 257 | | | | +--ro max? yang:gauge32 258 | | | | +--ro avg? yang:gauge32 259 | | | +--ro delay-variation 260 | | | +--ro min? uint32 261 | | | +--ro max? uint32 262 | | | +--ro avg? uint32 263 | | +--ro one-way-delay-far-end 264 | | | +--ro delay 265 | | | | +--ro min? yang:gauge32 266 | | | | +--ro max? yang:gauge32 267 | | | | +--ro avg? yang:gauge32 268 | | | +--ro delay-variation 269 | | | +--ro min? uint32 270 | | | +--ro max? uint32 271 | | | +--ro avg? uint32 272 | | +--ro one-way-delay-near-end 273 | | | +--ro delay 274 | | | | +--ro min? yang:gauge32 275 | | | | +--ro max? yang:gauge32 276 | | | | +--ro avg? yang:gauge32 277 | | | +--ro delay-variation 278 | | | +--ro min? uint32 279 | | | +--ro max? uint32 280 | | | +--ro avg? uint32 281 | | +--ro low-percentile 282 | | | +--ro delay-percentile 283 | | | | +--ro rtt-delay? percentile 284 | | | | +--ro near-end-delay? percentile 285 | | | | +--ro far-end-delay? percentile 286 | | | +--ro jitter-percentile 287 | | | +--ro rtt-jitter? percentile 288 | | | +--ro near-end-jitter? percentile 289 | | | +--ro far-end-jitter? percentile 290 | | +--ro mid-percentile 291 | | | +--ro delay-percentile 292 | | | | +--ro rtt-delay? percentile 293 | | | | +--ro near-end-delay? percentile 294 | | | | +--ro far-end-delay? percentile 295 | | | +--ro jitter-percentile 296 | | | +--ro rtt-jitter? percentile 297 | | | +--ro near-end-jitter? percentile 298 | | | +--ro far-end-jitter? percentile 299 | | +--ro high-percentile 300 | | | +--ro delay-percentile 301 | | | | +--ro rtt-delay? percentile 302 | | | | +--ro near-end-delay? percentile 303 | | | | +--ro far-end-delay? percentile 304 | | | +--ro jitter-percentile 305 | | | +--ro rtt-jitter? percentile 306 | | | +--ro near-end-jitter? percentile 307 | | | +--ro far-end-jitter? percentile 308 | | +--ro two-way-loss 309 | | | +--ro loss-count? int32 310 | | | +--ro loss-ratio? percentage 311 | | | +--ro loss-burst-max? int32 312 | | | +--ro loss-burst-min? int32 313 | | | +--ro loss-burst-count? int32 314 | | +--ro one-way-loss-far-end 315 | | | +--ro loss-count? int32 316 | | | +--ro loss-ratio? percentage 317 | | | +--ro loss-burst-max? int32 318 | | | +--ro loss-burst-min? int32 319 | | | +--ro loss-burst-count? int32 320 | | +--ro one-way-loss-near-end 321 | | +--ro loss-count? int32 322 | | +--ro loss-ratio? percentage 323 | | +--ro loss-burst-max? int32 324 | | +--ro loss-burst-min? int32 325 | | +--ro loss-burst-count? int32 326 | +--ro history-stats* [id] 327 | +--ro id uint32 328 | +--ro end-time yang:date-and-time 329 | +--ro number-of-packets? uint32 330 | +--ro packet-padding-size? uint32 331 | +--ro interval? uint32 332 | +--ro duplicate-packets? uint32 333 | +--ro reordered-packets? uint32 334 | +--ro loss-packets? uint32 335 | +--ro sender-ip inet:ip-address 336 | +--ro sender-udp-port inet:port-number 337 | +--ro reflector-ip inet:ip-address 338 | +--ro reflector-udp-port inet:port-number 339 | +--ro dscp? inet:dscp 340 | +--ro sent-packets? uint32 341 | +--ro rcv-packets? uint32 342 | +--ro sent-packets-error? uint32 343 | +--ro rcv-packets-error? uint32 344 | +--ro last-sent-seq? uint32 345 | +--ro last-rcv-seq? uint32 346 | +--ro two-way-delay 347 | | +--ro delay 348 | | | +--ro min? yang:gauge32 349 | | | +--ro max? yang:gauge32 350 | | | +--ro avg? yang:gauge32 351 | | +--ro delay-variation 352 | | +--ro min? uint32 353 | | +--ro max? uint32 354 | | +--ro avg? uint32 355 | +--ro one-way-delay-far-end 356 | | +--ro delay 357 | | | +--ro min? yang:gauge32 358 | | | +--ro max? yang:gauge32 359 | | | +--ro avg? yang:gauge32 360 | | +--ro delay-variation 361 | | +--ro min? uint32 362 | | +--ro max? uint32 363 | | +--ro avg? uint32 364 | +--ro one-way-delay-near-end 365 | +--ro delay 366 | | +--ro min? yang:gauge32 367 | | +--ro max? yang:gauge32 368 | | +--ro avg? yang:gauge32 369 | +--ro delay-variation 370 | +--ro min? uint32 371 | +--ro max? uint32 372 | +--ro avg? uint32 373 +--ro twamp-light-session-refl-state {session-reflector-light}? 374 +--ro reflector-light-admin-status boolean 375 +--ro test-session-state* [session-id] 376 +--ro session-id uint32 377 +--ro sent-packets? uint32 378 +--ro rcv-packets? uint32 379 +--ro sent-packets-error? uint32 380 +--ro rcv-packets-error? uint32 381 +--ro last-sent-seq? uint32 382 +--ro last-rcv-seq? uint32 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 rpcs: 389 +---x twamp-sender-start 390 | +---w input 391 | +---w session-id uint32 392 +---x twamp-sender-stop 393 +---w input 394 +---w session-id uint32 396 3.2. YANG Module 398 file "ietf-twamp-light@2017-06-13.yang" 400 module ietf-twamp-light { 401 namespace "urn:ietf:params:xml:ns:yang:ietf-twamp-light"; 402 //namespace need to be assigned by IANA 403 prefix "ietf-twamp-light"; 405 import ietf-inet-types { 406 prefix inet; 407 } 408 import ietf-yang-types { 409 prefix yang; 410 } 411 import ietf-key-chain { 412 prefix kc; 413 } 415 organization 416 "IETF IPPM (IP Performance Metrics) Working Group"; 418 contact 419 "draft-mirsky-ippm-twamp-light-yang@tools.ietf.org"; 421 description "TWAMP Light Data Model"; 423 revision "2017-06-13" { 424 description 425 "08 version. Appendix I RFC 5357 is covered."; 426 reference "RFC 5357"; 427 } 428 feature session-sender-light { 429 description 430 "This feature relates to the device functions as the 431 TWAMP Light Session-Sender"; 432 } 434 feature session-reflector-light { 435 description 436 "This feature relates to the device functions as the 437 TWAMP Light Session-Reflector"; 438 } 440 feature twamp-light-authentication { 441 description 442 "TWAMP Light authentication supported"; 443 } 445 typedef enable { 446 type boolean; 447 description "enable"; 448 } 450 typedef session-reflector-mode { 451 type enumeration { 452 enum stateful { 453 description 454 "When the Session-Reflector is stateful, 455 i.e. is aware of TWAMP-Test session state."; 456 } 457 enum stateless { 458 description 459 "When the Session-Reflector is stateless, 460 i.e. is not aware of the state of 461 TWAMP-Test session."; 462 } 463 } 464 description "State of the Session-Reflector"; 465 } 467 typedef session-dscp-mode { 468 type enumeration { 469 enum copy-received-value { 470 description 471 "Use DSCP value copied from received 472 TWAMP test packet of the test session."; 473 } 474 enum use-configured-value { 475 description 476 "Use DSCP value configured for this 477 test session on the Session-Reflector."; 478 } 479 } 480 description 481 "DSCP handling mode by Session-Reflector."; 482 } 484 typedef percentage { 485 type decimal64 { 486 fraction-digits 5; 487 } 488 description "Percentage"; 489 } 491 typedef percentile { 492 type decimal64 { 493 fraction-digits 2; 494 } 495 description 496 "Percentile is a measure used in statistics 497 indicating the value below which a given 498 percentage of observations in a group of 499 observations fall."; 500 } 502 grouping maintenance-statistics { 503 description "Maintenance statistics grouping"; 504 leaf sent-packets { 505 type uint32; 506 description "Packets sent"; 507 } 508 leaf rcv-packets { 509 type uint32; 510 description "Packets received"; 511 } 512 leaf sent-packets-error { 513 type uint32; 514 description "Packets sent error"; 515 } 516 leaf rcv-packets-error { 517 type uint32; 518 description "Packets received error"; 519 } 520 leaf last-sent-seq { 521 type uint32; 522 description "Last sent sequence number"; 523 } 524 leaf last-rcv-seq { 525 type uint32; 526 description "Last received sequence number"; 527 } 528 } 530 grouping twamp-session-percentile { 531 description "Percentile grouping"; 532 leaf first-percentile { 533 type percentile; 534 default 95.00; 535 description 536 "First percentile to report"; 537 } 538 leaf second-percentile { 539 type percentile; 540 default 99.00; 541 description 542 "Second percentile to report"; 543 } 544 leaf third-percentile { 545 type percentile; 546 default 99.90; 547 description 548 "Third percentile to report"; 549 } 550 } 552 grouping delay-statistics { 553 description "Delay statistics grouping"; 554 container delay { 555 description "Packets transmitted delay"; 556 leaf min { 557 type yang:gauge32; 558 units microseconds; 559 description 560 "Min of Packets transmitted delay"; 561 } 562 leaf max { 563 type yang:gauge32; 564 units microseconds; 565 description 566 "Max of Packets transmitted delay"; 567 } 568 leaf avg { 569 type yang:gauge32; 570 units microseconds; 571 description 572 "Avg of Packets transmitted delay"; 573 } 574 } 576 container delay-variation { 577 description 578 "Packets transmitted delay variation"; 579 leaf min { 580 type uint32; 581 units microseconds; 582 description 583 "Min of Packets transmitted 584 delay variation"; 585 } 586 leaf max { 587 type uint32; 588 units microseconds; 589 description 590 "Max of Packets transmitted 591 delay variation"; 592 } 593 leaf avg { 594 type uint32; 595 units microseconds; 596 description 597 "Avg of Packets transmitted 598 delay variation"; 599 } 600 } 601 } 602 grouping time-percentile-report { 603 description "Delay percentile report grouping"; 604 container delay-percentile { 605 description 606 "Report round-trip, near- and far-end delay"; 607 leaf rtt-delay { 608 type percentile; 609 description 610 "Percentile of round-trip delay"; 611 } 612 leaf near-end-delay { 613 type percentile; 614 description 615 "Percentile of near-end delay"; 616 } 617 leaf far-end-delay { 618 type percentile; 619 description 620 "Percentile of far-end delay"; 621 } 622 } 623 container jitter-percentile { 624 description 625 "Report round-trip, near- and far-end jitter"; 626 leaf rtt-jitter { 627 type percentile; 628 description 629 "Percentile of round-trip jitter"; 630 } 631 leaf near-end-jitter { 632 type percentile; 633 description 634 "Percentile of near-end jitter"; 635 } 636 leaf far-end-jitter { 637 type percentile; 638 description 639 "Percentile of far-end jitter"; 640 } 641 } 642 } 644 grouping packet-loss-statistics { 645 description 646 "Grouping for Packet Loss statistics"; 647 leaf loss-count { 648 type int32; 649 description 650 "Number of lost packets 651 during the test interval."; 652 } 653 leaf loss-ratio { 654 type percentage; 655 description 656 "Ratio of packets lost to packets 657 sent during the test interval."; 658 } 659 leaf loss-burst-max { 660 type int32; 661 description 662 "Maximum number of consequtively 663 lost packets during the test interval."; 664 } 665 leaf loss-burst-min { 666 type int32; 667 description 668 "Minimum number of consequtively 669 lost packets during the test interval."; 670 } 671 leaf loss-burst-count { 672 type int32; 673 description 674 "Number of occasions with packet 675 loss during the test interval."; 676 } 677 } 679 grouping session-light-parameters { 680 description 681 "Parameters common among 682 Session-Sender and Session-Reflector"; 683 leaf sender-ip { 684 type inet:ip-address; 685 mandatory true; 686 description "Sender IP address"; 687 } 688 leaf sender-udp-port { 689 type inet:port-number { 690 range "49152..65535"; 691 } 692 mandatory true; 693 description "Sender UDP port number"; 694 } 695 leaf reflector-ip { 696 type inet:ip-address; 697 mandatory true; 698 description "Reflector IP address"; 699 } 700 leaf reflector-udp-port { 701 type inet:port-number{ 702 range "49152..65535"; 703 } 704 mandatory true; 705 description "Reflector UDP port number"; 706 } 707 } 709 grouping session-light-auth-params { 710 description 711 "Grouping for TWAMP Light authentication parameters"; 712 container authentication-params { 713 if-feature twamp-light-authentication; 714 presence "Enables TWAMP Light authentication"; 715 description 716 "Parameters for TWAMP Light authentication"; 717 leaf key-chain { 718 type kc:key-chain-ref; 719 description "Name of key-chain"; 720 } 721 } 722 } 724 /*Configuration Data*/ 725 container twamp-light { 726 description 727 "Top level container for TWAMP-Light configuration"; 729 container twamp-light-session-sender { 730 if-feature session-sender-light; 731 description "TWAMP-Light Session-Sender container"; 733 leaf sender-light-enable { 734 type enable; 735 default "true"; 736 description 737 "Whether this network element is enabled to 738 act as TWAMP-Light Sender"; 739 } 741 list test-session { 742 key "session-id"; 743 unique "sender-ip sender-udp-port reflector-ip" 744 +" reflector-udp-port dscp-value"; 745 description 746 "This structure is a container of test session 747 managed objects"; 749 leaf session-id { 750 type uint32; 751 description "Session ID"; 752 } 754 leaf test-session-enable { 755 type enable; 756 default "true"; 757 description 758 "Whether this TWAMP Test session is enabled"; 759 } 761 leaf number-of-packets { 762 type union { 763 type uint32 { 764 range 1..4294967294 { 765 description 766 "The overall number of UDP test packet 767 to be transmitted by the sender for this 768 test session"; 769 } 770 } 771 type enumeration { 772 enum forever { 773 description 774 "Indicates that the test session SHALL 775 be run *forever*."; 776 } 777 } 778 } 779 default 10; 780 description 781 "This value determines if the TWAMP-Test session is 782 bound by number of test packets or not."; 783 } 785 leaf packet-padding-size { 786 type uint32; 787 default 27; 788 description 789 "Size of the Packet Padding. Suggested to run 790 Path MTU Discovery to avoid packet fragmentation in 791 IPv4 and packet blackholing in IPv6"; 792 } 794 leaf interval { 795 type uint32; 796 units microseconds; 797 description 798 "Time interval between transmission of two 799 consecutive packets in the test session in 800 microseconds"; 801 } 803 leaf session-timeout { 804 when "../number-of-packets != 'forever'" { 805 description 806 "Test session timeout only valid if the 807 test mode is periodic."; 808 } 809 type uint32; 810 units "seconds"; 811 default 900; 812 description 813 "The timeout value for the Session-Sender to 814 collect outstanding reflected packets."; 815 } 817 leaf measurement-interval { 818 when "../number-of-packets = 'forever'" { 819 description 820 "Valid only when the test to run forever, 821 i.e. continuously."; 822 } 823 type uint32; 824 units "seconds"; 825 default 60; 826 description 827 "Interval to calculate performance metric when 828 the test mode is 'continuous'."; 829 } 831 leaf repeat { 832 type union { 833 type uint32 { 834 range 0..4294967294; 835 } 836 type enumeration { 837 enum forever { 838 description 839 "Indicates that the test session SHALL 840 be repeated *forever* using the 841 information in repeat-interval 842 parameter, and SHALL NOT decrement 843 the value."; 844 } 845 } 846 } 847 default 0; 848 description 849 "This value determines if the TWAMP-Test session must 850 be repeated. When a test session has completed, the 851 repeat parameter is checked. The default value 852 of 0 indicates that the session MUST NOT be repeated. 853 If the repeat value is 1 through 4,294,967,294 854 then the test session SHALL be repeated using the 855 information in repeat-interval parameter. 856 The implementation MUST decrement the value of repeat 857 after determining a repeated session is expected."; 858 } 859 leaf repeat-interval { 860 when "../repeat != '0'"; 861 type uint32; 862 units seconds; 863 default 0; 864 description 865 "This parameter determines the timing of repeated 866 TWAMP-Test sessions when repeat is more than 0."; 867 } 869 leaf dscp-value { 870 type inet:dscp; 871 default 0; 872 description 873 "DSCP value to be set in the test packet."; 874 } 876 leaf test-session-reflector-mode { 877 type session-reflector-mode; 878 default "stateless"; 879 description 880 "The mode of TWAMP-Reflector for the test session."; 881 } 883 uses session-light-parameters; 884 uses session-light-auth-params; 885 uses twamp-session-percentile; 886 } 887 } 889 container twamp-light-session-reflector { 890 if-feature session-reflector-light; 891 description 892 "TWAMP-Light Session-Reflector container"; 893 leaf reflector-light-enable { 894 type enable; 895 default "true"; 896 description 897 "Whether this network element is enabled to 898 act as TWAMP-Light Reflector"; 899 } 901 leaf ref-wait { 902 type uint32 { 903 range 1..604800; 904 } 905 units seconds; 906 default 900; 907 description 908 "REFWAIT(TWAMP test session timeout in seconds), 909 the default value is 900"; 910 } 912 leaf reflector-light-mode-state { 913 type session-reflector-mode; 914 default stateless; 915 description 916 "The state of the mode of the TWAMP-Light 917 Session-Reflector"; 918 } 920 list test-session { 921 key "session-id"; 922 unique "sender-ip sender-udp-port reflector-ip" 923 +" reflector-udp-port"; 924 description 925 "This structure is a container of test session 926 managed objects"; 928 leaf session-id { 929 type uint32; 930 description "Session ID"; 931 } 933 leaf dscp-handling-mode { 934 type session-dscp-mode; 935 default copy-received-value; 936 description 937 "Session-Reflector handling of DSCP: 938 - use value copied from received TWAMP-Test packet; 939 - use value explicitly configured"; 940 } 942 leaf dscp-value { 943 when "../dscp-handling-mode = 'use-configured-value'"; 944 type inet:dscp; 945 default 0; 946 description 947 "DSCP value to be set in the reflected packet 948 if dscp-handling-mode is set to use-configured-value."; 949 } 951 uses session-light-parameters; 952 uses session-light-auth-params; 953 } 954 } 956 } 958 /*Operational state data nodes*/ 959 container twamp-light-state{ 960 config "false"; 961 description 962 "Top level container for TWAMP-Light state data"; 964 container twamp-light-session-sender-state { 965 if-feature session-sender-light; 966 description 967 "Session-Sender container for state data"; 968 list test-session-state{ 969 key "session-id"; 970 description 971 "This structure is a container of test session 972 managed objects"; 974 leaf session-id { 975 type uint32; 976 description "Session ID"; 977 } 979 leaf sender-session-state { 980 type enumeration { 981 enum active { 982 description "Test session is active"; 983 } 984 enum ready { 985 description "Test session is idle"; 986 } 987 } 988 description 989 "State of the particular TWAMP-Light test 990 session at the sender"; 991 } 993 container current-stats { 994 description 995 "This container contains the results for the current 996 Measurement Interval in a Measurement session "; 997 leaf start-time { 998 type yang:date-and-time; 999 mandatory true; 1000 description 1001 "The time that the current Measurement Interval started"; 1002 } 1003 leaf packet-padding-size { 1004 type uint32; 1005 default 27; 1006 description 1007 "Size of the Packet Padding. Suggested to run 1008 Path MTU Discovery to avoid packet fragmentation 1009 in IPv4 and packet backholing in IPv6"; 1010 } 1012 leaf interval { 1013 type uint32; 1014 units microseconds; 1015 description 1016 "Time interval between transmission of two 1017 consecutive packets in the test session"; 1018 } 1020 leaf duplicate-packets { 1021 type uint32; 1022 description "Duplicate packets"; 1023 } 1024 leaf reordered-packets { 1025 type uint32; 1026 description "Reordered packets"; 1027 } 1029 uses session-light-parameters; 1030 leaf dscp { 1031 type inet:dscp; 1032 description 1033 "The DSCP value that was placed in the header of 1034 TWAMP UDP test packets by the Session-Sender."; 1035 } 1036 uses maintenance-statistics; 1038 container two-way-delay { 1039 description 1040 "two way delay result of the test session"; 1041 uses delay-statistics; 1042 } 1044 container one-way-delay-far-end { 1045 description 1046 "one way delay far-end of the test session"; 1047 uses delay-statistics; 1048 } 1050 container one-way-delay-near-end { 1051 description 1052 "one way delay near-end of the test session"; 1053 uses delay-statistics; 1054 } 1056 container low-percentile { 1057 when "/twamp-light/twamp-light-session-sender/" 1058 +"test-session[session-id]/" 1059 +"first-percentile != '0.00'" { 1060 description 1061 "Only valid if the 1062 the first-percentile is not NULL"; 1063 } 1064 description 1065 "Low percentile report"; 1066 uses time-percentile-report; 1067 } 1069 container mid-percentile { 1070 when "/twamp-light/twamp-light-session-sender/" 1071 +"test-session[session-id]/" 1072 +"second-percentile != '0.00'" { 1073 description 1074 "Only valid if the 1075 the first-percentile is not NULL"; 1076 } 1077 description 1078 "Mid percentile report"; 1079 uses time-percentile-report; 1080 } 1082 container high-percentile { 1083 when "/twamp-light/twamp-light-session-sender/" 1084 +"test-session[session-id]/" 1085 +"third-percentile != '0.00'" { 1086 description 1087 "Only valid if the 1088 the first-percentile is not NULL"; 1089 } 1090 description 1091 "High percentile report"; 1092 uses time-percentile-report; 1093 } 1095 container two-way-loss { 1096 description 1097 "two way loss count and ratio result of 1098 the test session"; 1099 uses packet-loss-statistics; 1100 } 1101 container one-way-loss-far-end { 1102 when "/twamp-light/twamp-light-session-sender/" 1103 +"test-session[session-id]/" 1104 +"test-session-reflector-mode = 'stateful'" { 1105 description 1106 "One-way statistic is only valid if the 1107 session-reflector is in stateful mode."; 1108 } 1109 description 1110 "one way loss count and ratio far-end of 1111 the test session"; 1112 uses packet-loss-statistics; 1113 } 1114 container one-way-loss-near-end { 1115 when "/twamp-light/twamp-light-session-sender/" 1116 +"test-session[session-id]/" 1117 +"test-session-reflector-mode = 'stateful'" { 1118 description 1119 "One-way statistic is only valid if the 1120 session-reflector is in stateful mode."; 1121 } 1122 description 1123 "one way loss count and ratio near-end of 1124 the test session"; 1125 uses packet-loss-statistics; 1126 } 1127 } 1129 list history-stats { 1130 key id; 1131 description 1132 "This container contains the results for the history 1133 Measurement Interval in a Measurement session "; 1134 leaf id { 1135 type uint32; 1136 description 1137 "The identifier for the Measurement Interval 1138 within this session"; 1139 } 1140 leaf end-time { 1141 type yang:date-and-time; 1142 mandatory true; 1143 description 1144 "The time that the Measurement Interval ended"; 1145 } 1146 leaf number-of-packets { 1147 type uint32; 1148 description 1149 "The overall number of UDP test packets to be 1150 transmitted by the sender for this test session"; 1151 } 1153 leaf packet-padding-size { 1154 type uint32; 1155 default 27; 1156 description 1157 "Size of the Packet Padding. Suggested to run 1158 Path MTU Discovery to avoid packet fragmentation 1159 in IPv4 and packet blackholing in IPv6"; 1160 } 1162 leaf interval { 1163 type uint32; 1164 units microseconds; 1165 description 1166 "Time interval between transmission of two 1167 consecutive packets in the test session"; 1168 } 1169 leaf duplicate-packets { 1170 type uint32; 1171 description "Duplicate packets"; 1172 } 1173 leaf reordered-packets { 1174 type uint32; 1175 description "Reordered packets"; 1176 } 1177 leaf loss-packets { 1178 type uint32; 1179 description "Loss packets"; 1180 } 1182 uses session-light-parameters; 1183 leaf dscp { 1184 type inet:dscp; 1185 description 1186 "The DSCP value that was placed in the header of 1187 TWAMP UDP test packets by the Session-Sender."; 1188 } 1189 uses maintenance-statistics; 1191 container two-way-delay{ 1192 description 1193 "two way delay result of the test session"; 1194 uses delay-statistics; 1196 } 1197 container one-way-delay-far-end{ 1198 description 1199 "one way delay far end of the test session"; 1200 uses delay-statistics; 1201 } 1202 container one-way-delay-near-end{ 1203 description 1204 "one way delay near end of the test session"; 1205 uses delay-statistics; 1206 } 1207 } 1208 } 1209 } 1211 container twamp-light-session-refl-state { 1212 if-feature session-reflector-light; 1213 description 1214 "TWAMP-Light Session-Reflector container for 1215 state data"; 1216 leaf reflector-light-admin-status { 1217 type boolean; 1218 mandatory "true"; 1219 description 1220 "Whether this network element is enabled to 1221 act as TWAMP-Light Reflector"; 1222 } 1224 list test-session-state { 1225 key "session-id"; 1226 description 1227 "This structure is a container of test session 1228 managed objects"; 1230 leaf session-id { 1231 type uint32; 1232 description "Session ID"; 1233 } 1235 uses maintenance-statistics; 1236 uses session-light-parameters; 1237 } 1238 } 1239 } 1241 rpc twamp-sender-start { 1242 description 1243 "start the configured sender session"; 1245 input { 1246 leaf session-id { 1247 type uint32; 1248 mandatory true; 1249 description 1250 "The session to be started"; 1251 } 1252 } 1253 } 1255 rpc twamp-sender-stop { 1256 description 1257 "stop the configured sender session"; 1258 input { 1259 leaf session-id { 1260 type uint32; 1261 mandatory true; 1262 description 1263 "The session to be stopped"; 1264 } 1265 } 1266 } 1267 } 1269 1271 4. IANA Considerations 1273 This document registers a URI in the IETF XML registry [RFC3688]. 1274 Following the format in [RFC3688], the following registration is 1275 requested to be made. 1277 URI: urn:ietf:params:xml:ns:yang:ietf-twamp-light 1279 Registrant Contact: The IPPM WG of the IETF. 1281 XML: N/A, the requested URI is an XML namespace. 1283 This document registers a YANG module in the YANG Module Names 1284 registry [RFC6020]. 1286 name: ietf-twamp-light 1288 namespace: urn:ietf:params:xml:ns:yang:ietf-twamp-light 1290 prefix: twamp 1292 reference: RFC XXXX 1294 5. Security Considerations 1296 The configuration, state, action data defined in this document may be 1297 accessed via the NETCONF protocol [RFC6241]. SSH [RFC6242] is 1298 mandatory secure transport that is the lowest NETCONF layer. The 1299 NETCONF access control model [RFC6536] provides means to restrict 1300 access for particular NETCONF users to a pre-configured subset of all 1301 available NETCONF protocol operations and content. 1303 But, in general, this TWAMP Light YANG module does not change any 1304 underlying security issues that already may exist in 1305 [I-D.elteto-ippm-twamp-mib]. 1307 6. References 1309 6.1. Normative References 1311 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1312 Requirement Levels", BCP 14, RFC 2119, 1313 DOI 10.17487/RFC2119, March 1997, 1314 . 1316 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1317 DOI 10.17487/RFC3688, January 2004, 1318 . 1320 [RFC5357] Hedayat, K., Krzanowski, R., Morton, A., Yum, K., and J. 1321 Babiarz, "A Two-Way Active Measurement Protocol (TWAMP)", 1322 RFC 5357, DOI 10.17487/RFC5357, October 2008, 1323 . 1325 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1326 the Network Configuration Protocol (NETCONF)", RFC 6020, 1327 DOI 10.17487/RFC6020, October 2010, 1328 . 1330 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1331 and A. Bierman, Ed., "Network Configuration Protocol 1332 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1333 . 1335 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 1336 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 1337 . 1339 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 1340 Protocol (NETCONF) Access Control Model", RFC 6536, 1341 DOI 10.17487/RFC6536, March 2012, 1342 . 1344 [RFC7750] Hedin, J., Mirsky, G., and S. Baillargeon, "Differentiated 1345 Service Code Point and Explicit Congestion Notification 1346 Monitoring in the Two-Way Active Measurement Protocol 1347 (TWAMP)", RFC 7750, DOI 10.17487/RFC7750, February 2016, 1348 . 1350 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 1351 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 1352 May 2017, . 1354 6.2. Informative References 1356 [I-D.elteto-ippm-twamp-mib] 1357 Elteto, T. and G. Mirsky, "Two-Way Active Measurement 1358 Protocol (TWAMP) Management Information Base (MIB)", 1359 draft-elteto-ippm-twamp-mib-01 (work in progress), January 1360 2014. 1362 [I-D.ietf-ippm-twamp-yang] 1363 Civil, R., Morton, A., Rahman, R., Jethanandani, M., and 1364 K. Pentikousis, "Two-Way Active Measurement Protocol 1365 (TWAMP) Data Model", draft-ietf-ippm-twamp-yang-03 (work 1366 in progress), February 2017. 1368 Appendix A. Acknowledgements 1370 TBD 1372 Authors' Addresses 1374 Greg Mirsky 1375 ZTE Corp. 1377 Email: gregimirsky@gmail.com 1379 Xiao Min 1380 ZTE Corp. 1382 Email: xiao.min2@zte.com.cn 1383 Adrian Pan 1384 Ericsson 1386 Email: adrian.pan@ericsson.com 1388 Wei S Luo 1389 Ericsson 1391 Email: wei.s.luo@ericsson.com