draft-ietf-ippm-6man-pdm-option-05.txt | draft-ietf-ippm-6man-pdm-option-06.txt | |||
---|---|---|---|---|
INTERNET-DRAFT N. Elkins | INTERNET-DRAFT N. Elkins | |||
Inside Products | Inside Products | |||
R. Hamilton | R. Hamilton | |||
Chemical Abstracts Service | Chemical Abstracts Service | |||
M. Ackermann | M. Ackermann | |||
Intended Status: Proposed Standard BCBS Michigan | Intended Status: Proposed Standard BCBS Michigan | |||
Expires: March 18, 2017 September 14, 2016 | Expires: March 27, 2017 September 23, 2016 | |||
IPv6 Performance and Diagnostic Metrics (PDM) Destination Option | IPv6 Performance and Diagnostic Metrics (PDM) Destination Option | |||
draft-ietf-ippm-6man-pdm-option-05 | draft-ietf-ippm-6man-pdm-option-06 | |||
Abstract | Abstract | |||
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 embedded in each packet. Such | |||
measurements may be interpreted in real-time or after the fact. An | measurements may be interpreted in real-time or after the fact. An | |||
implementation of the existing IPv6 Destination Options extension | implementation of the existing IPv6 Destination Options extension | |||
header, the Performance and Diagnostic Metrics (PDM) Destination | header, the Performance and Diagnostic Metrics (PDM) Destination | |||
Options extension header as well as the field limits, calculations, | Options extension header as well as the field limits, calculations, | |||
and usage of the PDM in measurement are included in this document. | and usage of the PDM in measurement are included in this document. | |||
skipping to change at page 3, line 35 ¶ | skipping to change at page 3, line 35 ¶ | |||
4 Considerations of Timing Representation . . . . . . . . . . . . 12 | 4 Considerations of Timing Representation . . . . . . . . . . . . 12 | |||
4.1 Encoding the Delta-Time Values . . . . . . . . . . . . . . . 12 | 4.1 Encoding the Delta-Time Values . . . . . . . . . . . . . . . 12 | |||
4.2 Timer registers are different on different hardware . . . . 13 | 4.2 Timer registers are different on different hardware . . . . 13 | |||
4.3 Timer Units on Other Systems . . . . . . . . . . . . . . . . 13 | 4.3 Timer Units on Other Systems . . . . . . . . . . . . . . . . 13 | |||
4.4 Time Base . . . . . . . . . . . . . . . . . . . . . . . . . 14 | 4.4 Time Base . . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
4.5 Timer-value scaling . . . . . . . . . . . . . . . . . . . . 14 | 4.5 Timer-value scaling . . . . . . . . . . . . . . . . . . . . 14 | |||
4.6 Limitations with this encoding method . . . . . . . . . . . 15 | 4.6 Limitations with this encoding method . . . . . . . . . . . 15 | |||
4.7 Lack of precision induced by timer value truncation . . . . 16 | 4.7 Lack of precision induced by timer value truncation . . . . 16 | |||
5 PDM Flow - Simple Client Server . . . . . . . . . . . . . . . . 17 | 5 PDM Flow - Simple Client Server . . . . . . . . . . . . . . . . 17 | |||
5.1 Step 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 | 5.1 Step 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 | |||
5.2 Step 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 | 5.2 Step 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
5.3 Step 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 | 5.3 Step 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
5.4 Step 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 | 5.4 Step 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
5.5 Step 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 | 5.5 Step 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
6 Other Flows . . . . . . . . . . . . . . . . . . . . . . . . . . 21 | 6 Other Flows . . . . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
6.1 PDM Flow - One Way Traffic . . . . . . . . . . . . . . . . . 21 | 6.1 PDM Flow - One Way Traffic . . . . . . . . . . . . . . . . . 22 | |||
6.2 PDM Flow - Multiple Send Traffic . . . . . . . . . . . . . . 22 | 6.2 PDM Flow - Multiple Send Traffic . . . . . . . . . . . . . . 23 | |||
6.3 PDM Flow - Multiple Send with Errors . . . . . . . . . . . . 23 | 6.3 PDM Flow - Multiple Send with Errors . . . . . . . . . . . . 24 | |||
7 Potential Overhead Considerations . . . . . . . . . . . . . . . 25 | 7 Potential Overhead Considerations . . . . . . . . . . . . . . . 26 | |||
8 Security Considerations . . . . . . . . . . . . . . . . . . . . 26 | 8 Security Considerations . . . . . . . . . . . . . . . . . . . . 27 | |||
8.1. SYN Flood and Resource Consumption Attacks . . . . . . . . 26 | 8.1. SYN Flood and Resource Consumption Attacks . . . . . . . . 27 | |||
8.2 Pervasive monitoring . . . . . . . . . . . . . . . . . . . 26 | 8.2 Pervasive monitoring . . . . . . . . . . . . . . . . . . . 27 | |||
8.3 PDM as a Covert Channel . . . . . . . . . . . . . . . . . . 27 | 8.3 PDM as a Covert Channel . . . . . . . . . . . . . . . . . . 28 | |||
9 IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 27 | 9 IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 28 | |||
10 References . . . . . . . . . . . . . . . . . . . . . . . . . . 28 | 10 References . . . . . . . . . . . . . . . . . . . . . . . . . . 29 | |||
10.1 Normative References . . . . . . . . . . . . . . . . . . . 28 | 10.1 Normative References . . . . . . . . . . . . . . . . . . . 29 | |||
10.2 Informative References . . . . . . . . . . . . . . . . . . 28 | 10.2 Informative References . . . . . . . . . . . . . . . . . . 29 | |||
11 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . 28 | 11 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . 29 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 29 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 30 | |||
1 Background | 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 embedded in each packet. Such | |||
measurements may be interpreted in real-time or after the fact. | 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 | |||
skipping to change at page 8, line 33 ¶ | skipping to change at page 8, line 33 ¶ | |||
TBD = 0xXX (TBD) [To be assigned by IANA] [RFC2780] | TBD = 0xXX (TBD) [To be assigned by IANA] [RFC2780] | |||
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 | |||
16. | 16. | |||
Time Base | Time Base | |||
2-bit unsigned integer. It will indicate the lowest granularity | 2-bit binary value. It will indicate the lowest granularity possible | |||
possible for this device. That is, for a value of 00 in the Time | for this device. That is, for a value of 00 in the Time Base field, | |||
Base field, a value of 1 in the DELTA fields indicates 1 | a value of 1 in the DELTA fields indicates 1 millisecond. | |||
microsecond. | ||||
This field is being included so that a device may choose the | This field is being included so that a device may choose the | |||
granularity which most suits its timer ticks. That is, so that it | granularity which most suits its timer ticks. That is, so that it | |||
does not have to do more work than needed to convert values required | does not have to do more work than needed to convert values required | |||
for the PDM. | for the PDM. | |||
The possible values of Time Base are as follows: | The possible values of Time Base are as follows: | |||
00 - milliseconds | 00 - milliseconds | |||
01 - microseconds | 01 - microseconds | |||
skipping to change at page 14, line 18 ¶ | skipping to change at page 14, line 18 ¶ | |||
use different binary points. For some clocks, a value of 1 could | use different binary points. For some clocks, a value of 1 could | |||
indicate 1 microsecond, whereas other clocks could use the value 1 to | indicate 1 microsecond, whereas other clocks could use the value 1 to | |||
indicate 1 millisecond. In the former case, the binary digits to the | indicate 1 millisecond. In the former case, the binary digits to the | |||
right of that binary point measure 2**(-n) microseconds, and in the | right of that binary point measure 2**(-n) microseconds, and in the | |||
latter case, 2**(-n) milliseconds. | latter case, 2**(-n) milliseconds. | |||
The Time Base allows us to ensure we have a common reference, at the | The Time Base allows us to ensure we have a common reference, at the | |||
very least, common knowledge of what the binary point is for the | very least, common knowledge of what the binary point is for the | |||
transmitted values. | transmitted values. | |||
We define a base unit for the time. This is a 2-bit integer | We define a base unit for the time. This is a 2-bit binary value | |||
indicating the lowest granularity possible for this device. That is, | indicating the lowest granularity possible for this device. That is, | |||
for a value of 00 in the Time Base field, a value of 1 in the DELTA | for a value of 00 in the Time Base field, a value of 1 in the DELTA | |||
fields indicates 1 picosecond. | fields indicates 1 millisecond. | |||
The possible values of Time Base are as follows: | The possible values of Time Base are as follows: | |||
00 - milliseconds | 00 - milliseconds | |||
01 - microseconds | 01 - microseconds | |||
10 - nanoseconds | 10 - nanoseconds | |||
11 - picoseconds | 11 - picoseconds | |||
Time base is not necessarily equivalent to length of one timer tick. | Time base is not necessarily equivalent to length of one timer tick. | |||
That is, on many, if not all, systems, the timer tick value will not | That is, on many, if not all, systems, the timer tick value will not | |||
skipping to change at page 15, line 9 ¶ | skipping to change at page 15, line 9 ¶ | |||
1110100011010100101001010001000000000000 | 1110100011010100101001010001000000000000 | |||
<-16 bits -><-24 bits -> | <-16 bits -><-24 bits -> | |||
then, the values stored would be 1110 1000 1101 0100 in binary (E8D4 | then, the values stored would be 1110 1000 1101 0100 in binary (E8D4 | |||
hexadecimal) for the time value and 24 for the scaling value. Note | hexadecimal) for the time value and 24 for the scaling value. Note | |||
that the displayed value is the binary equivalent of 1 second | that the displayed value is the binary equivalent of 1 second | |||
expressed in picoseconds. | expressed in picoseconds. | |||
The below table represents a device which has a TimeBase of | The below table represents a device which has a TimeBase of | |||
picosecond (or 00). The smallest and simplest value to represent is | picoseconds (or 11). The smallest and simplest value to represent is | |||
1 picosecond; the time value stored is 1, and the scaling value is 0. | 1 picosecond; the time value stored is 1, and the scaling value is 0. | |||
Using values from the table below, we have: | Using values from the table below, we have: | |||
Time value in Encoded Scaling | Time value in Encoded Scaling | |||
Delta time picoseconds value decimal | Delta time picoseconds value decimal | |||
-------------------------------------------------------- | -------------------------------------------------------- | |||
1 picosecond 1 1 0 | 1 picosecond 1 1 0 | |||
1 nanosecond 3E8 3E8 0 | 1 nanosecond 3E8 3E8 0 | |||
1 microsecond F4240 F424 4 | 1 microsecond F4240 F424 4 | |||
1 millisecond 3B9ACA00 3B9A 16 | 1 millisecond 3B9ACA00 3B9A 16 | |||
skipping to change at page 15, line 36 ¶ | skipping to change at page 15, line 36 ¶ | |||
Sample binary values (high order 16 bits taken) | Sample binary values (high order 16 bits taken) | |||
1 psec 1 0001 | 1 psec 1 0001 | |||
1 nsec 3E8 0011 1110 1000 | 1 nsec 3E8 0011 1110 1000 | |||
1 usec F4240 1111 0100 0010 0100 0000 | 1 usec F4240 1111 0100 0010 0100 0000 | |||
1 msec 3B9ACA00 0011 1011 1001 1010 1100 1010 0000 0000 | 1 msec 3B9ACA00 0011 1011 1001 1010 1100 1010 0000 0000 | |||
1 sec E8D4A51000 1110 1000 1101 0100 1010 0101 0001 0000 0000 0000 | 1 sec E8D4A51000 1110 1000 1101 0100 1010 0101 0001 0000 0000 0000 | |||
4.6 Limitations with this encoding method | 4.6 Limitations with this encoding method | |||
If we follow the specification in [TRAM-TCPM], the size of one of | According to the specification in [TRAM-TCPM] the size of one such | |||
these time-interval fields is limited to this 11-bit value and five- | time-interval field is limited to this 11-bit value and 5-bit | |||
bit scale, so that they fit into a 16-bit space. With that | unsigned scale so that they fit into a 16 bit space. With that | |||
limitation, the maximum value that could be stored in 16 bits is: | limitation, the maximum value that could be stored in 16 bits is: | |||
11-bit value Scale | 11-bit value Scale | |||
============= ====== | ============= ====== | |||
1111 1111 111 1 1111 | 1111 1111 111 1 1111 | |||
or an encoded value of 3FF and a scale value of 31. This value | or an encoded value of 3FF and a scale value of 31. This value, in | |||
corresponds to any time differential between: | microseconds, corresponds to any time differential between: | |||
|<Count of zeroes is the Scale value>| | |<Count of zeroes is the Scale value>| | |||
11 1111 1111 1000 0000 0000 0000 0000 0000 0000 0000 (binary) | 11 1111 1111 1000 0000 0000 0000 0000 0000 0000 0000 (binary) | |||
3 F F 8 0 0 0 0 0 0 0 (hexadecimal) | 3 F F 8 0 0 0 0 0 0 0 (hexadecimal) | |||
and | and | |||
11 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 (binary) | 11 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 (binary) | |||
3 F F F F F F F F F F (hexadecimal) | 3 F F F F F F F F F F (hexadecimal) | |||
This time value, 3FFFFFFFFFF, converts to 50 days, 21 hours, 40 | The latter time value, 3FFFFFFFFFF, converts to 50 days, 21 hours 40 | |||
minutes and 46.511103 seconds. A time differential 1 microsecond | minutes and 46.511103 seconds. A time differential 1 microsecond | |||
longer won't fit into 16 bits using this encoding method. | longer won't fit into 16 bits using this encoding scheme. | |||
Thus, PDM separates the scaling value from the interval value, giving | ||||
a full 16 bits for the interval (DELTA) values and introducing a | ||||
signed scaling value that can range from -128 to +127. | ||||
4.7 Lack of precision induced by timer value truncation | 4.7 Lack of precision induced by timer value truncation | |||
When the bit values following the first 11 significant bits are | As PDM specifies the DELTA values as 16-bit unsigned values, any time | |||
truncated, obviously loss of precision in the value. The range of | the precision is greater than those 16 bits, there will be truncation | |||
values that will be truncated to the same encoded value is | of the trailing bits, with an obvious loss precision in the value. | |||
2**(Scale)-1 microseconds. | Using microseconds as the Time Base, the range of values that would | |||
be truncated to the same encoded value is 2**(Scale)-1 microseconds. | ||||
The smallest time differential value that will be truncated is | The smallest time differential that would be truncated is | |||
1000 0000 0000 = 2.048 msec | 1 0000 0000 0000 0000 = 65536 usec | |||
The value | The value | |||
1000 0000 0001 = 2.049 msec | 1 0000 0000 0000 0001 = 65537 usec | |||
will be truncated to the same encoded value, which is 400 in hex, | would be truncated to the same encoded value, which is 8000 in hex | |||
with a scale value of 1. With the scale value of 1, the value range | with a Scale value of 1. When the Scale value is 1, the value range | |||
is calculated as 2**1 - 1, or 1 usec, which you can see is the | is calculated as 2**1 - 1, or 1 microsecond, which you can see is the | |||
difference between these minimum and maximum values. | difference between these minimum and maximum values. | |||
With that in mind, let's look at that table of delta time values | With that in mind, let's look at that table of DELTA time values | |||
again, where the Precision is the range from the smallest value | again, where the Precision is the range from the smallest value | |||
corresponding to this encoded value to the largest: | corresponding to this encoded value to the largest: | |||
Time value in Encoded | Time value in Encoded | |||
Delta time microseconds value Scale Precision | Delta time microseconds value Scale Precision | |||
1 microsecond 1 1 0 0:00.000000 | 1 microsecond 1 1 0 0:00.000000 | |||
1 millisecond 38E 38E 0 0:00.000000 | 1 millisecond 38E 38E 0 0:00.000000 | |||
1 second F4240 7A1 9 0:00.000511 | 1 second F4240 F424 4 0:00.000015 | |||
1 minute 3938700 727 15 0:00.032767 | 1 minute 3938700 3938 12 0:00.004095 | |||
1 hour D693A400 6B4 21 0:02.097151 | 1 hour D693A400 D693 16 0:00.065535 | |||
1 day 141DD76000 507 26 1:07.108863 | 1 day 141DD76000 141D 24 0:16.777215 | |||
Maximum value 3FFFFFFFFFF 7FF 31 35:47.483647 | Maximum value 3FFFFFFFFFF FFFF 36 19:05:19.476735 | |||
So, when measuring the delay between transmission of two packets, or | ||||
between the reception of two packets, any delay shorter than 50 days | This maximum DELTA value is nearly 52,125 days. At the greatest | |||
21 hours and change can be stored in this encoded fashion within 16 | value, you can be assured of accuracy within about 19 hours. More | |||
bits. When you encode, for example, a DTN response time delay of 50 | simply, response times in the range of a few seconds can be encoded | |||
days, 21 hours and 40 minutes, you can be assured of accuracy within | with a loss of precision no greater than a tenth of a millisecond. | |||
35 minutes. | Most importantly, response times shorter than 65.5 milliseconds can | |||
be encoded with no loss of precision. | ||||
5 PDM Flow - Simple Client Server | 5 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. | |||
Each packet, in addition to the PDM contains information on the | Each packet, in addition to the PDM contains information on the | |||
skipping to change at page 19, line 45 ¶ | skipping to change at page 20, line 45 ¶ | |||
| | | | | | | | | | |||
| Host | <---------- | Host | | | Host | <---------- | Host | | |||
| A | | B | | | A | | B | | |||
| | | | | | | | | | |||
+----------+ +----------+ | +----------+ +----------+ | |||
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: 3A35 (4 seconds) | DELTATLR : Delta Time Last Received: FA0 (4 seconds) | |||
SCALEDTLR: Scale of Delta Time Last Received: 25 | SCALEDTLR: Scale of Delta Time Last Received: 00 | |||
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 | |||
TIMEBASE : Granularity of Time: 00 (Milliseconds) | TIMEBASE : Granularity of Time: 00 (Milliseconds) | |||
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. | |||
5.4 Step 4 | 5.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 | |||
skipping to change at page 21, line 22 ¶ | skipping to change at page 22, line 22 ¶ | |||
| A | | B | | | A | | B | | |||
| | | | | | | | | | |||
+----------+ +----------+ | +----------+ +----------+ | |||
PDM Contents: | PDM Contents: | |||
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: 105e (12 seconds) | DELTATLS : Delta Time Last Sent: 2EE0 (12 seconds) | |||
SCALEDTLR: Scale of Delta Time Last Received: 26 | SCALEDTLR: Scale of Delta Time Last Received: 00 | |||
TIMEBASE : Granularity of Time: 00 (Milliseconds) | TIMEBASE : Granularity of Time: 00 (Milliseconds) | |||
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. | |||
6 Other Flows | 6 Other Flows | |||
What we have discussed so far is a simple flow with one packet sent | What we have 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 of flows. | types of flows. | |||
End of changes. 20 change blocks. | ||||
61 lines changed or deleted | 66 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |