UNIFIED SYSTEM AREA NETWORK AND SWITCH
First Claim
1. A method of transmitting messages between a plurality of servers, each server having a local memory and processor, comprising:
- connecting each of said plurality of servers to a switch using PCI Express, said switch comprising a plurality of non-transparent bridges, one of said non-transparent bridges used to connect to a respective one of said plurality of servers,configuring each of said non-transparent bridges to allow said network switch to access at least a portion of said local memory of said server connected to said non-transparent bridge;
building a look up table in said network switch associating a destination address with one of said plurality of non-transparent bridges;
creating a message in said local memory in a first server, said message having a destination address;
using said network switch to read said destination address in said message by accessing said local memory of said first server using a first non-transparent bridge associated with said first server;
determining the destination server by looking up said destination address in said look up table;
using said network switch to read said message by accessing said local memory of said first server using said first non-transparent bridge; and
copying said message to local memory of said destination server by accessing said local memory of said destination server by using a second non-transparent bridge associated with said destination server.
4 Assignments
0 Petitions
Accused Products
Abstract
A network switch, based on the PCI Express protocol, is disclosed. The switch includes a processor, local memory and a plurality of non-transparent bridges. By configuring the non-transparent bridges appropriately, the network switch can facilitate a number of different communication mechanisms, including TCP/IP communication between servers, server clusters, and virtualized I/O device utilization. For example, the network switch may configure the non-transparent bridges so as to have access to the physical memory of every server attached to it. It can then move data from the memory of any server to the memory of any other server. In another embodiment, the network switch is connected to an I/O device, and multiple servers are given access to that I/O device via virtualized connections.
88 Citations
37 Claims
-
1. A method of transmitting messages between a plurality of servers, each server having a local memory and processor, comprising:
-
connecting each of said plurality of servers to a switch using PCI Express, said switch comprising a plurality of non-transparent bridges, one of said non-transparent bridges used to connect to a respective one of said plurality of servers, configuring each of said non-transparent bridges to allow said network switch to access at least a portion of said local memory of said server connected to said non-transparent bridge; building a look up table in said network switch associating a destination address with one of said plurality of non-transparent bridges; creating a message in said local memory in a first server, said message having a destination address; using said network switch to read said destination address in said message by accessing said local memory of said first server using a first non-transparent bridge associated with said first server; determining the destination server by looking up said destination address in said look up table; using said network switch to read said message by accessing said local memory of said first server using said first non-transparent bridge; and copying said message to local memory of said destination server by accessing said local memory of said destination server by using a second non-transparent bridge associated with said destination server. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
-
-
16. A system for transmitting messages between a plurality of servers, comprising:
-
a first server having a first local memory, a first processor and a first PCI Express port, A second server having a second local memory, a second processor and a second PCI Express port; a third server having a third local memory, a third processor and a third PCI Express port; a network switch comprising a fourth processor, a fourth local memory, a first non-transparent bridge connected to said first PCI Express port, a second non-transparent bridge connected to said second PCI express port, and a third non-transparent bridge connected to said third PCI express port wherein said fourth local memory further comprises computer executable instructions adapted to; configure each of said first, second and third non-transparent bridges to allow said network switch to access at least a portion of said local memory of said first, second and third servers; build a look up table in said fourth local memory associating a destination address with one of said non-transparent bridges; read a destination address in a message in said first local memory by accessing said first local memory by using said first non-transparent bridge; determine the destination server by looking up said destination address in said look up table, wherein said destination server is selected from said second and said third server; read said message by accessing said first local memory of said first server using said first non-transparent bridge; and copy said message to local memory of said destination server by accessing said local memory of said destination server by using said non-transparent bridge associated with said destination server. - View Dependent Claims (17, 18, 19, 20)
-
-
21. A method of clustering two servers, each server having a local memory and processor, comprising:
-
connecting each of said two servers to a switch using PCI Express, said switch comprising a processor, a local memory and a plurality of non-transparent bridges, a first of said non-transparent bridges used to connect to a first server and a second of said non-transparent bridges used to connect to a second server; configuring said first non-transparent bridge to allow said switch to access a first portion of said local memory of said first server; configuring said second non-transparent bridge to allow said switch to access a second portion of local memory of said second server; using said first server to write data destined for said second server to said first portion; using said network switch to copy data from said first portion using said first non-transparent bridge to said second portion using said second non-transparent bridge; and using said second server to read data from said second portion. - View Dependent Claims (22, 23, 24, 25, 26)
-
-
27. A system for clustering two servers, comprising:
-
a first server having a first local memory, a first processor and a first PCI Express port, A second server having a second local memory, a second processor and a second PCI Express port; network switch comprising a third processor, a third local memory, a first non-transparent bridge connected to said first PCI Express port, and a second non-transparent bridge connected to said second PCI express port, wherein said third local memory further comprises computer executable instructions adapted to; configure said first non-transparent bridge to allow said network switch to access a first portion of said first local memory; configure said second non-transparent bridge to allow said network switch to access a second portion of said second local memory; receive a notification from said first server of new data written in said first portion; copy data from said first portion to said second portion using said first and second non-transparent bridges, in response to said notification; and notify said second server that new data is available in said second portion after copying said data to said second portion. - View Dependent Claims (28, 29, 30)
-
-
31. A method of clustering two servers, each server having a local memory and processor, comprising:
-
connecting each of said two servers to a switch using PCI Express, said switch comprising a plurality of non-transparent bridges, a first of said non-transparent bridges used to connect to a first server and a second of said non-transparent bridges used to connect to a second server; configuring said first non-transparent bridge such that accesses from said first server and accesses from said second server utilize the same logical address range, such that read and write operations from said first server via said first non-transparent bridge are claimed by said second non-transparent bridge and read and write operations from said second server via said second non-transparent bridge are claimed by said first non-transparent bridge; using said first server to perform read and write operations, whereby said operations are performed on said local memory of said second server; and using said second server to perform read and write operations, whereby said operations are performed on said local memory of said first server.
-
-
32. A system for clustering two servers, comprising:
-
a first server having a first local memory, a first processor and a first PCI Express port, A second server having a second local memory, a second processor and a second PCI Express port; network switch comprising a third processor, a third local memory, a first non-transparent bridge connected to said first PCI Express port, and a second non-transparent bridge connected to said second PCI express port, wherein said third local memory further comprises computer executable instructions configured to; configure said first non-transparent bridge such that accesses from said first server and accesses from said second server utilize the same logical address range, such that read and write operations from said first server via said first non-transparent bridge are claimed by said second non-transparent bridge and read and write operations from said second server via said second non-transparent bridge are claimed by said first non-transparent bridge.
-
-
33. A method of sharing an I/O device among a plurality of computers, comprising:
-
connecting each of said plurality of computers to a network switch using PCI Express, said switch comprising a plurality of non-transparent bridges, one of said non-transparent bridges used to connect to a respective one of said plurality of servers, and at least one PCI Express port; connecting said I/O device to said network switch via said PCI Express port; using said network switch to enumerate said I/O device and assign an I/O space to said I/O device; configuring each of said non-transparent bridges to utilize said assigned I/O space, such that each of said computers can access said I/O device directly. - View Dependent Claims (34, 35)
-
-
36. A system for sharing a I/O device among two computers, comprising:
-
a first computer having a first local memory, a first processor and a first PCI Express port, a second computer having a second local memory, a second processor and a second PCI Express port; a network switch comprising a third processor, a third local memory, a first non-transparent bridge connected to said first PCI Express port, a second non-transparent bridge connected to said second PCI express port, and a third bridge connected to said I/O device, wherein said third local memory further comprises computer executable instructions configured to; enumerate said I/O device and assign an I/O space to said I/O device; and configure each of said non-transparent bridges to utilize said assigned I/O space, such that each of said computers can access said I/O device directly. - View Dependent Claims (37)
-
Specification