PostprintThis is the accepted version of a paper published in IJNC. This paper has been peer-reviewed but does not include the final publisher proof-corrections or journal pagination.Citation for the original published paper (version of record): Sebih, N., Hagiya, M., Weitl, F., Yamamoto, M., Artho, C. et al. (2015) Software Model Checking of UDP-based Distributed Applications.
IJNC, 5(2): 373-402Access to the published version may require subscription. UDP maximizes performance by omitting flow control and connection handling. For instance, media-streaming services often use UDP to reduce delay and jitter. However, because UDP is unreliable (packets are subject to loss, duplication, and reordering), verification of UDP-based applications becomes an issue. Even though unreliable behavior occurs only rarely during testing, it often appears in a production environment due to a larger number of concurrent network accesses.Our tool systematically tests UDP-based applications by producing packet loss, duplication, and reordering for each packet. We have evaluated the performance of our tool in a multithreaded client/server application and detected incorrectly handled packet duplicates in a file transfer client.