IP Library Granted Patent US 8,532,117
Granted Patent B2
US 8,532,117 · App. 12/371,394 · Granted Sep 10, 2013

Flexible buffer allocation entities for traffic aggregate containment

Inventors: Bruce Kwan (Sunnyvale, CA); Puneet Agarwal (Cupertino, CA); Lakshmikantha Ashvin (San Jose, CA)
Assignee: Broadcom Corporation
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 8,532,117
App. No.
12/371,394
Granted
Sep 10, 2013
Kind
B2
Abstract

An apparatus comprising a plurality of physical ingress ports configured to receive data, each data having a data type; a plurality of physical egress ports configured to transmit data; a memory configured to buffer data that has been received; a plurality of virtual routing devices, wherein each of the virtual routing devices is associated with a particular data type and each of the virtual routing devices is configured to: virtually buffer data associated with the respective data type, and regulate the quality of service provided to the respective data type; and a data manager configured to manage the receipt and transmission of data.

Claims (85)

1. An apparatus comprising:

a plurality of physical ingress ports configured to receive data, the received data having a plurality of data types, wherein the data type includes a voice data, a video data and non-real time data, the received data being received from multiple sources;

a plurality of virtual routing devices, wherein each of the virtual routing devices is associated with a particular data type and each of the virtual routing devices is configured to:

virtually buffer data associated with the respective data type via one or more virtual ingress buffers, wherein each virtual routing device includes a corresponding virtual ingress buffer for each of the plurality of physical ingress ports, and

regulate the quality of service provided to the respective data type; and

a data manager configured to manage the receipt and transmission of data.

2. The apparatus of claim 1 wherein each virtual routing device comprises:

a buffer accounting entity configured to act as a virtual ingress port configured to receive data of at least one selected data type.

3. The apparatus of claim 1 wherein each physical ingress port is associated with at least one virtual routing device; and

each virtual routing device is configured to receive data of at least one selected data type.

4. The apparatus of claim 1 wherein the data type comprises a data type selected from the group of data types consisting of: voice based data, video based data, and non-real time data.

5. The apparatus of claim 1 further comprising a total usage counter configured to track the total amount of memory used to buffer the data; and

wherein each virtual routing device comprises:

a virtual ingress port configured to receive data of at least one selected data type,

a virtual ingress buffer configured to facilitate the storage of data received by the virtual ingress port, and

a virtual ingress buffer counter configured to track the amount of data associated with the virtual ingress buffer.

6. The apparatus of claim 5 where the data manger is configured to, upon the receipt of the data through a physical ingress port:

assign the data to a virtual routing device of the plurality of virtual routing devices, based at least in part upon the data type of the received data;

verify that a physical memory comprises sufficient available space to store the received data; and

verify that the virtual ingress buffer comprises sufficient available space to store the received data.

7. The apparatus of claim 6 wherein the data manger is configured to, upon the receipt of data through the physical ingress port:

assign the data to an egress port, wherein the egress port includes an egress port buffer configured to facilitate the storage of data received by the egress port, and

verify that the egress port buffer comprises sufficient available space to store the received data.

8. The apparatus of claim 7 wherein each virtual routing device comprises a virtual egress port configured to represent a physical egress port, wherein the physical egress port is configured to transmit data; and

wherein the virtual egress port comprises a virtual egress port buffer configured to facilitate the storage of data to be transmitted by the physical egress port.

9. The apparatus of claim 5 further comprising a global buffer pool configured to facilitate the storage of data when at least one of the virtual ingress buffers would otherwise exceed a threshold size; and

wherein the data manger is configured to assign the data to the global buffer pool when the addition of data to the virtual ingress buffer would exceed the threshold size.

10. A method comprising:

receiving data via a plurality of physical ingress ports, the received data having a plurality of data types;

detecting the data type associated with the data, wherein the data type includes a voice data, a video data and non-real time data, the received data being received from multiple sources;

assigning the data to at least one virtual routing device of a plurality of virtual routing devices, associated with the data type of the data; and

buffering the data in both a physical ingress buffer of the physical ingress port and a virtual ingress buffer of the assigned virtual routing device, wherein each virtual routing device is associated with a particular data type and includes a corresponding virtual ingress buffer for each of the plurality of physical ingress ports.

11. The method of claim 10 wherein detecting a data type associated with the data comprises detecting that the data type is a data type selected from the group consisting of: voice based data, video based data, and non-real time data.

12. The method of claim 10 wherein assigning the data to a virtual routing device comprises:

determining whether or not the addition of the data to a virtual ingress port buffer will exceed a threshold of the virtual ingress port buffer, and

when the threshold would not be exceeded, assigning the data to the virtual ingress port buffer.

13. The method of claim 10 wherein assigning the data to a virtual routing device comprises:

determining whether or not the addition of the data to a virtual ingress buffer would exceed a threshold of the virtual ingress port buffer,

when the threshold is exceeded, determining whether or not the addition of the data to a global buffer pool is allowed; and

when the addition of the data to a global buffer pool is allowed, assigning the data to the virtual ingress port, and assigning the data to the global buffer pool.

14. The method of claim 13 wherein determining whether or not the addition of the data to a global buffer pool is allowed comprises limiting the amount of data associated with a data type that may be assigned to the global buffer pool.

15. The method of claim 10 wherein buffering the data comprises:

storing the data in a physical memory;

associating the data with a physical ingress port buffer that tracks an amount of data assigned to a physical ingress port and where in the physical memory the data associated with the physical ingress port buffer is stored; and

associating the data with a physical egress port buffer that tracks the amount of data assigned to a physical egress port and where in the physical memory the data associated with the physical egress port is stored.

16. The method of claim 10 wherein transmitting the received data comprises:

deassigning the received data from a virtual ingress port buffer;

deassigning the received data from a physical ingress port buffer;

deassigning the received data from a virtual egress port buffer; and

deassigning the received data from a physical egress port buffer.

17. The method of claim 10 further comprising:

determining if the received data is a multi-cast data; and

when the received data is a multi-cast data, then assigning the received data to at least one virtual routing device comprises:

determining which of at least one virtual egress port buffer of assigned the virtual routing device is associated with a destination of the multi-cast data,

determining whether or not the addition of the received data to a virtual egress port buffer, associated with the virtual routing device, will exceed a threshold of the virtual egress port buffer, and

if the addition of the received data to the virtual egress port buffer will not exceed the threshold, then assigning the received data to the virtual egress port buffer, and

wherein buffering the received data comprises:

storing the received data only once in a physical memory,

associating the received data with a virtual ingress port buffer accounting entity that tracks the amount of data assigned to a virtual ingress port buffer and where in the physical memory the data assigned to the virtual ingress port buffer is stored, and

associating the received data with a virtual egress port buffer accounting entity that tracks the amount of data assigned to the virtual egress port buffer and where in the physical memory the data assigned to the virtual egress port buffer is stored.

18. A system comprising:

at least one aggregation switch configured to:

aggregate data from a plurality of external sources, wherein the data comprises a plurality of data types, wherein the data types include types based upon a real-time characteristic of the data, wherein the data type includes a voice data, a video data and non-real time data;

provide at least a portion of the aggregated data to a physical routing device;

the physical routing device configured to route data from the aggregation switch to a plurality of subscribers; and

wherein the physical routing device comprises a plurality of virtual routing devices, wherein each of the virtual routing devices is associated with a particular data type and each of the virtual routing devices is configured to: virtually buffer data associated with the respective data type via one or more virtual ingress buffers, wherein each virtual routing device includes a corresponding virtual ingress buffer for each of a plurality of physical ingress ports.

19. The system of claim 18 wherein the virtual routing device is further configured to:

virtually buffer data associated with the respective data type, and

regulate the quality of service provided to the respective data type; and

wherein the virtual routing device comprises a buffer accounting entity configured to:

act as a virtual ingress port, wherein the virtual ingress port is configured to receive data of at least one selected data type,

act as a virtual ingress buffer for the data received by the virtual ingress port,

wherein the virtual ingress buffer is configured to provide a logical structure to the data received by the virtual ingress port; and

wherein the physical routing device is configured to dynamically alter the size of the virtual ingress buffers provided by the plurality of virtual routing devices.

20. The system of claim 18 wherein the physical routing device comprises:

a data manager configured to manage the receipt and transmission of data,

a memory configured to store a received data, and

wherein each virtual routing device comprises:

a virtual ingress port configured to receive data of at least one selected data type,

a virtual ingress buffer configured to facilitate the storage of data received by the virtual ingress port,

a virtual ingress buffer counter configured to track the amount of data associated with the ingress buffer; and

where the data manger is configured to, upon the receipt of received data:

assign the received data to a virtual routing device, based at least in part the data type of the received data,

verify that the memory comprises sufficient available space to store the received data, and

verify that the virtual ingress buffer comprises sufficient available space to store the received data.

Assignments (7)
CORRECTIVE ASSIGNMENT TO CORRECT THE ERROR IN RECORDING THE MERGER IN THE INCORRECT US PATENT NO. 8,876,094 PREVIOUSLY RECORDED ON REEL 047351 FRAME 0384. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Mar 8, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 049248/0558 →
CORRECTIVE ASSIGNMENT TO CORRECT THE EFFECTIVE DATE OF THE MERGER PREVIOUSLY RECORDED AT REEL: 047230 FRAME: 0910. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Oct 29, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047351/0384 →
MERGER Recorded Oct 4, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047230/0910 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: BROADCOM CORPORATION
Reel/Frame 041712/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2017
From: BROADCOM CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041706/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: BROADCOM CORPORATION
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037806/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 22, 2009
From: KWAN, BRUCE; AGARWAL, PUNEET; LAKSHMIKANTHA, ASHVIN
To: BROADCOM CORPORATION
Reel/Frame 022728/0660 →
Continuity (2)
Provisional Application 61028360 · Feb 13, 2008
Related Publication 20090207848A1 · Aug 20, 2009