Open8

kTLS メモ

voluntasvoluntas

モチベーション

CPU 使用率を減らすには暗号処理をオフロードするしかない

  • Erlang/OTP 26.0 で ssl に kTLS 対応が入る

    Support for Kernel TLS (kTLS), has been added to the SSL application, for TLS distribution (-proto_dist inet_tls), the SSL option {ktls, true}.

    • ただしこれは tls_dist での利用、ssl での利用も将来的に来ると考えている
  • kTLS が来ると思っていなかったので知識が全くないので調べておきたい
  • kTLS のアリ/ナシでの性能比較をしておきたい
  • 今まで TLS 終端を nginx で行っていたが kTLS が来るなら TLS 終端をしないようにしたい
  • DataPacket で Mellanox ConnectX-6 Dx が利用できることに気付いた
    • kTLS の TLS_HW が利用できる
  • Zig + Erlang VM で kTLS + QUIC を利用していきたい
  • OpenSSL に QUIC が来る、QUIC で kTLS が利用可能になるのかは知っておきたい

用途

  • WebRTC では TURN over TLS と WebSocket over TLS の二つでの利用を考えている
  • WebTransport では HTTP/3 over QUIC と HTTP/2 over TLS の二つでの利用を考えている

検証

  • WebSocket over TLS は k6 で検証
  • HTTP/2 overt TLS は k6 で検証
  • TURN over TLS は自力
  • HTTP/3 over QUIC は自力

コメント

kTLS ならこれ読んだ方がいいよとかあれば、こちらにコメントしてもらえると嬉しいです。

募集

時雨堂では Zig と Erlang/OTP で kTLS などを利用した WebRTC や WebTransporrt によるリアルタイムサーバーの開発を手伝ってくれる人を募集しています。

voluntasvoluntas

資料

6.3. ネットワーク Red Hat Enterprise Linux 9 | Red Hat Customer Portal

KTLS がテクノロジープレビューとして利用可能に

RHEL は、テクノロジープレビューとして KTLS (Kernel Transport Layer Security) を提供します。KTLS は、AES-GCM 暗号化のカーネルで対称暗号化アルゴリズムまたは複号アルゴリズムを使用して TLS レコードを処理します。KTLS には、この機能を提供するネットワークインターフェイスコントローラー (NIC) に TLS レコード暗号化をオフロードするインターフェイスも含まれています。

/docs/manmaster/man1/openssl-s_server.html

-ktls
Enable Kernel TLS for sending and receiving. This option was introduced in OpenSSL 3.2.0. Kernel TLS is off by default as of OpenSSL 3.2.0.

-sendfile
If this option is set and KTLS is enabled, SSL_sendfile() will be used instead of BIO_write() to send the HTTP response requested by a client. This option is only valid when -ktls along with -WWW or -HTTP are specified.

-zerocopy_sendfile
If this option is set, SSL_sendfile() will use the zerocopy TX mode, which gives a performance boost when used with KTLS hardware offload. Note that invalid TLS records might be transmitted if the file is changed while being sent. This option depends on -sendfile; when used alone, -sendfile is implied, and a warning is shown. Note that KTLS sendfile on FreeBSD always runs in the zerocopy mode.

Kernel TLSとSSL_sendfile()によるNGINXのパフォーマンス向上 - NGINX

日本語だとこれが圧倒的に詳しい。

その他

後で整理する

voluntasvoluntas

NVIDIA Mellanox