IP Library Granted Patent US 12,301,463
Granted Patent B2
US 12,301,463 · App. 17/977,953 · Granted May 13, 2025

Packet flow sampling in network monitoring

Inventors: Jianda Liu (Shanghai, CN); Xiaorong Wang (Shanghai, CN); Yicheng Liu (Shanghai, CN); Hongbo Xia (Shanghai, CN); Wei Zhou (Changsha, CN)
Assignee: Cisco Technology, Inc.
H04L47/215H04L43/0876
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 12,301,463
App. No.
17/977,953
Granted
May 13, 2025
Kind
B2
Abstract

This disclosure describes techniques and mechanisms for intelligently sampling packet flows within a network. The techniques enable the sampling of a limited set of packet flows that show greatest amount of information about the network from the packet flows in order to provide the greatest insight on application performance, network packet, and critical events within the network. Additionally, the techniques provide configurable parameters, such that the techniques are customizable for each user's network.

Claims (91)

1. A method implemented by a network device within a network that monitors packet flow, the method comprising:

receiving a packet associated with the packet flow within the network;

determining that the packet is not associated with a token;

selecting, from a plurality of token buckets of the network device, a token bucket to assign to the packet flow, the token bucket comprising a portion of a total amount of tokens allocated to the network device, the total amount of tokens representing a number of concurrent packet flows the network device is configured to monitor;

determining that an amount of tokens in the token bucket assigned to the packet flow is above a threshold amount of tokens; and

assigning, from the token bucket, at least one token to the packet flow.

2. The method of claim 1 , wherein determining the token bucket further comprises:

determining a hash value associated with the packet flow; and

assigning the packet flow to the token bucket based at least in part on the hash value.

3. The method of claim 2 , wherein the hash value is based at least in part on attributes associated with the packet flow, the attributes comprising a flow tuple and an application identifier.

4. The method of claim 1 , wherein the total amount of tokens is a fixed amount and restrains an amount of compute resources used by the network device.

5. The method of claim 1 , wherein assigning the at least one token to the packet flow comprises assigning multiple tokens, the method further comprising:

determining that the packet flow is designated as a long lived packet flow;

determining a threshold time period associated with the long lived packet flow;

determining, based on the packet flow being designated as the long lived packet flow, a subset of the multiple tokens corresponding to resources consumed by the packet flow during the threshold time period; and

returning, based on determining the threshold time period has elapsed, the subset of the multiple tokens to the token bucket assigned to the packet flow.

6. The method of claim 1 , further comprising:

receiving a second packet associated with a second packet flow;

selecting the token bucket to assign to the second packet flow;

determining that the amount of tokens associated with the token bucket is below the threshold amount; and

based at least in part on determining the amount of tokens is below the threshold amount:

starting a timer for a predetermined amount of time;

determining that the second packet flow comprises a first packet; and

assigning a second token to the second packet flow.

7. The method of claim 1 , further comprising:

receiving a second packet flow;

selecting, from the plurality of token buckets, a second token bucket to assign to the second packet flow;

determining that a number of tokens associated with the second token bucket is below a second threshold amount; and

based at least in part on determining the number of tokens is below the second threshold amount:

starting a timer for a predetermined amount of time;

determining that the second packet flow is associated with a first missed packet; and

refraining from assigning a second token to the second packet flow during the predetermined amount of time.

8. A system comprising:

one or more processors; and

one or more non-transitory computer-readable media storing computer-executable instructions that, when executed by the one or more processors, cause the one or more processors to perform operations comprising:

receiving a packet associated with a packet flow within a network;

determining that the packet is not associated with a token;

selecting, from a plurality of token buckets of a network device, a token bucket to assign to the packet flow, the token bucket comprising a portion of a total amount of tokens allocated to the network device, the total amount of tokens representing a number of concurrent packet flows the network device is configured to monitor;

determining that an amount of tokens in the token bucket assigned to the packet flow is above a threshold amount of tokens; and

assigning, from the token bucket, at least one token to the packet flow.

9. The system of claim 8 , wherein determining the token bucket further comprises:

determining a hash value associated with the packet flow; and

assigning the packet flow to the token bucket based at least in part on the hash value.

10. The system of claim 9 , wherein the hash value is based at least in part on attributes associated with the packet, the attributes comprising a flow tuple and an application identifier.

11. The system of claim 8 , wherein the total amount of tokens is a fixed amount and restrains an amount of compute resources used by the network device.

12. The system of claim 8 , wherein assigning the token to the packet flow comprises assigning multiple tokens, the operations further comprising:

determining that the packet flow is designated as a long lived packet flow;

determining a threshold time period associated with the long lived packet flow;

determining, based on the packet flow being designated as the long lived packet flow, a subset of the multiple tokens corresponding to resources consumed by the packet flow during the threshold time period; and

returning, based on determining the threshold time period has elapsed, the subset of the multiple tokens to the token bucket assigned to the packet flow.

13. The system of claim 8 , the operations further comprising:

receiving a second packet associated with a second packet flow;

selecting the token bucket to assign to the second packet flow;

determining that the amount of tokens associated with the token bucket is below the threshold amount; and

based at least in part on determining the amount of tokens is below the threshold amount:

starting a timer for a predetermined amount of time;

determining that the second packet flow comprises a first packet; and

assigning a second token to the second packet flow.

14. The system of claim 8 , the operations further comprising:

receiving a second packet associated with a second packet flow;

selecting the token bucket to assign to the second packet flow;

determining that the amount of tokens associated with the token bucket is below the threshold amount; and

based at least in part on determining the amount of tokens is below the threshold amount:

starting a timer for a predetermined amount of time;

determining that the second packet flow is associated with a first missed packet; and

refraining from assigning a second token to the second packet flow during the predetermined amount of time.

15. One or more non-transitory computer-readable media storing computer-readable instructions that, when executed by one or more processors, cause the one or more processors to perform operations comprising:

receiving, from a device within a network, a packet associated with a packet flow within the network;

determining that the packet flow corresponds to a long lived packet flow;

determining that the packet is not associated with tokens;

selecting, from a plurality of token buckets, a token bucket to assign to the packet flow;

determining that the token bucket comprises tokens above a threshold amount of tokens;

assigning multiple tokens to the packet flow;

determining that a threshold period of time associated with long lived packet flows has elapsed; and

causing a subset of the multiple tokens assigned to the packet flow to be returned to the token bucket.

16. The one or more non-transitory computer-readable media of claim 15 , wherein determining the token bucket comprises:

determining a hash value associated with the packet flow; and

assigning the packet flow to the token bucket based at least in part on the hash value.

17. The one or more non-transitory computer-readable media of claim 16 , wherein the hash value is based at least in part on attributes associated with the packet flow, the attributes comprising a flow tuple and an application identifier.

18. The one or more non-transitory computer-readable media of claim 15 , wherein the token bucket comprises a portion of a total amount tokens allocated to a network device, wherein the total amount of tokens a total number of concurrent packet flows the network device is capable of monitoring based on an amount of compute resources allocated to the network device.

19. The one or more non-transitory computer-readable media of claim 15 , the operations further comprising:

receiving a second packet associated with a second packet flow;

selecting the token bucket to assign to the second packet flow;

determining that the amount of tokens associated with the token bucket is below a threshold amount; and

based at least in part on determining the amount of tokens is below the threshold amount:

starting a timer for a predetermined amount of time;

based on determining that the second packet flow comprises a first packet:

assigning a second token to the second packet flow; or

based on determining that the second packet flow is associated with a first missed packet:

refraining from assigning a second token to the second packet flow during the predetermined amount of time.

20. The one or more non-transitory computer-readable media of claim 15 , wherein the long lived packet flow comprises a connection that stays open for a time period greater than a predefined period of time, and wherein the subset of the multiple tokens correspond to tokens the packet flow no longer utilizes.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 31, 2022
From: LIU, JIANDA; WANG, XIAORONG; LIU, YICHENG; XIA, HONGBO; ZHOU, WEI
To: CISCO TECHNOLOGY, INC.
Reel/Frame 061824/0605 →
Continuity (2)
Provisional Application 63397106 · Aug 11, 2022
Related Publication 20240064103A1 · Feb 22, 2024
References Cited (11)
US 8976658B1 · Kondapalli · 2015 [cited by applicant]
US 9203767B1 · Al-Banna et al. · 2015 [cited by applicant]
US 11106442B1 · Hsiao · 2021 [cited by examiner]
US 11977513B2 · Jiang · 2024 [cited by examiner]
US 20060209696A1 · Walker et al. · 2006 [cited by applicant]
US 20090003204A1 · Okholm · 2009 [cited by examiner]
US 20100322071A1 · Avdanin · 2010 [cited by examiner]
US 20110242994A1 · Carvalho et al. · 2011 [cited by applicant]
US 20180241677A1 · Srebro · 2018 [cited by examiner]
US 20190268270A1 · Fattah · 2019 [cited by applicant]
US 20200274819A1 · Nahum · 2020 [cited by examiner]