--HG-- rename : doc/manual/figures/emulated-channel.dia => doc/models/figures/emulated-channel.dia rename : doc/manual/figures/testbed.dia => doc/models/figures/testbed.dia rename : doc/manual/source/emulation-overview.rst => doc/models/source/emulation-overview.rst rename : doc/manual/source/internet-models.rst => doc/models/source/internet-models.rst rename : doc/manual/source/nodes-and-devices.rst => doc/models/source/network.rst rename : doc/manual/source/applications.rst => src/applications/doc/applications.rst rename : doc/manual/source/bridge.rst => src/bridge/doc/bridge.rst rename : doc/manual/source/click.rst => src/click/doc/click.rst rename : doc/manual/source/csma.rst => src/csma/doc/csma.rst rename : doc/manual/source/emu.rst => src/emu/doc/emu.rst rename : doc/manual/source/energy.rst => src/energy/doc/energy.rst rename : doc/manual/source/flow-monitor.rst => src/flow-monitor/doc/flow-monitor.rst rename : doc/manual/figures/internet-node-recv.dia => src/internet/doc/internet-node-recv.dia rename : doc/manual/figures/internet-node-send.dia => src/internet/doc/internet-node-send.dia rename : doc/manual/source/internet-stack.rst => src/internet/doc/internet-stack.rst rename : doc/manual/source/ipv4.rst => src/internet/doc/ipv4.rst rename : doc/manual/source/ipv6.rst => src/internet/doc/ipv6.rst rename : doc/manual/source/routing.rst => src/internet/doc/routing-overview.rst rename : doc/manual/figures/routing-specialization.dia => src/internet/doc/routing-specialization.dia rename : doc/manual/figures/routing.dia => src/internet/doc/routing.dia rename : doc/manual/source/tcp.rst => src/internet/doc/tcp.rst rename : doc/manual/figures/lte-transmission.png => src/lte/doc/lte-transmission.png rename : doc/manual/source/lte.rst => src/lte/doc/lte.rst rename : doc/manual/source/mesh.rst => src/mesh/doc/mesh.rst rename : doc/manual/source/distributed.rst => src/mpi/doc/distributed.rst rename : doc/manual/figures/animation-dumbbell.pdf => src/netanim/doc/animation-dumbbell.pdf rename : doc/manual/figures/animation-dumbbell.png => src/netanim/doc/animation-dumbbell.png rename : doc/manual/source/animation.rst => src/netanim/doc/animation.rst rename : doc/manual/figures/buffer.dia => src/network/doc/buffer.dia rename : doc/manual/source/nodes-and-devices-overview.rst => src/network/doc/network-overview.rst rename : doc/manual/figures/node.dia => src/network/doc/node.dia rename : doc/manual/figures/packet.dia => src/network/doc/packet.dia rename : doc/manual/source/packets.rst => src/network/doc/packets.rst rename : doc/manual/source/simple.rst => src/network/doc/simple.rst rename : doc/manual/source/sockets-api.rst => src/network/doc/sockets-api.rst rename : doc/manual/figures/sockets-overview.dia => src/network/doc/sockets-overview.dia rename : doc/manual/source/openflow-switch.rst => src/openflow/doc/openflow-switch.rst rename : doc/manual/source/point-to-point.rst => src/point-to-point/doc/point-to-point.rst rename : doc/manual/source/propagation.rst => src/propagation/doc/propagation.rst rename : doc/manual/source/statistics.rst => src/stats/doc/statistics.rst rename : doc/manual/source/tap.rst => src/tap-bridge/doc/tap.rst rename : doc/manual/figures/auvmobility-classes.dia => src/uan/doc/auvmobility-classes.dia rename : doc/manual/source/uan.rst => src/uan/doc/uan.rst rename : doc/manual/figures/WifiArchitecture.dia => src/wifi/doc/WifiArchitecture.dia rename : doc/manual/figures/snir.dia => src/wifi/doc/snir.dia rename : doc/manual/source/wifi.rst => src/wifi/doc/wifi.rst rename : doc/manual/figures/WimaxArchitecture.dia => src/wimax/doc/WimaxArchitecture.dia rename : doc/manual/source/wimax.rst => src/wimax/doc/wimax.rst
77 lines
3.5 KiB
ReStructuredText
77 lines
3.5 KiB
ReStructuredText
.. include:: replace.txt
|
|
|
|
Emulation Overview
|
|
------------------
|
|
|
|
|ns3| has been designed for integration into testbed and virtual machine
|
|
environments. We have addressed this need by providing two kinds of net devices.
|
|
The first kind, which we call an ``Emu`` ``NetDevice`` allows |ns3| simulations
|
|
to send data on a "real" network. The second kind, called a ``Tap``
|
|
``NetDevice`` allows a "real" host to participate in an |ns3| simulation as if
|
|
it were one of the simulated nodes. An |ns3| simulation may be constructed with
|
|
any combination of simulated, ``Emu``, or ``Tap`` devices.
|
|
|
|
One of the use-cases we want to support is that of a testbed. A concrete example
|
|
of an environment of this kind is the ORBIT testbed. ORBIT is a laboratory
|
|
emulator/field trial network arranged as a two dimensional grid of 400 802.11
|
|
radio nodes. We integrate with ORBIT by using their "imaging" process to load
|
|
and run |ns3| simulations on the ORBIT array. We use our ``Emu`` ``NetDevice``
|
|
to drive the hardware in the testbed and we can accumulate results either using
|
|
the |ns3| tracing and logging functions, or the native ORBIT data gathering
|
|
techniques. See `<http://www.orbit-lab.org/>`_ for details on the ORBIT
|
|
testbed.
|
|
|
|
A simulation of this kind is shown in the following figure:
|
|
|
|
.. _testbed:
|
|
|
|
.. figure:: figures/testbed.*
|
|
|
|
Example Implementation of Testbed Emulation.
|
|
|
|
You can see that there are separate hosts, each running a subset of a "global"
|
|
simulation. Instead of an |ns3| channel connecting the hosts, we use real
|
|
hardware provided by the testbed. This allows |ns3| applications and protocol
|
|
stacks attached to a simulation node to communicate over real hardware.
|
|
|
|
We expect the primary use for this configuration will be to generate repeatable
|
|
experimental results in a real-world network environment that includes all of
|
|
the |ns3| tracing, logging, visualization and statistics gathering tools.
|
|
|
|
In what can be viewed as essentially an inverse configuration, we allow "real"
|
|
machines running native applications and protocol stacks to integrate with an
|
|
|ns3| simulation. This allows for the simulation of large networks connected to
|
|
a real machine, and also enables virtualization. A simulation of this kind is
|
|
shown in the following figure:
|
|
|
|
.. _emulated-channel:
|
|
|
|
.. figure:: figures/emulated-channel.*
|
|
|
|
Implementation overview of emulated channel.
|
|
|
|
Here, you will see that there is a single host with a number of virtual machines
|
|
running on it. An |ns3| simulation is shown running in the virtual machine shown
|
|
in the center of the figure. This simulation has a number of nodes with
|
|
associated |ns3| applications and protocol stacks that are talking to an |ns3|
|
|
channel through native simulated |ns3| net devices.
|
|
|
|
There are also two virtual machines shown at the far left and far right of the
|
|
figure. These VMs are running native (Linux) applications and protocol stacks.
|
|
The VM is connected into the simulation by a Linux Tap net device. The user-mode
|
|
handler for the Tap device is instantiated in the simulation and attached to a
|
|
proxy node that represents the native VM in the simulation. These handlers allow
|
|
the Tap devices on the native VMs to behave as if they were |ns3| net devices in
|
|
the simulation VM. This, in turn, allows the native software and protocol suites
|
|
in the native VMs to believe that they are connected to the simulated |ns3|
|
|
channel.
|
|
|
|
We expect the typical use case for this environment will be to analyze the
|
|
behavior of native applications and protocol suites in the presence of large
|
|
simulated |ns3| networks.
|
|
|
|
.. toctree::
|
|
|
|
emu
|
|
tap
|