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 coupled to a data network for receiving one or more packet flows that are communicated between a first network node and a 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 an application hosted on a transport layer protocol and communicated from application and 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;
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;
determining a first latency value by computing a difference of the second time value and the first time value.
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.
201 Citations
29 Claims
-
1. A data processing apparatus, comprising:
-
a network interface that is coupled to a data network for receiving one or more packet flows that are communicated between a first network node and a 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 an application hosted on a transport layer protocol and communicated from application and 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;
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;
determining a first latency value by computing a difference of the second time value and the first time value. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. An apparatus, comprising:
-
a network interface that is coupled to a data network for receiving one or more packet flows that are communicated between a first network node and a 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 an application hosted on a transport layer protocol and communicated from application and 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;
means for receiving a second data segment that has been communicated from 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;
means for determining a first latency value by computing a difference of the second time value and the first time value. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16)
-
-
17. A packet data router, comprising:
-
one or more network interfaces that are communicatively coupled to a data network for receiving one or more packet flows that are communicated between a first network node and a second network node;
one or more processors coupled to the network interfaces;
a clock coupled to the one or more processors;
a computer-readable 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 an application hosted on a transport layer protocol and communicated from application and 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;
receiving a second data segment that has been communicated from 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;
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 communicated from the second node 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;
receiving a fourth data segment that has been communicated from the first node to the second 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;
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 (18, 19, 20, 21)
-
-
22. A machine-implemented method comprising:
-
receiving a first data segment that has been generated by an application hosted on a transport layer protocol and communicated from application and transport layer protocol of the first node and forwarding the first data segment to the second node, wherein the data segment is received at a third node that is logically located in the network on a data communication 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;
at the third node, receiving a second data segment that has been communicated from the second node to the first node;
retrieving the first time value based on the first timestamp value;
determining a second time value of the local clock;
determining a first latency value by computing a difference of the second time value and the first time value. - View Dependent Claims (23, 24, 25)
-
-
26. A computer-readable tangible 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 an application hosted on a transport layer protocol and communicated from application and transport layer protocol of the first node and forwarding the first data segment to the second node, wherein the data segment is received at a third node that is logically located in the network on a data communication 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;
at the third node, receiving a second data segment that has been communicated from the second node to the first node;
retrieving the first time value based on the first timestamp value;
determining a second time value of the local clock;
determining a first latency value by computing a difference of the second time value and the first time value. - View Dependent Claims (27, 28, 29)
-
Specification