# US 10,313,255 B1 · Intelligent packet queues with enqueue drop visibility and forensics

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,313,255 B1
- Document ID: US10313255B1
- Status: Granted
- Kind: B1
- Application number: 15/407,156
- Filed: 2017-01-16
- Granted: 2019-06-04
- Earliest claimed: 2017-01-16
- Assignees: Innovium, Inc.
- Applicants: Innovium, Inc.
- Inventors: William Brad Matthews; Puneet Agarwal; Ajit Kumar Jain
- Web page: https://patentgrep.com/patent/US10313255B1

## CPC

- H04L 47/31: by tagging of packets, e.g. using discard eligibility [DE] bits
- H04L 47/32: by discarding or delaying data units, e.g. packets or frames
- H04L 43/0829: Packet loss
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A network device organizes packets into various queues, in which the packets await processing. Queue management logic tracks how long certain packet(s), such as a designated marker packet, remain in a queue. Based thereon, the logic produces a measure of delay for the queue, referred to herein as the “queue delay.” Based on a comparison of the current queue delay to one or more thresholds, various associated delay-based actions may be performed, such as tagging and/or dropping packets departing from the queue, or preventing addition enqueues to the queue. In an embodiment, a queue may be expired based on the queue delay, and all packets dropped. In other embodiments, when a packet is dropped prior to enqueue into an assigned queue, copies of some or all of the packets already within the queue at the time the packet was dropped may be forwarded to a visibility component for analysis.

## Claims

### Claim 1

An apparatus comprising:
one or more network interfaces configured to receive packets over one or more networks;
a packet processor configured to:
assign the packets to packet queues;
responsive to a failure to add a particular packet to a particular packet queue to which the particular packet was assigned, designate a queue forensics feature of the particular packet queue as active;
traffic management logic configured to:
based on the packet queues, determine when to process specific packets of the received packets, the specific packets dequeued from the packet queues when processed;
while the queue forensics feature of the particular packet queue is designated as active, annotate one or more packets departing from the particular packet queue with a tag indicating that a drop event occurred with respect to the particular packet queue while the one or more packets were in the particular packet queue;
deactivate the queue forensics feature when a first packet in the particular packet queue has been dequeued from the particular packet queue;
a visibility component configured to, based on the tag and the one or more packets, perform one or more of: changing one or more settings of the apparatus, storing copies of the one or more packets in a log or data buffer, updating packet statistics, or sending copies of the one or more packets to an external device for analysis.

### Claim 2 (depends on 1)

The apparatus of claim 1, wherein the traffic manager is configured to record an identifier of the first packet in metadata associated with the particular packet queue.

### Claim 3 (depends on 1)

The apparatus of claim 1, wherein the traffic manager is configured to select the first packet because the first packet is at the tail of the particular packet queue.

### Claim 4 (depends on 1)

The apparatus of claim 1, wherein the packet processor is configured to reassign the particular packet to a visibility queue, the visibility component configured to process packets in the visibility queue.

### Claim 5 (depends on 4)

The apparatus of claim 4, wherein the packet processor is configured to truncate the particular packet before assigning the particular packet to the visibility queue.

### Claim 6 (depends on 4)

The apparatus of claim 4, wherein the traffic manager is further configured to forward copies of the one or more packets to one or more visibility queues processed by the visibility component, the one or more packets associated with the with the particular packet.

### Claim 7 (depends on 6)

The apparatus of claim 6, wherein the traffic manager is further configured to annotate the particular packet with a drop event identifier, the one or more packets also annotated with the drop event identifier.

### Claim 8 (depends on 6)

The apparatus of claim 6, wherein the copies are partial copies including only portions of the one or more packets.

### Claim 9 (depends on 1)

The apparatus of claim 1, wherein the traffic manager is further configured to annotate the one or more packets with information pertaining to the particular packet queue.

### Claim 10 (depends on 1)

The apparatus of claim 1, wherein the traffic manager is further configured to annotate the one or more packets with information associated with the particular packet queue, the annotated information including at least one or more of a delay calculated based on a marker packet within the particular packet queue, a timestamp associated with the drop event, a queue id, a device id, a queue size, a buffer size, or a congestion indicator.

### Claim 11 (depends on 1)

The apparatus of claim 1, wherein the packet processor is further configured to enable the queue forensics feature on the particular packet queue based on a drop visibility monitoring flag specific to the particular packet queue.

### Claim 12 (depends on 1)

The apparatus of claim 1, wherein the packet processor is further configured to enable the queue forensics feature on the particular packet queue only at times indicated by a probabilistic sampling function or a rate-aware sampling function.

### Claim 13

A method comprising:
assigning packets received by a network device to packet queues;
based on the packet queues, determining when to process specific packets of the packets received by the network device, the specific packets dequeued from the packet queues when processed;
responsive to a failure to add a particular packet to a particular packet queue to which the particular packet was assigned, designating a queue forensics feature of the particular packet queue as active until a first packet in the particular packet queue has been dequeued from the particular packet queue;
while the queue forensics feature of the particular packet queue is designated as active, annotating one or more packets departing from the particular packet queue with a tag indicating that a drop event occurred with respect to the particular packet queue while the one or more packets were in the particular packet queue;
sending copies of the one or more packets that were annotated with the tag to a first component configured to, based on the tag and the one or more packets, perform one or more of: changing one or more settings of the apparatus, storing copies of the one or more packets in a log or data buffer, or updating packet statistics.

### Claim 14 (depends on 13)

The method of claim 13, further comprising recording an identifier of the first packet in metadata associated with the particular packet queue.

### Claim 15 (depends on 13)

The method of claim 13, further comprising selecting the first packet because the first packet is at the tail of the particular packet queue.

### Claim 16 (depends on 13)

The method of claim 13, further comprising reassigning the particular packet to a visibility queue, the first component configured to process packets in the visibility queue.

### Claim 17 (depends on 16)

The method of claim 16, further comprising truncating the particular packet before assigning the particular packet to the visibility queue.

### Claim 18 (depends on 13)

The method of claim 13, further comprising forwarding copies of the one or more packets to one or more visibility queues processed by the first component, the one or more packets associated with the particular packet.

### Claim 19 (depends on 18)

The method of claim 18, further comprising annotating the particular packet with a drop event identifier, the one or more packets also annotated with the drop event identifier.

### Claim 20 (depends on 18)

The method of claim 18, further comprising annotating the one or more packets with information associated with the particular packet queue, the annotated information including at least one or more of a delay calculated based on a marker packet within the particular packet queue, a timestamp associated with the drop event, a queue id, a device id, a queue size, a buffer size, or a congestion indicator.

### Claim 21 (depends on 18)

The method of claim 18, wherein the copies are partial copies including only portions of the one or more packets.

### Claim 22 (depends on 13)

The method of claim 13, further comprising annotating the one or more packets with information pertaining to the particular packet queue.

### Claim 23 (depends on 13)

The method of claim 13, further comprising enabling the queue forensics feature on the particular packet queue based on a drop visibility monitoring flag specific to the particular packet queue.

### Claim 24 (depends on 13)

The method of claim 13, further comprising enabling the queue forensics feature on the particular packet queue only at times indicated by a probabilistic sampling function or a rate-aware sampling function.

### Claim 25

One or more non-transitory computer-readable media storing instructions that, when executed by the one or more computing devices, cause performance of:
assigning packets received by a network device to packet queues;
based on the packet queues, determining when to process specific packets of the packets received by the network device, the specific packets dequeued from the packet queues when processed;
responsive to a failure to add a particular packet to a particular packet queue to which the particular packet was assigned, designating a queue forensics feature of the particular packet queue as active until a first packet in the particular packet queue has been dequeued from the particular packet queue;
while the queue forensics feature of the particular packet queue is designated as active, annotating one or more packets departing from the particular packet queue with a tag indicating that a drop event occurred with respect to the particular packet queue while the one or more packets were in the particular packet queue;
sending copies of the one or more packets that were annotated with the tag to a first component configured to, based on the tag and the one or more packets, perform one or more of: changing one or more settings of the apparatus, storing copies of the one or more packets in a log or data buffer, or updating packet statistics.
