gfcptun: быстрый туннель подключения с низкой задержкой, использующий GFCP через UDP.
Сделайте доступными 65535 или более файловых дескрипторов для каждого процесса gfcptun.
MTU 9000-9702 рекомендуется для высокоскоростных местных каналов.
Рекомендуемые минимальные параметры настройки sysctl
для обработки UDP в Linux:
net.core.rmem_max=26214400 # Tune for BDP (bandwidth delay product)
net.core.rmem_default=26214400
net.core.wmem_max=26214400
net.core.wmem_default=26214400
net.core.netdev_max_backlog=2048 # (Adjust proportional to receive window)
-sockbuf 16777217
client -r " IN:4321 " -l " :8765 " -mode fast3 -nocomp -autoexpire 900 -sockbuf 33554434 -dscp 46
server -t " OUT:8765 " -l " :4321 " -mode fast3 -nocomp -sockbuf 33554434 -dscp 46
Приложение → Выход (8765/TCP) → Интернет → Вход (4321/UDP) → Сервер (8765/TCP)
-mode fast3 -ds 10 -ps 3
и т. д. Для настройки одновременно увеличьте -rcvwnd
на клиенте и -sndwnd
на сервере.
Минимальный размер окна будет определять максимальную пропускную способность канала: ( 'Wnd' * ( 'MTU' / 'RTT' ) )
MTU должен быть установлен параметром -mtu и никогда не превышать MTU физического интерфейса. Для DC/высокоскоростных локальных каналов связи с Jumbo-кадрированием настоятельно рекомендуется использовать MTU 9000–9702.
Настройте агрессивность алгоритма повторной передачи:
fast3
→ fast2
→ fast
→ normal
→ default
Увеличьте размер -smuxbuf
до 16 МБ (или более), однако фактическое значение зависит от перегрузки канала, а также от доступной непрерывной системной памяти.
SMUXv2 можно использовать для ограничения использования памяти для каждого потока. Включите -smuxver 2
, а затем настройте -streambuf
(размер в байтах) .
-smuxver 2 -streambuf 8388608
для буфера размером 8 МБ (на поток).Начните настройку с ограничения буфера потока на принимающей стороне канала.
Конфигурация SMUXv2 не согласовывается , поэтому ее необходимо настроить вручную на обеих сторонах канала GFCP.
Рекомендации по настройке переменных среды выполнения GOGC
:
10–20 для систем с малым объемом памяти и встроенных устройств
120–150 (или выше ) для выделенных серверов
Примечания относительно настройки (GF)SMUX(v1/v2):
Механизм буферного пула поддерживает высокий уровень для объектов в полете из пула, чтобы выдержать периодическую сборку мусора во время выполнения.
Память будет возвращена в систему средой выполнения Go во время простоя. Для настройки можно использовать переменные -sndwnd
, -rcvwnd
, -ds
и -ps
.
Параметр -smuxbuf
и переменная GOMAXPROCS
могут использоваться для настройки баланса между пределом параллелизма и общим использованием ресурсов .
Увеличение -smuxbuf
увеличит практический предел параллелизма, однако значение -smuxbuf
не является линейно пропорциональным максимуму обработки параллелизма, поскольку сбор мусора во время выполнения Go для практических целей недетерминирован.
Только эмпирическое тестирование может обеспечить обратную связь, необходимую для настройки и оптимизации ссылок в реальных условиях.
Поддерживается дополнительное сжатие (с использованием Snappy ).
Сжатие экономит полосу пропускания для избыточных данных с низкой энтропией , но во всех остальных случаях увеличивает накладные расходы (и загрузку ЦП).
Сжатие включено по умолчанию : для отключения используйте -nocomp
.
USR1
будет отображена подробная информация о соединении. -mode manual -nodelay 1 -interval 20 -resend 2 -nc 1