A method of clustering two servers, each server (150a, 150b) having a local memory (153, 163) and a processor 151, 161), comprising: connecting each of said two servers (150a, 150b) to a switch using PCI Express, said switch comprising a processor, a local memory and a plurality of non-transparent bridges (140a, 140b), 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; characterized by: configuring said first non-transparent bridge so that a first portion of said local memory of said first server is mapped into a logical address space of said processor in said switch, thereby allowing said switch to access said first portion of said local memory of said first server; configuring said second non-transparent bridge so that a second portion of said local memory of said second server is mapped into said logical address space of said processor in said switch, thereby allowing said switch to access said 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. connecting each of said two servers (150a, 150b) to a switch using PCI Express, said switch comprising a processor, a local memory and a plurality of non-transparent bridges (140a, 140b), 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; characterized by: configuring said first non-transparent bridge so that a first portion of said local memory of said first server is mapped into a logical address space of said processor in said switch, thereby allowing said switch to access said first portion of said local memory of said first server; configuring said second non-transparent bridge so that a second portion of said local memory of said second server is mapped into said logical address space of said processor in said switch, thereby allowing said switch to access said 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. configuring said first non-transparent bridge so that a first portion of said local memory of said first server is mapped into a logical address space of said processor in said switch, thereby allowing said switch to access said first portion of said local memory of said first server; configuring said second non-transparent bridge so that a second portion of said local memory of said second server is mapped into said logical address space of said processor in said switch, thereby allowing said switch to access said 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.