Declarative Debugging for Modern Networks
摘要
Network troubleshooting today relies largely on ticket systems, which log, record, replay, and analyze live events, while overlooking recent advances in SDNs, programmable networks, and verified data centers, all of which have produced a rich body of models and control software. We argue instead that this modern network software—including abstract models and system code—provides a vantage point for troubleshooting, enabled by a debugger that, when things go bump in the night, allows someone who neither wrote the software nor is familiar with the DSL or verification tools to pinpoint the exact culprit line—a stepping stone for systematically diagnosing the underlying network. As a first step toward this vision, we present a declarative debugging schema for modern network software amid its rapid evolution: the user only needs to answer “yes/no” questions about the software’s intended behavior, leaving procedural inspection and bug localization entirely to the debugger; meanwhile, new language features—arisen with emerging applications—are seamlessly supported through a novel use of partial evaluation, which automatically incorporates these features into the declarative debugging process.