sctp.CHANGES
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:22k
源码类别:

通讯编程

开发平台:

Visual C++

  1. release 3.7 (2007-06-15)
  2.    - merged the Concurrent Multipath Transfer with Potentially Failed(CMT-PF)
  3.      extension to CMT. To use CMT-PF, set useCmtPF tcl bindable variable to 1 
  4.      at the sender. Cwnd (in MTUs) can be set to 1 or 2 after HB-ACK is 
  5.      received at the sender. The variable to set cwnd is cmtPFCwnd and default
  6.      value is 2.
  7.    - added new feature to confirm destination addresses before data transfer
  8.      begins (RFC 4460 section 5.4). After receiving INIT_ACK, the INIT sender
  9.      transmits HEARTBEATs to all destinations. A destination is confirmed upon
  10.      receipt of HB-ACK. RFC allows data transfer to any confirmed destination. 
  11.      However, this implementation is more conservative, since, data transfer
  12.      begins only when all destionations are confirmed. Destination Address(es)
  13.      confirmation is not implemented for receiver of the INIT.
  14.    
  15.    - bug fix. During the failure, CMT with RTX_ASAP goes into infinite loop 
  16.      while selecting destination for retransmission. This was fixed so that 
  17.      all destination addresses are considered for retransmissions irrespective
  18.      of the argument passed to SelectRtxDest(). 
  19.    
  20.    - Default Rtx. policy for CMT and CMT-PF is changed from RTX_TO_SAME to 
  21.      RTX_CWND in ns-default.tcl.
  22.    
  23.    - Tcl bindable variable oneHeartbeatTimer is removed. oneHeartbeatTimer 
  24.      was used to toggle the use of one HEARTBEAT timer for all destinations or
  25.      a timer per destination. For destination confirmation, each destination 
  26.      needs its own HEARTBEAT timer, so the implementation is changed to have 
  27.      one HeartbeatGenTimer per association and one HeartbeatTimeoutTimer per
  28.      destination. The semantics for tcl bindable variable heartbeatInterval 
  29.      didn't change.
  30.   
  31.    - New validation tests for SCTP, CMT and CMT-PF are added.
  32.    - Documentation for CMT and CMT-PF is updated in sctp.README file and 
  33.      example scripts are provided to run experiments using CMT and CMT-PF. 
  34. -------------------------------------------------------------------------------
  35. release 3.6 (2006-06-16)
  36.    - merged the Concurrent Multipath Transfer (CMT) extension to SCTP. To
  37.      use it, set useCmtReordering, useCmtCwnd and useCmtDelAck 1 at the
  38.      sender, and useCmtDelAck and useDelayedSacks to 1 at the
  39.      receiver. You can turn OFF the DAC algorithm by setting useCmtDelAck
  40.      to 0 at both the sender and the receiver. These variables will
  41.      (hopefully) get consolidated by the next release.
  42. -------------------------------------------------------------------------------
  43. release 3.5 (2005-09-15)
  44.    - fixed problem with HB pkt size being dependent on arch. 32-bit and
  45.      64-bit architectures had different size HB pkts due to the hack I
  46.      had with a dest pointer in the packet payload.
  47.    - added new extensions which combines MultipleFastRtx and Timestamp
  48.      extensions. It's called MfrTimestamp.
  49.    - bug fix. The tcl bindable initial cwnd was only setting the cwnd
  50.      before data was ever sent, but was not propagated down to other
  51.      appropriate places, such as after cwnd reductions due to loss or idle
  52.      periods. 
  53.    - added the two-level threshold algorithm. The changePrimaryThresh_
  54.      variable can be used in tcl scripts to set the beta threshold for
  55.      automatically changing the primary destination after some path error
  56.      count is exceeded.
  57.    - added a new feature to allow us to simulate overheads of reactive
  58.      routing protocols used in MANETs. The purpose is to be able to see
  59.      how features like failover, heartbeating, etc function with such
  60.      routing protocols, without having to actually simulate MANETs in
  61.      ns. Two TCL bindable variables have been added: routeCalcDelay_ and
  62.      routeCacheLifetime_. Also, two traceable variables, timeoutCount_ and
  63.      rcdCount_, have been added to track the occurance and total number of
  64.      timeouts and route calculation delays.
  65.      
  66.    - bug fix. Stephan Baucke noticed that sometimes wrong RTT samples are
  67.      taken due to a flaw in the implementation of Karn's algorithm. He
  68.      also provided the fix, which is only two lines of code: 1 in
  69.      FastRtx() and 1 in Timeout().
  70.    - added a TCL bindable variable, dormantAction_. This variable controls
  71.      the action the sender takes when in the dormant state (ie, all
  72.      destinations have failed). The possible choices are DORMANT_HOP (0),
  73.      DORMANT_PRIMARY (1), and DORMANT_LASTDEST (2). DORMANT_HOP means the
  74.      sender keeps hopping to different destinations each time a timeout
  75.      occurs. DORMANT_PRIMARY means that the sender uses only the
  76.      primary. DORMANT_LASTDEST means that the sender continues to use the
  77.      last destination used before the dormant state was entered.
  78.    - modified HB interval calculation to reflect the change in the
  79.      implementer's guide. The jitter applied to a heartbeat was meant to
  80.      be a small variance of the RTO, but the RFC's wording currently
  81.      implies a wide variance due. The implementer's guide modifies the
  82.      wording to be "On an idle destination address that is
  83.      allowed to heartbeat, a HEARTBEAT chunk is RECOMMENDED to be sent
  84.      once per RTO of that destination address plus the protocol parameter
  85.      'HB.interval' , with jittering of +/- 50% of the RTO value"
  86.    - bug fix. HBs with one heartbeat timer wasn't sending another HB
  87.      immediately after a timed out HB. However, this fix causes another
  88.      bug, which I can't fix without making signficant changes (which I
  89.      don't want to do now). The problem is that since not much state is
  90.      maintained for HBs, an outstanding HB may be forgotten about if
  91.      another HB is sent to any destination before the outstanding HB gets
  92.      acked or times out. This behavior may cause some occasional quirks
  93.      such as incorrect RTT measurements, extended failure periods,
  94.      etc. I'll need to address this issue at a later point in time.
  95.    - added two traceable variables (frCount_, mfrCount_) which allows you
  96.      to track the number of times that fast retransmit and multiple fast
  97.      retransmit get invoked. These counters are incremented each time the
  98.      algorithm is invoked, and NOT for each tsn. frCount_ will count only
  99.      the first time a fast rtx is invoked for a tsn(s). mfrCount_ will
  100.      count subsequent fast rtx of already fast rtx'd tsns. Added by
  101.      Armando Caro <acaro@@cis,udel,edu> and Keyur Shah
  102.      <shah@@cis,udel,edu>. 
  103.    - bug fix. The way the code is maintaining state for chunks marked for
  104.      retransmission sometimes caused failure detection to take longer than
  105.      Path.Max.Retrans. When a failure occurs, some data may have made it
  106.      through before the failure, but the sacks got lost. When the sender
  107.      retransmits the first outstanding to the alternate destination, the
  108.      receiver will sack all the data whose sacks got lost. We don't want
  109.      these sacks to clear the error counter, or else failover would take
  110.      longer, but this is what the code WAS doing. Now, the error counter
  111.      is cleared by cum acked data ONLY if the TSNs are not marked for
  112.      timeout retransmission. The side-effect to this change is that SACKs
  113.      that arrive late due to RTT spikes will not properly reset the error
  114.      counter. Also, TSNs at the right edge of the window are many times
  115.      unnecessarily marked for retransmission during timeout; so when the
  116.      SACKs for these TSNs arrive, they cannot clear the error counter
  117.      either. These changes also affects RTT updates.
  118.    - bug fix. The recover variables for fast rtx (both for plain fast rtx
  119.      and multiple fast rtx) were not being set correctly. The code was
  120.      just using the last tsn in the send buffer, which is not always the
  121.      highest outstanding at any given point in time.
  122.    - bug fix. HbAfterRto should not send a HB after an RTO if the timeout
  123.      retransmission is being sent to the same destination. In other words,
  124.      if there are no active alternate destinations, then the data
  125.      retransmission must go to the same destination regardless of the
  126.      retransmission policy. 
  127.    - bug fix. Under some scenarios when the cumack moved, newly acked TSNs
  128.      were not clearing the error counter for the destination it was
  129.      sent. Now anytime a TSN is newly acked by either a new cumack or
  130.      GapAck, the error counter for that TSN's destination is cleared.
  131.    - bug fix. RtxMarkedChunks was controlling the Max.Burst and
  132.      BundleControlChunks too soon, and could potentially miscount the
  133.      burst or transmit packets that ONLY had control chunks. We didn't
  134.      observe any such scenarios, but the change should avoid this
  135.      possibility. Report and fix by Jana Iyengar <iyengar@@cis,udel,edu>.
  136.    - bug fix. If a TSN is retransmitted to an alternate destination and it
  137.      is lower than the lowest TSN outstanding on that alternate
  138.      destination, the timer for that alternate destination should be
  139.      restarted. This wasn't happening. Report by Jana Iyengar
  140.      <iyengar@@cis,udel,edu>.
  141.    - bug fix. Heartbeats were not being generated using a jittering
  142.      interval of 15-45 secs. For some reason, they were being generated at
  143.      16 sec intervals. 
  144.    - Made initial RTO, min RTO, max RTO, fast rtx trigger, and sack delay
  145.      tcl bindable variables.
  146.    - bug fix. Retransmissions were not properly calculating the peer
  147.      rwnd. (I have no clue why this wasn't caught earlier!)
  148.    - added another extension (called MfrHbAfterRto) which combines
  149.      MultipleFastRtx and HbAfterRto. 
  150.    - added another experimental retransmission policy for multihomed
  151.      hosts. Setting rtxToAlt_ to 2, fast rtx goes to the same destination
  152.      and timeout rtx goes to an alternate destination. 
  153.    - merged sctp-newreno extension into the core of sctp. Since the
  154.      NewReno changes are now in the implementer's guide, it makes sense to
  155.      make the main version of SCTP include these changes. With NewReno as
  156.      the base SCTP, I pushed the changes into the SCTP extensions
  157.      (sctp-hbAfterRto, sctp-multipleFastRtx, sctp-timestamp)
  158.    - first release since SCTP was merged into ns-2's main distribution. We
  159.      have now dropped support for ns-allinone-2.1b8.
  160. --------------------------------------------------------------------------------
  161. release 3.4 (2003-08-14)
  162.    - bug fix. DupTsns were not being deleted properly in
  163.      DeleteNode(). Report and fix by Tonci Juric
  164.      <tonci.juric@@ericsson,com>.
  165.    - bug fix. DupTsns were not cleared once reported, so the same duptsns
  166.      were continously reported until the end of the association. Instead,
  167.      they should be reported once only. Report by Sourabh Ladha
  168.      <ladha@@cis,udel,edu> and Patricio Barletta <patricio@@fuegolabs,com>.
  169.    - bug fix. ClearList() wasn't using the list passed in. Report and fix
  170.      by Patricio Barletta <patricio@@fuegolabs,com>.
  171.    - fix compile error. Some gcc versions were complaining that
  172.      hdr_sctp::offset_ was multiply defined in all the SCTP extensions'
  173.      .cc files. Simply removed declaration from all files except
  174.      sctp.cc. Report and fix by Michael T黿en
  175.      <Michael.Tuexen@@micmac,franken,de>
  176.    - bug fix. Timeouts were not resetting missing report counter.  Report
  177.      by Patricio Barletta <patricio@@fuegolabs,com>.
  178.    - changed default chunk size to 1468 to reflect what avg simulation
  179.      would want 
  180. --------------------------------------------------------------------------------
  181. release 3.3 (2003-07-11)
  182.    - moved from using Random::random() to using Random::uniform() to avoid
  183.      problems with the test suite output conflicts when migrating to new
  184.      versions of ns.
  185.    - removed 2 tests from test suite: sctp-legacyApp and sctp-rebundleChunks.
  186.      they were removed because they use Random::exponential(), which causes
  187.      tests to fail from version to version of ns.
  188.    - new test suite output which reflects changes of random function used.
  189.    - bug fix. Keyur and I found anoamlous behavior when simulating
  190.      specific drops. Sometimes, more drops actually improved
  191.      behavior. Jana and I determined it was a bug. PartialBytesAcked was
  192.      being incorrectly incremented if there were TSNs already GapAcked
  193.      when transitioning from SlowStart to CongestionAvoidance. The TSNs
  194.      GapAcked in SlowStart should not be used to increment
  195.      PartialBytesAcked when the sender goes into CongestionAvoidance.
  196.    - added experimental MultipleFastRtx extension, which implements Caro's
  197.      Algorithm for fast retransmits. The algorithm introduces a
  198.      uiFastRtxRecover variable which maintains the highest tsn outstanding
  199.      at the time of a tsn's retransmit. That way, once a tsn has been
  200.      retransmitted, only missing reports triggered by tsns beyond
  201.      uiFastRtxRecover may trigger yet another fast rtx of the same
  202.      tsn. This extension was Armando Caro's idea.
  203.    - added experimental HbAfterRto extension, which immediately sends a
  204.      heartbeat after a TimeoutRtx. The idea is to give the destinations a
  205.      chance to get an RTT measurement after the RTO is backed off. The
  206.      hope is to avoid unnecessarily large RTOs (especially on the
  207.      alternate destinations). This extension was Randall Stewart's idea.
  208.    - bug fix. GenOneDataChunk() was using the wrong variable for
  209.      incrementing the outstanding bytes, which sometimes created problems
  210.      for non-FTP applications. Report and fix by Stephan Baucke
  211.      <stephan.baucke@@ericsson,com>.
  212.    - added experimental Timestamp extention, which allows RTT measurements
  213.      to be made per packet on both original transmissions and
  214.      retransmissions. This extension was Armando Caro's idea.
  215.    - added experimental extension called NewReno, which introduces
  216.      recovery state similar to that of TCP NewReno to avoid multiple cwnd
  217.      cuts in a single window (ie, round trip). Since SCTP is multihomed,
  218.      recovery state is maintained per destination. This extension was
  219.      actually suggested by Johan Garcia, but implemented by Armando Caro
  220.      and Keyur Shah. However, Randall Stewart already had this feature in
  221.      his KAME implementation, but didn't include the change in the
  222.      implementer's draft (yet).
  223.    - bug fix. According to RFC2960, "RTT measurements SHOULD be made no
  224.      more than once per round-trip for a given destination transport
  225.      address." Although the measurements weren't being done for every DATA
  226.      chunk, they were being done more than once per round-trip.
  227. --------------------------------------------------------------------------------
  228. release 3.2 (2002-12-13)
  229.    - bug fix. If chunks were rebundled differently during retransmissions
  230.      than they were during the original transmissions, the bundling wasn't
  231.      done properly. In particular, the 4-byte boundary padding wasn't
  232.      done. Hence, the receiver tried to read a packet misaligned
  233.      chunks. Report by Stephan Baucke <stephan.baucke@@ericsson,com>,
  234.      Marcello Pantaleo <Marcello.Pantaleo@@eed,ericsson,se>, and
  235.      Damir Prusac <Damir.Prusac@@eed,ericsson,se>. 
  236.    - bug fix. non-sctp aware apps which were trying to use the Agent
  237.      variable size_ as the packet size (or max app write size) were
  238.      failing. The SCTP agent now sets size_ to the max data size of an app
  239.      write for such applications. Report by Stephan Baucke
  240.      <stephan.baucke@@ericsson,com>, Marcello Pantaleo
  241.      <Marcello.Pantaleo@@eed,ericsson,se>, and Damir Prusac
  242.      <Damir.Prusac@@eed,ericsson,se>.
  243.    - bug fix. modified ProcessGapAckBlocks() so that sender only trusts
  244.      gap ack info from last SACK. otherwise, renegging (which our
  245.      simulation doesn't do) or out of order SACKs would give the sender an
  246.      incorrect view of the peer's rwnd. in other words, if a SACK doesn't
  247.      gap ack a chunk which was previously gap acked, the sender must
  248.      reflect this change and make the chunk outstanding again.
  249.    - modified all emails to spam-blocking syntax. why? cause this code
  250.      gets posted on the net, and we have been receiving an increasing
  251.      amount of spam since the first posting of this code.
  252.    - bug fix. COOKIE_ECHO wasn't handled correctly when received in the
  253.      ESTABLISHED state. so under conditions where the COOKIE_ACK was lost,
  254.      the association never established. one side would remain in the
  255.      COOKIE_ECHOED state, while the other remained in the ESTABLISHED
  256.      state. report and bug fix by Martin Duke <martin.duke@@boeing,com>
  257.    - bug fix. Timeouts on INIT and COOKIE_ECHO chunks were not backing off
  258.      their timers properly or applying the Max.Init.Retransmits
  259.      limit. report and bug fix by Martin Duke <martin.duke@@boeing,com>
  260.    - bug fix. Heartbeats were scheduled before assocation was established.
  261.      So in extreme situations where INITs are repeatedly lost, HBs were
  262.      sent before the association was established. Also new test case &
  263.      output to ensure that this bug is fixed. report and bug fix by
  264.      Martin Duke <martin.duke@@boeing,com>
  265.    - fixed typo in README
  266.    - added tcl bindable option to make all retransmissions go to the same
  267.      destination unless it is inactive. this is experimental behavior.
  268. --------------------------------------------------------------------------------
  269. release 3.1 (2002-07-02)
  270.    - bug fix. calculation error for rtt updates on heartbeat acks.
  271.    - bug fix. rtx timer wasn't being restarted when the first outstanding
  272.      on a destination wasn't the first one in the send buffer for that
  273.      destination. 
  274.    - bug fix. retransmissions were sometimes running into probs in that
  275.      oustanding bytes and peer rwnd were not accurate.
  276.    - added a tcl boundable variable 'ipHeaderSize_' which sets the IP
  277.      header size. the default is 20 bytes (IPv4 without any
  278.      options). NOTE: this has changed from the previous constant of 40
  279.      bytes for IPv6. it has been changed to match the TCP default.
  280.    - bug fix. sometimes failovers were incorrectly restored.
  281.    - bug fix. "A destination transport address is considered "idle" if no
  282.      new chunk which can be used for updating path RTT (usually including
  283.      first transmission DATA, INIT, COOKIE ECHO, HEARTBEAT etc.) and no
  284.      HEARTBEAT has been sent to it within the current heartbeat period of
  285.      that address." However, the code was incorrectly counting
  286.      retransmissions.
  287.    - added support for the "close" command. now the application stop
  288.      command can be used in the tcl scripts to close the connection. (eg,
  289.      "ftp0 stop")
  290.    - added rudimentary fragmentation for legacy applications. the idea was
  291.      not to really have SCTP fragmentation (which would involve more
  292.      complexity), but instead insert a shim for backwards compatibility
  293.      (eg, "ftp send 12000"). so a message which doesn't fit into a single
  294.      packet is broken up for SCTP, so that SCTP doesn't have to fragment.
  295.      report by Sumathi Elangovan <Sumathi.Elangovan@@uk,thalesgroup,com>
  296.    - some rtx bug fixes.
  297.    - updated sctp.README to include list and description of sctp provided
  298.      "commands", which are definitely needed for multihoming.
  299.    - added support for ns-2's standard debug_ flag, which simply sets
  300.      all bits in the debugMask_
  301.    - fixed bugs which were causing some ns-2 validation scripts to
  302.      fail. test-suite-wireless-lan-tora crashes with a bus error, but that
  303.      isn't sctp's fault; it crashed with the original ns version 2.1b8.
  304.    - added support for sampling based tracing by introducing the "print"
  305.      command. request/report by ShaoJian Fu (Jerick) <sfu@@ou,edu>.
  306.    - bug fix. the cwnd and rwnd gating was ignoring app msg size, and the
  307.      code incorrectly assumed an infinite data source (eg, ftp). report by
  308.      Sumathi Elangovan <Sumathi.Elangovan@@uk,thalesgroup,com>. 
  309.    - bug fix. probes were sending empty sctp packets with no
  310.      chunks. report by Janardhan Iyengar <iyengar@@cis,udel,edu>
  311.    - bug fix. incorrectly included the padded bytes in the chunk length
  312.      field. report and fix by Denio Mariz <dmts@@cin,ufpe,br>
  313.    - added test suite for sctp, thanks to Gerard Heinz <heinz@@cis,udel,edu>
  314.    - fixed heartbeat structure/packet so that it meets the 2-byte boundary
  315.      requirement for SPARC architectures
  316.    - MAJOR bug fix. crashed sometimes during calls to Tcl_Write().
  317.    - added sctp support to cmu-trace (with help of from Florina Almen醨ez
  318.      <florina@@it,uc3m,es>) 
  319. --------------------------------------------------------------------------------
  320. release 3.0 (2002-4-23)
  321.    - added support for:
  322.       6.4 Multi-homed SCTP Endpoints
  323.       8.1 Endpoint Failure Detection
  324.       8.2 Path Failure Detection
  325.       8.3 Path Heartbeat (without upper layer control)
  326.    - incorporated implementor's guide (up to -04) changes
  327.       o reset partial_bytes_acked upon detection of packet losses
  328.       o cwnd gated by its full use while in Slow Start mode
  329.       o new fast rtx algorithm
  330.    - revamped rtx code to fix fast rtx and timeout rtx related bugs
  331.    - fixed memory leaks
  332.    - wireless/mobile node related bug fix (reported by Zhengliang Yi 
  333.      <yizhengl@@hotmail,com>)
  334.    - AppData's bug fix related to msgs < 16 bytes (reported by Denio Mariz
  335.      <dmts@@cin,ufpe,br>)
  336.    - minor bug fix by Mohammed Atiquzzaman <atiq@@ou,edu>
  337. --------------------------------------------------------------------------------
  338. release 2.2 (2002-1-9)
  339.    - bug fixes
  340.       o slow start calculation in AdjustCwnd(), found by Ye Guanhua
  341.         <yegh98@@yahoo.com> 
  342.       o always sacked first incoming packet at beginning of association
  343. --------------------------------------------------------------------------------
  344. release 2.1 (2001-10-2)
  345.    - bug fix (uninitialized uiAdvancedPeerAckPoint)
  346.    
  347. --------------------------------------------------------------------------------
  348. release 2 (2001-8-22)
  349.    - upper layer ns-2 API supports legacy ns-2 apps and future sctp-aware apps
  350.    - supports unreliable data mode extension
  351.    - bug fixes
  352. --------------------------------------------------------------------------------
  353. release 1 (2001-7-11)
  354.    - original release