Next:
4. The Class Simulator
Up:
The Manual (formerly Notes
Previous:
3.8 Class InstVar
Contents
Index
2
Simulator Basics
Subsections
4
. The Class Simulator
4
.
1
Simulator Initialization
4
.
2
Schedulers and Events
4
.
2
.
1
The List Scheduler
4
.
2
.
2
the heap scheduler
4
.
2
.
3
The Calendar Queue Scheduler
4
.
2
.
4
The Real-Time Scheduler
4
.
2
.
5
Precision of the scheduler clock used in ns
4
.
3
Other Methods
5
. Nodes and Packet Forwarding
5
.
1
Node Basics
5
.
2
Node Methods: Configuring the Node
5
.
3
Node Configuration Interface
5
.
4
The Classifier
5
.
4
.
1
Address Classifiers
5
.
4
.
2
Multicast Classifiers
5
.
4
.
3
MultiPath Classifier
5
.
4
.
4
Hash Classifier
5
.
4
.
5
Replicator
5
.
5
Routing Module and Classifier Organization
5
.
5
.
1
Routing Module
5
.
5
.
2
Node Interface
5
.
6
Commands at a glance
6
. Links: Simple Links
6
.
1
Instance Procedures for Links and SimpleLinks
6
.
2
Connectors
6
.
3
Object hierarchy
6
.
4
Commands at a glance
7
. Queue Management and Packet Scheduling
7
.
1
The C++ Queue Class
7
.
1
.
1
Queue blocking
7
.
1
.
2
PacketQueue Class
7
.
2
Example: Drop Tail
7
.
3
Different types of Queue objects
7
.
4
Commands at a glance
7
.
5
Queue/JoBS
7
.
5
.
1
The JoBS algorithm
7
.
5
.
1
.
1
Objective
7
.
5
.
1
.
2
Mechanisms
7
.
5
.
2
Configuration
7
.
5
.
2
.
1
Initial Setup
7
.
5
.
2
.
2
Creating the JoBS links
7
.
5
.
2
.
3
Marking the traffic
7
.
5
.
3
Tracing
7
.
5
.
4
Variables
7
.
5
.
4
.
1
JoBS objects
7
.
5
.
4
.
2
Marker objects
7
.
5
.
4
.
3
Demarker objects
7
.
5
.
5
Commands at a glance
7
.
5
.
5
.
1
JoBS objects
7
.
5
.
5
.
2
Marker objects
7
.
5
.
5
.
3
Demarker objects
8
. Delays and Links
8
.
1
The LinkDelay Class
8
.
2
Commands at a glance
9
. Differentiated Services Module in
ns
9
.
1
Overview
9
.
2
Implementation
9
.
2
.
1
RED queue in DiffServ module
9
.
2
.
2
Edge and core routers
9
.
2
.
3
Policy
9
.
3
Configuration
9
.
4
Commands at a glance
10
. Agents
10
.
1
Agent state
10
.
2
Agent methods
10
.
3
Protocol Agents
10
.
4
OTcl Linkage
10
.
4
.
1
Creating and Manipulating Agents
10
.
4
.
2
Default Values
10
.
4
.
3
OTcl Methods
10
.
5
Examples: Tcp, TCP Sink Agents
10
.
5
.
1
Creating the Agent
10
.
5
.
2
Starting the Agent
10
.
5
.
3
Processing Input at Receiver
10
.
5
.
4
Processing Responses at the Sender
10
.
5
.
5
Implementing Timers
10
.
6
Creating a New Agent
10
.
6
.
1
Example: A ``ping'' requestor (Inheritance Structure)
10
.
6
.
2
The
recv
() and
timeout
() Methods
10
.
6
.
3
Linking the ``ping'' Agent with OTcl
10
.
6
.
4
Using the agent through OTcl
10
.
7
The Agent API
10
.
8
Different agent objects
10
.
9
Commands at a glance
11
. Timers
11
.
1
C++ abstract base class TimerHandler
11
.
1
.
1
Definition of a new timer
11
.
1
.
2
Example: Tcp retransmission timer
11
.
2
OTcl Timer class
11
.
3
Commands at a glance
12
. Packet Headers and Formats
12
.
1
A Protocol-Specific Packet Header
12
.
1
.
1
Adding a New Packet Header Type
12
.
1
.
2
Selectively Including Packet Headers in Your Simulation
12
.
2
Packet Classes
12
.
2
.
1
The Packet Class
12
.
2
.
2
p_info Class
12
.
2
.
3
The hdr_cmn Class
12
.
2
.
4
The PacketHeaderManager Class
12
.
3
Commands at a glance
13
. Error Model
13
.
1
Implementation
13
.
2
Configuration
13
.
3
Multi-state error model
13
.
4
Commands at a glance
14
. Local Area Networks
14
.
1
Tcl configuration
14
.
2
Components of a LAN
14
.
3
Channel Class
14
.
3
.
1
Channel State
14
.
3
.
2
Example: Channel and classifier of the physical layer
14
.
3
.
3
Channel Class in C++
14
.
4
MacClassifier Class
14
.
5
MAC Class
14
.
5
.
1
Mac State
14
.
5
.
2
Mac Methods
14
.
5
.
3
Mac Class in C++
14
.
5
.
4
CSMA-based MAC
14
.
6
LL (link-layer) Class
14
.
6
.
1
LL Class in C++
14
.
6
.
2
Example: Link Layer configuration
14
.
7
LanRouter class
14
.
8
Other Components
14
.
9
LANs and
ns
routing
14
.
10
Commands at a glance
15
. The (Revised) Addressing Structure in NS
15
.
1
The Default Address Format
15
.
2
The Hierarchical Address Format
15
.
2
.
1
Default Hierarchical Setting
15
.
2
.
2
Specific Hierarchical Setting
15
.
3
Errors in setting address format
15
.
4
Commands at a glance
16
. Mobile Networking in ns
16
.
1
The basic wireless model in ns
16
.
1
.
1
Mobilenode: creating wireless topology
16
.
1
.
2
Creating Node movements
16
.
1
.
3
Network Components in a mobilenode
16
.
1
.
4
Different MAC layer protocols for mobile networking
16
.
1
.
4
.
1
802.11 MAC protocol
16
.
1
.
4
.
2
Preamble based TDMA protocol
16
.
1
.
5
Different types of Routing Agents in mobile networking
16
.
1
.
5
.
1
DSDV
16
.
1
.
5
.
2
DSR
16
.
1
.
5
.
3
TORA
16
.
1
.
5
.
4
AODV
16
.
1
.
5
.
5
PUMA
16
.
1
.
5
.
6
M-DART
16
.
1
.
6
Trace Support
16
.
1
.
7
Revised format for wireless traces
16
.
1
.
7
.
1
Explanation of new trace format
16
.
1
.
8
Generation of node-movement and traffic-connection for wireless scenarios
16
.
1
.
8
.
1
MobileNode Movement
16
.
1
.
8
.
2
Generating traffic pattern files
16
.
2
Extensions made to CMU's wireless model
16
.
2
.
1
wired-cum-wireless scenarios
16
.
2
.
2
MobileIP
16
.
3
802.11 MAC protocol
16
.
4
Lists of changes for merging code developed in older version of ns (2.1b5 or later) into the current version (2.1b8)
16
.
5
Commands at a glance
17
. Satellite Networking in
ns
17
.
1
Overview of satellite models
17
.
1
.
1
Geostationary satellites
17
.
1
.
2
Low-earth-orbiting satellites
17
.
2
Using the satellite extensions
17
.
2
.
1
Nodes and node positions
17
.
2
.
2
Satellite links
17
.
2
.
3
Handoffs
17
.
2
.
4
Routing
17
.
2
.
5
Trace support
17
.
2
.
6
Error models
17
.
2
.
7
Other configuration options
17
.
2
.
8
nam
support
17
.
2
.
9
Integration with wired and wireless code
17
.
2
.
10
Example scripts
17
.
3
Implementation
17
.
3
.
1
Use of linked lists
17
.
3
.
2
Node structure
17
.
3
.
3
Detailed look at satellite links
17
.
4
Commands at a glance
18
. Radio Propagation Models
18
.
1
Free space model
18
.
2
Two-ray ground reflection model
18
.
3
Shadowing model
18
.
3
.
1
Backgroud
18
.
3
.
2
Using shadowing model
18
.
4
Communication range
18
.
5
Commands at a glance
19
. Energy Model in ns
19
.
1
The C++ EnergyModel Class
19
.
2
The OTcl interface
20
. Directed Diffusion
20
.
1
What is Directed Diffusion?
20
.
2
The diffusion model in ns
20
.
3
Some mac issues for diffusion in ns
20
.
4
APIs for using filters in diffusion
20
.
5
Ping: an example diffusion application implementation
20
.
5
.
1
Ping Application as implemented in C++
20
.
5
.
2
Tcl APIs for the ping application
20
.
6
Changes required to add yr diffusion application to ns
20
.
7
Test-suites for diffusion
20
.
8
Commands at a glance
21
. XCP: eXplicit Congestion control Protocol
21
.
1
What is XCP?
21
.
2
Implementation of XCP in NS
21
.
2
.
1
Endpoints in XCP
21
.
2
.
2
XCP Router
21
.
2
.
3
XCP queue
21
.
3
XCP example script
21
.
4
Test-suites for XCP
21
.
5
Commands at a glance
22
. DelayBox: Per-Flow Delay and Loss
22
.
1
Implementation Details
22
.
2
Example
22
.
3
Commands at a Glance
23
. Changes made to the IEEE 802.15.4 Implementation in NS-2.31
23
.
1
Radio shutdown
23
.
2
Other changes
Tom Henderson 2011-11-05