|
|
@ -812,6 +812,7 @@ tpws - это transparent proxy. |
|
|
|
--skip-nodelay ; не устанавливать в исходящих соединения TCP_NODELAY. несовместимо со split. |
|
|
|
--local-tcp-user-timeout=<seconds> ; таймаут соединений client-proxy (по умолчанию : 10 сек, 0 = оставить системное значение) |
|
|
|
--remote-tcp-user-timeout=<seconds> ; таймаут соединений proxy-target (по умолчанию : 20 сек, 0 = оставить системное значение) |
|
|
|
--fix-seg ; исправлять неудачи tcp сегментации ценой задержек для всех клиентов и замедления |
|
|
|
|
|
|
|
--split-pos=N|-N|marker+N|marker-N ; список через запятую маркеров для tcp сегментации |
|
|
|
--split-any-protocol ; применять сегментацию к любым пакетам. по умолчанию - только к известным протоколам (http, TLS) |
|
|
@ -877,6 +878,15 @@ tpws, как и nfqws, поддерживает множественную се |
|
|
|
указанным сплит позициям. Другие ОС в этом вопросе ведут себя более предсказуемо. Спонтанного обьединения замечено не было. |
|
|
|
Поэтому не стоит злоупотреблять сплитами и в особенности мелкими соседними пакетами. |
|
|
|
|
|
|
|
Как показывается практика, проблемы могут начаться , если количество сплит позиций превышает 8. |
|
|
|
При неудаче сегментации будет выводиться сообщение `WARNING ! segmentation failed`. |
|
|
|
Если вы его видите, это повод снизить количество сплит позиций. |
|
|
|
Если это не вариант, есть параметр `--fix-seg`. Он позволяет подождать завершение отсылки перед отправкой следующей части. |
|
|
|
Но этот вариант ломает модель асинхронной обработки событий. Пока идет ожидание, все остальные соединения не обрабатываются |
|
|
|
и кратковременно подвисают. На практике это может быть совсем небольшое ожидание - менее 10 мс. |
|
|
|
И производится оно только , если происходит split, и в ожидании есть реальная необходимость. |
|
|
|
В высоконагруженных системах данный вариант не рекомендуется. Но для домашнего использования может подойти, и вы эти задержки даже не заметите. |
|
|
|
|
|
|
|
tpws работает на уровне сокетов, поэтому длинный запрос, не вмещающийся в 1 пакет (TLS с kyber), он получает целым блоком. |
|
|
|
На каждую сплит часть он делает отдельный вызов `send()`. Но ОС не сможет отослать данные в одном пакете, если размер превысит MTU. |
|
|
|
В случае слишком большого сегмента ОС дополнительно его порежет на более мелкие. Результат должен быть аналогичен nfqws. |
|
|
|