Device Configuration Synthesis with NetComplete on Software Gone Wild

When I was still at university the fourth-generation programming languages were all the hype, prompting us to make jokes along the lines “fifth generation will implement do what I don’t know how

The research team working in Networked Systems Group at ETH Zurich headed by prof. Laurent Vanbever got pretty close. The description of their tool says:

NetComplete automatically autocompletes configurations for routers running multiple interacting protocols, including policy-based protocols (BGP) and shortest-path protocols (OSPF), and it also supports static routes. NetComplete takes as input configurations with “holes” that identify the parameters to be completed and “autocompletes” these with concrete values.

Sounds like magic? Laurent shared some of the implementation details in Episode 103 of Software Gone Wild, and you’ll find even more information on their web site. Want to figure out how it all works? Download the tool and start exploring.


  1. Why should the configuration contain "holes" to begin with? I mean with holes in it something would be broken. What problem are they trying to solve?
  2. The holes I mentioned relate to "parts of the configurations you're not sure about".

    Say that you're running your network with configuration A and you need to change its behavior for some reason. Perhaps you want to increase the amount of load balancing or prevent some transit traffic. For the first requirement, you know that you've to modify the link weights somehow (to get ECMP) and, for the second one, you know that you've to adapt your route-maps (to tag/drop routes accordingly). What you do with NetComplete is "highlight"/"create a hole" for the weights/route-map in your existing configuration A and then ask it to "fill them in" so that the resulting configuration meets the requirements: i.e. it load balances and prevents transit traffic.

    I agree with you that "holes" is a perhaps a badly chosen term here: "parts to change" is perhaps a better way to understand it?

    Hope it clarifies, if not, please shoot again!!

  3. Thanks for the clarification. It resembles the batfish project (also originally developed by universities) and it remindes me of an intent based networking system (probably software defined). Is it used in production networks? What vendors do you support?
  4. > "holes" is a perhaps a badly chosen term here: "parts to change" is perhaps better

    Intent Based !
Add comment