Network device that determines application-level network latency by monitoring option values in a transport layer message
First Claim
1. A data processing apparatus, comprising:
- a network interface that is configured to be coupled between a first network node and a second network node, and in parallel with a data network for receiving one or more packet flows that are communicated between the first network node and the second network node;
a processor coupled to the network interface;
a clock coupled to the processor;
latency analysis logic coupled to the processor and comprising one or more stored sequences of instructions which, when executed by the processor, cause the processor to perform;
receiving a first data segment that has been generated by a first application hosted on an application layer protocol and communicated from a transport layer protocol of the first node, and forwarding the first data segment to the second node;
storing a first time value of the clock in association with a first timestamp value obtained from the first data segment;
wherein the first time value corresponds to a time when the first data segment was received by the network interface;
receiving a second data segment that has been generated by a second application hosted on the application layer protocol of the second node and communicated from the transport layer protocol of the second node in response to receiving the first data segment by the second application hosted on the application layer protocol of the second node, and forwarding the second data segment to the first node;
retrieving the first time value based on the first timestamp value;
determining a second time value of the clock;
wherein the second time value corresponds to a time when the second data segment was received by the network interface;
determining a first latency value by computing a difference of the second time value and the first time value;
receiving a third data segment that has been generated by the second application hosted on the application layer protocol of the second node and communicated from the transport layer protocol of the second node, and forwarding the third data segment to the first node;
storing a third time value of the clock in association with a third timestamp value obtained from the third data segment;
wherein the third time value corresponds to a time when the third data segment was received by the network interface;
receiving a fourth data segment that has been generated by the first application hosted on the application layer protocol of the first node and communicated from the transport layer protocol of the first node in response to receiving the third data segment by the first application hosted on the application layer protocol of the first node;
retrieving the third time value based on the third timestamp value;
determining a fourth time value of the clock;
wherein the fourth time value corresponds to a time when the fourth data segment was received by the network interface;
determining a second latency value by computing a difference of the fourth time value and the third time value;
determining an end-to-end latency value as;
(first latency value+second latency value/2).
1 Assignment
0 Petitions
Accused Products
Abstract
A data processing apparatus in a network receives packet flows that are communicated between a first network node and a second network node, and comprises a clock and latency analysis logic configured for receiving a first data segment that has been communicated from the first node and forwarding the first data segment to the second node; storing a first time value of the clock in association with a first timestamp value obtained from the first data segment; receiving a second data segment that has been communicated from the second node and forwarding the second data segment to the first node; retrieving the first time value based on the first timestamp value; determining a second time value of the clock; and determining a first latency value by computing a difference of the second time value and the first time value. Thus end-to-end packet latency is determined by passively observing timestamp values.
118 Citations
25 Claims
-
1. A data processing apparatus, comprising:
-
a network interface that is configured to be coupled between a first network node and a second network node, and in parallel with a data network for receiving one or more packet flows that are communicated between the first network node and the second network node; a processor coupled to the network interface; a clock coupled to the processor; latency analysis logic coupled to the processor and comprising one or more stored sequences of instructions which, when executed by the processor, cause the processor to perform; receiving a first data segment that has been generated by a first application hosted on an application layer protocol and communicated from a transport layer protocol of the first node, and forwarding the first data segment to the second node; storing a first time value of the clock in association with a first timestamp value obtained from the first data segment; wherein the first time value corresponds to a time when the first data segment was received by the network interface; receiving a second data segment that has been generated by a second application hosted on the application layer protocol of the second node and communicated from the transport layer protocol of the second node in response to receiving the first data segment by the second application hosted on the application layer protocol of the second node, and forwarding the second data segment to the first node; retrieving the first time value based on the first timestamp value; determining a second time value of the clock; wherein the second time value corresponds to a time when the second data segment was received by the network interface; determining a first latency value by computing a difference of the second time value and the first time value; receiving a third data segment that has been generated by the second application hosted on the application layer protocol of the second node and communicated from the transport layer protocol of the second node, and forwarding the third data segment to the first node; storing a third time value of the clock in association with a third timestamp value obtained from the third data segment; wherein the third time value corresponds to a time when the third data segment was received by the network interface; receiving a fourth data segment that has been generated by the first application hosted on the application layer protocol of the first node and communicated from the transport layer protocol of the first node in response to receiving the third data segment by the first application hosted on the application layer protocol of the first node; retrieving the third time value based on the third timestamp value; determining a fourth time value of the clock; wherein the fourth time value corresponds to a time when the fourth data segment was received by the network interface; determining a second latency value by computing a difference of the fourth time value and the third time value; determining an end-to-end latency value as;
(first latency value+second latency value/2). - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. An apparatus, comprising:
-
a network interface that is configured to be coupled between a first network node and a second network node, and in parallel with a data network for receiving one or more packet flows that are communicated between the first network node and the second network node; a processor coupled to the network interface; a clock coupled to the processor; means for receiving a first data segment that has been generated by a first application hosted on a an application layer protocol and communicated from a transport layer protocol of the first node, and forwarding the first data segment to the second node; means for storing a first time value of the clock in association with a first timestamp value obtained from the first data segment;
wherein the first time value corresponds to a time when the first data segment was received by the network interface;means for receiving a second data segment that has been generated by a second application hosted on the application layer protocol of the second node and communicated from the transport layer protocol of the second node in response to receiving the first data segment by the second application hosted on the application layer protocol of the second node, and forwarding the second data segment to the first node; means for retrieving the first time value based on the first timestamp value; means for determining a second time value of the clock;
wherein the second time value corresponds to a time when the second data segment was received by the network interface;means for determining a first latency value by computing a difference of the second time value and the first time value; means for receiving a third data segment that has been communicated from the second node to the first node; means for storing a third time value of the clock in association with a third timestamp value obtained from the third data segment;
wherein the third time value corresponds to a time when the third data segment was received by the network interface;means for receiving a fourth data segment that has been generated by the first application hosted on the application layer protocol of the first node and communicated from the transport layer protocol of the first node in response to receiving the third data segment by the first application hosted on the application layer protocol of the first node; means for retrieving the third time value based on the third timestamp value; means for determining a fourth time value of the clock;
wherein the fourth time value corresponds to a time when the fourth data segment was received by the network interface;means for determining a second latency value by computing a difference of the fourth time value and the third time value; means for determining an end-to-end latency value as;
(first latency value+second latency value)/2. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
-
15. A packet data router, comprising:
-
one or more network interfaces that are configured to be communicatively coupled between a first network node and a second network node, and in parallel with a data network for receiving one or more packet flows that are communicated between the first network node and the second network node; one or more processors coupled to the network interfaces; a clock coupled to the one or more processors; a computer-readable volatile or non-volatile storage medium comprising one or more stored sequences of instructions which, when executed by the one or more processors, cause the one or more processors to perform; receiving a first data segment that has been generated by a first application hosted on an application layer protocol and communicated from a transport layer protocol of the first node and forwarding the first data segment to the second node; storing a first time value of the clock in association with a first timestamp value obtained from the first data segment; wherein the first time value corresponds to a time when the first data segment was received by the network interface; receiving a second data segment that has been generated by a second application hosted on the application layer protocol of the second node and communicated from the transport layer protocol of the second node in response to receiving the first data segment by the second application hosted on the application layer protocol of the second node, wherein the second data segment comprises an acknowledgement of the first data segment and an echo of the first timestamp value; retrieving the first time value based on the first timestamp value; determining a second time value of the clock; wherein the second time value corresponds to a time when the second data segment was received by the network interface; determining a first latency value by computing a difference of the second time value and the first time value; receiving a third data segment that has been generated by the second application hosted on the application layer protocol of the second node and communicated from the transport layer protocol of the second node, and forwarding the third data segment to the first node; storing a third time value of the clock in association with a third timestamp value obtained from the third data segment; wherein the third time value corresponds to a time when the third data segment was received by the network interface; receiving a fourth data segment that has been generated by the first application hosted on the application layer protocol of the first node and communicated from the transport layer protocol of the first node in response to receiving the third data segment by the first application hosted on the application layer protocol of the first node, wherein the fourth data segment comprises an acknowledgement of the third data segment and an echo of the third timestamp value; retrieving the third time value based on the third timestamp value; determining a fourth time value of the clock; wherein the fourth time value corresponds to a time when the fourth data segment was received by the network interface; determining a second latency value by computing a difference of the fourth time value and the third time value; determining an end-to-end latency value as;
(first latency value+second latency value/2). - View Dependent Claims (16, 17, 18, 19)
-
-
20. A machine-implemented method comprising:
-
receiving a first data segment that has been generated by first application hosted on a an application layer protocol and communicated from a transport layer protocol of a first node and forwarding the first data segment to a second node, wherein the first data segment is received at a third node that is logically located in a network between the first node and the second node and in parallel with a path between the first node and the second node, wherein the third node maintains a local clock; storing a first time value of the local clock in association with a first timestamp value obtained from the first data segment; receiving a second data segment that has been generated by a second application hosted on the application layer protocol of the second node and communicated from the transport layer protocol of the second node to the first node in response to receiving the first data segment by the second application hosted on the application layer protocol of the second node; retrieving the first time value based on the first timestamp value; determining a second time value of the local clock; wherein the second time value corresponds to a time when the second data segments was received by the third node; determining a first latency value by computing a difference of the second time value and the first time value; receiving a third data segment that has been generated by the second application hosted on the application layer protocol of the second node and communicated from the transport layer protocol of the second node, and forwarding the third data segment to the first node; storing a third time value of the local clock in association with a third timestamp value obtained from the third data segment; wherein the third time value corresponds to a time when the third data segment was received by the third node; receiving a fourth data segment that has been generated by the first application hosted on the application layer protocol of the first node and communicated from the transport layer protocol of the first node in response to receiving the third data segment by the first application hosted on the application layer protocol of the first node; retrieving the third time value based on the third timestamp value; determining a fourth time value of the local clock; wherein the fourth time value corresponds to a time when the fourth data segment was received by the third node; determining a second latency value by computing a difference of the fourth time value and the third time value; determining an end-to-end latency value as;
(first latency value+second latency value/2);wherein the method is performed by one or more processors. - View Dependent Claims (21, 22)
-
-
23. A non-transitory computer-readable tangible volatile or non-volatile storage medium comprising one or more stored sequences of instructions which, when executed by one or more processors, cause the one or more processors to perform:
-
receiving a first data segment that has been generated by a first application hosted on an application layer protocol and communicated from a transport layer protocol of a first node and forwarding the first data segment to a second node, wherein the first data segment is received at a third node that is logically located in a network between the first node and the second node and in parallel with a path between the first node and the second node, wherein the third node maintains a local clock; storing a first time value of the local clock in association with a first timestamp value obtained from the first data segment; wherein the first time value corresponds to a time when the first data segment was received by the third node; at the third node, receiving a second data segment that has been generated by a second application hosted on the application layer protocol of the second node and communicated from the transport layer protocol of the second node in response to receiving the first data segment by the second application hosted on the application layer protocol of the second node; retrieving the first time value based on the first timestamp value; determining a second time value of the local clock; wherein the second time value corresponds to a time when the second data segments was received by the third node; determining a first latency value by computing a difference of the second time value and the first time value; receiving a third data segment that has been generated by the second application hosted on the application layer protocol of the second node and communicated from the transport layer protocol of the second node, and forwarding the third data segment to the first node; storing a third time value of the local clock in association with a third timestamp value obtained from the third data segment; wherein the third time value corresponds to a time when the third data segment was received by the third node; receiving a fourth data segment that has been generated by the first application hosted on the application layer protocol of the first node and communicated from the transport layer protocol of the first node in response to receiving the third data segment by the first application hosted on the application layer protocol of the first node; retrieving the third time value based on the third timestamp value; determining a fourth time value of the local clock; wherein the fourth time value corresponds to a time when the fourth data segment was received by the third node; determining a second latency value by computing a difference of the fourth time value and the third time value; determining an end-to-end latency value as;
(first latency value +second latency value/2). - View Dependent Claims (24, 25)
-
Specification