Off-campus UNL users: To download campus access dissertations, please use the following link to log into our proxy server with your NU ID and password. When you are done browsing please remember to return to this page and log out.
Non-UNL users: Please talk to your librarian about requesting this dissertation through interlibrary loan.
Automated Testing of Network Protocol Implementations Under Packet Dynamics
Network protocols are an essential component of the Internet and must be implemented correctly. However, their implementations are hard to test, especially under the large space of potential behaviors introduced by packet dynamics. This is because there are a prohibitively large number of packet dynamics possibilities, and many faults are revealed only in low-probability corner cases, such as those with a specific packet delay or packet reordering. In this effort, we first propose a symbolic execution approach that leverages an advanced technique from the software engineering community called symbolic execution to find the equivalence classes of packet dynamics that lead to the same behavior. Our proposed approach efficiently checks the large space of potential behaviors introduced by packet dynamics. It avoids redundantly testing equivalent behaviors, instead spends testing resources on packet dynamics that lead to distinct and potentially buggy behaviors. However, the symbolic execution approach does not scale well due to the path explosion problem. To address this issue, we propose two unique domain-specific heuristics driven by network protocol properties, instead of general code properties. This technique improves the cost-effectiveness of the symbolic execution approach. Considering that random testing is widely used in the industry due to its simplicity and low cost, to improve random testing in the context of packet dynamics, we conduct an extensive study on the fault-detection capabilities of different models of random packet dynamics. We find that they have quite different fault-detection capabilities and that some limitations exist in the common realistic models. Our last contribution is to improve current TCP congestion control testing. We propose a novel approach based on feedback-directed random testing, called ACT. ACT automatically tests the algorithm without requiring expert knowledge, and efficiently tests different algorithm behaviors directed by the algorithm state space. Additionally, we propose a novel scalable testing method, called SCCT. SCCT systematically tests the code of a congestion control algorithm and looks for the faults in the congestion control component of TCP. Impressively, both ACT and SCCT successfully detect multiple faults in Linux congestion control algorithms, and Linux kernel developers have already fixed some faults based on our findings.
Sun, Wei, "Automated Testing of Network Protocol Implementations Under Packet Dynamics" (2017). ETD collection for University of Nebraska - Lincoln. AAI10682158.