DEFO is a network controller that automatically translates high-level goals of operators into network configurations. By interacting directly with the optimization layer, DEFO exploits the connetivity layer to control the actual forwarding paths used for any traffic flow crossing the network.
DEFO leverages high connectivity redundancies by natively supporting even traffic splitting over multiple IGP shortest-paths (ECMP). This mechanism allows DEFO to provide efficient solution in terms of congestion.
DEFO is able to provide users with efficient solutions within seconds even on networks with hundreds of nodes and tens of thousands of demands. DEFO can thus be used both offline and online.
This demo shows the online optimization of an artificial backbone network of 100 nodes. Black thick edges correspond to failed links. DEFO is used to compute paths such that each link uses at most 90% of its capacity. Each time DEFO succeeds, a new failure is randomly generated.
The Java bytecode of DEFO is openly available here and can be used with the following command line (JVM 1.7 or later):
> java -jar defo.jar topologyFile demandsFile
Here follow instances on which DEFO has been evaluated:
This publication describes DEFO and the two-layer architecture separating connectivity and optimization.
Internal algorithms and datastructures of DEFO are described in this publication. The proof that the problem solved by DEFO is NP-Hard is also included.