In this paper, we present a component-based network simulation environment that provides a systematic way to simulate, with high fidelity, protocol operations in a variety of target network architectures. We take a four-step approach to developing such a composable network simulation environment with reusable components. First, we lay a component-based software architecture, called the autonomous component architecture (ACA). Second, we propose a new real-time, process-driven simulation technique that fits naturally in ACA and simulates the real system realistically. Third, we devise a packet-based network simulation framework, called extensible internetworking framework (INET), on top of ACA. Fourth, we implement in Java both ACA and INET, and several representative suites of protocol components in a variety of network architectures. The resulting codes, along with a scripting framework, constitute a network simulation environment called J-Sim. By virtue of the many desirable features inherited from ACA, the J-Sim environment meets the flexibility, composability, reusability, extensibility and diagnosability requirements. The price JSim pays for the many desirable features is, however, the inter-component communication overhead. In this paper, we show (via experimentation) that this overhead is not significant (in the range of 0.2-0.6 1s), and J-Sim achieves better scalability than two other network simulators in the public domains, ns-2 and Scalable Simulation Framework Network Models (SSFNET), in terms of both the experiment setup time and the simulation completion time.
We present a novel technique that speeds up state-space exploration (SSE) for evolving programs with dynamically allocated data. SSE is the essence of explicit-state model checking and an increasingly popular method for automating test generation. Traditional, non-incremental SSE takes one version of a program and systematically explores the states reachable during the program's executions to find property violations. Incremental SSE considers several versions that arise during program evolution: reusing the results of SSE for one version can speed up SSE for the next version, since state spaces of consecutive program versions can have significant similarities. We have implemented our technique in two model checkers: Java PathFinder and the J-Sim statespace explorer. The experimental results on 24 program evolutions and exploration changes show that for non-initial runs our technique speeds up SSE in 22 cases from 6.43% to 68.62% (with median of 42.29%) and slows down SSE in only two cases for -4.71% and -4.81%.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.