			           MDP Version History

Version 1.9a5
=============
    - Fixed multicast ttl bug error on MDP's transmit socket
      
Version 1.9a4
=============
    - Tweaked some timer stuff which should result in better
      performance (particularly on Win32 platforms)
    - Added IPv6 support (not yet fully tested).
    - Updated MDP API extensively to introduce consistency and allow
      applications to attach "user data" to _all_ MDP object, node,
      session, socket, timer, and instance handles.  This greatly
      simplifies association of MDP state with application state. 
      This is still a low-level API. A more programmer-friendly
      (safer) API should still be wrapped around this one.
    - When a unicast IP address is specified as the session address,
      all feedback suppression timers are now skipped.  This 
      speeds up unicast operation.
    - The "-J" option to allow port reuse among multiple MDP instances
      on the same machine was added.  The default behavior is that
      port reuse is disabled (This makes protocol confusion less
      likely since the demo apps use the computers IP address as
      its node id).

Version 1.9a3
=============
    - Refined suppression of unicast feedback
    - Fixed some issues with Win32 file date/timestamp monitoring

Version 1.9a1
=============
    - Added initial cut at unicast NACK suppression.
    - Fixed bug related to mgmt of congestion control representative list
    - Note this version is incompatible with previous releases. 
    
Version 1.8a3
=============

    - Added ability to send/recv on separate port numbers.
    - Fixed "SelectDispatcher" bug for dealing with multiple
      sockets. (required for separate tx/rx ports)
    - Fixed array overflow problem in DEBUG printout.
    - Made sure REPAIR flag is now _always_ properly set 
      in server INFO, DATA, and PARITY messages. (This 
      could cause unplanned sender rewind with late joining
      receivers)
    - Includes some inactive code in prep for unicast NACK
      suppression capabilities in version 1.9 release.
    - Note version 1.8a3 is backwards compatible with previous
      1.7 and 1.8 releases in "non-congestion control" operation
      only.  Congestion control operation requires all nodes to
      be updated to version 1.8a3.

Version 1.8a1
=============
    - Fixed server side bug where server was not properly recalculating
      parity segments for coding blocks which had been dumped during
      when buffer space was filled.  This resulted (typically only for
      extreme loss/delay circumstances) in _sometimes_ clients 
      incorrectly decoding received data (i.e. the file was delivered,
      but with incorrect content)

Version 1.7a9
=============
    - Fixed problem related to clients receiving MDP_CMD_FLUSH messages as
      first message from a server.
      
    - Added option to set bounds on congestion control transmit rate 
      adjustment.
      
    - Modified MDP API MdpNotifyCallback function to include "nodeId" value
      in arguments passed, added MDP_NOTIFY_REMOTE_SERVER_INACTIVE notification
      so applications can manage state maintained by MDP on apparently "dead" 
      remote servers (senders), and added API functions for this management
      (MdpSessionNodeGetNextRxObject(), MdpSessionDeactivateNode(), 
       MdpSessionDeleteNode())
    
    
Version 1.7a8
=============
    - Fixed behavior related to when TX_OBJECT_FIRST_PASS notification
      is posted to application through API.
      
    - Fixed positive acknowledgment behavior which inadvertently got
      broken as a result of other changes.
      
    - Modified example applications so that no MDP_FLUSH messages
      are sent between objects when the object transmission interval 
      (see "-i" command-line option) is set to zero.
      
    - Fixed some anomalies where silent (EmCon) clients were NACKing
      when they weren't supposed to and touched up (optimized) 
      client-side memory management for EmCon operation.
      
                       
Version 1.7a7
=============
    - Code to make sure multicast loopback doesn't occur
      even when the OS/hardware can't turn it off 
      (There was a similar issue on Win32 platforms)
      
    - Code changes to allow more flexible use of MDP API calls 
      in NotifyCallback routines (e.g. MdpDeleteSession())

Version 1.7a6
=============
    - Some bug fixes missed in the 1.7a4 release 
      (related to the 1.7a4 API changes)

Version 1.7a4
=============
    - API changes (Can now have multiple instances of MDP API
      in different threads, etc).  Allows more flexibility for
      different application architectures.
    - Renaming of some API routines & variable types for 
      consistency and to reduce confusion.
    - More API controls over NACKing behavior.
    - Added option to control MDP receivers default NACKing mode
      and to control reliability on a per-receive-object basis
    - Option to turn on/off "stream integrity" (i.e. repair
       of "missing" objects"
    - More congestion control enhancements
    

Version 1.6a7
=============
    - More congestion control experimentation and changes (Improved
      loss event estimator)
      
    - Fixed bug introduced in 1.6a6 causing depletion of message pools.

Version 1.6a6
=============
    - More congestion control experimentation and changes.  Congestion
      control still experimental.
      
    - Added options to example applications and API to set multicast interface,
      control multicast loopback, etc
      
Version 1.6a3
=============
    - Fixed bug introduced with congestion control (version 1.6) where
      the MDP was not adjusting its GRTT estimate when in non-congestion
      control mode.
    
    - Added '-g' option to set initial GRTT estimate.
    
    - Fixed turn on/off of status reporting in tkMdp & mdp apps
    
Version 1.6a2
=============
    - Fixed "-m" command-line option implementation for multicast ACKs
    
    - Tweaked positive acknowledgement behavior for very large 
      group sizes. (ACK message implosion better controlled)
      
Version 1.6a1
=============
    - Flow control algorithm changes
    
    - Added option to multicast MDP_ACK messages from clients
      (See "-m" command line option in sample applications)
      
    - Added receipt of MDP_INFO (usually indicates start of reception
      of an object or file) notification.  This event is now
      logged to the "-L" (non-debug) log file.
      
    - Fixed problem where server suspends transmission when running
      into a object it can't "open". (Now attempts to open the next
      queued object (or notify the application that queue is empty)
    
Version 1.5a5
=============
    - Fixed some bugs related to "-U" option on Win32
    
    - Added proper handling of SIGTERM/SIGINT (CTRL-C) exit on Unix
    
    - Resurrected "mdp" command-line application for Unix
    
    - "tkMdp", "winMdp", and "mdp" all derive from common base application class
    
Version 1.5a3
=============
    - Added "-L" log file for Tx/Rx event logging
      (Logging features may be expanded in future)
      
    - Added "-Z"/"-z" options to control tx/rx cache depths
    
    - Added "-N" option to suppress transmission of status reports
      
Version 1.5a2
=============
    - Option for automatic congestion/flow control added.
      (Note: packet formats changed and may change some yet ...
             NOT BACKWARDS COMPATIBLE!)
    
Version 1.4a9
=============
    - Much more debugging done, mainly with data objects    
    
    KNOWN BUGS:
        Problem with closing sessions using API has been identified
        for applications which wish to dynamically open/close different
        multicast sessions "on-the-fly"
    
Version 1.4a3
==========
    - More debugging
    - Support in source code for ns-2 simulator
    - Support static data objects in addtion to files
    - "MdpChat" command line application provided as
       command-line/data object example

Version 1.4a1
==========
    - Introduced MDP Application Programming Interface (MDP API) along with
      with the MDPv2 libraries for custom building MDPv2 applications.

    - Protocol format changes which make this version incompatible with
      earlier versions:

      a) Additional NACK aggregation.
      b) Object "stream" integrity with repair allowed for missing objects after a
         client has "synchronized" with a server.

    - More efficient use of buffer memory.

    - Better memory allocation for sessions with multiple servers. (many-to-many
      data exchanges supported)

    KNOWN BUGS:
      - "-I" repeat interval not yet supported in new version of "tkMdp"
      - "EMCON" (silent client) mode not fully tested.
      - MDP API not well documented.


Version 1.3a5
==========
    - Fixed synchronization problem in server's "send updates only"
      file transmission mode so files are _always_ picked up.
      (Note: win32 doesn't currently support this server side
             functionality very well (It's hard to affect Window's
             file system time stamps ... there is an alternative
             directory update API Microsoft provides which may
             be adapted for MDP))
             
    - Added server option for "Positive Acknowledgment Access List" file.

Version 1.3a4
==========
    - Fixed problem with server freezing on certain MDP_BLOCK_NACK
      messages
      
    - Fixed application code so "-s" command-line option works.
    
    - Added user interface settings menu item to allow user to
      change the receive file post processor "on-the-fly".
      
    - Tweaked client NACK suppression.  Keep state on early-arriving
      NACKs.
      
    - Fixed bug when object size was an exact multiple of the
      data block size.
      
    - 

Version 1.3a2
==========
    - Fixed a couple of Win32 specific bugs
      (and re-fixed Win32 TTL problem)
    
Version 1.3a1
==========
    - Improved server to maximize use of available parity.  Use "fresh" parity
      whenever possible. (Note: For _proper_ operation, version 1.2 software
      shouldn't be used anymore)
    
Version 1.2
==========
    - Improved NACKing rules of motion to make better use of 
      available parity in some situations (per discussions with Vince Park)
      
    - Changed format of MDP_REPAIR_NACK messages (THIS MAKES THIS VERSION
      INCOMPATIBLE WITH EARLIER VERSIONS!!)
      
    - Fixed code so exec of post-processor doesn't leave open 
      socket file descriptors
      
    - Fixed zombie process problem when using Netscape for post processing
      
    - Stopped ObjectInfo NACKing from persisting beyond server inactivity
      timeout.
      
    - Fixed ambiguities when receiving repeat transmissions of files of
      the same name.
      
Version 1.1
==========
    - Support for Win32 platforms (Win95/NT-4)

    - Fixed minor protocol timing offset error for "tkMdp"

    - Added support for server directory monitoring and tx file deletion
    
    - Built-in support for using Netscape as a receive file post processor
      (IExplore and other DDE browsers are also supported on Win32 platforms)
      
Version 1.0
==========
    - Initial implementation with "mdp" and "tkMdp" applications

    - Used for May 1998 MBONE test.
    

======================================================================

Direct questions and comments to:

Brian Adamson <adamson@itd.nrl.navy.mil>

or 

Joe Macker <macker@itd.nrl.navy.mil>
