OpenVPN sndbuf и rcvbuf
Я хотел бы знать, в чем разница между буфером sndbuf и rcvbuf, используемым OpenVPN, и net.core.w / rmem_default или net.ipv4.tcp_r/wmem.
Что делает OpenVPN, когда некоторые значения предоставляют для этих параметров в конфигурации. Я читал, что если вы используете 0, он использует размер буфера ОС по умолчанию, но из какого буфера он берет размер? или это дополнительный слой, и когда вы установите его на 0, этот дополнительный макет исчезнет?
Моя проблема в том, что когда я устанавливаю sndbuf и rcvbuf в 0 и устанавливаю net.core.w / rmem_default или net.ipv4.tcp_r / wmem в 64k, я ожидаю такую же пропускную способность, что и для sndbuf, и rcvbuf не устанавливается, поскольку значение по умолчанию для sndbuf и rcvbuf - это 64 КБ
К сожалению, это не так, пропускная способность ниже при использовании буфера ОС.
Возможно, это потому, что я не установил правильный буфер ОС или что OpenVPN делает что-то особенное при использовании sndbuf и rcvbuf.
Если кто-то может объяснить подробно, я был бы очень признателен
Спасибо
Ало
-----------------------------------------
После некоторых исследований я обнаружил, что OpenVPN использует setsockopt для установки значений SO_SNDBUF и SO_RCVBUF с использованием значений sndbuf и rcvbuf в файле конфигурации. Это повлияет только на сокет, созданный OpenVPN, а не на все сокеты TCP /UDP.
SO_SNDBUF и SO_RCVBUF являются эквивалентом установки:
- / Труды / системы / нетто / ядро / rmem_max
- / Труды / системы / нетто / ядро / wmem_max
- /proc/sys/net/net.ipv4/tcp_rmem
- / Труды / системы / нетто / нетто /ipv4/tcp_wmem
Для протокола, используемого openvpn (tcp или udp) (может быть _default, а не _max, я все еще не уверен).
Ручная настройка размеров буфера сокетов с помощью setsockopt() отключает автонастройку TCP. (не может быть правдой)
О том, что на TCP влияет размер буферов r / wmem_default, я нашел два ответа, говорящих об обратном:
Вам не нужно настраивать rmem_default или wmem_default (по крайней мере, не для настройки TCP). Это размеры буфера по умолчанию для сокетов, отличных от TCP (например, домен unix и сокеты UDP).
wmem_default и wmem_max эти настройки являются фиксированными размерами окон по умолчанию для отправки и получения всего сетевого трафика (UDP и TCP).
Любой, у кого больше знаний, может поправить меня:)