[Ns-developers] emulation use cases

Tom Henderson tomh at tomh.org
Wed Feb 11 07:01:48 PST 2009


Gustavo Carneiro wrote:
> 
> 
> 2009/1/15 Tom Henderson <tomh at tomh.org <mailto:tomh at tomh.org>>
> 
>     Craig is working on Tap device support for emulation, and some
>     questions have arisen about use cases and requirements to support,
>     so I thought I'd raise the issue on the list for any input people
>     might have.
> 
>     Presently, we have an emulation mode documented here:
>     http://www.nsnam.org/docs/manual.html#SEC59
>     it runs the simulator in real-time and allows nodes in a simulation
>     to emit packets that are bridged onto a physical device on the host
>     machine.  ns-3 packets are therefore emitted onto real links.  The
>     ns-3 device must be hand-configured with mac address and does not
>     presently support DHCP configuration of the address.
> 
>     I've suggested that the next priority would be to invert the
>     picture, to allow real hosts to emit packets onto ns-3 links.  The
>     main use case I have in mind is to allow users to interconnect
>     virtual machines such as OpenVZ containers over ns-3 links (mainly,
>     WiFi is of immediate interest).  It would also be possible to use
>     the simulator as a "black box" such as a "simulator in the loop"
>     testbed between real nodes or test equipment.
> 
>     To accomplish this, what is needed is to create tap devices on the
>     ns-3 host machine, and bridge these tap devices to some new kind of
>     ns-3 NetDevice that reads and writes from the tap device.
>      Essentially, this new ns-3 NetDevice would be receiving fully
>     formed layer-2 frames and bridging them onto our existing ns-3
>     NetDevice types.
> 
>     In this model, the ns-3 node that does this bridging would be kind
>     of like a ghost node, possibly with an Internet stack (maybe not).
>      It may be the case that a simulation/emulation would involve a mix
>     of ns-3 nodes and these special ghost nodes that exist for the
>     purpose only of hosting the virtual machine; in such a case, I would
>     envision that IP-level and above configuration of the mixed
>     environment would have to be done separately.
> 
>     I think that a framework to try to configure all of this from a
>     bird's eye view of both simulation and emulation portions is
>     possible, but would be a later phase of the effort (possibly a GSOC
>     project).
> 
>     Are there other suggestions for the above type of use case, or other
>     use cases for emulation that people would like to see prioritized?
> 
> 
> I was looking at this again (the manual), and I realize that I am 
> confused about something.
> 
> As far as I can tell, "tap" devices can be used to allow a userspace 
> simulation interact with applications running on the same kernel that 
> runs the simulator.  In this scenario no virtualization needs to be 
> employed at all.
> 
> On the other hand, in a virtualized environment I would expect the 
> virtualization environment to already provide the tools to create and 
> interconnect virtual devices to allow communication between guests or 
> between host and guests.  In this case I think NS-3 should not need to 
> create any tap device, and instead should just send/receive packets to 
> an existing device.  Therefore, what we need to use is just EmuNetDevice 
> again, not Tap.
> 
> However, the manual explicitly mentions a virtualization scenario as 
> motivation for Tap devices, which I think may work but EmuNetDevice may 
> also work and simpler, more efficient.
>  
> Am I missing something?

The scenario I'm interested in supporting is virtual machines such as 
OpenVz containers being interconnected by ns-3 networks, such that the 
packet coming to/from the container is sent/received from the ns-3 
NetDevice.  The container sends a packet out of its virtual device, 
which can be bound to a host's tap device, and ns-3 can be on the other 
end of the tap device, and the ns-3 NetDevice treats the packets as if 
they came from an ns-3 internet stack.

I can add some description in the manual to this to avoid future confusion.

- Tom


More information about the Ns-developers mailing list