IP Library › Granted Patent US 10,033,613
Granted Patent B1
US 10,033,613 · App. 14/983,174 · Granted Jul 24, 2018

Historically large flows in network visibility monitoring

Inventors: Raymond Scott Whiteside (Austin, TX); Thomas A. Volpe (Austin, TX)
Assignee: Amazon Technologies, Inc.
H04L43/0882H04L41/12H04L47/125
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,033,613
App. No.
14/983,174
Granted
Jul 24, 2018
Kind
B1
Abstract

Provided are systems and methods for managing historically large flows in network visibility monitoring. In some implementations, provided is an integrated circuit. The integrated circuit may be operable to receive packet information describing a packet at the cycle of a clock input. The packet may be associated with a packet flow being transmitted across a network. The integrated circuit may further generate keys using information identifying a packet flow provided by the packet information. The integrated circuit may further read values for counters and state information associated with each counter from a memory, using the keys. The integrated circuit may further determine from the state information that the packet flow identified by the packet information is a historically large packet flow. Upon determining that the packet flow is a historically large packet flow, the integrated circuit may further update an entry in a flow memory using the packet information.

Claims (72)

1. An integrated circuit, comprising:

a clock input;

a counter memory operable to store values for counters and state information associated with each of the counters;

a flow memory operable to store information to track packet flows;

a key generation logic; and

a large flow determination logic;

wherein the integrated circuit is operable to:

clear the counters in the counter memory;

subsequent to clearing the counters, receive, at a cycle of the clock input, packet information describing a packet, wherein the packet is associated with a packet flow being transmitted over a network, and wherein the packet information includes information identifying the packet flow;

generate, using the key generation logic, a set of keys, wherein generating the set of keys includes using the information identifying the packet flow;

read from the counter memory, using the set of keys, values for a set of counters and state information associated with the set of counters, wherein the state information can be used to determine whether the packet flow was identified as a large packet flow before the counters were cleared;

determine, using the large flow determination logic, that a value from the values for the set of counters is below a threshold, wherein the set of counters indicate that the packet flow is a small packet flow;

determine, using the large flow determination logic, that the state information indicates that the packet flow was identified as a large packet flow before the counters were cleared;

determine, based on the state information indicating that the packet flow was previously identified as a large packet flow, that the packet flow is a historically large packet flow; and

upon determining that the packet flow is a historically large packet flow, update an entry in the flow memory using the packet information, the entry including the information identifying the packet flow, a lock indicator, and a refresh indicator, the lock indicator indicating when the entry can be replaced, and the refresh indicator indicating when the entry can be cleared.

2. An integrated circuit, comprising:

a clock input;

a counter memory operable to store values for counters and state information for each of the counters;

a flow memory operable to store information to track packet flows;

a key generation logic; and

a large flow determination logic;

wherein the integrated circuit is operable to:

receive, at a cycle of the clock input, packet information describing a packet, wherein the packet is associated with a packet flow being transmitted across a network, and wherein the packet information includes information identifying the packet flow;

generate, using the key generation logic, a key, wherein generating the key includes using the information identifying the packet flow;

read from the counter memory, using the key, values for a set of counters and state information associated with the set of counters, wherein the state information can be used to determine whether the packet flow was identified as a large packet flow before the set of counters were cleared;

determine, using the large flow determination logic, that the packet flow identified by the packet information is a historically large packet flow, wherein the values for the set of counters indicate that the packet flow is a small packet flow, wherein the state information indicates that the packet flow was previously identified as a large packet flow, and wherein determining that the packet flow is a historically large packet flow is based on the state information; and

upon determining that the packet flow is a historically large packet flow, update an entry in the flow memory using the packet information, wherein the entry is indexed using the key.

3. The integrated circuit of claim 2 , wherein the integrated circuit is further operable to determine, using the large flow determination logic, that the packet flow is a newly-identified large packet flow, wherein determining that the packet flow is a newly-identified large packet flow includes determining, upon incrementing at least one counter from the set of counters based on a packet size, that the set of counters are all at or above a threshold value, wherein the packet size is provided by the packet information.

4. The integrated circuit of claim 3 , wherein the integrated circuit is operable to update the entry in the flow memory by determining that the information identifying the packet flow matches identification information stored in the entry.

5. The integrated circuit of claim 4 , wherein the integrated circuit is operable to update the entry in the flow memory by updating a lock indicator.

6. The integrated circuit of claim 3 , wherein the integrated circuit is operable to update the entry in the flow memory by:

determining that the information identifying the packet flow does not match identification information stored in the entry;

determining that a lock indicator stored in the entry indicates that the entry is not locked;

updating the entry with the information provided by the packet information; and

resetting the lock indicator.

7. The integrated circuit of claim 6 , wherein the integrated circuit is operable to reset a refresh indicator, the refresh indicator indicating when the entry in the flow memory can be cleared.

8. The integrated circuit of claim 3 , wherein the integrated circuit is operable to update the entry in the flow memory by:

determining that the information identifying the packet flow does not match identification information stored in the entry;

determining that a lock indicator stored in the entry indicates that the entry is locked; and

updating an error indicator stored in the entry.

9. The integrated circuit of claim 3 , wherein the integrated circuit is operable to update the state information associated with the set of counters to indicate that the packet flow is a newly-identified large packet flow.

10. The integrated circuit of claim 2 , wherein the integrated circuit is further operable to determine, using the large flow determination logic, that at least one counter from the set of counters is below a threshold value after the at least one counter is incremented based on a packet size provided by the packet information.

11. The integrated circuit of claim 10 , wherein the integrated circuit is operable to update the entry in the flow memory upon determining that the information identifying the packet flow matches identification information stored in the entry.

12. The integrated circuit of claim 2 , wherein the integrated circuit is operable to, at an end of a pre-determined interval:

read contents of the flow memory;

generate a plurality of packets, the plurality of packets including the contents of the flow memory, wherein each of the plurality of packets is addressed to a collector device on the network; and

transmit each of the plurality of packets.

13. The integrated circuit of claim 2 , wherein the integrated circuit is operable to:

select entries in the flow memory to clear, wherein the selected entries each include a refresh indicator that indicates that the entry can be cleared; and

clear each of the selected entries.

14. The integrated circuit of claim 13 , wherein the integrated circuit is operable to, for each of the entries in the flow memory that include a refresh indicator that indicates that the entry will not be cleared, update the refresh indicator.

15. The integrated circuit of claim 13 , wherein the integrated circuit is operable to, for each of the selected entries, reset a lock indicator.

16. The integrated circuit of claim 12 , wherein the integrated circuit is further operable to reset the counters in the counter memory.

17. The integrated circuit of claim 2 , wherein the state information includes a plurality of bits, each bit from the plurality of bits indicating whether a counter from the set of counters was used to determine that a packet flow was a newly-identified large packet flow, wherein each bit is associated with a different data collection interval.

18. The integrated circuit of claim 17 , wherein the integrated circuit is operable to determine that the packet flow is a historically large packet flow when the state information indicates that each counter from the set of counters was used to determine that the packet flow was a newly-identified large packet flow in a same prior data collection interval.

19. The integrated circuit of claim 2 , wherein the integrated circuit is operable to:

select entries in the flow memory to clear, wherein a particular entry is selected when the state information indicates that a particular packet flow was not identified as a large packet flow for a number of data collection intervals; and

clear each of the selected entries.

20. The integrated circuit of claim 2 , wherein the integrated circuit is operable to receive packet information at each cycle of the clock input.

21. A method, comprising:

receiving, at an integrated circuit, a packet information describing a packet, wherein the packet information is received during a data collection interval, wherein the packet is associated with a packet flow being transmitted across a network, and wherein the packet information includes information identifying the packet flow;

generating a key, wherein generating the key includes using the information identifying the packet flow;

reading from a memory, using the key, state information;

determining that the state information indicates that the packet flow was identified as a large packet flow in a previous data collection interval;

determining, based on the state information indicating that the packet flow was previously identified as a large packet flow, that the packet flow is a historically large packet flow; and

upon determining that the packet flow is a historically large packet flow, updating an entry in a flow memory using the packet information, wherein the entry is indexed using the key.

22. The method of claim 21 , further comprising determining that the packet flow is a newly-identified large packet flow.

23. The method of claim 21 , wherein, when the packet information is received, the packet flow is identified as a small packet flow, and wherein the packet flow is treated as a large packet flow based on the state information.

24. The method of claim 21 , further comprising, at an end of the data collection interval:

reading contents of the flow memory;

generating a plurality of packets, the plurality of packets including the contents of the flow memory, wherein each of the plurality of packets is addressed to a collector device on the network; and

transmitting each of the plurality of packets.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 24, 2016
From: WHITESIDE, RAYMOND SCOTT; VOLPE, THOMAS A.
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 038093/0509 →
Cited By (1)
US 12,267,245