wolfSSL は新しい DTLS 1.3 プロトコルをサポートしています。このプロトコルの詳細については、「DTLS 1.3 の新機能」を、また使い方については「 DTLS 1.3 のサンプルプログラム」を参照してください。この投稿では、DTLS 1.2 と 1.3 の間でベンチマークをいくつか比較します。両者の最大の差は、ラウンドトリップの減少とアクノリッジ(一種のACKメッセージ)の使用です。
ベンチマーク計測では、すべての接続に同じ暗号スイートを使用しました。 DTLS 1.3 の場合は TLS_AES_256_GCM_SHA384でDTLS 1.2 の場合は TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384です。 SECP256R1 は、両方のケースで使用した楕円曲線です。 10 回サンプル結果の平均をグラフ化しています。誤差範囲は、サンプルの標準偏差を表します。
最初のグラフは 15 MB のデータを 500 バイトのパケットで送信するのに要する時間を示し、2 番目のグラフはクライアントから見てハンドシェイクを完了するのにかかった時間を示します。このベンチマークは、遅延なしで 1 台のマシンで実行されました。 DTLS 1.3 のスループットは、DTLS 1.2 のスループットに非常に近い値となっています。DTLS 1.3では整理されたプロトコルを合理的に実装することができた結果として、わずかなパフォーマンスの向上があります。待ち時間がないため、ハンドシェイクを完了するまでの時間は変わりません。 つまり、DTLS 1.3 ではセキュリティ強化が行われているのにスループットや接続速度に悪影響を与えていないことがわかります。
3 番目のグラフは、実際のネットワークを模して100 ミリ秒の遅延を入れた場合のハンドシェイクの完了までの時間を示しています。 DTLS 1.3 ハンドシェイクは、必要なラウンド トリップが少ないので、半分の時間で完了します。 ハンドシェークが完了すると、ピアはアプリケーション データの交換を開始できます。
4 番目のグラフは、パケットが失われたときに使用される合計帯域幅を示しています。DTLS 1.2 接続では、メッセージが失われたと判断した際に、相手がどのパケットをドロップしたのかわからないため、以前のフライト全体を再送信する必要があります。これに対し、 DTLS1.3では受信完了分のメッセージを知らせる一種のACKメッセージが導入されました。これによって送信側は相手の受信完了分を知ることができ、フライト全体を再送信する必要がなくなりました。結果としてDTLS 1.2 と比較して約半分の帯域幅しか消費しません。
DTLS 1.3 で改善されたセキュリティ パラメータは、パフォーマンスと効率の向上にもつながります。 これは朗報であり、今後DTLS 1.2 から 1.3 に移行することが大いに期待されます。さらに、DTLS 1.3 への移行は、鍵更新、ポスト ハンドシェイク認証、ポスト量子暗号などの TLS 1.3 で提供されている機能の利用も可能とします。