lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20110322113456.GA21254@xanadu.blop.info>
Date:	Tue, 22 Mar 2011 12:34:56 +0100
From:	Lucas Nussbaum <lucas.nussbaum@...ia.fr>
To:	Stephen Hemminger <shemminger@...tta.com>
Cc:	"David S\. Miller" <davem@...emloft.net>, netdev@...r.kernel.org
Subject: Re: [PATCH 0/7] TCP CUBIC Hystart fixes

On 14/03/11 at 10:52 -0700, Stephen Hemminger wrote:
> This is the merge of my patches and recent update Sangtae.
> It addresses the problems reported by Lucas Nussbaum that Hystart causes
> poor startup performance over links with lots of buffering.

Hi,

I've tested the patches, and they work fine.

Here are some results (gigabit link, RTT=11ms).

Without the patches, hystart disabled:
 Segments (cwnd, ssthresh)
   2500 ++-----------+-------------+------------+-------------+-----------++
        +            +             +            +          snd_cwnd ****** +
        |                                              snd_ssthresh ###### |
   2000 ++       *************************************************        ++
        |       **                                                         |
        |       *                                                          |
        |       *                                                          |
   1500 ++      *                                                         ++
        |       *                                                          |
        |       *                                                          |
   1000 ++      *                                                         ++
        |      **                                                          |
        |      *                                                           |
        |      *                                                           |
    500 ++     *                                                          ++
        |     **                                                           |
        +    **      +             +            +             +            +
      0 ++-***####################################################--------++
        0           0.5            1           1.5            2           2.5
                                  time (seconds)

Without the patches, hystart enabled:
 Segments (cwnd, ssthresh)
   300 ++------------+------------+-------------+------------+------------++
       +             +            +             +          snd_cwnd ****** +
       |                                            ***snd_ssthresh ###### |
   250 ++                     ***********************                     ++
       |     ******************###################################         |
       |     *                                                             |
   200 ++    *                                                            ++
       |     *                                                             |
   150 ++    *                                                            ++
       |     *                                                             |
       |     *                                                             |
   100 ++   **                                                            ++
       |    *#                                                             |
       |    *#                                                             |
    50 ++   *#                                                            ++
       |   **#                                                             |
       +  ** #       +            +             +            +             +
     0 ++-*###-------+------------+-------------+------------+------------++
       0            0.5           1            1.5           2            2.5
                                  time (seconds)

Note how slow start ends very early (~ 230 segments), resulting in poor performance.

With the patches, hystart enabled, run 1:
 Segments (cwnd, ssthresh)
   2500 ++-----+-------+------+-------+------+-------+------+-------+-----++
        +      +       +      +       +      +       +     snd_cwnd ****** +
        |                                              snd_ssthresh ###### |
   2000 ++   *********************************************************    ++
        |    *                                                             |
        |    *                                                             |
        |    *                                                             |
   1500 ++   *                                                            ++
        |    *                                                             |
        |   **                                                             |
   1000 ++  *                                                             ++
        |   *                                                              |
        |   *                                                              |
        |   *                                                              |
    500 ++  *                                                             ++
        |  **                                                              |
        +  *   +       +      +       +      +       +      +       +      +
      0 ++**##########################################################----++
        0     0.5      1     1.5      2     2.5      3     3.5      4     4.5
                                  time (seconds)

There's no perceived delay increase, but also no losses. The NIC sends data at
line rate without congestion. we don't exit slow start, but that's fine:

With the patch, hystart enabled, run 2: (that's the most frequent situation)
 Segments (cwnd, ssthresh)
   2500 ++-----+-------+------+-------+------+-------+------+-------+-----++
        +      +       +      +       +      +       +     snd_cwnd ****** +
        |                                              snd_ssthresh ###### |
   2000 ++    ********************************************************    ++
        |     *#                                                           |
        |     *#                                                           |
        |     *#                                                           |
   1500 ++    *#                                                          ++
        |     *#                                                           |
        |     *#                                                           |
   1000 ++   **#                                                          ++
        |    * #                                                           |
        |    * #                                                           |
        |    * #                                                           |
    500 ++  ** #                                                          ++
        |   *  #                                                           |
        +  **  #       +      +       +      +       +      +       +      +
      0 ++**####-------+------+-------+------+-------+------+-------+-----++
        0     0.5      1     1.5      2     2.5      3     3.5      4     4.5
                                  time (seconds)

Hystart detects a delay increase, so we exit slow start, but at a reasonable point.
Hystart works fine in that case. (no impact on performance).

With the patch, hystart enabled, run 3:
 Segments (cwnd, ssthresh)
   2500 ++-----+-------+------+-------+------+-------+------+-------+-----++
        +      +       +      +       +      +       +     snd_cwnd ****** +
        |                                              snd_ssthresh ###### |
   2000 ++     *******************************************************    ++
        |      *                                                           |
        |     **                                                           |
        |     *                                                            |
   1500 ++   **#######################################################    ++
        |    *#                                                            |
        |    *#                                                            |
   1000 ++   *#                                                           ++
        |    *#                                                            |
        |   **#                                                            |
        |   * #                                                            |
    500 ++  * #                                                           ++
        |   * #                                                            |
        +  ** #+       +      +       +      +       +      +       +      +
      0 ++**###+-------+------+-------+------+-------+------+-------+-----++
        0     0.5      1     1.5      2     2.5      3     3.5      4     4.5
                                  time (seconds)

Hystart causes slow start to end a bit too early, but late enough not to affect
performance significantly. Hystart behaves fine in that case too.


Tested-By: Lucas Nussbaum <lucas.nussbaum@...ia.fr>
-- 
| Lucas Nussbaum             MCF Université Nancy 2 |
| lucas.nussbaum@...ia.fr         LORIA / AlGorille |
| http://www.loria.fr/~lnussbau/  +33 3 54 95 86 19 |
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ