Jump to content

Recommended Posts

Posted (edited)

Имеется следующая конфигурация:

 

Хост A - linux, Хост B - винда, Хост C - MacOS --- канал 1 гбит/c, rtt 45ms --- Сервер на linux

 

Временами канал между сервером и хостами бывает подзабит. При этом наблюдается странная картина:

 

- С сервера на линуксовый хост - скорость закачки стабильно не менее 2-4 мбайт/с

- С того же сервера на другие хосты (под виндой и маком) - всего 200-300 кбайт/с.

 

Когда канал свободен, с этого сервера качается хорошо на всех хостах. Между хостами тоже все отлично качается в любое время - они в одной сети. Также пробовал сделать проброс порта через SNAT/DNAT на линуксовом хосте и качать с остальных через него - скорость также очень низкая.

 

Вот лог tcpdump этих проблемных скачек:

 

20:29:56.892417 IP server.80 > host.46109: . 2321257:2329345(8088) ack 297 win 26 <nop,nop,timestamp 306323784 11325269>
20:29:56.892421 IP host.46109 > server.80: . ack 2321257 win 1801 <nop,nop,timestamp 11325270 306323735>
20:29:56.892429 IP server.80 > host.46109: . 2329345:2333389(4044) ack 297 win 26 <nop,nop,timestamp 306323784 11325270>
20:29:56.946062 IP host.46109 > server.80: . ack 2333389 win 1801 <nop,nop,timestamp 11325326 306323784>
20:29:56.946075 IP server.80 > host.46109: P 2333389:2338781(5392) ack 297 win 26 <nop,nop,timestamp 306323838 11325326>
20:29:56.946082 IP server.80 > host.46109: . 2338781:2345521(6740) ack 297 win 26 <nop,nop,timestamp 306323838 11325326>
20:29:56.994637 IP host.46109 > server.80: . ack 2336085 win 1801 <nop,nop,timestamp 11325372 306323838>
20:29:56.994882 IP host.46109 > server.80: . ack 2338781 win 1801 <nop,nop,timestamp 11325373 306323838>
20:29:56.994895 IP server.80 > host.46109: . 2345521:2350913(5392) ack 297 win 26 <nop,nop,timestamp 306323887 11325373>
20:29:56.994901 IP host.46109 > server.80: . ack 2341477 win 1801 <nop,nop,timestamp 11325373 306323838>
20:29:56.995381 IP host.46109 > server.80: . ack 2344173 win 1801 <nop,nop,timestamp 11325374 306323838>
20:29:56.995396 IP server.80 > host.46109: . 2350913:2357653(6740) ack 297 win 26 <nop,nop,timestamp 306323887 11325374>

Видно, что на каждый пакет с сервера клиент посылает ack, и иногда и не один. При том что в это же время если качать с линуксовой машины, лог нормальный - один ack на кучу пакетов.

 

Увеличивать размер окна и прочие стандартные рекомендации на сервере делать пробовал, не помогает совсем. А еще размер пакетов какой-то странный - не более 400-500 байт, хотя mtu 1400. Что это может быть за бред? Можно ли как-нибудь подтюнить стек tcp на сервере, чтобы на всех хостах качалось нормально? Или в крайнем случае на клиентах?

 

Заранее спасибо!

Edited by vladd
Posted

Можно ли как-нибудь подтюнить стек tcp на сервере, чтобы на всех хостах качалось нормально? Или в крайнем случае на клиентах?

Смотрите в сторону "tc qdisc".

По умолчанию Линукс использует для исходящего трафика дисциплину pfifo_fast,

которая нормально работает только до тех пор, пока канал не забит.

Попробуйте заменить её на SFQ и сравните результат:

http://lartc.org/howto/lartc.qdisc.classless.html#LARTC.SFQ

Posted (edited)

Нужно настроить приоритизацию ACK-пакетов на промежуточном маршрутизаторе. Какой именно процесс обслуживает TCP-соединение на стороне сервера? Также есть подозрение, что ваш Linux может использовать какой-то нестандартный алгоритм tcp congestion control, который плохо работает с теми, что в винде и маке по умолчанию, и не позволяет им увеличивать окно до разумных величин.

Edited by photon
Posted (edited)

Доброе утро.

У меня наверная ситуация такая же как в этой теме.

Опишу ниже:

конфигурация: На сервере Linux CentOS. 4 интерфеса - 169.254.1.1 192.168.1.1 10.0.3.1 и интерфейс с миром. Клиетские машины с Осями от Майкрософт. Так вот пока выявил только на интерфейсе 192.168.1.1 некоторые проблымы. А именно на некоторых IP адресах (прочём адреса следующие 192.168.1.121 .... 192.168.1.140) причём на адресе 192.168.1.130 все работает отлично Скорость загруски файла с сервера равна 10 кб\с и при этом ложется вся сеть Пинг достигает уровня в неколько тысяч или вообще проподает. Подключал разные машины через пачкорд к серверу на этот интерфейс менял IP адреса и все равно при запросе с этих адресов сеть ложется намертво. Механиз ограничения скорости на каждый IP адрес реалезован через tc аднако правила tc одинаковы как для работающих адресов так и для неработающих, что меня и завело в тупик. Подскажите что это может быть? и в каком логе можно посмотреть записи при запросах с этих адресов?

Edited by E-Biznes

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.