The ns Manual (formerly ns Notes and Documentation)1 - NM Lab at ...

The ns Manual (formerly ns Notes and Documentation)1 - NM Lab at ... The ns Manual (formerly ns Notes and Documentation)1 - NM Lab at ...

nmlab.korea.ac.kr
from nmlab.korea.ac.kr More from this publisher
12.07.2015 Views

18 Radio Propagation Models 17718.1 Free space model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17718.2 Two-ray ground reflection model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17818.3 Shadowing model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17818.3.1 Backgroud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17818.3.2 Using shadowing model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18018.4 Communication range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18018.5 Commands at a glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18119 Energy Model in ns 18219.1 The C++ EnergyModel Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18219.2 The OTcl interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18320 Directed Diffusion 18420.1 What is Directed Diffusion? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18420.2 The diffusion model in ns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18420.3 Some mac issues for diffusion in ns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18520.4 APIs for using filters in diffusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18620.5 Ping: an example diffusion application implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18620.5.1 Ping Application as implemented in C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18620.5.2 Tcl APIs for the ping application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18720.6 Changes required to add yr diffusion application to ns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18720.7 Test-suites for diffusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18920.8 Commands at a glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18921 XCP: eXplicit Congestion control Protocol 19121.1 What is XCP? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19121.2 Implementation of XCP in NS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19221.2.1 Endpoints in XCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19221.2.2 XCP Router . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19321.2.3 XCP queue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19321.3 XCP example script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19421.4 Test-suites for XCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19721.5 Commands at a glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19722 DelayBox: Per-Flow Delay and Loss 19822.1 Implementation Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19822.2 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19922.3 Commands at a Glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20023 Changes made to the IEEE 802.15.4 Implementation in NS-2.31 20223.1 Radio shutdown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20223.2 Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203III Support 20424 Debugging ns 20524.1 Tcl-level Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20524.2 C++-Level Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20524.3 Mixing Tcl and C debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20624.4 Memory Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20724.4.1 Using dmalloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20724.4.2 Memory Conservation Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20824.4.3 Some statistics collected by dmalloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2085

24.5 Memory Leaks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20824.5.1 OTcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20924.5.2 C/C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20925 Mathematical Support 21025.1 Random Number Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21025.1.1 Seeding The RNG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21125.1.2 OTcl Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21325.1.3 C++ Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21425.2 Random Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21525.3 Integrals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21625.4 ns-random . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21725.5 Some mathematical-support related objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21825.6 Commands at a glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21826 Trace and Monitoring Support 22026.1 Trace Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22026.1.1 OTcl Helper Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22126.2 Library support and examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22226.3 The C++ Trace Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22426.4 Trace File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22526.5 Packet Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22726.6 Queue Monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22826.7 Per-Flow Monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23026.7.1 The Flow Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23026.7.2 Flow Monitor Trace Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23026.7.3 The Flow Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23126.8 Commands at a glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23127 Test Suite Support 23427.1 Test Suite Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23427.2 Write a Test Suite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23428 ns Code Styles 23728.1 Indentation style . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23728.2 Variable Naming Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23728.3 Miscellaneous . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237IV Routing 23929 Unicast Routing 24029.1 The Interface to the Simulation Operator (The API) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24029.2 Other Configuration Mechanisms for Specialised Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24129.3 Protocol Specific Configuration Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24229.4 Internals and Architecture of Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24329.4.1 The classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24329.4.2 Interface to Network Dynamics and Multicast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24729.5 Protocol Internals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24829.6 Unicast routing objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24929.7 Commands at a glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2496

18 Radio Propag<strong>at</strong>ion Models 17718.1 Free space model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17718.2 Two-ray ground reflection model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17818.3 Shadowing model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17818.3.1 Backgroud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17818.3.2 Using shadowing model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18018.4 Communic<strong>at</strong>ion range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18018.5 Comm<strong>and</strong>s <strong>at</strong> a glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18119 Energy Model in <strong>ns</strong> 18219.1 <strong>The</strong> C++ EnergyModel Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18219.2 <strong>The</strong> OTcl interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18320 Directed Diffusion 18420.1 Wh<strong>at</strong> is Directed Diffusion? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18420.2 <strong>The</strong> diffusion model in <strong>ns</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18420.3 Some mac issues for diffusion in <strong>ns</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18520.4 APIs for using filters in diffusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18620.5 Ping: an example diffusion applic<strong>at</strong>ion implement<strong>at</strong>ion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18620.5.1 Ping Applic<strong>at</strong>ion as implemented in C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18620.5.2 Tcl APIs for the ping applic<strong>at</strong>ion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18720.6 Changes required to add yr diffusion applic<strong>at</strong>ion to <strong>ns</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18720.7 Test-suites for diffusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18920.8 Comm<strong>and</strong>s <strong>at</strong> a glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18921 XCP: eXplicit Congestion control Protocol 19121.1 Wh<strong>at</strong> is XCP? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19121.2 Implement<strong>at</strong>ion of XCP in NS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19221.2.1 Endpoints in XCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19221.2.2 XCP Router . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19321.2.3 XCP queue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19321.3 XCP example script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19421.4 Test-suites for XCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19721.5 Comm<strong>and</strong>s <strong>at</strong> a glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19722 DelayBox: Per-Flow Delay <strong>and</strong> Loss 19822.1 Implement<strong>at</strong>ion Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19822.2 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19922.3 Comm<strong>and</strong>s <strong>at</strong> a Glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20023 Changes made to the IEEE 802.15.4 Implement<strong>at</strong>ion in NS-2.31 20223.1 Radio shutdown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20223.2 Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203III Support 20424 Debugging <strong>ns</strong> 20524.1 Tcl-level Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20524.2 C++-Level Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20524.3 Mixing Tcl <strong>and</strong> C debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20624.4 Memory Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20724.4.1 Using dmalloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20724.4.2 Memory Co<strong>ns</strong>erv<strong>at</strong>ion Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20824.4.3 Some st<strong>at</strong>istics collected by dmalloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2085

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!