Linux 4.13より、Kernel内でTLS処理を行うKTLSが利用できるようになりました。
最新のOpenSSLではKTLSを利用できるので試してみる。
参考
(TLS1.2のAES-128-GCMしか対応してない?)
ビルド
デフォルトでは有効でないので、ビルドする。
KTLSに対応してないカーネルを使用している場合は、強制的に無効になってしまいます。
$ git clone https://github.com/openssl/openssl.git
$ cd ./openssl
$ ./config enable-ktls
$ make
確認
適当なサイトに接続し、strace
を使って、setsockoptでktlsを有効にしていることを確認する。
$ LD_LIBRARY_PATH=. strace ./apps/openssl s_client -connect asnokaze.com:443 2>&1 |grep setsock
setsockopt(3, SOL_TCP, TCP_ULP, [7564404], 4) = 0
これでよいのかな。