release 3.4 (2003-08-14) - bug fix. DupTsns were not being deleted properly in DeleteNode(). Report and fix by Tonci Juric . - bug fix. DupTsns were not cleared once reported, so the same duptsns were continously reported until the end of the association. Instead, they should be reported once only. Report by Sourabh Ladha and Patricio Barletta . - bug fix. ClearList() wasn't using the list passed in. Report and fix by Patricio Barletta . - fix compile error. Some gcc versions were complaining that hdr_sctp::offset_ was multiply defined in all the SCTP extensions' .cc files. Simply removed declaration from all files except sctp.cc. Report and fix by Michael Tüxen - bug fix. Timeouts were not resetting missing report counter. Report by Patricio Barletta . - changed default chunk size to 1468 to reflect what avg simulation would want -------------------------------------------------------------------------------- release 3.3 (2003-07-11) - moved from using Random::random() to using Random::uniform() to avoid problems with the test suite output conflicts when migrating to new versions of ns. - removed 2 tests from test suite: sctp-legacyApp and sctp-rebundleChunks. they were removed because they use Random::exponential(), which causes tests to fail from version to version of ns. - new test suite output which reflects changes of random function used. - bug fix. Keyur and I found anoamlous behavior when simulating specific drops. Sometimes, more drops actually improved behavior. Jana and I determined it was a bug. PartialBytesAcked was being incorrectly incremented if there were TSNs already GapAcked when transitioning from SlowStart to CongestionAvoidance. The TSNs GapAcked in SlowStart should not be used to increment PartialBytesAcked when the sender goes into CongestionAvoidance. - added experimental MultipleFastRtx extension, which implements Caro's Algorithm for fast retransmits. The algorithm introduces a uiFastRtxRecover variable which maintains the highest tsn outstanding at the time of a tsn's retransmit. That way, once a tsn has been retransmitted, only missing reports triggered by tsns beyond uiFastRtxRecover may trigger yet another fast rtx of the same tsn. This extension was Armando Caro's idea. - added experimental HbAfterRto extension, which immediately sends a heartbeat after a TimeoutRtx. The idea is to give the destinations a chance to get an RTT measurement after the RTO is backed off. The hope is to avoid unnecessarily large RTOs (especially on the alternate destinations). This extension was Randall Stewart's idea. - bug fix. GenOneDataChunk() was using the wrong variable for incrementing the outstanding bytes, which sometimes created problems for non-FTP applications. Report and fix by Stephan Baucke . - added experimental Timestamp extention, which allows RTT measurements to be made per packet on both original transmissions and retransmissions. This extension was Armando Caro's idea. - added experimental extension called NewReno, which introduces recovery state similar to that of TCP NewReno to avoid multiple cwnd cuts in a single window (ie, round trip). Since SCTP is multihomed, recovery state is maintained per destination. This extension was actually suggested by Johan Garcia, but implemented by Armando Caro and Keyur Shah. However, Randall Stewart already had this feature in his KAME implementation, but didn't include the change in the implementer's draft (yet). - bug fix. According to RFC2960, "RTT measurements SHOULD be made no more than once per round-trip for a given destination transport address." Although the measurements weren't being done for every DATA chunk, they were being done more than once per round-trip. -------------------------------------------------------------------------------- release 3.2 (2002-12-13) - bug fix. If chunks were rebundled differently during retransmissions than they were during the original transmissions, the bundling wasn't done properly. In particular, the 4-byte boundary padding wasn't done. Hence, the receiver tried to read a packet misaligned chunks. Report by Stephan Baucke , Marcello Pantaleo , and Damir Prusac . - bug fix. non-sctp aware apps which were trying to use the Agent variable size_ as the packet size (or max app write size) were failing. The SCTP agent now sets size_ to the max data size of an app write for such applications. Report by Stephan Baucke , Marcello Pantaleo , and Damir Prusac . - bug fix. modified ProcessGapAckBlocks() so that sender only trusts gap ack info from last SACK. otherwise, renegging (which our simulation doesn't do) or out of order SACKs would give the sender an incorrect view of the peer's rwnd. in other words, if a SACK doesn't gap ack a chunk which was previously gap acked, the sender must reflect this change and make the chunk outstanding again. - modified all emails to spam-blocking syntax. why? cause this code gets posted on the net, and we have been receiving an increasing amount of spam since the first posting of this code. - bug fix. COOKIE_ECHO wasn't handled correctly when received in the ESTABLISHED state. so under conditions where the COOKIE_ACK was lost, the association never established. one side would remain in the COOKIE_ECHOED state, while the other remained in the ESTABLISHED state. report and bug fix by Martin Duke - bug fix. Timeouts on INIT and COOKIE_ECHO chunks were not backing off their timers properly or applying the Max.Init.Retransmits limit. report and bug fix by Martin Duke - bug fix. Heartbeats were scheduled before assocation was established. So in extreme situations where INITs are repeatedly lost, HBs were sent before the association was established. Also new test case & output to ensure that this bug is fixed. report and bug fix by Martin Duke - fixed typo in README - added tcl bindable option to make all retransmissions go to the same destination unless it is inactive. this is experimental behavior. -------------------------------------------------------------------------------- release 3.1 (2002-07-02) - bug fix. calculation error for rtt updates on heartbeat acks. - bug fix. rtx timer wasn't being restarted when the first outstanding on a destination wasn't the first one in the send buffer for that destination. - bug fix. retransmissions were sometimes running into probs in that oustanding bytes and peer rwnd were not accurate. - added a tcl boundable variable 'ipHeaderSize_' which sets the IP header size. the default is 20 bytes (IPv4 without any options). NOTE: this has changed from the previous constant of 40 bytes for IPv6. it has been changed to match the TCP default. - bug fix. sometimes failovers were incorrectly restored. - bug fix. "A destination transport address is considered "idle" if no new chunk which can be used for updating path RTT (usually including first transmission DATA, INIT, COOKIE ECHO, HEARTBEAT etc.) and no HEARTBEAT has been sent to it within the current heartbeat period of that address." However, the code was incorrectly counting retransmissions. - added support for the "close" command. now the application stop command can be used in the tcl scripts to close the connection. (eg, "ftp0 stop") - added rudimentary fragmentation for legacy applications. the idea was not to really have SCTP fragmentation (which would involve more complexity), but instead insert a shim for backwards compatibility (eg, "ftp send 12000"). so a message which doesn't fit into a single packet is broken up for SCTP, so that SCTP doesn't have to fragment. report by Sumathi Elangovan - some rtx bug fixes. - updated sctp.README to include list and description of sctp provided "commands", which are definitely needed for multihoming. - added support for ns-2's standard debug_ flag, which simply sets all bits in the debugMask_ - fixed bugs which were causing some ns-2 validation scripts to fail. test-suite-wireless-lan-tora crashes with a bus error, but that isn't sctp's fault; it crashed with the original ns version 2.1b8. - added support for sampling based tracing by introducing the "print" command. request/report by ShaoJian Fu (Jerick) . - bug fix. the cwnd and rwnd gating was ignoring app msg size, and the code incorrectly assumed an infinite data source (eg, ftp). report by Sumathi Elangovan . - bug fix. probes were sending empty sctp packets with no chunks. report by Janardhan Iyengar - bug fix. incorrectly included the padded bytes in the chunk length field. report and fix by Denio Mariz - added test suite for sctp, thanks to Gerard Heinz - fixed heartbeat structure/packet so that it meets the 2-byte boundary requirement for SPARC architectures - MAJOR bug fix. crashed sometimes during calls to Tcl_Write(). - added sctp support to cmu-trace (with help of from Florina Almenárez ) -------------------------------------------------------------------------------- release 3.0 (2002-4-23) - added support for: 6.4 Multi-homed SCTP Endpoints 8.1 Endpoint Failure Detection 8.2 Path Failure Detection 8.3 Path Heartbeat (without upper layer control) - incorporated implementor's guide (up to -04) changes o reset partial_bytes_acked upon detection of packet losses o cwnd gated by its full use while in Slow Start mode o new fast rtx algorithm - revamped rtx code to fix fast rtx and timeout rtx related bugs - fixed memory leaks - wireless/mobile node related bug fix (reported by Zhengliang Yi ) - AppData's bug fix related to msgs < 16 bytes (reported by Denio Mariz ) - minor bug fix by Mohammed Atiquzzaman -------------------------------------------------------------------------------- release 2.2 (2002-1-9) - bug fixes o slow start calculation in AdjustCwnd(), found by Ye Guanhua o always sacked first incoming packet at beginning of association -------------------------------------------------------------------------------- release 2.1 (2001-10-2) - bug fix (uninitialized uiAdvancedPeerAckPoint) -------------------------------------------------------------------------------- release 2 (2001-8-22) - upper layer ns-2 API supports legacy ns-2 apps and future sctp-aware apps - supports unreliable data mode extension - bug fixes -------------------------------------------------------------------------------- release 1 (2001-7-11) - original release