--- a/CHANGES.html Sun Sep 14 11:39:58 2008 -0700
+++ b/CHANGES.html Sun Sep 14 11:40:10 2008 -0700
@@ -47,6 +47,7 @@
<h1>changes from ns-3.1 to ns-3.2</h1>
<h2>new API:</h2>
+<ul>
<li>26-08-2008; changeset
<a href="http://code.nsnam.org/ns-3-dev/rev/5aa65b1ea001">5aa65b1ea001</a></li>
@@ -57,7 +58,6 @@
events. Allows for pacing the simulation clock at 1x real-time.
</li>
</ul>
-</li>
<li>26-08-2008; changeset
@@ -68,11 +68,11 @@
multithreaded simulator implementation.
</li>
</ul>
-</li>
+</ul>
<h2>new API in existing classes:</h2>
+<ul>
-<ul>
<li>01-08-2008; changeset
<a href="http://code.nsnam.org/ns-3-dev/rev/a18520551cdf">a18520551cdf</a></li>
<ul>
@@ -81,9 +81,10 @@
mostly for internal use.
</ul>
</li>
+
</ul>
-
<h2>changes to existing API:</h2>
+<ul>
<li>05-09-2008; changeset
<a href="http://code.nsnam.org/ns-3-dev/rev/aa1fb0f43571">aa1fb0f43571</a></li>
@@ -97,9 +98,7 @@
PointToPointNetDevice::SetFrameSize for a detailed description.
</li>
</ul>
-</li>
-<ul>
<li>25-08-2008; changeset
<a href="http://code.nsnam.org/ns-3-dev/rev/e5ab96db540e">e5ab96db540e</a></li>
<ul>
@@ -124,7 +123,6 @@
of their SetReceiveCallback and SetPromiscReceiveCallback methods.
</li>
</ul>
-</li>
<li>04-08-2008; changeset
@@ -144,8 +142,6 @@
issues and solution.
</li>
</ul>
-</li>
-
<li>21-07-2008; changeset
<a href="
@@ -174,7 +170,6 @@
when the m_promiscRxCallback is called.
</li>
</ul>
-</li>
<li>03-07-2008; changeset
@@ -205,8 +200,6 @@
</pre>
</li>
</ul>
-</li>
-
<li>03-07-2008; changeset
<a href="
@@ -227,14 +220,15 @@
</li>
</ul>
</li>
+
</ul>
-
<h2>changed behavior:</h2>
<ul>
<li>07-09-2008; changeset
<a href="http://code.nsnam.org/ns-3-dev/rev/5d836ab1523b">5d836ab1523b</a></li>
<ul>
+
<li>
Implement a finite receive buffer for TCP<br>
The native TCP model in TcpSocketImpl did not support a finite receive buffer.
@@ -264,13 +258,11 @@
will finally ACK the probe byte, and update its advertised window appropriately.
</li>
</ul>
-
See
<a href="http://www.nsnam.org/bugzilla/show_bug.cgi?id=239"> bug 239 </a> for
more.
</li>
</ul>
-</li>
<li>07-09-2008; changeset
<a href="http://code.nsnam.org/ns-3-dev/rev/7afa66c2b291">7afa66c2b291</a></li>
@@ -286,7 +278,6 @@
more.
</li>
</ul>
-</li>
<li> 28-07-2008; changeset
<a href="http://code.nsnam.org/ns-3-dev/rev/6f68f1044df1">6f68f1044df1</a>
@@ -298,8 +289,8 @@
instability in neighbor detection.
</ul>
</li>
+
</ul>
-
</body>
</html>
--- a/RELEASE_NOTES Sun Sep 14 11:39:58 2008 -0700
+++ b/RELEASE_NOTES Sun Sep 14 11:40:10 2008 -0700
@@ -3,27 +3,30 @@
This file contains ns-3 release notes (most recent releases first).
+All of the ns-3 documentation is accessible from the ns-3 website:
+http://www.nsnam.org
+including tutorials:
+http://www.nsnam.org/tutorials.html
+
Release 3.2 (pending)
=====================
Availability
------------
-
This release is immediately available from:
http://www.nsnam.org/releases/ns-3.2.tar.bz2
-What is ns-3 ?
---------------
+Supported platforms
+-------------------
+ns-3.2 has been tested on the following platforms:
+ - linux x86 gcc 4.2, 4.1, and, 3.4.6.
+ - linux x86_64 gcc 4.3.2, 4.2.3, 4.2.1, 4.1.3, 3.4.6
+ - MacOS X ppc and x86
+ - cygwin gcc 3.4.4 (debug only)
-ns-3 is a new discrete-event network simulator designed for supporting network
-research and education. ns-3 features a solid, well documented C++ core and
-models for TCP/IP (IPv4), several link types including WiFi, and mobility
-models.
-
-ns-3 is an open source project released under the GNU GPLv2 license which
-allows anyone to use ns-3 without having to pay any license fee or royalties.
-ns-3 is actively seeking new contributors to extend the range of supported
-models and/or to maintain existing models.
+Not all ns-3 options are available on all platforms; consult the
+wiki for more information:
+http://www.nsnam.org/wiki/index.php/Installation
New user-visible features
-------------------------
@@ -53,28 +56,13 @@
More information on the wiki:
http://www.nsnam.org/wiki/index.php/Statistical_Framework_for_Network_Simulation
-Where to get more information about ns-3
-----------------------------------------
-
-All the ns-3 documentation, is accessible from the ns-3 website:
-http://www.nsnam.org
-
-Including, tutorials:
-http://www.nsnam.org/tutorials.html
-
-Supported platforms
--------------------
-
-ns-3 is regularly tested on the following platforms:
- - linux x86 gcc 4.2, 4.1, and, 3.4.6.
- - linux x86_64 gcc 4.1.3, 4.2.1, 3.4.6
- - MacOS X ppc and x86
- - cygwin gcc 3.4.4 (debug only)
+API changes from ns-3.1
+-----------------------
+API changes for this release are documented in the file CHANGES.html
Known issues
------------
-
-ns-3 is known to fail on the following platforms:
+ns-3 build is known to fail on the following platforms:
- gcc 3.3 and earlier
- optimized builds on gcc 3.4.4 and 3.4.5
- optimized builds on linux x86 gcc 4.0.x
@@ -84,11 +72,8 @@
The IPv4 API defined in src/node/ipv4.h is expected to undergo major changes
in preparation of the merge of the IPv6 API and implementation.
-API changes for this release are documented in CHANGES.html
-
Future releases
---------------
-
Our next release, which is expected to happen in 2 to 4 months from now, will
feature the merging of some of our projects currently in development: IPv6,
emulation, and synchronous posix sockets.
--- a/doc/build.txt Sun Sep 14 11:39:58 2008 -0700
+++ b/doc/build.txt Sun Sep 14 11:40:10 2008 -0700
@@ -1,6 +1,10 @@
The Waf build system is used to build ns-3. Waf is a Python-based
build system (http://www.freehackers.org/~tnagy/waf.html)
+Note: We've added a wiki page with more complete build instructions
+than the quick ones you find below:
+http://www.nsnam.org/wiki/index.php/Installation
+
=== Installing Waf ===
The top-level ns-3 directory should contain a current waf script.
@@ -63,7 +67,6 @@
It includes all files in the source directory, except some particular
extensions that are blacklisted, such as back files (ending in ~).
-
=== Extending ns-3 ===
To add new modules:
--- a/doc/tutorial/introduction.texi Sun Sep 14 11:39:58 2008 -0700
+++ b/doc/tutorial/introduction.texi Sun Sep 14 11:40:10 2008 -0700
@@ -63,19 +63,37 @@
@section For ns-2 Users
For those familiar with ns-2, the most visible outward change when moving to
-@command{ns-3} is the choice of scripting language. Ns-2 is typically
-scripted in Tcl and results of simulations can be visualized using the
-Network Animator @command{nam}. In @command{ns-3} there is currently no
-visualization module, and Python bindings have been developed (Tcl bindings
-have been prototyped using @uref{http://www.swig.org,,SWIG}, but are not
-currently supported). In this tutorial, we will concentrate on scripting
-directly in C++ and interpreting results via trace files.
+ns-3 is the choice of scripting language. Ns-2 is
+scripted in OTcl and results of simulations can be visualized using the
+Network Animator @command{nam}. It is not possible to run a simulation
+in ns-2 purely from C++ (i.e., as a main() program without any OTcl).
+Moreover, some components of ns-2 are written in C++ and others in OTcl.
+In ns-3, the simulator is written entirely in C++, with optional
+Python bindings. Simulation scripts can therefore be written in C++
+or in Python. The results of some simulations can be visualized by
+@command{nam}, but new animators are under development. Since ns-3
+generates pcap packet trace files, other utilities can be used to
+analyze traces as well.
+In this tutorial, we will first concentrate on scripting
+directly in C++ and interpreting results via ascii trace files.
But there are similarities as well (both, for example, are based on C++
-objects, and some code from ns-2 has already been ported to @command{ns-3}).
-We will try to highlight differences between ns-2 and @command{ns-3}
+objects, and some code from ns-2 has already been ported to ns-3).
+We will try to highlight differences between ns-2 and ns-3
as we proceed in this tutorial.
+A question that we often hear is "Should I still use ns-2 or move to
+ns-3?" The answer is that it depends. ns-3 does not have all of the
+models that ns-2 currently has, but on the other hand, ns-3 does have
+new capabilities (such as handling multiple interfaces on nodes
+correctly, use of IP addressing and more alignment with Internet
+protocols and designs, more detailed 802.11 models, etc.). ns-2
+models can usually be ported to ns-3 (a porting guide is under
+development). There is active development on multiple fronts for ns-3.
+The ns-3 developers believe (and certain early users have proven) that
+ns-3 is ready for active use, and should be an attractive alternative
+for users looking to start new simulation projects.
+
@node Contributing
@section Contributing
@@ -97,8 +115,12 @@
started with the simulator (please contact @uref{http://www.nsnam.org/people.html,,one of us}).
@end itemize
-If you are an ns-3 user, please consider providing your feedback, bug fixes, or
-code to the project.
+We realize that if you are reading this document, contributing back to
+the project is probably not your foremost concern at this point, but
+we want you to be aware that contributing is in the spirit of the project and
+that even the act of dropping us a note about your early experience
+with ns-3 (e.g. "this tutorial section was not clear..."),
+reports of stale documentation, etc. are much appreciated.
@node Tutorial Organization
@section Tutorial Organization
--- a/src/contrib/contrib.h Sun Sep 14 11:39:58 2008 -0700
+++ b/src/contrib/contrib.h Sun Sep 14 11:40:10 2008 -0700
@@ -1,5 +1,18 @@
/**
* \addtogroup contrib Contrib
*
+ * The src/contrib directory is for contributed code that is being maintained
+ * by the authors, but is not yet part of the main tree.
+ * For instance, the developers may be requesting feedback on whether anyone
+ * thinks the contributed model is generally useful to maintain in the main
+ * tree, or may want feedback on the API or features. If you find the
+ * code in this directory useful, please let the ns-3 developers know.
+ * Code may migrate from this directory to the main tree, or may be
+ * removed due to lack of interest, for a later release.
+ *
* - A class to generate graphs with gnuplot: ns3::Gnuplot and ns3::GnuplotDataset
+ * - A class to hold configuration data: ns3::ConfigStore and methods to allow the configuration to be read from and written to a file
+ * - A graphical editor of the config store: ns3::GtkConfigStore
+ * - An object that garbage collects events: ns3::EventGarbageCollector
+ * - An object that provides "quick and dirty" delay and jitter estimation: ns3::DelayJitterEstimation
*/
--- a/src/contrib/gtk-config-store.h Sun Sep 14 11:39:58 2008 -0700
+++ b/src/contrib/gtk-config-store.h Sun Sep 14 11:40:10 2008 -0700
@@ -3,6 +3,9 @@
namespace ns3 {
+/**
+ * \brief A class that provides a GTK-based front end to ns3::ConfigStore
+ */
class GtkConfigStore
{
public:
--- a/src/internet-stack/arp-cache.h Sun Sep 14 11:39:58 2008 -0700
+++ b/src/internet-stack/arp-cache.h Sun Sep 14 11:40:10 2008 -0700
@@ -40,6 +40,7 @@
class Ipv4Interface;
/**
+ * \ingroup arp
* \brief An ARP cache
*
* A cached lookup table for translating layer 3 addresses to layer 2.
--- a/src/internet-stack/arp-header.h Sun Sep 14 11:39:58 2008 -0700
+++ b/src/internet-stack/arp-header.h Sun Sep 14 11:40:10 2008 -0700
@@ -28,6 +28,7 @@
namespace ns3 {
/**
+ * \ingroup arp
* \brief The packet header for an ARP packet
*/
class ArpHeader : public Header
--- a/src/internet-stack/arp-ipv4-interface.h Sun Sep 14 11:39:58 2008 -0700
+++ b/src/internet-stack/arp-ipv4-interface.h Sun Sep 14 11:40:10 2008 -0700
@@ -30,6 +30,7 @@
class ArpCache;
/**
+ * \ingroup arp
* \brief an Ipv4 Interface which uses ARP
*
* If you need to use ARP on top of a specific NetDevice, you
--- a/src/internet-stack/arp-l3-protocol.h Sun Sep 14 11:39:58 2008 -0700
+++ b/src/internet-stack/arp-l3-protocol.h Sun Sep 14 11:40:10 2008 -0700
@@ -36,6 +36,13 @@
class Packet;
/**
+ * \ingroup internetStack
+ * \defgroup arp Arp
+ *
+ * This is an overview of Arp capabilities (write me).
+ */
+/**
+ * \ingroup arp
* \brief An implementation of the ARP protocol
*/
class ArpL3Protocol : public Object
--- a/src/internet-stack/nsc-tcp-l4-protocol.h Sun Sep 14 11:39:58 2008 -0700
+++ b/src/internet-stack/nsc-tcp-l4-protocol.h Sun Sep 14 11:40:10 2008 -0700
@@ -38,7 +38,9 @@
class Socket;
class TcpHeader;
/**
- * \brief Nsc wrapper glue.
+ * \ingroup nsctcp
+ *
+ * \brief Nsc wrapper glue, to interface with the Ipv4 protocol underneath.
*/
class NscTcpL4Protocol : public Ipv4L4Protocol, ISendCallback, IInterruptCallback {
public:
--- a/src/internet-stack/nsc-tcp-socket-factory-impl.h Sun Sep 14 11:39:58 2008 -0700
+++ b/src/internet-stack/nsc-tcp-socket-factory-impl.h Sun Sep 14 11:40:10 2008 -0700
@@ -23,6 +23,24 @@
class NscTcpL4Protocol;
+/**
+ * \ingroup internetStack
+ * \defgroup nsctcp NscTcp
+ *
+ * An alternate implementation of TCP for ns-3 is provided by the
+ * Network Simulation Cradle (NSC) project. NSC is a separately linked
+ * library that provides ported TCP stacks from popular operating systems
+ * such as Linux and FreeBSD. Glue code such as the ns-3 NSC code
+ * allows users to delegate Internet stack processing to the logic
+ * from these operating systems. This allows a user to reproduce
+ * with high fidelity the behavior of a real TCP stack.
+ */
+
+/**
+ * \ingroup nsctcp
+ *
+ * \brief socket factory implementation for creating instances of NSC TCP
+ */
class NscTcpSocketFactoryImpl : public TcpSocketFactory
{
public:
--- a/src/internet-stack/nsc-tcp-socket-impl.h Sun Sep 14 11:39:58 2008 -0700
+++ b/src/internet-stack/nsc-tcp-socket-impl.h Sun Sep 14 11:40:10 2008 -0700
@@ -40,6 +40,16 @@
class NscTcpL4Protocol;
class TcpHeader;
+/**
+ * \ingroup socket
+ * \ingroup nsctcp
+ *
+ * \brief Socket logic for the NSC TCP sockets.
+ *
+ * Most of the TCP internal
+ * logic is handled by the NSC tcp library itself; this class maps ns3::Socket
+ * calls to the NSC TCP library.
+ */
class NscTcpSocketImpl : public TcpSocket
{
public:
--- a/src/internet-stack/pending-data.h Sun Sep 14 11:39:58 2008 -0700
+++ b/src/internet-stack/pending-data.h Sun Sep 14 11:40:10 2008 -0700
@@ -33,6 +33,11 @@
{
class Packet;
+/**
+ * \ingroup tcp
+ *
+ * \brief class for managing I/O between applications and TCP
+ */
class PendingData {
public:
PendingData ();
--- a/src/internet-stack/rtt-estimator.h Sun Sep 14 11:39:58 2008 -0700
+++ b/src/internet-stack/rtt-estimator.h Sun Sep 14 11:40:10 2008 -0700
@@ -21,7 +21,6 @@
// Georgia Tech Network Simulator - Round Trip Time Estimation Class
// George F. Riley. Georgia Tech, Spring 2002
-// Implements several variations of round trip time estimators
#ifndef __rtt_estimator_h__
#define __rtt_estimator_h__
@@ -33,6 +32,11 @@
namespace ns3 {
+/**
+ * \ingroup tcp
+ *
+ * \brief Implements several variations of round trip time estimators
+ */
class RttHistory {
public:
RttHistory (SequenceNumber s, uint32_t c, Time t);
--- a/src/internet-stack/sequence-number.h Sun Sep 14 11:39:58 2008 -0700
+++ b/src/internet-stack/sequence-number.h Sun Sep 14 11:40:10 2008 -0700
@@ -22,8 +22,6 @@
// Georgia Tech Network Simulator - Manage 32 bit unsigned sequence numbers
// George F. Riley. Georgia Tech, Spring 2002
-// Class to manage arithmetic operations on sequence numbers (mod 2^32)
-
#ifndef __seq_h__
#define __seq_h__
@@ -31,6 +29,11 @@
#define MAX_SEQ ((uint32_t)0xffffffff)
+/**
+ * \ingroup tcp
+ *
+ * \brief Class to manage arithmetic operations on sequence numbers (mod 2^32)
+ */
class SequenceNumber {
public:
SequenceNumber () : seq(0) { }
--- a/src/internet-stack/tcp-header.h Sun Sep 14 11:39:58 2008 -0700
+++ b/src/internet-stack/tcp-header.h Sun Sep 14 11:40:10 2008 -0700
@@ -31,6 +31,7 @@
namespace ns3 {
/**
+ * \ingroup tcp
* \brief Header for the Transmission Control Protocol
*
* This class has fields corresponding to those in a network TCP header
--- a/src/internet-stack/tcp-l4-protocol.h Sun Sep 14 11:39:58 2008 -0700
+++ b/src/internet-stack/tcp-l4-protocol.h Sun Sep 14 11:40:10 2008 -0700
@@ -41,6 +41,7 @@
class TcpHeader;
/**
+ * \ingroup tcp
* \brief A layer between the sockets interface and IP
*
* This class allocates "endpoint" objects (ns3::Ipv4EndPoint) for TCP,
--- a/src/internet-stack/tcp-socket-factory-impl.h Sun Sep 14 11:39:58 2008 -0700
+++ b/src/internet-stack/tcp-socket-factory-impl.h Sun Sep 14 11:40:10 2008 -0700
@@ -28,12 +28,8 @@
class TcpL4Protocol;
/**
- * \ingroup internetNode
- * \defgroup Tcp Tcp
- */
-/**
- * \ingroup Tcp
- * \section Tcp Overview
+ * \ingroup internetStack
+ * \defgroup tcp Tcp
*
* The TCP code in ns3's internet stack is ported from the
* <a href="http://www.ece.gatech.edu/research/labs/MANIACS/GTNetS/">
@@ -43,6 +39,13 @@
* This class serves to create sockets of the TcpSocketImpl
* type. That is, it creates sockets which use the GTNetS Tahoe code.
*/
+
+/**
+ * \ingroup tcp
+ *
+ * \brief socket factory implementation for native ns-3 TCP
+ *
+ */
class TcpSocketFactoryImpl : public TcpSocketFactory
{
public:
--- a/src/internet-stack/tcp-socket-impl.h Sun Sep 14 11:39:58 2008 -0700
+++ b/src/internet-stack/tcp-socket-impl.h Sun Sep 14 11:40:10 2008 -0700
@@ -44,6 +44,7 @@
/**
* \ingroup socket
+ * \ingroup tcp
*
* \brief An implementation of a stream socket using TCP.
*
--- a/src/internet-stack/udp-header.h Sun Sep 14 11:39:58 2008 -0700
+++ b/src/internet-stack/udp-header.h Sun Sep 14 11:40:10 2008 -0700
@@ -28,6 +28,7 @@
namespace ns3 {
/**
+ * \ingroup udp
* \brief Packet header for UDP packets
*
* This class has fields corresponding to those in a network UDP header
--- a/src/internet-stack/udp-l4-protocol.h Sun Sep 14 11:39:58 2008 -0700
+++ b/src/internet-stack/udp-l4-protocol.h Sun Sep 14 11:40:10 2008 -0700
@@ -34,6 +34,7 @@
class Node;
class Socket;
/**
+ * \ingroup udp
* \brief Implementation of the UDP protocol
*/
class UdpL4Protocol : public Ipv4L4Protocol {
--- a/src/internet-stack/udp-socket-factory-impl.h Sun Sep 14 11:39:58 2008 -0700
+++ b/src/internet-stack/udp-socket-factory-impl.h Sun Sep 14 11:40:10 2008 -0700
@@ -28,6 +28,23 @@
class UdpL4Protocol;
/**
+ * \ingroup internetStack
+ * \defgroup udp Udp
+ *
+ * This is an implementation of the User Datagram Protocol described in
+ * RFC 768. It implements a connectionless, unreliable datagram packet
+ * service. Packets may be reordered or duplicated before they arrive.
+ * UDP generates and checks checksums to catch transmission errors.
+ *
+ * The following options are not presently part of this implementation:
+ * UDP_CORK, MSG_DONTROUTE, path MTU discovery control (e.g.
+ * IP_MTU_DISCOVER). MTU handling is also weak in ns-3 for the moment;
+ * it is best to send datagrams that do not exceed 1500 byte MTU (e.g.
+ * 1472 byte UDP datagrams)
+ */
+
+/**
+ * \ingroup udp
* \brief Object to create UDP socket instances
* \internal
*
--- a/src/internet-stack/udp-socket-impl.h Sun Sep 14 11:39:58 2008 -0700
+++ b/src/internet-stack/udp-socket-impl.h Sun Sep 14 11:40:10 2008 -0700
@@ -37,6 +37,7 @@
class UdpL4Protocol;
/**
+ * \ingroup udp
* \brief A sockets interface to UDP
*
* This class subclasses ns3::UdpSocket, and provides a socket interface