NORM Version History 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