NAME

  InitCwndWhenSACK2.seq - The cwnd MUST be increased 1 PMTU if size of outstanding DATA chunk(s) acknowledged is larger than PMTU


PURPOSE

  To check that if an incoming SACK advances the Cumulative TSN Ack
  Point, and the total size of the previously outstanding DATA chunk(s)
  acknowledged is larger than PMTU, cwnd is increased 1 PMTU.


SYNOPSIS

  ./InitCwndWhenSACK2.seq [-tooloption ...] -pkt ./InitCwndWhenSACK2.def
    -tooloption : v6eval tool option
  See Also: ../common/STD_PKT_COMMON.def
            ../common/SCTP_COMMON.def


PRE-TEST CONDITION

  Association is established between endpoint A and B. Arrange data 
  in endpoint B such that DATA chunk is sent to endpoint A.


TEST PROCEDURE

  Endpoint A                           Endpoint B                ULP
  (ESTABLISHED)                        (ESTABLISHED)
                                                  <-----    Send
                  <----------------       DATA 1
  Don't Send SACK  
                  <----------------       DATA 2
  Don't Send SACK  
                  <----------------       DATA 3
  Don't Send SACK  
                  <----------------       DATA 4
  Don't Send SACK  
  SACK            ----------------->
  (From DATA 1 to DATA 2)
  SACK            ----------------->
  (From DATA 3 to DATA 4)
                  <----------------       DATA 5
  SACK            ----------------->
  TEST DESCRIPTION:
  1. Check A: the initial cwnd before DATA transmission is set to 4380.
  2. From endpoint B, send valid DATA message 5 times to endpoint B,
     when there is association between them.
  3. From endpoint A, after received 4 DATA message, send SACK of the
     first 2 DATA messages to endpoint B.
  4. Check B: Congestion control window is 5880 now.
  5. Received and SACK the rest DATA messages.


NOTE

  None


REFERENCE

  RFC 4960
  7.2.1.  Slow-Start
    Beginning data transmission into a network with unknown conditions or
    after a sufficiently long idle period requires SCTP to probe the
    network to determine the available capacity.  The slow-start
    algorithm is used for this purpose at the beginning of a transfer, or
    after repairing loss detected by the retransmission timer.
    o  The initial cwnd before DATA transmission or after a sufficiently
       long idle period MUST be set to min(4*MTU, max (2*MTU, 4380
       bytes)).
    o  The initial cwnd after a retransmission timeout MUST be no more
       than 1*MTU.
    o  The initial value of ssthresh MAY be arbitrarily high (for
       example, implementations MAY use the size of the receiver
       advertised window).
    o  Whenever cwnd is greater than zero, the endpoint is allowed to
       have cwnd bytes of data outstanding on that transport address.
    o  When cwnd is less than or equal to ssthresh, an SCTP endpoint MUST
       use the slow-start algorithm to increase cwnd only if the current
       congestion window is being fully utilized, an incoming SACK
       advances the Cumulative TSN Ack Point, and the data sender is not
       in Fast Recovery.  Only when these three conditions are met can
       the cwnd be increased; otherwise, the cwnd MUST not be increased.
       If these conditions are met, then cwnd MUST be increased by, at
       most, the lesser of 1) the total size of the previously
       outstanding DATA chunk(s) acknowledged, and 2) the destination's
       path MTU.  This upper bound protects against the ACK-Splitting
       attack outlined in [SAVAGE99].
    In instances where its peer endpoint is multi-homed, if an endpoint
    receives a SACK that advances its Cumulative TSN Ack Point, then it
    should update its cwnd (or cwnds) apportioned to the destination
    addresses to which it transmitted the acknowledged data.  However, if
    the received SACK does not advance the Cumulative TSN Ack Point, the
    endpoint MUST NOT adjust the cwnd of any of the destination
    addresses.