LINUX.ORG.RU
ФорумAdmin

Низкий UPLOAD за Nat

 ,


0

1

Поиск результатов не дал. Точнее похожие посты были, но мне не помогли.

Итак. Есть шлюз на Ubuntu 14.04. 3 интерфейса: eth2 интернет (статический ip) и 2 vlan (eth1.10 и eth1.15). Тариф 20mbits/20mbits. Есть виндовые клиенты. Проблемы с аплоадом от виндовых клиентов. Но при этом проблема очень странная.

1. Download из интернета на сам шлюз 20мбит. Upload такой же (проверял на vps'ке iperf'ом)
2. Download на виндовых клиентах тоже нормальный (http, ftp, bittorrent)
3. Проверка онлайн сервисами проверки скорости тоже показывает вроде как 20мбит в обе стороны (download/upload)
3. Запускаю iperf -s -P 0 -i 1 -p 6666 -f на vps, на винде iperf.exe -c xxx.xxx.xxx.xxx -P 1 -i 1 -p 6666 -f k -t 20 -T 1 и скорость upload с винды 1,5-2 мбит. WTF??

Сперва думал провайдер. Но проверка на прямую между vps и моим шлюзом с помощью iperf показала обратное. Потом думал что-то с NAT и самим шлюзом. Но ведь проверка онлайн сервисами показывает что все в порядке (при этом если посмотреть на шлюзе через iptraf то видно, что клиент отдает и получает с нормальными 20мбит)

В iptables стандартный набор. MASQUERADE в nat и DROP по умолчанию на INPUT

Шейпера нет. Программно ничего не мешает (вроде бы).

То ли vlan как-то не так работает, то ли nat чудит. Даже и не знаю куда копать.

★★

Дампните начало сессий iperf с винды и со шлюза и сравните устанавливаемые параметры tcp-соединения, в первую очередь размер окна (TCP window size).

mky ★★★★★
()
Ответ на: комментарий от mky

Тесно не работал с tcpdump и wireshark. Я так понимаю это Windows size value ? Если да, то на виндовом клиенте это значение 64390, а с linux оно равно 229

as_lan ★★
() автор топика

в последнее время я iperf не доверяю, хотя программа хорошая и вроде как должна нормально работать.

Проверь скорость с помощью dd + nc

reprimand ★★★★★
()
Ответ на: комментарий от as_lan

Windows size value

Да, но его нужно умножать на (2^tcp window scale)

02:12:39.162290 IP 192.168.25.X.56268 > 192.168.2.Y.5001: Flags [S], seq 3509354611, win 14600, options [mss 1460,sackOK,TS val 2734582062 ecr 0,nop,wscale 6], length 0

Здесь размер окна 14600*2^6=934400 байт. Это вывод tcpdump, нужно смотреть первый и второй (первый ответный) пакеты соединения.

wireshark может показывать уже «вычисленный» размер масштаба окна ″WS=64″ для данного случая.

Ещё у ″iperf″ есть опция ″-w″. Попробуйте для виндого клиента её поставить побольше, может поможет.

Пинг с винды до вашего сервера с iperf сколько времени (мс)?

Ну ещё не знаю может или это влиять на скорость закачки, или только на download, просто нагуглилось: https://www.duckware.com/blog/how-windows-is-killing-internet-download-speeds...

mky ★★★★★
()
Ответ на: комментарий от mky

1. tcpdump показывает, что виндовый клиент сразу начинает с windows size 64390. VPS начинает с 27400 и быстро увеличивает его до 65535
2. Windows scale в винде я отключил.
3. Пинг в районе 50-60мс.
4. с параметром «w» игрался. Чуть увеличивает скорость (до 6-6,5)
3. Заметил еще кое что. Если переключить на другого провайдера (резервный), то через него скорость в норме! Пинг 1мс. Видимо у резервного оператора на работе и оператора моей VPS где-то стык в городе, а трафик основного оператора идет через Москву. Видимо в этом вся проблема и мой шлюз не причем...

as_lan ★★
() автор топика
Ответ на: комментарий от as_lan

Окно 65535 маловато для 20 Мбит для времени 60 мс. Поэтому дело не в шлюзе. Точнее, он вносит дополнительную задержку, которая влияет, так как размер окна недостаточен, но эту задержку не убрать, шлюз есть шлюз. И вносимая им задержка на фоне 60 мс не значительна.

Позволит ли VPS тюнить параметры tcp через /proc я не знаю, да и нужно ли вам это? Разбираться со всеми этим параметрами и опцями tcp (какие влияют, какие не влияют, понимает ли их винда) можно долго...

mky ★★★★★
()
Ответ на: комментарий от mky

Под VPS я имел ввиду домашний сервер с каналом 40/40мбит. Просто каждый раз писать «домашний сервер» было бы неудобно и появилась бы путаница где рабочий сервер и где домашний, поэтому я решил назвать его VPS =). Так что тюнить там можно все.

По поводу нужно ли это... Думаю что нужно, так как настраиваю openvpn и столкнулся с тормозами в одном направлении (естественно в сторону от клиента к домашнему серверу). Сперва думал что это что-то с настройками openvpn, но когда переключился на резервного провайдера и увидел положенную скорость, убедился, что openvpn не причем.

as_lan ★★
() автор топика
Ответ на: комментарий от as_lan

Попробуйте на VPS удвоить второе и третье число в ″/proc/sys/net/ipv4/tcp_rmem″, по идее это должно увеличить стартовый и максимальный размер tcp-окна.

То есть сначала ″cat /proc/sys/net/ipv4/tcp_rmem″, а потом пересчитать числа и ″echo″ в этот файл или ″sysctl″. Больше мне посоветовать нечего, в дебрях tcp-ip легко утонуть.

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.