idnits 2.17.1 draft-ietf-ippm-twamp-yang-00.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 : ---------------------------------------------------------------------------- ** There are 3 instances of too long lines in the document, the longest one being 32 characters in excess of 72. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 1148 has weird spacing: '...riority uin...' == Line 1180 has weird spacing: '...m-index uin...' == Line 1209 has weird spacing: '...n-state boo...' == Line 1230 has weird spacing: '...n-state boo...' -- The document date (March 21, 2016) is 2958 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 (-24) exists of draft-ietf-ippm-metric-registry-06 == Outdated reference: A later version (-18) exists of draft-ietf-netconf-restconf-10 == Outdated reference: A later version (-04) exists of draft-unify-nfvrg-challenges-03 == Outdated reference: A later version (-06) exists of draft-unify-nfvrg-devops-04 -- Obsolete informational reference (is this intentional?): RFC 2898 (Obsoleted by RFC 8018) Summary: 1 error (**), 0 flaws (~~), 9 warnings (==), 2 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 IPPM WG R. Civil 3 Internet-Draft Ciena Corporation 4 Intended status: Standards Track A. Morton 5 Expires: September 22, 2016 AT&T Labs 6 L. Zheng 7 Huawei Technologies 8 R. Rahman 9 M. Jethanandani 10 Cisco Systems 11 K. Pentikousis, Ed. 12 EICT 13 March 21, 2016 15 Two-Way Active Measurement Protocol (TWAMP) Data Model 16 draft-ietf-ippm-twamp-yang-00 18 Abstract 20 This document specifies a data model for client and server 21 implementations of the Two-Way Active Measurement Protocol (TWAMP). 22 We define the TWAMP data model through Unified Modeling Language 23 (UML) class diagrams and formally specify it using YANG. 25 Status of This Memo 27 This Internet-Draft is submitted in full conformance with the 28 provisions of BCP 78 and BCP 79. 30 Internet-Drafts are working documents of the Internet Engineering 31 Task Force (IETF). Note that other groups may also distribute 32 working documents as Internet-Drafts. The list of current Internet- 33 Drafts is at http://datatracker.ietf.org/drafts/current/. 35 Internet-Drafts are draft documents valid for a maximum of six months 36 and may be updated, replaced, or obsoleted by other documents at any 37 time. It is inappropriate to use Internet-Drafts as reference 38 material or to cite them other than as "work in progress." 40 This Internet-Draft will expire on September 22, 2016. 42 Copyright Notice 44 Copyright (c) 2016 IETF Trust and the persons identified as the 45 document authors. All rights reserved. 47 This document is subject to BCP 78 and the IETF Trust's Legal 48 Provisions Relating to IETF Documents 49 (http://trustee.ietf.org/license-info) in effect on the date of 50 publication of this document. Please review these documents 51 carefully, as they describe your rights and restrictions with respect 52 to this document. Code Components extracted from this document must 53 include Simplified BSD License text as described in Section 4.e of 54 the Trust Legal Provisions and are provided without warranty as 55 described in the Simplified BSD License. 57 Table of Contents 59 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 60 1.1. Motivation . . . . . . . . . . . . . . . . . . . . . . . 3 61 1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 62 1.3. Document Organization . . . . . . . . . . . . . . . . . . 3 63 2. Scope, Model, and Applicability . . . . . . . . . . . . . . . 4 64 3. Data Model Overview . . . . . . . . . . . . . . . . . . . . . 5 65 3.1. Control-Client . . . . . . . . . . . . . . . . . . . . . 5 66 3.2. Server . . . . . . . . . . . . . . . . . . . . . . . . . 6 67 3.3. Session-Sender . . . . . . . . . . . . . . . . . . . . . 7 68 3.4. Session-Reflector . . . . . . . . . . . . . . . . . . . . 7 69 4. Data Model Parameters . . . . . . . . . . . . . . . . . . . . 7 70 4.1. Control-Client . . . . . . . . . . . . . . . . . . . . . 7 71 4.2. Server . . . . . . . . . . . . . . . . . . . . . . . . . 14 72 4.3. Session-Sender . . . . . . . . . . . . . . . . . . . . . 19 73 4.4. Session-Reflector . . . . . . . . . . . . . . . . . . . . 22 74 5. Data Model . . . . . . . . . . . . . . . . . . . . . . . . . 26 75 5.1. YANG Tree Diagram . . . . . . . . . . . . . . . . . . . . 26 76 5.2. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 28 77 6. Data Model Examples . . . . . . . . . . . . . . . . . . . . . 44 78 6.1. Control-Client . . . . . . . . . . . . . . . . . . . . . 44 79 6.2. Server . . . . . . . . . . . . . . . . . . . . . . . . . 45 80 6.3. Session-Sender . . . . . . . . . . . . . . . . . . . . . 46 81 6.4. Session-Reflector . . . . . . . . . . . . . . . . . . . . 47 82 7. Security Considerations . . . . . . . . . . . . . . . . . . . 48 83 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 49 84 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 49 85 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 49 86 10.1. Normative References . . . . . . . . . . . . . . . . . . 49 87 10.2. Informative References . . . . . . . . . . . . . . . . . 50 88 Appendix A. Detailed Data Model Examples . . . . . . . . . . . . 52 89 A.1. Control-Client . . . . . . . . . . . . . . . . . . . . . 52 90 A.2. Server . . . . . . . . . . . . . . . . . . . . . . . . . 53 91 A.3. Session-Sender . . . . . . . . . . . . . . . . . . . . . 54 92 A.4. Session-Reflector . . . . . . . . . . . . . . . . . . . . 55 93 Appendix B. TWAMP Operational Commands . . . . . . . . . . . . . 57 94 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 57 96 1. Introduction 98 The Two-Way Active Measurement Protocol (TWAMP) [RFC5357] is used to 99 measure network performance parameters such as latency, bandwidth, 100 and packet loss by sending probe packets and measuring their 101 experience in the network. To date, TWAMP implementations do not 102 come with a standard management framework and, as such, configuration 103 depends on the various proprietary mechanisms developed by the 104 corresponding TWAMP vendor. This document addresses this gap by 105 formally specifying the TWAMP data model using YANG. 107 1.1. Motivation 109 In current TWAMP deployments, the lack of a standardized data model 110 limits the flexibility to dynamically instantiate TWAMP-based 111 measurements across equipment from different vendors. In large, 112 virtualized, and dynamically instantiated infrastructures where 113 network functions are placed according to orchestration algorithms as 114 discussed in [I-D.unify-nfvrg-challenges][I-D.unify-nfvrg-devops], 115 proprietary mechanisms for managing TWAMP measurements pose severe 116 limitations with respect to programmability. 118 Two major trends call for revisiting the standardization on TWAMP 119 management aspects. First, we expect that in the coming years large- 120 scale and multi-vendor TWAMP deployments will become the norm. From 121 an operations perspective, dealing with several vendor-specific TWAMP 122 configuration mechanisms is simply unsustainable in this context. 123 Second, the increasingly software-defined and virtualized nature of 124 network infrastructures, based on dynamic service chains [NSC] and 125 programmable control and management planes [RFC7426] requires a well- 126 defined data model for TWAMP implementations. This document defines 127 such a TWAMP data model and specifies it formally using the YANG data 128 modeling language [RFC6020]. 130 1.2. Terminology 132 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 133 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 134 document are to be interpreted as described in [RFC2119]. 136 1.3. Document Organization 138 The rest of this document is organized as follows. Section 2 139 presents the scope and applicability of this document. Section 3 140 provides a high-level overview of the TWAMP data model. Section 4 141 details the configuration parameters of the data model and Section 5 142 specifies in YANG the TWAMP data model. Section 6 lists illustrative 143 examples which conform to the YANG data model specified in this 144 document. Appendix A elaborates these examples further. 146 2. Scope, Model, and Applicability 148 The purpose of this document is the specification of a vendor- 149 independent data model for TWAMP implementations. 151 Figure 1 illustrates a redrawn version of the TWAMP logical model 152 found in Section 1.2 of [RFC5357]. The figure is annotated with 153 pointers to the UML diagrams provided in this document and associated 154 with the data model of the four logical entities in a TWAMP 155 deployment, namely the TWAMP Control-Client, Server, Session-Sender 156 and Session-Reflector. As per [RFC5357], unlabeled links in Figure 1 157 are unspecified and may be proprietary protocols. 159 [Fig. 3] [Fig. 4] 160 +----------------+ +--------+ 161 | Control-Client | <-- TWAMP-Control --> | Server | 162 +----------------+ +--------+ 163 ^ ^ 164 | | 165 V V 166 +----------------+ +-------------------+ 167 | Session-Sender | <-- TWAMP-Test --> | Session-Reflector | 168 +----------------+ +-------------------+ 169 [Fig. 5] [Fig. 6] 171 Figure 1: Annotated TWAMP logical model 173 As per [RFC5357], a TWAMP implementation may follow a simplified 174 logical model, in which the same node acts both as the Control-Client 175 and Session-Sender, while another node acts at the same time as the 176 TWAMP Server and Session-Reflector. Figure 2 illustrates this 177 simplified logical model and indicates the interaction between the 178 TWAMP configuration client and server using, for instance, NETCONF 179 [RFC6241] or RESTCONF [I-D.ietf-netconf-restconf]. Note, however, 180 that the specific protocol used to communicate the TWAMP 181 configuration parameters specified herein is outside the scope of 182 this document. Appendix B considers TWAMP operational commands, 183 which are also outside the scope of this document. 185 o-------------------o o-------------------o 186 | Config client | | Config client | 187 o-------------------o o-------------------o 188 || || 189 NETCONF || RESTCONF NETCONF || RESTCONF 190 || || 191 o-------------------o o-------------------o 192 | Config server | | Config server | 193 | [Fig. 3, 5] | | [Fig. 4, 6] | 194 +-------------------+ +-------------------+ 195 | Control-Client | <-- TWAMP-Control --> | Server | 196 | | | | 197 | Session-Sender | <-- TWAMP-Test --> | Session-Reflector | 198 +-------------------+ +-------------------+ 200 Figure 2: Simplified TWAMP model and protocols 202 3. Data Model Overview 204 A TWAMP data model includes four categories of configuration items. 205 Global configuration items relate to parameters that are set on a per 206 device level. For example, the administrative status of the device 207 with respect to whether it allows TWAMP sessions and, if so, in what 208 capacity (e.g. Control-Client, Server or both), are typical 209 instances of global configuration items. A second category includes 210 attributes that can be configured on a per control connection basis, 211 such as the Server IP address. A third category includes attributes 212 related to per test session attributes, for instance setting 213 different values in the Differentiated Services Code Point (DSCP) 214 field. Finally, the data model could include attributes that relate 215 to the operational state of the TWAMP implementation. 217 As we describe the TWAMP data model in the remaining sections of this 218 document, readers should keep in mind the functional entity grouping 219 illustrated in Figure 1. 221 3.1. Control-Client 223 A TWAMP Control-Client has an administrative status field set at the 224 device level that indicates whether the node is enabled to function 225 as such. 227 Each TWAMP Control-Client is associated with zero or more TWAMP 228 control connections. The main configuration parameters of each 229 control connection are: 231 o A name which can be used to uniquely identify at the Control- 232 Client a particular control connection. This name is necessary 233 for programmability reasons because at the time of creation of a 234 TWAMP control connection not all IP and TCP port number 235 information needed to uniquely identify the connection is 236 available. 238 o The IP address of the interface the Control-Client will use for 239 connections 241 o The IP address of the remote Server 243 o Authentication and Encryption attributes such as KeyID, Token and 244 the Client Initialization Vector (Client-IV) [RFC4656]. 246 Each TWAMP control connection, in turn, is associated with zero or 247 more test sessions. For each test session we note the following 248 configuration items: 250 o The test session name that uniquely identifies a particular test 251 session at the Control-Client and Session-Sender. Similarly to 252 the control connections above, this unique test session name is 253 needed because at the time of creation of a test session, for 254 example, the source UDP port number is not known to uniquely 255 identify the test session. 257 o The IP address and UDP port number of the Session-Sender of the 258 path under test by TWAMP 260 o The IP address and UDP port number of the Session-Reflector of 261 said path 263 o Information pertaining to the test packet stream, such as the test 264 starting time or whether the test should be repeated. 266 3.2. Server 268 Each TWAMP Server has an administrative status field set at the 269 device level to indicate whether the node is enabled to function as a 270 TWAMP Server. 272 Each TWAMP Server is associated with zero or more control 273 connections. Each control connection is uniquely identified by the 274 4-tuple {Control-Client IP address, Control-Client TCP port number, 275 Server IP address, Server TCP port}. Control connection configuration 276 items on a TWAMP Server are read-only. 278 3.3. Session-Sender 280 There is one TWAMP Session-Sender instance for each test session that 281 is initiated from the sending device. Primary configuration fields 282 include: 284 o The test session name that MUST be identical with the 285 corresponding test session name on the TWAMP Control-Client 286 (Section 3.1) 288 o The control connection name, which along with the test session 289 name uniquely identify the TWAMP Session-Sender instance 291 o Information pertaining to the test packet stream, such as, for 292 example, the number of test packets and the packet distribution to 293 be employed. 295 3.4. Session-Reflector 297 Each TWAMP Session-Reflector is associated with zero or more test 298 sessions. For each test session, the REFWAIT parameter (Section 4.2 299 of [RFC5357] can be configured. Read-only access to other data model 300 parameters, such as the Sender IP address is foreseen. Each test 301 session can be uniquely identified by the 4-tuple mentioned in 302 Section 3.2. 304 4. Data Model Parameters 306 This section defines the TWAMP data model using UML and describes all 307 associated parameters. 309 4.1. Control-Client 311 The twamp-client container (see Figure 3) holds items that are 312 related to the configuration of the TWAMP Control-Client logical 313 entity. These are divided up into items that are associated with the 314 configuration of the Control-Client as a whole (e.g. client-admin- 315 state) and items that are associated with individual control 316 connections initiated by the Control-Client entity (twamp-client- 317 ctrl-connection). 319 +--------------------+ 320 | twamp-client | 321 +--------------------+ 1..* +-----------------------+ 322 | client-admin-state |<>----------------------| mode-preference-chain | 323 | | +-----------------------+ 324 | | 1..* +------------+ | priority | 325 | |<>-----| key-chain | | mode | 326 +--------------------+ +------------+ +-----------------------+ 327 ^ | key-id | 328 V | secret-key | 329 | +------------+ 330 | 0..* 331 +------------------------------+ 332 | twamp-client-ctrl-connection | 333 +------------------------------+ 334 | ctrl-connection-name | 335 | client-ip | 336 | server-ip | 337 | server-tcp-port | 0..* +-------------------------+ 338 | dscp |<>-------| twamp-session-request | 339 | key-id | +-------------------------+ 340 | max-count | | test-session-name | 341 | client-tcp-port {ro} | | sender-ip | 342 | server-start-time {ro} | | sender-udp-port | 343 | ctrl-connection-state {ro} | | reflector-ip | 344 | selected-mode {ro} | | reflector-udp-port | 345 | token {ro} | | timeout | 346 | client-iv {ro} | | padding-length | 347 +------------------------------+ | dscp | 348 | start-time | 349 +-------------+ 1 | repeat | 350 | pm-reg-list |------<>| repeat-interval | 351 +-------------+ | test-session-state {ro} | 352 | pm-index | | sid {ro} | 353 +-------------+ +-------------------------+ 355 Figure 3: TWAMP Control-Client UML class diagram 357 The twamp-client container includes an administrative parameter 358 (client-admin-state) that controls whether the device is allowed to 359 initiate TWAMP control sessions. 361 The twamp-client container holds a list (mode-preference-chain) which 362 specifies the preferred Mode values according to their preferred 363 order of use, including the authentication and encryption Modes. 364 Specifically, mode-preference-chain lists each priority (expressed as 365 a 16-bit unsigned integer, where zero is the highest priority and 366 subsequent values monotonically increasing) with their corresponding 367 mode (expressed as a 32-bit Hexadecimal value). Depending on the 368 Modes available in the Server Greeting, the Control-Client MUST 369 choose the highest priority Mode from the configured mode-preference- 370 chain list. Note that the list of preferred Modes may set bit 371 position combinations when necessary, such as when referring to the 372 extended TWAMP features in [RFC5618], [RFC5938], and [RFC6038]. If 373 the Control-Client cannot determine an acceptable Mode, it MUST 374 respond with zero Mode bits set in the Set-up Response message, 375 indicating it will not continue with the control connection. 377 In addition, the twamp-client container holds a list named key-chain 378 which relates KeyIDs with the respective secret keys. Both the 379 Server and the Control-Client use the same mappings from KeyIDs to 380 shared secrets (key-id and secret-key in Figure 3, respectively). 381 The Server, being prepared to conduct sessions with more than one 382 Control-Client, uses KeyIDs to choose the appropriate secret-key; a 383 Control-Client would typically have different secret keys for 384 different Servers. The secret-key is the shared secret, an octet 385 string of arbitrary length whose interpretation as a text string is 386 unspecified. The key-id and secret-key encoding should follow 387 Section 9.4 of [RFC6020]. The derived key length (dkLen in 388 [RFC2898]) MUST be 128-bits for the AES Session-key used for 389 encryption and a 256-bit HMAC-SHA1 Session-key used for 390 authentication (see Section 6.10 of [RFC4656]). 392 Each twamp-client container also holds a list of twamp-client-ctrl- 393 connection, where each item in the list describes a TWAMP control 394 connection that will be initiated by this Control-Client. There 395 SHALL be one instance of twamp-client-ctrl-connection per TWAMP- 396 Control (TCP) connection that is to be initiated from this device. 398 The configuration items for twamp-client-ctrl-connection are: 400 ctrl-connection-name 401 A unique name used as a key to identify this individual TWAMP 402 control connection on the Control-Client device. 404 client-ip 405 The IP address of the local Control-Client device, to be 406 placed in the source IP address field of the IP header in 407 TWAMP-Control (TCP) packets belonging to this control 408 connection. If not configured, the device SHALL choose its 409 own source IP address. 411 server-ip 412 The IP address belonging to the remote Server device, which 413 the TWAMP-Control connection will be initiated to. This item 414 is mandatory. 416 server-tcp-port 417 This parameter defines the TCP port number that is to be used 418 by this outgoing TWAMP-Control connection. Typically, this 419 is the well-known TWAMP port number (862) as per [RFC5357]. 420 However, there are known realizations of TWAMP in the field 421 that were implemented before this well-known port number was 422 allocated. These early implementations allowed the port 423 number to be configured. This parameter is therefore 424 provided for backward compatibility reasons. The default 425 value is 862. 427 dscp The DSCP value to be placed in the TCP header of TWAMP- 428 Control packets generated by this Control-Client. The 429 default value is 0. 431 key-id 432 The key-id value that is selected for this TWAMP-Control 433 connection. 435 max-count 436 If an attacking system sets the maximum value in Count 437 (2**32), then the system under attack would stall for a 438 significant period of time while it attempts to generate 439 keys. Therefore, TWAMP-compliant systems SHOULD have a 440 configuration control to limit the maximum Count value. The 441 default max-count value SHOULD be 32768. 443 The following twamp-client-ctrl-connection parameters are read-only: 445 client-tcp-port 446 The source TCP port number used in the TWAMP-Control packets 447 belonging to this control connection. 449 server-start-time 450 The Start-Time advertized by the Server in the Server-Start 451 message ([RFC4656], Section 3.1). This is a timestamp 452 representing the time when the current instantiation of the 453 Server started operating. 455 ctrl-connection-state 456 The TWAMP-Control connection state can be either active or 457 idle. 459 selected-mode 460 The TWAMP Mode that the Control-Client has chosen for this 461 control connection as set in the Mode field of the Set-Up- 462 Response message ([RFC4656], Section 3.1). 464 token This parameter holds the 64 octets containing the 465 concatenation of a 16-octet challenge, a 16-octet AES 466 Session-key used for encryption, and a 32-octet HMAC-SHA1 467 Session-key used for authentication. AES Session-key and 468 HMAC Session-key are generated randomly by the Control- 469 Client. AES Session-key and HMAC Session-key MUST be 470 generated with sufficient entropy not to reduce the security 471 of the underlying cipher [RFC4086]. The token itself is 472 encrypted using the AES (Advanced Encryption Standard) in 473 Cipher Block Chaining (CBC). Encryption MUST be performed 474 using an Initialization Vector (IV) of zero and a key derived 475 from the shared secret associated with KeyID. Challenge is 476 the same as transmitted by the Server (Section 4.2) in the 477 clear; see also the last paragraph of Section 6 in [RFC4656]. 479 client-iv 480 The Control-Client Initialization Vector (Client-IV) is 481 generated randomly by the Control-Client. Client-IV merely 482 needs to be unique (i.e., it MUST never be repeated for 483 different sessions using the same secret key; a simple way to 484 achieve that without the use of cumbersome state is to 485 generate the Client-IV values using a cryptographically 486 secure pseudo-random number source. 488 Each twamp-client-ctrl-connection holds a list of twamp-session- 489 request. twamp-session-request holds information associated with the 490 Control-Client for this test session. This includes information that 491 is associated with the Request-TW-Session/Accept-Session message 492 exchange (see Section 3.5 of [RFC5357]). The Control-Client is also 493 responsible for scheduling and results collection for TWAMP-Test 494 sessions, so twamp-session-request will also hold information related 495 these actions (e.g. pm-index, repeat-interval). 497 There SHALL be one instance of twamp-session-request for each TWAMP- 498 Test session that is to be negotiated by this TWAMP-Control 499 connection via a Request-TW-Session/Accept-Session exchange. 501 The configuration items for twamp-session-request are: 503 test-session-name 504 A unique name for this test session to be used for 505 identification of this TWAMP-Test session on the Control- 506 Client. 508 sender-ip 509 The IP address of the Session-Sender device, which is to be 510 placed in the source IP address field of the IP header in 511 TWAMP-Test (UDP) packets belonging to this test session. 513 This value will be used to populate the sender address field 514 of the Request-TW-Session message. If not configured, the 515 device SHALL choose its own source IP address. 517 sender-udp-port 518 The UDP port number that is to be used by the Session-Sender 519 for this TWAMP-Test session. The number is restricted to the 520 dynamic port range (49152 .. 65535). A value of zero 521 indicates that the Control-Client SHALL auto-allocate a UDP 522 port number for this TWAMP-Test session. The configured (or 523 auto-allocated) value is advertized in the Sender Port field 524 of the Request-TW-session message (see also Section 3.5 of 525 [RFC5357]). Note that in the scenario where a device auto- 526 allocates a UDP port number for a session, and the repeat 527 parameter for that session indicates that it should be 528 repeated, the device is free to auto-allocate a different UDP 529 port number when it negotiates the next (repeated) iteration 530 of this session. 532 reflector-ip 533 The IP address belonging to the remote Session-Reflector 534 device to which the TWAMP-Test session will be initiated. 535 This value will be used to populate the receiver address 536 field of the Request-TW-Session message. This item is 537 mandatory. 539 reflector-udp-port 540 This parameter defines the UDP port number that will be used 541 by the Session-Reflector for this TWAMP-Test session. The 542 number is restricted to the dynamic port range (49152 .. 543 65535). This value will be placed in the Receiver Port field 544 of the Request-TW-Session message. If this value is not set, 545 the device SHALL use the same port number as defined in the 546 server-tcp-port parameter of this twamp-session-request's 547 parent twamp-client-ctrl-connection. 549 timeout The length of time (in seconds) that the Session-Reflector 550 should continue to respond to packets belonging to this 551 TWAMP-Test session after a Stop-Sessions TWAMP-Control 552 message has been received ([RFC5357], Section 3.8). This 553 value will be placed in the Timeout field of the Request-TW- 554 Session message. The default value is 2 seconds. 556 padding-length 557 The number of bytes of padding that will be added to the 558 TWAMP-Test (UDP) packets generated by the Session-Sender. 559 This value will be placed in the Padding Length field of the 560 Request-TW-Session message ([RFC4656], Section 3.5). 562 dscp The DSCP value to be placed in the UDP header of TWAMP-Test 563 packets generated by the Session-Sender, and in the UDP 564 header of the TWAMP-Test response packets generated by the 565 Session-Reflector for this test session. This value will be 566 placed in the Type-P Descriptor field of the Request-TW- 567 Session message ([RFC5357]). 569 start-time 570 Time when the session is to be started (but not before the 571 Start-Sessions command is issued). This value is placed in 572 the Start Time field of the Request-TW-Session message. The 573 default value of 0 indicates that the session will be started 574 as soon as the Start-Sessions message is received. 576 repeat 577 This value determines if the TWAMP-Test session must be 578 repeated. When a test session has completed, the repeat 579 parameter is checked. The value of 0 indicates that the 580 session MUST NOT be repeated. If the value is 1 through 581 4,294,967,294 then the test session SHALL be repeated using 582 the information in repeat-interval parameter, and the parent 583 TWAMP-Control connection for this test session is restarted 584 to negotiate a new instance of this TWAMP-Test session. The 585 implementation MUST decrement the value of repeat after 586 determining a repeated session is expected. The value of 587 4,294,967,295 indicates that the test session SHALL be 588 repeated *forever* using the information in repeat-interval 589 parameter, and SHALL NOT decrement the value. The default 590 value of repeat is 0, indicating that once the session has 591 completed, it will not be renegotiated and restarted. 593 repeat-interval 594 This parameter determines the timing of repeated test 595 sessions when repeat > 0. When the value of repeat-interval 596 is 0, the negotiation of a new test session SHALL begin 597 immediately after the previous test session completes. 598 Otherwise, the Control-Client will wait for the number of 599 minutes specified in the repeat-interval parameter before 600 negotiating the new instance of this TWAMP-Test session. The 601 default value of repeat-interval is 0, indicating immediate 602 re-start. 604 pm-reg-list 605 A list of one or more Performance Metric Registry Index 606 values (see [I-D.ietf-ippm-metric-registry], which 607 communicate packet stream characteristics and one or more 608 metrics to be measured. All members of the pm-reg-list MUST 609 have the same stream characteristics, such that they combine 610 to specify all metrics that shall be measured on a single 611 stream. 613 pm-index 614 One or more Numerical index values of a Registered Metric in 615 the Performance Metric Registry 616 [I-D.ietf-ippm-metric-registry] comprise the pm-reg-list. 617 Output statistics are specified in the corresponding Registry 618 entry. 620 The following twamp-session-request parameters are read-only: 622 test-session-state 623 The TWAMP-Test session state can be either accepted or 624 indicate the respective error code. 626 sid The SID allocated by the Server for this TWAMP-Test session, 627 and communicated back to the Control-Client in the SID field 628 of the Accept-Session message; see Section 4.3 of [RFC6038]. 630 4.2. Server 632 The twamp-server container (see Figure 4) holds items that are 633 related to the configuration of the TWAMP Server logical entity 634 (recall Figure 1). 636 +------------------ -+ 637 | twamp-server | 638 +--------------------+ 639 | server-admin-state | 1..* +------------+ 640 | server-tcp-port |<>------| key-chain | 641 | servwait | +------------+ 642 | dscp | | key-id | 643 | count | | secret-key | 644 | max-count | +------------+ 645 | modes | 646 | | 0..* +-----------------------------------+ 647 | |<>------| twamp-server-ctrl-connection | 648 +--------------------+ +-----------------------------------+ 649 | client-ip {ro} | 650 | client-tcp-port {ro} | 651 | server-ip {ro} | 652 | server-tcp-port {ro} | 653 | server-ctrl-connection-state {ro} | 654 | dscp {ro} | 655 | selected-mode {ro} | 656 | key-id {ro} | 657 | count {ro} | 658 | max-count {ro} | 659 | salt {ro} | 660 | server-iv {ro} | 661 | challenge {ro} | 662 +-----------------------------------+ 664 Figure 4: TWAMP Server UML class diagram 666 A device operating in the Server role cannot configure attributes on 667 a per TWAMP-Control connection basis, as it has no foreknowledge of 668 what incoming TWAMP-Control connections it will receive. As such, 669 any parameter that the Server might want to apply to an incoming 670 control connection must be configured at the overall Server level, 671 and will then be applied to all incoming TWAMP-Control connections. 673 Each twamp-server container holds a list named key-chain which 674 relates KeyIDs with the respective secret keys. As mentioned in 675 Section 4.1, both the Server and the Control-Client use the same 676 mappings from KeyIDs to shared secrets. The Server, being prepared 677 to conduct sessions with more than one Control-Client, uses KeyIDs to 678 choose the appropriate secret-key; a Control-Client would typically 679 have different secret keys for different Servers. key-id tells the 680 Server which shared-secret the Control-Client wishes to use for 681 authentication or encryption. 683 Each incoming control connection that is active on the Server will be 684 represented by an instance of a twamp-server-ctrl-connection object. 685 All items in the twamp-server-ctrl-connection object are read-only, 686 as we explain later in this section. 688 The twamp-server container items are as follows: 690 server-admin-state 691 This administrative parameter controls whether the device is 692 allowed to operate as a TWAMP Server. As defined in 693 [RFC5357] the roles of Server and Session-Reflector can be 694 played by the same host; recall Figure 2. For a host 695 operating in this manner, this parameter controls whether the 696 device is allowed to respond to TWAMP control sessions. 698 server-tcp-port 699 This parameter defines the well known TCP port number that is 700 used by TWAMP-Control. The Server will listen on this port 701 number for incoming TWAMP-Control connections. Although this 702 is defined as a fixed value (862) in [RFC5357], there are 703 several realizations of TWAMP in the field that were 704 implemented before this well-known port number was allocated. 705 These early implementations allowed the port number to be 706 configured. This parameter is therefore provided for 707 backward compatibility reasons. The default value is 862. 709 servwait 710 TWAMP-Control (TCP) session timeout, in seconds (([RFC5357], 711 Section 3.1)). 713 dscp The DSCP value to be placed in the IP header of TWAMP-Control 714 (TCP) packets generated by the Server. Section 3.1 of 715 [RFC5357] specifies that the server SHOULD use the DSCP value 716 from the Control-Client's TCP SYN. However, for practical 717 purposes TWAMP will typically be implemented using a general 718 purpose TCP stack provided by the underlying operating 719 system, and such a stack may not provide this information to 720 the user. Consequently, it is not always possible to 721 implement the behavior described in [RFC5357] in an OS- 722 portable version of TWAMP. The default behavior if this item 723 is not set is to use the DSCP value from the Control-Client's 724 TCP SYN, as per Section 3.1 of [RFC5357]. 726 count Parameter used in deriving a key from a shared secret as 727 described in Section 3.1 of [RFC4656], and are communicated 728 to the Control-Client as part of the Server Greeting message. 729 count MUST be a power of 2. count MUST be at least 1024. 731 count SHOULD be increased as more computing power becomes 732 common. 734 max-count 735 If an attacking system sets the maximum value in count 736 (2**32), then the system under attack would stall for a 737 significant period of time while it attempts to generate 738 keys. Therefore, TWAMP-compliant systems SHOULD have a 739 configuration control to limit the maximum count value. The 740 default max-count value SHOULD be 32768. 742 modes 743 The bit mask of TWAMP Modes this Server instance is willing 744 to support; see IANA TWAMP Modes Registry. Each bit position 745 set represents a mode; see TWAMP-Modes at 746 http://www.iana.org/assignments/twamp-parameters/twamp- 747 parameters.xhtml. Note: Modes requiring Authentication or 748 Encryption MUST include the related attributes. 750 There SHALL be one instance of twamp-server-ctrl-connection per 751 incoming TWAMP-Control (TCP) connection that is received and active 752 on the Server device. All items in the twamp-server-ctrl-connection 753 are read-only. Each instance of twamp-server-ctrl-connection uses 754 the following 4-tuple as its unique key: client-ip, client-tcp-port, 755 server-ip, server-tcp-port. 757 The twamp-server-ctrl-connection container items are all read-only: 759 client-ip 760 The IP address on the remote Control-Client device, which is 761 the source IP address used in the TWAMP-Control (TCP) packets 762 belonging to this control connection. 764 client-tcp-port 765 The source TCP port number used in the TWAMP-Control (TCP) 766 packets belonging to this control connection. 768 server-ip 769 The IP address of the local Server device, which is the 770 destination IP address used in the TWAMP-Control (TCP) 771 packets belonging to this control connection. 773 server-tcp-port 774 The destination TCP port number used in the TWAMP-Control 775 (TCP) packets belonging to this control connection. This 776 will usually be the same value as the server-tcp-port 777 configured under twamp-server. However, in the event that 778 the user re-configured twamp-server:server-tcp-port after 779 this control connection was initiated, this value will 780 indicate the server-tcp-port that is actually in use for this 781 control connection. 783 server-ctrl-connection-state 784 The Server TWAMP-Control connection state can be active or 785 SERVWAIT. 787 dscp 788 The DSCP value used in the IP header of the TWAMP-Control 789 (TCP) packets sent by the Server for this control connection. 790 This will usually be the same value as is configured in the 791 dscp parameter under the twamp-server container. However, in 792 the event that the user re-configures twamp-server:dscp after 793 this control connection is already in progress, this read- 794 only value will show the actual dscp value in use by this 795 TWAMP-Control connection. 797 selected-mode 798 The Mode that was chosen for this TWAMP-Control connection as 799 set in the Mode field of the Set-Up-Response message. 801 key-id 802 The KeyID value that is in use by this TWAMP-Control 803 connection. The Control-Client selects the key-id for the 804 control connection. 806 count 807 The count value that is in use by this TWAMP-Control 808 connection. This will usually be the same value as is 809 configured under twamp-server. However, in the event that 810 the user re-configured twamp-server:count after this control 811 connection is already in progress, this read-only value will 812 show the actual count that is in use for this TWAMP-Control 813 connection. 815 max-count 816 The max-count value that is in use by this TWAMP-Control 817 connection. This will usually be the same value as is 818 configured under twamp-server. However, in the event that 819 the user re-configured twamp-server:max-count after this 820 control connection is already in progress, this read-only 821 value will show the actual max-count that is in use for this 822 control connection. 824 salt A parameter used in deriving a key from a shared secret as 825 described in Section 3.1 of [RFC4656]. Salt MUST be 826 generated pseudo-randomly (independently of anything else in 827 the RFC) and is communicated to the Control-Client as part of 828 the Server Greeting message. 830 server-iv 831 The Server Initialization Vector (IV) is generated randomly 832 by the Server. 834 challenge 835 A random sequence of octets generated by the Server. As 836 described in Section 4.1 challenge is used by the Control- 837 Client to prove possession of a shared secret. 839 4.3. Session-Sender 841 The twamp-session-sender container, illustrated in Figure 5, holds 842 items that are related to the configuration of the TWAMP Session- 843 Sender logical entity. 845 The twamp-session-sender container includes an administrative 846 parameter (session-sender-admin-state) that controls whether the 847 device is allowed to initiate TWAMP test sessions. 849 There is one instance of twamp-sender-test-session for each TWAMP- 850 Test session for which packets are being sent. 852 +----------------------------+ 853 | twamp-session-sender | 854 +----------------------------+ 0..* +---------------------------+ 855 | session-sender-admin-state |<>-----| twamp-sender-test-session | 856 +----------------------------+ +---------------------------+ 857 | test-session-name | 858 | ctrl-connection-name {ro} | 859 | fill-mode | 860 | number-of-packets | 861 | sender-session-state {ro} | 862 | sent-packets {ro} | 863 | rcv-packets {ro} | 864 | last-sent-seq {ro} | 865 | last-rcv-seq {ro} | 866 +---------------------------+ 867 ^ 868 V 869 | 1 870 +---------------------+ 871 | packet-distribution | 872 +---------------------+ 873 | periodic / poisson | 874 +---------------------+ 875 | | 876 +-------------------------+ | 877 | periodic-interval | | 878 | periodic-interval-units | | 879 +-------------------------+ | 880 +------------------------+ 881 | lambda | 882 | lambda-units | 883 | max-interval | 884 | truncation-point-units | 885 +------------------------+ 887 Figure 5: TWAMP Session-Sender UML class diagram 889 The twamp-sender-test-session container items are: 891 test-session-name 892 A unique name for this TWAMP-Test session to be used for 893 identifying this test session by the Session-Sender logical 894 entity. 896 ctrl-connection-name 897 The name of the parent TWAMP-Control connection that is 898 responsible for negotiating this TWAMP-Test session. 900 fill-mode 901 Indicates whether the padding added to the TWAMP-Test (UDP) 902 packets will contain pseudo-random numbers, or whether it 903 should consist of all zeroes, as per Section 4.2.1 of 904 [RFC5357]. 906 number-of-packets 907 The overall number of TWAMP-Test (UDP) packets to be 908 transmitted by the Session-Sender for this test session. 910 packet-distribution 911 Defines whether TWAMP-Test (UDP) packets are to be 912 transmitted with a fixed interval between them, or whether a 913 Poisson distribution is to be used. 915 periodic-interval and periodic-interval-units 916 If packet-distribution is set to periodic, these two values 917 are used together to determine the period to wait between the 918 first bits of TWAMP-Test (UDP) packet transmissions for this 919 test session. periodic-interval-units is one of seconds, 920 milliseconds, microseconds, nanoseconds; see [RFC3432]. 922 lambda and lambda-units 923 If packet-distribution is Poisson, the lambda parameter 924 determines the corresponding average rate of packet 925 transmission. lambda-units defines the units of lambda in 926 reciprocal seconds; see [RFC3432]. 928 max-interval 929 If packet-distribution is Poisson, then this parameter keeps 930 a stream active by setting a maximum time between packet 931 transmissions. 933 truncation-point-units 934 One of seconds, milliseconds, microseconds, nanoseconds. 936 The following twamp-sender-test-session parameters are read-only: 938 sender-session-state 939 This read-only item can be either Active or Idle. 941 sent-packets 942 The number of TWAMP-Test (UDP) packets belonging to this 943 session that have been transmitted by the Session-Sender. 945 rcv-packets 946 The number of TWAMP-Test (UDP) packets belonging to this 947 session that have been received from the Session-Reflector. 949 The round trip loss for a test session can be calculated as 950 sent-packets - rcv-packets. 952 last-sent-seq 953 The value in the sequence number field of the last TWAMP-Test 954 (UDP) packet transmitted for this test session. Sequence 955 numbers start from zero, so this should always be one less 956 than the sent-packets value. 958 last-rcv-seq 959 The value in the sequence number field of the last TWAMP-Test 960 (UDP) packet received for this test session. In the case of 961 packet loss in the Session-Sender to Session-Reflector 962 direction, this value minus the last-sent-seq will quantify 963 the number of packets that were lost in the Session-Sender to 964 Session-Reflector direction. 966 4.4. Session-Reflector 968 The twamp-session-reflector container, illustrated in Figure 6, holds 969 items that are related to the configuration of the TWAMP Session- 970 Reflector logical entity. 972 A device operating in the Session-Reflector role cannot configure 973 attributes on a per-session basis, as it has no foreknowledge of what 974 incoming sessions it will receive. As such, any parameter that the 975 Session-Reflector might want to apply to an incoming TWAMP-Test 976 session must be configured at the overall Session-Reflector level, 977 and will then be applied to all incoming sessions. 979 The twamp-session-sender container includes an administrative 980 parameter (session-reflector-admin-state) that controls whether the 981 device is allowed to respond to incoming TWAMP test sessions. Each 982 incoming TWAMP-Test session that is active on the Session-Reflector 983 will be represented by an instance of a twamp-reflector-test-session 984 object. All items in the twamp-reflector-test-session object are 985 read-only. 987 +----=--------------------------+ 988 | twamp-session-reflector | 989 +-------------------------------+ 990 | session-reflector-admin-state | 991 | refwait | 992 +-------------------------------+ 993 ^ 994 V 995 | 996 | 0..* 997 +----------------------------------------+ 998 | twamp-reflector-test-session | 999 +----------------------------------------+ 1000 | sid {ro} | 1001 | sender-ip {ro} | 1002 | sender-udp-port {ro} | 1003 | reflector-ip {ro} | 1004 | reflector-udp-port {ro} | 1005 | parent-connection-client-ip {ro} | 1006 | parent-connection-client-tcp-port {ro} | 1007 | parent-connection-server-ip {ro} | 1008 | parent-connection-server-tcp-port {ro} | 1009 | dscp {ro} | 1010 | sent-packets {ro} | 1011 | rcv-packets {ro} | 1012 | last-sent-seq {ro} | 1013 | last-rcv-seq {ro} | 1014 +----------------------------------------+ 1016 Figure 6: TWAMP Session-Reflector UML class diagram 1018 The twamp-session-reflector configuration items are: 1020 refwait 1021 The Session-Reflector MAY discontinue any session that has 1022 been started when no packet associated with that session has 1023 been received for REFWAIT seconds. The default value of 1024 REFWAIT SHALL be 900 seconds, and this waiting time MAY be 1025 configurable. This timeout allows a Session-Reflector to 1026 free up resources in case of failure. 1028 Instances of twamp-reflector-test-session are indexed by a session 1029 identifier (sid). This value is auto-allocated by the Server as test 1030 session requests are received, and communicated back to the Control- 1031 Client in the SID field of the Accept-Session message; see 1032 Section 4.3 of [RFC6038]. 1034 When attempting to retrieve operational data for active test sessions 1035 from a Session-Reflector device, the user will not know what sessions 1036 are currently active on that device, or what SIDs have been auto- 1037 allocated for these test sessions. If the user has network access to 1038 the Control-Client device, then it is possible to read the data for 1039 this session under twamp-client:twamp-client-ctrl-connection:twamp- 1040 session-request:sid and obtain the SID (see Figure 3). The user may 1041 then use this SID value as an index to retrieve an individual twamp- 1042 session-reflector:twamp-reflector-test-session instance on the 1043 Session-Reflector device. 1045 If the user has no network access to the Control-Client device, then 1046 the only option is to retrieve all twamp-reflector-test-session 1047 instances from the Session-Reflector device. This could be 1048 problematic if a large number of test sessions are currently active 1049 on that device. 1051 Each Session-Reflector TWAMP-Test session contains the following 1052 4-tuple: {parent-connection-client-ip, parent-connection-client-tcp- 1053 port, parent-connection-server-ip, parent-connection-server-tcp- 1054 port}. This 4-tuple corresponds to the equivalent 4-tuple {client-ip, 1055 client-tcp-port, server-ip, server-tcp-port} in the twamp-server- 1056 ctrl-connection object. This 4-tuple allows the user to trace back 1057 from the TWAMP-Test session to the (parent) TWAMP-Control connection 1058 that negotiated this test session. 1060 All data under twamp-reflector-test-session is read-only: 1062 sid An auto-allocated identifier for this TWAMP-Test session, 1063 that is unique within the context of this Server/Session- 1064 Reflector device only. This value will be communicated to 1065 the Control-Client that requested the test session in the SID 1066 field of the Accept-Session message. 1068 sender-ip 1069 The IP address on the remote device, which is the source IP 1070 address used in the TWAMP-Test (UDP) packets belonging to 1071 this test session. 1073 sender-udp-port 1074 The source UDP port used in the TWAMP-Test packets belonging 1075 to this test session. The number is restricted to the 1076 dynamic port range (49152 .. 65535). 1078 reflector-ip 1079 The IP address of the local Session-Reflector device, which 1080 is the destination IP address used in the TWAMP-Test (UDP) 1081 packets belonging to this test session. 1083 reflector-udp-port 1084 The destination UDP port number used in the TWAMP-Test (UDP) 1085 test packets belonging to this test session. The number is 1086 restricted to the dynamic port range (49152 .. 65535). 1088 parent-connection-client-ip 1089 The IP address on the Control-Client device, which is the 1090 source IP address used in the TWAMP-Control (TCP) packets 1091 belonging to the parent control connection that negotiated 1092 this test session. 1094 parent-connection-client-tcp-port 1095 The source TCP port number used in the TWAMP TCP control 1096 packets belonging to the parent control connection that 1097 negotiated this test session. 1099 parent-connection-server-ip 1100 The IP address of the Server device, which is the destination 1101 IP address used in the TWAMP-Control (TCP) packets belonging 1102 to the parent control connection that negotiated this test 1103 session. 1105 parent-connection-server-tcp-port 1106 The destination TCP port number used in the TWAMP-Control 1107 (TCP) packets belonging to the parent control connection that 1108 negotiated this test session. 1110 dscp The DSCP value present in the IP header of TWAMP-Test (UDP) 1111 packets belonging to this test session. 1113 sent-packets 1114 The number of TWAMP-Test (UDP) response packets that have 1115 been sent by the Session-Reflector for this test session. 1117 rcv-packets 1118 The number of TWAMP-Test (UDP) packets that have been 1119 received by the Session-Reflector for this test session. 1120 Since the Session-Reflector should respond to every test 1121 packet it receives, the sent-packets and rcv-packets values 1122 should always be identical. 1124 last-sent-seq 1125 The value in the sequence number field of the last TWAMP-Test 1126 (UDP) response packet transmitted for this test session. 1128 last-rcv-seq 1129 The value in the sequence number field of the last TWAMP-Test 1130 (UDP) packet received for this test session. 1132 5. Data Model 1134 This section formally specifies the TWAMP data model using YANG. 1136 5.1. YANG Tree Diagram 1138 This section presents a simplified graphical representation of the 1139 TWAMP data model using a YANG tree diagram. Readers should keep in 1140 mind that the limit of 72 characters per line forces us to introduce 1141 artificial line breaks in some tree diagram nodes. 1143 module: ietf-twamp 1144 +--rw twamp 1145 +--rw twamp-client! {control-client}? 1146 | +--rw client-admin-state boolean 1147 | +--rw mode-preference-chain* [priority] 1148 | | +--rw priority uint16 1149 | | +--rw mode? mode 1150 | +--rw key-chain* [key-id] 1151 | | +--rw key-id string 1152 | | +--rw secret-key? string 1153 | +--rw twamp-client-ctrl-connection* [ctrl-connection-name] 1154 | +--rw ctrl-connection-name string 1155 | +--rw client-ip? inet:ip-address 1156 | +--rw server-ip inet:ip-address 1157 | +--rw server-tcp-port? inet:port-number 1158 | +--rw dscp? inet:dscp 1159 | +--rw key-id? string 1160 | +--rw max-count? uint32 1161 | +--ro client-tcp-port? inet:port-number 1162 | +--ro server-start-time? uint64 1163 | +--ro ctrl-connection-state? ctrl-connection-state 1164 | +--ro selected-mode? mode 1165 | +--ro token? binary 1166 | +--ro client-iv? binary 1167 | +--rw twamp-session-request* [test-session-name] 1168 | +--rw test-session-name string 1169 | +--rw sender-ip? inet:ip-address 1170 | +--rw sender-udp-port? inet:port-number 1171 | +--rw reflector-ip inet:ip-address 1172 | +--rw reflector-udp-port? inet:port-number 1173 | +--rw timeout? uint64 1174 | +--rw padding-length? uint32 1175 | +--rw dscp? inet:dscp 1176 | +--rw start-time? uint64 1177 | +--rw repeat? uint32 1178 | +--rw repeat-interval? uint32 1179 | +--rw pm-reg-list* [pm-index] 1180 | | +--rw pm-index uint16 1181 | +--ro test-session-state? test-session-state 1182 | +--ro sid? string 1183 +--rw twamp-server! {server}? 1184 | +--rw server-admin-state boolean 1185 | +--rw server-tcp-port? inet:port-number 1186 | +--rw servwait? uint32 1187 | +--rw dscp? inet:dscp 1188 | +--rw count? uint32 1189 | +--rw max-count? uint32 1190 | +--rw modes? mode 1191 | +--rw key-chain* [key-id] 1192 | | +--rw key-id string 1193 | | +--rw secret-key? string 1194 | +--ro twamp-server-ctrl-connection* [client-ip client-tcp-port server-ip server-tcp-port] 1195 | +--ro client-ip inet:ip-address 1196 | +--ro client-tcp-port inet:port-number 1197 | +--ro server-ip inet:ip-address 1198 | +--ro server-tcp-port inet:port-number 1199 | +--ro server-ctrl-connection-state? server-ctrl-connection-state 1200 | +--ro dscp? inet:dscp 1201 | +--ro selected-mode? mode 1202 | +--ro key-id? string 1203 | +--ro count? uint32 1204 | +--ro max-count? uint32 1205 | +--ro salt? binary 1206 | +--ro server-iv? binary 1207 | +--ro challenge? binary 1208 +--rw twamp-session-sender! {session-sender}? 1209 | +--rw session-sender-admin-state boolean 1210 | +--rw twamp-sender-test-session* [test-session-name] 1211 | +--rw test-session-name string 1212 | +--ro ctrl-connection-name? string 1213 | +--rw fill-mode? fill-mode 1214 | +--rw number-of-packets? uint32 1215 | +--rw (packet-distribution)? 1216 | | +--:(periodic) 1217 | | | +--rw periodic-interval? uint32 1218 | | | +--rw periodic-interval-units? units 1219 | | +--:(poisson) 1220 | | +--rw lambda? uint32 1221 | | +--rw lambda-units? uint32 1222 | | +--rw max-interval? uint32 1223 | | +--rw truncation-point-units? units 1224 | +--ro sender-session-state? sender-session-state 1225 | +--ro sent-packets? uint32 1226 | +--ro rcv-packets? uint32 1227 | +--ro last-sent-seq? uint32 1228 | +--ro last-rcv-seq? uint32 1229 +--rw twamp-session-reflector! {session-reflector}? 1230 +--rw session-reflector-admin-state boolean 1231 +--rw refwait? uint32 1232 +--ro twamp-reflector-test-session* [sender-ip sender-udp-port reflector-ip reflector-udp-port] 1233 +--ro sid? string 1234 +--ro sender-ip inet:ip-address 1235 +--ro sender-udp-port inet:port-number 1236 +--ro reflector-ip inet:ip-address 1237 +--ro reflector-udp-port inet:port-number 1238 +--ro parent-connection-client-ip? inet:ip-address 1239 +--ro parent-connection-client-tcp-port? inet:port-number 1240 +--ro parent-connection-server-ip? inet:ip-address 1241 +--ro parent-connection-server-tcp-port? inet:port-number 1242 +--ro dscp? inet:dscp 1243 +--ro sent-packets? uint32 1244 +--ro rcv-packets? uint32 1245 +--ro last-sent-seq? uint32 1246 +--ro last-rcv-seq? uint32 1248 5.2. YANG Module 1250 This section presents the YANG module for the TWAMP data model 1251 defined in this document. 1253 file "ietf-twamp@2016-03-21.yang" 1254 module ietf-twamp { 1255 namespace "urn:ietf:params:xml:ns:yang:ietf-twamp"; 1256 //namespace need to be assigned by IANA 1257 prefix "ietf-twamp"; 1259 import ietf-inet-types { 1260 prefix inet; 1261 } 1263 organization "IETF IPPM (IP Performance Metrics) Working Group"; 1265 contact "draft-ietf-ippm-twamp-yang@tools.ietf.org"; 1267 description "TWAMP Data Model"; 1269 revision "2016-03-21" { 1270 description "01 version. RFC5357, RFC5618, RFC5938 and RFC6038 1271 is covered. draft-ietf-ippm-metric-registry is also considered"; 1273 reference "draft-ietf-ippm-twamp-yang"; 1274 } 1275 feature control-client { 1276 description "This feature relates to the device functions as 1277 the TWAMP Control-Client."; 1278 } 1280 feature server { 1281 description "This feature relates to the device functions as 1282 the TWAMP Server."; 1283 } 1285 feature session-sender { 1286 description "This feature relates to the device functions as 1287 the TWAMP Session-Sender."; 1288 } 1290 feature session-reflector { 1291 description "This feature relates to the device functions as 1292 the TWAMP Session-Reflector."; 1293 } 1295 typedef ctrl-connection-state { 1296 type enumeration { 1297 enum active { 1298 description "Control session is active."; 1299 } 1300 enum idle { 1301 description "Control session is idle."; 1302 } 1303 } 1304 description "Control connection state"; 1305 } 1307 typedef mode { 1308 type bits { 1309 bit unauthenticated { 1310 position "0"; 1311 description "Unauthenticated"; 1312 } 1313 bit authenticated { 1314 position "1"; 1315 description "Authenticated"; 1316 } 1317 bit encrypted { 1318 position "2"; 1319 description "Encrypted"; 1320 } 1321 bit unauth-test-encrpyt-control { 1322 position "3"; 1323 description "Mixed Security Mode per RFC 5618. Test 1324 protocol security mode in Unauthenticated mode, 1325 Control protocol in Encrypted mode."; 1326 } 1327 bit individual-session-control { 1328 position "4"; 1329 description "Individual session control per RFC5938."; 1330 } 1331 bit reflect-octets { 1332 position "5"; 1333 description "Reflect octets capability per RFC6038."; 1334 } 1335 bit symmetrical-size { 1336 position "6"; 1337 description "Symmetrical size per RFC6038."; 1338 } 1339 } 1340 description "Authentication mode bit mask"; 1341 } 1343 typedef test-session-state { 1344 type enumeration { 1345 enum ok { 1346 value 0; 1347 description "Test session is accepted."; 1348 } 1349 enum failed { 1350 value 1; 1351 description "Failure, reason unspecified (catch-all)."; 1352 } 1353 enum internal-error { 1354 value 2; 1355 description "Internal error."; 1356 } 1357 enum not-supported { 1358 value 3; 1359 description "Some aspect of request is not supported."; 1360 } 1361 enum permanent-resource-limit { 1362 value 4; 1363 description "Cannot perform request due to 1364 permanent resource limitations."; 1365 } 1366 enum temp-resource-limit { 1367 value 5; 1368 description "Cannot perform request due to 1369 temporary resource limitations."; 1370 } 1372 } 1373 description "Test session state"; 1374 } 1376 typedef server-ctrl-connection-state { 1377 type enumeration { 1378 enum "active" { 1379 description "Active"; 1380 } 1381 enum "servwait" { 1382 description "Servwait"; 1383 } 1384 } 1385 description "Server control connection state"; 1386 } 1388 typedef fill-mode { 1389 type enumeration { 1390 enum zero { 1391 description "Zero"; 1392 } 1393 enum random { 1394 description "Random"; 1395 } 1396 } 1397 description "Indicates whether the padding added to the 1398 UDP test packets will contain pseudo-random numbers, or 1399 whether it should consist of all zeroes."; 1400 } 1402 typedef units { 1403 type enumeration { 1404 enum seconds { 1405 description "Seconds"; 1406 } 1407 enum milliseconds { 1408 description "Milliseconds"; 1409 } 1410 enum microseconds { 1411 description "Microseconds"; 1412 } 1413 enum nanoseconds { 1414 description "Nanoseconds"; 1415 } 1416 } 1417 description "Time units"; 1418 } 1419 typedef sender-session-state { 1420 type enumeration { 1421 enum setup { 1422 description "Test session is active."; 1423 } 1424 enum failure { 1425 description "Test session is idle."; 1426 } 1427 } 1428 description "Sender session state."; 1429 } 1431 typedef dynamic-port-number { 1432 type inet:port-number { 1433 range "49152 .. 65535"; 1434 } 1435 description "Dynamic range for port numbers"; 1436 } 1438 grouping maintenance-statistics { 1439 description "Maintenance statistics grouping"; 1440 leaf sent-packets { 1441 type uint32; 1442 config "false"; 1443 description "Packets sent"; 1444 } 1445 leaf rcv-packets { 1446 type uint32; 1447 config "false"; 1448 description "Packets received"; 1449 } 1450 leaf last-sent-seq { 1451 type uint32; 1452 config "false"; 1453 description "Last sent sequence number"; 1454 } 1455 leaf last-rcv-seq { 1456 type uint32; 1457 config "false"; 1458 description "Last received sequence number"; 1459 } 1460 } 1462 container twamp { 1463 description "Top level container"; 1464 container twamp-client { 1465 if-feature control-client; 1466 presence "twamp-client"; 1467 description "Twamp client container"; 1468 leaf client-admin-state { 1469 type boolean; 1470 mandatory "true"; 1471 description "Indicates whether this device is allowed to run 1472 TWAMP to initiate control sessions"; 1473 } 1475 list mode-preference-chain { 1476 key "priority"; 1477 unique "mode"; 1478 leaf priority { 1479 type uint16; 1480 description "priority"; 1481 } 1482 leaf mode { 1483 type mode; 1484 description "Authentication mode bit mask"; 1485 } 1486 description "Authentication mode preference"; 1487 } 1489 list key-chain { 1490 key "key-id"; 1491 leaf key-id { 1492 type string { 1493 length "1..80"; 1494 } 1495 description "Key ID"; 1496 } 1497 leaf secret-key { 1498 type string; 1499 description "Secret key"; 1500 } 1501 description "Key chain"; 1502 } 1504 list twamp-client-ctrl-connection { 1505 key "ctrl-connection-name"; 1506 description "Twamp client control connections"; 1507 leaf ctrl-connection-name { 1508 type string; 1509 description "A unique name used as a key to identify this 1510 individual TWAMP control connection on the 1511 Control-Client device."; 1512 } 1513 leaf client-ip { 1514 type inet:ip-address; 1515 description "Client IP address"; 1516 } 1517 leaf server-ip { 1518 type inet:ip-address; 1519 mandatory "true"; 1520 description "Server IP address"; 1521 } 1522 leaf server-tcp-port { 1523 type inet:port-number; 1524 default "862"; 1525 description "Server tcp port"; 1526 } 1527 leaf dscp{ 1528 type inet:dscp; 1529 default "0"; 1530 description "The DSCP value to be placed in the IP header 1531 of the TWAMP TCP Control packets generated 1532 by the Control-Client"; 1533 } 1534 leaf key-id { 1535 type string { 1536 length "1..80"; 1537 } 1538 description "Key ID"; 1539 } 1540 leaf max-count { 1541 type uint32 { 1542 range 1024..4294967295; 1543 } 1544 default 32768; 1545 description "Max count value."; 1546 } 1547 leaf client-tcp-port { 1548 type inet:port-number; 1549 config "false"; 1550 description "Client TCP port"; 1551 } 1552 leaf server-start-time { 1553 type uint64; 1554 config "false"; 1555 description "The Start-Time advertized by the Server in 1556 the Server-Start message"; 1557 } 1558 leaf ctrl-connection-state { 1559 type ctrl-connection-state; 1560 config "false"; 1561 description "Control connection state"; 1562 } 1563 leaf selected-mode { 1564 type mode; 1565 config "false"; 1566 description "The TWAMP mode that the Control-Client has 1567 chosen for this control connection as set in the Mode 1568 field of the Set-Up-Response message"; 1569 } 1570 leaf token { 1571 type binary { 1572 length "64"; 1573 } 1574 config "false"; 1575 description "64 octets, containing the concatenation of a 1576 16-octet challenge, a 16-octet AES Session-key used 1577 for encryption, and a 32-octet HMAC-SHA1 Session-key 1578 used for authentication"; 1579 } 1580 leaf client-iv{ 1581 type binary { 1582 length "16"; 1583 } 1584 config "false"; 1585 description "16 octets, Client-IV is generated randomly 1586 by the Control-Client."; 1587 } 1589 list twamp-session-request { 1590 key "test-session-name"; 1591 description "Twamp session requests"; 1592 leaf test-session-name { 1593 type string; 1594 description "A unique name for this test session to be 1595 used as a key for this test session on the 1596 Control-Client."; 1597 } 1598 leaf sender-ip { 1599 type inet:ip-address; 1600 description "Sender IP address"; 1601 } 1602 leaf sender-udp-port { 1603 type dynamic-port-number; 1604 description "Sender UDP port"; 1605 } 1606 leaf reflector-ip { 1607 type inet:ip-address; 1608 mandatory "true"; 1609 description "Reflector IP address."; 1610 } 1611 leaf reflector-udp-port { 1612 type dynamic-port-number; 1613 description "Reflector UDP port. If this value is not 1614 set, the device shall use the same port number as 1615 defined in the server-tcp-port parameter of this 1616 twamp-session-request's 1617 parent client-control-connection."; 1618 } 1619 leaf timeout { 1620 type uint64; 1621 default "2"; 1622 description "The time (in seconds)Session-Reflector MUST 1623 wait after receiving a Stop-Session message."; 1624 } 1625 leaf padding-length { 1626 type uint32{ 1627 range "64..4096"; 1628 } 1629 description "The number of bytes of padding that should 1630 be added to the UDP test packets generated by the 1631 sender. Jumbo sized packets supported."; 1632 } 1633 leaf dscp { 1634 type inet:dscp; 1635 description "The DSCP value to be placed in the UDP 1636 header of TWAMP-Test packets generated by the 1637 Session-Sender, and in the UDP header of the TWAMP-Test 1638 response packets generated by the Session-Reflector 1639 for this test session."; 1640 } 1641 leaf start-time { 1642 type uint64; 1643 default "0"; 1644 description "Time when the session is to be started 1645 (but not before the Start-Sessions command is issued). 1646 This value is placed in the Start Time field of the 1647 Request-TW-Session message. The default value of 0 1648 indicates that the session will be started as soon 1649 as the Start-Sessions message is received."; 1650 } 1651 leaf repeat { 1652 type uint32; 1653 default "0"; 1654 description "Determines if the test session is to be 1655 run repeatedly. The default value of repeat is 0, 1656 indicating that once the session has completed, it 1657 will not be renegotiated and restarted. 1 thru 4,294,967,294 1658 indicate the number of repetitions, and the max value of 1659 4,294,967,295 indicates repeat forever."; 1660 } 1661 leaf repeat-interval { 1662 when "../repeat!='0'" { 1663 description "When repeat is not 0, the test is to be 1664 repeated"; 1665 } 1666 type uint32; 1667 description "Repeat interval (in minutes)"; 1668 } 1670 list pm-reg-list { 1671 key "pm-index"; 1672 leaf pm-index { 1673 type uint16; 1674 description "One or more Numerical index values of a 1675 Registered Metric in the Performance Metric Registry"; 1676 } 1677 description "A list of one or more pm-index values, 1678 which communicate packet stream characteristics and one 1679 or more metrics to be measured."; 1680 } 1681 leaf test-session-state { 1682 type test-session-state; 1683 config "false"; 1684 description "Test session state"; 1685 } 1686 leaf sid{ 1687 type string; 1688 config "false"; 1689 description "The SID allocated by the Server for 1690 this test session"; 1691 } 1692 } 1693 } 1694 } 1696 container twamp-server{ 1697 if-feature server; 1698 presence "twamp-server"; 1699 description "Twamp sever container"; 1700 leaf server-admin-state{ 1701 type boolean; 1702 mandatory "true"; 1703 description "Indicates whether this device is allowed to run 1704 TWAMP to respond to control sessions"; 1705 } 1706 leaf server-tcp-port { 1707 type inet:port-number; 1708 default "862"; 1709 description "This parameter defines the well known TCP port 1710 number that is used by TWAMP."; 1711 } 1712 leaf servwait { 1713 type uint32 { 1714 range 1..604800; 1715 } 1716 default 900; 1717 description "SERVWAIT (TWAMP Control (TCP) session timeout), 1718 default value is 900"; 1719 } 1720 leaf dscp { 1721 type inet:dscp; 1722 description "The DSCP value to be placed in the IP header of 1723 TCP TWAMP-Control packets generated by the Server"; 1724 } 1725 leaf count { 1726 type uint32 { 1727 range 1024..4294967295; 1728 } 1729 description "Parameter used in deriving a key from a 1730 shared secret "; 1731 } 1732 leaf max-count { 1733 type uint32 { 1734 range 1024..4294967295; 1735 } 1736 default 32768; 1737 description "Max count value."; 1738 } 1739 leaf modes { 1740 type mode; 1741 description "The bit mask of TWAMP Modes this Server 1742 instance is willing to support."; 1743 } 1745 list key-chain { 1746 key "key-id"; 1747 leaf key-id { 1748 type string { 1749 length "1..80"; 1750 } 1751 description "Key IDs."; 1752 } 1753 leaf secret-key { 1754 type string; 1755 description "Secret keys."; 1756 } 1757 description "KeyIDs with the respective secret keys."; 1758 } 1760 list twamp-server-ctrl-connection { 1761 key "client-ip client-tcp-port server-ip server-tcp-port"; 1762 config "false"; 1763 description "Twamp server control connections"; 1764 leaf client-ip { 1765 type inet:ip-address; 1766 description "Client IP address"; 1767 } 1768 leaf client-tcp-port { 1769 type inet:port-number; 1770 description "Client TCP port"; 1771 } 1772 leaf server-ip { 1773 type inet:ip-address; 1774 description "Server IP address"; 1775 } 1776 leaf server-tcp-port { 1777 type inet:port-number; 1778 description "Server TCP port"; 1779 } 1780 leaf server-ctrl-connection-state { 1781 type server-ctrl-connection-state; 1782 description "Server control connection state"; 1783 } 1784 leaf dscp { 1785 type inet:dscp; 1786 description "The DSCP value used in the IP header of the 1787 TCP control packets sent by the Server for this control 1788 connection. This will usually be the same value as is 1789 configured for twamp-server:dscp under the twamp-server. 1790 However, in the event that the user re-configures 1791 twamp-server:dscp after this control connection is already 1792 in progress, this read-only value will show the actual 1793 dscp value in use by this control connection."; 1794 } 1795 leaf selected-mode { 1796 type mode; 1797 description "The mode that was chosen for this control 1798 connection as set in the Mode field of the 1799 Set-Up-Response message."; 1800 } 1801 leaf key-id { 1802 type string { 1803 length "1..80"; 1804 } 1805 description "The key-id value that is in use by this 1806 control connection."; 1807 } 1808 leaf count { 1809 type uint32 { 1810 range 1024..4294967295; 1811 } 1812 description "The count value that is in use by this control 1813 connection. This will usually be the same value as is 1814 configured under twamp-server. However, in the event that 1815 the user re-configured twamp-server:count after this 1816 control connection is already in progress, this read-only 1817 value will show the different count that is in use for 1818 this control connection."; 1819 } 1820 leaf max-count { 1821 type uint32 { 1822 range 1024..4294967295; 1823 } 1824 description "The max-count value that is in use by this 1825 control connection. This will usually be the same value 1826 as is configured under twamp-server. However, in the 1827 event that the user re-configured twamp-server:max-count 1828 after this control connection is already in progress, 1829 this read-only value will show the different max-count 1830 that is in use for this control connection."; 1831 } 1832 leaf salt{ 1833 type binary { 1834 length "16"; 1835 } 1836 description "Salt MUST be generated pseudo-randomly"; 1837 } 1838 leaf server-iv { 1839 type binary { 1840 length "16"; 1841 } 1842 description "16 octets, Server-IV is generated randomly 1843 by the Control-Client."; 1844 } 1845 leaf challenge { 1846 type binary { 1847 length "16"; 1848 } 1849 description "Challenge is a random sequence of octets 1850 generated by the Server"; 1852 } 1853 } 1854 } 1856 container twamp-session-sender{ 1857 if-feature session-sender; 1858 presence "twamp-session-sender"; 1859 description "Twamp session sender container"; 1860 leaf session-sender-admin-state { 1861 type boolean; 1862 mandatory "true"; 1863 description "Indicates whether this device is allowed to run 1864 TWAMP to initiate test sessions"; 1865 } 1866 list twamp-sender-test-session{ 1867 key "test-session-name"; 1868 description "Twamp sender test sessions"; 1869 leaf test-session-name { 1870 type string; 1871 description "A unique name for this test session to be 1872 used as a key for this test session by the Session-Sender 1873 logical entity."; 1874 } 1875 leaf ctrl-connection-name { 1876 type string; 1877 config "false"; 1878 description "The name of the parent control connection 1879 that is responsible for negotiating this test session."; 1880 } 1881 leaf fill-mode { 1882 type fill-mode; 1883 default zero; 1884 description "Indicates whether the padding added to the 1885 UDP test packets will contain pseudo-random numbers, or 1886 whether it should consist of all zeroes."; 1887 } 1888 leaf number-of-packets { 1889 type uint32; 1890 description "The overall number of UDP test packets to be 1891 transmitted by the sender for this test session."; 1892 } 1893 choice packet-distribution { 1894 description "Packet distributions, poisson or periodic"; 1895 case periodic { 1896 leaf periodic-interval { 1897 type uint32; 1898 description "Periodic interval"; 1899 } 1900 leaf periodic-interval-units { 1901 type units; 1902 description "Periodic interval units"; 1903 } 1904 } 1905 case poisson { 1906 leaf lambda{ 1907 type uint32; 1908 description "The average rate of 1909 packet transmission."; 1910 } 1911 leaf lambda-units{ 1912 type uint32; 1913 description "Lambda units."; 1914 } 1915 leaf max-interval{ 1916 type uint32; 1917 description "maximum time between packet 1918 transmissions."; 1919 } 1920 leaf truncation-point-units{ 1921 type units; 1922 description "Truncation point units"; 1923 } 1924 } 1925 } 1926 leaf sender-session-state { 1927 type sender-session-state; 1928 config "false"; 1929 description "Sender session state."; 1930 } 1931 uses maintenance-statistics; 1932 } 1933 } 1935 container twamp-session-reflector { 1936 if-feature session-reflector; 1937 presence "twamp-session-reflector"; 1938 description "Twamp session reflector container"; 1939 leaf session-reflector-admin-state { 1940 type boolean; 1941 mandatory "true"; 1942 description "Indicates whether this device is allowed to run 1943 TWAMP to respond to test sessions"; 1944 } 1945 leaf refwait { 1946 type uint32 { 1947 range 1..604800; 1949 } 1950 default 900; 1951 description "REFWAIT (TWAMP test session timeout), 1952 the default value is 900"; 1953 } 1955 list twamp-reflector-test-session { 1956 key "sender-ip sender-udp-port reflector-ip 1957 reflector-udp-port"; 1958 config "false"; 1959 description "Twamp reflector test sessions"; 1960 leaf sid{ 1961 type string; 1962 description "An auto-allocated identifier for this test 1963 session, that is unique within the context of this 1964 Server/Session-Reflector device only. "; 1965 } 1966 leaf sender-ip { 1967 type inet:ip-address; 1968 description "Sender IP address."; 1969 } 1970 leaf sender-udp-port { 1971 type dynamic-port-number; 1972 description "Sender UDP port."; 1973 } 1974 leaf reflector-ip { 1975 type inet:ip-address; 1976 description "Reflector IP address."; 1977 } 1978 leaf reflector-udp-port { 1979 type dynamic-port-number; 1980 description "Reflector UDP port."; 1981 } 1982 leaf parent-connection-client-ip { 1983 type inet:ip-address; 1984 description "Parent connction client IP address."; 1985 } 1986 leaf parent-connection-client-tcp-port { 1987 type inet:port-number; 1988 description "Parent connection client TCP port."; 1989 } 1990 leaf parent-connection-server-ip { 1991 type inet:ip-address; 1992 description "Parent connection server IP address."; 1993 } 1994 leaf parent-connection-server-tcp-port { 1995 type inet:port-number; 1996 description "Parent connection server TCP port"; 1998 } 1999 leaf dscp { 2000 type inet:dscp; 2001 description "The DSCP value present in the IP header of 2002 TWAMP UDP test packets belonging to this test session."; 2003 } 2004 uses maintenance-statistics; 2005 } 2006 } 2007 } 2008 } 2010 2012 6. Data Model Examples 2014 This section presents a simple but complete example of configuring 2015 all four entities in Figure 1, based on the YANG module specified in 2016 Section 5. The example is illustrative in nature, but aims to be 2017 self-contained, i.e. were it to be executed in a real TWAMP 2018 implementation it would lead to a correctly configured test session. 2019 A more elaborated example, which also includes authentication 2020 parameters, is provided in Appendix A. 2022 6.1. Control-Client 2024 The following configuration example shows a Control-Client with 2025 client-admin-state enabled. In a real implementation following 2026 Figure 2 this would permit the initiation of TWAMP-Control 2027 connections and TWAMP-Test sessions. 2029 2030 2031 2032 2033 true 2034 2035 2036 2038 The following configuration example shows a Control-Client with two 2039 instances of twamp-client-ctrl-connection, one called "RouterA" and 2040 another called "RouterB". Each TWAMP-Control connection is to a 2041 different Server. The control connection named "RouterA" has two 2042 test session requests. The TWAMP-Control connection named "RouterB" 2043 has no TWAMP-Test session requests. 2045 2046 2047 2048 2049 true 2050 2051 RouterA 2052 203.0.113.1 2053 203.0.113.2 2054 2055 Test1 2056 10.1.1.1 2057 50000 2058 10.1.1.2 2059 500001 2060 0 2061 2062 2063 Test2 2064 203.0.113.1 2065 4001 2066 203.0.113.2 2067 50001 2068 0 2069 2070 2071 2072 RouterB 2073 203.0.113.1 2074 203.0.113.3 2075 2076 2077 2078 2080 6.2. Server 2082 This configuration example shows a Server with server-admin-state 2083 enabled, which permits a device following Figure 2 to respond to 2084 TWAMP-Control connections and TWAMP-Test sessions. 2086 2087 2088 2089 2090 true 2091 2092 2093 2095 The following example presents a Server with the TWAMP-Control 2096 connection corresponding to the control connection name (ctrl- 2097 connection-name) "RouterA" presented in Section 6.1. 2099 2100 2101 2102 2103 true 2104 2105 203.0.113.1 2106 16341 2107 203.0.113.2 2108 862 2109 2110 active 2111 2112 2113 2114 2115 2117 6.3. Session-Sender 2119 The following configuration example shows a Session-Sender with the 2120 two TWAMP-Test sessions presented in Section 6.1. 2122 2123 2124 2125 2126 true 2127 2128 Test1 2129 RouterA 2130 900 2131 1 2132 seconds 2133 setup 2134 2135 2136 Test2 2137 2138 RouterA 2139 2140 900 2141 1 2142 1 2143 2 2144 seconds 2145 setup 2146 2147 2148 2149 2151 6.4. Session-Reflector 2153 The following example shows the two Session-Reflector TWAMP-Test 2154 sessions corresponding to the test sessions presented in Section 6.3. 2156 2157 2158 2159 2160 2161 true 2162 2163 2164 10.1.1.1 2165 4000 2166 10.1.1.2 2167 50001 2168 1232 2169 2170 203.0.113.1 2171 2172 2173 16341 2174 2175 2176 203.0.113.2 2177 2178 2179 862 2180 2181 2 2182 2 2183 1 2184 1 2185 2186 2187 203.0.113.1 2188 50000 2189 192.68.0.2 2190 50001 2191 178943 2192 2193 203.0.113.1 2194 2195 2196 16341 2197 2198 2199 203.0.113.2 2200 2201 2202 862 2203 2204 21 2205 21 2206 20 2207 20 2208 2209 2210 2211 2213 7. Security Considerations 2215 TBD 2217 8. IANA Considerations 2219 This document registers a URI in the IETF XML registry [RFC3688]. 2220 Following the format in [RFC3688], the following registration is 2221 requested to be made. 2223 URI: urn:ietf:params:xml:ns:yang:ietf-twamp 2225 Registrant Contact: The IPPM WG of the IETF. 2227 XML: N/A, the requested URI is an XML namespace. 2229 This document registers a YANG module in the YANG Module Names 2230 registry [RFC6020]. 2232 name: ietf-twamp 2234 namespace: urn:ietf:params:xml:ns:yang:ietf-twamp 2236 prefix: twamp 2238 reference: RFC XXXX 2240 9. Acknowledgements 2242 We thank Gregory Mirsky, Kevin D'Souza, and Robert Sherman for their 2243 thorough and constructive reviews, comments and text suggestions. 2245 Haoxing Shen contributed to the definition of the YANG module in 2246 Section 5. 2248 Ladislav Lhokta did thorough review of the YANG module and the 2249 examples. 2251 Kostas Pentikousis is partially supported by FP7 UNIFY 2252 (http://fp7-unify.eu), a research project partially funded by the 2253 European Community under the Seventh Framework Program (grant 2254 agreement no. 619609). The views expressed here are those of the 2255 authors only. The European Commission is not liable for any use that 2256 may be made of the information in this document. 2258 10. References 2260 10.1. Normative References 2262 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 2263 Requirement Levels", BCP 14, RFC 2119, 2264 DOI 10.17487/RFC2119, March 1997, 2265 . 2267 [RFC3432] Raisanen, V., Grotefeld, G., and A. Morton, "Network 2268 performance measurement with periodic streams", RFC 3432, 2269 DOI 10.17487/RFC3432, November 2002, 2270 . 2272 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 2273 DOI 10.17487/RFC3688, January 2004, 2274 . 2276 [RFC4656] Shalunov, S., Teitelbaum, B., Karp, A., Boote, J., and M. 2277 Zekauskas, "A One-way Active Measurement Protocol 2278 (OWAMP)", RFC 4656, DOI 10.17487/RFC4656, September 2006, 2279 . 2281 [RFC5357] Hedayat, K., Krzanowski, R., Morton, A., Yum, K., and J. 2282 Babiarz, "A Two-Way Active Measurement Protocol (TWAMP)", 2283 RFC 5357, DOI 10.17487/RFC5357, October 2008, 2284 . 2286 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 2287 the Network Configuration Protocol (NETCONF)", RFC 6020, 2288 DOI 10.17487/RFC6020, October 2010, 2289 . 2291 [RFC6038] Morton, A. and L. Ciavattone, "Two-Way Active Measurement 2292 Protocol (TWAMP) Reflect Octets and Symmetrical Size 2293 Features", RFC 6038, DOI 10.17487/RFC6038, October 2010, 2294 . 2296 10.2. Informative References 2298 [I-D.ietf-ippm-metric-registry] 2299 Bagnulo, M., Claise, B., Eardley, P., Morton, A., and A. 2300 Akhter, "Registry for Performance Metrics", draft-ietf- 2301 ippm-metric-registry-06 (work in progress), March 2016. 2303 [I-D.ietf-netconf-restconf] 2304 Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 2305 Protocol", draft-ietf-netconf-restconf-10 (work in 2306 progress), March 2016. 2308 [I-D.unify-nfvrg-challenges] 2309 Szabo, R., Csaszar, A., Pentikousis, K., Kind, M., Daino, 2310 D., Qiang, Z., and H. Woesner, "Unifying Carrier and Cloud 2311 Networks: Problem Statement and Challenges", draft-unify- 2312 nfvrg-challenges-03 (work in progress), January 2016. 2314 [I-D.unify-nfvrg-devops] 2315 Meirosu, C., Manzalini, A., Steinert, R., Marchetto, G., 2316 Papafili, I., Pentikousis, K., and S. Wright, "DevOps for 2317 Software-Defined Telecom Infrastructures", draft-unify- 2318 nfvrg-devops-04 (work in progress), March 2016. 2320 [NSC] John, W., Pentikousis, K., et al., "Research directions in 2321 network service chaining", Proc. SDN for Future Networks 2322 and Services (SDN4FNS), Trento, Italy IEEE, November 2013. 2324 [RFC2898] Kaliski, B., "PKCS #5: Password-Based Cryptography 2325 Specification Version 2.0", RFC 2898, 2326 DOI 10.17487/RFC2898, September 2000, 2327 . 2329 [RFC4086] Eastlake 3rd, D., Schiller, J., and S. Crocker, 2330 "Randomness Requirements for Security", BCP 106, RFC 4086, 2331 DOI 10.17487/RFC4086, June 2005, 2332 . 2334 [RFC5618] Morton, A. and K. Hedayat, "Mixed Security Mode for the 2335 Two-Way Active Measurement Protocol (TWAMP)", RFC 5618, 2336 DOI 10.17487/RFC5618, August 2009, 2337 . 2339 [RFC5938] Morton, A. and M. Chiba, "Individual Session Control 2340 Feature for the Two-Way Active Measurement Protocol 2341 (TWAMP)", RFC 5938, DOI 10.17487/RFC5938, August 2010, 2342 . 2344 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 2345 and A. Bierman, Ed., "Network Configuration Protocol 2346 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 2347 . 2349 [RFC7426] Haleplidis, E., Ed., Pentikousis, K., Ed., Denazis, S., 2350 Hadi Salim, J., Meyer, D., and O. Koufopavlou, "Software- 2351 Defined Networking (SDN): Layers and Architecture 2352 Terminology", RFC 7426, DOI 10.17487/RFC7426, January 2353 2015, . 2355 Appendix A. Detailed Data Model Examples 2357 This appendix extends the example presented in Section 6 by 2358 configuring more fields such as authentication parameters, dscp 2359 values and so on. 2361 A.1. Control-Client 2363 2364 2365 2366 2367 true 2368 2369 0 2370 authenticated 2371 2372 2373 1 2374 unauthenticated 2375 2376 2377 KeyClient1ToRouterA 2378 secret1 2379 2380 2381 KeyForRouterB 2382 secret2 2383 2384 2385 RouterA 2386 203.0.113.1 2387 203.0.113.2 2388 32 2389 KeyClient1ToRouterA 2390 2391 Test1 2392 10.1.1.1 2393 4000 2394 10.1.1.2 2395 5000 2396 64 2397 0 2398 ok 2399 1232 2400 2401 2402 Test2 2403 203.0.113.1 2404 4001 2405 203.0.113.2 2406 5001 2407 128 2408 0 2409 ok 2410 178943 2411 2412 2413 2414 2415 2417 A.2. Server 2418 2419 2420 2421 2422 true 2423 1800 2424 32 2425 authenticated unauthenticated 2426 1024 2427 2428 KeyClient1ToRouterA 2429 secret1 2430 2431 2432 KeyClient10ToRouterA 2433 secret10 2434 2435 2436 203.0.113.1 2437 16341 2438 203.0.113.2 2439 862 2440 2441 active 2442 2443 32 2444 unauthenticated 2445 KeyClient1ToRouterA 2446 1024 2447 2448 2449 2450 2452 A.3. Session-Sender 2453 2454 2455 2456 2457 true 2458 2459 Test1 2460 RouterA 2461 zero 2462 900 2463 1 2464 seconds 2465 setup 2466 2 2467 2 2468 1 2469 1 2470 2471 2472 Test2 2473 2474 RouterA 2475 2476 random 2477 900 2478 1 2479 1 2480 2 2481 seconds 2482 setup 2483 21 2484 21 2485 20 2486 20 2487 2488 2489 2490 2492 A.4. Session-Reflector 2494 2495 2496 2497 2498 2499 true 2500 2501 2502 10.1.1.1 2503 4000 2504 10.1.1.2 2505 5000 2506 1232 2507 2508 203.0.113.1 2509 2510 2511 16341 2512 2513 2514 203.0.113.2 2515 2516 2517 862 2518 2519 32 2520 2 2521 2 2522 1 2523 1 2524 2525 2526 203.0.113.1 2527 4001 2528 192.68.0.2 2529 5001 2530 178943 2531 2532 203.0.113.1 2533 2534 2535 16341 2536 2537 2538 203.0.113.2 2539 2540 2541 862 2542 2543 32 2544 21 2545 21 2546 20 2547 20 2548 2550 2551 2552 2554 Appendix B. TWAMP Operational Commands 2556 This document is targeted at configuration details for TWAMP. 2557 Operational actions such as how TWAMP sessions are started/stopped, 2558 how results are retrieved, or stored results are cleared, and so on, 2559 are not addressed by this configuration model and are out of scope of 2560 this document. 2562 TWAMP operational commands could be performed programmatically or 2563 manually, e.g. using a command-line interface (CLI). With respect to 2564 programmability, YANG can be used to define NETCONF Remote Procedure 2565 Calls (RPC), therefore it would be possible to define RPC operations 2566 for actions such as starting or stopping control or test sessions or 2567 groups of sessions; retrieving results; clearing stored results, and 2568 so on. 2570 However, [RFC5357] does not attempt to describe such operational 2571 actions, and it is likely that different TWAMP implementations could 2572 support different sets of operational commands, with different 2573 restrictions. Therefore, this document considers it the 2574 responsibility of the individual implementation to define its 2575 corresponding TWAMP operational commands data model. 2577 Authors' Addresses 2579 Ruth Civil 2580 Ciena Corporation 2581 307 Legget Drive 2582 Kanata, ON K2K 3C8 2583 Canada 2585 Email: gcivil@ciena.com 2586 URI: www.ciena.com 2587 Al Morton 2588 AT&T Labs 2589 200 Laurel Avenue South 2590 Middletown,, NJ 07748 2591 USA 2593 Phone: +1 732 420 1571 2594 Fax: +1 732 368 1192 2595 Email: acmorton@att.com 2596 URI: http://home.comcast.net/~acmacm/ 2598 Lianshu Zheng 2599 Huawei Technologies 2600 China 2602 Email: vero.zheng@huawei.com 2604 Reshad Rahman 2605 Cisco Systems 2606 2000 Innovation Drive 2607 Kanata, ON K2K 3E8 2608 Canada 2610 Email: rrahman@cisco.com 2612 Mahesh Jethanandani 2613 Cisco Systems 2614 3700 Cisco Way 2615 San Jose, CA 95134 2616 USA 2618 Email: mjethanandani@gmail.com 2620 Kostas Pentikousis (editor) 2621 Berlin 2622 Germany 2624 Email: pentikousis@gmail.com