IP Library › Granted Patent US 12,126,513
Granted Patent B2
US 12,126,513 · App. 17/548,438 · Granted Oct 22, 2024

Network processor with external memory protection

Inventors: Brian Alleyne (Los Gatos, CA); Matias Cavuoti (San Jose, CA); Li-Chuan Egan (Los Altos, CA); Mimi Dannhardt (Vienna, VA); Krishnan Subramani (San Jose, CA); Mohamed Abdul Malick Mohamed Usman (Fremont, CA); Roxanna Ganji (Fremont, CA); Stephen Russell (Linden, CA)
Assignee: Nokia Solutions and Networks Oy
H04L43/0882H04L43/0811H04L43/0817H04L43/0876H04L43/0894H04L47/12H04L47/122
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,126,513
App. No.
17/548,438
Granted
Oct 22, 2024
Kind
B2
Abstract

Systems and methods for protecting external memory resources to prevent bandwidth collapse in a network processor. One embodiment is a network processor including an input port configured to receive packets from a source device, on-chip memory configured to store packets in queues, an external memory interface configured to couple the on-chip memory with an external memory providing a backing store to the on-chip memory, and bandwidth monitor configured to measure a bandwidth utilization of the external memory. The network processor also includes a processor configured to apply the bandwidth utilization of the external memory to a congestion notification profile, to generate one or more congestion notifications based on the bandwidth utilization applied to the congestion notification profile, and to send the one or more congestion notifications to the source device to request decreasing packet rate for decreasing the bandwidth utilization of the external memory.

Claims (72)

1. A network processor comprising:

an input port configured to receive packets from a source device, wherein the packets are received at a packet rate;

on-chip memory configured to store packets in queues;

an external memory interface configured to couple the on-chip memory with an external memory providing a backing store to the on-chip memory;

a bandwidth monitor configured to measure a bandwidth utilization of the external memory; and

a processor configured to apply the bandwidth utilization of the external memory to a congestion notification profile, to generate one or more congestion notifications based on the bandwidth utilization of the external memory applied to the congestion notification profile, and to send the one or more congestion notifications based on the bandwidth utilization of the external memory to the source device to request decreasing the packet rate for decreasing the bandwidth utilization of the external memory.

2. The network processor of claim 1 wherein:

the processor is configured to discard packets stored in the on-chip memory based on the bandwidth utilization of the external memory applied to the congestion notification profile, wherein packets discarded via the congestion notification profile generates the one or more congestion notifications based on the bandwidth utilization of the external memory, and

the processor is configured, in response to determining that the source device is unresponsive to packets discarded via the congestion notification profile, to reduce a size of one or more queues to prevent packets transferring from the on-chip memory to the external memory.

3. The network processor of claim 1 wherein:

the processor is configured to process packet headers to determine packet attributes, and

the processor is configured to determine congestion notification profiles for packets based on the packet attributes, the congestion notification profiles having different bandwidth utilization thresholds than one another for triggering congestion notification.

4. The network processor of claim 3 wherein:

the processor is configured to group packets into one or more aggregate packet pools based on the packet attributes, to track the bandwidth utilization of the one or more aggregate pools relative to one or more congestion profiles, and to select packets to discard via the one or more congestion notification profiles based at least in part on packets belonging to an aggregate packet pool that is exceeding a threshold bandwidth of the external memory.

5. The network processor of claim 4 wherein:

the one or more aggregate packet pools include one or more of a port pool, a global pool, and a class pool.

6. The network processor of claim 4 wherein:

the processor is configured to select packets to discard based at least in part on packets associated with a low priority.

7. The network processor of claim 1 wherein:

the congestion notification profile includes bandwidth thresholds that increase a probability of generating a congestion notification for the source device as the bandwidth utilization of the external memory increases.

8. A method of reducing traffic congestion in a network processor, the method comprising:

receiving packets from a source device, wherein the packets are received at a packet rate;

storing, in on-chip memory, packets in queues;

providing external memory as a backing store to the on-chip memory;

measuring a bandwidth utilization of the external memory;

applying the bandwidth utilization as an input parameter to a congestion notification profile;

generating one or more congestion notifications based on the bandwidth utilization of the external memory applied to the congestion notification profile; and

sending the one or more congestion notifications based on the bandwidth utilization of the external memory to the source device to request decreasing the packet rate for decreasing the bandwidth utilization of the external memory.

9. The method of claim 8 further comprising:

discarding packets stored in the on-chip memory based on the bandwidth utilization applied to the congestion notification profile, wherein packets discarded via the congestion notification profile generates the one or more congestion notifications based on the bandwidth utilization of the external memory; and

in response to determining that the source device is unresponsive to packets discarded via the congestion notification profile, reducing a size of one or more queues to prevent packets transferring from the on-chip memory to the external memory.

10. The method of claim 8 further comprising:

processing packet headers to determine packet attributes; and

determining congestion notification profiles for packets based on the packet attributes, the congestion notification profiles having different bandwidth utilization thresholds than one another for triggering congestion notification.

11. The method of claim 10 further comprising:

grouping packets into one or more aggregate packet pools based on the packet attributes;

tracking the bandwidth utilization of the one or more aggregate pools relative to one or more congestion profiles; and

selecting packets to discard via the one or more congestion notification profiles based at least in part on packets belonging to an aggregate packet pool that is exceeding a threshold bandwidth of the external memory.

12. The method of claim 11 wherein:

the one or more aggregate packet pools include one or more of a port pool, a global pool, and a class pool.

13. The method of claim 8 wherein:

the congestion notification profile includes bandwidth thresholds that increase a probability of generating a congestion notification for the source device as the bandwidth utilization of the external memory increases.

14. A non-transitory computer readable medium embodying programmed instructions which, when executed by a processor, are operable for performing a method of reducing traffic congestion in a network processor, the method comprising:

receiving packets from a source device, wherein the packets are received at a packet rate;

determining a bandwidth utilization of external memory which provides a backing store to on-chip memory;

applying the bandwidth utilization as an input parameter to a congestion notification profile;

generating one or more congestion notifications based on the bandwidth utilization of the external memory applied to the congestion notification profile; and

sending the one or more congestion notifications based on the bandwidth utilization of the external memory to the source device to request decreasing the packet rate for decreasing the bandwidth utilization of the external memory.

15. The non-transitory computer readable medium of claim 14 wherein the method further comprises:

discarding packets stored in the on-chip memory based on the bandwidth utilization applied to the congestion notification profile, wherein packets discarded via the congestion notification profile generates the one or more congestion notifications based on the bandwidth utilization of the external memory; and

in response to determining that the source device is unresponsive to packets discarded via the congestion notification profile, reducing a size of one or more queues to prevent packets transferring from the on-chip memory to the external memory.

16. The non-transitory computer readable medium of claim 14 wherein the method further comprises:

processing packet headers to determine packet attributes; and

determining congestion notification profiles for packets based on the packet attributes, the congestion notification profiles having different bandwidth utilization thresholds than one another for triggering congestion notification.

17. The non-transitory computer readable medium of claim 16 wherein the method further comprises:

grouping packets into one or more aggregate packet pools based on the packet attributes;

tracking the bandwidth utilization of the one or more aggregate pools relative to one or more congestion profiles; and

selecting packets to discard via the one or more congestion notification profiles based at least in part on packets belonging to an aggregate packet pool that is exceeding a threshold bandwidth of the external memory.

18. The non-transitory computer readable medium of claim 17 wherein:

the one or more aggregate packet pools include one or more of a port pool, a global pool, and a class pool.

19. The non-transitory computer readable medium of claim 14 wherein the method further comprises:

selecting packets to discard based at least in part on packets associated with a low priority.

20. The non-transitory computer readable medium of claim 14 wherein:

the congestion notification profile includes bandwidth thresholds that increase a probability of generating a congestion notification for the source device as the bandwidth utilization of the external memory increases.

21. An apparatus, comprising:

at least one processor; and

at least one memory including instructions which, when executed by the at least one processor, cause the apparatus at least to:

receive packets from a source device, wherein the packets are received at a packet rate;

determine a bandwidth utilization of external memory which provides a backing store to on-chip memory;

apply the bandwidth utilization as an input parameter to a congestion notification profile;

generate one or more congestion notifications based on the bandwidth utilization applied to the congestion notification profile; and

send the one or more congestion notifications toward the source device to request decreasing the packet rate for decreasing the bandwidth utilization of the external memory.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 22, 2022
From: ZYZYX, INC.
To: NOKIA SOLUTIONS AND NETWORKS OY
Reel/Frame 060280/0106 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 13, 2021
From: ALLEYNE, BRIAN; CAVUOTI, MATIAS; EGAN, LI-CHUAN; DANNHARDT, MIMI; SUBRAMANI, KRISHNAN; USMAN, MOHAMED ABDUL MALICK MOHAMED; GANJI, ROXANNA; RUSSELL, STEPHEN
To: ZYZYX, INC.
Reel/Frame 058372/0503 →
Continuity (1)
Related Publication 20230188447A1 · Jun 15, 2023