  An ideal network troubleshooting system would be an almost fully automated system, monitoring the whole network at once, feeding the results to a knowledge-based decision making system that suggests actions to the operator or corrects the failure automatically. Reality is quite the contrary: operators separated in their offices try to track down complex networking failures in their own way, which is generally a long sequence of manually edited parallel shell commands (mostly ping, traceroute, route, iperf, ofctl etc.). This process requires operators to be "masters of complexity" (which they often are) and continuous interaction. In this paper we aim at narrowing this huge gap between vision and reality by introducing a modular framework capable of (i) formalizing troubleshooting processes as the concatenation of executable functions [called Troubleshooting Graphs (TSGs)], (ii) executing these graphs via an interpreter, (iii) evaluating and navigating between the outputs of the functions and (iv) sharing troubleshooting know-hows in a formalized manner. 
A Little Less Interaction, A Little More Action: A Modular Framework for   Network Troubleshooting