draft-ietf-ippm-6man-pdm-option-13v3.original | draft-ietf-ippm-6man-pdm-option-13v3.txt | |||
---|---|---|---|---|
INTERNET-DRAFT N. Elkins | Internet Engineering Task Force N. Elkins | |||
Inside Products | Internet-Draft Inside Products | |||
R. Hamilton | Intended status: Standards Track R. Hamilton | |||
Chemical Abstracts Service | Expires: December 28, 2017 Chemical Abstracts Service | |||
M. Ackermann | M. Ackermann | |||
Intended Status: Proposed Standard BCBS Michigan | BCBS Michigan | |||
Expires: December 28, 2017 June 26, 2017 | June 26, 2017 | |||
IPv6 Performance and Diagnostic Metrics (PDM) Destination Option | IPv6 Performance and Diagnostic Metrics (PDM) Destination Option | |||
draft-ietf-ippm-6man-pdm-option-13 | draft-ietf-ippm-6man-pdm-option-13 | |||
Abstract | Abstract | |||
To assess performance problems, this document describes optional | To assess performance problems, this document describes optional | |||
headers embedded in each packet that provide sequence numbers and | headers embedded in each packet that provide sequence numbers and | |||
timing information as a basis for measurements. Such measurements | timing information as a basis for measurements. Such measurements | |||
may be interpreted in real-time or after the fact. This document | may be interpreted in real-time or after the fact. This document | |||
specifies the Performance and Diagnostic Metrics (PDM) destination | specifies the Performance and Diagnostic Metrics (PDM) destination | |||
options extension header. The field limits, calculations, and usage | options extension header. The field limits, calculations, and usage | |||
in measurement of PDM are included in this document. | in measurement of PDM are included in this document. | |||
Status of this Memo | Status of This Memo | |||
This Internet-Draft is submitted to IETF in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF), its areas, and its working groups. Note that | Task Force (IETF). Note that other groups may also distribute | |||
other groups may also distribute working documents as | working documents as Internet-Drafts. The list of current Internet- | |||
Internet-Drafts. | 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." | |||
The list of current Internet-Drafts can be accessed at | This Internet-Draft will expire on December 28, 2017. | |||
http://www.ietf.org/1id-abstracts.html | ||||
The list of Internet-Draft Shadow Directories can be accessed at | ||||
http://www.ietf.org/shadow.html | ||||
Copyright and License Notice | Copyright Notice | |||
Copyright (c) 2017 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. | |||
IETF Trust Legal Provisions of 28-dec-2009, Section 6.b(i), paragraph | This document is subject to BCP 78 and the IETF Trust's Legal | |||
3: 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 | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1 Background . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 1. Background . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.1 Terminology . . . . . . . . . . . . . . . . . . . . . . . . 5 | 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.2 Rationale for defined solution . . . . . . . . . . . . . . . 5 | 1.2. Rationale for defined solution . . . . . . . . . . . . . 3 | |||
1.3 IPv6 Transition Technologies . . . . . . . . . . . . . . . . 6 | 1.3. IPv6 Transition Technologies . . . . . . . . . . . . . . 4 | |||
2 Measurement Information Derived from PDM . . . . . . . . . . . . 6 | 2. Measurement Information Derived from PDM . . . . . . . . . . 4 | |||
2.1 Round-Trip Delay . . . . . . . . . . . . . . . . . . . . . . 6 | 2.1. Round-Trip Delay . . . . . . . . . . . . . . . . . . . . 5 | |||
2.2 Server Delay . . . . . . . . . . . . . . . . . . . . . . . . 7 | 2.2. Server Delay . . . . . . . . . . . . . . . . . . . . . . 5 | |||
3 Performance and Diagnostic Metrics Destination Option Layout . . 7 | 3. Performance and Diagnostic Metrics Destination Option Layout 5 | |||
3.1 Destination Options Header . . . . . . . . . . . . . . . . . 7 | 3.1. Destination Options Header . . . . . . . . . . . . . . . 5 | |||
3.2 Performance and Diagnostic Metrics Destination Option . . . 7 | 3.2. Performance and Diagnostic Metrics Destination Option . . 6 | |||
3.2.1 PDM Layout . . . . . . . . . . . . . . . . . . . . . . . 7 | 3.2.1. PDM Layout . . . . . . . . . . . . . . . . . . . . . 6 | |||
3.2.2 Base Unit for Time Measurement . . . . . . . . . . . . . 10 | 3.2.2. Base Unit for Time Measurement . . . . . . . . . . . 8 | |||
3.3 Header Placement . . . . . . . . . . . . . . . . . . . . . . 11 | 3.3. Header Placement . . . . . . . . . . . . . . . . . . . . 8 | |||
3.4 Header Placement Using IPSec ESP Mode . . . . . . . . . . . 11 | 3.4. Header Placement Using IPSec ESP Mode . . . . . . . . . . 8 | |||
3.4.1 Using ESP Transport Mode . . . . . . . . . . . . . . . . 11 | 3.4.1. Using ESP Transport Mode . . . . . . . . . . . . . . 9 | |||
3.4.2 Using ESP Tunnel Mode . . . . . . . . . . . . . . . . . 12 | 3.4.2. Using ESP Tunnel Mode . . . . . . . . . . . . . . . . 9 | |||
3.5 Implementation Considerations . . . . . . . . . . . . . . . 12 | 3.5. Implementation Considerations . . . . . . . . . . . . . . 9 | |||
3.5.1 PDM Activation . . . . . . . . . . . . . . . . . . . . . 12 | 3.5.1. PDM Activation . . . . . . . . . . . . . . . . . . . 9 | |||
3.5.2 PDM Timestamps . . . . . . . . . . . . . . . . . . . . . 12 | 3.5.2. PDM Timestamps . . . . . . . . . . . . . . . . . . . 9 | |||
3.6 Dynamic Configuration Options . . . . . . . . . . . . . . . 12 | 3.6. Dynamic Configuration Options . . . . . . . . . . . . . . 10 | |||
3.7 Information Access and Storage . . . . . . . . . . . . . . . 13 | 3.7. Information Access and Storage . . . . . . . . . . . . . 10 | |||
4 Security Considerations . . . . . . . . . . . . . . . . . . . . 13 | 4. Security Considerations . . . . . . . . . . . . . . . . . . . 10 | |||
4.1 Resource Consumption and Resource Consumption Attacks . . . 13 | 4.1. Resource Consumption and Resource Consumption Attacks . . 10 | |||
4.2 Pervasive monitoring . . . . . . . . . . . . . . . . . . . . 13 | 4.2. Pervasive monitoring . . . . . . . . . . . . . . . . . . 11 | |||
4.3 PDM as a Covert Channel . . . . . . . . . . . . . . . . . . 14 | 4.3. PDM as a Covert Channel . . . . . . . . . . . . . . . . . 11 | |||
4.4 Timing Attacks . . . . . . . . . . . . . . . . . . . . . . . 14 | 4.4. Timing Attacks . . . . . . . . . . . . . . . . . . . . . 12 | |||
5 IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 15 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 | |||
6 References . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 | 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
6.1 Normative References . . . . . . . . . . . . . . . . . . . . 15 | 6.1. Normative References . . . . . . . . . . . . . . . . . . 13 | |||
6.2 Informative References . . . . . . . . . . . . . . . . . . . 16 | 6.2. Informative References . . . . . . . . . . . . . . . . . 13 | |||
Appendix A: Context for PDM . . . . . . . . . . . . . . . . . . . 16 | Appendix A. Context for PDM . . . . . . . . . . . . . . . . . . 14 | |||
A.1 End User Quality of Service (QoS) . . . . . . . . . . . . . 16 | A.1. End User Quality of Service (QoS) . . . . . . . . . . . . 14 | |||
A.2 Need for a Packet Sequence Number (PSN) . . . . . . . . . . 17 | A.2. Need for a Packet Sequence Number (PSN) . . . . . . . . . 14 | |||
A.3 Rationale for Defined Solution . . . . . . . . . . . . . . . 17 | A.3. Rationale for Defined Solution . . . . . . . . . . . . . 14 | |||
A.4 Use PDM with Other Headers . . . . . . . . . . . . . . . . . 17 | A.4. Use PDM with Other Headers . . . . . . . . . . . . . . . 15 | |||
Appendix B : Timing Considerations . . . . . . . . . . . . . . . . 19 | Appendix B. Timing Considerations . . . . . . . . . . . . . . . 15 | |||
B.1 Timing Differential Calculations . . . . . . . . . . . . . . 19 | B.1. Timing Differential Calculations . . . . . . . . . . . . 15 | |||
B.2 Considerations of this time-differential representation . . 20 | B.2. Considerations of this time-differential representation . 17 | |||
B.2.1 Limitations with this encoding method . . . . . . . . . 20 | B.2.1. Limitations with this encoding method . . . . . . . . 17 | |||
B.2.2 Loss of precision induced by timer value truncation . . 21 | B.2.2. Loss of precision induced by timer value truncation . 17 | |||
Appendix C: Sample Packet Flows . . . . . . . . . . . . . . . . . 22 | ||||
C.1 PDM Flow - Simple Client Server . . . . . . . . . . . . . . 22 | ||||
C.1.1 Step 1 . . . . . . . . . . . . . . . . . . . . . . . . . 23 | ||||
C.1.2 Step 2 . . . . . . . . . . . . . . . . . . . . . . . . . 23 | ||||
C.1.3 Step 3 . . . . . . . . . . . . . . . . . . . . . . . . . 24 | ||||
C.1.4 Step 4 . . . . . . . . . . . . . . . . . . . . . . . . . 25 | ||||
C.1.5 Step 5 . . . . . . . . . . . . . . . . . . . . . . . . . 26 | ||||
C.2 Other Flows . . . . . . . . . . . . . . . . . . . . . . . . 26 | ||||
C.2.1 PDM Flow - One Way Traffic . . . . . . . . . . . . . . . 26 | ||||
C.2.2 PDM Flow - Multiple Send Traffic . . . . . . . . . . . . 28 | ||||
C.2.3 PDM Flow - Multiple Send with Errors . . . . . . . . . . 29 | ||||
Appendix D: Potential Overhead Considerations . . . . . . . . . . 30 | ||||
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 31 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 32 | ||||
1 Background | Appendix C. Sample Packet Flows . . . . . . . . . . . . . . . . 19 | |||
C.1. PDM Flow - Simple Client Server . . . . . . . . . . . . . 19 | ||||
C.1.1. Step 1 . . . . . . . . . . . . . . . . . . . . . . . 19 | ||||
C.1.2. Step 2 . . . . . . . . . . . . . . . . . . . . . . . 20 | ||||
C.1.3. Step 3 . . . . . . . . . . . . . . . . . . . . . . . 20 | ||||
C.1.4. Step 4 . . . . . . . . . . . . . . . . . . . . . . . 21 | ||||
C.1.5. Step 5 . . . . . . . . . . . . . . . . . . . . . . . 22 | ||||
C.2. Other Flows . . . . . . . . . . . . . . . . . . . . . . . 23 | ||||
C.2.1. PDM Flow - One Way Traffic . . . . . . . . . . . . . 23 | ||||
C.2.2. PDM Flow - Multiple Send Traffic . . . . . . . . . . 24 | ||||
C.2.3. PDM Flow - Multiple Send with Errors . . . . . . . . 25 | ||||
Appendix D. Potential Overhead Considerations . . . . . . . . . 27 | ||||
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 28 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 28 | ||||
1. Background | ||||
To assess performance problems, measurements based on optional | To assess performance problems, measurements based on optional | |||
sequence numbers and timing may be embedded in each packet. Such | sequence numbers and timing may be | |||
measurements may be interpreted in real-time or after the fact. | embedded in each packet. Such | |||
measurements may be interpreted in | ||||
real-time or after the fact. | ||||
As defined in RFC2460 [RFC2460], destination options are carried by | As defined in RFC2460 [RFC2460], destination options are carried by | |||
the IPv6 Destination Options extension header. Destination options | the IPv6 Destination Options extension header. Destination options | |||
include optional information that need be examined only by the IPv6 | include optional information that need be examined only by the IPv6 | |||
node given as the destination address in the IPv6 header, not by | node given as the destination address in the IPv6 header, not by | |||
routers or other "middle boxes". This document specifies the | routers or other "middle boxes". This document specifies the | |||
Performance and Diagnostic Metrics (PDM) destination option. The | Performance and Diagnostic Metrics (PDM) destination option. The | |||
field limits, calculations, and usage in measurement of the PDM | field limits, calculations, and usage in measurement of the PDM | |||
destination options extension header are included in this document. | destination options extension header are included in this document. | |||
1.1 Terminology | 1.1. 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 RFC 2119 [RFC2119]. | document are to be interpreted as described in RFC 2119 [RFC2119]. | |||
1.2 Rationale for defined solution | 1.2. Rationale for defined solution | |||
The current IPv6 specification does not provide timing nor a similar | The current IPv6 specification does not provide timing nor a similar | |||
field in the IPv6 main header or in any extension header. The IPv6 | field in the IPv6 main header or in any extension header. The IPv6 | |||
Performance and Diagnostic Metrics destination option (PDM) provides | Performance and Diagnostic Metrics destination option (PDM) provides | |||
such fields. | such fields. | |||
Advantages include: | Advantages include: | |||
1. Real measure of actual transactions. | 1. Real measure of actual transactions. | |||
2. Ability to span organizational boundaries with consistent | 2. Ability to span organizational boundaries with consistent | |||
instrumentation. | instrumentation. | |||
3. No time synchronization needed between session partners | 1. No time synchronization needed between session partners | |||
4. Ability to handle all transport protocols (TCP, UDP, SCTP, etc) in | 4. Ability to handle all transport protocols (TCP, UDP, SCTP, etc) | |||
a uniform way | in a uniform way | |||
The PDM provides the ability to determine quickly if the (latency) | The PDM provides the ability to determine quickly if the (latency) | |||
problem is in the network or in the server (application). That is, | problem is in the network or in the server (application). That is, | |||
it is a fast way to do triage. For more information on background | it is a fast way to do triage. For more information on background | |||
and usage of PDM, see Appendix A. | and usage of PDM, see Appendix A. | |||
1.3 IPv6 Transition Technologies | 1.3. IPv6 Transition Technologies | |||
In the path to full implementation of IPv6, transition technologies | In the path to full implementation of IPv6, transition technologies | |||
such as translation or tunneling may be employed. It is possible | such as translation or tunneling may be employed. It is possible | |||
that an IPv6 packet containing PDM may be dropped if using IPv6 | that an IPv6 packet containing PDM may be dropped if using IPv6 | |||
transition technologies. For example, an implementation using a | transition technologies. For example, an implementation using a | |||
translation technique (IPv6 to IPv4) which does not support or | translation technique (IPv6 to IPv4) which does not support or | |||
recognize the IPv6 Destination Options extension header may simply | recognize the IPv6 Destination Options extension header may simply | |||
drop the packet rather than translating it without the extension | drop the packet rather than translating it without the extension | |||
header. | header. | |||
It is also possible that some devices in the network may not | It is also possible that some devices in the network may not | |||
correctly handle multiple IPv6 Extension Headers, including the IPv6 | correctly handle multiple IPv6 Extension Headers, including the IPv6 | |||
Destination Option. For example, adding the PDM header to a packet | Destination Option. For example, adding the PDM header to a packet | |||
may push the layer 4 information to a point in the packet where it is | may push the layer 4 information to a point in the packet where it is | |||
not visible to filtering logic, and may be dropped. This kind of | not visible to filtering logic, and may be dropped. This kind of | |||
situation is expected to become rare over time. | situation is expected to become rare over time. | |||
2 Measurement Information Derived from PDM | 2. Measurement Information Derived from PDM | |||
Each packet contains information about the sender and receiver. In IP | Each packet contains information about the sender and receiver. In | |||
protocol, the identifying information is called a "5-tuple". | IP protocol, the identifying information is called a "5-tuple". | |||
The 5-tuple consists of: | The 5-tuple consists of: | |||
SADDR : IP address of the sender | SADDR : IP address of the sender | |||
SPORT : Port for sender | SPORT : Port for sender | |||
DADDR : IP address of the destination | DADDR : IP address of the destination | |||
DPORT : Port for destination | DPORT : Port for destination | |||
PROTC : Protocol for upper layer (ex. TCP, UDP, ICMP, etc.) | PROTC : Protocol for upper layer (ex. TCP, UDP, ICMP, etc.) | |||
The PDM contains the following base fields: | The PDM contains the following base fields: | |||
PSNTP : Packet Sequence Number This Packet | PSNTP : Packet Sequence Number This Packet | |||
PSNLR : Packet Sequence Number Last Received | PSNLR : Packet Sequence Number Last Received DELTATLR | |||
DELTATLR : Delta Time Last Received | : Delta Time Last Received DELTATLS : Delta Time Last | |||
DELTATLS : Delta Time Last Sent | Sent | |||
Other fields for storing time scaling factors are also in the PDM and | Other fields for storing time scaling factors are also in the PDM and | |||
will be described in section 3. | will be described in section 3. | |||
This information, combined with the 5-tuple, allows the measurement | This information, combined with the 5-tuple, allows the measurement | |||
of the following metrics: | of the following metrics: | |||
1. Round-trip delay | 1. Round-trip delay | |||
2. Server delay | 2. Server delay | |||
2.1 Round-Trip Delay | 2.1. Round-Trip Delay | |||
Round-trip *Network* delay is the delay for packet transfer from a | Round-trip *Network* delay is the delay for packet transfer from a | |||
source host to a destination host and then back to the source host. | source host to a destination host and then back to the source host. | |||
This measurement has been defined, and the advantages and | This measurement has been defined, and the advantages and | |||
disadvantages discussed in "A Round-trip Delay Metric for IPPM" | disadvantages discussed in "A Round-trip Delay Metric for IPPM" | |||
[RFC2681]. | [RFC2681]. | |||
2.2 Server Delay | 2.2. Server Delay | |||
Server delay is the interval between when a packet is received by a | Server delay is the interval between when a packet is received by a | |||
device and the first corresponding packet is sent back in response. | device and the first corresponding packet is sent back in response. | |||
This may be "Server Processing Time". It may also be a delay caused | This may be "Server Processing Time". It may also be a delay caused | |||
by acknowledgements. Server processing time includes the time taken | by acknowledgements. Server processing time includes the time taken | |||
by the combination of the stack and application to return the | by the combination of the stack and application to return the | |||
response. The stack delay may be related to network performance. If | response. The stack delay may be related to network performance. If | |||
this aggregate time is seen as a problem, and there is a need to make | this aggregate time is seen as a problem, and there is a need to make | |||
a clear distinction between application processing time and stack | a clear distinction between application processing time and stack | |||
delay, including that caused by the network, then more client based | delay, including that caused by the network, then more client based | |||
measurements are needed. | measurements are needed. | |||
3 Performance and Diagnostic Metrics Destination Option Layout | 3. Performance and Diagnostic Metrics Destination Option Layout | |||
3.1 Destination Options Header | 3.1. Destination Options Header | |||
The IPv6 Destination Options Header is used to carry optional | The IPv6 Destination Options Header is used to carry optional | |||
information that needs to be examined only by a packet's destination | information that needs to be examined only by a packet's destination | |||
node(s). The Destination Options Header is identified by a Next | node(s). The Destination Options Header is identified by a Next | |||
Header value of 60 in the immediately preceding header and is defined | Header value of 60 in the immediately preceding header and is defined | |||
in RFC2460 [RFC2460]. The IPv6 Performance and Diagnostic Metrics | in RFC2460 [RFC2460]. The IPv6 Performance and Diagnostic Metrics | |||
Destination Option (PDM) is implemented as an IPv6 Option carried in | Destination Option (PDM) is implemented as an IPv6 Option carried in | |||
the Destination Options Header. The PDM does not require time | the Destination Options Header. The PDM does not require time | |||
synchronization. | synchronization. | |||
3.2 Performance and Diagnostic Metrics Destination Option | 3.2. Performance and Diagnostic Metrics Destination Option | |||
3.2.1 PDM Layout | 3.2.1. PDM Layout | |||
The IPv6 Performance and Diagnostic Metrics Destination Option (PDM) | The IPv6 Performance and Diagnostic Metrics Destination Option (PDM) | |||
contains the following fields: | contains the following fields: | |||
SCALEDTLR: Scale for Delta Time Last Received | SCALEDTLR: Scale for Delta Time Last Received | |||
SCALEDTLS: Scale for Delta Time Last Sent | SCALEDTLS: Scale for Delta Time Last Sent | |||
PSNTP : Packet Sequence Number This Packet | PSNTP : Packet Sequence Number This Packet | |||
PSNLR : Packet Sequence Number Last Received | PSNLR : Packet Sequence Number Last Received | |||
DELTATLR : Delta Time Last Received | DELTATLR : Delta Time Last Received | |||
DELTATLS : Delta Time Last Sent | DELTATLS : Delta Time Last Sent | |||
PDM has alignment requirements. Following the convention in IPv6, | PDM has alignment requirements. Following the convention in IPv6, | |||
these options are aligned in a packet so that multi-octet values | these options are aligned in a packet so that multi-octet values | |||
within the Option Data field of each option fall on natural | within the Option Data field of each option fall on natural | |||
boundaries (i.e., fields of width n octets are placed at an integer | boundaries (i.e., fields of width n octets are placed at an integer | |||
multiple of n octets from the start of the header, for n = 1, 2, 4, | multiple of n octets from the start of the header, for n = 1, 2, 4, | |||
or 8) [RFC2460]. | or 8) [RFC2460]. | |||
The PDM destination option is encoded in type-length-value (TLV) | The PDM destination option is encoded in type-length-value (TLV) | |||
format as follows: | format as follows: | |||
0 1 2 3 | 0 1 2 3 | |||
skipping to change at page 9, line 35 | skipping to change at page 7, line 7 | |||
00. | 00. | |||
The third high order bit of the Option Type specifies whether or not | The third high order bit of the Option Type specifies whether or not | |||
the Option Data of that option can change en-route to the packet's | the Option Data of that option can change en-route to the packet's | |||
final destination. | final destination. | |||
In the PDM, the value of the third high order bit MUST be 0. | In the PDM, the value of the third high order bit MUST be 0. | |||
Option Length | Option Length | |||
8-bit unsigned integer. Length of the option, in octets, excluding | 8-bit unsigned integer. Length of the option, in octets, excluding | |||
the Option Type and Option Length fields. This field MUST be set to | the Option Type and Option Length fields. This field MUST be set to | |||
10. | 10. | |||
Scale Delta Time Last Received (SCALEDTLR) | Scale Delta Time Last Received (SCALEDTLR) | |||
8-bit unsigned integer. This is the scaling value for the Delta Time | 8-bit unsigned integer. This is the scaling value for the Delta Time | |||
Last Received (DELTATLR) field. The possible values are from 0-255. | Last Received (DELTATLR) field. The possible values are from 0-255. | |||
See Section 4 for further discussion on Timing Considerations and | See Section 4 for further discussion on Timing Considerations and | |||
formatting of the scaling values. | formatting of the scaling values. | |||
Scale Delta Time Last Sent (SCALEDTLS) | Scale Delta Time Last Sent (SCALEDTLS) | |||
8-bit signed integer. This is the scaling value for the Delta Time | 8-bit signed integer. This is the scaling value for the Delta Time | |||
Last Sent (DELTATLS) field. The possible values are from 0 to 255. | Last Sent (DELTATLS) field. The possible values are from 0 to 255. | |||
Packet Sequence Number This Packet (PSNTP) | Packet Sequence Number This Packet (PSNTP) | |||
16-bit unsigned integer. This field will wrap. It is intended for | 16-bit unsigned integer. This field will wrap. It is intended for | |||
use while analyzing packet traces. | use while analyzing packet traces. | |||
Initialized at a random number and incremented monotonically for each | Initialized at a random number and incremented monotonically for each | |||
packet of the session flow of the 5-tuple. The random number | packet of the session flow of the 5-tuple. The random number | |||
initialization is intended to make it harder to spoof and insert such | initialization is intended to make it harder to spoof and insert such | |||
packets. | packets. | |||
Operating systems MUST implement a separate packet sequence number | Operating systems MUST implement a separate packet sequence number | |||
counter per 5-tuple. | counter per 5-tuple. | |||
skipping to change at page 10, line 34 | skipping to change at page 8, line 4 | |||
Delta Time Last Received (DELTATLR) | Delta Time Last Received (DELTATLR) | |||
A 16-bit unsigned integer field. The value is set according to the | A 16-bit unsigned integer field. The value is set according to the | |||
scale in SCALEDTLR. | scale in SCALEDTLR. | |||
Delta Time Last Received = (Send time packet n - Receive time packet | Delta Time Last Received = (Send time packet n - Receive time packet | |||
n-1) | n-1) | |||
Delta Time Last Sent (DELTATLS) | Delta Time Last Sent (DELTATLS) | |||
A 16-bit unsigned integer field. The value is set according to the | ||||
A 16-bit unsigned integer field. The value is set according to the | ||||
scale in SCALEDTLS. | scale in SCALEDTLS. | |||
Delta Time Last Sent = (Receive time packet n - Send time packet n-1) | Delta Time Last Sent = (Receive time packet n - Send time packet n-1) | |||
3.2.2 Base Unit for Time Measurement | 3.2.2. Base Unit for Time Measurement | |||
A time differential is always a whole number in a CPU; it is the unit | A time differential is always a whole number in a CPU; it is the unit | |||
specification -- hours, seconds, nanoseconds -- that determine what | specification -- hours, seconds, nanoseconds -- that determine what | |||
the numeric value means. For PDM, the base time unit is 1 attosecond | the numeric value means. For PDM, the base time unit is 1 attosecond | |||
(asec). This allows for a common unit and scaling of the time | (asec). This allows for a common unit and scaling of the time | |||
differential among all IP stacks and hardware implementations. | differential among all IP stacks and hardware implementations. | |||
Note that PDM provides the ability to measure both time differentials | Note that PDM provides the ability to measure both time differentials | |||
that are extremely small, and time differentials in a | that are extremely small, and time differentials in a Delay/ | |||
Delay/Disruption Tolerant Networking (DTN) environment where the | Disruption Tolerant Networking (DTN) environment where the delays may | |||
delays may be very great. To store a time differential in just 16 | be very great. To store a time differential in just 16 bits that | |||
bits that must range in this way will require some scaling of the | must range in this way will require some scaling of the time | |||
time differential value. | differential value. | |||
One issue is the conversion from the native time base in the CPU | One issue is the conversion from the native time base in the CPU | |||
hardware of whatever device is in use to some number of attoseconds. | hardware of whatever device is in use to some number of attoseconds. | |||
It might seem this will be an astronomical number, but the conversion | It might seem this will be an astronomical number, but the conversion | |||
is straightforward. It involves multiplication by an appropriate | is straightforward. It involves multiplication by an appropriate | |||
power of 10 to change the value into a number of attoseconds. Then, | power of 10 to change the value into a number of attoseconds. Then, | |||
to scale the value so that it fits into DELTATLR or DELTATLS, the | to scale the value so that it fits into DELTATLR or DELTATLS, the | |||
value is shifted by of a number of bits, retaining the 16 high-order | value is shifted by of a number of bits, retaining the 16 high-order | |||
or most significant bits. The number of bits shifted becomes the | or most significant bits. The number of bits shifted becomes the | |||
scaling factor, stored as SCALEDTLR or SCALEDTLS, respectively. For | scaling factor, stored as SCALEDTLR or SCALEDTLS, respectively. For | |||
additional information of this process, including examples, please | additional information of this process, including examples, please | |||
see Appendix A. | see Appendix A. | |||
3.3 Header Placement | 3.3. Header Placement | |||
The PDM Destination Option is placed as defined in RFC2460 [RFC2460]. | The PDM Destination Option is placed as defined in RFC2460 [RFC2460]. | |||
There may be a choice of where to place the Destination Options | There may be a choice of where to place the Destination Options | |||
header. If using ESP mode, please see section 3.4 of this document | header. If using ESP mode, please see section 3.4 of this document | |||
for placement of the PDM Destination Options header. | for placement of the PDM Destination Options header. | |||
For each IPv6 packet header, the PDM MUST NOT appear more than once. | For each IPv6 packet header, the PDM MUST NOT appear more than once. | |||
However, an encapsulated packet MAY contain a separate PDM associated | However, an encapsulated packet MAY contain a separate PDM associated | |||
with each encapsulated IPv6 header. | with each encapsulated IPv6 header. | |||
3.4 Header Placement Using IPSec ESP Mode | 3.4. Header Placement Using IPSec ESP Mode | |||
IPSec Encapsulating Security Payload (ESP) is defined in [RFC4303] | IPSec Encapsulating Security Payload (ESP) is defined in [RFC4303] | |||
and is widely used. Section 3.1.1 of [RFC4303] discusses placement | and is widely used. Section 3.1.1 of [RFC4303] discusses placement | |||
of Destination Options Headers. | of Destination Options Headers. | |||
The placement of PDM is different depending on if ESP is used in | The placement of PDM is different depending on if ESP is used in | |||
tunnel or transport mode. | tunnel or transport mode. | |||
In ESP case, no 5-tuple is available, as there are no port numbers. | In ESP case, no 5-tuple is available, as there are no port numbers. | |||
ESP flow should be identified only by using SADDR, DADDR and PROTOC. | ESP flow should be identified only by using SADDR, DADDR and PROTOC. | |||
The SPI numbers SHOULD be ignored when considering the flow over | The SPI numbers SHOULD be ignored when considering the flow over | |||
which PDM information is measured. | which PDM information is measured. | |||
3.4.1 Using ESP Transport Mode | 3.4.1. Using ESP Transport Mode | |||
Note that Destination Options may be placed before or after ESP or | Note that Destination Options may be placed before or after ESP or | |||
both. If using PDM in ESP transport mode, PDM MUST be placed after | both. If using PDM in ESP transport mode, PDM MUST be placed after | |||
the ESP header so as not to leak information. | the ESP header so as not to leak information. | |||
3.4.2 Using ESP Tunnel Mode | 3.4.2. Using ESP Tunnel Mode | |||
Note that Destination Options may be placed before or after ESP or | Note that Destination Options may be placed before or after ESP or | |||
both in both the outer set of IP headers and the inner set of IP | both in both the outer set of IP headers and the inner set of IP | |||
headers. A tunnel endpoint that creates a new packet may decide to | headers. A tunnel endpoint that creates a new packet may decide to | |||
use PDM independent of the use of PDM of the original packet to | use PDM independent of the use of PDM of the original packet to | |||
enable delay measurements between the two tunnel endpoints. | enable delay measurements between the two tunnel endpoints. | |||
3.5 Implementation Considerations | 3.5. Implementation Considerations | |||
3.5.1 PDM Activation | 3.5.1. PDM Activation | |||
An implementation should provide an interface to enable or disable | An implementation should provide an interface to enable or disable | |||
the use of PDM. This specification recommends having PDM off by | the use of PDM. This specification recommends having PDM off by | |||
default. | default. | |||
PDM MUST NOT be turned on merely if a packet is received with a PDM | PDM MUST NOT be turned on merely if a packet is received with a PDM | |||
header. The received packet could be spoofed by another device. | header. The received packet could be spoofed by another device. | |||
3.5.2 PDM Timestamps | 3.5.2. PDM Timestamps | |||
The PDM timestamps are intended to isolate wire time from server or | The PDM timestamps are intended to isolate wire time from server or | |||
host time, but may necessarily attribute some host processing time to | host time, but may necessarily attribute some host processing time to | |||
network latency. | network latency. | |||
RFC2330 [RFC2330] "Framework for IP Performance Metrics" describes | RFC2330 [RFC2330] "Framework for IP Performance Metrics" describes | |||
two notions of wire time in section 10.2. These notions are only | two notions of wire time in section 10.2. These notions are only | |||
defined in terms of an Internet host H observing an Internet link L | defined in terms of an Internet host H observing an Internet link L | |||
at a particular location: | at a particular location: | |||
+ For a given IP packet P, the 'wire arrival time' of P at H on L | - For a given IP packet P, the 'wire arrival time' of P at H on L is | |||
is the first time T at which any bit of P has appeared at H's | the first time T at which any bit of P has appeared at H's | |||
observational position on L. | observational position on L. | |||
+ For a given IP packet P, the 'wire exit time' of P at H on L is | - For a given IP packet P, the 'wire exit time' of P at H on L is | |||
the first time T at which all the bits of P have appeared at H's | the first time T at which all the bits of P have appeared at H's | |||
observational position on L. | observational position on L. | |||
This specification does not define the exact H's observing position | This specification does not define the exact H's observing position | |||
on L. That is left for the deployment setups to define. However, the | on L. That is left for the deployment setups to define. However, | |||
position where PDM timestamps are taken SHOULD be as close to the | the position where PDM timestamps are taken SHOULD be as close to the | |||
physical network interface as possible. Not all implementations will | physical network interface as possible. Not all implementations will | |||
be able to achieve the ideal level of measurement. | be able to achieve the ideal level of measurement. | |||
3.6 Dynamic Configuration Options | 3.6. Dynamic Configuration Options | |||
If the PDM destination options extension header is used, then it MAY | If the PDM destination options extension header is used, then it MAY | |||
be turned on for all packets flowing through the host, applied to an | be turned on for all packets flowing through the host, applied to an | |||
upper-layer protocol (TCP, UDP, SCTP, etc), a local port, or IP | upper-layer protocol (TCP, UDP, SCTP, etc), a local port, or IP | |||
address only. These are at the discretion of the implementation. | address only. These are at the discretion of the implementation. | |||
3.7 Information Access and Storage | 3.7. Information Access and Storage | |||
Measurement information provided by PDM may be made accessible for | Measurement information provided by PDM may be made accessible for | |||
higher layers or the user itself. Similar to activating the use of | higher layers or the user itself. Similar to activating the use of | |||
PDM, the implementation may also provide an interface to indicate if | PDM, the implementation may also provide an interface to indicate if | |||
received | received | |||
PDM information may be stored, if desired. If a packet with PDM | PDM information may be stored, if desired. If a packet with PDM | |||
information is received and the information should be stored, the | information is received and the information should be stored, the | |||
upper layers may be notified. Furthermore, the implementation should | upper layers may be notified. Furthermore, the implementation should | |||
define a configurable maximum lifetime after which the information | define a configurable maximum lifetime after which the information | |||
can be removed as well as a configurable maximum amount of memory | can be removed as well as a configurable maximum amount of memory | |||
that should be allocated for PDM information. | that should be allocated for PDM information. | |||
4 Security Considerations | 4. Security Considerations | |||
PDM may introduce some new security weaknesses. | PDM may introduce some new security weaknesses. | |||
4.1 Resource Consumption and Resource Consumption Attacks | 4.1. Resource Consumption and Resource Consumption Attacks | |||
PDM needs to calculate the deltas for time and keep track of the | PDM needs to calculate the deltas for time and keep track of the | |||
sequence numbers. This means that control blocks which reside in | sequence numbers. This means that control blocks which reside in | |||
memory may be kept at the end hosts per 5-tuple. | memory may be kept at the end hosts per 5-tuple. | |||
A limit on how much memory is being used SHOULD be implemented. | A limit on how much memory is being used SHOULD be implemented. | |||
Without a memory limit, any time a control block is kept in memory, | Without a memory limit, any time a control block is kept in memory, | |||
an attacker can try to misuse the control blocks to cause excessive | an attacker can try to misuse the control blocks to cause excessive | |||
resource consumption. This could be used to compromise the end host. | resource consumption. This could be used to compromise the end host. | |||
PDM is used only at the end hosts and memory is used only at the end | PDM is used only at the end hosts and memory is used only at the end | |||
host and not at routers or middle boxes. | host and not at routers or middle boxes. | |||
4.2 Pervasive monitoring | 4.2. Pervasive monitoring | |||
Since PDM passes in the clear, a concern arises as to whether the | Since PDM passes in the clear, a concern arises as to whether the | |||
data can be used to fingerprint the system or somehow obtain | data can be used to fingerprint the system or somehow obtain | |||
information about the contents of the payload. | information about the contents of the payload. | |||
Let us discuss fingerprinting of the end host first. It is possible | Let us discuss fingerprinting of the end host first. It is possible | |||
that seeing the pattern of deltas or the absolute values could give | that seeing the pattern of deltas or the absolute values could give | |||
some information as to the speed of the end host - that is, if it is | some information as to the speed of the end host - that is, if it is | |||
a very fast system or an older, slow device. This may be useful to | a very fast system or an older, slow device. This may be useful to | |||
the attacker. However, if the attacker has access to PDM, the | the attacker. However, if the attacker has access to PDM, the | |||
attacker also has access to the entire packet and could make such a | attacker also has access to the entire packet and could make such a | |||
deduction based merely on the time frames elapsed between packets | deduction based merely on the time frames elapsed between packets | |||
WITHOUT PDM. | WITHOUT PDM. | |||
As far as deducing the content of the payload, in terms of the | As far as deducing the content of the payload, in terms of the | |||
application level information such as web page, user name, user | application level information such as web page, user name, user | |||
password and so on, it appears to us that PDM is quite unhelpful in | password and so on, it appears to us that PDM is quite unhelpful in | |||
this regard. Having said that, the ability to separate wire-time | this regard. Having said that, the ability to separate wire-time | |||
from processing time may potentially provide an attacker with | from processing time may potentially provide an attacker with | |||
additional information. It is conceivable that an attacker could | additional information. It is conceivable that an attacker could | |||
attempt to deduce the type of application in use by noting the server | attempt to deduce the type of application in use by noting the server | |||
time and payload length. Some encryption algorithms attempt to | time and payload length. Some encryption algorithms attempt to | |||
obfuscate the packet length to avoid just such vulnerabilities. In | obfuscate the packet length to avoid just such vulnerabilities. In | |||
the future, encryption algorithms may wish to obfuscate the server | the future, encryption algorithms may wish to obfuscate the server | |||
time as well. | time as well. | |||
4.3 PDM as a Covert Channel | 4.3. PDM as a Covert Channel | |||
PDM provides a set of fields in the packet which could be used to | PDM provides a set of fields in the packet which could be used to | |||
leak data. But, there is no real reason to suspect that PDM would be | leak data. But, there is no real reason to suspect that PDM would be | |||
chosen rather than another part of the payload or another Extension | chosen rather than another part of the payload or another Extension | |||
Header. | Header. | |||
A firewall or another device could sanity check the fields within the | A firewall or another device could sanity check the fields within the | |||
PDM but randomly assigned sequence numbers and delta times might be | PDM but randomly assigned sequence numbers and delta times might be | |||
expected to vary widely. The biggest problem though is how an | expected to vary widely. The biggest problem though is how an | |||
attacker would get access to PDM in the first place to leak data. | attacker would get access to PDM in the first place to leak data. | |||
The attacker would have to either compromise the end host or have Man | The attacker would have to either compromise the end host or have Man | |||
in the Middle (MitM). It is possible that either one could change | in the Middle (MitM). It is possible that either one could change | |||
the fields. But, then the other end host would get sequence numbers | the fields. But, then the other end host would get sequence numbers | |||
and deltas that don't make any sense. | and deltas that don't make any sense. | |||
It is conceivable that someone could compromise an end host and make | It is conceivable that someone could compromise an end host and make | |||
it start sending packets with PDM without the knowledge of the host. | it start sending packets with PDM without the knowledge of the host. | |||
But, again, the bigger problem is the compromise of the end host. | But, again, the bigger problem is the compromise of the end host. | |||
Once that is done, the attacker probably has better ways to leak | Once that is done, the attacker probably has better ways to leak | |||
data. | data. | |||
Having said that, if a PDM aware middle box or an implementation | Having said that, if a PDM aware middle box or an implementation | |||
(destination host) detects some number of "nonsensical" sequence | (destination host) detects some number of "nonsensical" sequence | |||
numbers or timing information, it could take action to block, | numbers or timing information, it could take action to block, | |||
discard, or alert on this traffic. | discard, or alert on this traffic. | |||
4.4 Timing Attacks | 4.4. Timing Attacks | |||
The fact that PDM can help in the separation of node processing time | The fact that PDM can help in the separation of node processing time | |||
from network latency brings value to performance monitoring. Yet, it | from network latency brings value to performance monitoring. Yet, it | |||
is this very characteristic of PDM which may be misused to make | is this very characteristic of PDM which may be misused to make | |||
certain new type of timing attacks against protocols and | certain new type of timing attacks against protocols and | |||
implementations possible. | implementations possible. | |||
Depending on the nature of the cryptographic protocol used, it may be | Depending on the nature of the cryptographic protocol used, it may be | |||
possible to leak the credentials of the device. For example, if an | possible to leak the credentials of the device. For example, if an | |||
attacker can see that PDM is being used, then the attacker might use | attacker can see that PDM is being used, then the attacker might use | |||
skipping to change at page 15, line 30 | skipping to change at page 12, line 43 | |||
Even so, if using PDM, a user "Consent to be Measured" SHOULD be a | Even so, if using PDM, a user "Consent to be Measured" SHOULD be a | |||
pre-requisite for using PDM. Consent is common in enterprises and | pre-requisite for using PDM. Consent is common in enterprises and | |||
with some subscription services. The actual content of "Consent to | with some subscription services. The actual content of "Consent to | |||
be Measured" will differ by site but it SHOULD make clear that the | be Measured" will differ by site but it SHOULD make clear that the | |||
traffic is being measured for quality of service and to assist in | traffic is being measured for quality of service and to assist in | |||
diagnostics as well as to make clear that there may be potential | diagnostics as well as to make clear that there may be potential | |||
risks of certain vulnerabilities if the traffic is captured during a | risks of certain vulnerabilities if the traffic is captured during a | |||
diagnostic session. | diagnostic session. | |||
5 IANA Considerations | 5. IANA Considerations | |||
This draft requests an Destination Option Type assignment with the | This draft requests an Destination Option Type assignment with the | |||
act bits set to 00 and the chg bit set to 0 from the Destination | act bits set to 00 and the chg bit set to 0 from the Destination | |||
Options and Hop-by-Hop Options sub-registry of Internet Protocol | Options and Hop-by-Hop Options sub-registry of Internet Protocol | |||
Version 6 (IPv6) Parameters [ref to RFCs and URL below]. | Version 6 (IPv6) Parameters [ref to RFCs and URL below]. | |||
http://www.iana.org/assignments/ipv6-parameters/ipv6- | <http://www.iana.org/assignments/ipv6-parameters/ipv6-> | |||
parameters.xhtml#ipv6-parameters-2 | parameters.xhtml#ipv6-parameters-2 | |||
Hex Value Binary Value Description Reference | Hex Value Binary Value Description Reference | |||
act chg rest | act chg rest | |||
------------------------------------------------------------------- | ------------------------------------------------------------------- | |||
TBD TBD Performance and [This draft] | TBD TBD Performance and [This draft] | |||
Diagnostic Metrics | Diagnostic Metrics | |||
(PDM) | (PDM) | |||
6 References | 6. References | |||
6.1 Normative References | 6.1. Normative References | |||
[RFC1122] Braden, R., "Requirements for Internet Hosts -- | [RFC1122] Braden, R., Ed., "Requirements for Internet Hosts - | |||
Communication Layers", RFC 1122, October 1989. | Communication Layers", STD 3, RFC 1122, | |||
DOI 10.17487/RFC1122, October 1989, | ||||
<http://www.rfc-editor.org/info/rfc1122>. | ||||
[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, March 1997. | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | ||||
<http://www.rfc-editor.org/info/rfc2119>. | ||||
[RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | |||
(IPv6) Specification", RFC 2460, December 1998. | (IPv6) Specification", RFC 2460, DOI 10.17487/RFC2460, | |||
December 1998, <http://www.rfc-editor.org/info/rfc2460>. | ||||
[RFC2681] Almes, G., Kalidindi, S., and M. Zekauskas, "A Round-trip | [RFC2681] Almes, G., Kalidindi, S., and M. Zekauskas, "A Round-trip | |||
Delay Metric for IPPM", RFC 2681, September 1999. | Delay Metric for IPPM", RFC 2681, DOI 10.17487/RFC2681, | |||
September 1999, <http://www.rfc-editor.org/info/rfc2681>. | ||||
[RFC2780] Bradner, S. and V. Paxson, "IANA Allocation Guidelines | ||||
For Values In the Internet Protocol and Related Headers", BCP 37, RFC | ||||
2780, March 2000. | ||||
[RFC4303] Kent, S, "IP Encapsulating Security Payload (ESP)", RFC | [RFC2780] Bradner, S. and V. Paxson, "IANA Allocation Guidelines For | |||
4303, December 2005. | Values In the Internet Protocol and Related Headers", | |||
BCP 37, RFC 2780, DOI 10.17487/RFC2780, March 2000, | ||||
<http://www.rfc-editor.org/info/rfc2780>. | ||||
6.2 Informative References | [RFC4303] Kent, S., "IP Encapsulating Security Payload (ESP)", | |||
RFC 4303, DOI 10.17487/RFC4303, December 2005, | ||||
<http://www.rfc-editor.org/info/rfc4303>. | ||||
[RFC2330] Paxson, V., Almes, G., Mahdavi, J., and M. Mathis, | 6.2. Informative References | |||
"Framework for IP Performance Metrics", RFC 2330, May 1998. | ||||
[TRAM-TCPM] Trammel, B., "Encoding of Time Intervals for the TCP | [RFC2330] Paxson, V., Almes, G., Mahdavi, J., and M. Mathis, | |||
Timestamp Option-01", Internet Draft, July 2013. [Work in Progress] | "Framework for IP Performance Metrics", RFC 2330, | |||
DOI 10.17487/RFC2330, May 1998, | ||||
<http://www.rfc-editor.org/info/rfc2330>. | ||||
Appendix A: Context for PDM | Appendix A. Context for PDM | |||
A.1 End User Quality of Service (QoS) | A.1. End User Quality of Service (QoS) | |||
The timing values in the PDM embedded in the packet will be used to | The timing values in the PDM embedded in the packet will be used to | |||
estimate QoS as experienced by an end user device. | estimate QoS as experienced by an end user device. | |||
For many applications, the key user performance indicator is response | For many applications, the key user performance indicator is response | |||
time. When the end user is an individual, he is generally | time. When the end user is an individual, he is generally | |||
indifferent to what is happening along the network; what he really | indifferent to what is happening along the network; what he really | |||
cares about is how long it takes to get a response back. But this is | cares about is how long it takes to get a response back. But this is | |||
not just a matter of individuals' personal convenience. In many | not just a matter of individuals' personal convenience. In many | |||
cases, rapid response is critical to the business being conducted. | cases, rapid response is critical to the business being conducted. | |||
Low, reliable and acceptable response times are not just "nice to | Low, reliable and acceptable response times are not just "nice to | |||
have". On many networks, the impact can be financial hardship or can | have". On many networks, the impact can be financial hardship or can | |||
endanger human life. In some cities, the emergency police contact | endanger human life. In some cities, the emergency police contact | |||
system operates over IP; law enforcement, at all levels, use IP | system operates over IP; law enforcement, at all levels, use IP | |||
networks; transactions on our stock exchanges are settled using IP | networks; transactions on our stock exchanges are settled using IP | |||
networks. The critical nature of such activities to our daily lives | networks. The critical nature of such activities to our daily lives | |||
and financial well-being demand a simple solution to support response | and financial well-being demand a simple solution to support response | |||
time measurements. | time measurements. | |||
A.2 Need for a Packet Sequence Number (PSN) | A.2. Need for a Packet Sequence Number (PSN) | |||
While performing network diagnostics of an end-to-end connection, it | While performing network diagnostics of an end-to-end connection, it | |||
often becomes necessary to isolate the factors along the network path | often becomes necessary to isolate the factors along the network path | |||
responsible for problems. Diagnostic data may be collected at | responsible for problems. Diagnostic data may be collected at | |||
multiple places along the path (if possible), or at the source and | multiple places along the path (if possible), or at the source and | |||
destination. Then, in post-collection processing, the diagnostic | destination. Then, in post-collection processing, the diagnostic | |||
data corresponding to each packet at different observation points | data corresponding to each packet at different observation points | |||
must be matched for proper measurements. A sequence number in each | must be matched for proper measurements. A sequence number in each | |||
packet provides sufficient basis for the matching process. If need | packet provides sufficient basis for the matching process. If need | |||
be, the timing fields may be used along with the sequence number to | be, the timing fields may be used along with the sequence number to | |||
ensure uniqueness. | ensure uniqueness. | |||
This method of data collection along the path is of special use to | This method of data collection along the path is of special use to | |||
determine where packet loss or packet corruption is happening. | determine where packet loss or packet corruption is happening. | |||
The packet sequence number needs to be unique in the context of the | The packet sequence number needs to be unique in the context of the | |||
session (5-tuple). | session (5-tuple). | |||
A.3 Rationale for Defined Solution | A.3. Rationale for Defined Solution | |||
One of the important functions of PDM is to allow you to quickly | One of the important functions of PDM is to allow you to quickly | |||
dispatch the right set of diagnosticians. Within network or server | dispatch the right set of diagnosticians. Within network or server | |||
latency, there may be many components. The job of the diagnostician | latency, there may be many components. The job of the diagnostician | |||
is to rule each one out until the culprit is found. | is to rule each one out until the culprit is found. | |||
How PDM fits into this diagnostic picture is that PDM will quickly | How PDM fits into this diagnostic picture is that PDM will quickly | |||
tell you how to escalate. PDM will point to either the network area | tell you how to escalate. PDM will point to either the network area | |||
or the server area. Within the server latency, PDM does not tell | or the server area. Within the server latency, PDM does not tell you | |||
you if the bottleneck is in the IP stack or the application or buffer | if the bottleneck is in the IP stack or the application or buffer | |||
allocation. Within the network latency, PDM does not tell you which | allocation. Within the network latency, PDM does not tell you which | |||
of the network segments or middle boxes is at fault. | of the network segments or middle boxes is at fault. | |||
What PDM does tell you is whether the problem is in the network or | What PDM does tell you is whether the problem is in the network or | |||
the server. | the server. | |||
A.4 Use PDM with Other Headers | A.4. Use PDM with Other Headers | |||
For diagnostics, one my want to use PDM with other headers (L2, L3, | For diagnostics, one my want to use PDM with other headers (L2, L3, | |||
etc). For example, if PDM is used is by a technician (or tool) | etc). For example, if PDM is used is by a technician (or tool) | |||
looking at a packet capture, within the packet capture, they would | looking at a packet capture, within the packet capture, they would | |||
have available to them the layer 2 header, IP header (v6 or v4), TCP, | have available to them the layer 2 header, IP header (v6 or v4), TCP, | |||
UCP, ICMP, SCTP or other headers. All information would be looked | UCP, ICMP, SCTP or other headers. All information would be looked at | |||
at together to make sense of the packet flow. The technician or | together to make sense of the packet flow. The technician or | |||
processing tool could analyze, report or ignore the data from PDM, as | processing tool could analyze, report or ignore the data from PDM, as | |||
necessary. | necessary. | |||
For an example of how PDM can help with TCP retransmit problems, | For an example of how PDM can help with TCP retransmit problems, | |||
please look at Appendix C. | please look at Appendix C. | |||
Appendix B : Timing Considerations | Appendix B. Timing Considerations | |||
B.1 Timing Differential Calculations | B.1. Timing Differential Calculations | |||
The time counter in a CPU is a binary whole number, representing a | The time counter in a CPU is a binary whole number, representing a | |||
number of milliseconds (msec), microseconds (usec) or even | number of milliseconds (msec), microseconds (usec) or even | |||
picoseconds (psec). Representing one of these values as attoseconds | picoseconds (psec). Representing one of these values as attoseconds | |||
(asec) means multiplying by 10 raised to some exponent. Refer to this | (asec) means multiplying by 10 raised to some exponent. Refer to | |||
table of equalities: | this table of equalities: | |||
Base value = # of sec = # of asec 1000s of asec | Base value = # of sec = # of asec 1000s of asec | |||
--------------- ------------- ------------- ------------- | --------------- ------------- ------------- ------------- | |||
1 second 1 sec 10**18 asec 1000**6 asec | 1 second 1 sec 10**18 asec 1000**6 asec | |||
1 millisecond 10**-3 sec 10**15 asec 1000**5 asec | 1 millisecond 10**-3 sec 10**15 asec 1000**5 asec | |||
1 microsecond 10**-6 sec 10**12 asec 1000**4 asec | 1 microsecond 10**-6 sec 10**12 asec 1000**4 asec | |||
1 nanosecond 10**-9 sec 10**9 asec 1000**3 asec | 1 nanosecond 10**-9 sec 10**9 asec 1000**3 asec | |||
1 picosecond 10**-12 sec 10**6 asec 1000**2 asec | 1 picosecond 10**-12 sec 10**6 asec 1000**2 asec | |||
1 femtosecond 10**-15 sec 10**3 asec 1000**1 asec | 1 femtosecond 10**-15 sec 10**3 asec 1000**1 asec | |||
For example, if you have a time differential expressed in | For example, if you have a time differential expressed in | |||
microseconds, since each microsecond is 10**12 asec, you would | microseconds, since each microsecond is 10**12 asec, you would | |||
multiply your time value by 10**12 to obtain the number of | multiply your time value by 10**12 to obtain the number of | |||
attoseconds. If you time differential is expressed in nanoseconds, | attoseconds. If you time differential is expressed in nanoseconds, | |||
you would multiply by 10**9 to get the number of attoseconds. | you would multiply by 10**9 to get the number of attoseconds. | |||
The result is a binary value that will need to be shortened by a | The result is a binary value that will need to be shortened by a | |||
number of bits so it will fit into the 16-bit PDM DELTA field. | number of bits so it will fit into the 16-bit PDM DELTA field. | |||
The next step is to divide by 2 until the value is contained in just | The next step is to divide by 2 until the value is contained in just | |||
16 significant bits. The exponent of the value in the last column of | 16 significant bits. The exponent of the value in the last column of | |||
of the table is useful here; the initial scaling factor is that | of the table is useful here; the initial scaling factor is that | |||
exponent multiplied by 10. This is the minimum number of low-order | exponent multiplied by 10. This is the minimum number of low-order | |||
bits to be shifted-out or discarded. It represents dividing the time | bits to be shifted-out or discarded. It represents dividing the time | |||
value by 1024 raised to that exponent. | value by 1024 raised to that exponent. | |||
The resulting value may still be too large to fit into 16 bits, but | The resulting value may still be too large to fit into 16 bits, but | |||
can be normalized by shifting out more bits (dividing by 2) until the | can be normalized by shifting out more bits (dividing by 2) until the | |||
value fits into the 16-bit DELTA field. The number of extra bits | value fits into the 16-bit DELTA field. The number of extra bits | |||
shifted out is then added to the scaling factor. The scaling factor, | shifted out is then added to the scaling factor. The scaling factor, | |||
the total number of low-order bits dropped, is the SCALEDTL value. | the total number of low-order bits dropped, is the SCALEDTL value. | |||
For example: say an application has these start and finish timer | For example: say an application has these start and finish timer | |||
values (hexadecimal values, in microseconds): | values (hexadecimal values, in microseconds): | |||
Finish: 27C849234 usec (02:57:58.997556) | Finish: 27C849234 usec (02:57:58.997556) | |||
-Start: 27C83F696 usec (02:57:58.957718) | -Start: 27C83F696 usec (02:57:58.957718) | |||
========== ========= =============== | ========== ========= =============== | |||
Difference 9B9E usec 00.039838 sec or 39838 usec | Difference 9B9E usec 00.039838 sec or 39838 usec | |||
To convert this differential value to binary attoseconds, multiply | To convert this differential value to binary attoseconds, multiply | |||
the number of microseconds by 10**12. Divide by 1024**4, or simply | the number of microseconds by 10**12. Divide by 1024**4, or simply | |||
discard 40 bits from the right. The result is 36232, or 8D88 in hex, | discard 40 bits from the right. The result is 36232, or 8D88 in hex, | |||
with a scaling factor or SCALEDTL value of 40. | with a scaling factor or SCALEDTL value of 40. | |||
For another example, presume the time differential is larger, say | For another example, presume the time differential is larger, say | |||
32.311072 seconds, which is 32311072 usec. Each microsecond is 10**12 | 32.311072 seconds, which is 32311072 usec. Each microsecond is | |||
asec, so multiply by 10**12, giving the hexadecimal value | 10**12 asec, so multiply by 10**12, giving the hexadecimal value | |||
1C067FCCAE8120000. Using the initial scaling factor of 40, drop the | 1C067FCCAE8120000. Using the initial scaling factor of 40, drop the | |||
last 10 characters (40 bits) from that string, giving 1C067FC. This | last 10 characters (40 bits) from that string, giving 1C067FC. This | |||
will not fit into a DELTA field, as it is 25 bits long. Shifting the | will not fit into a DELTA field, as it is 25 bits long. Shifting the | |||
value to the right another 9 bits results in a DELTA value of E033, | value to the right another 9 bits results in a DELTA value of E033, | |||
with a resulting scaling factor of 49. | with a resulting scaling factor of 49. | |||
When the time differential value is a small number, regardless of the | When the time differential value is a small number, regardless of the | |||
time unit, the exponent trick given above is not useful in | time unit, the exponent trick given above is not useful in | |||
determining the proper scaling value. For example, if the time | determining the proper scaling value. For example, if the time | |||
differential is 3 seconds and you want to convert that directly, you | differential is 3 seconds and you want to convert that directly, you | |||
would follow this path: | would follow this path: | |||
3 seconds = 3*10**18 asec (decimal) | 3 seconds = 3*10**18 asec (decimal) | |||
= 29A2241AF62C0000 asec (hexadecimal) | = 29A2241AF62C0000 asec (hexadecimal) | |||
If you just truncate the last 60 bits, you end up with a delta value | If you just truncate the last 60 bits, you end up with a delta value | |||
of 2 and a scaling factor of 60, when what you really wanted was a | of 2 and a scaling factor of 60, when what you really wanted was a | |||
delta value with more significant digits. The most precision with | delta value with more significant digits. The most precision with | |||
which you can store this value in 16 bits is A688, with a scaling | which you can store this value in 16 bits is A688, with a scaling | |||
factor of 46. | factor of 46. | |||
B.2 Considerations of this time-differential representation | B.2. Considerations of this time-differential representation | |||
There are a few considerations to be taken into account with this | There are a few considerations to be taken into account with this | |||
representation of a time differential. The first is whether there are | representation of a time differential. The first is whether there | |||
any limitations on the maximum or minimum time differential that can | are any limitations on the maximum or minimum time differential that | |||
be expressed using method of a delta value and a scaling factor. The | can be expressed using method of a delta value and a scaling factor. | |||
second is the amount of imprecision introduced by this method. | The second is the amount of imprecision introduced by this method. | |||
B.2.1 Limitations with this encoding method | B.2.1. Limitations with this encoding method | |||
The DELTATLS and DELTATLR fields store only the 16 most-significant | The DELTATLS and DELTATLR fields store only the 16 most-significant | |||
bits of the time differential value. Thus the range, excluding the | bits of the time differential value. Thus the range, excluding the | |||
scaling factor, is from 0 to 65535, or a maximum of 2**16-1. This | scaling factor, is from 0 to 65535, or a maximum of 2**16-1. This | |||
method is further described in [TRAM-TCPM]. | method is further described in [TRAM-TCPM]. | |||
The actual magnitude of the time differential is determined by the | The actual magnitude of the time differential is determined by the | |||
scaling factor. SCALEDTLR and SCALEDTLS are 8-bit unsigned integers, | scaling factor. SCALEDTLR and SCALEDTLS are 8-bit unsigned integers, | |||
so the scaling factor ranges from 0 to 255. The smallest number that | so the scaling factor ranges from 0 to 255. The smallest number that | |||
can be represented would have a value of 1 in the delta field and a | can be represented would have a value of 1 in the delta field and a | |||
value of 0 in the associated scale field. This is the representation | value of 0 in the associated scale field. This is the representation | |||
for 1 attosecond. Clearly this allows PDM to measure extremely small | for 1 attosecond. Clearly this allows PDM to measure extremely small | |||
time differentials. | time differentials. | |||
On the other end of the scale, the maximum delta value is 65535, or | On the other end of the scale, the maximum delta value is 65535, or | |||
FFFF in hexadecimal. If the maximum scale value of 255 is used, the | FFFF in hexadecimal. If the maximum scale value of 255 is used, the | |||
time differential represented is 65535*2**255, which is over 3*10**55 | time differential represented is 65535*2**255, which is over 3*10**55 | |||
years, essentially, forever. So there appears to be no real | years, essentially, forever. So there appears to be no real | |||
limitation to the time differential that can be represented. | limitation to the time differential that can be represented. | |||
B.2.2 Loss of precision induced by timer value truncation | B.2.2. Loss of precision induced by timer value truncation | |||
As PDM specifies the DELTATLR and DELTATLS values as 16-bit unsigned | As PDM specifies the DELTATLR and DELTATLS values as 16-bit unsigned | |||
integers, any time the precision is greater than those 16 bits, there | integers, any time the precision is greater than those 16 bits, there | |||
will be truncation of the trailing bits, with an accompanying loss of | will be truncation of the trailing bits, with an accompanying loss of | |||
precision in the value. | precision in the value. | |||
Any time differential value smaller than 65536 asec can be stored | Any time differential value smaller than 65536 asec can be stored | |||
exactly in DELTATLR or DELTATLS, because the representation of this | exactly in DELTATLR or DELTATLS, because the representation of this | |||
value requires at most 16 bits. | value requires at most 16 bits. | |||
Since the time differential values in PDM are measured in | Since the time differential values in PDM are measured in | |||
attoseconds, the range of values that would be truncated to the same | attoseconds, the range of values that would be truncated to the same | |||
encoded value is 2**(Scale)-1 asec. | encoded value is 2**(Scale)-1 asec. | |||
For example, the smallest time differential that would be truncated | For example, the smallest time differential that would be truncated | |||
to fit into a delta field is | to fit into a delta field is | |||
1 0000 0000 0000 0000 = 65536 asec | 1 0000 0000 0000 0000 = 65536 asec | |||
This value would be encoded as a delta value of 8000 (hexadecimal) | This value would be encoded as a delta value of 8000 (hexadecimal) | |||
with a scaling factor of 1. The value | with a scaling factor of 1. The value | |||
1 0000 0000 0000 0001 = 65537 asec | 1 0000 0000 0000 0001 = 65537 asec | |||
would also be encoded as a delta value of 8000 with a scaling factor | would also be encoded as a delta value of 8000 with a scaling factor | |||
of 1. This actually is the largest value that would be truncated to | of 1. This actually is the largest value that would be truncated to | |||
that same encoded value. When the scale value is 1, the value range | that same encoded value. When the scale value is 1, the value range | |||
is calculated as 2**1 - 1, or 1 asec, which you can see is the | is calculated as 2**1 - 1, or 1 asec, which you can see is the | |||
difference between these minimum and maximum values. | difference between these minimum and maximum values. | |||
The scaling factor is defined as the number of low-order bits | The scaling factor is defined as the number of low-order bits | |||
truncated to reduce the size of the resulting value so it fits into a | truncated to reduce the size of the resulting value so it fits into a | |||
16-bit delta field. If, for example, you had to truncate 12 bits, the | 16-bit delta field. If, for example, you had to truncate 12 bits, | |||
loss of precision would depend on the bits you truncated. The range | the loss of precision would depend on the bits you truncated. The | |||
of these values would be | range of these values would be | |||
0000 0000 0000 = 0 asec | 0000 0000 0000 = 0 asec | |||
to | to | |||
1111 1111 1111 = 4095 asec | 1111 1111 1111 = 4095 asec | |||
So the minimum loss of precision would be 0 asec, where the delta | So the minimum loss of precision would be 0 asec, where the delta | |||
value exactly represents the time differential, and the maximum loss | value exactly represents the time differential, and the maximum loss | |||
of precision would be 4095 asec. As stated above, the scaling factor | of precision would be 4095 asec. As stated above, the scaling factor | |||
of 12 means the maximum loss of precision is 2**12-1 asec, or 4095 | of 12 means the maximum loss of precision is 2**12-1 asec, or 4095 | |||
asec. | asec. | |||
Compare this loss of precision to the actual time differential. The | Compare this loss of precision to the actual time differential. The | |||
range of actual time differential values that would incur this loss | range of actual time differential values that would incur this loss | |||
of precision is from | of precision is from | |||
1000 0000 0000 0000 0000 0000 0000 = 2**27 asec or 134217728 asec | 1000 0000 0000 0000 0000 0000 0000 = 2**27 asec or 134217728 asec | |||
to | to | |||
1111 1111 1111 1111 1111 1111 1111 = 2**28-1 asec or 268435455 asec | 1111 1111 1111 1111 1111 1111 1111 = 2**28-1 asec or 268435455 asec | |||
Granted, these are small values, but the point is, any value between | Granted, these are small values, but the point is, any value between | |||
these two values will have a maximum loss of precision of 4095 asec, | these two values will have a maximum loss of precision of 4095 asec, | |||
or about 0.00305% for the first value, as encoded, and at most | or about 0.00305% for the first value, as encoded, and at most | |||
0.001526% for the second. These maximum-loss percentages are | 0.001526% for the second. These maximum-loss percentages are | |||
consistent for all scaling values. | consistent for all scaling values. | |||
Appendix C: Sample Packet Flows | Appendix C. Sample Packet Flows | |||
C.1 PDM Flow - Simple Client Server | C.1. PDM Flow - Simple Client Server | |||
Following is a sample simple flow for the PDM with one packet sent | Following is a sample simple flow for the PDM with one packet sent | |||
from Host A and one packet received by Host B. The PDM does not | from Host A and one packet received by Host B. The PDM does not | |||
require time synchronization between Host A and Host B. The | require time synchronization between Host A and Host B. The | |||
calculations to derive meaningful metrics for network diagnostics are | calculations to derive meaningful metrics for network diagnostics are | |||
shown below each packet sent or received. | shown below each packet sent or received. | |||
C.1.1 Step 1 | C.1.1. Step 1 | |||
Packet 1 is sent from Host A to Host B. The time for Host A is set | Packet 1 is sent from Host A to Host B. The time for Host A is set | |||
initially to 10:00AM. | initially to 10:00AM. | |||
The time and packet sequence number are saved by the sender | The time and packet sequence number are saved by the sender | |||
internally. The packet sequence number and delta times are sent in | internally. The packet sequence number and delta times are sent in | |||
the packet. | the packet. | |||
Packet 1 | Packet 1 | |||
skipping to change at page 23, line 35 | skipping to change at page 20, line 4 | |||
PSNTP : Packet Sequence Number This Packet: 25 | PSNTP : Packet Sequence Number This Packet: 25 | |||
PSNLR : Packet Sequence Number Last Received: - | PSNLR : Packet Sequence Number Last Received: - | |||
DELTATLR : Delta Time Last Received: - | DELTATLR : Delta Time Last Received: - | |||
SCALEDTLR: Scale of Delta Time Last Received: 0 | SCALEDTLR: Scale of Delta Time Last Received: 0 | |||
DELTATLS : Delta Time Last Sent: - | DELTATLS : Delta Time Last Sent: - | |||
SCALEDTLS: Scale of Delta Time Last Sent: 0 | SCALEDTLS: Scale of Delta Time Last Sent: 0 | |||
Internally, within the sender, Host A, it must keep: | Internally, within the sender, Host A, it must keep: | |||
Packet Sequence Number of the last packet sent: 25 | Packet Sequence Number of the last packet sent: 25 | |||
Time the last packet was sent: 10:00:00 | Time the last | |||
packet was sent: | ||||
10:00:00 | ||||
Note, the initial PSNTP from Host A starts at a random number. In | Note, the initial PSNTP from Host A starts at a random number. In | |||
this case, 25. The time in these examples is shown in seconds for | this case, 25. The time in these examples is shown in seconds for | |||
the sake of simplicity. | the sake of simplicity. | |||
C.1.2 Step 2 | C.1.2. Step 2 | |||
Packet 1 is received at Host B. Its time is set to one hour later | Packet 1 is received at Host B. Its time is set to one hour later | |||
than Host A. In this case, 11:00AM | than Host A. In this case, 11:00AM | |||
Internally, within the receiver, Host B, it must note: | Internally, within the receiver, Host B, it must note: | |||
Packet Sequence Number of the last packet received: 25 | Packet Sequence Number of the last packet received: 25 | |||
Time the last packet was received : 11:00:03 | Time the last | |||
packet was | ||||
received : | ||||
11:00:03 | ||||
Note, this timestamp is in Host B time. It has nothing whatsoever to | Note, this timestamp is in Host B time. It has nothing whatsoever to | |||
do with Host A time. The Packet Sequence Number of the last packet | do with Host A time. The Packet Sequence Number of the last packet | |||
received will become PSNLR which will be sent out in the packet sent | received will become PSNLR which will be sent out in the packet sent | |||
by Host B in the next step. The time last received will be used to | by Host B in the next step. The time last received will be used to | |||
calculate the DELTALR value to be sent out in the packet sent by Host | calculate the DELTALR value to be sent out in the packet sent by Host | |||
B in the next step. | B in the next step. | |||
C.1.3 Step 3 | C.1.3. Step 3 | |||
Packet 2 is sent by Host B to Host A. Note, the initial packet | Packet 2 is sent by Host B to Host A. Note, the initial packet | |||
sequence number (PSNTP) from Host B starts at a random number. In | sequence number (PSNTP) from Host B starts at a random number. In | |||
this case, 12. Before sending the packet, Host B does a calculation | this case, 12. Before sending the packet, Host B does a calculation | |||
of deltas. Since Host B knows when it is sending the packet, and it | of deltas. Since Host B knows when it is sending the packet, and it | |||
knows when it received the previous packet, it can do the following | knows when it received the previous packet, it can do the following | |||
calculation: | calculation: | |||
Sending time : packet 2 - receive time : packet 1 | Sending time : packet 2 - receive time : packet 1 | |||
The result of this calculation is called: Delta Time Last Received | The result of this calculation is called: Delta Time Last Received | |||
(DELTATLR) | (DELTATLR) | |||
Note, both sending time and receive time are saved internally in Host | Note, both sending time and receive time are saved internally in Host | |||
B. They do not travel in the packet. Only the Delta is in the | B. They do not travel in the packet. Only the Delta is in the | |||
packet. | packet. | |||
Assume that within Host B is the following: | Assume that within Host B is the following: | |||
Packet Sequence Number of the last packet received: 25 | Packet Sequence Number of the last packet received: 25 | |||
Time the last packet was received: 11:00:03 | Time the last packet was received: 11:00:03 | |||
Packet Sequence Number of this packet: 12 | Packet Sequence Number of this packet: 12 | |||
Time this packet is being sent: 11:00:07 | Time this packet is being sent: 11:00:07 | |||
Now a delta value to be sent out in the packet can be calculated. | Now a delta value to be sent out in the packet can be calculated. | |||
DELTATLR becomes: | DELTATLR becomes: | |||
4 seconds = 11:00:07 - 11:00:03 = 3782DACE9D900000 asec | 4 seconds = 11:00:07 - 11:00:03 = 3782DACE9D900000 asec | |||
This is the derived metric: Server Delay. The time and scaling | This is the derived metric: Server Delay. The time and scaling | |||
factor must be converted; in this case, the time differential is | factor must be converted; in this case, the time differential is | |||
DE0B, and the scaling factor is 2E, or 46 in decimal. Then, these | DE0B, and the scaling factor is 2E, or 46 in decimal. Then, these | |||
values, along with the packet sequence numbers will be sent to Host A | values, along with the packet sequence numbers will be sent to Host A | |||
as follows: | as follows: | |||
Packet 2 | Packet 2 | |||
+----------+ +----------+ | +----------+ +----------+ | |||
| | | | | | | | | | |||
| Host | <---------- | Host | | | Host | <---------- | Host | | |||
skipping to change at page 25, line 23 | skipping to change at page 21, line 39 | |||
PDM Contents: | PDM Contents: | |||
PSNTP : Packet Sequence Number This Packet: 12 | PSNTP : Packet Sequence Number This Packet: 12 | |||
PSNLR : Packet Sequence Number Last Received: 25 | PSNLR : Packet Sequence Number Last Received: 25 | |||
DELTATLR : Delta Time Last Received: DE0B (4 seconds) | DELTATLR : Delta Time Last Received: DE0B (4 seconds) | |||
SCALEDTLR: Scale of Delta Time Last Received: 2E (46 decimal) | SCALEDTLR: Scale of Delta Time Last Received: 2E (46 decimal) | |||
DELTATLS : Delta Time Last Sent: - | DELTATLS : Delta Time Last Sent: - | |||
SCALEDTLS: Scale of Delta Time Last Sent: 0 | SCALEDTLS: Scale of Delta Time Last Sent: 0 | |||
The metric left to be calculated is the Round-Trip Delay. This will | The metric left to be calculated is the Round-Trip Delay. This will | |||
be calculated by Host A when it receives Packet 2. | be calculated by Host A when it receives Packet 2. | |||
C.1.4 Step 4 | C.1.4. Step 4 | |||
Packet 2 is received at Host A. Remember, its time is set to one | Packet 2 is received at Host A. Remember, its time is set to one | |||
hour earlier than Host B. Internally, it must note: | hour earlier than Host B. Internally, it must note: | |||
Packet Sequence Number of the last packet received: 12 | Packet Sequence Number of the last packet received: 12 | |||
Time the last packet was received : 10:00:12 | Time the | |||
last | ||||
packet | ||||
was | ||||
received | ||||
: | ||||
10:00:12 | ||||
Note, this timestamp is in Host A time. It has nothing whatsoever to | Note, this timestamp is in Host A time. It has nothing whatsoever to | |||
do with Host B time. | do with Host B time. | |||
So, now, Host A can calculate total end-to-end time. That is: | So, now, Host A can calculate total end-to-end time. That is: | |||
End-to-End Time = Time Last Received - Time Last Sent | End-to-End Time = Time Last Received - Time Last Sent | |||
For example, packet 25 was sent by Host A at 10:00:00. Packet 12 was | For example, packet 25 was sent by Host A at 10:00:00. Packet 12 was | |||
received by Host A at 10:00:12 so: | received by Host A at 10:00:12 so: | |||
End-to-End time = 10:00:12 - 10:00:00 or 12 (Server and Network RT | End-to-End time = 10:00:12 - 10:00:00 or 12 (Server and Network RT | |||
delay combined). This time may also be called total Overall Round- | delay combined). This time may also be called total Overall Round- | |||
Trip Time (RTT) which includes Network RTT and Host Response Time. | Trip Time (RTT) which includes Network RTT and Host Response Time. | |||
This derived metric we will call Delta Time Last Sent (DELTATLS) | This derived metric we will call Delta Time Last Sent (DELTATLS) | |||
Round trip delay can now be calculated. The formula is: | Round trip delay can now be calculated. The formula is: | |||
Round trip delay = (Delta Time Last Sent - Delta Time Last Received) | Round trip delay = (Delta Time Last Sent - Delta Time Last Received) | |||
Or: | Or: | |||
Round trip delay = 12 - 4 or 8 | Round trip delay = 12 - 4 or 8 | |||
Now, the only problem is that at this point all metrics are in Host A | Now, the only problem is that at this point all metrics are in Host A | |||
only and not exposed in a packet. To do that, we need a third packet. | only and not exposed in a packet. To do that, we need a third | |||
packet. | ||||
Note: this simple example assumes one send and one receive. That | Note: this simple example assumes one send and one receive. That is | |||
is done only for purposes of explaining the function of the PDM. In | done only for purposes of explaining the function of the PDM. In | |||
cases where there are multiple packets returned, one would take the | cases where there are multiple packets returned, one would take the | |||
time in the last packet in the sequence. The calculations of such | time in the last packet in the sequence. The calculations of such | |||
timings and intelligent processing is the function of post-processing | timings and intelligent processing is the function of post-processing | |||
of the data. | of the data. | |||
C.1.5 Step 5 | C.1.5. Step 5 | |||
Packet 3 is sent from Host A to Host B. | Packet 3 is sent from Host A to Host B. | |||
+----------+ +----------+ | +----------+ +----------+ | |||
| | | | | | | | | | |||
| Host | ----------> | Host | | | Host | ----------> | Host | | |||
| A | | B | | | A | | B | | |||
| | | | | | | | | | |||
+----------+ +----------+ | +----------+ +----------+ | |||
skipping to change at page 26, line 41 | skipping to change at page 23, line 24 | |||
PSNTP : Packet Sequence Number This Packet: 26 | PSNTP : Packet Sequence Number This Packet: 26 | |||
PSNLR : Packet Sequence Number Last Received: 12 | PSNLR : Packet Sequence Number Last Received: 12 | |||
DELTATLR : Delta Time Last Received: 0 | DELTATLR : Delta Time Last Received: 0 | |||
SCALEDTLS: Scale of Delta Time Last Received 0 | SCALEDTLS: Scale of Delta Time Last Received 0 | |||
DELTATLS : Delta Time Last Sent: A688 (scaled value) | DELTATLS : Delta Time Last Sent: A688 (scaled value) | |||
SCALEDTLR: Scale of Delta Time Last Received: 30 (48 decimal) | SCALEDTLR: Scale of Delta Time Last Received: 30 (48 decimal) | |||
To calculate Two-Way Delay, any packet capture device may look at | To calculate Two-Way Delay, any packet capture device may look at | |||
these packets and do what is necessary. | these packets and do what is necessary. | |||
C.2 Other Flows | C.2. Other Flows | |||
What has been discussed so far is a simple flow with one packet sent | What has been discussed so far is a simple flow with one packet sent | |||
and one returned. Let's look at how PDM may be useful in other | and one returned. Let's look at how PDM may be useful in other types | |||
types of flows. | of flows. | |||
C.2.1 PDM Flow - One Way Traffic | C.2.1. PDM Flow - One Way Traffic | |||
The flow on a particular session may not be a send-receive paradigm. | The flow on a particular session may not be a send-receive paradigm. | |||
Let us consider some other situations. In the case of a one-way | Let us consider some other situations. In the case of a one-way | |||
flow, one might see the following: | flow, one might see the following: | |||
Note: The time is expressed in generic units for simplicity. That | Note: The time is expressed in generic units for simplicity. That | |||
is, these values do not represent a number of attoseconds, | is, these values do not represent a number of attoseconds, | |||
microseconds or any other real units of time. | microseconds or any other real units of time. | |||
Packet Sender PSN PSN Delta Time Delta Time | Packet Sender PSN PSN Delta Time Delta Time | |||
This Packet Last Recvd Last Recvd Last Sent | This Packet Last Recvd Last Recvd Last Sent | |||
===================================================================== | ===================================================================== | |||
1 Server 1 0 0 0 | 1 Server 1 0 0 0 | |||
skipping to change at page 27, line 27 | skipping to change at page 24, line 9 | |||
What does this mean and how is it useful? | What does this mean and how is it useful? | |||
In a one-way flow, only the Delta Time Last Sent will be seen as | In a one-way flow, only the Delta Time Last Sent will be seen as | |||
used. Recall, Delta Time Last Sent is the difference between the | used. Recall, Delta Time Last Sent is the difference between the | |||
send of one packet from a device and the next. This is a measure of | send of one packet from a device and the next. This is a measure of | |||
throughput for the sender - according to the sender's point of view. | throughput for the sender - according to the sender's point of view. | |||
That is, it is a measure of how fast is the application itself (with | That is, it is a measure of how fast is the application itself (with | |||
stack time included) able to send packets. | stack time included) able to send packets. | |||
How might this be useful? If one is having a performance issue at | How might this be useful? If one is having a performance issue at | |||
the client and sees that packet 2, for example, is sent after 5 time | the client and sees that packet 2, for example, is sent after 5 time | |||
units from the server but takes 10 times that long to arrive at the | units from the server but takes 10 times that long to arrive at the | |||
destination, then one may safely conclude that there are delays in | destination, then one may safely conclude that there are delays in the | |||
the path other than at the server which may be causing the delivery | path other than at the server which may be causing the delivery issue | |||
issue of that packet. Such delays may include the network links, | of that packet. Such delays may include the network links, middle- | |||
middle-boxes, etc. | boxes, etc. | |||
Now, true one-way traffic is quite rare. What people often mean by | Now, true one-way traffic is quite rare. What people often mean by | |||
"one-way" traffic is an application such as FTP where a group of | "one-way" traffic is an application such as FTP where a group of | |||
packets (for example, a TCP window size worth) is sent, then the | packets (for example, a TCP window size worth) is sent, then the | |||
sender waits for acknowledgment. This type of flow would actually | sender waits for acknowledgment. This type of flow would actually | |||
fall into the "multiple-send" traffic model. | fall into the "multiple-send" traffic model. | |||
C.2.2 PDM Flow - Multiple Send Traffic | C.2.2. PDM Flow - Multiple Send Traffic | |||
Assume that two packets are sent for each ACK from the server. For | Assume that two packets are sent for each ACK from the server. For | |||
example, a TCP flow will do this, per RFC1122 [RFC1122] Section- | example, a TCP flow will do this, per RFC1122 [RFC1122] Section- | |||
4.2.3. | 4.2.3. | |||
Packet Sender PSN PSN Delta Time Delta Time | Packet Sender PSN PSN Delta Time Delta Time | |||
This Packet Last Recvd Last Recvd Last Sent | This Packet Last Recvd Last Recvd Last Sent | |||
===================================================================== | ===================================================================== | |||
1 Server 1 0 0 0 | 1 Server 1 0 0 0 | |||
2 Server 2 0 0 5 | 2 Server 2 0 0 5 | |||
skipping to change at page 28, line 29 | skipping to change at page 24, line 46 | |||
How might this be used? | How might this be used? | |||
Notice that in packet 3, the client has a value of Delta Time Last | Notice that in packet 3, the client has a value of Delta Time Last | |||
received of 20. Recall that Delta Time Last Received is the Send | received of 20. Recall that Delta Time Last Received is the Send | |||
time of packet 3 - receive time of packet 2. So, what does one know | time of packet 3 - receive time of packet 2. So, what does one know | |||
now? In this case, Delta Time Last Received is the processing time | now? In this case, Delta Time Last Received is the processing time | |||
for the Client to send the next packet. | for the Client to send the next packet. | |||
How to interpret this depends on what is actually being sent. | How to interpret this depends on what is actually being sent. | |||
Remember, PDM is not being used in isolation, but to supplement the | Remember, PDM is not being used in isolation, but to supplement the | |||
fields found in other headers. Let's take some examples: | fields found in other headers. Let's take some examples: | |||
1. Client is sending a standalone TCP ACK. One would find this by | 1. Client is sending a standalone TCP ACK. One would find this by | |||
looking at the payload length in the IPv6 header and the TCP | looking at the payload length in the IPv6 header and the TCP | |||
Acknowledgement field in the TCP header. So, in this case, the | Acknowledgement field in the TCP header. So, in this case, the | |||
client is taking 20 units to send back the ACK. This may or may not | client is taking 20 units to send back the ACK. This may or may not | |||
be interesting. | be interesting. | |||
2. Client is sending data with the packet. Again, one would find | 2. Client is sending data with the packet. Again, one would find | |||
this by looking at the payload length in the IPv6 header and the TCP | this by looking at the payload length in the IPv6 header and the TCP | |||
Acknowledgement field in the TCP header. So, in this case, the | Acknowledgement field in the TCP header. So, in this case, the | |||
client is taking 20 units to send back data. This may represent | client is taking 20 units to send back data. This may represent | |||
"User Think Time". Again, this may or may not be interesting, in | "User Think Time". Again, this may or may not be interesting, in | |||
isolation. But, if there is a performance problem receiving data at | isolation. But, if there is a performance problem receiving data at | |||
the server, then taken in conjunction with RTT or other packet timing | the server, then taken in conjunction with RTT or other packet timing | |||
information, this information may be quite interesting. | information, this information may be quite interesting. | |||
Of course, one also needs to look at the PSN Last Received field to | Of course, one also needs to look at the PSN Last Received field to | |||
make sure of the interpretation of this data. That is, to make | make sure of the interpretation of this data. That is, to make sure | |||
sure that the Delta Last Received corresponds to the packet of | that the Delta Last Received corresponds to the packet of interest. | |||
interest. | ||||
The benefits of PDM are that such information is now available in a | The benefits of PDM are that such information is now available in a | |||
uniform manner for all applications and all protocols without | uniform manner for all applications and all protocols without | |||
extensive changes required to applications. | extensive changes required to applications. | |||
C.2.3 PDM Flow - Multiple Send with Errors | C.2.3. PDM Flow - Multiple Send with Errors | |||
Let us now look at a case of how PDM may be able to help in a case of | Let us now look at a case of how PDM may be able to help in a case of | |||
TCP retransmission and add to the information that is sent in the TCP | TCP retransmission and add to the information that is sent in the TCP | |||
header. | header. | |||
Assume that three packets are sent with each send from the server. | Assume that three packets are sent with each send from the server. | |||
From the server, this is what is seen. | From the server, this is what is seen. | |||
Pkt Sender PSN PSN Delta Time Delta Time TCP Data | Pkt Sender PSN PSN Delta Time Delta Time TCP Data | |||
skipping to change at page 29, line 46 | skipping to change at page 26, line 18 | |||
So, then if a TCP retransmission is done, then from the client, this | So, then if a TCP retransmission is done, then from the client, this | |||
is what is seen for the packets sent from the server. | is what is seen for the packets sent from the server. | |||
Pkt Sender PSN PSN Delta Time Delta Time TCP Data | Pkt Sender PSN PSN Delta Time Delta Time TCP Data | |||
This Pkt LastRecvd LastRecvd LastSent SEQ Bytes | This Pkt LastRecvd LastRecvd LastSent SEQ Bytes | |||
===================================================================== | ===================================================================== | |||
1 Server 4 0 0 30 223 100 | 1 Server 4 0 0 30 223 100 | |||
The server has resent the old packet 2 with TCP sequence number of | The server has resent the old packet 2 with TCP sequence number of | |||
223. The retransmitted packet now has a PSN This Packet value of 4. | 223. The retransmitted packet now has a PSN This Packet value of 4. | |||
The Delta Last Sent is 30 - the time between sending the packet with | The Delta Last Sent is 30 - the time between sending the packet with | |||
PSN of 3 and this current packet. | PSN of 3 and this current packet. | |||
Let's say that packet 4 is lost again. Then, after some amount of | Let's say that packet 4 is lost again. Then, after some amount of | |||
time (RTO) then the packet with TCP sequence number of 223 is resent. | time (RTO) then the packet with TCP sequence number of 223 is resent. | |||
From the client, this is what is seen for the packets sent from the | From the client, this is what is seen for the packets sent from the | |||
server. | server. | |||
Pkt Sender PSN PSN Delta Time Delta Time TCP Data | Pkt Sender PSN PSN Delta Time Delta Time TCP Data | |||
This Pkt LastRecvd LastRecvd LastSent SEQ Bytes | This Pkt LastRecvd LastRecvd LastSent SEQ Bytes | |||
===================================================================== | ===================================================================== | |||
1 Server 5 0 0 60 223 100 | 1 Server 5 0 0 60 223 100 | |||
If now, this packet arrives at the destination, one has a very good | If now, this packet arrives at the destination, one has a very good | |||
idea that packets exist which are being sent from the server as | idea that packets exist which are being sent from the server as | |||
retransmissions and not arriving at the client. This is because the | retransmissions and not arriving at the client. This is because the | |||
PSN of the resent packet from the server is 5 rather than 4. If we | PSN of the resent packet from the server is 5 rather than 4. If we | |||
had used TCP sequence number alone, we would never have seen this | had used TCP sequence number alone, we would never have seen this | |||
situation. The TCP sequence number in all situations is 223. | situation. The TCP sequence number in all situations is 223. | |||
This situation would be experienced by the user of the application | This situation would be experienced by the user of the application | |||
(the human being actually sitting somewhere) as a "hangs" or long | (the human being actually sitting somewhere) as a "hangs" or long | |||
delay between packets. On large networks, to diagnose problems such | delay between packets. On large networks, to diagnose problems such | |||
as these where packets are lost somewhere on the network, one has to | as these where packets are lost somewhere on the network, one has to | |||
take multiple traces to find out exactly where. | take multiple traces to find out exactly where. | |||
The first thing is to start with doing a trace at the client and the | The first thing is to start with doing a trace at the client and the | |||
server. So, we can see if the server sent a particular packet and | server. So, we can see if the server sent a particular packet and | |||
the client received it. If the client did not receive it, then we | the client received it. If the client did not receive it, then we | |||
start tracking back to trace points at the router right after the | start tracking back to trace points at the router right after the | |||
server and the router right before the client. Did they get these | server and the router right before the client. Did they get these | |||
packets which the server has sent? This is a time consuming | packets which the server has sent? This is a time consuming | |||
activity. | activity. | |||
With PDM, we can speed up the diagnostic time because we may be able | With PDM, we can speed up the diagnostic time because we may be able | |||
to use only the trace taken at the client to see what the server is | to use only the trace taken at the client to see what the | |||
sending. | server is sending. | |||
Appendix D: Potential Overhead Considerations | Appendix D. Potential Overhead Considerations | |||
One might wonder as to the potential overhead of PDM. First, PDM is | One might wonder as to the potential overhead of PDM. First, PDM is | |||
entirely optional. That is, a site may choose to implement PDM or | entirely optional. That is, a site may choose to implement PDM or | |||
not as they wish. If they are happy with the costs of PDM vs. the | not as they wish. If they are happy with the costs of PDM vs. the | |||
benefits, then the choice should be theirs. | benefits, then the choice should be theirs. | |||
Below is a table outlining the potential overhead in terms of | Below is a table outlining the potential overhead in terms of | |||
additional time to deliver the response to the end user for various | additional time to deliver the response to the end user for various | |||
assumed RTTs. | assumed RTTs. | |||
Bytes RTT Bytes Bytes New Overhead | Bytes RTT Bytes Bytes New Overhead | |||
in Packet Per Millisec in PDM RTT | in Packet Per Millisec in PDM RTT | |||
===================================================================== | ===================================================================== | |||
1000 1000 milli 1 16 1016.000 16.000 milli | 1000 1000 milli 1 16 1016.000 16.000 milli | |||
1000 100 milli 10 16 101.600 1.600 milli | 1000 100 milli 10 16 101.600 1.600 milli | |||
1000 10 milli 100 16 10.160 .160 milli | 1000 10 milli 100 16 10.160 .160 milli | |||
1000 1 milli 1000 16 1.016 .016 milli | 1000 1 milli 1000 16 1.016 .016 milli | |||
Below are some examples of actual RTTs for packets traversing large | Below are some examples of actual RTTs for packets traversing large | |||
enterprise networks. The first example is for packets going to | enterprise networks. The first example is for packets going to | |||
multiple business partners. | multiple business partners. | |||
Bytes RTT Bytes Bytes New Overhead | Bytes RTT Bytes Bytes New Overhead | |||
in Packet Per Millisec in PDM RTT | in Packet Per Millisec in PDM RTT | |||
===================================================================== | ===================================================================== | |||
1000 17 milli 58 16 17.360 .360 milli | 1000 17 milli 58 16 17.360 .360 milli | |||
The second example is for packets at a large enterprise customer | The second example is for packets at a large enterprise customer | |||
within a data center. Notice that the scale is now in microseconds | within a data center. Notice that the scale is now in microseconds | |||
rather than milliseconds. | rather than milliseconds. | |||
Bytes RTT Bytes Bytes New Overhead | Bytes RTT Bytes Bytes New Overhead | |||
in Packet Per Microsec in PDM RTT | in Packet Per Microsec in PDM RTT | |||
===================================================================== | ===================================================================== | |||
1000 20 micro 50 16 20.320 .320 micro | 1000 20 micro 50 16 20.320 .320 micro | |||
As with other diagnostic tools, such as packet traces, a certain | As with other diagnostic tools, such as packet traces, a certain | |||
amount of processing time will be required to create and process PDM. | amount of processing time will be required to create and process | |||
Since PDM is lightweight (has only a few variables), we expect the | PDM. Since PDM is lightweight (has only a few variables), we expect | |||
the | ||||
processing time to be minimal. | processing time to be minimal. | |||
Acknowledgments | Acknowledgments | |||
The authors would like to thank Keven Haining, Al Morton, Brian | The authors would like to thank Keven Haining, Al Morton, Brian | |||
Trammel, David Boyes, Bill Jouris, Richard Scheffenegger, and Rick | Trammel, David Boyes, Bill Jouris, Richard Scheffenegger, and Rick | |||
Troth for their comments and assistance. We would also like to thank | Troth for their comments and assistance. We would also like to thank | |||
Tero Kivinen and Jouni Korhonen for their detailed and perceptive | Tero Kivinen and Jouni Korhonen for their detailed and perceptive | |||
reviews. | reviews. | |||
Authors' Addresses | Authors' Addresses | |||
Nalini Elkins | Nalini Elkins | |||
Inside Products, Inc. | Inside Products, Inc. | |||
36A Upper Circle | 36A Upper Circle | |||
Carmel Valley, CA 93924 | Carmel Valley, CA 93924 | |||
United States | United States | |||
Phone: +1 831 659 8360 | ||||
Email: nalini.elkins@insidethestack.com | ||||
http://www.insidethestack.com | ||||
Robert M. Hamilton | Robert M. Hamilton | |||
Chemical Abstracts Service | Chemical Abstracts Service | |||
A Division of the American Chemical Society | A Division of the American Chemical Society | |||
2540 Olentangy River Road | 2540 Olentangy River Road | |||
Columbus, Ohio 43202 | Columbus, Ohio 43202 | |||
United States | United States | |||
Phone: +1 614 447 3600 x2517 | ||||
Email: rhamilton@cas.org | ||||
http://www.cas.org | ||||
Michael S. Ackermann | Michael S. Ackermann | |||
Blue Cross Blue Shield of Michigan | Blue Cross Blue Shield of Michigan | |||
P.O. Box 2888 | P.O. Box 2888 | |||
Detroit, Michigan 48231 | Detroit, Michigan 48231 | |||
United States | United States | |||
Phone: +1 310 460 4080 | ||||
Email: mackermann@bcbsm.com | ||||
http://www.bcbsm.com | ||||
End of changes. 167 change blocks. | ||||
295 lines changed or deleted | 306 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |