Hello Tidy Bot, Attila Bukor, Kudu Jenkins, Andrew Wong, Grant Henke,

I'd like you to reexamine a change. Please visit

    http://gerrit.cloudera.org:8080/17189

to look at the new patch set (#3).

Change subject: KUDU-2871 support TLSv1.3 in Kudu RPC (C++ part)
......................................................................

KUDU-2871 support TLSv1.3 in Kudu RPC (C++ part)

With this patch Kudu servers and Kudu C++ client can use TLSv1.3
for securing Kudu RPC communication.  All tests run between C++
components now use TLSv1.3 when compiled with OpenSSL 1.1.1 or newer
versions.

This patch introduces two new server-side flags:
  --rpc_tls_1_3_ciphers
  --rpc_tls_excluded_protocols

The former is to customize the list of preferred ciphers for TLSv1.3.
The latter is to control the set of TLS protocols used by Kudu servers
when securing connections for RPC communication.  It can be used along
with the --rpc_tls_min_protocol flag to define the set of TLS protocols
available to Kudu servers when running a TLS handshake.  For example,
set --rpc_tls_excluded_protocols=TLSv1.3 to exclude TLSv1.3 from
available options for securing Kudu RPC.

In addition, I added a validator for the --rpc_tls_min_protocol flag,
similar to the validator for --rpc_tls_excluded_protocols.

This patch also adds a new test to exercise TLSv1.3 handshake in
the context of establishing a connection for Kudu RPC.

The embedded webserver isn't updated yet with TLSv1.3 cipher controls:
that will be done in a separate patch because it requires first
to squeasel to introduce a new TLSv1.3-specific flag and call
SSL_CTX_set_ciphersuites() correspondingly.

I ran some of the existing performance tests to compare TLSv1.2
vs TLSv1.3 performance on 48-core machine with
Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz.

Parameters/TestRpc.TestPerformanceBySocketType/SSL_TCP
  Sending 1024MB via ssl-enabled tcp socket:
    TLSv1.2: real 17.774s   user 28.992s    sys 2.473s
    TLSv1.3: real  2.702s   user  1.461s    sys 3.112s

RpcBench.BenchmarkCalls
    TLSv1.2
      Reqs/sec:         64364.7
      User CPU per req: 65.4646us
      Sys CPU per req:  84.3419us
      Ctx Sw. per req:  4.02794
      Server reactor latency histogram
        Count: 1938009
        Mean: 33.1368
    TLSv1.3
      Reqs/sec:         117503
      User CPU per req: 27.9537us
      Sys CPU per req:  79.2585us
      Ctx Sw. per req:  3.50379
      Server reactor latency histogram
        Count: 3815425
        Mean: 17.695

Change-Id: Ia92a4d102c3c8cff76101e71ff71d24a9d78b672
---
M src/kudu/rpc/client_negotiation.cc
M src/kudu/rpc/messenger.cc
M src/kudu/rpc/messenger.h
M src/kudu/rpc/server_negotiation.cc
M src/kudu/security/security-test-util.cc
M src/kudu/security/security_flags.cc
M src/kudu/security/security_flags.h
M src/kudu/security/tls_context.cc
M src/kudu/security/tls_context.h
M src/kudu/security/tls_handshake-test.cc
M src/kudu/security/tls_handshake.cc
M src/kudu/security/tls_handshake.h
M src/kudu/server/server_base.cc
13 files changed, 468 insertions(+), 90 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/89/17189/3
--
To view, visit http://gerrit.cloudera.org:8080/17189
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Ia92a4d102c3c8cff76101e71ff71d24a9d78b672
Gerrit-Change-Number: 17189
Gerrit-PatchSet: 3
Gerrit-Owner: Alexey Serbin <[email protected]>
Gerrit-Reviewer: Alexey Serbin <[email protected]>
Gerrit-Reviewer: Andrew Wong <[email protected]>
Gerrit-Reviewer: Attila Bukor <[email protected]>
Gerrit-Reviewer: Grant Henke <[email protected]>
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Tidy Bot (241)

Reply via email to