IP Library Granted Patent US 7,865,654
Granted Patent B2
US 7,865,654 · App. 11/680,008 · Granted Jan 4, 2011

Programmable bridge header structures

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 7,865,654
App. No.
11/680,008
Granted
Jan 4, 2011
Kind
B2
Abstract

A computer system includes compute nodes coupled through a switch to shared or non-shared I/O devices. The switch includes a pool of bridge headers and virtual bridges coupling a root port of a compute node to each of one or more shared or non-shared I/O devices. The switch is configured to associate each of the virtual bridges with a respective one of the fixed pool of bridge headers, receive a packet including data identifying the root port and a shared or non-shared I/O device, and route the packet in response to comparing data in the packet to data in the bridge headers associated with the virtual bridges. The virtual bridges comprise a hierarchy of virtual bridges in which one virtual bridge connects the root port to the remaining virtual bridges of the hierarchy. The switch may change the associations between virtual bridges and bridge headers.

Claims (72)

1. A computer system comprising:

a switch that is programmable to associate each of a first plurality of virtual bridges with a respective bridge header of a plurality of bridge headers; and

a first compute node coupled via the switch to each of at least a first subset of one or more shared or non-shared I/O devices and to at least a second subset of the one or more shared or non-shared I/O devices;

wherein the switch includes a second plurality of virtual bridges coupling a second root port of the first compute node to at least a second subset of the one or more shared or non-shared I/O devices; and

wherein the switch is configured to:

receive a first packet including data which identifies a first root port of the first compute node and a first I/O device of the one or more shared or non-shared I/O devices; and

route the first packet in response to comparing first data in the first packet to data in one or more of the bridge headers associated with the first plurality of virtual bridges;

receive a second packet including data identifying the second root port and a second I/O device of the one or more shared or non-shared I/O devices; and

route the second packet in response to comparing second data in the second packet with data in one or more of the bridge headers associated with the second plurality of virtual bridges.

2. A computer system comprising:

a switch that is programmable to associate each of a first plurality of virtual bridges with a respective bridge header of a plurality of bridge headers;

a first compute node coupled via the switch to each of at least a first subset of one or more shared or non-shared I/O devices;

a second compute node coupled via the switch to at least a second subset of the one or more shared or non-shared I/O devices;

wherein the switch includes a second plurality of virtual bridges coupling a second root port of the second compute node to at least a second subset of the one or more shared or non-shared I/O devices; and

wherein the switch is configured to:

receive a first packet including data which identifies a first root port of the compute node and a first I/O device of the one or more shared or non-shared I/O devices;

route the first packet in response to comparing first data in the first packet to data in one or more of the bridge headers associated with the first plurality of virtual bridges;

receive a second packet including data identifying the second root port and a second shared or non-shared I/O device of the one or more shared or non-shared I/O devices; and

route the second packet in response to comparing second data in the second packet with data in one or more of the bridge headers associated with the second plurality of virtual bridges;

wherein the first subset of the one or more shared or non-shared I/O devices includes at least one device that is also included in the second subset of the one or more shared or non-shared I/O devices.

3. A computer system comprising:

a switch that is programmable to associate each of a first plurality of virtual bridges with a respective bridge header of a plurality of bridge headers;

a first compute node coupled via the switch to each of at least a first subset of one or more shared or non-shared I/O devices;

wherein the switch is configured to:

receive a first packet including data which identifies a first root port of the compute node and a first I/O device of the one or more shared or non-shared I/O devices;

route the first packet in response to comparing first data in the first packet to data in one or more of the bridge headers associated with the first plurality of virtual bridges;

wherein the first root port is coupled to a second subset of the one or more shared or non-shared I/O devices and the number of virtual bridges in the first plurality of virtual bridges is less than the number of shared or non-shared I/O devices in the second subset.

4. A method for transferring packets between compute nodes coupled to a plurality of shared or non-shared I/O devices, the method comprising:

associating each of a first plurality of virtual bridges with a respective bridge header of a plurality of bridge headers, wherein the first plurality of virtual bridges couple a first root port of a first compute node to each of a first subset of one or more shared or non-shared I/O devices;

associating each of a second plurality of virtual bridges with a respective bridge header of the plurality of bridge headers, wherein the second plurality of virtual bridges couple a second root port of the first compute node to at least a second subset of the one or more shared or non-shared I/O devices;

receiving a first packet including data identifying the first root port and a first shared or non-shared I/O device of the one or more shared or non-shared I/O devices;

comparing first data in the first packet to data in one or more of the bridge headers associated with the first plurality of virtual bridges;

routing the first packet in response to said comparing;

receiving a second packet including data identifying the second root port and a second I/O device of the one or more shared or non-shared I/O devices;

comparing second data in the second packet to data in one or more of the bridge headers associated with the second plurality of virtual bridges; and

routing the first packet in response to said comparing.

5. A method for transferring packets between compute nodes coupled to a plurality of shared or non-shared I/O devices, the method comprising:

associating each of a first plurality of virtual bridges with a respective bridge header of a plurality of bridge headers, wherein the first plurality of virtual bridges couple a first root port of a first compute node to each of a first subset of one or more shared or non-shared I/O devices;

associating each of a second plurality of virtual bridges with a respective bridge header of the plurality of bridge headers, wherein the second plurality of virtual bridges couple a second root port of a second compute node to at least a second subset of the one or more shared or non-shared I/O devices;

receiving a first packet including data identifying the first root port and a first shared or non-shared I/O device of the one or more shared or non-shared I/O devices;

comparing first data in the first packet to data in one or more of the bridge headers associated with the first plurality of virtual bridges; and

routing the first packet in response to said comparing;

receiving a second packet including data identifying the second root port and a second shared or non-shared I/O device of the one or more shared or non-shared I/O devices;

comparing second data in the second packet to data in one or more of the bridge headers associated with the second plurality of virtual bridges; and

routing the first packet in response to said comparing;

wherein the first subset of the one or more shared or non-shared I/O devices includes at least one device that is also included in the second subset of the one or more shared or non-shared I/O devices.

6. A method for transferring packets between compute nodes coupled to a plurality of shared or non-shared I/O devices, the method comprising:

associating each of a first plurality of virtual bridges with a respective bridge header of a plurality of bridge headers, wherein the first plurality of virtual bridges couple a first root port of a first compute node to each of a first subset of one or more shared or non-shared I/O devices;

receiving a first packet including data identifying the first root port and a first shared or non-shared I/O device of the one or more shared or non-shared I/O devices;

comparing first data in the first packet to data in one or more of the bridge headers associated with the first plurality of virtual bridges; and

routing the first packet in response to said comparing;

wherein the first root port is coupled to a second subset of the one or more shared or non-shared I/O devices and the number of virtual bridges in the first plurality of virtual bridges is less than the number of shared or non-shared I/O devices in the second subset.

7. A switch for transferring packets between compute nodes coupled to a plurality of shared or non-shared I/O devices, wherein the switch is configured to:

associate each of a first plurality of virtual bridges with a respective bridge header of a plurality of bridge headers, wherein the first plurality of virtual bridges couple a first root port of a first compute node to each of at least a first subset of one or more shared or non-shared I/O devices;

associate each of a second plurality of virtual bridges with a respective bridge header of the plurality of bridge headers, wherein the second plurality of virtual bridges couple a second root port of the first compute node to each of at least a second subset of the one or more shared or non-shared I/O devices;

receive a first packet including data identifying the first root port and a first shared or non-shared I/O device of the one or more shared or non-shared I/O devices;

route the first packet in response to comparing first data in the first packet to data in one or more of the bridge headers associated with the first plurality of virtual bridges;

receive a second packet including data identifying the second root port and a second I/O device of one or more shared or non-shared I/O devices; and

route the second packet in response to comparing second data in the second packet with data in one or more of the bridge headers associated with the second plurality of virtual bridges.

8. A switch for transferring packets between compute nodes coupled to a plurality of shared or non-shared I/O devices, wherein the switch is configured to:

associate each of a first plurality of virtual bridges with a respective bridge header of a plurality of bridge headers, wherein the first plurality of virtual bridges couple a first root port of a first compute node to each of at least a first subset of one or more shared or non-shared I/O devices;

associate each of a second plurality of virtual bridges with a respective bridge header of the plurality of bridge headers, wherein the second plurality of virtual bridges couple a second root port of a second compute node to each of at least a second subset of the one or more shared or non-shared I/O devices;

receive a first packet including data identifying the first root port and a first shared or non-shared I/O device of the one or more shared or non-shared I/O devices;

route the first packet in response to comparing first data in the first packet to data in one or more of the bridge headers associated with the first plurality of virtual bridges;

receive a second packet including data identifying the second root port and a second shared or non-shared I/O device of one or more shared or non-shared I/O devices; and

route the second packet in response to comparing second data in the second packet with data in one or more of the bridge headers associated with the second plurality of virtual bridges;

wherein the first subset of the one or more shared or non-shared I/O devices includes at least one device that is also included in the second subset of the one or more shared or non-shared I/O devices.

9. A switch for transferring packets between compute nodes coupled to a plurality of shared or non-shared I/O devices, wherein the switch is configured to:

associate each of a first plurality of virtual bridges with a respective bridge header of a plurality of bridge headers, wherein the first plurality of virtual bridges couple a first root port of a first compute node to each of at least a first subset of one or more shared or non-shared I/O devices;

receive a first packet including data identifying the first root port and a first shared or non-shared I/O device of the one or more shared or non-shared I/O devices; and

route the first packet in response to comparing first data in the first packet to data in one or more of the bridge headers associated with the first plurality of virtual bridges;

wherein the switch is coupled to the first root port and to a second subset of the one or more shared or non-shared I/O devices and the number of virtual bridges in the first plurality of virtual bridges is less than the number of shared or non-shared I/O devices in the second subset.

Assignments (8)
CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE PREVIOUSLY RECORDED AT REEL: 047422 FRAME: 0464. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Mar 6, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 048883/0702 →
MERGER Recorded Oct 5, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047422/0464 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041710/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037808/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 23, 2015
From: EMULEX CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 036942/0213 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 17, 2014
From: EMULEX DESIGN AND MANUFACTURING CORPORATION
To: EMULEX CORPORATION
Reel/Frame 032087/0842 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 25, 2010
From: NEXTIO INC.
To: EMULEX DESIGN AND MANUFACTURING CORPORATION
Reel/Frame 024434/0248 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 1, 2007
From: PETTEY, CHRISTOPHER J.; GLASER, STEPHEN
To: NEXTIO INC.
Reel/Frame 018946/0724 →