Date of this Version
Exhaustive testing is an important type of simulation, where a user exhaustively simulates a protocol for all possible cases with respect to some uncertain factors, such as all possible packet delays or packet headers. It is useful for completely evaluating the protocol performance, finding the worst-case performance, and detecting possible design or implementation bugs of a protocol. It is, however, time consuming to use the brute force method with current NS-3, a widely used network simulator, for exhaustive testing. In this paper, we present our work on Sym-NS-3 for more efficient exhaustive testing, which leverages a powerful program analysis technique called symbolic execution. Intuitively, Sym-NS-3 groups all the cases leading to the same simulator execution path together as an equivalence class, and simulates a protocol only once for each equivalence class. We present our design choices and implementation details on how we extend current NS-3 to support symbolic execution, and also present several exhaustive testing results to demonstrate the significantly improved testing speeds of Sym-NS-3 over current NS-3.
Adviser: Lisong Xu