Good day everyone!
I have a 5-node cluster on PVE 7.3-6 with a couple hundred unprivileged LXC, all using the Debian 11 Bullseye template.
I was looking at how Netflix can serve 800Gb/s of TLS encrypted video content from a single server, and a large part of it appears to be kTLS.
I also saw a blog post from Nginx about improving Nginx performance with Kernel TLS and SSL_sendfile() using recent versions of Linux. As can be read in this article, the original Debian 11 could not be used because its kernel was built with the
So I thought let's check it out, let's enable kTLS on the Nginx servers. I run version 1.18 at the moment via Debian repo but I created a new LXC (Debian 11) and installed the latest mainline version of NGINX via its repos at nginx.org (1.23.3 at the time of writing). Then I configured NGINX to use it:
But when I try to start the server I get this error:
I am posting here because of two reasons:
I have a 5-node cluster on PVE 7.3-6 with a couple hundred unprivileged LXC, all using the Debian 11 Bullseye template.
I was looking at how Netflix can serve 800Gb/s of TLS encrypted video content from a single server, and a large part of it appears to be kTLS.
I also saw a blog post from Nginx about improving Nginx performance with Kernel TLS and SSL_sendfile() using recent versions of Linux. As can be read in this article, the original Debian 11 could not be used because its kernel was built with the
CONFIG_TLS=n
option, but it was later added in 5.15.1. I have checked the nodes of my cluster and they all have the tls
loaded (being used by bonding
, incidentally), and it appears as such when checking from inside the LXC:
Code:
# lsmod | grep tls
tls 110592 1 bonding
So I thought let's check it out, let's enable kTLS on the Nginx servers. I run version 1.18 at the moment via Debian repo but I created a new LXC (Debian 11) and installed the latest mainline version of NGINX via its repos at nginx.org (1.23.3 at the time of writing). Then I configured NGINX to use it:
NGINX:
http {
[..]
sendfile on;
[..]
}
server {
listen 443 ssl http2;
server_name domain.com;
ssl_certificate /etc/ssl/certs/domain.com.crt;
ssl_certificate_key /etc/ssl/certs/domain.com.key;
ssl_protocols TLSv1.3;
ssl_conf_command Options KTLS;
[..]
}
But when I try to start the server I get this error:
Code:
[emerg] 364#364: SSL_CONF_cmd("Options", "KTLS") failed (SSL: error:1414E180:SSL routines:SSL_CONF_cmd:bad value:cmd=Options, value=KTLS)
I am posting here because of two reasons:
- I think that the fact that the LXC is unprivileged should not prevent this feature from being used, but I'm not sure. Could anyone confirm?b
- I have not been able to find information on this error, and I don't know whether to search on the LXC side or the NGINX side of it. The only conclusion I have arrived at is that Debian 11 (and, therefore, Proxmox) ships with OpenSSL 1.1.1n, therefore no way this is going to work until Proxmox is based on Debian 12 Bookworm, which will include OpenSSL 3.0.8.
Last edited: