Welcome! Log In Create A New Profile

Advanced

Re: 100ms delays in FreeBSD 8.x

Maxim Dounin
September 03, 2010 07:14AM
Hello!

On Fri, Sep 03, 2010 at 01:24:39PM +0400, Igor Sysoev wrote:

> On Fri, Sep 03, 2010 at 01:26:24AM +0300, Vladislav V. Prodan wrote:
>
> > В 9.0-CUPRRENT тоже есть:
> > # sysctl net.inet.tcp | grep del
> > net.inet.tcp.delacktime: 100
> > net.inet.tcp.delayed_ack: 1
> > # uname -a
> > FreeBSD solo.XXXX.biz 9.0-CURRENT FreeBSD 9.0-CURRENT #0: Tue Aug 24
> > 15:52:21 EEST 2010
>
> Проблема не столько в delayed ack, сколько в ошибке,

Игорь, я понимаю что top-posting читать невозможно, но всё таки:
исходная проблема уже никого не интересует, тут люди на полном
серьёзе исследуют вопрос есть ли во FreeBSD delayed ack.

Я уже ответил что он там есть, но почему-то некоторые не верят.
Повторяю подробнее: он там есть, как минимум начиная с 2.0 (был в
4.4BSD Lite), во всех версиях включён по умолчанию, sysctl для
отключения появился где-то в районе 3.0.

> из-за которой
> игнорируются
>
> net.inet.tcp.local_slowstart_flightsize (4)
> net.inet.tcp.slowstart_flightsize (1)
>
> Особенно хорошо это заметно на локальных сетях (в том числе и для
> loopback), для которых используется local_slowstart_flightsize.
> При дефолтном значении slowstart_flightsize (1) ошибка не видна.

Нет. (c)

Slowstart уже давно не используется на старте соединений (если мне
не изменяет память - недавно в current открутили и для рестарта),
вместо него используется выражение из RFC 3390:

if (tcp_do_rfc3390)
tp->snd_cwnd = min(4 * mss, max(2 * mss, 4380));

Не вводи людей в заблуждение. Да и сам из него выйди. ;)

Проблема состоит в том, что из-за ошибки в коде syncache'а cwnd
всегда сбрасывался в 1 * mss (и, кстати, cwnd из hostcache тоже
в результате игнорировался).

Это нивелировалось другой особенностью кода - при установлении
соединения ACK на SYN+ACK приводил к увеличению cwnd на mss. Т.е.
фактически в ответе всегда можно было отправить два полных пакета -
а на два полных пакета принимающая сторона обязана прислать ack. И
проблем с delayed ack не было.

Ситуацию изменило введение поддержки RFC 3465 (appropriate byte
counting). Теперь по ACK на SYN+ACK cwnd стали увеличивать только
на 1 байт. И проблема со сбросом cwnd вылезла боком: стало
возможным послать только один полный пакет, и после этого
приходилось ждать ack'а, который - delayed.

Maxim Dounin

p.s. И, кстати, именно из-за той же особенности кода (увеличения
cwnd по ack на syn+ack на mss) slowstart_flightsize=1 не приводил
к тем же проблемам с delayed ack (когда использовался). Если
сейчас rfc3390 выключить, а rfc3465 включить - то увидим ту же
задержку в 100ms при slowstart_flightsize=1, в том числе с патчем
из моего исходного письма.

>
> > 02.09.2010 20:44, Maxim Dounin пишет:
> > > Hello!
> > >
> > > On Thu, Sep 02, 2010 at 12:52:20PM -0400, Alex Sergeyev wrote:
> > >
> > >> но интересно узнать тогда как задержки появляются при проксировании
> > >> localhost? BSD же не делает delayed ack?
> > >
> > > Кто сказал что не делает? Ещё как делает, те самые 100ms по
> > > умолчанию.
> > >
> > > $ sysctl net.inet.tcp | grep del
> > > net.inet.tcp.delacktime: 100
> > > net.inet.tcp.delayed_ack: 1
> > >
> > > Maxim Dounin
>
>
> --
> Игорь Сысоев
> http://sysoev.ru
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://nginx.org/mailman/listinfo/nginx-ru

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

100ms delays in FreeBSD 8.x

Igor Sysoev September 02, 2010 11:18AM

Re: 100ms delays in FreeBSD 8.x

Михаил Монашёв September 02, 2010 12:28PM

Re: 100ms delays in FreeBSD 8.x

Maxim Dounin September 02, 2010 12:46PM

Re: 100ms delays in FreeBSD 8.x

Alex Sergeyev September 02, 2010 12:54PM

Re: 100ms delays in FreeBSD 8.x

Maxim Dounin September 02, 2010 01:46PM

Re: 100ms delays in FreeBSD 8.x

Alex Sergeyev September 02, 2010 01:56PM

Re: 100ms delays in FreeBSD 8.x

Vladislav V. Prodan September 02, 2010 06:28PM

Re: 100ms delays in FreeBSD 8.x

Igor Sysoev September 03, 2010 05:26AM

Re: 100ms delays in FreeBSD 8.x

Maxim Dounin September 03, 2010 07:14AM

Re: 100ms delays in FreeBSD 8.x

Igor Sysoev September 03, 2010 07:34AM

Re: 100ms delays in FreeBSD 8.x

Maxim Dounin September 03, 2010 09:12AM

Re: 100ms delays in FreeBSD 8.x

Igor Sysoev September 03, 2010 09:22AM

Re: 100ms delays in FreeBSD 8.x

Maxim Dounin September 03, 2010 09:42AM

Re: 100ms delays in FreeBSD 8.x

Igor Sysoev September 02, 2010 02:38PM

Re[2]: 100ms delays in FreeBSD 8.x

Михаил Монашёв September 02, 2010 01:24PM

Re: 100ms delays in FreeBSD 8.x

Maxim Dounin September 02, 2010 02:00PM

Re: 100ms delays in FreeBSD 8.x

Alex Sergeyev September 02, 2010 02:26PM

Re: 100ms delays in FreeBSD 8.x

Igor Sysoev September 02, 2010 02:34PM

Re: 100ms delays in FreeBSD 8.x

Alex Sergeyev September 02, 2010 02:38PM

Re: 100ms delays in FreeBSD 8.x

Maxim Dounin September 03, 2010 09:16AM

Re: 100ms delays in FreeBSD 8.x

Igor Sysoev September 03, 2010 09:24AM

Re: 100ms delays in FreeBSD 8.x

Igor Sysoev September 10, 2010 03:14AM

Re: 100ms delays in FreeBSD 8.x

Vladislav V. Prodan September 10, 2010 03:52AM

Re: 100ms delays in FreeBSD 8.x

Igor Sysoev September 10, 2010 03:54AM

Re: 100ms delays in FreeBSD 8.x

Maxim Dounin September 13, 2010 12:40AM

Re: 100ms delays in FreeBSD 8.x

Alex Sergeyev September 03, 2010 09:26AM

Re: 100ms delays in FreeBSD 8.x

Maxim Dounin September 03, 2010 09:54AM

Re: 100ms delays in FreeBSD 8.x

Михаил Монашёв September 04, 2010 05:30PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 255
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready