В прошлом месяце я пытался настроить прокси-туннель для игр и столкнулся с (для меня) очень странной проблемой.
В настоящее время я использую socksifier, чтобы перенаправить / отредактировать команду connect() в игровом сокете для маршрутизации через наши прокси-серверы Socks5, чтобы создать путь с наименьшей задержкой между клиентским> игровым сервером. Однако этот метод приводит к пикам с высокой задержкой, когда несколько игровых пакетов отправляются всем за короткий промежуток времени. К сожалению, игра отправляет / использует TCP, и я решил сделать то же самое с нашим прокси.
Когда мы используем SSH (plink/putty с параметром nodelay принудительно /set) для создания прокси-сервера socks на 127.0.0.1 (используя динамическую переадресацию портов) и используем socksifier для перенаправления трафика на локальный хост, проблема всплеска задержки исчезает, и он работает очень гораздо более плавно Это похоже на проблему узкого места или перегрузки, но не только серверы одинаковы, но и настройки дисциплины перегрузки и очереди (пробовал fq + bbr, noqueue и pfifo). Первоначально я думал, что использование SSH приведет к снижению производительности из-за шифрования.
Кто-нибудь может объяснить эту проблему, с которой я сталкиваюсь? Это сводит меня с ума, и я попробовал все серверные приложения там. Я уже установил TCP_NODELAY (на сокетах) и попытался возиться с TCP_QUICKACK и TCP_LOWLATENCY.
Некоторая дополнительная информация: Мы также попытались использовать ряд платных и бесплатных Proxifiers, таких как Proxifier и ProxyCap. Странно то, что использование Proxifier (и любой другой бесплатной альтернативы) по-прежнему воспроизводит эту проблему, но использование ProxyCap - нет. Я написал ProxyCap по электронной почте, и они ответили, сказав, что они устанавливают TCP_NODELAY на сокеты серверов, к которым вы подключаетесь (и, возможно, на сокете Windows, который я предполагаю) ... но я уже сделал это. Игра основана на Windows, и прокси-серверы размещены на Linux VPS (пробовал каждый "общий / основной" дистрибутив с теми же результатами)
РЕДАКТИРОВАТЬ: я тестировал разные значения SO_SNDBUF и SO_RCVBUF на обоих концах. Общая задержка изменяется с более низкими / более высокими значениями, но острая проблема все еще остается. Также попытался SO_DONTROUTE на стороне клиента, но безуспешно.
EDIT2: похоже, это как-то связано с пакетами, висящими между игровым сокетом и исходящей сетью. И Plink, и PCap используют loopback для создания прокси-сервера, который затем направляет трафик в исходящую сеть, но наш метод этого не делает. Даже если ничего не редактировать в игре (чисто в игре и больше ничего), эта проблема сохраняется. Сужать это вниз !!!
Спасибо всем, и я ценю любые мысли, высказанные, чтобы помочь определить виновника.