AnnualTraining2016
Main Page - Roadmap - Summer Projects - Project Ideas - Developer FAQ - Tools - Related Projects
HOWTOs - Installation - Troubleshooting - User FAQ - Samples - Models - Education - Contributed Code - Papers
This is the wiki page for the ns-3 training sessions that were conducted from 13-14 June, 2016 in Seattle. For a list of all past training sessions, see Training.
Agenda
Monday June 13
The goal of this session is a comprehensive overview of the simulator (what we can fit into a day). The instructor is Tom Henderson. Slides and code are posted below.
Slides:
- ns-3-training-introduction-scope.pptx
- ns-3-training-waf-build-system.pptx
- ns-3-training-core-essentials.pptx
- ns-3-training-objects.pptx
- ns-3-training-emulation.pptx
- ns-3-training-nodes-stacks-devices.pptx
- ns-3-training-packets.pptx
- ns-3-training-tracing.pptx
- ns-3-training-visualization.pptx
Slides (single file):
Code:
- Unpack scripts.tar.bz2 to the scratch/ directory.
- Add the grid trace file to the scratch/ directory.
We will use the ns-3.25 release as the basis for the training.
Please plan to make it to the building by 8:30 so that you may be registered and so we may start at 9am.
Tuesday June 14
This consists of special topic tutorials:
- (09:00-10:30) Large-scale, distributed simulations with ns-3 (instructor: Peter Barnes) (slides)
- '(10:45-12:15) An introduction to the Direct Code Execution (DCE) environment, enabling users to use real application and Linux networking code in ns-3 (instructors: Tom Henderson and Hajime Tazaki) (slides)
- Lunch break
- (1:30-3:30) A survey of the LTE models, including model architecture, propagation models, LTE Radio Protocol Stack and EPC model. (instructors: Lorenza Giupponi and Biljana Bojovic) (slides)
- (3:45-5:45) Advanced wireless topics, including Wi-Fi and LTE/Wi-Fi coexistence. (instructor: Tom Henderson) (slides)
- (5:45-6:00) Debugging (slides)
Preparation
Nothing is strictly required, but working through the ns-3 tutorial should be helpful, if you haven't already.
You do not need to install anything to attend the training, but the below instructions are provided for those who may want to follow along.
Installation of ns-3 to your local system
Please see the Installation page on our wiki for per-system package requirements if you want to install ns-3, and follow instructions at this tutorial link on how to download ns-3.
Note that the minimal requirements for working from the command line are a recent C++ compiler (g++ or clang), and a Python (version 2) installation. The additional packages enable additional optional simulation features but can be skipped until needed.
Trying ns-3 on a Live ISO image
A 32-bit Ubuntu 14.04 Live DVD (ISO) is posted for download at this link. The ISO has prerequisite packages pre-installed and a recent copy of ns-3 source code.
You may want to use this ISO file with a virtual machine tool such as VMware or VirtualBox.
- sha1 checksum (sha1sum) of the ISO image: bad812908e8bfd569c710c5c59b3c082e2671ab7
- file size of the download: 3.2 GB
- username: ns-3
- password: ns-3
- recommended virtual machine resources (if you install to a VM): 40 GB HDD, 3 GB memory
This is a Live ISO image that can be booted repeatedly without saving state, or can be installed to a virtual or real drive. The Systemback utility was used to create the image, and can be used to install the system as well. To install, select the green icon in the panel to bring up the below dialog box, fill in the account information (for the system to be created) and then hit Next and follow the instructions.
Please read the README in the top level directory.
Additional files
Links to any additional example files produced for the training (outside of the ns-3 release) will be posted here.
Questions, Answers, and Comments
- How to use interactive shell feature of PyViz
- must install iPython (pip install ipython)
- How to use more complicated types as attribute values
- short answer: see how class ns3::Time is handled
- long answer: If the type can be created as an ns3::Object type, it can be stored in the Attribute system via types such as PointerValue, ObjectVectorValue, and ObjectMapValue. If it like a plain-old C++ class or struct, then there is a special macro that constructs this. As an example:
- class Time declared here: http://code.nsnam.org/ns-3-dev/file/d44748d98fe6/src/core/model/nstime.h#l102
- used as an Attribute here: http://code.nsnam.org/ns-3-dev/file/d44748d98fe6/src/csma/model/csma-channel.cc#l45
- How does this TimeValue get created? You need to define a Value class via a macro, an Accessor class via a macro, and Checker methods; see this example here: http://code.nsnam.org/ns-3-dev/file/d44748d98fe6/src/core/model/nstime.h#l957
- can packet tags of same type be added?
- PacketTag: No; ByteTag: Yes
- Comment/observation: the ns-3 release would benefit from more sophisticated (more complicated) Wi-Fi examples than the ones we have.
- Answer: we will work on this.