Reading - Jellyfish Flashcards
Describe at a high level how a data center could generate a Jellyfish topology for their
specific network. Assume the desired topology is of the simplest variety, meaning each
switch has the same number of ports and will connect to the same number of servers.
To create a Jellyfish topology, we need to know three values: N, the number of racks / switches,
k, the number of ports per switch, and r, the number of ports to be used to connect to other
switches. Next, an approximation algorithm is used to generate a RRG (Random Regular Graph)
using N, k, and r as input. The result is a blueprint for the Jellyfish topology that can be used to
physically cable the switches and servers.
Describe at a high level how a Jellyfish topology can be incrementally expanded, using the
same assumptions from the previous question. Can we expect the expanded topology to be
uniformly random after an incremental expansion?
To incrementally add a new server rack, it is not necessary to generate a new RRG with N+1, k,
and r. At a high level, we can add the new rack by iteratively selecting connections between
other ToR switches (not otherwise connected to the new ToR switch) and replacing that
connection with two new connections, each to the new switch. This maintains the previous
connectivity of the topology, and also consumes two of the r ports on the new ToR switch
dedicated to connecting to other ToR switches. This process is repeated until one or zero or the
r ports remain.
It is important to note that after expansion, the new topology cannot be expected to be
uniformly random, as it would be if a new RRG was created and the entire data center re-cabled
appropriately.