IP Library Granted Patent US 10,116,531
Granted Patent B2
US 10,116,531 · App. 15/170,837 · Granted Oct 30, 2018

Round trip time (RTT) measurement based upon sequence number

Inventors: Mohammadreza Alizadeh Attar (Cambridge, MA); Navindra Yadav (Cupertino, CA); Abhishek Ranjan Singh (Pleasanton, CA); Vimalkumar Jeyakumar (Sunnyvale, CA); Shashidhar Gandham (Fremont, CA); Roberto Fernando Spadaro (Milpitas, CA)
Assignee: CISCO TECHNOLOGY, INC
H04L43/045G06F3/0482G06F3/04842G06F3/04847G06F9/45558G06F17/3053G06F17/30241G06F17/30554G06F17/30598G06F17/30604G06F17/30867G06F21/53G06F21/552G06F21/566G06N99/005G06T11/206H04J3/0661H04J3/14H04L1/242H04L9/0866H04L9/3239H04L9/3242H04L41/046H04L41/0668H04L41/0803H04L41/0806H04L41/0816H04L41/0893H04L41/12H04L41/16H04L41/22H04L43/02H04L43/04H04L43/062H04L43/08H04L43/0805H04L43/0811H04L43/0829H04L43/0841H04L43/0858H04L43/0864H04L43/0876H04L43/0882H04L43/0888H04L43/10H04L43/106H04L43/12H04L43/16H04L45/306H04L45/38H04L45/46H04L45/507H04L45/66H04L45/74H04L47/11H04L47/20H04L47/2441H04L47/2483H04L47/28H04L47/31H04L47/32H04L61/2007H04L63/0227H04L63/0263H04L63/06H04L63/0876H04L63/145H04L63/1408H04L63/1416H04L63/1425H04L63/1433H04L63/1441H04L63/1458H04L63/1466H04L63/16H04L63/20H04L67/10H04L67/1002H04L67/12H04L67/16H04L67/36H04L67/42H04L69/16H04L69/22H04W72/08H04W84/18G06F2009/4557G06F2009/45587G06F2009/45591G06F2009/45595G06F2221/033G06F2221/2101G06F2221/2105G06F2221/2111G06F2221/2115G06F2221/2145H04L67/22
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,116,531
App. No.
15/170,837
Filed
Jun 1, 2016
Granted
Oct 30, 2018
Kind
B2
Examiner
KIM, HARRY H
Art Unit
2411
USPC
370/253
Abstract

Systems, methods, and computer-readable media are provided for determining a packet's round trip time (RTT) in a network. A system can receive information of a packet sent by a component of the network and further determine an expected acknowledgement (ACK) sequence number associated with the packet based upon received information of the packet. The system can receive information of a subsequent packet received by the component and determine an ACK sequence number and a receiving time of the subsequent packet. In response to determining that the ACK sequence number of the subsequent TCP packet matches the expected ACK sequence number, the system can determine a round trip time (RTT) of the packet based upon the received information of the packet and the received information of the subsequent packet.

Claims (91)

1. A method comprising:

receiving, from a sensor of a plurality of sensors in a network, information of a first packet sent by a component of the network, the plurality of sensors configured to sense information of data packets moving through the network;

analyzing the information of the first packet to determine an expected acknowledgement (ACK) sequence number associated with the first packet;

receiving information of a following packet received by the component;

analyzing the information of the following packet to determine an ACK sequence number of the following packet;

determining that the ACK sequence number of the following packet matches the expected ACK sequence number;

determining a round trip time (RTT) of the first packet based upon the information of the first packet and the information of the following packet;

receiving, from the plurality of sensors, information of transmission control protocol (TCP) hand-shakes of the network within a specific time period; and

determining a number of re-transmission packets and new packets during the specific time period based upon the information of TCP hand-shakes.

2. The method of claim 1 , further comprising:

determining a sending time, a packet sequence number and a packet size of the first packet based upon the information of the first packet,

wherein the expected ACK sequence number associated with the first packet is determined based upon the packet sequence number and the packet size of the first packet.

3. The method of claim 2 , further comprising:

analyzing the information of the following packet to determine a receiving time of the following packet,

wherein the RTT of the first packet is determined based upon the sending time of the first packet and the receiving time of the following packet.

4. The method of claim 1 , further comprising:

determining that the ACK sequence number of the following packet does not match the expected ACK sequence number;

ignoring the following packet; and

receiving information of a next packet received by the component.

5. The method of claim 4 , further comprising:

analyzing the information of the next packet to determine an ACK sequence number of the next packet received by the component; and

determining that the ACK sequence number of the next packet matches the expected ACK sequence number,

wherein the RTT of the first packet is determined based upon the information of the first packet and the information of the next packet.

6. The method of claim 4 , further comprising:

analyzing the information of the next packet to determine an ACK sequence number of the next packet received by the component;

determining that the ACK sequence number of the next packet does not match the expected ACK sequence number; and

generating a warning report to indicate a potential attack.

7. The method of claim 1 , further comprising:

determining a congestion level of the network based at least upon the RTT of the first packet.

8. The method of claim 1 , further comprising:

determining a number of non-duplicative packets associated with the TCP hand-shakes based upon the information of TCP hand-shakes; and

determining a packet loss rate of the network during the specific time period based upon the number of non-duplicative packets and the number of re-transmission packets and new packets.

9. The method of claim 1 , further comprising:

selecting a range of packet sequence numbers for a specific network analysis;

determining a packet sequence number of the first packet based upon the information of the first packet; and

determining that the packet sequence number of the first packet is within the range of packet sequence numbers.

10. The method of claim 9 , further comprising:

receiving information of an additional packet from the plurality of sensors;

determining a packet sequence number of the additional packet based upon the information of the additional packet;

determining that the packet sequence number of the additional packet is not within the range of packet sequence numbers; and

ignoring the additional packet in the specific network analysis.

11. A system comprising:

a processor; and

a computer-readable storage medium storing instructions which, when executed by the processor, cause the system to perform operations comprising:

receiving, from a sensor of a plurality of sensors in a network, information of a first packet sent by a component of the network, the plurality of sensors configured to sense information of data packets moving through the network;

analyzing the information of the first packet to determine an expected acknowledgement (ACK) sequence number associated with the first packet;

receiving information of a following packet received by the component;

analyzing the information of the following packet to determine an ACK sequence number of the following packet;

determining that the ACK sequence number of the following packet matches the expected ACK sequence number;

determining a round trip time (RTT) of the first packet based upon the information of the first packet and the information of the following packet;

receiving, from the plurality of sensors, information of transmission control protocol (TOP) hand-shakes of the network within a specific time period; and

determining a number of re-transmission packets and new packets during the specific time period based upon the information of TOP hand-shakes.

12. The system of claim 11 , wherein the instructions, when executed by the processor, cause the system to perform operations further comprising:

determining a sending time, a packet sequence number and a packet size of the first packet based upon the information of the first packet,

wherein the expected ACK sequence number associated with the first packet is determined based upon the packet sequence number and the packet size of the first packet.

13. The system of claim 12 , wherein the instructions, when executed by the processor, cause the system to perform operations further comprising:

analyzing the information of the following packet to determine a receiving time of the following packet,

wherein the RTT of the first packet is determined based upon the sending time of the first packet and the receiving time of the following packet.

14. The system of claim 11 , wherein the instructions, when executed by the processor, cause the system to perform operations further comprising:

determining that the ACK sequence number of the following packet does not match the expected ACK sequence number;

ignoring the following packet; and

receiving information of a next packet received by the component.

15. The system of claim 14 , wherein the instructions, when executed by the processor, cause the system to perform operations further comprising:

analyzing the information of the next packet to determine an ACK sequence number of the next packet received by the component; and

determining that the ACK sequence number of the next packet matches the expected ACK sequence number,

wherein the RTT of the first packet is determined based upon the information of the first packet and the information of the next packet.

16. The system of claim 14 , wherein the instructions, when executed by the processor, cause the system to perform operations further comprising:

analyzing the information of the next packet to determine an ACK sequence number of the next packet received by the component;

determining that the ACK sequence number of the next packet does not match the expected ACK sequence number; and

generating a warning report to indicate a potential attack.

17. The system of claim 11 , wherein the instructions, when executed by the processor, cause the system to perform operations further comprising:

determining a number of non-duplicative packets associated with the TCP hand-shakes based upon the information of TCP hand-shakes; and

determining a packet loss rate of the network during the specific time period based upon the number of non-duplicative packets and the number of re-transmission packets and new packets.

18. The system of claim 11 , wherein the instructions, when executed by the processor, cause the system to perform operations further comprising:

selecting a range of packet sequence numbers for a specific network analysis;

determining a packet sequence number of the first packet based upon the information of the first packet; and

determining that the packet sequence number is within the range of packet sequence numbers.

19. The system of claim 18 , wherein the instructions, when executed by the processor, cause the system to perform operations further comprising:

receiving information of an additional packet from the plurality of sensors;

determining a packet sequence number of the additional packet based upon the information of the additional packet;

determining that the packet sequence number of the additional packet is not within the range of packet sequence numbers; and

ignoring the additional packet in the specific network analysis.

20. A non-transitory computer-readable storage medium storing instructions for determining a first packet's round trip time (RTT) in a network, that, when executed by at least one processor of a computing system, cause the computing system to perform operations comprising:

receiving, from a sensor of a plurality of sensors in the network, information of the first packet sent by a component of the network, the plurality of sensors configured to sense information of data packets moving through the network;

analyzing the information of the first packet to determine an expected acknowledgement (ACK) sequence number associated with the first packet;

receiving information of a following packet received by the component;

analyzing the information of the following packet to determine an ACK sequence number of the following packet;

determining that the ACK sequence number of the following packet matches the expected ACK sequence number;

determining a round trip time (RTT) of the first packet based upon the information of the first packet and the information of the following packet;

receiving, from the plurality of sensors, information of transmission control protocol (TOP) hand-shakes of the network within a specific time period; and

determining a number of re-transmission packets and new packets during the specific time period based upon the information of TCP hand-shakes.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 7, 2016
From: ATTAR, MOHAMMADREZA ALIZADEH; YADAV, NAVINDRA; SINGH, ABHISHEK RANJAN; JEYAKUMAR, VIMALKUMAR; GANDHAM, SHASHIDHAR; SPADARO, ROBERTO FERNANDO
To: CISCO TECHNOLOGY, INC.
Reel/Frame 039943/0189 →
Continuity (2)
Provisional Application 62171899 · Jun 5, 2015
Related Publication 20160359712A1 · Dec 8, 2016
Cited By (11)
US 12,192,078 US 12,212,476 US 12,224,921 US 12,231,307 US 12,231,308 US 12,278,746 US 12,335,275 US 12,596,568 US 12,657,049 US 12,659,324 US 12,670,003