Valiant Load Balancing (VLB)#
VLB [1] is an oblivious routing scheme that achieves provably optimal load balancing in some settings.
VLB itself and its variants are used in many traffic-oblivious optical DCN architectures, such as RotorNet [2], Opera [3], and Sirius [4].
In vanilla VLB, packets are first routed to an intermediate node selected randomly to achieve load balancing,
and then forwarded to the final destination node through a direct connection.
You can use the openoptics.OpticalRouting.routing_vlb() function to configure VLB routing.
examples/routing_vlb.py#
1from openoptics import Toolbox, OpticalTopo, OpticalRouting
2
3if __name__ == "__main__":
4 nb_node = 8
5 net = Toolbox.BaseNetwork(
6 name="VLB",
7 backend="Mininet",
8 nb_node=nb_node,
9 time_slice_duration_ms=64, # in ms
10 use_webserver=False,
11 )
12 circuits = OpticalTopo.round_robin(nb_node=nb_node)
13 assert net.deploy_topo(circuits)
14 paths = OpticalRouting.routing_vlb(net.get_topo(), net.tor_ocs_ports)
15 # for path in paths:
16 # print(path)
17 assert net.deploy_routing(paths, routing_mode="Source")
18 net.start()