IP Library Granted Patent US 10,764,198
Granted Patent B2
US 10,764,198 · App. 16/029,184 · Granted Sep 1, 2020

Method to limit packet fetching with uncertain packet sizes to control line rate

Inventors: Nick Jamba (Lancaster, MA); Bhargava Narumanchi (Waltham, MA)
Assignee: MARVELL ASIA PTE, LTD.
H04L47/365H04L47/25H04L47/70
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,764,198
App. No.
16/029,184
Granted
Sep 1, 2020
Kind
B2
Abstract

In an embodiment, a method comprises, loading, from at least one source of packets to a memory, a packet based on a network scheduler indicating availability of bandwidth from the at least one source of packets to the memory that is at least the average size of packets. The method further includes updating the average size of the packets based on a size of the loaded packet. The method further includes reconciling the availability of bandwidth indicated by the network scheduler based on the size of the loaded packet.

Claims (43)

1. A method comprising:

issuing a request to load an ingress packet, the request including a memory reference to the ingress packet loaded from at least one source of ingress packets, the ingress packet having an unknown size prior to being loaded, the request based on a network scheduler indicating availability of bandwidth from the at least one source of ingress packets, the availability being based on at least the average size of packets received by the source of ingress packets prior to issuing the request;

responsive to loading the ingress packet, retrieving a size of the ingress packet;

updating the average size of the ingress packets based on a size of the ingress packet loaded; and

reconciling the availability of bandwidth indicated by the network scheduler based on the size of the ingress packet loaded.

2. The method of claim 1 further comprising sending the ingress packet loaded to a destination address in the memory.

3. The method of claim 1 , wherein:

the network scheduler is a token bucket, and

reconciling the availability of bandwidth includes reconciling a number of tokens available in the token bucket.

4. The method of claim 1 , wherein the network scheduler is a packet rate limiter.

5. The method of claim 1 , wherein the average size is determined by a weighted old average and a weighted amount of the ingress packet loaded.

6. The method of claim 5 , wherein a sum of the weight of the old average and the weight of the ingress packet loaded is one.

7. The method of claim 1 , wherein the at least one source of packets is a packet flow of a virtual function (VF) ring.

8. The method of claim 7 , wherein a plurality of the VF rings is assigned to a particular network scheduler, and further comprising:

marking, upon the network scheduler indicating no available bandwidth from the at least one source of ingress packets to the memory, a last of the plurality of VF rings to send a packet in an order of the VF rings;

upon the network scheduler indicating available bandwidth from the at least one source of ingress packets to the memory, selecting a next VF ring after the last VF ring in the order of the VF rings.

9. The method of claim 7 , wherein the memory is a memory buffer of the VF ring.

10. The method of claim 1 , further comprising:

loading, from the at least one source of ingress packets to the memory, a second packet based on the network scheduler indicating availability of bandwidth from the at least one source of ingress packets to the memory that is at least the average size of the ingress packets;

updating the average size of the ingress packets based on a size of the loaded second ingress packet; and

reconciling the availability of bandwidth indicated by the network scheduler based on the size of the loaded second ingress packet.

11. A system comprising:

a processor configured to implement a network scheduler, the network scheduler configured to:

issue a request to load an ingress packet, the request including a memory reference to the ingress packet loaded from at least one source of ingress packets, the ingress packet having an unknown size prior to being loaded, the request based on the network scheduler indicating availability of bandwidth from the at least one source of ingress packets, the availability being based on at least the average size of packets received by the source of ingress packets prior to issuing the request;

responsive to loading the ingress packet, retrieving a size of the ingress packet;

update the average size of the ingress packets based on a size of the ingress packet loaded; and

reconcile the availability of bandwidth indicated by the network scheduler based on the size of the ingress packet loaded.

12. The system of claim 11 wherein the processor is further configured to send the ingress packet loaded to a destination address in the memory.

13. The system of claim 11 , wherein:

the network scheduler is a token bucket, and

the processor is further configured to reconcile the availability of bandwidth includes reconciling a number of tokens available in the token bucket.

14. The system of claim 11 , wherein the network scheduler is a packet rate limiter.

15. The system of claim 11 wherein the average size is determined by a weighted old average and a weighted amount of the ingress packet loaded.

16. The system of claim 15 , wherein a sum of the weight of the old average and the weight of the ingress packet loaded is one.

17. The system of claim 11 , wherein the plurality of packets is a packet flow of a virtual function (VF) ring.

18. The system of claim 17 , wherein a plurality of the VF rings is assigned to a particular network scheduler, and the processor is further configured to:

mark, upon the network scheduler indicating no available bandwidth from the at least one source of ingress packets to the memory, a last of the plurality of VF rings to send a packet in an order of the VF rings;

upon the network scheduler indicating available bandwidth from the at least one source of ingress packets to the memory, select a next VF ring after the last VF ring in the order of the VF rings.

19. The system of claim 17 , wherein the memory is a memory buffer of the VF ring.

20. The system of claim 11 , wherein the processor is further configured to:

load, from the at least one source of packets to the memory, a second ingress packet based on the network scheduler indicating availability of bandwidth from the at least one source of ingress packets to the memory that is at least the average size of packets;

update the average size of the ingress packets based on a size of the loaded second ingress packet; and

reconcile the availability of bandwidth indicated by the network scheduler based on the size of the loaded second ingress packet.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 15, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053179/0320 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 17, 2020
From: CAVIUM, LLC
To: CAVIUM INTERNATIONAL
Reel/Frame 051948/0807 →
CERTIFICATE OF CONVERSION AND CERTIFICATE OF FORMATION Recorded Oct 2, 2018
From: CAVIUM, INC.
To: CAVIUM, LLC
Reel/Frame 047185/0422 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 2, 2018
From: JAMBA, NICK; NARUMANCHI, BHARGAVA
To: CAVIUM, INC.
Reel/Frame 046537/0001 →