Computer Science and Engineering, Department of


First Advisor

Lisong Xu

Date of this Version

Spring 5-2022


A THESIS Presented to the Faculty of The Graduate College at the University of Nebraska In Partial Fulfillment of Requirements For the Degree of Master of Science, Major: Computer Science, Under the Supervision of Professor Lisong Xu. Lincoln, Nebraska: May, 2022

Copyright © 2022 Jianfei Shao


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