Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
branch: master
Fetching contributors…

Cannot retrieve contributors at this time

514 lines (444 sloc) 18.12 kB
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE>ns TODO list</TITLE>
<!-- Changed by: Sandeep Bajaj, 24-Apr-1998 -->
<META NAME="GENERATOR" CONTENT="Mozilla/3.01Gold (X11; U; SunOS 4.1.3_U1 sun4m) [Netscape]">
</HEAD>
<BODY>
<P><!-- @(#) $Header: /cvsroot/nsnam/ns-2/TODO.html,v 1.32 2003/08/06 18:21:53 haldar Exp $--><!-- Changed by: Sandeep Bajaj, 31-Mar-1997 --></P>
<H1>ns: TODO list</H1>
<P><!--
This ChangeLog is updated in the reverse order
with the most recent changes coming first.
--></P>
<p><i>
The person who recommends the todo work does not necessarily do them
by him/herself.
<p></i>
<p>
List of topics:
Using hash classifier in hierarchical nodes
introduction,
code cleanup,
interfaces,
queueing,
full-tcp,
validation,
documentation,
research results,
release,
logging,
test suite for error models
<hr>
<ul>
<hr>
<p>
<li>
<b>introduction</b>
Here's the format: a boldface set of keywords about what
part of ns is relevant,
text describing what's going on,
then a signature and date.
<em>(<a href="http://www.isi.edu/~johnh/">[johnh]</a>
Thu Jun 17 18:04:37 PDT 1999)</em>
<hr>
<!-----add stuff AFTER here----------------------------->
<p><li>
<b>Tcp-int</b>
<br>Need to fix tcp-int. see tcp-int.tcl under tcl/ex. Also need to add a test-suite for same. Currently no testcase which is not good for code that got merged into ns way back in '97.
<p><li>
<b>Documentation</b>
<br>Add doc for event-tracing.
<br>Convert README file in PGM into doc for PGM for ns-manual.
<em>(<a href="http://www.isi.edu/~haldar">[haldar]</a>
Mon Jul 22 11:51:54 PDT 2002</em>
<p><li>
<b>wireless code</b>
<br> Cleanup of wireless code; move out from ns-lib into under mobility.
move aodv.tcl from ~ns/aodv to tcl/mobility. cleanup for rtg-module much in the same way it 's been done for wired nodes. remove redundant codes in ns-mobilenode.tcl.
<em>(<a href="http://www.isi.edu/~haldar">[haldar]</a>
Wed Jun 12 09:08:41 PDT 2002</em>
<p><li>
<B>Port mac/null</B>
<BR>Look at the <A HREF="http://www.isi.edu/nsnam/archive/ns-users/webarch/2000/msg05314.html">mailing list archive</A> for porting information. Basically the code needs to be added to the current ns version and a test script needs to be written for it.
<EM>(<A HREF="mailto:mehringe@isi.edu">[John Mehringer]</A>
Thu Nov 9 17:27:57 EST 2000)
</EM>
<p><li>
<b>Node Structure:</b>
<ul>
<li> New node structure should be documented.
<li> For this purpose, Node::*[nodetype_] instprocs
should be cleaned up: the base Node should provide a set of
customization interfaces, and each add-on routing module
be an independent object which uses these interfaces to
customize classifier settings inside the node;
<br>
Also, numerous Simulator condition checks should be moved to
the initialization process of individual modules instead of
staying in the Simulator;
<li> We should get rid of all wireless code that is _really_
for backward compatibility only, and move them to a separate
directory instead of polluting tcl/lib and so on.
</ul>
<em>(<a href="http://catarina.usc.edu/~haoboy/">[haoboy]</a>
Thu Aug 24 14:25:08 PDT 2000)</em>
<p>
<li>
<b>Queueing:</b>
Change the Drop-Tail queue size so that it includes the
packet currently being transmitted, and add a
backward-compatibility mode so that we don't break all of the
validation tests. This will result in Drop-Tail and RED
queues having the same size in packets (now they are off by one
packet).
<em> (<a href="http://www.aciri.org/floyd/">[floyd]</a>
Tue Jul 4 15:13:34 PDT 2000</em>
<p>
<li>
<b> Test suite for error models</b>: Currently we have 8+ different
error models in ns. They seem to be used frequently but there is no
test suite to guarantee that they function correctly in every release.
What's more, there is little documentation about their expected behavior,
especially for the newer error models, e.g. two state. What we need is
first a test suite for all error models, then a fairly detailed doc on
their expected behavior. This will save users' time and help them
customize
these models for their own purpose.
<em>(<a href="http://www.isi.edu/~haoboy">[haoboy]</a>
Mon Nov 29 16:31:59 PST 1999)</em>
<p>
<li>
<b>Using hash classifier in hierarchical node</b>
The classifier cannot be used because of some strange problem
with the hash table. It seems like there is either a bug
with the Tcl hash function or the way we use it.
<em>(<a href="http://www.isi.edu/~salehi/">[salehi]</a>
Thu Sep 30 15:30:37 PDT 1999)</em>
<p>
<p>
<li>
<b>gen-map update</b>
$ns gen-map needs a cleanup + adding lan support.
<em>(<a href="mailto:yuri@isi.edu">[yuri]</a>
Thu Sep 9 12:13:41 PDT 1999)</em>
<p>
<li>
<b>This looks like a bug to look into</b>
After I edited mobility/scene/cbr-50-20-4-512 to replace all
<pre>
$cbr_(xx) set packetSize_ 512
</pre>
with
<pre>
$cbr_(xx) set packetSize_ 210
</pre>
and tried to re-run the test-suite-wireless-gridkeeper/dsdv,
ns got into a dead loop in DSDV_Agent::processUpdate() right
where the XXX-ed comment says it might:
<pre>
while ((queued_p = rte.q->deque()))
// XXX possible loop here
// while ((queued_p = rte.q->deque()))
// Only retry once to avoid looping
// for (int jj = 0; jj < rte.q->length(); jj++){
// queued_p = rte.q->deque();
recv(queued_p, 0); // give the packets to ourselves to forward
// }
delete rte.q;
rte.q = 0;
table_->AddEntry(rte); // record the now zero'd queue
</pre>
Yet it works with packetSize_ set to 512.
<em>(<a href="mailto:yuri@isi.edu">[yuri]</a>
Thu Aug 5 15:58:36 PDT 1999)</em>
<p>
<li> <strong>code cleanup, interfaces</strong>
<b>Aligning bound variable names</b>
[ns3?]
Aligning bound variable names in OTcl and C++, where possible
(change the C++ name, not the OTcl name).
<em>(<a href="http://www.cs.berkeley.edu/~tomh">[tomh]</a>
Jul 1 19:19:00 PDT 1999)</em>
<p>
<li>
<b>queueing</b>
Adding FRED, from the contributed code web page, into the
main NS distribution.
<em>(<a href="http://www.aciri.org/floyd/">[floyd]</a>
Thu May 13 14:34:00 PDT 1999)</em>
<p>
<li>
<b>queueuing?</b>
Adding RIO into the main NS distribution. (The original authors
of RIO did many simulations in NS, so I would assume that they
have an implementation somewhere...)
<em>(<a href="http://www.aciri.org/floyd/">[floyd]</a>
Thu May 13 14:34:00 PDT 1999)</em>
<p>
<li>
<b>one-way-tcp, full-tcp</b>
Implement the "careful" variant of bug-fix as
described in rfc2582.
See ns-users messages subject "Bug in TCPReno ?..."
posted September 1999.
<em>(<a href="http://www.isi.edu/~johnh/">[johnh]</a>
Fri Sep 24 10:00:10 PDT 1999)</em>
<p>
<li>
<b>full-tcp, validation</b>
Validating ECN functionality for full-TCP (and, in the process,
updating full-TCP to make sure that ECN functions the same in full-TCP
as in one-way TCP).
<em>(<a href="http://www.aciri.org/floyd/">[floyd]</a>
Thu May 13 14:34:00 PDT 1999)</em>
<p>
<li>
<b>full-tcp, validation</b>
Replicating all of the TCP validation tests to make sure that
they work as we would like with full-TCP also. (There are a number
of things that are tested in the one-way validation tests, but that
are not verified in two-way (i.e., full-TCP) validation tests.
<em>(<a href="http://www.aciri.org/floyd/">[floyd]</a>
Thu May 13 14:34:00 PDT 1999)</em>
<p>
<li>
<b>validation</b>
Adding either short *.txt files, or longer documents, for each
validation test that does not now have one, so that users can
tell reasonably easily what is and is not tested in each validation
test.
<em>(<a href="http://www.aciri.org/floyd/">[floyd]</a>
Thu May 13 14:34:00 PDT 1999)</em>
<p>
<li>
<b>documentation, validation</b>
Standardize documentation for valdation tests.
<em>(<a href="http://www.isi.edu/~johnh/">[johnh]</a>
Thu Jun 17 18:04:37 PDT 1999)</em>
<p>
<li>
<b>validation</b>
Expanding the validation tests for all of the various scheduling
algorithms.
<em>(<a href="http://www.aciri.org/floyd/">[floyd]</a>
Thu May 13 14:34:00 PDT 1999)</em>
<p>
<li>
<b>research results, validation</b>
More simulation scripts on-line somewhere. (Has everyone in the
VINT project made all of the simulation scripts for all of the
simulations that they have writted papers about publically available,
so that readers can easily reproduce those simulations themselves?)
<em>(<a href="http://www.aciri.org/floyd/">[floyd]</a>
Thu May 13 14:34:00 PDT 1999)</em>
<p>
<li>
<b>documentation</b>
Better document trace file format
(both ns output trace)
and the 32-bit integer thing.
(A very FAQ.)
<em>(<a href="http://www.isi.edu/~johnh/">[johnh]</a>
Thu Jun 17 18:04:37 PDT 1999)</em>
<p>
<li>
<b>documentation</b>
Describe the ns programming model (event driven and the IO model).
<em>(<a href="http://www.isi.edu/~johnh/">[johnh]</a>Wed Sep 8 13:38:19 PDT 1999)</em>
<p>
<li>
<b>release, allinone</b>
Allinone should add tcl-debug
and update dmalloc.
<em>(<a href="http://www.isi.edu/~johnh/">[johnh]</a>Thu Nov 9 10:01:41 PST 2000)</em>
<p>
<li>
<b>logging</b>
Trace output is a mess. There are currently two different formats
(wired and wireless), neither of which is easily extnesible.
Switching to something like what nam uses seems like a win.
<em>(<a href="http://www.isi.edu/~johnh/">[johnh]</a>Fri Aug 27 17:24:44 PDT 1999)</em>
<p>
<li>
<b>full-tcp, application APIs</b>
We need to compare the ns full-tcp with the south-bay full-tcp
in terms of corner cases and APIs (i.e., with the cisco http models).
<em>(<a href="http://www.isi.edu/~johnh/">[johnh]</a>Mon Aug 30 15:17:59 PDT 1999)</em>
<p>
<li>
<b>queueing</b>
Make sure that all ns constructs (1-way and full-tcp, queueing protocols)
have both packet and byte-oriented modes and that they are selected consistently.
<em>(<a href="http://www.isi.edu/~johnh/">[johnh]</a>Mon Aug 30 15:20:00 PDT 1999)</em>
<p>
<li>
<b>emulation</b>
merge nse into ns, have emulation controled by a configure option
(--with-emulation or something).
<em>(<a href="http://www.isi.edu/~johnh/">[johnh]</a>Thu Oct 14 10:25:47 PDT 1999)</em>
<p>
<li>
<b>debugging</b>
Insure that gen-map works correctly with lans and wireless.
<em>(<a href="http://www.isi.edu/~johnh/">[johnh]</a>
Fri Sep 3 21:26:38 PDT 1999)</em>
<p>
<li>
<b>test suites, error models</b>
Create tests suites for the error models.
<em>(<a href="http://www.isi.edu/~johnh/">[johnh]</a>
Wed Nov 24 13:20:55 PST 1999)</em>
<p>
<li>
<b>routing</b>
Add source routing to ns.
Suggested by several people, including ashish.
Could possibly start with MPLS contributed code?
<em>(<a href="http://www.isi.edu/~johnh/">[johnh]</a>
Mon Dec 20 15:57:11 PST 1999)</em>
<p>
<li>
<b>optimization, routing, classifiers</b>
An optimization in classifier sizing:
When Polly mentioned that Classifiers just double their routing
tables when the currently allocated space is exceeded, I thought it
was a bug: Classifiers normally are populated when all nodes are
created, which means that we know what the routing size will be and
can give Classifiers a hint, so we don't need to double.
<em>(<a href="http://www.isi.edu/~johnh/">[johnh]</a>
Tue Dec 21 10:25:56 PST 1999
)</em>
<p>
<li>
<b>topology generation</b>
Contributed topology generators to possibly integrate
from Graham Phillips &lt;graham@ISI.EDU&gt;:
I've written some topology generator programs that the ns
community is more than welcome to use. These programs are
reasonably mature and I've used them over the past year
while preparing a sigcomm paper about multicast trees.
<p>
The programs essentially create and manipulate Standford Graph
Base topology files, but there are also programs for converting from
1) tiers to SGB, and
2) ISI's mbone collection format to SGB.
Obviously the ns community would use the existing SGB to ns
converter to create the appropriate ns topologies.
<p>
The basic idea was to widen the range of real and artificial
topologies that might be constructed. All utilities and
documentation are available
from <a href="http://www-scf.usc.edu/~grahamph/contrib/index.html">http://www-scf.usc.edu/~grahamph/contrib/index.html</a>.
<p>
<em>(<a href="http://www.isi.edu/~johnh/">[johnh]</a>
Tue Dec 21 10:30:47 PST 1999)</em>
<p>
<li>
<b>tracing, visualization</b>
Need to review MAC-layer tracing, support tracing at multiple levels.
<em>(<a href="http://www.isi.edu/~johnh/">[johnh]</a>
Tue Dec 21 10:50:34 PST 1999)</em>
<p>
<li>
<b>binding</b> [ns3?]
We need to clean up inconsistent binding of variables
(but this is hard to do while keeping backwards compatibility).
<pre>
Date: Fri, 23 Jul 1999 17:37:04 +0100 (BST)
From: Lloyd Wood <L.Wood@surrey.ac.uk>
In:
http://www-mash.cs.berkeley.edu/dist/archive/ns-users/9906/0304.html
http://www-mash.cs.berkeley.edu/dist/archive/ns-users/9906/0313.html
I grumbled about consistent use of bind, so that OTcl and C++ users
can talk about the same variables and you don't have to go hunting for
the bind statement to see what maps to what when you're working across
the divide.
The thing is, once you start going a bit deeper into the ns code,
however reluctantly, there's a second level of confusion. A search on
'return ' in headers for member functions returning variables produces
rather similar results for bind; almost all are obvious and sensibly
mapped: blah() to blah_, but the odd thing like:
tcp.h: int& flags() { return (tcp_flags_); }
rtp.h: u_int16_t& flags() { return (flags_); }
(or
ip.h: int& flowid() { return (fid_); }
address.h: inline int portshift() {return PortShift_;}
address.h: inline int portmask() {return PortMask_;}
packet.h: inline double& timestamp() { return (ts_); } )
can really throw you for a loop and complicate digging up responsible
bits of code affected by changes.
</pre>
<em>(<a href="http://www.isi.edu/~johnh/">[johnh]</a>
Tue Jan 4 10:55:56 PST 2000)</em>
<p>
<li>
<b>routing, scaling</b>
Should reimplement algorithm routing solely in C++.
<em>(<a href="http://www.isi.edu/~johnh/">[johnh]</a>
Wed Jan 19 07:42:32 PST 2000)</em>
<p>
<li>
<b>mixed-mode, scaling</b>
Should check, change code so that packets can stay completely
in C++ when being forwarded between regions in mixed-model simulations.
<em>(<a href="http://www.isi.edu/~johnh/">[johnh]</a>
Wed Jan 19 07:46:49 PST 2000)</em>
<p>
<li> <b>TCP</b> Check the TCP reset function.
From email with "Subject: Re: TCP reset bug" and
"Subject: question about TCPAgent reset()" on the
ns-users mailing list.
<em> (<a href="http://www.aciri.org/floyd/">[floyd]</a>
Fri Feb 25 09:06:59 PST 2000) </em>
<p>
<li> <b>one-way TCP</b> Deal with the issue of segment size vs.
header size. From email on the ns-users mailing list.
<em> (<a href="http://www.aciri.org/floyd/">[floyd]</a>
Fri Feb 25 09:06:59 PST 2000) </em>
<p>
<li> <b>documentation</b> Make sure that documentation includes
all variables in ns-default.tcl.
<em> (<a href="http://www.aciri.org/floyd/">[floyd]</a>
Fri Feb 25 09:06:59 PST 2000) </em>
<p>
<li> <b>validation</b> Suppress "using backward
compatibility mode" message during *-v1.tcl validation tests?
Correct procedures for V1 validation tests that are not run:
e.g., test cbqForOld in "./test-all-cbq-v1".
From email on "Subject: Re: a validation question" on the ns-users
mailing list.
<em> (<a href="http://www.aciri.org/floyd/">[floyd]</a>
Fri Feb 25 09:06:59 PST 2000) </em>
<p>
<li> <b>probability distributions</b> Add validation tests.
<em> (<a href="http://www.aciri.org/floyd/">[floyd]</a>
Fri Feb 25 09:06:59 PST 2000) </em>
<p>
<li>
<b>LANs</b>
Make LAN nodes be generated with [$ns node] and node-config
rather than special APIs.
<em>(<a href="http://www.isi.edu/~johnh/">[johnh]</a>
Tue Jun 20 17:19:27 PDT 2000)</em>
<p>
<li>
<b>SRM/event tracing</b>
SRM's tcl tracing code should use real event tracing
(which should include tcl support),
not the current hack (see srm.tcl for commands "$self evTrace Q NTIMER").
<em>(<a href="http://www.isi.edu/~johnh/">[johnh]</a>
Wed Jul 24 10:41:06 PDT 2002)</em>
</ul>
<H1>DONE list</H1>
These things have been completed:
<ul>
<p>
<li>
<b>hier addressing</b>
str2addr in address.cc should do some error checking
to insure that fields are not larger than they should be.
<em>(<a href="http://www.isi.edu/~johnh/">[johnh]</a>
Mon Oct 30 22:52:32 PST 2000); completed by Padma in 2001</em>
</ul>
Jump to Line
Something went wrong with that request. Please try again.