I have a network of three computers, each of which has two ports. I do not have a network switch (the three ports are 10GbE and the switches are prohibitively expensive for now).
I would like to connect the three such that any one of them can talk to the other (*), but without depending on a strict mapping between which port of the pair should be connected to which peer. Put another way, I'd like a configuration that's stable enough that I could swap the pair of cables connected to a single computer and at least after rebooting all three nodes, expect that the communications would work as normal.
A simple diagram:
+---------+
| Node A |
| |eth0}-----+
| |? | +---------+
| |eth1}-+ | | Node C |
+---------+ | +-{eth0| |
| ?| |
| +-{eth1| |
| | +---------+
+---------+ | |
| Node B | | |
| |eth0}-+ |
| |? |
| |eth1}-----+
+---------+
Additionally, I would expect that any such configuration must be a single-hop configuration, enabling bridging (e.g.) would not be an adequate solution.
Note that there is a fixed master among the nodes, though I shouldn't think that would be a necessary component of the solution.
Is there such a configuration? If so, how could I configure it? From what I understand, using multiple identical routes with different interfaces may not be robust enough. I prefer not to use solutions like iptables
or tc
unless those are the only appropriate tools for this particular task.
(*) "talk to the other" constitutes initiating TCP connections in any direction, UDP+ICMP traffic, etc.