09 May, 2011

1 commit

  • TCP Cubic keeps a metric that estimates the amount of delayed
    acknowledgements to use in adjusting the window. If an abnormally
    large number of packets are acknowledged at once, then the update
    could wrap and reach zero. This kind of ACK could only
    happen when there was a large window and huge number of
    ACK's were lost.

    This patch limits the value of delayed ack ratio. The choice of 32
    is just a conservative value since normally it should be range of
    1 to 4 packets.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    stephen hemminger
     

16 Mar, 2011

1 commit


15 Mar, 2011

6 commits


10 Mar, 2011

1 commit


02 Mar, 2009

1 commit

  • It seems that implementation in yeah was inconsistent to what
    other did as it would increase cwnd one ack earlier than the
    others do.

    Size benefits:

    bictcp_cong_avoid | -36
    tcp_cong_avoid_ai | +52
    bictcp_cong_avoid | -34
    tcp_scalable_cong_avoid | -36
    tcp_veno_cong_avoid | -12
    tcp_yeah_cong_avoid | -38

    = -104 bytes total

    Signed-off-by: Ilpo Järvinen
    Signed-off-by: David S. Miller

    Ilpo Järvinen
     

02 Nov, 2008

1 commit


01 May, 2008

1 commit

  • Rename div64_64 to div64_u64 to make it consistent with the other divide
    functions, so it clearly includes the type of the divide. Move its definition
    to math64.h as currently no architecture overrides the generic implementation.
    They can still override it of course, but the duplicated declarations are
    avoided.

    Signed-off-by: Roman Zippel
    Cc: Avi Kivity
    Cc: Russell King
    Cc: Geert Uytterhoeven
    Cc: Ralf Baechle
    Cc: David Howells
    Cc: Jeff Dike
    Cc: Ingo Molnar
    Cc: "David S. Miller"
    Cc: Patrick McHardy
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Roman Zippel
     

05 Mar, 2008

1 commit

  • We have updated CUBIC to fix some issues with slow increase in large
    BDP networks. We also improved its convergence speed. The fix is in
    fact very simple -- the window increase limit of smax during the
    window probing phase (i.e., convex growth phase) is removed. We found
    that this does not affect TCP friendliness, but only improves its
    scalability. We have run some tests in our lab and also over the
    Internet path from NCSU to Japan. These results can be seen from the
    following page:

    http://netsrv.csc.ncsu.edu/wiki/index.php/Intra_protocol_fairness_testing_with_linux-2.6.23.9
    http://netsrv.csc.ncsu.edu/wiki/index.php/RTT_fairness_testing_with_linux-2.6.23.9
    http://netsrv.csc.ncsu.edu/wiki/index.php/TCP_friendliness_testing_with_linux-2.6.23.9

    Signed-off-by: Sangtae Ha
    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Sangtae Ha
     

29 Jan, 2008

1 commit


11 Oct, 2007

1 commit


31 Jul, 2007

2 commits

  • Remove use of received timestamp option value from RTT calculation in Cubic.
    A hostile receiver may be returning a larger timestamp option than the original
    value. This would cause the sender to believe the malevolent receiver had
    a larger RTT and because Cubic tries to provide some RTT friendliness, the
    sender would then favor the liar.

    Instead, use the jiffie resolutionRTT value already computed and
    passed back after ack.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Stephen Hemminger
     
  • This patch changes the API for the callback that is done after an ACK is
    received. It solves a couple of issues:

    * Some congestion controls want higher resolution value of RTT
    (controlled by TCP_CONG_RTT_SAMPLE flag). These don't really want a ktime, but
    all compute a RTT in microseconds.

    * Other congestion control could use RTT at jiffies resolution.

    To keep API consistent the units should be the same for both cases, just the
    resolution should change.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Stephen Hemminger
     

18 Jul, 2007

1 commit


13 Jun, 2007

1 commit


26 Apr, 2007

5 commits

  • Do some simple changes to make congestion control API faster/cleaner.
    * use ktime_t rather than timeval
    * merge rtt sampling into existing ack callback
    this means one indirect call versus two per ack.
    * use flags bits to store options/settings

    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Stephen Hemminger
     
  • The following update received from Injong updates TCP cubic to the latest
    version. I am running more complete tests and will have results after 4/1.

    According to Injong: the new version improves on its scalability,
    fairness and stability. So in all properties, we confirmed it shows better
    performance.

    NCSU results (for 2.6.18 and 2.6.20) available:
    http://netsrv.csc.ncsu.edu/wiki/index.php/TCP_Testing

    This version is described in a new Internet draft for CUBIC.
    http://www.ietf.org/internet-drafts/draft-rhee-tcp-cubic-00.txt

    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Stephen Hemminger
     
  • Use willy's work in optimizing cube root by having table for small values.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Stephen Hemminger
     
  • The Newton-Raphson method is quadratically convergent so
    only a small fixed number of steps are necessary.
    Therefore it is faster to unroll the loop. Since div64_64 is no longer
    inline it won't cause code explosion.

    Also fixes a bug that can occur if x^2 was bigger than 32 bits.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Stephen Hemminger
     
  • Here is the current version of the 64 bit divide common code.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Stephen Hemminger
     

13 Feb, 2007

1 commit


11 Feb, 2007

1 commit


26 Oct, 2006

1 commit

  • Doug Leith observed a discrepancy between the version of CUBIC described
    in the papers and the version in 2.6.18. A math error related to scaling
    causes Cubic to grow too slowly.

    Patch is from "Sangtae Ha" . I validated that
    it does fix the problems.

    See the following to show behavior over 500ms 100 Mbit link.

    Sender (2.6.19-rc3) --- Bridge (2.6.18-rt7) ------- Receiver (2.6.19-rc3)
    1G [netem] 100M

    http://developer.osdl.org/shemminger/tcp/2.6.19-rc3/cubic-orig.png
    http://developer.osdl.org/shemminger/tcp/2.6.19-rc3/cubic-fix.png

    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Stephen Hemminger
     

23 Sep, 2006

1 commit


01 Jul, 2006

1 commit


18 Jun, 2006

1 commit

  • Many of the TCP congestion methods all just use ssthresh
    as the minimum congestion window on decrease. Rather than
    duplicating the code, just have that be the default if that
    handle in the ops structure is not set.

    Minor behaviour change to TCP compound. It probably wants
    to use this (ssthresh) as lower bound, rather than ssthresh/2
    because the latter causes undershoot on loss.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Stephen Hemminger
     

04 Jan, 2006

3 commits

  • Replace cube root algorithim with a faster version using Newton-Raphson.
    Surprisingly, doing the scaled div64_64 is faster than a true 64 bit
    division on 64 bit CPU's.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Stephen Hemminger
     
  • Revised version of patch to pre-compute values for TCP cubic.
    * d32,d64 replaced with descriptive names
    * cube_factor replaces
    srtt[scaled by count] / HZ * ((1 << (10+2*BICTCP_HZ)) / bic_scale)
    * beta_scale replaces
    8*(BICTCP_BETA_SCALE+beta)/3/(BICTCP_BETA_SCALE-beta);

    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Stephen Hemminger
     
  • Replace existing BIC version 1.1 with new version 2.0.
    The main change is to replace the window growth function
    with a cubic function as described in:
    http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/cubic-paper.pdf

    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Stephen Hemminger