sctp.CHANGES
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:22k
- release 3.7 (2007-06-15)
- - merged the Concurrent Multipath Transfer with Potentially Failed(CMT-PF)
- extension to CMT. To use CMT-PF, set useCmtPF tcl bindable variable to 1
- at the sender. Cwnd (in MTUs) can be set to 1 or 2 after HB-ACK is
- received at the sender. The variable to set cwnd is cmtPFCwnd and default
- value is 2.
-
- - added new feature to confirm destination addresses before data transfer
- begins (RFC 4460 section 5.4). After receiving INIT_ACK, the INIT sender
- transmits HEARTBEATs to all destinations. A destination is confirmed upon
- receipt of HB-ACK. RFC allows data transfer to any confirmed destination.
- However, this implementation is more conservative, since, data transfer
- begins only when all destionations are confirmed. Destination Address(es)
- confirmation is not implemented for receiver of the INIT.
-
- - bug fix. During the failure, CMT with RTX_ASAP goes into infinite loop
- while selecting destination for retransmission. This was fixed so that
- all destination addresses are considered for retransmissions irrespective
- of the argument passed to SelectRtxDest().
-
- - Default Rtx. policy for CMT and CMT-PF is changed from RTX_TO_SAME to
- RTX_CWND in ns-default.tcl.
-
- - Tcl bindable variable oneHeartbeatTimer is removed. oneHeartbeatTimer
- was used to toggle the use of one HEARTBEAT timer for all destinations or
- a timer per destination. For destination confirmation, each destination
- needs its own HEARTBEAT timer, so the implementation is changed to have
- one HeartbeatGenTimer per association and one HeartbeatTimeoutTimer per
- destination. The semantics for tcl bindable variable heartbeatInterval
- didn't change.
-
- - New validation tests for SCTP, CMT and CMT-PF are added.
-
- - Documentation for CMT and CMT-PF is updated in sctp.README file and
- example scripts are provided to run experiments using CMT and CMT-PF.
- -------------------------------------------------------------------------------
- release 3.6 (2006-06-16)
- - merged the Concurrent Multipath Transfer (CMT) extension to SCTP. To
- use it, set useCmtReordering, useCmtCwnd and useCmtDelAck 1 at the
- sender, and useCmtDelAck and useDelayedSacks to 1 at the
- receiver. You can turn OFF the DAC algorithm by setting useCmtDelAck
- to 0 at both the sender and the receiver. These variables will
- (hopefully) get consolidated by the next release.
- -------------------------------------------------------------------------------
- release 3.5 (2005-09-15)
- - fixed problem with HB pkt size being dependent on arch. 32-bit and
- 64-bit architectures had different size HB pkts due to the hack I
- had with a dest pointer in the packet payload.
- - added new extensions which combines MultipleFastRtx and Timestamp
- extensions. It's called MfrTimestamp.
- - bug fix. The tcl bindable initial cwnd was only setting the cwnd
- before data was ever sent, but was not propagated down to other
- appropriate places, such as after cwnd reductions due to loss or idle
- periods.
- - added the two-level threshold algorithm. The changePrimaryThresh_
- variable can be used in tcl scripts to set the beta threshold for
- automatically changing the primary destination after some path error
- count is exceeded.
- - added a new feature to allow us to simulate overheads of reactive
- routing protocols used in MANETs. The purpose is to be able to see
- how features like failover, heartbeating, etc function with such
- routing protocols, without having to actually simulate MANETs in
- ns. Two TCL bindable variables have been added: routeCalcDelay_ and
- routeCacheLifetime_. Also, two traceable variables, timeoutCount_ and
- rcdCount_, have been added to track the occurance and total number of
- timeouts and route calculation delays.
-
- - bug fix. Stephan Baucke noticed that sometimes wrong RTT samples are
- taken due to a flaw in the implementation of Karn's algorithm. He
- also provided the fix, which is only two lines of code: 1 in
- FastRtx() and 1 in Timeout().
- - added a TCL bindable variable, dormantAction_. This variable controls
- the action the sender takes when in the dormant state (ie, all
- destinations have failed). The possible choices are DORMANT_HOP (0),
- DORMANT_PRIMARY (1), and DORMANT_LASTDEST (2). DORMANT_HOP means the
- sender keeps hopping to different destinations each time a timeout
- occurs. DORMANT_PRIMARY means that the sender uses only the
- primary. DORMANT_LASTDEST means that the sender continues to use the
- last destination used before the dormant state was entered.
- - modified HB interval calculation to reflect the change in the
- implementer's guide. The jitter applied to a heartbeat was meant to
- be a small variance of the RTO, but the RFC's wording currently
- implies a wide variance due. The implementer's guide modifies the
- wording to be "On an idle destination address that is
- allowed to heartbeat, a HEARTBEAT chunk is RECOMMENDED to be sent
- once per RTO of that destination address plus the protocol parameter
- 'HB.interval' , with jittering of +/- 50% of the RTO value"
- - bug fix. HBs with one heartbeat timer wasn't sending another HB
- immediately after a timed out HB. However, this fix causes another
- bug, which I can't fix without making signficant changes (which I
- don't want to do now). The problem is that since not much state is
- maintained for HBs, an outstanding HB may be forgotten about if
- another HB is sent to any destination before the outstanding HB gets
- acked or times out. This behavior may cause some occasional quirks
- such as incorrect RTT measurements, extended failure periods,
- etc. I'll need to address this issue at a later point in time.
- - added two traceable variables (frCount_, mfrCount_) which allows you
- to track the number of times that fast retransmit and multiple fast
- retransmit get invoked. These counters are incremented each time the
- algorithm is invoked, and NOT for each tsn. frCount_ will count only
- the first time a fast rtx is invoked for a tsn(s). mfrCount_ will
- count subsequent fast rtx of already fast rtx'd tsns. Added by
- Armando Caro <acaro@@cis,udel,edu> and Keyur Shah
- <shah@@cis,udel,edu>.
- - bug fix. The way the code is maintaining state for chunks marked for
- retransmission sometimes caused failure detection to take longer than
- Path.Max.Retrans. When a failure occurs, some data may have made it
- through before the failure, but the sacks got lost. When the sender
- retransmits the first outstanding to the alternate destination, the
- receiver will sack all the data whose sacks got lost. We don't want
- these sacks to clear the error counter, or else failover would take
- longer, but this is what the code WAS doing. Now, the error counter
- is cleared by cum acked data ONLY if the TSNs are not marked for
- timeout retransmission. The side-effect to this change is that SACKs
- that arrive late due to RTT spikes will not properly reset the error
- counter. Also, TSNs at the right edge of the window are many times
- unnecessarily marked for retransmission during timeout; so when the
- SACKs for these TSNs arrive, they cannot clear the error counter
- either. These changes also affects RTT updates.
- - bug fix. The recover variables for fast rtx (both for plain fast rtx
- and multiple fast rtx) were not being set correctly. The code was
- just using the last tsn in the send buffer, which is not always the
- highest outstanding at any given point in time.
- - bug fix. HbAfterRto should not send a HB after an RTO if the timeout
- retransmission is being sent to the same destination. In other words,
- if there are no active alternate destinations, then the data
- retransmission must go to the same destination regardless of the
- retransmission policy.
- - bug fix. Under some scenarios when the cumack moved, newly acked TSNs
- were not clearing the error counter for the destination it was
- sent. Now anytime a TSN is newly acked by either a new cumack or
- GapAck, the error counter for that TSN's destination is cleared.
- - bug fix. RtxMarkedChunks was controlling the Max.Burst and
- BundleControlChunks too soon, and could potentially miscount the
- burst or transmit packets that ONLY had control chunks. We didn't
- observe any such scenarios, but the change should avoid this
- possibility. Report and fix by Jana Iyengar <iyengar@@cis,udel,edu>.
- - bug fix. If a TSN is retransmitted to an alternate destination and it
- is lower than the lowest TSN outstanding on that alternate
- destination, the timer for that alternate destination should be
- restarted. This wasn't happening. Report by Jana Iyengar
- <iyengar@@cis,udel,edu>.
- - bug fix. Heartbeats were not being generated using a jittering
- interval of 15-45 secs. For some reason, they were being generated at
- 16 sec intervals.
- - Made initial RTO, min RTO, max RTO, fast rtx trigger, and sack delay
- tcl bindable variables.
- - bug fix. Retransmissions were not properly calculating the peer
- rwnd. (I have no clue why this wasn't caught earlier!)
- - added another extension (called MfrHbAfterRto) which combines
- MultipleFastRtx and HbAfterRto.
- - added another experimental retransmission policy for multihomed
- hosts. Setting rtxToAlt_ to 2, fast rtx goes to the same destination
- and timeout rtx goes to an alternate destination.
- - merged sctp-newreno extension into the core of sctp. Since the
- NewReno changes are now in the implementer's guide, it makes sense to
- make the main version of SCTP include these changes. With NewReno as
- the base SCTP, I pushed the changes into the SCTP extensions
- (sctp-hbAfterRto, sctp-multipleFastRtx, sctp-timestamp)
- - first release since SCTP was merged into ns-2's main distribution. We
- have now dropped support for ns-allinone-2.1b8.
- --------------------------------------------------------------------------------
- release 3.4 (2003-08-14)
- - bug fix. DupTsns were not being deleted properly in
- DeleteNode(). Report and fix by Tonci Juric
- <tonci.juric@@ericsson,com>.
- - 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
- <ladha@@cis,udel,edu> and Patricio Barletta <patricio@@fuegolabs,com>.
- - bug fix. ClearList() wasn't using the list passed in. Report and fix
- by Patricio Barletta <patricio@@fuegolabs,com>.
- - 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黿en
- <Michael.Tuexen@@micmac,franken,de>
- - bug fix. Timeouts were not resetting missing report counter. Report
- by Patricio Barletta <patricio@@fuegolabs,com>.
- - 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
- <stephan.baucke@@ericsson,com>.
- - 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 <stephan.baucke@@ericsson,com>,
- Marcello Pantaleo <Marcello.Pantaleo@@eed,ericsson,se>, and
- Damir Prusac <Damir.Prusac@@eed,ericsson,se>.
- - 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
- <stephan.baucke@@ericsson,com>, Marcello Pantaleo
- <Marcello.Pantaleo@@eed,ericsson,se>, and Damir Prusac
- <Damir.Prusac@@eed,ericsson,se>.
- - 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 <martin.duke@@boeing,com>
- - 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 <martin.duke@@boeing,com>
- - 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 <martin.duke@@boeing,com>
- - 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 <Sumathi.Elangovan@@uk,thalesgroup,com>
- - 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) <sfu@@ou,edu>.
- - 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 <Sumathi.Elangovan@@uk,thalesgroup,com>.
- - bug fix. probes were sending empty sctp packets with no
- chunks. report by Janardhan Iyengar <iyengar@@cis,udel,edu>
- - bug fix. incorrectly included the padded bytes in the chunk length
- field. report and fix by Denio Mariz <dmts@@cin,ufpe,br>
- - added test suite for sctp, thanks to Gerard Heinz <heinz@@cis,udel,edu>
- - 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醨ez
- <florina@@it,uc3m,es>)
- --------------------------------------------------------------------------------
- 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
- <yizhengl@@hotmail,com>)
- - AppData's bug fix related to msgs < 16 bytes (reported by Denio Mariz
- <dmts@@cin,ufpe,br>)
- - minor bug fix by Mohammed Atiquzzaman <atiq@@ou,edu>
- --------------------------------------------------------------------------------
- release 2.2 (2002-1-9)
- - bug fixes
- o slow start calculation in AdjustCwnd(), found by Ye Guanhua
- <yegh98@@yahoo.com>
- 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