Agents in C++ or OTcl?
Thu, 12 Mar 98 15:24:23 PST
> There are two flavors of simulation in ns: writing Agents in C++ as in
> the tcp related simulations and writing Agents in Otcl as in multicast
> related stuff. I personally prefer the former, but I'd like to hear
> some analysis from the experts, especially on the performance, memory
> consumption, debuging, etc.
A lot of how you divide the problem in ns appears to
be a matter of taste and style. There are some general
- In general, you should place objects related to
per packet activity in C++, simply for reasons of
speed. Per-packet processing via OTcl will make for
*veeerrrrryyy* slow simulations.
- Things to do with control, and control traffic,
such as dynamic routing can be easily done either
in C++ Or OTcl. (The DV routing, RTP, RLM, PIM,
various multicast routing protocols, etc. are
mostly in OTcl, and are examples of this type
of programming paradigm).
- Most people find themselves having a faster
turnaround time when prototyping in a scripted
language. So, (if you are that sort, or otherwise,
expect to run into that sort of people), place such
functionality in OTcl that you expect to play around
with a lot. In SRM, (the example I am most familiar
with), data flow and session message processing was
in C++, but we want to play with the timer algorithms,
scalable approaches to sending session messages,
different loss recovery approaches, etc., and so
these were done in OTcl.
Generally, performance is slow, and memory consumption is high
for OTcl code (I think Polly mentioned this as well); however,
the advantage is rapid prototyping, with the ability to flexibly
explore the protocol design space quickly.
The complexity of having two languages to work with makes
debugging non-trivial as is, but some hacky solutions are
possible. Check out the ns-debugging web page (off the main
ns web page) for tips on debugging.