  We present SymNet, a network static analysis tool based on symbolic
execution. SymNet quickly analyzes networks by injecting symbolic packets and
tracing their path through the network. Our key novelty is SEFL, a language we
designed for network processing that is symbolic-execution friendly.
  SymNet is easy to use: we have developed parsers that automatically generate
SEFL models from router and switch tables, firewall configurations and
arbitrary Click modular router configurations. Most of our models are exact and
have optimal branching factor. Finally, we built a testing tool that checks
SEFL models conform to the real implementation. SymNet can check networks
containing routers with hundreds of thousands of prefixes and NATs in seconds,
while ensuring packet header memory-safety and capturing network functionality
such as dynamic tunneling, stateful processing and encryption. We used SymNet
to debug middlebox interactions documented in the literature, to check our
department's network and the Stanford backbone network. Results show that
symbolic execution is fast and more accurate than existing static analysis
tools.
