vladd Posted February 9, 2012 Posted February 9, 2012 (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 February 9, 2012 by vladd Вставить ник Quote
Ilya Evseev Posted February 11, 2012 Posted February 11, 2012 Можно ли как-нибудь подтюнить стек tcp на сервере, чтобы на всех хостах качалось нормально? Или в крайнем случае на клиентах? Смотрите в сторону "tc qdisc". По умолчанию Линукс использует для исходящего трафика дисциплину pfifo_fast, которая нормально работает только до тех пор, пока канал не забит. Попробуйте заменить её на SFQ и сравните результат: http://lartc.org/howto/lartc.qdisc.classless.html#LARTC.SFQ Вставить ник Quote
photon Posted February 12, 2012 Posted February 12, 2012 (edited) Нужно настроить приоритизацию ACK-пакетов на промежуточном маршрутизаторе. Какой именно процесс обслуживает TCP-соединение на стороне сервера? Также есть подозрение, что ваш Linux может использовать какой-то нестандартный алгоритм tcp congestion control, который плохо работает с теми, что в винде и маке по умолчанию, и не позволяет им увеличивать окно до разумных величин. Edited February 12, 2012 by photon Вставить ник Quote
E-Biznes Posted February 13, 2012 Posted February 13, 2012 (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 February 13, 2012 by E-Biznes Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.