IP Library › Granted Patent US 9,178,839
Granted Patent B2
US 9,178,839 · App. 12/179,242 · Granted Nov 3, 2015

Sharing buffer space in link aggregation configurations

Inventors: Omar Cardona (Austin, TX); James B. Cunningham (Austin, TX); Baltazar De Leon, III (Austin, TX); Jeffrey P. Messing (Round Rock, TX)
Assignee: International Business Machines Corporation
H04L49/9036H04L47/41H04L49/90Y02B60/33
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 9,178,839
App. No.
12/179,242
Granted
Nov 3, 2015
Kind
B2
Abstract

In link aggregation configurations, a data packet may be copied into a buffer space of a first NIC. Load balancing techniques may determine that the packet should be transmitted by a second NIC. The packet exists in memory that the second NIC cannot access. The data packet is copied into memory accessible to the second NIC or the memory location of the packet is registered with the NIC. A copy penalty is incurred if a packet is copied from a first buffer space to a second buffer space. A registration penalty is incurred if the location within the first buffer space is registered with the second NIC. Functionality can be implemented within a link aggregation configuration to register buffer space shared among interconnected NICs. Sharing of buffer space between interconnected NICs allows any one of the NICs to access data within the shared buffer space without incurring a penalty.

Claims (55)

1. A method comprising:

determining that a first network interface card is to be aggregated with at least a second network interface card into a link aggregation configuration;

in response to said determining that the first network interface card is to be aggregated with at least the second network interface card into the link aggregation configuration,

determining a first buffer space allocated by an operating system to the first network interface card; and

creating a shared buffer space from the first buffer space and a second buffer space that was allocated by the operating system to the second network interface card, wherein said creating the shared buffer space comprises,

updating a registry to allow the first network interface card read access to both the first buffer space and the second buffer space and to allow the second network interface card read access to both the first buffer space and the second buffer space;

indicating the first buffer space to the second network interface card and the second buffer space to the first network interface card, wherein the first network interface card and the second network interface card transmit data read from the shared buffer space.

2. The method of claim 1 , wherein said determining that the first network interface card is to be aggregated with at least the second network interface card into the link aggregation configuration occurs coincident with one or more of initialization of the first network interface card, start up of the operating system, execution of a configuration command to aggregate the first network interface card with the second network interface card, and installation of the first network interface card.

3. The method of claim 1 , wherein said indicating the first buffer space to the second network interface card and the second buffer space to the first network interface card comprises:

populating a first memory registration structure of the first network interface card with address and length information of the second buffer space, wherein the first memory registration structure was previously populated with address and length information of the first buffer space; and

populating a second memory registration structure of the second network interface card with address and length information of the first buffer space, wherein the second memory registration structure was previously populated with the address and length information of the second buffer.

4. The method of claim 3 , wherein at least one executing instance of a network interface driver performs said populating the first memory registration structure and said populating the second memory registration structure, and the operating system performs said updating the registry.

5. The method of claim 1 , wherein said updating the registry to allow the first network interface card read access to both the first buffer space and the second buffer space and to allow the second network interface card read access to both the first buffer space and the second buffer space comprises:

recording in the registry a first read access privilege indication for the first network interface with address and length information that identifies the second buffer; and

recording in the registry a second read access privilege indication for the second network interface with address and length information that identifies the first buffer space,

wherein a third access privilege indication was previously recorded in the registry for the first network interface with the address and length information that identifies the first buffer space and a fourth privilege indication was previously record in the registry for the second network interface with the address and length information that identifies the second buffer space.

6. The method of claim 1 further comprising determining the second buffer space that was allocated to the second network interface card.

7. The method of claim 1 further comprising:

selecting one of the aggregated first network interface card and the second network interface card to transmit a set of one or more data packets from the shared buffer space;

indicating one or more locations of the set of one or more data packets in the shared buffer space to the selected one of the first and second network interface cards; and

the selected one of the first network interface card and the second interface card reading the set of data packets from the shared buffer space.

8. A computer program product for creating a shared buffer space across a plurality of network interface cards, the computer program product comprising:

a computer readable storage device having computer usable program code embodied therewith, the computer usable program code executable by a processor to cause the processor to perform operations comprising:

determining that a first network interface card is to be aggregated with at least a second network interface card into a link aggregation configuration;

in response to said determining that the first network interface card is to be aggregated with at least the second network interface card into the link aggregation configuration,

determining a first buffer space allocated by an operating system to the first network interface card; and

creating a shared buffer space from the first buffer space and a second buffer space that was allocated by the operating system to the second network interface card wherein said creating the shared buffer space comprises,

updating a registry to allow the first network interface card read access to both the first buffer space and the second buffer space and to allow the second network interface card read access to both the first buffer space and the second buffer space;

indicating the first buffer space to the second network interface card and the second buffer space to the first network interface card.

9. The computer program product of claim 8 , wherein said operation of determining that the first network interface card is to be aggregated with at least the second network interface card into the link aggregation configuration occurs coincident with one or more of initialization of the first network interface card, start up of the operating system, execution of a configuration command to aggregate the first network interface card with the second network interface card, and installation of the first network interface card.

10. The computer program product of claim 8 , wherein said operation of indicating the first buffer space to the second network interface card and the second buffer space to the first network interface card comprises:

populating a first memory registration structure of the first network interface card with address and length information of the second buffer space, wherein the first memory registration structure was previously populated with address and length information of the first buffer space; and

populating a second memory registration structure of the second network interface card with address and length information of the first buffer space, wherein the second memory registration structure was previously populated with the address and length information of the second buffer.

11. The computer program product of claim 8 , wherein said operation of updating the registry to allow the first network interface card read access to both the first buffer space and the second buffer space and to allow the second network interface card read access to both the first buffer space and the second buffer space comprises:

recording in the registry a first read access privilege indication for the first network interface with address and length information that identifies the second buffer; and

recording in the registry a second read access privilege indication for the second network interface with address and length information that identifies the first buffer space,

wherein a third access privilege indication was previously recorded in the registry for the first network interface with the address and length information that identifies the first buffer space and a fourth privilege indication was previously record in the registry for the second network interface with the address and length information that identifies the second buffer space.

12. The computer program product of claim 8 , wherein the operations further comprise:

selecting one of the aggregated first network interface card and the second network interface card to transmit a set of one or more data packets from the shared buffer space;

indicating one or more locations of the set of one or more data packets in the shared buffer space to the selected one of the first and second network interface cards; and

the selected one of the first network interface card and the second interface card reading the set of data packets from the shared buffer space.

13. An apparatus comprising:

a set of one or more processing units;

a plurality of network interface cards;

a memory; and

a link aggregation unit to,

determine that a first of the plurality of network interface cards is to be aggregated with at least a second of the plurality of network interface cards into a link aggregation configuration;

in response to determining that the first network interface card is to be aggregated with at least the second network interface card into the link aggregation configuration,

determine a first buffer space allocated from the memory by an operating system to the first network interface card; and

create a shared buffer space from the first buffer space and a second buffer space, wherein the second buffer space was allocated from the memory by the operating system to the second network interface card, wherein the link aggregation unit to create the shared buffer space comprises the link aggregation unit being configured to,

update a registry to allow the first network interface card read access to both the first buffer space and the second buffer space and to allow the second network interface card read access to both the first buffer space and the second buffer space;

indicate the first buffer space to the second network interface card and the second buffer space to the first network interface card, wherein the first network interface card and the second network interface card transmit data read from the shared buffer space.

14. The apparatus of claim 13 , wherein the link aggregation unit to indicate the first buffer space to the second network interface card and the second buffer space to the first network interface card comprises the link aggregation unit to:

populate a first memory registration structure of the first network interface card with address and length information of the second buffer space, wherein the first memory registration structure was previously populated with address and length information of the first buffer space; and

populate a second memory registration structure of the second network interface card with address and length information of the first buffer space, wherein the second memory registration structure was previously populated with the address and length information of the second buffer.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 25, 2008
From: CARDONA, OMAR; CUNNINGHAM, JAMES B.; DE LEON, BALTAZAR, III; MESSING, JEFFREY P.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 021292/0893 →
Continuity (1)
Related Publication 20100020818A1 · Jan 28, 2010