draft-ietf-ippm-twamp-yang-02.txt | draft-ietf-ippm-twamp-yang-03.txt | |||
---|---|---|---|---|
IPPM WG R. Civil | IPPM WG R. Civil | |||
Internet-Draft Ciena Corporation | Internet-Draft Ciena Corporation | |||
Intended status: Standards Track A. Morton | Intended status: Standards Track A. Morton | |||
Expires: June 26, 2017 AT&T Labs | Expires: August 26, 2017 AT&T Labs | |||
R. Rahman | R. Rahman | |||
M. Jethanandani | M. Jethanandani | |||
Cisco Systems | Cisco Systems | |||
K. Pentikousis, Ed. | K. Pentikousis, Ed. | |||
Travelping | Travelping | |||
L. Zheng | February 22, 2017 | |||
Huawei Technologies | ||||
December 23, 2016 | ||||
Two-Way Active Measurement Protocol (TWAMP) Data Model | Two-Way Active Measurement Protocol (TWAMP) Data Model | |||
draft-ietf-ippm-twamp-yang-02 | draft-ietf-ippm-twamp-yang-03 | |||
Abstract | Abstract | |||
This document specifies a data model for client and server | This document specifies a data model for client and server | |||
implementations of the Two-Way Active Measurement Protocol (TWAMP). | implementations of the Two-Way Active Measurement Protocol (TWAMP). | |||
We define the TWAMP data model through Unified Modeling Language | We define the TWAMP data model through Unified Modeling Language | |||
(UML) class diagrams and formally specify it using YANG. | (UML) class diagrams and formally specify it using YANG. | |||
Status of This Memo | Status of This Memo | |||
skipping to change at page 1, line 41 ¶ | skipping to change at page 1, line 39 ¶ | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on June 26, 2017. | This Internet-Draft will expire on August 26, 2017. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2016 IETF Trust and the persons identified as the | Copyright (c) 2017 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
skipping to change at page 2, line 32 ¶ | skipping to change at page 2, line 30 ¶ | |||
3.3. Session-Sender . . . . . . . . . . . . . . . . . . . . . 7 | 3.3. Session-Sender . . . . . . . . . . . . . . . . . . . . . 7 | |||
3.4. Session-Reflector . . . . . . . . . . . . . . . . . . . . 7 | 3.4. Session-Reflector . . . . . . . . . . . . . . . . . . . . 7 | |||
4. Data Model Parameters . . . . . . . . . . . . . . . . . . . . 8 | 4. Data Model Parameters . . . . . . . . . . . . . . . . . . . . 8 | |||
4.1. Control-Client . . . . . . . . . . . . . . . . . . . . . 8 | 4.1. Control-Client . . . . . . . . . . . . . . . . . . . . . 8 | |||
4.2. Server . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 4.2. Server . . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
4.3. Session-Sender . . . . . . . . . . . . . . . . . . . . . 12 | 4.3. Session-Sender . . . . . . . . . . . . . . . . . . . . . 12 | |||
4.4. Session-Reflector . . . . . . . . . . . . . . . . . . . . 13 | 4.4. Session-Reflector . . . . . . . . . . . . . . . . . . . . 13 | |||
5. Data Model . . . . . . . . . . . . . . . . . . . . . . . . . 15 | 5. Data Model . . . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
5.1. YANG Tree Diagram . . . . . . . . . . . . . . . . . . . . 15 | 5.1. YANG Tree Diagram . . . . . . . . . . . . . . . . . . . . 15 | |||
5.2. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 18 | 5.2. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 18 | |||
6. Data Model Examples . . . . . . . . . . . . . . . . . . . . . 44 | 6. Data Model Examples . . . . . . . . . . . . . . . . . . . . . 45 | |||
6.1. Control-Client . . . . . . . . . . . . . . . . . . . . . 44 | 6.1. Control-Client . . . . . . . . . . . . . . . . . . . . . 45 | |||
6.2. Server . . . . . . . . . . . . . . . . . . . . . . . . . 46 | 6.2. Server . . . . . . . . . . . . . . . . . . . . . . . . . 47 | |||
6.3. Session-Sender . . . . . . . . . . . . . . . . . . . . . 47 | 6.3. Session-Sender . . . . . . . . . . . . . . . . . . . . . 48 | |||
6.4. Session-Reflector . . . . . . . . . . . . . . . . . . . . 48 | 6.4. Session-Reflector . . . . . . . . . . . . . . . . . . . . 49 | |||
7. Security Considerations . . . . . . . . . . . . . . . . . . . 51 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 52 | |||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 51 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 53 | |||
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 52 | 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 53 | |||
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 52 | 10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 53 | |||
10.1. Normative References . . . . . . . . . . . . . . . . . . 52 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 54 | |||
10.2. Informative References . . . . . . . . . . . . . . . . . 53 | 11.1. Normative References . . . . . . . . . . . . . . . . . . 54 | |||
Appendix A. Detailed Data Model Examples . . . . . . . . . . . . 54 | 11.2. Informative References . . . . . . . . . . . . . . . . . 55 | |||
A.1. Control-Client . . . . . . . . . . . . . . . . . . . . . 54 | Appendix A. Detailed Data Model Examples . . . . . . . . . . . . 56 | |||
A.2. Server . . . . . . . . . . . . . . . . . . . . . . . . . 57 | A.1. Control-Client . . . . . . . . . . . . . . . . . . . . . 56 | |||
A.3. Session-Sender . . . . . . . . . . . . . . . . . . . . . 58 | A.2. Server . . . . . . . . . . . . . . . . . . . . . . . . . 58 | |||
A.4. Session-Reflector . . . . . . . . . . . . . . . . . . . . 59 | A.3. Session-Sender . . . . . . . . . . . . . . . . . . . . . 60 | |||
Appendix B. TWAMP Operational Commands . . . . . . . . . . . . . 62 | A.4. Session-Reflector . . . . . . . . . . . . . . . . . . . . 61 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 62 | Appendix B. TWAMP Operational Commands . . . . . . . . . . . . . 63 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 63 | ||||
1. Introduction | 1. Introduction | |||
The Two-Way Active Measurement Protocol (TWAMP) [RFC5357] is used to | The Two-Way Active Measurement Protocol (TWAMP) [RFC5357] is used to | |||
measure network performance parameters such as latency, bandwidth, | measure network performance parameters such as latency, bandwidth, | |||
and packet loss by sending probe packets and measuring their | and packet loss by sending probe packets and measuring their | |||
experience in the network. To date, TWAMP implementations do not | experience in the network. To date, TWAMP implementations do not | |||
come with a standard management framework and, as such, configuration | come with a standard management framework and, as such, configuration | |||
depends on proprietary mechanisms developed by the corresponding | depends on proprietary mechanisms developed by the corresponding | |||
TWAMP vendor. This document addresses this gap by formally | TWAMP vendor. This document addresses this gap by formally | |||
skipping to change at page 3, line 27 ¶ | skipping to change at page 3, line 27 ¶ | |||
In current TWAMP deployments the lack of a standardized data model | In current TWAMP deployments the lack of a standardized data model | |||
limits the flexibility to dynamically instantiate TWAMP-based | limits the flexibility to dynamically instantiate TWAMP-based | |||
measurements across equipment from different vendors. In large, | measurements across equipment from different vendors. In large, | |||
virtualized, and dynamically instantiated infrastructures where | virtualized, and dynamically instantiated infrastructures where | |||
network functions are placed according to orchestration algorithms as | network functions are placed according to orchestration algorithms as | |||
discussed in [I-D.unify-nfvrg-challenges][I-D.unify-nfvrg-devops], | discussed in [I-D.unify-nfvrg-challenges][I-D.unify-nfvrg-devops], | |||
proprietary mechanisms for managing TWAMP measurements pose severe | proprietary mechanisms for managing TWAMP measurements pose severe | |||
limitations with respect to programmability. | limitations with respect to programmability. | |||
Two major trends call for revisiting the standardization on TWAMP | Two major trends call for standardizing TWAMP management aspects. | |||
management aspects. First, we expect that in the coming years large- | First, we expect that in the coming years large-scale and multi- | |||
scale and multi-vendor TWAMP deployments will become the norm. From | vendor TWAMP deployments will become the norm. From an operations | |||
an operations perspective, dealing with several vendor-specific TWAMP | perspective, dealing with several vendor-specific TWAMP configuration | |||
configuration mechanisms is simply unsustainable in this context. | mechanisms is simply unsustainable in this context. Second, the | |||
Second, the increasingly software-defined and virtualized nature of | increasingly software-defined and virtualized nature of network | |||
network infrastructures, based on dynamic service chains [NSC] and | infrastructures, based on dynamic service chains [NSC] and | |||
programmable control and management planes [RFC7426] requires a well- | programmable control and management planes [RFC7426] requires a well- | |||
defined data model for TWAMP implementations. This document defines | defined data model for TWAMP implementations. This document defines | |||
such a TWAMP data model and specifies it formally using the YANG data | such a TWAMP data model and specifies it formally using the YANG data | |||
modeling language [RFC6020]. | modeling language [RFC6020]. | |||
1.2. Terminology | 1.2. Terminology | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
skipping to change at page 5, line 22 ¶ | skipping to change at page 5, line 22 ¶ | |||
| Config server | | Config server | | | Config server | | Config server | | |||
| [Fig. 3, 5] | | [Fig. 4, 6] | | | [Fig. 3, 5] | | [Fig. 4, 6] | | |||
+-------------------+ +-------------------+ | +-------------------+ +-------------------+ | |||
| Control-Client | <-- TWAMP-Control --> | Server | | | Control-Client | <-- TWAMP-Control --> | Server | | |||
| | | | | | | | | | |||
| Session-Sender | <-- TWAMP-Test --> | Session-Reflector | | | Session-Sender | <-- TWAMP-Test --> | Session-Reflector | | |||
+-------------------+ +-------------------+ | +-------------------+ +-------------------+ | |||
Figure 2: Simplified TWAMP model and protocols | Figure 2: Simplified TWAMP model and protocols | |||
We note that the data model defined in this document is orthogonal to | The data model defined in this document is orthogonal to the specific | |||
the specific protocol used between the Config client and Config | protocol used between the Config client and Config server to | |||
server to communicate the TWAMP configuration parameters. | communicate the TWAMP configuration parameters. | |||
Operational actions such as how TWAMP-Test sessions are started and | Operational actions such as how TWAMP-Test sessions are started and | |||
stopped, how perfmormance measurement results are retrieved, or how | stopped, how performance measurement results are retrieved, or how | |||
stored results are cleared, and so on, are not addressed by the | stored results are cleared, and so on, are not addressed by the | |||
configuration model defined in this docuemnt. As noted above, such | configuration model defined in this document. As noted above, such | |||
operational actions are not part of the TWAMP specification [RFC5357] | operational actions are not part of the TWAMP specification [RFC5357] | |||
and hence are out of scope of this document. See also Appendix B. | and hence are out of scope of this document. See also Appendix B. | |||
3. Data Model Overview | 3. Data Model Overview | |||
The TWAMP data model includes four categories of configuration items. | The TWAMP data model includes four categories of configuration items. | |||
Global configuration items relate to parameters that are set on a per | First, global configuration items relate to parameters that are set | |||
device level. For example, the administrative status of the device | on a per device level. For example, the administrative status of the | |||
with respect to whether it allows TWAMP sessions and, if so, in what | device with respect to whether it allows TWAMP sessions and, if so, | |||
capacity (e.g. Control-Client, Server or both), are typical | in what capacity (e.g. Control-Client, Server or both), is a typical | |||
instances of global configuration items. | instance of a global configuration item. | |||
A second category includes attributes that can be configured on a per | A second category includes attributes that can be configured on a per | |||
TWAMP-Control connection basis, such as the Server IP address. | TWAMP-Control connection basis, such as the Server IP address. | |||
A third category includes attributes related to per TWAMP-Test | A third category includes attributes related to per TWAMP-Test | |||
session attributes, for instance setting different values in the | session attributes, for instance setting different values in the | |||
Differentiated Services Code Point (DSCP) field. | Differentiated Services Code Point (DSCP) field. | |||
Finally, the data model includes attributes that relate to the | Finally, the data model includes attributes that relate to the | |||
operational state of the TWAMP implementation. | operational state of the TWAMP implementation. | |||
skipping to change at page 6, line 31 ¶ | skipping to change at page 6, line 31 ¶ | |||
for programmability reasons because at the time of creation of a | for programmability reasons because at the time of creation of a | |||
TWAMP-Control connection not all IP and TCP port number | TWAMP-Control connection not all IP and TCP port number | |||
information needed to uniquely identify the connection is | information needed to uniquely identify the connection is | |||
available. | available. | |||
o The IP address of the interface the Control-Client will use for | o The IP address of the interface the Control-Client will use for | |||
connections. | connections. | |||
o The IP address of the remote TWAMP Server. | o The IP address of the remote TWAMP Server. | |||
o Authentication and Encryption attributes such as KeyID, Token and | o Authentication and encryption attributes such as KeyID, Token and | |||
the Client Initialization Vector (Client-IV); see also the last | the Client Initialization Vector (Client-IV); see also the last | |||
paragraph of Section 6 in [RFC4656] and [RFC4086]. | paragraph of Section 6 in [RFC4656] and [RFC4086]. | |||
Each TWAMP-Control connection, in turn, is associated with zero or | Each TWAMP-Control connection, in turn, is associated with zero or | |||
more TWAMP-Test sessions. For each test session we note the | more TWAMP-Test sessions. For each test session we note the | |||
following configuration items: | following configuration items: | |||
o The test session name that uniquely identifies a particular test | o The test session name that uniquely identifies a particular test | |||
session at the Control-Client and Session-Sender. Similarly to | session at the Control-Client and Session-Sender. Similarly to | |||
the control connections above, this unique test session name is | the control connections above, this unique test session name is | |||
skipping to change at page 7, line 34 ¶ | skipping to change at page 7, line 34 ¶ | |||
A TWAMP Session-Sender has an administrative status field set at the | A TWAMP Session-Sender has an administrative status field set at the | |||
device level that indicates whether the node is enabled to function | device level that indicates whether the node is enabled to function | |||
as such. | as such. | |||
There is one Session-Sender instance for each TWAMP-Test session that | There is one Session-Sender instance for each TWAMP-Test session that | |||
is initiated from the sending device. Primary configuration fields | is initiated from the sending device. Primary configuration fields | |||
include: | include: | |||
o The test session name that MUST be identical with the | o The test session name that MUST be identical with the | |||
corresponding test session name on the TWAMP Control-Client | corresponding test session name on the TWAMP Control-Client | |||
(Section 3.1) | (Section 3.1). | |||
o The control connection name, which along with the test session | o The control connection name, which along with the test session | |||
name uniquely identify the TWAMP Session-Sender instance | name uniquely identify the TWAMP Session-Sender instance. | |||
o Information pertaining to the test packet stream, such as, for | o Information pertaining to the test packet stream, such as, for | |||
example, the number of test packets and the packet distribution to | example, the number of test packets and the packet distribution to | |||
be employed; see also [RFC3432]. | be employed; see also [RFC3432]. | |||
3.4. Session-Reflector | 3.4. Session-Reflector | |||
Each TWAMP Session-Reflector has an administrative status field set | Each TWAMP Session-Reflector has an administrative status field set | |||
at the device level to indicate whether the node is enabled to | at the device level to indicate whether the node is enabled to | |||
function as such. | function as such. | |||
Each Session-Reflector is associated with zero or more TWAMP-Test | Each Session-Reflector is associated with zero or more TWAMP-Test | |||
sessions. For each test session, the REFWAIT parameter (Section 4.2 | sessions. For each test session, the REFWAIT timeout parameter which | |||
of [RFC5357] can be configured. | determines whether to discontinue the session if no packets have been | |||
received ([RFC5357], Section 4.2) can be configured. | ||||
Read-only access to other data model parameters, such as the Sender | Read-only access to other data model parameters, such as the Sender | |||
IP address is foreseen. Each test session can be uniquely identified | IP address is foreseen. Each test session can be uniquely identified | |||
by the 4-tuple mentioned in Section 3.2. | by the 4-tuple mentioned in Section 3.2. | |||
4. Data Model Parameters | 4. Data Model Parameters | |||
This section defines the TWAMP data model using UML and introduces | This section defines the TWAMP data model using UML and introduces | |||
selected parameters associated with the four TWAMP logical entities. | selected parameters associated with the four TWAMP logical entities. | |||
The complete TWAMP data model specification is provided in the YANG | The complete TWAMP data model specification is provided in the YANG | |||
skipping to change at page 9, line 46 ¶ | skipping to change at page 9, line 46 ¶ | |||
| pm-reg-list |------<>| repeat-interval | | | pm-reg-list |------<>| repeat-interval | | |||
+-------------+ | state {ro} | | +-------------+ | state {ro} | | |||
| pm-index | | sid {ro} | | | pm-index | | sid {ro} | | |||
+-------------+ +----------------------+ | +-------------+ +----------------------+ | |||
Figure 3: TWAMP Control-Client UML class diagram | Figure 3: TWAMP Control-Client UML class diagram | |||
The client container holds a list (mode-preference-chain) which | The client container holds a list (mode-preference-chain) which | |||
specifies the Mode values according to their preferred order of use | specifies the Mode values according to their preferred order of use | |||
by the operator of this Control-Client, including the authentication | by the operator of this Control-Client, including the authentication | |||
and encryption Modes. Specifically, mode-preference-chain lists each | and encryption Modes. Specifically, mode-preference-chain lists the | |||
priority (expressed as a 16-bit unsigned integer, where zero is the | mode and its corresponding priority, expressed as a 16-bit unsigned | |||
highest priority and subsequent values monotonically increasing) with | integer, where zero is the highest priority and subsequent values are | |||
their corresponding mode (expressed as a 32-bit Hexadecimal value). | monotonically increasing. | |||
Depending on the Modes available in the Server Greeting, the Control- | Depending on the Modes available in the Server Greeting, the Control- | |||
Client MUST choose the highest priority Mode from the configured | Client MUST choose the highest priority Mode from the configured | |||
mode-preference-chain list. | mode-preference-chain list. | |||
Note that the list of preferred Modes may set bit position | Note that the list of preferred Modes may set bit position | |||
combinations when necessary, such as when referring to the extended | combinations when necessary, such as when referring to the extended | |||
TWAMP features in [RFC5618], [RFC5938], [RFC6038], and [RFC7717]. If | TWAMP features in [RFC5618], [RFC5938], [RFC6038], and [RFC7717]. If | |||
the Control-Client cannot determine an acceptable Mode, it MUST | the Control-Client cannot determine an acceptable Mode, it MUST | |||
respond with zero Mode bits set in the Set-up Response message, | respond with zero Mode bits set in the Set-up Response message, | |||
skipping to change at page 10, line 25 ¶ | skipping to change at page 10, line 25 ¶ | |||
In addition, the client container holds a list named key-chain which | In addition, the client container holds a list named key-chain which | |||
relates KeyIDs with the respective secret keys. Both the Server and | relates KeyIDs with the respective secret keys. Both the Server and | |||
the Control-Client use the same mappings from KeyIDs to shared | the Control-Client use the same mappings from KeyIDs to shared | |||
secrets (key-id and secret-key in Figure 3, respectively). The | secrets (key-id and secret-key in Figure 3, respectively). The | |||
Server, being prepared to conduct sessions with more than one | Server, being prepared to conduct sessions with more than one | |||
Control-Client, uses KeyIDs to choose the appropriate secret-key; a | Control-Client, uses KeyIDs to choose the appropriate secret-key; a | |||
Control-Client would typically have different secret keys for | Control-Client would typically have different secret keys for | |||
different Servers. The secret-key is the shared secret, an octet | different Servers. The secret-key is the shared secret, an octet | |||
string of arbitrary length whose interpretation as a text string is | string of arbitrary length whose interpretation as a text string is | |||
unspecified. The key-id and secret-key encoding should follow | unspecified. The key-id and secret-key encoding SHOULD follow | |||
Section 9.4 of [RFC6020]. The derived key length (dkLen in | Section 9.4 of [RFC6020]. The derived key length (dkLen in | |||
[RFC2898]) MUST be 128-bits for the AES Session-key used for | [RFC2898]) MUST be 16 octets for the AES Session-key used for | |||
encryption and a 256-bit HMAC-SHA1 Session-key used for | encryption and 32 octets for the HMAC-SHA1 Session-key used for | |||
authentication (see Section 6.10 of [RFC4656]). | authentication; see also Section 6.10 of [RFC4656]. | |||
Each client container also holds a list of ctrl-connections, where | Each client container also holds a list of control connections, where | |||
each item in the list describes a TWAMP control connection that will | each item in the list describes a TWAMP control connection initiated | |||
be initiated by this Control-Client. There SHALL be one instance of | by this Control-Client. There SHALL be one ctrl-connection per | |||
ctrl-connection per TWAMP-Control (TCP) connection that is to be | TWAMP-Control (TCP) connection that is to be initiated from this | |||
initiated from this device. | device. | |||
In turn, each ctrl-connection holds a list of test-session-request. | In turn, each ctrl-connection holds a list of test-session-request. | |||
test-session-request holds information associated with the Control- | test-session-request holds information associated with the Control- | |||
Client for this test session. This includes information that is | Client for this test session. This includes information associated | |||
associated with the Request-TW-Session/Accept-Session message | with the Request-TW-Session/Accept-Session message exchange (see | |||
exchange (see Section 3.5 of [RFC5357]). | Section 3.5 of [RFC5357]). | |||
There SHALL be one instance of test-session-request for each TWAMP- | There SHALL be one instance of test-session-request for each TWAMP- | |||
Test session that is to be negotiated by this TWAMP-Control | Test session that is to be negotiated by this TWAMP-Control | |||
connection via a Request-TW-Session/Accept-Session exchange. | connection via a Request-TW-Session/Accept-Session exchange. | |||
The Control-Client is also responsible for scheduling TWAMP-Test | The Control-Client is also responsible for scheduling TWAMP-Test | |||
sessions and collecting the respective results, so test-session- | sessions so test-session-request holds information related to these | |||
request holds information related to these actions (e.g. pm-index, | actions (e.g. pm-index, repeat-interval). | |||
repeat-interval). | ||||
4.2. Server | 4.2. Server | |||
The server container (see Figure 4) holds items that are related to | The server container (see Figure 4) holds items that are related to | |||
the configuration of the TWAMP Server logical entity (recall | the configuration of the TWAMP Server logical entity (recall | |||
Figure 1). | Figure 1). | |||
The server container includes an administrative configuration | The server container includes an administrative configuration | |||
parameter (server/admin-state) that indicates whether the device is | parameter (server/admin-state) that indicates whether the device is | |||
allowed to receive TWAMP-Control connections. | allowed to receive TWAMP-Control connections. | |||
A device operating in the Server role cannot configure attributes on | A device operating in the Server role cannot configure attributes on | |||
a per TWAMP-Control connection basis, as it has no foreknowledge of | a per TWAMP-Control connection basis, as it has no foreknowledge of | |||
the incoming TWAMP-Control connections to be received. Consequently, | the incoming TWAMP-Control connections to be received. Consequently, | |||
any parameter that the Server might want to apply to an incoming | any parameter that the Server might want to apply to an incoming | |||
control connection must be configured at the overall Server level and | control connection must be configured at the overall Server level and | |||
are applied to all incoming TWAMP-Control connections. | applied to all incoming TWAMP-Control connections. | |||
+---------------------+ | +---------------------+ | |||
| server | | | server | | |||
+---------------------+ | +---------------------+ | |||
| admin-state | 1..* +------------+ | | admin-state | 1..* +------------+ | |||
| server-tcp-port |<>------| key-chain | | | server-tcp-port |<>------| key-chain | | |||
| servwait | +------------+ | | servwait | +------------+ | |||
| control-packet-dscp | | key-id | | | control-packet-dscp | | key-id | | |||
| count | | secret-key | | | count | | secret-key | | |||
| max-count | +------------+ | | max-count | +------------+ | |||
skipping to change at page 12, line 15 ¶ | skipping to change at page 12, line 15 ¶ | |||
Each server container holds a list named key-chain which relates | Each server container holds a list named key-chain which relates | |||
KeyIDs with the respective secret keys. As mentioned in Section 4.1, | KeyIDs with the respective secret keys. As mentioned in Section 4.1, | |||
both the Server and the Control-Client use the same mappings from | both the Server and the Control-Client use the same mappings from | |||
KeyIDs to shared secrets. The Server, being prepared to conduct | KeyIDs to shared secrets. The Server, being prepared to conduct | |||
sessions with more than one Control-Client, uses KeyIDs to choose the | sessions with more than one Control-Client, uses KeyIDs to choose the | |||
appropriate secret-key; a Control-Client would typically have | appropriate secret-key; a Control-Client would typically have | |||
different secret keys for different Servers. key-id tells the Server | different secret keys for different Servers. key-id tells the Server | |||
which shared-secret the Control-Client wishes to use for | which shared-secret the Control-Client wishes to use for | |||
authentication or encryption. | authentication or encryption. | |||
Each incoming control connection that is active on the Server will be | Each incoming control connection active on the Server is represented | |||
represented by an instance of a ctrl-connection object. There SHALL | by a ctrl-connection. There SHALL be one ctrl-connection per | |||
be one instance of ctrl-connection per incoming TWAMP-Control (TCP) | incoming TWAMP-Control (TCP) connection that is received and active | |||
connection that is received and active on the Server device. | on the Server. Each ctrl-connection can be uniquely identified by | |||
the 4-tuple {client-ip, client-tcp-port, server-ip, server-tcp-port}. | ||||
All items in the ctrl-connection object are read-only. Each instance | All items in the ctrl-connection list are read-only. | |||
of ctrl-connection can be uniquely identified by the 4-tuple {client- | ||||
ip, client-tcp-port, server-ip, server-tcp-port}. | ||||
4.3. Session-Sender | 4.3. Session-Sender | |||
The session-sender container, illustrated in Figure 5, holds items | The session-sender container, illustrated in Figure 5, holds items | |||
that are related to the configuration of the TWAMP Session-Sender | that are related to the configuration of the TWAMP Session-Sender | |||
logical entity. | logical entity. | |||
The session-sender container includes an administrative parameter | The session-sender container includes an administrative parameter | |||
(session-sender/admin-state) that controls whether the device is | (session-sender/admin-state) that controls whether the device is | |||
allowed to initiate TWAMP-Test sessions. | allowed to initiate TWAMP-Test sessions. | |||
skipping to change at page 13, line 29 ¶ | skipping to change at page 13, line 29 ¶ | |||
+---------------------------+ | +---------------------------+ | |||
^ | ^ | |||
V | V | |||
| 1 | | 1 | |||
+---------------------+ | +---------------------+ | |||
| packet-distribution | | | packet-distribution | | |||
+---------------------+ | +---------------------+ | |||
| periodic / poisson | | | periodic / poisson | | |||
+---------------------+ | +---------------------+ | |||
| | | | | | |||
+-------------------------+ | | +-------------------+ | | |||
| periodic-interval | | | | periodic-interval | | | |||
| periodic-interval-units | | | +-------------------+ | | |||
+-------------------------+ | | ||||
| | | | |||
+------------------------+ | +--------------+ | |||
| lambda | | | lambda | | |||
| lambda-units | | | max-interval | | |||
| max-interval | | +--------------+ | |||
| truncation-point-units | | ||||
+------------------------+ | ||||
Figure 5: TWAMP Session-Sender UML class diagram | Figure 5: TWAMP Session-Sender UML class diagram | |||
Each TWAMP-Test session initiated by the Session-Sender will be | Each TWAMP-Test session initiated by the Session-Sender will be | |||
represented by an instance of a test-session object. There SHALL be | represented by an instance of a test-session object. There SHALL be | |||
one instance of test-session for each TWAMP-Test session for which | one instance of test-session for each TWAMP-Test session for which | |||
packets are being sent. | packets are being sent. | |||
4.4. Session-Reflector | 4.4. Session-Reflector | |||
skipping to change at page 15, line 27 ¶ | skipping to change at page 15, line 27 ¶ | |||
If the user has no network access to the Control-Client device, then | If the user has no network access to the Control-Client device, then | |||
the only option is to retrieve all test-session instances from the | the only option is to retrieve all test-session instances from the | |||
Session-Reflector device. This could be problematic if a large | Session-Reflector device. This could be problematic if a large | |||
number of test sessions are currently active on that device. | number of test sessions are currently active on that device. | |||
Each Session-Reflector TWAMP-Test session contains the following | Each Session-Reflector TWAMP-Test session contains the following | |||
4-tuple: {parent-connection-client-ip, parent-connection-client-tcp- | 4-tuple: {parent-connection-client-ip, parent-connection-client-tcp- | |||
port, parent-connection-server-ip, parent-connection-server-tcp- | port, parent-connection-server-ip, parent-connection-server-tcp- | |||
port}. This 4-tuple MUST correspond to the equivalent 4-tuple | port}. This 4-tuple MUST correspond to the equivalent 4-tuple | |||
{client-ip, client-tcp-port, server-ip, server-tcp-port} in the | {client-ip, client-tcp-port, server-ip, server-tcp-port} in server/ | |||
server/ctrl-connection object. This 4-tuple allows the user to trace | ctrl-connection. This 4-tuple allows the user to trace back from the | |||
back from the TWAMP-Test session to the (parent) TWAMP-Control | TWAMP-Test session to the (parent) TWAMP-Control connection that | |||
connection that negotiated this test session. | negotiated this test session. | |||
5. Data Model | 5. Data Model | |||
This section formally specifies the TWAMP data model using YANG. | This section formally specifies the TWAMP data model using YANG. | |||
5.1. YANG Tree Diagram | 5.1. YANG Tree Diagram | |||
This section presents a simplified graphical representation of the | This section presents a simplified graphical representation of the | |||
TWAMP data model using a YANG tree diagram. Readers should keep in | TWAMP data model using a YANG tree diagram. Readers should keep in | |||
mind that the limit of 72 characters per line forces us to introduce | mind that the limit of 72 characters per line forces us to introduce | |||
artificial line breaks in some tree diagram nodes. | artificial line breaks in some tree diagram nodes. | |||
module: ietf-twamp | module: ietf-twamp | |||
+--rw twamp | +--rw twamp | |||
+--rw client! {control-client}? | +--rw client! {control-client}? | |||
| +--rw admin-state boolean | | +--rw admin-state boolean | |||
| +--rw mode-preference-chain* [priority] | | +--rw mode-preference-chain* [priority] | |||
| | +--rw priority uint16 | | | +--rw priority uint16 | |||
| | +--rw mode? twamp-modes | | | +--rw mode? twamp-modes | |||
| +--rw key-chain* [key-id] | | +--rw key-chain* [key-id] | |||
| | +--rw key-id string | | | +--rw key-id binary | |||
| | +--rw secret-key? string | | | +--rw secret-key? binary | |||
| +--rw ctrl-connection* [name] | | +--rw ctrl-connection* [name] | |||
| +--rw name string | | +--rw name string | |||
| +--rw client-ip? inet:ip-address | | +--rw client-ip? inet:ip-address | |||
| +--rw server-ip inet:ip-address | | +--rw server-ip inet:ip-address | |||
| +--rw server-tcp-port? inet:port-number | | +--rw server-tcp-port? inet:port-number | |||
| +--rw control-packet-dscp? inet:dscp | | +--rw control-packet-dscp? inet:dscp | |||
| +--rw key-id? string | | +--rw key-id? string | |||
| +--rw max-count? uint32 | | +--rw max-count? uint8 | |||
| +--ro client-tcp-port? inet:port-number | | +--ro client-tcp-port? inet:port-number | |||
| +--ro server-start-time? uint64 | | +--ro server-start-time? uint64 | |||
| +--ro state? \ | | +--ro state? \ | |||
control-client-connection-state | control-client-connection-state | |||
| +--ro selected-mode? twamp-modes | | +--ro selected-mode? twamp-modes | |||
| +--ro token? binary | | +--ro token? binary | |||
| +--ro client-iv? binary | | +--ro client-iv? binary | |||
| +--rw test-session-request* [name] | | +--rw test-session-request* [name] | |||
| +--rw name string | | +--rw name string | |||
| +--rw sender-ip? inet:ip-address | | +--rw sender-ip? inet:ip-address | |||
| +--rw sender-udp-port? dynamic-port-number | | +--rw sender-udp-port? union | |||
| +--rw reflector-ip inet:ip-address | | +--rw reflector-ip inet:ip-address | |||
| +--rw reflector-udp-port? dynamic-port-number | | +--rw reflector-udp-port? dynamic-port-number | |||
| +--rw timeout? uint64 | | +--rw timeout? uint64 | |||
| +--rw padding-length? uint32 | | +--rw padding-length? uint32 | |||
| +--rw test-packet-dscp? inet:dscp | | +--rw test-packet-dscp? inet:dscp | |||
| +--rw start-time? uint64 | | +--rw start-time? uint64 | |||
| +--rw repeat? uint32 | | +--rw repeat? union | |||
| +--rw repeat-interval? uint32 | | +--rw repeat-interval? uint32 | |||
| +--rw pm-reg-list* [pm-index] | | +--rw pm-reg-list* [pm-index] | |||
| | +--rw pm-index uint16 | | | +--rw pm-index uint16 | |||
| +--ro state? test-session-state | | +--ro state? test-session-state | |||
| +--ro sid? string | | +--ro sid? string | |||
+--rw server! {server}? | +--rw server! {server}? | |||
| +--rw admin-state boolean | | +--rw admin-state boolean | |||
| +--rw server-tcp-port? inet:port-number | | +--rw server-tcp-port? inet:port-number | |||
| +--rw servwait? uint32 | | +--rw servwait? uint32 | |||
| +--rw control-packet-dscp? inet:dscp | | +--rw control-packet-dscp? inet:dscp | |||
| +--rw count? uint32 | | +--rw count? uint8 | |||
| +--rw max-count? uint32 | | +--rw max-count? uint8 | |||
| +--rw modes? twamp-modes | | +--rw modes? twamp-modes | |||
| +--rw key-chain* [key-id] | | +--rw key-chain* [key-id] | |||
| | +--rw key-id string | | | +--rw key-id binary | |||
| | +--rw secret-key? string | | | +--rw secret-key? binary | |||
| +--ro ctrl-connection* \ | | +--ro ctrl-connection* \ | |||
[client-ip client-tcp-port server-ip server-tcp-port] | [client-ip client-tcp-port server-ip server-tcp-port] | |||
| +--ro client-ip inet:ip-address | | +--ro client-ip inet:ip-address | |||
| +--ro client-tcp-port inet:port-number | | +--ro client-tcp-port inet:port-number | |||
| +--ro server-ip inet:ip-address | | +--ro server-ip inet:ip-address | |||
| +--ro server-tcp-port inet:port-number | | +--ro server-tcp-port inet:port-number | |||
| +--ro state? server-ctrl-connection-state | | +--ro state? server-ctrl-connection-state | |||
| +--ro control-packet-dscp? inet:dscp | | +--ro control-packet-dscp? inet:dscp | |||
| +--ro selected-mode? twamp-modes | | +--ro selected-mode? twamp-modes | |||
| +--ro key-id? string | | +--ro key-id? string | |||
| +--ro count? uint32 | | +--ro count? uint8 | |||
| +--ro max-count? uint32 | | +--ro max-count? uint8 | |||
| +--ro salt? binary | | +--ro salt? binary | |||
| +--ro server-iv? binary | | +--ro server-iv? binary | |||
| +--ro challenge? binary | | +--ro challenge? binary | |||
+--rw session-sender! {session-sender}? | +--rw session-sender! {session-sender}? | |||
| +--rw admin-state boolean | | +--rw admin-state boolean | |||
| +--rw test-session* [name] | | +--rw test-session* [name] | |||
| +--rw name string | | +--rw name string | |||
| +--ro ctrl-connection-name? string | | +--ro ctrl-connection-name? string | |||
| +--rw fill-mode? padding-fill-mode | | +--rw fill-mode? padding-fill-mode | |||
| +--rw number-of-packets? uint32 | | +--rw number-of-packets uint32 | |||
| +--rw (packet-distribution)? | | +--rw (packet-distribution)? | |||
| | +--:(periodic) | | | +--:(periodic) | |||
| | | +--rw periodic-interval? uint32 | | | | +--rw periodic-interval decimal64 | |||
| | | +--rw periodic-interval-units? time-units | ||||
| | +--:(poisson) | | | +--:(poisson) | |||
| | +--rw lambda? uint32 | | | +--rw lambda decimal64 | |||
| | +--rw lambda-units? uint32 | | | +--rw max-interval? decimal64 | |||
| | +--rw max-interval? uint32 | | +--ro state? sender-session-state | |||
| | +--rw truncation-point-units? time-units | | +--ro sent-packets? uint32 | |||
| +--ro state? sender-session-state | | +--ro rcv-packets? uint32 | |||
| +--ro sent-packets? uint32 | | +--ro last-sent-seq? uint32 | |||
| +--ro rcv-packets? uint32 | | +--ro last-rcv-seq? uint32 | |||
| +--ro last-sent-seq? uint32 | ||||
| +--ro last-rcv-seq? uint32 | ||||
+--rw session-reflector! {session-reflector}? | +--rw session-reflector! {session-reflector}? | |||
+--rw admin-state boolean | +--rw admin-state boolean | |||
+--rw refwait? uint32 | +--rw refwait? uint32 | |||
+--ro test-session* \ | +--ro test-session* \ | |||
[sender-ip sender-udp-port \ | [sender-ip sender-udp-port \ | |||
reflector-ip reflector-udp-port] | reflector-ip reflector-udp-port] | |||
+--ro sid? string | +--ro sid? string | |||
+--ro sender-ip \ | +--ro sender-ip inet:ip-address | |||
inet:ip-address | +--ro sender-udp-port \ | |||
+--ro sender-udp-port \ | dynamic-port-number | |||
dynamic-port-number | ||||
+--ro reflector-ip inet:ip-address | +--ro reflector-ip inet:ip-address | |||
+--ro reflector-udp-port \ | +--ro reflector-udp-port \ | |||
dynamic-port-number | dynamic-port-number | |||
+--ro parent-connection-client-ip?\ | +--ro parent-connection-client-ip? inet:ip-address | |||
inet:ip-address | ||||
+--ro parent-connection-client-tcp-port? \ | +--ro parent-connection-client-tcp-port? \ | |||
inet:port-number | inet:port-number | |||
+--ro parent-connection-server-ip? \ | +--ro parent-connection-server-ip? inet:ip-address | |||
inet:ip-address | ||||
+--ro parent-connection-server-tcp-port? \ | +--ro parent-connection-server-tcp-port? \ | |||
inet:port-number | inet:port-number | |||
+--ro test-packet-dscp? inet:dscp | +--ro test-packet-dscp? inet:dscp | |||
+--ro sent-packets? uint32 | +--ro sent-packets? uint32 | |||
+--ro rcv-packets? uint32 | +--ro rcv-packets? uint32 | |||
+--ro last-sent-seq? uint32 | +--ro last-sent-seq? uint32 | |||
+--ro last-rcv-seq? uint32 | +--ro last-rcv-seq? uint32 | |||
Figure 7: YANG Tree Diagram. | ||||
5.2. YANG Module | 5.2. YANG Module | |||
This section presents the YANG module for the TWAMP data model | This section presents the YANG module for the TWAMP data model | |||
defined in this document. | defined in this document. | |||
<CODE BEGINS> file "2016-12-23" | <CODE BEGINS> file "ietf-twamp@2017-02-22.yang" | |||
module ietf-twamp { | ||||
namespace | ||||
urn:ietf:params:xml:ns:yang:ietf-twamp; | ||||
module ietf-twamp { | prefix | |||
//namespace need to be assigned by IANA | ietf-twamp; | |||
namespace | ||||
urn:ietf:params:xml:ns:yang:ietf-twamp; | ||||
prefix | ||||
ietf-twamp; | ||||
import ietf-inet-types { | import ietf-inet-types { | |||
prefix inet; | prefix inet; | |||
} | } | |||
organization | organization | |||
"IETF IPPM (IP Performance Metrics) Working Group"; | "IETF IPPM (IP Performance Metrics) Working Group"; | |||
contact | contact | |||
draft-ietf-ippm-twamp-yang@tools.ietf.org; | draft-ietf-ippm-twamp-yang@tools.ietf.org; | |||
description | description | |||
"This YANG module specifies a vendor-independent data | "This YANG module specifies a vendor-independent data | |||
model for the Two-Way Active Measurement Protocol (TWAMP). | model for the Two-Way Active Measurement Protocol (TWAMP). | |||
The data model covers four TWAMP logical entities: | The data model covers four TWAMP logical entities, namely, | |||
Control-Client, Server, Session-Sender, and Session-Reflector. | Control-Client, Server, Session-Sender, and Session-Reflector, | |||
See Fig. 1 of draft-ietf-ippm-twamp-yang for an illustration | as illustrated in the annotated TWAMP logical model (Fig. 1 | |||
of the annotated TWAMP logical model. | of draft-ietf-ippm-twamp-yang). | |||
The YANG module uses features to indicate which of the four | This YANG module uses features to indicate which of the four | |||
logical entities are supported by an implementation."; | logical entities are supported by a TWAMP implementation."; | |||
revision 2016-07-07 { | revision 2017-02-22 { | |||
description | description | |||
"Revision appearing in draft-ietf-ippm-twamp-yang-01. | "Revision appearing in draft-ietf-ippm-twamp-yang-03. | |||
Covers RFC 5357, RFC 5618, RFC 5938, RFC 6038, RFC 7717, | ||||
and draft-ietf-ippm-metric-registry"; | ||||
reference | ||||
draft-ietf-ippm-twamp-yang; | ||||
} | ||||
/* | Covers RFC 5357, RFC 5618, RFC 5938, RFC 6038, RFC 7717, and | |||
* Typedefs | draft-ietf-ippm-metric-registry"; | |||
*/ | ||||
typedef twamp-modes { | reference | |||
type bits { | draft-ietf-ippm-twamp-yang; | |||
bit unauthenticated { | } | |||
position 0; | ||||
description | ||||
"Unauthenticated mode, in which no encryption or | ||||
authentication is applied. See RFC 7717 Section 7."; | ||||
} | ||||
bit authenticated { | ||||
position 1; | ||||
description | ||||
"Authenticated mode. See RFC 7717 Section 7 | ||||
and RFC 4656 Section 6."; | ||||
} | ||||
bit encrypted { | ||||
position 2; | ||||
description | ||||
"Encrypted mode. See RFC 7717 Section 7 and | ||||
RFC 4656 Section 6."; | ||||
} | ||||
bit unauth-test-encrpyt-control { | ||||
position 3; | ||||
description | ||||
"Mixed Security Mode: TWAMP-Test protocol security | ||||
mode in Unauthenticated mode, TWAMP-Control protocol | ||||
in Encrypted mode."; | ||||
reference | ||||
"RFC 5618: Mixed Security Mode for the Two-Way Active | ||||
Measurement Protocol (TWAMP)"; | ||||
} | ||||
bit individual-session-control { | ||||
position 4; | ||||
description | ||||
"Individual Session Control."; | ||||
reference | /* | |||
"RFC 5938: Individual Session Control Feature | * Typedefs | |||
for the Two-Way Active Measurement Protocol (TWAMP)"; | */ | |||
} | ||||
bit reflect-octets { | typedef twamp-modes { | |||
position 5; | type bits { | |||
description | bit unauthenticated { | |||
"Reflect Octets Capability."; | position 0; | |||
reference | description | |||
"RFC 6038: Two-Way Active Measurement Protocol (TWAMP) | "Unauthenticated mode, in which no encryption or | |||
Reflect Octets and Symmetrical Size Features"; | authentication is applied in TWAMP-Control and TWAMP-Test. | |||
} | KeyID, Token, and Client-IV are not used in the | |||
bit symmetrical-size { | Set-Up-Response message. See Section 3.1 of RFC 4656."; | |||
position 6; | reference | |||
description | "RFC 4656: A One-way Active Measurement Protocol (OWAMP)"; | |||
"Symmetrical Size Sender Test Packet Format."; | } | |||
reference | bit authenticated { | |||
"RFC 6038: Two-Way Active Measurement Protocol (TWAMP) | position 1; | |||
Reflect Octets and Symmetrical Size Features"; | description | |||
} | "Authenticated mode, in which the Control-Client and Server | |||
bit IKEv2Derived { | possess a shared secret thus prohibiting 'theft of service'. | |||
position 7; | As per Section 6 of RFC 4656, in 'authenticated mode, the | |||
description | timestamp is in the clear and is not protected | |||
"IKEv2Derived Mode Capability."; | cryptographically in any way, while the rest of the message | |||
reference | has the same protection as in encrypted mode. This mode | |||
"RFC 7717: IKEv2-Derived Shared Secret Key for | allows one to trade off cryptographic protection against | |||
the One-Way Active Measurement Protocol (OWAMP) | accuracy of timestamps.'"; | |||
and Two-Way Active Measurement Protocol (TWAMP)"; | reference | |||
} | "RFC 4656: A One-way Active Measurement Protocol (OWAMP)"; | |||
} | ||||
bit encrypted { | ||||
position 2; | ||||
description | ||||
"Encrypted mode 'makes it impossible to alter | ||||
timestamps undetectably.' See also Section 4 of RFC 7717 | ||||
and Section 6 of RFC 4656."; | ||||
reference | ||||
"RFC 4656: A One-way Active Measurement Protocol (OWAMP)"; | ||||
} | ||||
bit unauth-test-encrpyt-control { | ||||
position 3; | ||||
description | ||||
"When using the Mixed Security Mode, the TWAMP-Test | ||||
protocol follows the Unauthenticated mode and the | ||||
TWAMP-Control protocol the Encrypted mode."; | ||||
reference | ||||
"RFC 5618: Mixed Security Mode for the Two-Way Active | ||||
Measurement Protocol (TWAMP)"; | ||||
} | ||||
bit individual-session-control { | ||||
position 4; | ||||
description | ||||
"This mode enables individual test sessions using | ||||
Session Identifiers."; | ||||
reference | ||||
"RFC 5938: Individual Session Control Feature | ||||
for the Two-Way Active Measurement Protocol (TWAMP)"; | ||||
} | ||||
bit reflect-octets { | ||||
position 5; | ||||
description | ||||
"This mode indicates the reflect octets capability."; | ||||
reference | ||||
"RFC 6038: Two-Way Active Measurement Protocol (TWAMP) | ||||
Reflect Octets and Symmetrical Size Features"; | ||||
} | ||||
bit symmetrical-size { | ||||
position 6; | ||||
description | ||||
"This mode indicates support for the symmetrical size | ||||
sender test packet format."; | ||||
reference | ||||
"RFC 6038: Two-Way Active Measurement Protocol (TWAMP) | ||||
Reflect Octets and Symmetrical Size Features"; | ||||
} | ||||
bit IKEv2Derived { | ||||
position 7; | ||||
description | ||||
"In this mode the the shared key is derived | ||||
from an IKEv2 security association (SA)."; | ||||
reference | ||||
"RFC 7717: IKEv2-Derived Shared Secret Key for | ||||
the One-Way Active Measurement Protocol (OWAMP) | ||||
and Two-Way Active Measurement Protocol (TWAMP)"; | ||||
} | } | |||
description | ||||
"Specifies the configurable TWAMP-Modes used during a | ||||
TWAMP-Control Connection setup between a Control-Client | ||||
and a Server. RFC 7717 Section 7 summarizes the | ||||
TWAMP-Modes registry."; | ||||
} | } | |||
description | ||||
"Specifies the configurable TWAMP-Modes supported during a | ||||
TWAMP-Control Connection setup between a Control-Client | ||||
and a Server. Section 7 of RFC 7717 summarizes the | ||||
TWAMP-Modes registry and points to their formal | ||||
specification."; | ||||
} | ||||
typedef control-client-connection-state { | typedef control-client-connection-state { | |||
type enumeration { | type enumeration { | |||
enum active { | enum active { | |||
description | description | |||
"Indicates an active TWAMP-Control connection to Server."; | "Indicates an active TWAMP-Control connection to Server."; | |||
} | } | |||
enum idle { | enum idle { | |||
description | description | |||
"Indicates an idle TWAMP-Control connection to Server."; | "Indicates an idle TWAMP-Control connection to Server."; | |||
} | ||||
} | } | |||
description "Control-Client control connection state"; | ||||
} | } | |||
description | ||||
"Indicates the Control-Client TWAMP-Control connection state."; | ||||
} | ||||
typedef test-session-state { | typedef test-session-state { | |||
type enumeration { | type enumeration { | |||
enum accepted { | enum accepted { | |||
value 0; | value 0; | |||
description | description | |||
"Indicates that the TWAMP-Test session request | "Indicates that accepted TWAMP-Test session request."; | |||
is accepted."; | } | |||
} | enum failed { | |||
enum failed { | value 1; | |||
value 1; | description | |||
description | "Indicates a TWAMP-Test session failure due to | |||
"Indicates a TWAMP-Test session failure due to | some unspecified reason (catch-all)."; | |||
some unspecified reason (catch-all)."; | } | |||
} | enum internal-error { | |||
enum internal-error { | value 2; | |||
value 2; | description | |||
description | "Indicates a TWAMP-Test session failure due to | |||
"Indicates a TWAMP-Test session failure due to | an internal error."; | |||
an internal error."; | } | |||
} | enum not-supported { | |||
enum not-supported { | value 3; | |||
value 3; | description | |||
description | "Indicates a TWAMP-Test session failure because | |||
"Indicates a TWAMP-Test session failure because | some aspect of the TWAMP-Test session request | |||
some aspect of the TWAMP-Test session request | is not supported."; | |||
is not supported."; | } | |||
} | enum permanent-resource-limit { | |||
enum permanent-resource-limit { | value 4; | |||
value 4; | description | |||
description | "Indicates a TWAMP-Test session failure due to | |||
"Indicates a TWAMP-Test session failure due to | permanent resource limitations."; | |||
permanent resource limitations."; | } | |||
} | enum temp-resource-limit { | |||
enum temp-resource-limit { | value 5; | |||
value 5; | description | |||
description | "Indicates a TWAMP-Test session failure due to | |||
"Indicates a TWAMP-Test session failure due to | temporary resource limitations."; | |||
temporary resource limitations."; | ||||
} | ||||
} | } | |||
description "TWAMP-Test session state"; | ||||
} | } | |||
description | ||||
"Indicates the Control-Client TWAMP-Test session state."; | ||||
} | ||||
typedef server-ctrl-connection-state { | typedef server-ctrl-connection-state { | |||
type enumeration { | type enumeration { | |||
enum active { | enum active { | |||
description "Indicates an active TWAMP-Control connection | description | |||
"Indicates an active TWAMP-Control connection | ||||
to the Control-Client."; | to the Control-Client."; | |||
} | ||||
enum servwait { | ||||
description "Indicates that the TWAMP-Control connection | ||||
to the Control-Client is in SERVWAIT according to RFC 5357 | ||||
(Section 3.1): [a] Server MAY discontinue any established | ||||
control connection when no packet associated with that | ||||
connection has been received within SERVWAIT seconds."; | ||||
} | ||||
} | } | |||
description "Server control connection state"; | enum servwait { | |||
description | ||||
"Indicates that the TWAMP-Control connection to the | ||||
Control-Client is in SERVWAIT as per the definition of | ||||
Section 3.1 of RFC 5357."; | ||||
} | ||||
} | } | |||
description | ||||
"Indicates the Server TWAMP-Control connection state."; | ||||
} | ||||
typedef sender-session-state { | typedef sender-session-state { | |||
type enumeration { | type enumeration { | |||
enum active { | enum active { | |||
description | description | |||
"Indicates that the TWAMP-Test session is active."; | "Indicates that the TWAMP-Test session is active."; | |||
} | } | |||
enum failure { | enum failure { | |||
description | description | |||
"Indicates that the TWAMP-Test session has failed."; | "Indicates that the TWAMP-Test session has failed."; | |||
} | ||||
} | } | |||
description "Session-Sender session state."; | ||||
} | } | |||
description | ||||
"Indicates the Session-Sender TWAMP-Test session state."; | ||||
} | ||||
typedef padding-fill-mode { | typedef padding-fill-mode { | |||
type enumeration { | type enumeration { | |||
enum zero { | enum zero { | |||
description "Packets will be padded with | description | |||
all zeros"; | "TWAMP-Test packets are padded with all zeros."; | |||
} | } | |||
enum random { | enum random { | |||
description "Packets will be padded with | description | |||
pseudo-random numbers"; | "TWAMP-Test packets are padded with pseudo-random | |||
} | numbers."; | |||
} | } | |||
description "Indicates what type of packet padding is | ||||
to be used for the UDP TWAMP-Test packets."; | ||||
} | } | |||
description | ||||
"Indicates what type of packet padding is used in the | ||||
TWAMP-Test packets."; | ||||
} | ||||
typedef time-units { | typedef dynamic-port-number { | |||
type enumeration { | type inet:port-number { | |||
enum s { | range 49152..65535; | |||
description "Seconds."; | } | |||
description "Dynamic range for port numbers."; | ||||
} | ||||
/* | ||||
* Features | ||||
*/ | ||||
feature control-client { | ||||
description | ||||
"Indicates that the device supports configuration of the | ||||
TWAMP Control-Client logical entity."; | ||||
} | ||||
feature server { | ||||
description | ||||
"Indicates that the device supports configuration of the | ||||
TWAMP Server logical entity."; | ||||
} | ||||
feature session-sender { | ||||
description | ||||
"Indicates that the device supports configuration of the | ||||
TWAMP Session-Sender logical entity."; | ||||
} | ||||
feature session-reflector { | ||||
description | ||||
"Indicates that the device supports configuration of the | ||||
TWAMP Session-Reflector logical entity."; | ||||
} | ||||
/* | ||||
* Reusable node groups | ||||
*/ | ||||
grouping key-management { | ||||
list key-chain { | ||||
key key-id; | ||||
leaf key-id { | ||||
type binary { | ||||
length 1..80; | ||||
} | } | |||
enum ms { | description | |||
description "Milliseconds."; | "KeyID used for a TWAMP-Control connection. As per | |||
} | Section 3.1 of RFC 4656, KeyID is 'a UTF-8 string, up to | |||
enum us { | 80 octets in length' and is used to select which 'shared | |||
description "Microseconds."; | shared secret the [Control-Client] wishes to use to | |||
authenticate or encrypt'."; | ||||
} | } | |||
enum ns { | leaf secret-key { | |||
description "Nanoseconds."; | type binary; | |||
description | ||||
"The secret key corresponding to the KeyID for this | ||||
TWAMP-Control connection."; | ||||
} | } | |||
} | description | |||
description "TWAMP configuration parameters time units."; | "Relates KeyIDs with their respective secret keys | |||
in a TWAMP-Control connection."; | ||||
} | } | |||
description | ||||
"Used by the Control-Client and Server for TWAMP-Control | ||||
key management."; | ||||
} | ||||
typedef dynamic-port-number { | grouping maintenance-statistics { | |||
type inet:port-number { | leaf sent-packets { | |||
range 49152..65535; | type uint32; | |||
} | config false; | |||
description "Dynamic range for port numbers"; | description "Indicates the number of packets sent."; | |||
} | } | |||
/* | leaf rcv-packets { | |||
* Features | type uint32; | |||
*/ | config false; | |||
description "Indicates the number of packets received."; | ||||
feature control-client { | } | |||
description | leaf last-sent-seq { | |||
"Indicates that the device supports configuration | type uint32; | |||
of the TWAMP Control-Client."; | config false; | |||
description "Indicates the last sent sequence number."; | ||||
} | } | |||
feature server { | leaf last-rcv-seq { | |||
description | type uint32; | |||
"Indicates that the device supports configuration | config false; | |||
of the TWAMP Server."; | description "Indicates the last received sequence number."; | |||
} | } | |||
description "Used for TWAMP-Test maintenance statistics."; | ||||
} | ||||
feature session-sender { | grouping count { | |||
leaf count { | ||||
type uint8 { | ||||
range "10..31"; | ||||
} | ||||
default 10; | ||||
description | description | |||
"Indicates that the device supports configuration | "Parameter communicated to the Control-Client as part of the | |||
of the TWAMP Session-Sender."; | Server Greeting message and used for deriving a key from a | |||
} | shared secret as per Section 3.1 of RFC 4656: MUST be a | |||
power of 2 and at least 1024; SHOULD be increased as more | ||||
computing power becomes common."; | ||||
} | ||||
description | ||||
"Reusable data structure for count which is used both in the | ||||
Server container."; | ||||
} | ||||
feature session-reflector { | grouping max-count { | |||
leaf max-count { | ||||
type uint8 { | ||||
range "10..31"; | ||||
} | ||||
default 15; | ||||
description | description | |||
"Indicates that the device supports configuration | "This parameter limits the maximum Count value, which MUST | |||
of the TWAMP Session-Reflector."; | be a power of 2 and at least 1024 as per RFC 5357. It is | |||
} | configured by providing said power. For example, | |||
/* | configuring 10 here means max count 2^10 = 1024. | |||
* Reusable node groups | The default is 15, meaning 2^15 = 32768. | |||
*/ | ||||
grouping key-management { | A TWAMP Server uses this configured value in the | |||
Server-Greeting message sent to the Control-Client. | ||||
list key-chain { | A TWAMP Control-Client uses this configured value to prevent | |||
key key-id; | denial-of-service (DOS) attacks by closing the control | |||
leaf key-id { | connection to the Server if it 'receives a Server-Greeting | |||
type string { | message with Count greater that its maximum configured value', | |||
length 1..80; | as per Section 6 of RFC 5357. | |||
} | ||||
description | ||||
"KeyID to be used for a TWAMP-Control connection."; | ||||
} | ||||
leaf secret-key { | Further, note that according to Section 6 of RFC 5357: | |||
type string; | ||||
description | ||||
"The corresponding secret key for the | ||||
TWAMP-Control connection."; | ||||
} | ||||
description | ||||
"Relates KeyIDs with the respective secret keys | ||||
for a TWAMP-Control connection."; | ||||
} | ||||
description "TWAMP-Control key management."; | ||||
} | ||||
grouping maintenance-statistics { | 'If an attacking system sets the maximum value in | |||
Count (2**32), then the system under attack would stall | ||||
for a significant period of time while it attempts to | ||||
generate keys. | ||||
leaf sent-packets { | TWAMP-compliant systems SHOULD have a configuration | |||
type uint32; | control to limit the maximum count value. The default | |||
config false; | max-count value SHOULD be 32768.' | |||
description "Packets sent"; | ||||
} | ||||
leaf rcv-packets { | RFC 5357 does not qualify 'significant period' in terms of | |||
type uint32; | time, but it is clear that this depends on the processing | |||
config false; | capacity available and operators need to pay attention to | |||
description "Packets received"; | this security consideration."; | |||
} | } | |||
description | ||||
"Reusable data structure for max-count which is used both at | ||||
the Control-Client and the Server containers."; | ||||
} | ||||
leaf last-sent-seq { | /* | |||
type uint32; | * Configuration data nodes | |||
config false; | */ | |||
description "Last sent sequence number"; | ||||
} | ||||
leaf last-rcv-seq { | ||||
type uint32; | ||||
config false; | ||||
description "Last received sequence number"; | ||||
} | ||||
description "TWAMP-Test maintenance statistics"; | ||||
} | ||||
/* | container twamp { | |||
* Configuration data nodes | description | |||
*/ | "TWAMP logical entity configuration grouping of four models | |||
which correspond to the four TWAMP logical entities | ||||
Control-Client, Server, Session-Sender, and Session-Reflector | ||||
as illustrated in Fig. 1 of draft-ietf-ippm-twamp-yang."; | ||||
container twamp { | container client { | |||
if-feature control-client; | ||||
presence "Enables TWAMP Control-Client functionality."; | ||||
description | description | |||
"TWAMP logical entity configuration grouping."; | "Configuration of the TWAMP Control-Client logical entity."; | |||
container client { | leaf admin-state { | |||
if-feature control-client; | type boolean; | |||
presence client; | mandatory true; | |||
description | description | |||
"Configuration of the TWAMP Control-Client logical entity."; | "Indicates whether the device is allowed to operate as a | |||
TWAMP Control-Client."; | ||||
} | ||||
leaf admin-state { | list mode-preference-chain { | |||
type boolean; | key priority; | |||
unique mode; | ||||
leaf priority { | ||||
type uint16; | ||||
description | ||||
"Indicates the Control-Client Mode preference priority | ||||
expressed as a 16-bit unsigned integer, where zero is the | ||||
highest priority and subsequent values monotonically | ||||
increasing."; | ||||
} | ||||
leaf mode { | ||||
type twamp-modes; | ||||
description | ||||
"The supported TWAMP Mode matching the corresponding | ||||
priority."; | ||||
} | ||||
description | ||||
"Indicates the Control-Client preferred order of use of | ||||
the supported TWAMP Modes. | ||||
Depending on the Modes available in the TWAMP Server | ||||
Greeting message (see Fig. 2 of RFC 7717), the | ||||
this Control-Client MUST choose the highest priority Mode | ||||
from the configured mode-preference-chain list."; | ||||
} | ||||
uses key-management; | ||||
list ctrl-connection { | ||||
key name; | ||||
description | ||||
"List of TWAMP Control-Client control connections. | ||||
Each item in the list describes a control connection | ||||
that will be initiated by this Control-Client"; | ||||
leaf name { | ||||
type string; | ||||
description | ||||
"A unique name used as a key to identify this individual | ||||
TWAMP-Control connection on the Control-Client device."; | ||||
} | ||||
leaf client-ip { | ||||
type inet:ip-address; | ||||
description | ||||
"The IP address of the local Control-Client device, | ||||
to be placed in the source IP address field of the | ||||
IP header in TWAMP-Control (TCP) packets belonging | ||||
to this control connection. If not configured, the | ||||
device SHALL choose its own source IP address."; | ||||
} | ||||
leaf server-ip { | ||||
type inet:ip-address; | ||||
mandatory true; | mandatory true; | |||
description | description | |||
"Indicates whether the device is allowed to operate | "The IP address of the remote Server device, which the | |||
as a TWAMP Control-Client."; | TWAMP-Control connection will be initiated to."; | |||
} | } | |||
list mode-preference-chain { | leaf server-tcp-port { | |||
key priority; | type inet:port-number; | |||
unique mode; | default 862; | |||
leaf priority { | description | |||
type uint16; | "This parameter defines the TCP port number that is | |||
description "Priority."; | to be used by this outgoing TWAMP-Control connection. | |||
Typically, this is the well-known TWAMP-Control | ||||
port number (862) as per RFC 5357 However, there are known | ||||
realizations of TWAMP in the field that were implemented | ||||
before this well-known port number was allocated. These | ||||
early implementations allowed the port number to be | ||||
configured. This parameter is therefore provided for | ||||
backward compatibility reasons."; | ||||
} | ||||
leaf control-packet-dscp { | ||||
type inet:dscp; | ||||
default 0; | ||||
description | ||||
"The DSCP value to be placed in the IP header of | ||||
TWAMP-Control (TCP) packets generated by this | ||||
Control-Client."; | ||||
} | ||||
leaf key-id { | ||||
type string { | ||||
length 1..80; | ||||
} | } | |||
leaf mode { | description | |||
type twamp-modes; | "Indicates the KeyID value selected for this | |||
description "Supported TWAMP Mode."; | TWAMP-Control connection."; | |||
} | ||||
uses max-count; | ||||
leaf client-tcp-port { | ||||
type inet:port-number; | ||||
config false; | ||||
description | ||||
"Indicates the source TCP port number used in the | ||||
TWAMP-Control packets belonging to this control | ||||
connection."; | ||||
} | ||||
leaf server-start-time { | ||||
type uint64; | ||||
config false; | ||||
description | ||||
"Indicates the Start-Time advertized by the Server in the | ||||
Server-Start message (RFC 4656, Section 3.1), | ||||
representing the time when the current | ||||
instantiation of the Server started operating. | ||||
The timestamp format follows RFC 1305 | ||||
according to Section 4.1.2 of RFC 4656."; | ||||
} | ||||
leaf state { | ||||
type control-client-connection-state; | ||||
config false; | ||||
description | ||||
"Indicates the current state of the TWAMP-Control | ||||
connection state."; | ||||
} | ||||
leaf selected-mode { | ||||
type twamp-modes; | ||||
config false; | ||||
description | ||||
"The TWAMP Mode that the Control-Client has chosen for | ||||
this control connection as set in the Mode field of the | ||||
Set-Up-Response message (RFC 4656, Section 3.1)."; | ||||
} | ||||
leaf token { | ||||
type binary { | ||||
length 64; | ||||
} | } | |||
config false; | ||||
description | description | |||
"Indicates the preferred order of use for the | "This parameter holds the 64 octets containing the | |||
corresponding supported TWAMP Modes"; | concatenation of a 16-octet Challenge, a 16-octet AES | |||
Session-key used for encryption, and a 32-octet | ||||
HMAC-SHA1 Session-key used for authentication; see also | ||||
the last paragraph of Section 6 in RFC 4656. | ||||
If the Mode defined in RFC 7717 is selected (selected-mode), | ||||
Token is limited to 16 octets."; | ||||
reference | ||||
"RFC 4086: Randomness Requirements for Security | ||||
RFC 7717: IKEv2-Derived Shared Secret Key for the One-Way | ||||
Active Measurement Protocol (OWAMP) and Two-Way Active | ||||
Measurement Protocol (TWAMP)"; | ||||
} | } | |||
uses key-management; | ||||
list ctrl-connection { | leaf client-iv { | |||
type binary { | ||||
length 16; | ||||
} | ||||
config false; | ||||
description | ||||
"Indicates the Control-Client Initialization Vector | ||||
(Client-IV), that is generated randomly by the | ||||
Control-Client. As per RFC 4656: | ||||
Client-IV merely needs to be unique (i.e., it MUST | ||||
never be repeated for different sessions using the | ||||
same secret key; a simple way to achieve that without | ||||
the use of cumbersome state is to generate the | ||||
Client-IV values using a cryptographically secure | ||||
pseudo-random number source. | ||||
If the Mode defined in RFC 7717 is selected (selected-mode), | ||||
Client-IV is limited to 12 octets."; | ||||
reference | ||||
"RFC 4656: A One-way Active Measurement Protocol (OWAMP) | ||||
RFC 7717: IKEv2-Derived Shared Secret Key for the One-Way | ||||
Active Measurement Protocol (OWAMP) and Two-Way Active | ||||
Measurement Protocol (TWAMP)"; } | ||||
list test-session-request { | ||||
key name; | key name; | |||
description | description | |||
"List of TWAMP Control-Client control connections. | "Information associated with the Control-Client | |||
Each item in the list describes a control connection | for this test session"; | |||
that will be initiated by this Control-Client"; | ||||
leaf name { | leaf name { | |||
type string; | type string; | |||
description | description | |||
"A unique name used as a key to identify this individual | "A unique name to be used for identification of | |||
TWAMP control connection on the Control-Client device."; | this TWAMP-Test session on the Control-Client."; | |||
} | ||||
leaf client-ip { | ||||
type inet:ip-address; | ||||
description | ||||
"The IP address of the local Control-Client device, | ||||
to be placed in the source IP address field of the | ||||
IP header in TWAMP-Control (TCP) packets belonging | ||||
to this control connection. If not configured, the | ||||
device SHALL choose its own source IP address."; | ||||
} | } | |||
leaf server-ip { | ||||
leaf sender-ip { | ||||
type inet:ip-address; | type inet:ip-address; | |||
mandatory true; | ||||
description | description | |||
"The IP address belonging to the remote Server device, | "The IP address of the Session-Sender device, | |||
which the TWAMP-Control connection will be | which is to be placed in the source IP address | |||
initiated to."; | field of the IP header in TWAMP-Test (UDP) packets | |||
} | belonging to this test session. This value will be | |||
used to populate the sender address field of the | ||||
Request-TW-Session message. | ||||
leaf server-tcp-port { | If not configured, the device SHALL choose its own | |||
type inet:port-number; | source IP address."; | |||
default 862; | ||||
description | ||||
"This parameter defines the TCP port number that is | ||||
to be used by this outgoing TWAMP-Control connection. | ||||
Typically, this is the well-known TWAMP port number (862) | ||||
as per RFC 5357 However, there are known | ||||
realizations of TWAMP in the field that were implemented | ||||
before this well-known port number was allocated. These | ||||
early implementations allowed the port number to be | ||||
configured. This parameter is therefore provided for | ||||
backward compatibility reasons."; | ||||
} | ||||
leaf control-packet-dscp { | ||||
type inet:dscp; | ||||
default 0; | ||||
description | ||||
"The DSCP value to be placed in the IP header of | ||||
TWAMP-Control (TCP) packets generated by this | ||||
Control-Client."; | ||||
} | } | |||
leaf key-id { | leaf sender-udp-port { | |||
type string { | type union { | |||
length 1..80; | type dynamic-port-number; | |||
type enumeration { | ||||
enum autoallocate { | ||||
description | ||||
"Indicates that the Contol-Client will | ||||
auto-allocate the TWAMP-Test (UDP) port number | ||||
from the dynamic port range."; | ||||
} | ||||
} | ||||
} | } | |||
default autoallocate; | ||||
description | description | |||
"The KeyID value that is selected | "The UDP port number that is to be used by | |||
for this TWAMP-Control connection."; | the Session-Sender for this TWAMP-Test session. | |||
The number is restricted to the dynamic port range. | ||||
} | ||||
leaf max-count { | By default the Control-Client SHALL auto-allocate a | |||
type uint32 { | UDP port number for this TWAMP-Test session. | |||
range 1024..4294967295; | ||||
} | ||||
default 32768; | ||||
description | ||||
"This parameter limits the maximum Count value. | ||||
If an attacking system sets the maximum value in | The configured (or auto-allocated) value is advertized | |||
Count (2**32), then the system under attack would stall | in the Sender Port field of the Request-TW-session | |||
for a significant period of time while it attempts to | message (see Section 3.5 of RFC 5357). Note that | |||
generate keys."; | in the scenario where a device auto-allocates a UDP | |||
port number for a session, and the repeat parameter | ||||
for that session indicates that it should be | ||||
repeated, the device is free to auto-allocate a | ||||
different UDP port number when it negotiates the | ||||
next (repeated) iteration of this session."; | ||||
} | } | |||
leaf client-tcp-port { | leaf reflector-ip { | |||
type inet:port-number; | type inet:ip-address; | |||
config false; | mandatory true; | |||
description | description | |||
"The source TCP port number used in the TWAMP-Control | "The IP address belonging to the remote | |||
packets belonging to this control connection."; | Session-Reflector device to which the TWAMP-Test | |||
session will be initiated. This value will be | ||||
used to populate the receiver address field of | ||||
the Request-TW-Session message."; | ||||
} | } | |||
leaf server-start-time { | leaf reflector-udp-port { | |||
type uint64; | type dynamic-port-number; | |||
config false; | ||||
description | description | |||
"The Start-Time advertized by the Server in the | "This parameter defines the UDP port number that | |||
Server-Start message (RFC 4656, Section 3.1). This is | will be used by the Session-Reflector for | |||
a timestamp representing the time when the current | this TWAMP-Test session. The number is restricted | |||
instantiation of the Server started operating."; | to the dynamic port range and is to be placed in | |||
the Receiver Port field of the Request-TW-Session | ||||
message."; | ||||
} | } | |||
leaf state { | leaf timeout { | |||
type control-client-connection-state; | type uint64; | |||
config false; | units seconds; | |||
default 2; | ||||
description | description | |||
"Indicates the currest state of the TWAMP-Control | "The length of time (in seconds) that the | |||
connection state."; | Session-Reflector should continue to respond to | |||
} | packets belonging to this TWAMP-Test session after | |||
a Stop-Sessions TWAMP-Control message has been | ||||
received (RFC 5357, Section 3.8). | ||||
leaf selected-mode { | This value will be placed in the Timeout field of | |||
type twamp-modes; | the Request-TW-Session message."; | |||
config false; | ||||
description | ||||
"The TWAMP Mode that the Control-Client has chosen for | ||||
this control connection as set in the Mode field of the | ||||
Set-Up-Response message (RFC 4656, Section 3.1)."; | ||||
} | } | |||
leaf token { | leaf padding-length { | |||
type binary { | type uint32 { | |||
length 64; | range 64..4096; | |||
} | } | |||
config false; | ||||
description | description | |||
"This parameter holds the 64 octets containing the | "The number of padding bytes to be added to the | |||
concatenation of a 16-octet Challenge, a 16-octet AES | TWAMP-Test (UDP) packets generated by the | |||
Session-key used for encryption, and a 32-octet | Session-Sender. | |||
HMAC-SHA1 Session-key used for authentication. | ||||
AES Session-key and HMAC Session-key are generated | This value will be placed in the Padding Length | |||
randomly by the Control-Client. AES Session-key and | field of the Request-TW-Session message | |||
HMAC Session-key MUST be generated with sufficient | (RFC 4656, Section 3.5)."; | |||
entropy not to reduce the security of the underlying | ||||
cipher. The token itself is encrypted | ||||
using the AES (Advanced Encryption Standard) in | ||||
Cipher Block Chaining (CBC). Encryption MUST be | ||||
performed using an Initialization Vector (IV) | ||||
of zero and a key derived from the shared secret | ||||
associated with KeyID. Challenge is the same as | ||||
transmitted by the Server in the clear; see also the | ||||
last paragraph of Section 6 in RFC 4656."; | ||||
reference | ||||
"RFC 4086: Randomness Requirements for Security"; | ||||
} | } | |||
leaf client-iv { | leaf test-packet-dscp { | |||
type binary { | type inet:dscp; | |||
length 16; | default 0; | |||
} | ||||
config false; | ||||
description | description | |||
"The Control-Client Initialization Vector (Client-IV) | "The DSCP value to be placed in the IP header | |||
is generated randomly by the Control-Client. | of TWAMP-Test packets generated by the | |||
Session-Sender, and in the UDP header of the | ||||
TWAMP-Test response packets generated by the | ||||
Session-Reflector for this test session. | ||||
Client-IV merely needs to be unique (i.e., it MUST | This value will be placed in the Type-P Descriptor | |||
never be repeated for different sessions using the | field of the Request-TW-Session message (RFC 5357)."; | |||
same secret key; a simple way to achieve that without | ||||
the use of cumbersome state is to generate the | ||||
Client-IV values using a cryptographically secure | ||||
pseudo-random number source."; | ||||
} | } | |||
list test-session-request { | leaf start-time { | |||
key name; | type uint64; | |||
default 0; | ||||
description | description | |||
"Information associated with the Control-Client | "Time when the session is to be started | |||
for this test session"; | (but not before the TWAMP Start-Sessions command | |||
is issued; see Section 3.4 of RFC 5357). | ||||
leaf name { | ||||
type string; | ||||
description | ||||
"A unique name to be used for identification of | ||||
this TWAMP-Test session on the Control-Client."; | ||||
} | ||||
leaf sender-ip { | The start-time value is placed in the Start Time | |||
type inet:ip-address; | field of the Request-TW-Session message. | |||
description | ||||
"The IP address of the Session-Sender device, | ||||
which is to be placed in the source IP address | ||||
field of the IP header in TWAMP-Test (UDP) packets | ||||
belonging to this test session. This value will be | ||||
used to populate the sender address field of the | ||||
Request-TW-Session message. If not configured, | ||||
the device SHALL choose its own source IP address."; | ||||
} | ||||
leaf sender-udp-port { | The timestamp format follows RFC 1305 as per | |||
type dynamic-port-number; | Section 3.5 of RFC 4656. | |||
description | ||||
"The UDP port number that is to be used by | ||||
the Session-Sender for this TWAMP-Test session. | ||||
The number is restricted to the dynamic port range. | ||||
A value of zero indicates that the Control-Client | ||||
SHALL auto-allocate a UDP port number for this | ||||
TWAMP-Test session. The configured | ||||
(or auto-allocated) value is advertized in the | ||||
Sender Port field of the Request-TW-session message | ||||
(see also Section 3.5 of RFC 5357. Note that in the | ||||
scenario where a device auto-allocates a UDP port | ||||
number for a session, and the repeat parameter | ||||
for that session indicates that it should be | ||||
repeated, the device is free to auto-allocate a | ||||
different UDP port number when it negotiates the | ||||
next (repeated) iteration of this session."; | ||||
} | ||||
leaf reflector-ip { | The default value of 0 indicates that the session | |||
type inet:ip-address; | will be started as soon as the Start-Sessions message | |||
mandatory true; | is received."; | |||
description | } | |||
"The IP address belonging to the remote | ||||
Session-Reflector device to which the TWAMP-Test | ||||
session will be initiated. This value will be | ||||
used to populate the receiver address field of | ||||
the Request-TW-Session message."; | ||||
} | ||||
leaf reflector-udp-port { | leaf repeat { | |||
type dynamic-port-number; | type union { | |||
description | type uint32 { | |||
"This parameter defines the UDP port number that | range 0..4294967294; | |||
will be used by the Session-Reflector for | } | |||
this TWAMP-Test session. The number is restricted | type enumeration { | |||
to the dynamic port range and is to be placed in | enum forever { | |||
the Receiver Port field of the Request-TW-Session | description | |||
message. If this value is not set, the device SHALL | "Indicates that the test session SHALL be | |||
use the same port number as defined in the | repeated *forever* using the information in | |||
server-tcp-port parameter of this | repeat-interval parameter, and SHALL NOT | |||
test-session-request's parent | decrement the value."; | |||
twamp/client/ctrl-connection."; | } | |||
} | ||||
} | } | |||
default 0; | ||||
description | ||||
"This value determines if the TWAMP-Test session must | ||||
be repeated. When a test session has completed, the | ||||
repeat parameter is checked. | ||||
leaf timeout { | The default value of 0 indicates that the session | |||
type uint64; | MUST NOT be repeated. | |||
default 2; | ||||
description | ||||
"The length of time (in seconds) that the | ||||
Session-Reflector should continue to respond to | ||||
packets belonging to this TWAMP-Test session after | ||||
a Stop-Sessions TWAMP-Control message has been | ||||
received (RFC 5357, Section 3.8). | ||||
This value will be placed in the Timeout field of | If the repeat value is 1 through 4,294,967,294 | |||
the Request-TW-Session message."; | then the test session SHALL be repeated using the | |||
} | information in repeat-interval parameter, and the | |||
parent TWAMP-Control connection for this test | ||||
session is restarted to negotiate a new instance | ||||
of this TWAMP-Test session. The implementation | ||||
MUST decrement the value of repeat after | ||||
determining a repeated session is expected."; | ||||
} | ||||
leaf padding-length { | leaf repeat-interval { | |||
type uint32 { | when "../repeat!='0'" { | |||
range 64..4096; | ||||
} | ||||
description | description | |||
"The number of padding bytes to be added to the | "This parameter determines the timing of repeated | |||
TWAMP-Test (UDP) packets generated by the | TWAMP-Test sessions when repeat is more than 0. | |||
Session-Sender. | ||||
This value will be placed in the Padding Length | When the value of repeat-interval is 0, the | |||
field of the Request-TW-Session message | negotiation of a new test session SHALL begin | |||
(RFC 4656, Section 3.5)."; | immediately after the previous test session | |||
completes. Otherwise, the Control-Client will | ||||
wait for the number of seconds specified in the | ||||
repeat-interval parameter before negotiating the | ||||
new instance of this TWAMP-Test session."; | ||||
} | } | |||
type uint32; | ||||
units seconds; | ||||
default 0; | ||||
description "Repeat interval (in seconds)."; | ||||
} | ||||
leaf test-packet-dscp { | list pm-reg-list { | |||
type inet:dscp; | key pm-index; | |||
leaf pm-index { | ||||
type uint16; | ||||
description | description | |||
"The DSCP value to be placed in the IP header | "Numerical index value of a Registered Metric | |||
of TWAMP-Test packets generated by the | in the Performance Metric Registry | |||
Session-Sender, and in the UDP header of the | (see ietf-ippm-metric-registry). Output statistics | |||
TWAMP-Test response packets generated by the | are specified in the corresponding Registry entry."; | |||
Session-Reflector for this test session. | ||||
This value will be placed in the Type-P Descriptor | ||||
field of the Request-TW-Session message (RFC 5357)."; | ||||
} | } | |||
description | ||||
"A list of one or more Performance Metric Registry | ||||
Index values, which communicate packet stream | ||||
characteristics along with one or more metrics | ||||
to be measured. | ||||
leaf start-time { | All members of the pm-reg-list MUST have the same | |||
type uint64; | stream characteristics, such that they combine | |||
default 0; | to specify all metrics that shall be measured on | |||
description | a single stream."; | |||
"Time when the session is to be started | reference | |||
(but not before the TWAMP Start-Sessions command | "ietf-ippm-metric-registry: | |||
is issued; see RFC 5357, Section 3.4). | Registry for Performance Metrics"; | |||
} | ||||
leaf state { | ||||
type test-session-state; | ||||
config false; | ||||
description | ||||
"Indicates the TWAMP-Test session state (accepted or | ||||
indication of an error); see Section 3.5 of | ||||
RFC 5357."; | ||||
} | ||||
leaf sid { | ||||
type string; | ||||
config false; | ||||
description | ||||
"The SID allocated by the Server for this TWAMP-Test | ||||
session, and communicated back to the Control-Client | ||||
in the SID field of the Accept-Session message; | ||||
see Section 4.3 of RFC 6038."; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
The start-time value is placed in the Start Time | container server { | |||
field of the Request-TW-Session message. | if-feature server; | |||
presence "Enables TWAMP Server functionality."; | ||||
description "Configuration of the TWAMP Server logical entity."; | ||||
leaf admin-state { | ||||
type boolean; | ||||
mandatory true; | ||||
description | ||||
"Indicates whether the device is allowed to operate | ||||
as a TWAMP Server."; | ||||
} | ||||
The default value of 0 indicates that the session | leaf server-tcp-port { | |||
will be started as soon as the Start-Sessions message | type inet:port-number; | |||
is received."; | default 862; | |||
} | description | |||
"This parameter defines the well known TCP port number | ||||
that is used by TWAMP-Control. The Server will listen | ||||
on this port number for incoming TWAMP-Control | ||||
connections. Although this is defined as a fixed value | ||||
(862) in RFC 5357, there are several realizations of | ||||
TWAMP in the field that were implemented before this | ||||
well-known port number was allocated. These early | ||||
implementations allowed the port number to be | ||||
configured. This parameter is therefore provided for | ||||
backward compatibility reasons."; | ||||
} | ||||
leaf repeat { | leaf servwait { | |||
type uint32; | type uint32 { | |||
default 0; | range 1..604800; | |||
description | } | |||
"This value determines if the TWAMP-Test session must | units seconds; | |||
be repeated. When a test session has completed, the | default 900; | |||
repeat parameter is checked. | description | |||
"TWAMP-Control (TCP) session timeout, in seconds. | ||||
According to Section 3.1 of RFC 5357, | ||||
The value of 0 indicates that the session MUST NOT be | Server MAY discontinue any established control | |||
repeated. | connection when no packet associated with that | |||
connection has been received within SERVWAIT seconds."; | ||||
} | ||||
If the value is 1 through 4,294,967,294 then the test | leaf control-packet-dscp { | |||
session SHALL be repeated using the information in | type inet:dscp; | |||
repeat-interval parameter, and the parent | description | |||
TWAMP-Control connection for this test session is | "The DSCP value to be placed in the IP header of | |||
restarted to negotiate a new instance of this | TWAMP-Control (TCP) packets generated by the Server. | |||
TWAMP-Test session. The implementation MUST decrement | ||||
the value of repeat after determining a repeated | ||||
session is expected. | ||||
The value of 4,294,967,295 indicates that the test | Section 3.1 of RFC 5357 specifies that the server | |||
session SHALL be repeated *forever* using the | SHOULD use the DSCP value from the Control-Client's | |||
information in repeat-interval parameter, and | TCP SYN. However, for practical purposes TWAMP will | |||
SHALL NOT decrement the value."; | typically be implemented using a general purpose TCP | |||
} | stack provided by the underlying operating system, | |||
and such a stack may not provide this information to the | ||||
user. Consequently, it is not always possible to | ||||
implement the behavior described in RFC 5357 in an | ||||
OS-portable version of TWAMP. | ||||
leaf repeat-interval { | The default behavior if this item is not set is to use | |||
when "../repeat!='0'" { | the DSCP value from the Control-Client's TCP SYN, | |||
description | as per Section 3.1 of RFC 5357."; | |||
"This parameter determines the timing of repeated | } | |||
test sessions when repeat is more than 0. | ||||
When the value of repeat-interval is 0, the | uses count; | |||
negotiation of a new test session SHALL begin | ||||
immediately after the previous test session | ||||
completes. Otherwise, the Control-Client will | ||||
wait for the number of minutes specified in the | ||||
repeat-interval parameter before negotiating the | ||||
new instance of this TWAMP-Test session."; | ||||
} | ||||
type uint32; | ||||
default 0; | ||||
description "Repeat interval (in minutes)"; | ||||
} | ||||
list pm-reg-list { | uses max-count; | |||
key pm-index; | ||||
leaf pm-index { | ||||
type uint16; | ||||
description | ||||
"Numerical index value of a Registered Metric | ||||
in the Performance Metric Registry | ||||
(see ietf-ippm-metric-registry). Output statistics | ||||
are specified in the corresponding Registry entry."; | ||||
} | ||||
description | ||||
"A list of one or more Performance Metric Registry | ||||
Index values, which communicate packet stream | ||||
characteristics along with one or more metrics | ||||
to be measured. | ||||
All members of the pm-reg-list MUST have the same | leaf modes { | |||
stream characteristics, such that they combine | type twamp-modes; | |||
to specify all metrics that shall be measured on | description | |||
a single stream."; | "The bit mask of TWAMP Modes this Server instance | |||
reference | is willing to support; see IANA TWAMP Modes Registry."; | |||
"ietf-ippm-metric-registry: | ||||
Registry for Performance Metrics"; | ||||
} | ||||
leaf state { | ||||
type test-session-state; | ||||
config false; | ||||
description | ||||
"Indicates the TWAMP-Test session state (accepted or | ||||
indication of an error); see Section 3.5 of | ||||
RFC 5357."; | ||||
} | ||||
leaf sid { | ||||
type string; | ||||
config false; | ||||
description | ||||
"The SID allocated by the Server for this TWAMP-Test | ||||
session, and communicated back to the Control-Client | ||||
in the SID field of the Accept-Session message; | ||||
see Section 4.3 of RFC 6038."; | ||||
} | ||||
} | ||||
} | ||||
} | } | |||
container server { | uses key-management; | |||
if-feature server; | ||||
presence server; | list ctrl-connection { | |||
key "client-ip client-tcp-port server-ip server-tcp-port"; | ||||
config false; | ||||
description | description | |||
"Configuration of the TWAMP Server logical entity."; | "List of all incoming TWAMP-Control (TCP) connections."; | |||
leaf admin-state { | leaf client-ip { | |||
type boolean; | type inet:ip-address; | |||
mandatory true; | ||||
description | description | |||
"Indicates whether the device is allowed to operate | "The IP address on the remote Control-Client device, | |||
as a TWAMP Server."; | which is the source IP address used in the | |||
TWAMP-Control (TCP) packets belonging to this control | ||||
connection."; | ||||
} | ||||
leaf client-tcp-port { | ||||
type inet:port-number; | ||||
description | ||||
"The source TCP port number used in the TWAMP-Control | ||||
(TCP) packets belonging to this control connection."; | ||||
} | ||||
leaf server-ip { | ||||
type inet:ip-address; | ||||
description | ||||
"The IP address of the local Server device, which is | ||||
the destination IP address used in the | ||||
TWAMP-Control (TCP) packets belonging to this control | ||||
connection."; | ||||
} | } | |||
leaf server-tcp-port { | leaf server-tcp-port { | |||
type inet:port-number; | type inet:port-number; | |||
default 862; | ||||
description | description | |||
"This parameter defines the well known TCP port number | "The destination TCP port number used in the | |||
that is used by TWAMP-Control. The Server will listen | TWAMP-Control (TCP) packets belonging to this | |||
on this port number for incoming TWAMP-Control | control connection. This will usually be the | |||
connections. Although this is defined as a fixed value | same value as the server-tcp-port configured | |||
(862) in RFC 5357, there are several realizations of | under twamp/server. However, in the event that | |||
TWAMP in the field that were implemented before this | the user re-configured server/server-tcp-port | |||
well-known port number was allocated. These early | after this control connection was initiated, this | |||
implementations allowed the port number to be | value will indicate the server-tcp-port that is | |||
configured. This parameter is therefore provided for | actually in use for this control connection."; | |||
backward compatibility reasons."; | ||||
} | } | |||
leaf servwait { | leaf state { | |||
type uint32 { | type server-ctrl-connection-state; | |||
range 1..604800; | ||||
} | ||||
default 900; | ||||
description | description | |||
"TWAMP-Control (TCP) session timeout, in seconds | "Indicates the Server TWAMP-Control connection state."; | |||
(RFC 5357, Section 3.1))."; | ||||
} | } | |||
leaf control-packet-dscp { | leaf control-packet-dscp { | |||
type inet:dscp; | type inet:dscp; | |||
description | description | |||
"The DSCP value to be placed in the IP header of | "The DSCP value used in the IP header of the | |||
TWAMP-Control (TCP) packets generated by the Server. | TWAMP-Control (TCP) packets sent by the Server | |||
for this control connection. This will usually | ||||
Section 3.1 of RFC 5357 specifies that the server | be the same value as is configured in the | |||
SHOULD use the DSCP value from the Control-Client's | control-packet-dscp parameter under the twamp/server | |||
TCP SYN. However, for practical purposes TWAMP will | container. However, in the event that the user | |||
typically be implemented using a general purpose TCP | re-configures server/dscp after this control | |||
stack provided by the underlying operating system, | connection is already in progress, this read-only | |||
and such a stack may not provide this information to the | value will show the actual dscp value in use by this | |||
user. Consequently, it is not always possible to | TWAMP-Control connection."; | |||
implement the behavior described in RFC 5357 in an | ||||
OS-portable version of TWAMP. The default behavior if | ||||
this item is not set is to use the DSCP value from | ||||
the Control-Client's TCP SYN, as per Section 3.1 | ||||
of RFC 5357."; | ||||
} | } | |||
leaf count { | leaf selected-mode { | |||
type uint32 { | type twamp-modes; | |||
range 1024..4294967295; | ||||
} | ||||
description | description | |||
"Parameter used in deriving a key from a shared | "The Mode that was chosen for this TWAMP-Control | |||
secret as described in Section 3.1 of RFC 4656, | connection as set in the Mode field of the | |||
and are communicated to the Control-Client as part | Set-Up-Response message."; | |||
of the Server Greeting message. | ||||
count MUST be a power of 2. | ||||
count MUST be at least 1024. | ||||
count SHOULD be increased as more computing power | ||||
becomes common."; | ||||
} | } | |||
leaf max-count { | ||||
type uint32 { | leaf key-id { | |||
range 1024..4294967295; | type string { | |||
length 1..80; | ||||
} | } | |||
default 32768; | ||||
description | description | |||
"This parameter limits the maximum Count value. | "The KeyID value that is in use by this TWAMP-Control | |||
connection as selected by Control-Client."; | ||||
If an attacking system sets the maximum value in | ||||
Count (2**32), then the system under attack would stall | ||||
for a significant period of time while it attempts to | ||||
generate keys. | ||||
TWAMP-compliant systems SHOULD have a configuration | ||||
control to limit the maximum count value. The | ||||
default max-count value SHOULD be 32768."; | ||||
} | } | |||
leaf modes { | uses count { | |||
type twamp-modes; | ||||
description | description | |||
"The bit mask of TWAMP Modes this Server instance | "The count value that is in use by this TWAMP-Control | |||
is willing to support; see IANA TWAMP Modes Registry."; | connection. This will usually be the same value | |||
as is configured under twamp/server. However, in the | ||||
event that the user re-configured server/count | ||||
after this control connection is already in progress, | ||||
this read-only value will show the actual count that | ||||
is in use for this TWAMP-Control connection."; | ||||
} | } | |||
uses key-management; | uses max-count { | |||
list ctrl-connection { | ||||
key | ||||
"client-ip client-tcp-port server-ip server-tcp-port"; | ||||
config false; | ||||
description | description | |||
"List of all incoming TWAMP-Control (TCP) connections"; | "This read-only value indicates the actual max-count in use | |||
for this control connection. Usually this would be the | ||||
leaf client-ip { | same value as configured under twamp/server."; | |||
type inet:ip-address; | } | |||
description | ||||
"The IP address on the remote Control-Client device, | ||||
which is the source IP address used in the | ||||
TWAMP-Control (TCP) packets belonging to this control | ||||
connection."; | ||||
} | ||||
leaf client-tcp-port { | ||||
type inet:port-number; | ||||
description | ||||
"The source TCP port number used in the TWAMP-Control | ||||
(TCP) packets belonging to this control connection."; | ||||
} | ||||
leaf server-ip { | ||||
type inet:ip-address; | ||||
description | ||||
"The IP address of the local Server device, which is | ||||
the destination IP address used in the | ||||
TWAMP-Control (TCP) packets belonging to this control | ||||
connection."; | ||||
} | ||||
leaf server-tcp-port { | ||||
type inet:port-number; | ||||
description | ||||
"The destination TCP port number used in the | ||||
TWAMP-Control (TCP) packets belonging to this | ||||
control connection. This will usually be the | ||||
same value as the server-tcp-port configured | ||||
under twamp/server. However, in the event that | ||||
the user re-configured server/server-tcp-port | ||||
after this control connection was initiated, this | ||||
value will indicate the server-tcp-port that is | ||||
actually in use for this control connection."; | ||||
} | ||||
leaf state { | ||||
type server-ctrl-connection-state; | ||||
description | ||||
"Indicates the Server TWAMP-Control connection state."; | ||||
} | ||||
leaf control-packet-dscp { | ||||
type inet:dscp; | ||||
description | ||||
"The DSCP value used in the IP header of the | ||||
TWAMP-Control (TCP) packets sent by the Server | ||||
for this control connection. This will usually | ||||
be the same value as is configured in the | ||||
control-packet-dscp parameter under the twamp/server | ||||
container. However, in the event that the user | ||||
re-configures server/dscp after this control | ||||
connection is already in progress, this read-only | ||||
value will show the actual dscp value in use by this | ||||
TWAMP-Control connection."; | ||||
} | ||||
leaf selected-mode { | leaf salt { | |||
type twamp-modes; | type binary { | |||
description | length 16; | |||
"The Mode that was chosen for this TWAMP-Control | ||||
connection as set in the Mode field of the | ||||
Set-Up-Response message."; | ||||
} | } | |||
description | ||||
"A parameter used in deriving a key from a | ||||
shared secret as described in Section 3.1 of RFC 4656. | ||||
It is communicated to the Control-Client as part of | ||||
the Server Greeting message."; | ||||
} | ||||
leaf key-id { | leaf server-iv { | |||
type string { | type binary { | |||
length 1..80; | length 16; | |||
} | ||||
description | ||||
"The KeyID value that is in use by this TWAMP-Control | ||||
connection as selected by Control-Client."; | ||||
} | } | |||
description | ||||
"The Server Initialization Vector | ||||
(IV) generated randomly by the Server."; | ||||
leaf count { | } | |||
type uint32 { | ||||
range 1024..4294967295; | ||||
} | ||||
description | ||||
"The count value that is in use by this TWAMP-Control | ||||
connection. This will usually be the same value | ||||
as is configured under twamp/server. However, in the | ||||
event that the user re-configured server/count | ||||
after this control connection is already in progress, | ||||
this read-only value will show the actual count that | ||||
is in use for this TWAMP-Control connection."; | ||||
} | ||||
leaf max-count { | leaf challenge { | |||
type uint32 { | type binary { | |||
range 1024..4294967295; | length 16; | |||
} | ||||
description | ||||
"The max-count value that is in use by this | ||||
TWAMP-Control connection. This will usually be the | ||||
same value as is configured under twamp/server. However, | ||||
in the event that the user re-configured | ||||
server/max-count after this control connection is | ||||
already in progress, this read-only value will show the | ||||
actual max-count that is in use for this | ||||
control connection."; | ||||
} | } | |||
description | ||||
"A random sequence of octets generated by the Server. | ||||
As described in client/token, Challenge is used | ||||
by the Control-Client to prove possession of a | ||||
shared secret."; | ||||
} | ||||
} | ||||
} | ||||
leaf salt { | container session-sender { | |||
type binary { | if-feature session-sender; | |||
length 16; | presence "Enables TWAMP Session-Sender functionality."; | |||
} | description | |||
description | "Configuration of the TWAMP Session-Sender logical entity"; | |||
"A parameter used in deriving a key from a | leaf admin-state { | |||
shared secret as described in Section 3.1 of RFC 4656. | type boolean; | |||
Salt MUST be generated pseudo-randomly (independently | mandatory true; | |||
of anything else in the RFC) and is communicated to | description | |||
the Control-Client as part of the Server Greeting | "Indicates whether the device is allowed to operate | |||
message."; | as a TWAMP Session-Sender."; | |||
} | } | |||
leaf server-iv { | list test-session{ | |||
type binary { | key name; | |||
length 16; | description "List of TWAMP Session-Sender test sessions."; | |||
} | ||||
description | ||||
"The Server Initialization Vector | ||||
(IV) is generated randomly by the Server."; | ||||
} | ||||
leaf challenge { | leaf name { | |||
type binary { | type string; | |||
length 16; | description | |||
} | "A unique name for this TWAMP-Test session to be used | |||
description | for identifying this test session by the Session-Sender | |||
"A random sequence of octets generated by the Server. | logical entity."; | |||
As described in client/token, Challenge is used | } | |||
by the Control-Client to prove possession of a | ||||
shared secret."; | ||||
} | leaf ctrl-connection-name { | |||
type string; | ||||
config false; | ||||
description | ||||
"The name of the parent TWAMP-Control connection that | ||||
is responsible for negotiating this TWAMP-Test session."; | ||||
} | ||||
leaf fill-mode { | ||||
type padding-fill-mode; | ||||
default zero; | ||||
description | ||||
"Indicates whether the padding added to the | ||||
TWAMP-Test (UDP) packets will contain pseudo-random | ||||
numbers, or whether it should consist of all zeroes, | ||||
as per Section 4.2.1 of RFC 5357."; | ||||
} | } | |||
} | ||||
container session-sender { | leaf number-of-packets { | |||
if-feature session-sender; | type uint32; | |||
presence session-sender; | ||||
description | ||||
"Configuration of the TWAMP Session-Sender | ||||
logical entity"; | ||||
leaf admin-state { | ||||
type boolean; | ||||
mandatory true; | mandatory true; | |||
description | description | |||
"Indicates whether the device is allowed to operate | "The overall number of TWAMP-Test (UDP) packets to be | |||
as a TWAMP Session-Sender."; | transmitted by the Session-Sender for this test session."; | |||
} | } | |||
list test-session{ | choice packet-distribution { | |||
key name; | ||||
description | description | |||
"TWAMP Session-Sender test sessions."; | "Indicates the distribution to be used for transmitting | |||
the TWAMP-Test (UDP) packets."; | ||||
leaf name { | case periodic { | |||
type string; | leaf periodic-interval { | |||
description | type decimal64 { | |||
"A unique name for this TWAMP-Test session to be used | fraction-digits 5; | |||
for identifying this test session by the Session-Sender | ||||
logical entity."; | ||||
} | ||||
leaf ctrl-connection-name { | ||||
type string; | ||||
config false; | ||||
description | ||||
"The name of the parent TWAMP-Control connection that | ||||
is responsible for negotiating this TWAMP-Test session."; | ||||
} | ||||
leaf fill-mode { | ||||
type padding-fill-mode; | ||||
default zero; | ||||
description | ||||
"Indicates whether the padding added to the | ||||
TWAMP-Test (UDP) packets will contain pseudo-random | ||||
numbers, or whether it should consist of all zeroes, | ||||
as per Section 4.2.1 of RFC 5357."; | ||||
} | ||||
leaf number-of-packets { | ||||
type uint32; | ||||
description | ||||
"The overall number of TWAMP-Test (UDP) packets to | ||||
be transmitted by the Session-Sender | ||||
for this test session."; | ||||
} | ||||
choice packet-distribution { | ||||
description | ||||
"Indicates the distribution to be used for transmitting | ||||
the TWAMP-Test (UDP) packets."; | ||||
case periodic { | ||||
leaf periodic-interval { | ||||
type uint32; | ||||
description | ||||
"Indicates the period to wait between the first bits | ||||
of TWAMP-Test (UDP) packet transmissions for | ||||
this test session"; | ||||
} | } | |||
leaf periodic-interval-units { | units seconds; | |||
type time-units; | mandatory true; | |||
description "Periodic interval time unit."; | description | |||
reference | "Indicates the time to wait (in seconds) between the | |||
first bits of TWAMP-Test (UDP) packet transmissions for | ||||
this test session"; | ||||
reference | ||||
"RFC 3432: Network performance measurement | "RFC 3432: Network performance measurement | |||
with periodic streams"; | with periodic streams"; | |||
} | ||||
} | } | |||
case poisson { | } | |||
leaf lambda { | case poisson { | |||
type uint32; | leaf lambda { | |||
description | type decimal64 { | |||
"Indicates the average packet transmission rate."; | fraction-digits 5; | |||
} | ||||
leaf lambda-units { | ||||
type uint32; | ||||
description | ||||
"Indicates the units of lambda in | ||||
reciprocal seconds."; | ||||
reference | ||||
"RFC 3432: Network performance measurement | ||||
with periodic streams"; | ||||
} | } | |||
leaf max-interval { | units seconds; | |||
type uint32; | mandatory true; | |||
description | description | |||
"Indicates the maximum time between packet | "Indicates the average time interval (in seconds) | |||
transmissions."; | between packets in the Poisson distribution. | |||
The packet is calculated using the reciprocal of lambda | ||||
and the TWAMP-Test packet size (which depends on the | ||||
selected Mode and the packet padding)."; | ||||
reference | ||||
"RFC 2330: Framework for IP Performance Metrics"; | ||||
} | ||||
leaf max-interval { | ||||
type decimal64 { | ||||
fraction-digits 5; | ||||
} | } | |||
leaf truncation-point-units { | units seconds; | |||
type time-units; | description | |||
description "Time units to truncate."; | "Indicates the maximum time (in seconds) | |||
} | between packet transmissions."; | |||
reference | ||||
"RFC 7312: Advanced Stream and Sampling Framework | ||||
for IP Performance Metrics (IPPM)"; | ||||
} | } | |||
} | } | |||
} | ||||
leaf state { | leaf state { | |||
type sender-session-state; | type sender-session-state; | |||
config false; | config false; | |||
description | description | |||
"Indicates the Session-Sender test session state."; | "Indicates the Session-Sender test session state."; | |||
} | ||||
uses maintenance-statistics; | ||||
} | } | |||
uses maintenance-statistics; | ||||
} | } | |||
} | ||||
container session-reflector { | container session-reflector { | |||
if-feature session-reflector; | if-feature session-reflector; | |||
presence session-reflector; | presence "Enables TWAMP Session-Reflector functionality."; | |||
description | ||||
"Configuration of the TWAMP Session-Reflector logical entity"; | ||||
leaf admin-state { | ||||
type boolean; | ||||
mandatory true; | ||||
description | description | |||
"Configuration of the TWAMP Session-Reflector | "Indicates whether the device is allowed to operate | |||
logical entity"; | as a TWAMP Session-Reflector."; | |||
} | ||||
leaf admin-state { | leaf refwait { | |||
type boolean; | type uint32 { | |||
mandatory true; | range 1..604800; | |||
description | ||||
"Indicates whether the device is allowed to operate | ||||
as a TWAMP Session-Reflector."; | ||||
} | } | |||
units seconds; | ||||
default 900; | ||||
description | ||||
"The Session-Reflector MAY discontinue any session that has | ||||
been started when no packet associated with that session has | ||||
been received for REFWAIT seconds. As per Section 3.1 of | ||||
RFC 5357, this timeout allows a Session-Reflector to free up | ||||
resources in case of failure."; | ||||
} | ||||
leaf refwait { | list test-session { | |||
type uint32 { | key | |||
range 1..604800; | "sender-ip sender-udp-port | |||
} | reflector-ip reflector-udp-port"; | |||
default 900; | config false; | |||
description | description "TWAMP Session-Reflectortest sessions."; | |||
"The Session-Reflector MAY discontinue any session | ||||
that has been started when no packet associated with | ||||
that session has been received for REFWAIT seconds. | ||||
The default value of REFWAIT SHALL be 900 seconds, and | ||||
this waiting time MAY be configurable. This timeout | ||||
allows a Session-Reflector to free up resources in | ||||
case of failure."; | ||||
leaf sid { | ||||
type string; | ||||
description | ||||
"An auto-allocated identifier for this TWAMP-Test | ||||
session that is unique within the context of this | ||||
Server/Session-Reflector device only. This value | ||||
is communicated to the Control-Client that | ||||
requested the test session in the SID field of the | ||||
Accept-Session message."; | ||||
} | } | |||
list test-session { | leaf sender-ip { | |||
key | type inet:ip-address; | |||
"sender-ip sender-udp-port | ||||
reflector-ip reflector-udp-port"; | ||||
config false; | ||||
description | description | |||
"TWAMP Session-Reflectortest sessions."; | "The IP address on the remote device, which is the | |||
source IP address used in the TWAMP-Test (UDP) packets | ||||
leaf sid { | belonging to this test session."; | |||
type string; | } | |||
description | ||||
"An auto-allocated identifier for this TWAMP-Test | ||||
session, that is unique within the context of this | ||||
Server/Session-Reflector device only. This value | ||||
will be communicated to the Control-Client that | ||||
requested the test session in the SID field of the | ||||
Accept-Session message."; | ||||
} | ||||
leaf sender-ip { | ||||
type inet:ip-address; | ||||
description | ||||
"The IP address on the remote device, which is the | ||||
source IP address used in the TWAMP-Test | ||||
(UDP) packets belonging to this test session."; | ||||
} | ||||
leaf sender-udp-port { | ||||
type dynamic-port-number; | ||||
description | ||||
"The source UDP port used in the TWAMP-Test packets | ||||
belonging to this test session."; | ||||
} | ||||
leaf reflector-ip { | ||||
type inet:ip-address; | ||||
description | ||||
"The IP address of the local Session-Reflector | ||||
device, which is the destination IP address used | ||||
in the TWAMP-Test (UDP) packets belonging to this test | ||||
session."; | ||||
} | ||||
leaf reflector-udp-port { | ||||
type dynamic-port-number; | ||||
description | ||||
"The destination UDP port number used in the | ||||
TWAMP-Test (UDP) test packets belonging to this | ||||
test session."; | ||||
} | ||||
leaf parent-connection-client-ip { | leaf sender-udp-port { | |||
type inet:ip-address; | type dynamic-port-number; | |||
description | description | |||
"The IP address on the Control-Client device, which | "The source UDP port used in the TWAMP-Test packets | |||
is the source IP address used in the TWAMP-Control | belonging to this test session."; | |||
(TCP) packets belonging to the parent control | } | |||
connection that negotiated this test session."; | ||||
} | ||||
leaf parent-connection-client-tcp-port { | leaf reflector-ip { | |||
type inet:port-number; | type inet:ip-address; | |||
description | description | |||
"The source TCP port number used in the TWAMP-Control | "The IP address of the local Session-Reflector | |||
(TCP) packets belonging to the parent control connection | device, which is the destination IP address used | |||
that negotiated this test session."; | in the TWAMP-Test (UDP) packets belonging to this test | |||
} | session."; | |||
} | ||||
leaf parent-connection-server-ip { | leaf reflector-udp-port { | |||
type inet:ip-address; | type dynamic-port-number; | |||
description | description | |||
"The IP address of the Server device, which is the | "The destination UDP port number used in the | |||
destination IP address used in the TWAMP-Control | TWAMP-Test (UDP) test packets belonging to this | |||
(TCP) packets belonging to the parent control | test session."; | |||
connection that negotiated this test session."; | } | |||
} | ||||
leaf parent-connection-server-tcp-port { | leaf parent-connection-client-ip { | |||
type inet:port-number; | type inet:ip-address; | |||
description | description | |||
"The destination TCP port number used in the TWAMP-Control | "The IP address on the Control-Client device, which | |||
(TCP) packets belonging to the parent control connection | is the source IP address used in the TWAMP-Control | |||
that negotiated this test session."; | (TCP) packets belonging to the parent control | |||
} | connection that negotiated this test session."; | |||
} | ||||
leaf test-packet-dscp { | leaf parent-connection-client-tcp-port { | |||
type inet:dscp; | type inet:port-number; | |||
description | description | |||
"The DSCP value present in the IP header of | "The source TCP port number used in the TWAMP-Control | |||
TWAMP-Test (UDP) packets belonging to this test | (TCP) packets belonging to the parent control connection | |||
session."; | that negotiated this test session."; | |||
} | } | |||
uses maintenance-statistics; | leaf parent-connection-server-ip { | |||
type inet:ip-address; | ||||
description | ||||
"The IP address of the Server device, which is the | ||||
destination IP address used in the TWAMP-Control | ||||
(TCP) packets belonging to the parent control | ||||
connection that negotiated this test session."; | ||||
} | ||||
leaf parent-connection-server-tcp-port { | ||||
type inet:port-number; | ||||
description | ||||
"The destination TCP port number used in the TWAMP-Control | ||||
(TCP) packets belonging to the parent control connection | ||||
that negotiated this test session."; | ||||
} | ||||
leaf test-packet-dscp { | ||||
type inet:dscp; | ||||
description | ||||
"The DSCP value present in the IP header of | ||||
TWAMP-Test (UDP) packets belonging to this session."; | ||||
} | } | |||
uses maintenance-statistics; | ||||
} | } | |||
} | } | |||
} | } | |||
} | ||||
<CODE ENDS> | <CODE ENDS> | |||
6. Data Model Examples | 6. Data Model Examples | |||
This section presents a simple but complete example of configuring | This section presents a simple but complete example of configuring | |||
all four entities in Figure 1, based on the YANG module specified in | all four entities in Figure 1, based on the YANG module specified in | |||
Section 5. The example is illustrative in nature, but aims to be | Section 5. The example is illustrative in nature, but aims to be | |||
self-contained, i.e. were it to be executed in a real TWAMP | self-contained, i.e. were it to be executed in a real TWAMP | |||
implementation it would lead to a correctly configured test session. | implementation it would lead to a correctly configured test session. | |||
For completeness, examples are provided for both IPv4 and IPv6. | For completeness, examples are provided for both IPv4 and IPv6. | |||
A more elaborated example, which also includes authentication | A more elaborated example, which also includes authentication | |||
parameters, is provided in Appendix A. | parameters, is provided in Appendix A. | |||
6.1. Control-Client | 6.1. Control-Client | |||
The following configuration example shows a Control-Client with | Figure 8 shows a configuration example for a Control-Client with | |||
client/admin-state enabled. In a real implementation following | client/admin-state enabled. In a real implementation following | |||
Figure 2 this would permit the initiation of TWAMP-Control | Figure 2 this would permit the initiation of TWAMP-Control | |||
connections and TWAMP-Test sessions. | connections and TWAMP-Test sessions. | |||
<?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
<config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
<twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | |||
<client> | <client> | |||
<admin-state>true</admin-state> | <admin-state>true</admin-state> | |||
</client> | </client> | |||
</twamp> | </twamp> | |||
</config> | </config> | |||
The following configuration example shows a Control-Client with two | Figure 8: XML instance enabling Control-Client operation. | |||
instances of client/ctrl-connection, one called "RouterA" and another | ||||
called "RouterB". | ||||
Each TWAMP-Control connection is to a different Server. The control | The following example shows a Control-Client with two instances of | |||
connection named "RouterA" has two test session requests. The TWAMP- | client/ctrl-connection, one called "RouterA" and another called | |||
Control connection named "RouterB" has no TWAMP-Test session | "RouterB". Each TWAMP-Control connection is to a different Server. | |||
requests. | The control connection named "RouterA" has two test session requests. | |||
The TWAMP-Control connection named "RouterB" has no TWAMP-Test | ||||
session requests. | ||||
<?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
<config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
<twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | |||
<client> | <client> | |||
<admin-state>true</admin-state> | <admin-state>true</admin-state> | |||
<ctrl-connection> | <ctrl-connection> | |||
<name>RouterA</name> | <name>RouterA</name> | |||
<client-ip>203.0.113.1</client-ip> | <client-ip>203.0.113.1</client-ip> | |||
<server-ip>203.0.113.2</server-ip> | <server-ip>203.0.113.2</server-ip> | |||
<test-session-request> | <test-session-request> | |||
<name>Test1</name> | <name>Test1</name> | |||
<sender-ip>10.1.1.1</sender-ip> | <sender-ip>203.0.113.3</sender-ip> | |||
<sender-udp-port>50000</sender-udp-port> | <sender-udp-port>54001</sender-udp-port> | |||
<reflector-ip>10.1.1.2</reflector-ip> | <reflector-ip>203.0.113.4</reflector-ip> | |||
<reflector-udp-port>500001</reflector-udp-port> | <reflector-udp-port>50001</reflector-udp-port> | |||
<start-time>0</start-time> | <start-time>0</start-time> | |||
</test-session-request> | </test-session-request> | |||
<test-session-request> | <test-session-request> | |||
<name>Test2</name> | <name>Test2</name> | |||
<sender-ip>203.0.113.1</sender-ip> | <sender-ip>203.0.113.1</sender-ip> | |||
<sender-udp-port>4001</sender-udp-port> | <sender-udp-port>54001</sender-udp-port> | |||
<reflector-ip>203.0.113.2</reflector-ip> | <reflector-ip>203.0.113.2</reflector-ip> | |||
<reflector-udp-port>50001</reflector-udp-port> | <reflector-udp-port>50001</reflector-udp-port> | |||
<start-time>0</start-time> | <start-time>0</start-time> | |||
</test-session-request> | </test-session-request> | |||
</ctrl-connection> | </ctrl-connection> | |||
<ctrl-connection> | <ctrl-connection> | |||
<name>RouterB</name> | <name>RouterB</name> | |||
<client-ip>203.0.113.1</client-ip> | <client-ip>203.0.113.1</client-ip> | |||
<server-ip>203.0.113.3</server-ip> | <server-ip>203.0.113.3</server-ip> | |||
</ctrl-connection> | </ctrl-connection> | |||
skipping to change at page 45, line 47 ¶ | skipping to change at page 47, line 7 ¶ | |||
<config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
<twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | |||
<client> | <client> | |||
<admin-state>true</admin-state> | <admin-state>true</admin-state> | |||
<ctrl-connection> | <ctrl-connection> | |||
<name>RouterA</name> | <name>RouterA</name> | |||
<client-ip>2001:DB8:203:0:113::1</client-ip> | <client-ip>2001:DB8:203:0:113::1</client-ip> | |||
<server-ip>2001:DB8:203:0:113::2</server-ip> | <server-ip>2001:DB8:203:0:113::2</server-ip> | |||
<test-session-request> | <test-session-request> | |||
<name>Test1</name> | <name>Test1</name> | |||
<sender-ip>2001:DB8:10:1:1::1</sender-ip> | <sender-ip>2001:DB8:203:1:113::3</sender-ip> | |||
<sender-udp-port>4000</sender-udp-port> | <sender-udp-port>54000</sender-udp-port> | |||
<reflector-ip>2001:DB8:10:1:1::2</reflector-ip> | <reflector-ip>2001:DB8:203:1:113::4</reflector-ip> | |||
<reflector-udp-port>5000</reflector-udp-port> | <reflector-udp-port>55000</reflector-udp-port> | |||
<start-time>0</start-time> | <start-time>0</start-time> | |||
</test-session-request> | </test-session-request> | |||
<test-session-request> | <test-session-request> | |||
<name>Test2</name> | <name>Test2</name> | |||
<sender-ip>2001:DB8:203:0:113::1</sender-ip> | <sender-ip>2001:DB8:203:0:113::1</sender-ip> | |||
<sender-udp-port>4001</sender-udp-port> | <sender-udp-port>54001</sender-udp-port> | |||
<reflector-ip>2001:DB8:203:0:113::2</reflector-ip> | <reflector-ip>2001:DB8:203:0:113::2</reflector-ip> | |||
<reflector-udp-port>5001</reflector-udp-port> | <reflector-udp-port>55001</reflector-udp-port> | |||
<start-time>0</start-time> | <start-time>0</start-time> | |||
</test-session-request> | </test-session-request> | |||
</ctrl-connection> | </ctrl-connection> | |||
<ctrl-connection> | <ctrl-connection> | |||
<name>RouterB</name> | <name>RouterB</name> | |||
<client-ip>2001:DB8:203:0:113::1</client-ip> | <client-ip>2001:DB8:203:0:113::1</client-ip> | |||
<server-ip>2001:DB8:203:0:113::3</server-ip> | <server-ip>2001:DB8:203:0:113::3</server-ip> | |||
</ctrl-connection> | </ctrl-connection> | |||
</client> | </client> | |||
</twamp> | </twamp> | |||
</config> | </config> | |||
6.2. Server | 6.2. Server | |||
This configuration example shows a Server with server/admin-state | Figure 9 shows a configuration example for a Server with server/ | |||
enabled, which permits a device following Figure 2 to respond to | admin-state enabled, which permits a device following Figure 2 to | |||
TWAMP-Control connections and TWAMP-Test sessions. | respond to TWAMP-Control connections and TWAMP-Test sessions. | |||
<?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
<config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
<twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | |||
<server> | <server> | |||
<admin-state>true</admin-state> | <admin-state>true</admin-state> | |||
</server> | </server> | |||
</twamp> | </twamp> | |||
</config> | </config> | |||
Figure 9: XML instance enabling Server operation. | ||||
The following example presents a Server with the TWAMP-Control | The following example presents a Server with the TWAMP-Control | |||
connection corresponding to the control connection name (client/ctrl- | connection corresponding to the control connection name (client/ctrl- | |||
connection/name) "RouterA" presented in Section 6.1. | connection/name) "RouterA" presented in Section 6.1. | |||
<?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
<twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | |||
<server> | <server> | |||
<admin-state>true</admin-state> | <admin-state>true</admin-state> | |||
<ctrl-connection> | <ctrl-connection> | |||
skipping to change at page 47, line 43 ¶ | skipping to change at page 48, line 43 ¶ | |||
<state> | <state> | |||
active | active | |||
</state> | </state> | |||
</ctrl-connection> | </ctrl-connection> | |||
</server> | </server> | |||
</twamp> | </twamp> | |||
</data> | </data> | |||
6.3. Session-Sender | 6.3. Session-Sender | |||
Figure 10 shows a configuration example for a Session-Sender with | ||||
session-sender/admin-state enabled, which permits a device following | ||||
Figure 2 to initiate TWAMP-Test sessions. | ||||
<?xml version="1.0" encoding="utf-8"?> | ||||
<config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | ||||
<twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | ||||
<session-sender> | ||||
<admin-state>true</admin-state> | ||||
</session-sender> | ||||
</twamp> | ||||
</config> | ||||
Figure 10: XML instance enabling Session-Sender operation. | ||||
The following configuration example shows a Session-Sender with the | The following configuration example shows a Session-Sender with the | |||
two TWAMP-Test sessions presented in Section 6.1. | two TWAMP-Test sessions presented in Section 6.1. | |||
<?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
<twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | |||
<session-sender> | <session-sender> | |||
<admin-state>true</admin-state> | <admin-state>true</admin-state> | |||
<test-session> | <test-session> | |||
<name>Test1</name> | <name>Test1</name> | |||
<ctrl-connection-name>RouterA</ctrl-connection-name> | <ctrl-connection-name>RouterA</ctrl-connection-name> | |||
<number-of-packets>900</number-of-packets> | <number-of-packets>900</number-of-packets> | |||
<periodic-interval>1</periodic-interval> | <periodic-interval>1</periodic-interval> | |||
<periodic-interval-units>seconds</periodic-interval-units> | ||||
<state>setup</state> | <state>setup</state> | |||
</test-session> | </test-session> | |||
<test-session> | <test-session> | |||
<name>Test2</name> | <name>Test2</name> | |||
<ctrl-connection-name> | <ctrl-connection-name> | |||
RouterA | RouterA | |||
</ctrl-connection-name> | </ctrl-connection-name> | |||
<number-of-packets>900</number-of-packets> | <number-of-packets>900</number-of-packets> | |||
<lambda>1</lambda> | <lambda>1</lambda> | |||
<lambda-units>1</lambda-units> | ||||
<max-interval>2</max-interval> | <max-interval>2</max-interval> | |||
<truncation-point-units>seconds</truncation-point-units> | ||||
<state>setup</state> | <state>setup</state> | |||
</test-session> | </test-session> | |||
</session-sender> | </session-sender> | |||
</twamp> | </twamp> | |||
</data> | </data> | |||
6.4. Session-Reflector | 6.4. Session-Reflector | |||
This configuration example shows a Session-Reflector with session- | ||||
reflector/admin-state enabled, which permits a device following | ||||
Figure 2 to respond to TWAMP-Test sessions. | ||||
<?xml version="1.0" encoding="utf-8"?> | ||||
<config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | ||||
<twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | ||||
<session-reflector> | ||||
<admin-state>true</admin-state> | ||||
</session-reflector> | ||||
</twamp> | ||||
</config> | ||||
Figure 11: XML instance enabling Session-Reflector operation. | ||||
The following example shows the two Session-Reflector TWAMP-Test | The following example shows the two Session-Reflector TWAMP-Test | |||
sessions corresponding to the test sessions presented in Section 6.3. | sessions corresponding to the test sessions presented in Section 6.3. | |||
<?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
<twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | |||
<session-reflector> | <session-reflector> | |||
<admin-state> | <admin-state>true</admin-state> | |||
true | ||||
</admin-state> | ||||
<test-session> | <test-session> | |||
<sender-ip>10.1.1.1</sender-ip> | <sender-ip>203.0.113.3</sender-ip> | |||
<sender-udp-port>4000</sender-udp-port> | <sender-udp-port>54000</sender-udp-port> | |||
<reflector-ip>10.1.1.2</reflector-ip> | <reflector-ip>203.0.113.4</reflector-ip> | |||
<reflector-udp-port>50001</reflector-udp-port> | <reflector-udp-port>50001</reflector-udp-port> | |||
<sid>1232</sid> | <sid>1232</sid> | |||
<parent-connection-client-ip> | <parent-connection-client-ip> | |||
203.0.113.1 | 203.0.113.1 | |||
</parent-connection-client-ip> | </parent-connection-client-ip> | |||
<parent-connection-client-tcp-port> | <parent-connection-client-tcp-port> | |||
16341 | 16341 | |||
</parent-connection-client-tcp-port> | </parent-connection-client-tcp-port> | |||
<parent-connection-server-ip> | <parent-connection-server-ip> | |||
203.0.113.2 | 203.0.113.2 | |||
skipping to change at page 49, line 22 ¶ | skipping to change at page 50, line 49 ¶ | |||
<parent-connection-server-tcp-port> | <parent-connection-server-tcp-port> | |||
862 | 862 | |||
</parent-connection-server-tcp-port> | </parent-connection-server-tcp-port> | |||
<sent-packets>2</sent-packets> | <sent-packets>2</sent-packets> | |||
<rcv-packets>2</rcv-packets> | <rcv-packets>2</rcv-packets> | |||
<last-sent-seq>1</last-sent-seq> | <last-sent-seq>1</last-sent-seq> | |||
<last-rcv-seq>1</last-rcv-seq> | <last-rcv-seq>1</last-rcv-seq> | |||
</test-session> | </test-session> | |||
<test-session> | <test-session> | |||
<sender-ip>203.0.113.1</sender-ip> | <sender-ip>203.0.113.1</sender-ip> | |||
<sender-udp-port>50000</sender-udp-port> | <sender-udp-port>54001</sender-udp-port> | |||
<reflector-ip>192.68.0.2</reflector-ip> | <reflector-ip>192.68.0.2</reflector-ip> | |||
<reflector-udp-port>50001</reflector-udp-port> | <reflector-udp-port>50001</reflector-udp-port> | |||
<sid>178943</sid> | <sid>178943</sid> | |||
<parent-connection-client-ip> | <parent-connection-client-ip> | |||
203.0.113.1 | 203.0.113.1 | |||
</parent-connection-client-ip> | </parent-connection-client-ip> | |||
<parent-connection-client-tcp-port> | <parent-connection-client-tcp-port> | |||
16341 | 16341 | |||
</parent-connection-client-tcp-port> | </parent-connection-client-tcp-port> | |||
<parent-connection-server-ip> | <parent-connection-server-ip> | |||
skipping to change at page 50, line 5 ¶ | skipping to change at page 51, line 31 ¶ | |||
</session-reflector> | </session-reflector> | |||
</twamp> | </twamp> | |||
</data> | </data> | |||
<?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
<twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | |||
<session-reflector> | <session-reflector> | |||
<admin-state>true</admin-state> | <admin-state>true</admin-state> | |||
<test-session> | <test-session> | |||
<sender-ip>10.1.1.1</sender-ip> | <sender-ip>203.0.113.3</sender-ip> | |||
<sender-udp-port>4000</sender-udp-port> | <sender-udp-port>54000</sender-udp-port> | |||
<reflector-ip>10.1.1.2</reflector-ip> | <reflector-ip>203.0.113.4</reflector-ip> | |||
<reflector-udp-port>5000</reflector-udp-port> | <reflector-udp-port>54001</reflector-udp-port> | |||
<sid>1232</sid> | <sid>1232</sid> | |||
<parent-connection-client-ip> | <parent-connection-client-ip> | |||
203.0.113.1 | 203.0.113.1 | |||
</parent-connection-client-ip> | </parent-connection-client-ip> | |||
<parent-connection-client-tcp-port> | <parent-connection-client-tcp-port> | |||
16341 | 16341 | |||
</parent-connection-client-tcp-port> | </parent-connection-client-tcp-port> | |||
<parent-connection-server-ip> | <parent-connection-server-ip> | |||
203.0.113.2 | 203.0.113.2 | |||
</parent-connection-server-ip> | </parent-connection-server-ip> | |||
skipping to change at page 50, line 26 ¶ | skipping to change at page 52, line 4 ¶ | |||
<parent-connection-server-ip> | <parent-connection-server-ip> | |||
203.0.113.2 | 203.0.113.2 | |||
</parent-connection-server-ip> | </parent-connection-server-ip> | |||
<parent-connection-server-tcp-port> | <parent-connection-server-tcp-port> | |||
862 | 862 | |||
</parent-connection-server-tcp-port> | </parent-connection-server-tcp-port> | |||
<sent-packets>2</sent-packets> | <sent-packets>2</sent-packets> | |||
<rcv-packets>2</rcv-packets> | <rcv-packets>2</rcv-packets> | |||
<last-sent-seq>1</last-sent-seq> | <last-sent-seq>1</last-sent-seq> | |||
<last-rcv-seq>1</last-rcv-seq> | <last-rcv-seq>1</last-rcv-seq> | |||
</test-session> | </test-session> | |||
<test-session> | <test-session> | |||
<sender-ip>203.0.113.1</sender-ip> | <sender-ip>203.0.113.1</sender-ip> | |||
<sender-udp-port>4001</sender-udp-port> | <sender-udp-port>54001</sender-udp-port> | |||
<reflector-ip>192.68.0.2</reflector-ip> | <reflector-ip>192.68.0.2</reflector-ip> | |||
<reflector-udp-port>5001</reflector-udp-port> | <reflector-udp-port>55001</reflector-udp-port> | |||
<sid>178943</sid> | <sid>178943</sid> | |||
<parent-connection-client-ip> | <parent-connection-client-ip> | |||
203.0.113.1 | 203.0.113.1 | |||
</parent-connection-client-ip> | </parent-connection-client-ip> | |||
<parent-connection-client-tcp-port> | <parent-connection-client-tcp-port> | |||
16341 | 16341 | |||
</parent-connection-client-tcp-port> | </parent-connection-client-tcp-port> | |||
<parent-connection-server-ip> | <parent-connection-server-ip> | |||
203.0.113.2 | 203.0.113.2 | |||
</parent-connection-server-ip> | </parent-connection-server-ip> | |||
skipping to change at page 52, line 7 ¶ | skipping to change at page 53, line 30 ¶ | |||
name: ietf-twamp | name: ietf-twamp | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-twamp | namespace: urn:ietf:params:xml:ns:yang:ietf-twamp | |||
prefix: twamp | prefix: twamp | |||
reference: RFC XXXX | reference: RFC XXXX | |||
9. Acknowledgements | 9. Acknowledgements | |||
We thank Fred Baker, Kevin D'Souza, Gregory Mirsky, Brian Trammell | We thank Fred Baker, Kevin D'Souza, Gregory Mirsky, Brian Trammell, | |||
and Robert Sherman for their thorough and constructive reviews, | Robert Sherman, and Marius Georgescu for their thorough and | |||
comments and text suggestions. | constructive reviews, comments and text suggestions. | |||
Haoxing Shen contributed to the definition of the YANG module in | Haoxing Shen contributed to the definition of the YANG module in | |||
Section 5. | Section 5. | |||
Jan Lindblad and Ladislav Lhokta did thorough reviews of the YANG | Jan Lindblad and Ladislav Lhokta did thorough reviews of the YANG | |||
module and the examples in Appendix A. | module and the examples in Appendix A. | |||
Kostas Pentikousis is partially supported by FP7 UNIFY | Kostas Pentikousis was partially supported by FP7 UNIFY | |||
(http://fp7-unify.eu), a research project partially funded by the | (http://fp7-unify.eu), a research project partially funded by the | |||
European Community under the Seventh Framework Program (grant | European Community under the Seventh Framework Program (grant | |||
agreement no. 619609). The views expressed here are those of the | agreement no. 619609). The views expressed here are those of the | |||
authors only. The European Commission is not liable for any use that | authors only. The European Commission is not liable for any use that | |||
may be made of the information in this document. | may be made of the information in this document. | |||
10. References | 10. Contributors | |||
10.1. Normative References | Lianshu Zheng, Huawei Technologies, China | |||
Email: vero.zheng@huawei.com | ||||
11. References | ||||
11.1. Normative References | ||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<http://www.rfc-editor.org/info/rfc2119>. | <http://www.rfc-editor.org/info/rfc2119>. | |||
[RFC3432] Raisanen, V., Grotefeld, G., and A. Morton, "Network | [RFC3432] Raisanen, V., Grotefeld, G., and A. Morton, "Network | |||
performance measurement with periodic streams", RFC 3432, | performance measurement with periodic streams", RFC 3432, | |||
DOI 10.17487/RFC3432, November 2002, | DOI 10.17487/RFC3432, November 2002, | |||
<http://www.rfc-editor.org/info/rfc3432>. | <http://www.rfc-editor.org/info/rfc3432>. | |||
skipping to change at page 53, line 22 ¶ | skipping to change at page 55, line 5 ¶ | |||
Features", RFC 6038, DOI 10.17487/RFC6038, October 2010, | Features", RFC 6038, DOI 10.17487/RFC6038, October 2010, | |||
<http://www.rfc-editor.org/info/rfc6038>. | <http://www.rfc-editor.org/info/rfc6038>. | |||
[RFC7717] Pentikousis, K., Ed., Zhang, E., and Y. Cui, | [RFC7717] Pentikousis, K., Ed., Zhang, E., and Y. Cui, | |||
"IKEv2-Derived Shared Secret Key for the One-Way Active | "IKEv2-Derived Shared Secret Key for the One-Way Active | |||
Measurement Protocol (OWAMP) and Two-Way Active | Measurement Protocol (OWAMP) and Two-Way Active | |||
Measurement Protocol (TWAMP)", RFC 7717, | Measurement Protocol (TWAMP)", RFC 7717, | |||
DOI 10.17487/RFC7717, December 2015, | DOI 10.17487/RFC7717, December 2015, | |||
<http://www.rfc-editor.org/info/rfc7717>. | <http://www.rfc-editor.org/info/rfc7717>. | |||
10.2. Informative References | 11.2. Informative References | |||
[I-D.ietf-ippm-metric-registry] | [I-D.ietf-ippm-metric-registry] | |||
Bagnulo, M., Claise, B., Eardley, P., Morton, A., and A. | Bagnulo, M., Claise, B., Eardley, P., Morton, A., and A. | |||
Akhter, "Registry for Performance Metrics", draft-ietf- | Akhter, "Registry for Performance Metrics", draft-ietf- | |||
ippm-metric-registry-10 (work in progress), November 2016. | ippm-metric-registry-10 (work in progress), November 2016. | |||
[I-D.ietf-netconf-restconf] | [I-D.ietf-netconf-restconf] | |||
Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | |||
Protocol", draft-ietf-netconf-restconf-18 (work in | Protocol", draft-ietf-netconf-restconf-18 (work in | |||
progress), October 2016. | progress), October 2016. | |||
skipping to change at page 55, line 29 ¶ | skipping to change at page 57, line 9 ¶ | |||
<secret-key>secret2</secret-key> | <secret-key>secret2</secret-key> | |||
</key-chain> | </key-chain> | |||
<ctrl-connection> | <ctrl-connection> | |||
<name>RouterA</name> | <name>RouterA</name> | |||
<client-ip>203.0.113.1</client-ip> | <client-ip>203.0.113.1</client-ip> | |||
<server-ip>203.0.113.2</server-ip> | <server-ip>203.0.113.2</server-ip> | |||
<dscp>32</dscp> | <dscp>32</dscp> | |||
<key-id>KeyClient1ToRouterA</key-id> | <key-id>KeyClient1ToRouterA</key-id> | |||
<test-session-request> | <test-session-request> | |||
<name>Test1</name> | <name>Test1</name> | |||
<sender-ip>10.1.1.1</sender-ip> | <sender-ip>203.0.113.3</sender-ip> | |||
<sender-udp-port>4000</sender-udp-port> | <sender-udp-port>54000</sender-udp-port> | |||
<reflector-ip>10.1.1.2</reflector-ip> | <reflector-ip>203.0.113.4</reflector-ip> | |||
<reflector-udp-port>5000</reflector-udp-port> | <reflector-udp-port>55000</reflector-udp-port> | |||
<padding-length>64</padding-length> | <padding-length>64</padding-length> | |||
<start-time>0</start-time> | <start-time>0</start-time> | |||
<state>ok</state> | <state>ok</state> | |||
<sid>1232</sid> | <sid>1232</sid> | |||
</test-session-request> | </test-session-request> | |||
<test-session-request> | <test-session-request> | |||
<name>Test2</name> | <name>Test2</name> | |||
<sender-ip>203.0.113.1</sender-ip> | <sender-ip>203.0.113.1</sender-ip> | |||
<sender-udp-port>4001</sender-udp-port> | <sender-udp-port>54001</sender-udp-port> | |||
<reflector-ip>203.0.113.2</reflector-ip> | <reflector-ip>203.0.113.2</reflector-ip> | |||
<reflector-udp-port>5001</reflector-udp-port> | <reflector-udp-port>55001</reflector-udp-port> | |||
<padding-length>128</padding-length> | <padding-length>128</padding-length> | |||
<start-time>0</start-time> | <start-time>0</start-time> | |||
<state>ok</state> | <state>ok</state> | |||
<sid>178943</sid> | <sid>178943</sid> | |||
</test-session-request> | </test-session-request> | |||
</ctrl-connection> | </ctrl-connection> | |||
</client> | </client> | |||
</twamp> | </twamp> | |||
</data> | </data> | |||
<?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
<twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | |||
<client> | <client> | |||
<admin-state>true</admin-state> | <admin-state>true</admin-state> | |||
<mode-preference-chain> | <mode-preference-chain> | |||
<priority>0</priority> | <priority>0</priority> | |||
<mode>authenticated</mode> | <mode>authenticated</mode> | |||
skipping to change at page 56, line 37 ¶ | skipping to change at page 58, line 16 ¶ | |||
</key-chain> | </key-chain> | |||
<ctrl-connection> | <ctrl-connection> | |||
<name>RouterA</name> | <name>RouterA</name> | |||
<client-ip>2001:DB8:203:0:113::1</client-ip> | <client-ip>2001:DB8:203:0:113::1</client-ip> | |||
<server-ip>2001:DB8:203:0:113::2</server-ip> | <server-ip>2001:DB8:203:0:113::2</server-ip> | |||
<dscp>32</dscp> | <dscp>32</dscp> | |||
<key-id>KeyClient1ToRouterA</key-id> | <key-id>KeyClient1ToRouterA</key-id> | |||
<test-session-request> | <test-session-request> | |||
<name>Test1</name> | <name>Test1</name> | |||
<sender-ip>2001:DB8:10:1:1::1</sender-ip> | <sender-ip>2001:DB8:10:1:1::1</sender-ip> | |||
<sender-udp-port>4000</sender-udp-port> | <sender-udp-port>54000</sender-udp-port> | |||
<reflector-ip>2001:DB8:10:1:1::2</reflector-ip> | <reflector-ip>2001:DB8:10:1:1::2</reflector-ip> | |||
<reflector-udp-port>5000</reflector-udp-port> | <reflector-udp-port>55000</reflector-udp-port> | |||
<padding-length>64</padding-length> | <padding-length>64</padding-length> | |||
<start-time>0</start-time> | <start-time>0</start-time> | |||
<state>ok</state> | <state>ok</state> | |||
<sid>1232</sid> | <sid>1232</sid> | |||
</test-session-request> | </test-session-request> | |||
<test-session-request> | <test-session-request> | |||
<name>Test2</name> | <name>Test2</name> | |||
<sender-ip>2001:DB8:203:0:113::1</sender-ip> | <sender-ip>2001:DB8:203:0:113::1</sender-ip> | |||
<sender-udp-port>4001</sender-udp-port> | <sender-udp-port>54001</sender-udp-port> | |||
<reflector-ip>2001:DB8:203:0:113::2</reflector-ip> | <reflector-ip>2001:DB8:203:0:113::2</reflector-ip> | |||
<reflector-udp-port>5001</reflector-udp-port> | <reflector-udp-port>55001</reflector-udp-port> | |||
<padding-length>128</padding-length> | <padding-length>128</padding-length> | |||
<start-time>0</start-time> | <start-time>0</start-time> | |||
<state>ok</state> | <state>ok</state> | |||
<sid>178943</sid> | <sid>178943</sid> | |||
</test-session-request> | </test-session-request> | |||
</ctrl-connection> | </ctrl-connection> | |||
</client> | </client> | |||
</twamp> | </twamp> | |||
</data> | </data> | |||
skipping to change at page 59, line 15 ¶ | skipping to change at page 60, line 28 ¶ | |||
<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
<twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | |||
<session-sender> | <session-sender> | |||
<admin-state>true</admin-state> | <admin-state>true</admin-state> | |||
<test-session> | <test-session> | |||
<name>Test1</name> | <name>Test1</name> | |||
<ctrl-connection-name>RouterA</ctrl-connection-name> | <ctrl-connection-name>RouterA</ctrl-connection-name> | |||
<fill-mode>zero</fill-mode> | <fill-mode>zero</fill-mode> | |||
<number-of-packets>900</number-of-packets> | <number-of-packets>900</number-of-packets> | |||
<periodic-interval>1</periodic-interval> | <periodic-interval>1</periodic-interval> | |||
<periodic-interval-units> | ||||
seconds | ||||
</periodic-interval-units> | ||||
<state>setup</state> | <state>setup</state> | |||
<sent-packets>2</sent-packets> | <sent-packets>2</sent-packets> | |||
<rcv-packets>2</rcv-packets> | <rcv-packets>2</rcv-packets> | |||
<last-sent-seq>1</last-sent-seq> | <last-sent-seq>1</last-sent-seq> | |||
<last-rcv-seq>1</last-rcv-seq> | <last-rcv-seq>1</last-rcv-seq> | |||
</test-session> | </test-session> | |||
<test-session> | <test-session> | |||
<name>Test2</name> | <name>Test2</name> | |||
<ctrl-connection-name> | <ctrl-connection-name> | |||
RouterA | RouterA | |||
</ctrl-connection-name> | </ctrl-connection-name> | |||
<fill-mode>random</fill-mode> | <fill-mode>random</fill-mode> | |||
<number-of-packets>900</number-of-packets> | <number-of-packets>900</number-of-packets> | |||
<lambda>1</lambda> | <lambda>1</lambda> | |||
<lambda-units>1</lambda-units> | ||||
<max-interval>2</max-interval> | <max-interval>2</max-interval> | |||
<truncation-point-units>seconds</truncation-point-units> | ||||
<state>setup</state> | <state>setup</state> | |||
<sent-packets>21</sent-packets> | <sent-packets>21</sent-packets> | |||
<rcv-packets>21</rcv-packets> | <rcv-packets>21</rcv-packets> | |||
<last-sent-seq>20</last-sent-seq> | <last-sent-seq>20</last-sent-seq> | |||
<last-rcv-seq>20</last-rcv-seq> | <last-rcv-seq>20</last-rcv-seq> | |||
</test-session> | </test-session> | |||
</session-sender> | </session-sender> | |||
</twamp> | </twamp> | |||
</data> | </data> | |||
A.4. Session-Reflector | A.4. Session-Reflector | |||
<?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
<twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | |||
<session-reflector> | <session-reflector> | |||
<admin-state> | <admin-state> | |||
true | true | |||
</admin-state> | </admin-state> | |||
<test-session> | <test-session> | |||
<sender-ip>10.1.1.1</sender-ip> | <sender-ip>203.0.113.3</sender-ip> | |||
<sender-udp-port>4000</sender-udp-port> | <sender-udp-port>54000</sender-udp-port> | |||
<reflector-ip>10.1.1.2</reflector-ip> | <reflector-ip>203.0.113.4</reflector-ip> | |||
<reflector-udp-port>5000</reflector-udp-port> | <reflector-udp-port>55000</reflector-udp-port> | |||
<sid>1232</sid> | <sid>1232</sid> | |||
<parent-connection-client-ip> | <parent-connection-client-ip> | |||
203.0.113.1 | 203.0.113.1 | |||
</parent-connection-client-ip> | </parent-connection-client-ip> | |||
<parent-connection-client-tcp-port> | <parent-connection-client-tcp-port> | |||
16341 | 16341 | |||
</parent-connection-client-tcp-port> | </parent-connection-client-tcp-port> | |||
<parent-connection-server-ip> | <parent-connection-server-ip> | |||
203.0.113.2 | 203.0.113.2 | |||
</parent-connection-server-ip> | </parent-connection-server-ip> | |||
skipping to change at page 60, line 32 ¶ | skipping to change at page 61, line 40 ¶ | |||
862 | 862 | |||
</parent-connection-server-tcp-port> | </parent-connection-server-tcp-port> | |||
<dscp>32</dscp> | <dscp>32</dscp> | |||
<sent-packets>2</sent-packets> | <sent-packets>2</sent-packets> | |||
<rcv-packets>2</rcv-packets> | <rcv-packets>2</rcv-packets> | |||
<last-sent-seq>1</last-sent-seq> | <last-sent-seq>1</last-sent-seq> | |||
<last-rcv-seq>1</last-rcv-seq> | <last-rcv-seq>1</last-rcv-seq> | |||
</test-session> | </test-session> | |||
<test-session> | <test-session> | |||
<sender-ip>203.0.113.1</sender-ip> | <sender-ip>203.0.113.1</sender-ip> | |||
<sender-udp-port>4001</sender-udp-port> | <sender-udp-port>54001</sender-udp-port> | |||
<reflector-ip>192.68.0.2</reflector-ip> | <reflector-ip>192.68.0.2</reflector-ip> | |||
<reflector-udp-port>5001</reflector-udp-port> | <reflector-udp-port>55001</reflector-udp-port> | |||
<sid>178943</sid> | <sid>178943</sid> | |||
<parent-connection-client-ip> | <parent-connection-client-ip> | |||
203.0.113.1 | 203.0.113.1 | |||
</parent-connection-client-ip> | </parent-connection-client-ip> | |||
<parent-connection-client-tcp-port> | <parent-connection-client-tcp-port> | |||
16341 | 16341 | |||
</parent-connection-client-tcp-port> | </parent-connection-client-tcp-port> | |||
<parent-connection-server-ip> | <parent-connection-server-ip> | |||
203.0.113.2 | 203.0.113.2 | |||
</parent-connection-server-ip> | </parent-connection-server-ip> | |||
skipping to change at page 61, line 17 ¶ | skipping to change at page 62, line 24 ¶ | |||
</twamp> | </twamp> | |||
</data> | </data> | |||
<?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
<twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | <twamp xmlns="urn:ietf:params:xml:ns:yang:ietf-twamp"> | |||
<session-reflector> | <session-reflector> | |||
<admin-state>true</admin-state> | <admin-state>true</admin-state> | |||
<test-session> | <test-session> | |||
<sender-ip>2001:DB8:10:1:1::1</sender-ip> | <sender-ip>2001:DB8:10:1:1::1</sender-ip> | |||
<sender-udp-port>4000</sender-udp-port> | <sender-udp-port>54000</sender-udp-port> | |||
<reflector-ip>2001:DB8:10:1:1::2</reflector-ip> | <reflector-ip>2001:DB8:10:1:1::2</reflector-ip> | |||
<reflector-udp-port>5000</reflector-udp-port> | <reflector-udp-port>55000</reflector-udp-port> | |||
<sid>1232</sid> | <sid>1232</sid> | |||
<parent-connection-client-ip> | <parent-connection-client-ip> | |||
2001:DB8:203:0:113::1 | 2001:DB8:203:0:113::1 | |||
</parent-connection-client-ip> | </parent-connection-client-ip> | |||
<parent-connection-client-tcp-port> | <parent-connection-client-tcp-port> | |||
16341 | 16341 | |||
</parent-connection-client-tcp-port> | </parent-connection-client-tcp-port> | |||
<parent-connection-server-ip> | <parent-connection-server-ip> | |||
2001:DB8:203:0:113::2 | 2001:DB8:203:0:113::2 | |||
</parent-connection-server-ip> | </parent-connection-server-ip> | |||
skipping to change at page 61, line 41 ¶ | skipping to change at page 62, line 48 ¶ | |||
862 | 862 | |||
</parent-connection-server-tcp-port> | </parent-connection-server-tcp-port> | |||
<dscp>32</dscp> | <dscp>32</dscp> | |||
<sent-packets>2</sent-packets> | <sent-packets>2</sent-packets> | |||
<rcv-packets>2</rcv-packets> | <rcv-packets>2</rcv-packets> | |||
<last-sent-seq>1</last-sent-seq> | <last-sent-seq>1</last-sent-seq> | |||
<last-rcv-seq>1</last-rcv-seq> | <last-rcv-seq>1</last-rcv-seq> | |||
</test-session> | </test-session> | |||
<test-session> | <test-session> | |||
<sender-ip>2001:DB8:203:0:113::1</sender-ip> | <sender-ip>2001:DB8:203:0:113::1</sender-ip> | |||
<sender-udp-port>4001</sender-udp-port> | <sender-udp-port>54001</sender-udp-port> | |||
<reflector-ip>2001:DB8:192:68::2</reflector-ip> | <reflector-ip>2001:DB8:192:68::2</reflector-ip> | |||
<reflector-udp-port>5001</reflector-udp-port> | <reflector-udp-port>55001</reflector-udp-port> | |||
<sid>178943</sid> | <sid>178943</sid> | |||
<parent-connection-client-ip> | <parent-connection-client-ip> | |||
2001:DB8:203:0:113::1 | 2001:DB8:203:0:113::1 | |||
</parent-connection-client-ip> | </parent-connection-client-ip> | |||
<parent-connection-client-tcp-port> | <parent-connection-client-tcp-port> | |||
16341 | 16341 | |||
</parent-connection-client-tcp-port> | </parent-connection-client-tcp-port> | |||
<parent-connection-server-ip> | <parent-connection-server-ip> | |||
2001:DB8:203:0:113::2 | 2001:DB8:203:0:113::2 | |||
</parent-connection-server-ip> | </parent-connection-server-ip> | |||
skipping to change at page 63, line 37 ¶ | skipping to change at line 2984 ¶ | |||
Email: mjethanandani@gmail.com | Email: mjethanandani@gmail.com | |||
Kostas Pentikousis (editor) | Kostas Pentikousis (editor) | |||
Travelping | Travelping | |||
Koernerstr. 7-10 | Koernerstr. 7-10 | |||
Berlin 10785 | Berlin 10785 | |||
Germany | Germany | |||
Email: k.pentikousis@travelping.com | Email: k.pentikousis@travelping.com | |||
Lianshu Zheng | ||||
Huawei Technologies | ||||
China | ||||
Email: vero.zheng@huawei.com | ||||
End of changes. 272 change blocks. | ||||
1232 lines changed or deleted | 1306 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |