
		ns-3 RELEASE NOTES

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

Consult the file CHANGES.html for more detailed information about changed
API and behavior across ns-3 releases.

Release 3.7.1
=============
This is a bug fix only release. This release is immediately available from:
http://www.nsnam.org/releases/ns-allinone-3.7.1.tar.bz2

Bugs fixed
----------
This is a list of bugs fixed from release 3.7:
	- bug 731: Send function in point-to-point-net-device fails to check the return value of the Dequeue function
	- bug 747: Listening TCP socket closes on RST
	- bug 748: Cloned TCP socket uses wrong source address
	- bug 778: OLSR ignores specified outgoing interface in RouteOutput()
	- bug 788: OLSR_NEIGH_HOLD_TIME should be 3 times OLSR_REFRESH_INTERVAL
	- bug 789: Globalrouting externalroutes to use the new GetRootExitDirections()
	- bug 794: Ipv4Mask constructor for "/yy"-notation is wrong
	- bug 806: TCP doesn't work over a CSMA link
	- bug 804: Null-pointer references in 3.7 internet stack
	- bug 815: Waf shell file descriptor leak. Patch by Tom Goff, slightly modified
	- bug 816: Tap-creator deadlock when python bindings enabled  
	- bug 820: Bad things happen in test.py when logging is enabled
	- bug 821: AODV asserts with function logging enabled

Release 3.7
===========

Availability
------------
This release is immediately available from:
http://www.nsnam.org/releases/ns-allinone-3.7.tar.bz2

Supported platforms
-------------------
ns-3.7 has been tested on the following platforms:
  - linux x86 gcc 4.4.0, 4.3.2, 4.2, 4.1.1, 4.1 and 3.4.6 (debug and optimized)
  - linux x86_64 gcc 4.4.0, 4.3.2, 4.2.4, 4.2.3, 4.2.1, 4.1.3, 3.4.6 (debug and optimized)
  - MacOS X ppc gcc 4.0.x and 4.2.x (debug and optimized)
  - cygwin gcc 3.4.4 (debug only), gcc 4.3.2 (debug and optimized)

Unofficially supported platform
-------------------
- mingw gcc 3.4.5 (debug only)

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
-------------------------

  a) Ad hoc On-Demand Distance Vector (AODV) routing model (RFC 3561)

  b) IPv6 extensions support to add IPv6 extensions and options.  Two 
     examples (fragmentation and loose routing) are available.

  c) NetAnim interface: Provides an interface to the Qt-based NetAnim 
     animator, which supports static, point-to-point topology-based 
     packet animations.

  d) New topology helpers have been introduced
     - PointToPointDumbbellHelper
     - PointToPointGridHelper
     - PointToPointStarHelper
     - CsmaStarHelper

  e) Equal-cost multipath for global routing: Enables quagga's equal 
     cost multipath for Ipv4GlobalRouting, and adds an attribute that
     can enable it with random packet distribution policy across 
     equal cost routes.

  f) Binding sockets to devices:  A method analogous to a SO_BINDTODEVICE
     socket option has been introduced to class Socket

  g) Object::DoStart: Users who need to complete their object setup at 
     the start of a simulation can override this virtual method, perform their 
     adhoc setup, and then, must chain up to their parent.

  h) Ipv4::IsDestinationAddress method added to support checks of whether a 
     destination address should be accepted as one of the host's own 
     addresses.  

  i) UniformDiscPositionAllocator added; distributes uniformly the nodes 
     within a disc of given radius. 

  j) ChannelNumber attribute added to YansWifiPhy. Now it is possible to 
     setup wifi channel using WifiPhyHelper::Set() method.

  k) WaypointMobilityModel provides a method to add mobility as a set of 
     (time, position) pairs

  l) 802.11p WiFi standards 
  
  m) UDP Client/Server application

  n) Support transactions in the SQLite output interface, making it usable for larger amounts of data

API changes from ns-3.6
-----------------------
API changes for this release are documented in the file CHANGES.html. 

Bugs fixed
----------
The following lists many of the bugs that were fixed since ns-3.6, in
many cases referencing the Bugzilla bug number
   - bug 752: Object::DoStart is not executed for objects created at t > 0
   - bug 767:  Incorrect modulation for 802.11a modes
   - bug 725: wifi fragmentation and RTS cannot be used at the same time
   - bug 782: CreateTap () requires IP address in modes other than 
     CONFIGURE_LOCAL.
   - bug 769: Queue::GetTotalReceived{Bytes,Packets}() broken
   - bug 738 ReceiveErrorModel called too late
   - Fix NSC improper response to FIN
   - Fixed bug in serialization of PbbAddressBlock.
   - Fix bug 780 (problem in RoutingTableComputation with asymetric links), 
     while adding debugging methods to OLSR.  
   - bug 759: Ipv6 uses wrong outgoing interface.
   - bug 770: IPv6 size calculation for unknown options is wrong.
   - bug 771: Radvd does not set ttl value.
   - Fix bug 606:  Arp depends on IP routing system
   - pad out CSMA payloads to 46 bytes if needed
   - Drop CSMA packets with CRC errors, rescan, dox tweaks
   - Add FCS capability to CSMA
   - Mesh:Dot11s: fixed airtime metric
   - Get emu working again:  Add Dix/Llc option, add and use contextual 
     realtime schedule ops, don't refcount realtime simulator impl
   - bug 695 - DcfManager::UpdateBackoff () uses slow HighPrecision::Div()
   - bug 674 - EIFS is not handled correctly in DcfManager::GetAccessGrantStart
   - bug 739 -  OLSR: Strange HTime value in HELLO messages 
   - bug 746 -  UDP source address is not set to bound address
   - bug 735 Update Olsr for local delivery
   - bug 740 OLSR MprCompute () works wrong: fixed
   - bug 729 Enable IPv6 over PPP.
   - bug 645: fixes for opening stats file with OMNeT++
   - bug 689: default energy detection and CCA thresholds are changed to be 
     more realistic.
   - bug 733: OLSR MPR Computation give incorrect result
   - Mesh: HWMP: fixed proactive routes
   - Mesh: fixed FLAME PATH_UPDATE procedure, fixed mesh.cc 

Known issues
------------
ns-3 builds have been 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


Release 3.6
===========

Availability
------------
This release is immediately available from:
http://www.nsnam.org/releases/ns-allinone-3.6.tar.bz2

Supported platforms
-------------------
ns-3.6 has been tested on the following platforms:
  - linux x86 gcc 4.4.1, 4.2, 4.1, and, 3.4.6.
  - linux x86_64 gcc 4.4.0, 4.3.2, 4.2.3, 4.2.1, 4.1.3, 3.4.6
  - MacOS X ppc and x86 (gcc 4.0.x and 4.2.x)
  - cygwin gcc 3.4.4 (debug only), gcc 4.3.2 (debug and optimized)

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
-------------------------

  a) 802.11 models:
     - Add an implementation of the minstrel rate control algorithm 
       (Duy Nguyen for gsoc)
     - AthstatsHelper: enables the wifi device to produce periodic 
       reports similar to the ones generated by madwifi's
       athstats tool (Nicola Baldo)
     - 10MHz and 5MHz channel width supported by 802.11a model 
       (Ramon Bauza and Kirill Andreev)
     - Channel switching support. YansWifiPhy can now switch among 
       different channels (Ramon Bauza and Pavel Boyko)
  
  b) IPv6 models:
    - IPv6 interface;
    - IPv6 layer;
    - IPv6 raw socket;
    - Static IPv6 routing;
    - ICMPv6 layer;
    - Some ICMPv6 error messages (destination unreachable, ...);
    - Neighbor Discovery Protocol (NS/NA, RS/RA, redirection);
    - Ping6 application (send Echo request);
    - Radvd application (send RA);
    - Examples (ping6, simple-routing-ping6, radvd, radvd-two-prefix,
      icmpv6-redirect).

  c) Wireless Mesh Networking models:
    - General multi-interface mesh stack infrastructure (devices/mesh module).
    - IEEE 802.11s (Draft 3.0) model including Peering Management Protocol and HWMP.
    - Forwarding Layer for Meshing (FLAME) protocol.

  d) Nix-vector routing:  
    - Ipv4NixVectorHelper
    - Examples (nix-simple, nms-p2p-nix)

  e) New Test Framework
    - Use test.py instead of ./waf check or ./waf --regression
    - Previous unit tests have been ported to new framework.
    - Examples are tested for run-ability.

  f) A new Flow Monitor module
   - To very easily measure flow metrics in a simulation
   - No need to use trace callbacks or parsing trace files

API changes from ns-3.5
-----------------------
API changes for this release are documented in the file CHANGES.html. 

Known issues
------------
ns-3.6 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

Release 3.5
===========

Availability
------------
This release is immediately available from:
http://www.nsnam.org/releases/ns-allinone-3.5.tar.bz2

Supported platforms
-------------------
ns-3.5 has been tested on the following platforms:
  - linux x86 gcc 4.2, 4.1, and, 3.4.6.
  - linux x86_64 gcc 4.4.0, 4.3.2, 4.2.3, 4.2.1, 4.1.3, 3.4.6
  - MacOS X ppc and x86 (gcc 4.0.x and 4.2.x)
  - cygwin gcc 3.4.4 (debug only), gcc 4.3.2 (debug and optimized)
  - mingw gcc 3.4.5 (debug only)

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
-------------------------

  a) 802.11 MAC:
     - EDCA multi-qos-class support (Mirko Banchi)
     - 802.11n initial support for A-MSDU frame aggregation (Mirko Banchi)
     - aarf-cd and cara rate control algorithms (Federico Maguolo)
  b) 802.11 PHY:
     - 802.11b PHY support (Gary Pei)
     - Nakagami propagation loss model (Timo Bingmann)
     - radiotap and prism headers for PCAP output (Nicola Baldo)
  c) RandomVariable:
     - GammaVariable and ErlangVariable (Timo Bingmann)
     - ZipfVariable (Francesco Malandrino)
  d) UdpEcho: allows setting the payload of echo packets
  e) Ipv4/Ipv4RoutingProtocol: allow fine-grained control over
     routing policy and arbitrary composition of routing protocols
 
API changes from ns-3.4
-----------------------
API changes for this release are documented in the file CHANGES.html.  The
internal API and composition of the IPv4 stack underwent significant
refactoring in this release cycle.

Known issues
------------
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

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 including
fuller IPv6 support, some smaller features such as a new Global ARP 
package, and possibly a new Testing and Validation suite.

Release 3.4
===========

Availability
------------
This release is immediately available from:
http://www.nsnam.org/releases/ns-allinone-3.4.tar.bz2

Supported platforms
-------------------
ns-3.4 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)

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
-------------------------
  a) Wifi models: Timo Bingman contributed a ThreeLogDistance and a Nakagami
     propagation loss model based on the ns-2 models. Fabian Mauchle contributed
     multicast support.

  b) Object Name Service:  A facility allowing ns-3 Objects to be assigned
     names has been added.

  c) Tap Bridge:  A second option for integrating ns-3 with real-world hosts
     has been added.  This allows for real hosts to talk over ns-3 net devices
     and simulated networks.

  d) A new build option (ns-3-allinone) has been provided to make it easier for
     users to download and bulid commonly used ns-3 configurations.

  e) The ns-3 calendar queue scheduler has been ported to ns-3.

  f) XML support has been added to the ConfigStore.

API changes from ns-3.3
-----------------------
API changes for this release are documented in the file CHANGES.html

Known issues
------------
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
  - optimized builds on Ubuntu 8.10 alpha 5 x86 gcc4.3.2
  - MinGW

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.

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 including
fuller IPv6 support, and IPv4 and routing protocol refactoring, and some smaller
features such as a new Global ARP package and possibly a new Testing and Validation
suite,

Release 3.3
===========

Availability
------------
This release is immediately available from:
http://www.nsnam.org/releases/ns-3.3.tar.bz2

Supported platforms
-------------------
ns-3.3 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)

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
-------------------------
  a) Emulated Net Device
     A new net device has been added as enabling technology for ns-3 emulation
     scenarios.  See src/devices/emu and examples/emu-udp-echo.cc for details.

  b) ICMP Support
     Support for several ICMP messages has been added to ns-3.  See 
     src/internet-stack/icmpv4.h for details.

  c) IPv6 Address Support
     New clases to support IPv6 addresses has been added to the system.  This
     is enabling technology for fuller IPv6 support scheduled for ns-3.4.

  d) A flow-id tag has been added to the contributed code section

  e) Star topologies can be created from the topology helper functions

  f) The global routing code has been made dynamic (not just limited to
     (pre-simulation computation) and supports stub network interfaces and 
     bridge net devices 

  g) A MatchContainer has been added to the configuration subsystem

API changes from ns-3.2
-----------------------
API changes for this release are documented in the file CHANGES.html

Known issues
------------
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
  - optimized builds on Ubuntu 8.10 alpha 5 x86 gcc4.3.2
  - MinGW

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.

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 including
fuller IPv6 support, and IPv4 and routing protocol refactoring, and some smaller
features such as an object naming facility and a new Global ARP package.

Release 3.2
===========

Availability
------------
This release is immediately available from:
http://www.nsnam.org/releases/ns-3.2.tar.bz2

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)

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
-------------------------
  a) Learning bridge (IEEE 802.1D)
    It is now possible to bridge together multiple layer 2 devices to
    create larger layer 2 networks. The Wifi and Csma models support
    this new mode of operation. (contributed by Gustavo Carneiro)

  b) Python bindings
    It is now possible to write simulation scripts in python using our 
    python bindings (contributed by Gustavo Carneiro).

  c) Real-time simulator
    It is now possible to run simulations synchronized on the real-world
    wall-clock time (contributed by Craig Dowell).

  d) Network Simulation Cradle
    It is now possible to use the Network Simulation Cradle 
    (http://www.wand.net.nz/~stj2/nsc/) in ns-3 and run simulations 
    using various versions of kernel TCP network stacks. (contributed
    by Florian Westphal as part of his Google Summer of Code work)

  e) A statistics framework
    Joseph Kopena contributed a statistics framework which can be used
    keep track of simulation data in persistent storage across multiple 
    runs (database and ascii file backends are available).
    More information on the wiki:
    http://www.nsnam.org/wiki/index.php/Statistical_Framework_for_Network_Simulation

API changes from ns-3.1
-----------------------
API changes for this release are documented in the file CHANGES.html

Known issues
------------
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
  - optimized builds on Ubuntu 8.10 alpha 5 x86 gcc4.3.2
  - MinGW

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.

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.

Release 3.1 (2008/06/30)
========================

The first ns-3 stable release
-----------------------------

This release is immediately available from:
http://www.nsnam.org/releases/ns-3.1.tar.bz2

We dedicate this initial ns-3 release to our late contributor and friend, 
Federico Maguolo.

What is ns-3 ?
--------------

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.

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)

Known issues
------------

ns-3 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

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.

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: python 
scripting, IPv6, emulation, a statistics framework and synchronous posix 
sockets.

Release 3.0.13 (2008/06/02)
===========================
- point to point links generate ppp pcap traces
- point to point links support asymmetrical data rates.
- generate doxygen documentation for all attributes and trace sources
- add ConfigStore and GtkConfigStore to contrib module
- socket API now support tx and rx buffers: implemented for UDP and TCP
- ARP cache now supports per-entry pending queues
- lots of bugfixes and implementation and API cleanups

Warning: among API changes in this release, Application::Start and 
Application::Stop now interprets the time argument as a relative
instead of absolute simulation time, to align with how Simulator::Schedule
behaves.  Any code that calls these APIs in the middle of the simulation 
will need to be adapted.  

The API of Simulator::StopAt (time) has also changed.  Now it is 
called Simulator::Stop (time), and takes a relative time, instead of 
absolute.

Release 3.0.12 (2008/04/07)
===========================
    - Add Attribute support to the TypeId metadata system and add
attribute support to all in-tree models
    - Add a mid-level helper API to build simulation topologies 
and perform simple ascii and pcap link-level tracing.
    - Large amount of structural changes to accomodate the needs
of the upcoming python bindings
    - new rate control algorithm (RRAA) and a jakes propagation model
in the 802.11 model (Federico Maguolo).
    - regression test framework added
    - TCP delayed acknowledgements and multitasking server

Release 3.0.11 (2008/02/15)
===========================
    - Initial port of GTNetS TCP implementation (initial version 
that does not support multitasking or delayed acknowledgments yet, 
but supports a reliable stream service)
    - Changes to the ns-3 object model to create a TypeId-based 
metadata system
    - lots of bug fixes throughout the system
    - tutorial updates

Release 3.0.10 (2008/01/15)
===========================
   - Add tutorial document content;
   - Valgrind option for "waf" tool;
   - Doxygen organization changes.

Release 3.0.9 (2007/12/15)
==========================
   - A 802.11 model ported from Yans. This model supports:
       * a rather extensive PHY model
       * log-distance and friis propagation model
       * a simple set of rate control algorithms (ARF, Ideal, 
         AARF, constant-rate)
       * adhoc and infrastructure mode (beacon+assoc)
   - Use smart pointer for Packet in the APIs
   - A new contrib directory with helper classes: 
     EventGarbageCollector, Gnuplot
   - Tracing support for Applications
   - many bugs fixed

Release 3.0.8 (2007/11/15)
==========================
   - A simple error model
   - Source files for ns-3 tutorial

Release 3.0.7 (2007/10/15)
==========================
  - OLSR routing protocol
  - A timer class
  - Additional mobility models (random waypoint, random 2D walk)
  - A mobility visualization tool 

Release 3.0.6 (2007/09/15)
==========================
  - Static multicast IPv4 routing
  - Logging overhaul (NS_LOG macros)
  - Refactoring of tracing subsystem
  - Tutorial document started
 
Release 3.0.5 (2007/08/15)
==========================

  - Refactoring to support win32-based unix environments (Cygwin, mingw)
  - "Packet socket" for allowing applications to access NetDevices directly
  - Generalized, polymorphic Address class
  - Add CSMA NetDevice model (from Emmanuelle Laprise)
  - Modularize IPv4 routing support (from Gustavo Carneiro)
  - Add mobility framework and basic mobility models 
  - Global unicast centralized routing 

Release 3.0.4 (2007/07/15)
==========================

  - Enable waf as the default build system.
  - Per-packet metadata:  a system to track which headers and trailers 
    are added to a packet
  - Simplifications to point-to-point devices and channel

Release 3.0.3 (2007/06/15)
==========================

  - Enable Waf for release tarballs: users can now build ns-3
    with the "waf" tool. See doc/build-waf.txt.
  - Add support for variable time precision: it is now possible
    to run a simulation with an accuracy which is higher or lower
    than a nanosecond: seconds, milliseconds, microseconds, 
    femtoseconds and picoseconds are supported.
  - Optimize and rework the COM framework, solidify the component 
    manager
  - Many small API cleanups

Release 3.0.2 (2007/05/18)
==========================

  - Implement a new memory management infrastructure based
    on reference counting and smart pointers (the latter being
    optional)

  - Implement a COM-like framework with support for QueryInterface
    to provide object extensibility

  - Add support for a BSD-style socket API for user applications

Release 3.0.1 (2007/03/31)
==========================

  - First public release; not yet pre-alpha.

  - Simple UDP-based simulation script (examples/simple-p2p.cc)
