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