Preface
As I write this preface in June 2018, the ns-3 discrete event network simulator is marking the tenth anniversary of its first public release (ns-3.1). Since that time, over two hundred people have joined together to collaborate on what has become a vital resource for the computer network researcher. Despite this past work, there remains a lot to work on, to keep ns-3 relevant to current telecommunications standards and protocols, and to keep up with external developments in computer languages, large-scale research testbeds, and Linux containerization technologies.
To date, there have been very few books written about ns-3, but I believe that this text and others like it will help to fill the gap that remains between the existing online tutorial and manual and the needs of the ns-3 beginner. ns-3 is a tool with a steep learning curve, because it is written directly in the C++programming language and not with a more specialized language tailored to network simulation, and without an external integrated development or visualization environment. Users already fluent in other similar tools (like ns-2) or in the Linux kernel programming may have an easier time than most to learn ns-3, but for others, a text such as this will help to provide the background necessary to more quickly master ns-3.
Following a quick start overview of writing and running ns-3 simulations, this book covers ns-3 from the ground up, describing the enhancements to and design patterns of the C++language used by ns-3, including memory management, management of default configuration values in the simulator, and a dynamic type system. Upon this basis, the models for the various protocol layers in ns-3, starting from the application layer and ending at the wireless layers, are outlined. In the remaining chapters, the reader is introduced to a framework for data collection and statistics, extensions to allow ns-3 simulations to interact with the outside world, and a sampling of related projects.
The author's journey with ns-3 began with his selection, as a student, for the 2012 Google Summer of Code, where he developed a set of schedulers for the ns-3 LTE models. Following this, he was selected for the 2013 European Space Agency's Summer of Code in Space, where he implemented a model for the Bundle Protocol used in the Delay-Tolerant Networking architecture for deep space communications. His expertise has grown since then to the point that he is now a mentor to other ns-3 students, supervising this summer a project aimed at enhancing the usability of ns-3 by developing a simulation execution manager for ns-3. I am hopeful that some readers of this text will follow in his footsteps of contributing code back to the open source project, and then taking the next step of supervising the development work of others.
The computer networking landscape continues to be fast-moving, with new protocols taking hold in the Internet and with 5G wireless on the horizon, and ns-3 developers are working hard to keep pace. I envision that in the next decade, industrial and educational use of ns-3 will continue to grow the user base. One technical challenge that must be met is to improve the scalability of ns-3 wireless models to larger topologies. Some combination of approaches such as new parallel computing techniques, and more opportunities to abstract away details that are not relevant to the simulation, is likely needed to support the envisioned large wireless simulations of the future. Simulation is highly likely to keep a prominent role in research because of its accessibility, reproducibility, and scalability properties.
Like many open source projects, ns-3 relies on a committed community of volunteers to keep the software moving forward, and I hope that we are about to usher in another decade of ns-3 development with new ideas and new contributors.
Tom Henderson
Affiliate Professor
University of Washington
Executive Director
ns-3 Consortium
June 2018