net/haproxy: add HTTP/2 performance settings

This commit is contained in:
Frank Wall
2023-12-28 22:36:55 +01:00
parent a57e2a3ccd
commit 557f02a684
4 changed files with 95 additions and 0 deletions
+1
View File
@@ -10,6 +10,7 @@ Added:
* add support for built-in OCSP update feature
* add support for forwarded header (RFC7239)
* add option "X-Forwarded-For Header" to backend settings
* add options for HTTP/2 performance tuning
Fixed:
* fix typo in cert sync script
@@ -132,4 +132,44 @@
<sortable>true</sortable>
<help><![CDATA[Used to enforce or disable certain SSL options.]]></help>
</field>
<field>
<label>HTTP/2 Performance</label>
<type>header</type>
</field>
<field>
<id>haproxy.general.tuning.h2_initialWindowSize</id>
<label>Initial window size</label>
<type>text</type>
<help><![CDATA[Sets the default value for the HTTP/2 initial window size, on both incoming and outgoing connections. The default value is 65536.]]></help>
</field>
<field>
<id>haproxy.general.tuning.h2_initialWindowSizeOutgoing</id>
<label>Initial window size (outgoing)</label>
<type>text</type>
<help><![CDATA[Sets the HTTP/2 initial window size for outgoing connections, which is the number of bytes the server can respond to before waiting for an acknowledgment from HAProxy.]]></help>
</field>
<field>
<id>haproxy.general.tuning.h2_initialWindowSizeIncoming</id>
<label>Initial window size (incoming)</label>
<type>text</type>
<help><![CDATA[Sets the HTTP/2 initial window size for incoming connections, which is the number of bytes the client can upload before waiting for an acknowledgment from HAProxy.]]></help>
</field>
<field>
<id>haproxy.general.tuning.h2_maxConcurrentStreams</id>
<label>Max concurrent streams</label>
<type>text</type>
<help><![CDATA[Sets the default HTTP/2 maximum number of concurrent streams per connection (i.e. the number of outstanding requests on a single connection). The default value is 100.]]></help>
</field>
<field>
<id>haproxy.general.tuning.h2_maxConcurrentStreamsOutgoing</id>
<label>Max concurrent streams (outgoing)</label>
<type>text</type>
<help><![CDATA[Sets the HTTP/2 maximum number of concurrent streams per outgoing connection (i.e. the number of outstanding requests on a single connection to a server).]]></help>
</field>
<field>
<id>haproxy.general.tuning.h2_maxConcurrentStreamsIncoming</id>
<label>Max concurrent streams (incoming)</label>
<type>text</type>
<help><![CDATA[Sets the HTTP/2 maximum number of concurrent streams per incoming connection (i.e. the number of outstanding requests on a single connection from a client).]]></help>
</field>
</form>
@@ -201,6 +201,42 @@
<default>TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256</default>
<Required>N</Required>
</ssl_cipherSuites>
<h2_initialWindowSize type="IntegerField">
<MinimumValue>0</MinimumValue>
<MaximumValue>10000000</MaximumValue>
<ValidationMessage>Please specify a value between 0 and 10000000.</ValidationMessage>
<Required>N</Required>
</h2_initialWindowSize>
<h2_initialWindowSizeOutgoing type="IntegerField">
<MinimumValue>0</MinimumValue>
<MaximumValue>10000000</MaximumValue>
<ValidationMessage>Please specify a value between 0 and 10000000.</ValidationMessage>
<Required>N</Required>
</h2_initialWindowSizeOutgoing>
<h2_initialWindowSizeIncoming type="IntegerField">
<MinimumValue>0</MinimumValue>
<MaximumValue>10000000</MaximumValue>
<ValidationMessage>Please specify a value between 0 and 10000000.</ValidationMessage>
<Required>N</Required>
</h2_initialWindowSizeIncoming>
<h2_maxConcurrentStreams type="IntegerField">
<MinimumValue>0</MinimumValue>
<MaximumValue>10000000</MaximumValue>
<ValidationMessage>Please specify a value between 0 and 10000000.</ValidationMessage>
<Required>N</Required>
</h2_maxConcurrentStreams>
<h2_maxConcurrentStreamsOutgoing type="IntegerField">
<MinimumValue>0</MinimumValue>
<MaximumValue>10000000</MaximumValue>
<ValidationMessage>Please specify a value between 0 and 10000000.</ValidationMessage>
<Required>N</Required>
</h2_maxConcurrentStreamsOutgoing>
<h2_maxConcurrentStreamsIncoming type="IntegerField">
<MinimumValue>0</MinimumValue>
<MaximumValue>10000000</MaximumValue>
<ValidationMessage>Please specify a value between 0 and 10000000.</ValidationMessage>
<Required>N</Required>
</h2_maxConcurrentStreamsIncoming>
</tuning>
<defaults>
<maxConnections type="IntegerField">
@@ -1011,6 +1011,24 @@ global
{% if OPNsense.HAProxy.general.tuning.luaMaxMem|default("") != "" %}
tune.lua.maxmem {{OPNsense.HAProxy.general.tuning.luaMaxMem}}
{% endif %}
{% if OPNsense.HAProxy.general.tuning.h2_initialWindowSize|default("") != "" %}
tune.h2.initial-window-size {{OPNsense.HAProxy.general.tuning.h2_initialWindowSize}}
{% endif %}
{% if OPNsense.HAProxy.general.tuning.h2_initialWindowSizeOutgoing|default("") != "" %}
tune.h2.be.initial-window-size {{OPNsense.HAProxy.general.tuning.h2_initialWindowSizeOutgoing}}
{% endif %}
{% if OPNsense.HAProxy.general.tuning.h2_initialWindowSizeIncoming|default("") != "" %}
tune.h2.fe.initial-window-size {{OPNsense.HAProxy.general.tuning.h2_initialWindowSizeIncoming}}
{% endif %}
{% if OPNsense.HAProxy.general.tuning.h2_maxConcurrentStreams|default("") != "" %}
tune.h2.max-concurrent-streams {{OPNsense.HAProxy.general.tuning.h2_maxConcurrentStreams}}
{% endif %}
{% if OPNsense.HAProxy.general.tuning.h2_maxConcurrentStreamsOutgoing|default("") != "" %}
tune.h2.be.max-concurrent-streams {{OPNsense.HAProxy.general.tuning.h2_maxConcurrentStreamsOutgoing}}
{% endif %}
{% if OPNsense.HAProxy.general.tuning.h2_maxConcurrentStreamsIncoming|default("") != "" %}
tune.h2.fe.max-concurrent-streams {{OPNsense.HAProxy.general.tuning.h2_maxConcurrentStreamsIncoming}}
{% endif %}
{# # logging configuration #}
{% set logging = [] %}
{% if OPNsense.HAProxy.general.logging.host != '127.0.0.1' %}