Thanks! I'd really like to do a version of this with an on-board switch. I wanted to get something up and running so I built this with Ethernet sockets on each blade as that was the simplest way to get going. It works really well as a server like this, but it'd be really cool to have just a single 10GbE link to the outside world.
I looked into it and it's definitely do-able, but is a definite version 2 project! It's surprisingly difficult to find an Ethernet switch IC with 11+ GbE ports (10 blades plus one management) and 10GbE uplink that's easily available to regular hardware tinkerers like me. The VSC7444 is the one I found but it's a £120 BGA so would be an expensive project if I break a few :-) Most fast switch ICs seem to have no public info and not be available via normal distributors in small quantities. Broadcom have a couple, but again quite expensive and limited public information.
I reckon if I'm able to sell a few of the current units then I'll have a go at the on-board switch one at some point. I reckon that although it would add to the cost of the server unit it'd probably be the same price overall by reducing the number of external switch ports you need.
Thank you! Yes, you're correct on your guesses. There's blade to backplane/management server comms, but no direct blade to blade comms. As I've mentioned on a couple of other replies, it's definitely possible to do a version of this where the Ethernet comes from the blade to the backplane over the PCI-e connector and into a switch on the backplane, so that you'd have all the switching done on-board and a single uplink port. It's a much more complicated project to do though so not something I've tackled yet.
The blade uses PCI-e card edge connectors as they're cheap, and I route UART0 (GPIO 14/15) and the USB from the compute onto this. There's a USB switch IC on the blade which can route the CM's USB output to either the host port on the front of the blade or through the backplane. The UARTs and USB are connected through switches on the backplane into the management module. The blades also have RP2040s on them which are connected to various pins on the compute modules, and the management module can talk to these using I2C. It's able to use this for doing stuff like restarting the CM into provisioning mode, and for reporting status information. The RP2040 is connected via I2C to both the compute module on the blade and the backplane's management module, so can be used for exchanging status information from within Linux on the blade with the management module. That's how I get out status, temperature etc info. There's no reason this couldn't be used for other stuff too, and in theory could be used to exchange inter-blade data at I2C data rates.
The connector also passes out the RP2040's UART and SWD as I use this to flash the firmware into the RP2040. I haven't switched this into the backplane but in theory it could be too.