Я хотел бы знать, в чем разница между буфером sndbuf и rcvbuf, используемым OpenVPN, и net.core.w / rmem_default или net.ipv4.tcp_r / wmem.
Что делает OpenVPN, если для этого параметра в config. Я читал, что если вы используете 0, он использует размер буфера ОС по умолчанию, но из какого буфера он берет размер? или это дополнительный слой, и когда вы установите его на 0, этот дополнительный макет исчезнет?
Моя проблема в том, что когда я устанавливаю sndbuf и rcvbuf на 0 и устанавливаю net.core.w / rmem_default или net.ipv4.tcp_r / wmem на 64 КБ, я ожидаю такой же пропускной способности, чем при sndbuf и rcvbuf, потому что значение по умолчанию для sndbuf и rcvbuf - 64 КБ
К сожалению, это не так, при использовании буфера ОС пропускная способность ниже.
Возможно, это потому, что я не установил правильный буфер ОС или что OpenVPN делает что-то особенное при использовании sndbuf и rcvbuf.
Если кто-нибудь может подробно объяснить, я был бы очень признателен
Спасибо
Ало
После некоторого исследования я обнаружил, что OpenVPN использует setsockopt для установки значений SO_SNDBUF и SO_RCVBUF, используя значения sndbuf и rcvbuf в файле конфигурации. Это повлияет только на сокет, созданный OpenVPN, а не на все сокеты TCP / UDP.
SO_SNDBUF и SO_RCVBUF эквивалентны настройке:
Для протокола, используемого 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).
Любой, у кого есть больше знаний, может меня поправить :)