NORM-mirror/VERSION.TXT

257 lines
12 KiB
Plaintext

NORM Version History
Version 1.3b9
=============
- Fixed ProtoSocket WINVER stuff and NormApplicationMsg::SetContent()
(thanks to Stefan Titze for these)
- Fixed issue in NormSession::OnRepairTimeout() where a debug
message erroneously dereferenced a NormObject pointer as
NormFileObject (led to run-time issue in optimized code build)
(thanks to Charlie Davis once again)
Version 1.3b8
=============
- Fixed implementation of NormQuantizeGroupSize() in "normMessage.h"
(Thanks to David Lucas for finding the bug)
- Fixed some issues with NORM/Protolib ns-2 support
- Added API NormGetGrtt() and NormNodeGetGrtt() calls
to support some application needs.
- Modified transmission of FEC parity segments such that their
length is only as big as needed to support the maximum
sent segment size for the associated block (this allows more
latitude for stream apps in setting their sender segment
size and flushing).
- Added NORM_CC_ACTIVE and NORM_CC_INACTIVE notifications to indicate
whether receivers are actively providing congestion control feedback
(Thanks to Charlie Davis for the great suggestion)
- Fixed some floating-point exceptions that could occur in receiver
congestion control tracking under extreme circumstances. This included
enhancement of receiver receive rate tracking.
(Thanks to Ian Downard for finding these issues)
- Changed naming of "SERVER" notifications in API to "SENDER"
notifications to be consistent with the rest of API.
- Debug statistics now indicate correct nack/suppressed counts
for silent receiver operation (i.e. none)
- Refined activity timeout of remote sender
(still need to give the app more control over resource allocation)
Version 1.3b7
=============
- Deprecated NORM stream payload flags in favor of "payload_msg_start"
field per revised NORM specification (draft-ietf-rmt-pi-nom-revised-00)
This included interpreting NORM_DATA (source segment) messages for
NORM_OBJECT_STREAM with "payload_len" field value of ZERO as
"stream control" messages where the "payload_msg_start" field serves
as the stream control message type indications. The "End-of-Stream"
control message consists of "payload_msg_start" = 0
when "payload_len" = 0. No other stream control messages are yet
defined. The next revision of the NORM spec will describe this.
(Thus for NORM stream purposes, this NORM version is _not_ interoperable
with previous versions)
- Fixed problem where NormServerNode "retrieval_pool" had allocated
segments one byte too small (although this is OBE with the above
deprecation of stream flags which is what the byte was used for)
- Fixed bug where sender objects were not properly "closed" when the
object table was cleaned upon NormStopSender()
- Added support to VC++ .Net workspace for building "Norm.dll"
(NORM as a dynamic linked library) and similarly added option
to build "libnorm.dylib" for MacOS. ("libnorm.so" for other
Unix platforms should already work).
- Fixed NormSetTOS() call.
- Added option to NormSetPortReuse() to maintain INADDR_ANY binding
if desired.
- Refined management of NORM sender stream buffer so sender wouldn't
prematurely discard buffer stream blocks when alot of small
segments (smaller than segment_size) were buffered.
- Added NormStopInstance() call to provide means for multi-threaded
NORM apps to stop the NORM protocol engine and awake any other thread
blocked on NormGetNextEvent() to signal shutdown of NormInstance.
- Also updated code so ns-2 build works and tested w/ ns-2.29
Version 1.3b6
=============
- Fixed some oversite bugs that crept in with changes in 1.3b5
(Fixed code related to NormNode/NormObject retain and release)
- Changed NORM_TX_QUEUE_VACANCY posting behavior to be less chatty.
NORM_TX_QUEUE_VACANCY now posted _only_ after a call to
NormStreamWrite() fails to fulfill a full write request
(i.e. returns less than the "numBytes" requested to be written)
This helps prevent build up of these notifications in multi-
threaded applications that write to a stream in a different
thread than is fetching events via NormGetNextEvent().
- Added NORM_TX_WATERMARK_COMPLETED notification and NormGetAckingStatus()
function to provide API support for optional positive acknowledgment
(ACK) collection in NORM implementation. Note that use of
NormAddAckingNode(session, NORM_NODE_NONE) enables a NACK-based
watermark flushing concurrent with ongoing data transmission that
can be used as a scalable application-level flow control mechanism.
Version 1.3b5
=============
- Changed ProtoSocket::GetInterfaceAddress() and related methods on Win32
to use different system APIs depending on Windows version.
- Fixed some details related to compilation with g++ 4.x.
- Various issues fixed thanks to input from Timothy Chaplin.
- Fixed some issues where attempt to resync rx stream after long
outages (at high data rates) called assertion failures
(Thanks to Charlie Davis for finding this one)
- Fixed problem where, on Win32, the sender GRTT estimate was not
being updated (in the downward direction) properly.
- Changes to Protolib & Norm to support build of shared libraries
(Thanks to Dave Talmage & Timothy Mann)
- Added "NormSetRxPortReuse()" API and code support to allow
(with care) multiple NORM instances on the same host.
- Fixes to NORM congestion control including:
1) measurement of "recv_rate" at low transmission rates
fixed (made sure measurement was over sufficient
interval at low rates including cc startup)
2) Re-instated code to reduce rate when feedback stopped
being received.
3) Changed to time-based aging of feedback to "deactivate"
stale congestion control feedback representative state
kept by sender.
4) Fixed mis-set of PLR flag as CLR flag and fixed bug
in updating CC node list upon CC feedback reception.
(Thanks to Praveen Gopala for prompting all of this)
- Fixes for Win32 large file support "in normFile.cpp"
(Thanks to Titze Stefan for this fix).
- Added "NormSetGrttMax()", "NormSetGrttProbingMode()",
and "NormSetGrttProbingInterval()" APIs to control
NORM GRTT measurement/estimation process.
(Thanks to Dave Lucas for prompting me here)
- Changed posting of NORM_TX_QUEUE_VACANCY for streams such
that new postings of this event are made, _only_ after a
successful call to NormStreamWrite() ... This results in
reduced posting of unnecessary vacancy events, but now the
onus is on the app to pay attention to this event, since
another of it's type won't be posted until the app calls
NormStreamWrite() with non-zero content length.
(Thanks to Charlie Davis for bringing this to my attention)
- Made sure messages from self are ignored unless loopback
is explicitly enabled (see NormSetLoopback()) even for
operating systems whose ProtoSocket::SetLoopback() doesn't
work properly.
Version 1.3b4
=============
- Added NormSetTxCacheBounds(), see NormDevGuide for details
- Fixed issue with NormStreamSeekMsgStart() that crept in
somehow (Thanks to Jody Hagins for finding it).
- Added code to check that NormFileEnqueue() argument is
actually a file and not a directory name (Thanks to
Charlie Shyr for finding this)
- Fixed NormSession::Open() so that IPv6 works
Version 1.3b3
=============
- Added NORM_TX_FLUSH_COMPLETE notification so the sender app
can make an educated guess as to when his receivers are
all happy.
- Added NORM API sample code in "examples" directory.
- Added NormObjectGetBytesPending() call for receivers to
use to monitor reception progress.
Version 1.3b2
=============
- Added "graceful" stream shutdown option to
NORM API via the NormStreamClose() call.
- Embedded FLAG_STREAM_END flag in "payload_reserved"
field of NORM_DATA messages. This is beyond
the current RFC 3940 spec for NORM, but probably
something to push for addition to the next revision
of the spec.
- Embedded equivalent FLAG_MSG_START in "payload_reserved"
field of NORM_DATA messages. This allows message
boundary recovery for streams upon FEC decoding.
Again, this is "beyond" the current NORM spec, but
probably a good idea (Other stream control functions
might use this field as well)
- Added Visual Studio .NET project files
Version 1.3b1
=============
- Prevented pile-up of TX_QUEUE_VACANCY notifications
- Fix/optimization to ProtoDispatcher threaded operation
to prevent possible (although minor) race condition
during threaded operation.
- Added NORM API calls: NormSetTxSocketBuffer(),
NormSetRxSocketBuffer(), NormSetUserData(),
NormGetUserData(), and implemented overlooked
NormGetDescriptor()
- Thanks again to Charlie Davis for finding some
performance deficiencies.
Version 1.2b9
=============
- Fixed bugs with NormServerNode::retrieval_pool mgmnt
(Thanks to Charlie Davis for tracking these down!!!)
- Changed ProtoDispatcher thread stuff so threads
(e.g. the NORM API thread) are only actively
signaled and interrupted when absolutely necessary
- Added support for NORM_TX_QUEUE_VACANCY notification
(for NORM_OBJECT_STREAM only at the moment)
Version 1.2b8
=============
- Fixed bug introduced during "alignment" changes
in previous release.
- Fixed Protolib WIN32 build issue
Version 1.2b7
=============
- Changed normMessage.[h|cpp] to fix alignment issues
(and other alignment stuff)
- Fixed bug in NormCmdCCMsg::Iterator::GetNextNode()
(might significantly help CC performance
- Fixed NormServerNode::FreeBuffers() bug which
could result in seg fault on remote server timeout
or at app shutdown
- Fixed bug where tx_sequence count was being
incremented for all transmitted messages (The "fix"
does not yet address separate increment of messages
sent to different addresses, etc). The bug impacted
congestion control performance when nodes acted as
sender _and_ receiver (caused receives to overestimate
packet loss)
Version 1.2b6
=============
- Added normApi.cpp into libNorm.a (Norm.lib (WIN32)) builds
- Fixed Solaris build (new protolib code)
- Included very rough user's guide for "norm" demo app
Version 1.2b5
=============
- Initial release with theoretically-working API
(including "Norm Developer's Guide!")
Version 1.2b4
=============
- Finally remembered to update this file!
- Added "help" command to "norm" demo app (Thanks Marinho Barcellos!)
- New rxbuffer mgmnt scheme to better use limited buffer space.
- Removed explicit rate limit on receiver feedback messages
- API more complete and established better API naming conventions
(documentation soon to follow, I promise!)
- There have been some "cc" tweaks and bug fixes.
- NORM RFC 3940 was released and this version is in compliance.
- Added optional positive acknowledgements for sender-defined
"watermarks".
- Fixed multicast leave problem when interfaceName was used for join
Version 1.1b9
=============
- There have been a number of bug fixes since 1.1b3. This release
fixes a bug in NormBlockBuffer::Remove() and
NormObjectBuffer::Remove(). (Thanks Thava!)
Version 1.1b3
=============
- Started keeping version history. This release includes
some bug fixes, smoother congestion control operation, etc
over some of the earlier releases.
Please address bug reports, suggestions etc to the email list:
mailto:norm-dev@pf.itd.nrl.navy.mil