[ 
https://issues.apache.org/jira/browse/KAFKA-13418?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17464190#comment-17464190
 ] 

shylaja kokoori commented on KAFKA-13418:
-----------------------------------------

After enabling SSL logging (javax.net.debug=ssl,handshake),
I see that unwrap call in the SslTransportLayer.read function returns 
handshakeStatus=NEED_WRAP when ssl key_update takes place. (log snippet below)

Based on documentation provided in 
[https://datatracker.ietf.org/doc/html/rfc8446]
key_updates normally happen during a read/write and connection has to be closed 
when it happens during handshake. 
Given that here key_updates are happening after handshaking is done, will 
something like attached patch work? I am new to Kafka and any feedback would be 
helpful.

Kafka log:
{code:java}
javax.net.ssl|DEBUG|8D|ReplicaFetcherThread-0-2|2021-12-21 06:14:09.574 
UTC|KeyUpdate.java:192|Consuming KeyUpdate post-handshake message (
"KeyUpdate": {
  "request_update": update_requested
}
)
javax.net.ssl|DEBUG|8D|ReplicaFetcherThread-0-2|2021-12-21 06:14:09.575 
UTC|SSLCipher.java:1866|KeyLimit read side: algorithm = 
AES/GCM/NOPADDING:KEYUPDATE
countdown value = 137438953472
javax.net.ssl|DEBUG|8D|ReplicaFetcherThread-0-2|2021-12-21 06:14:09.575 
UTC|KeyUpdate.java:236|KeyUpdate: read key updated
javax.net.ssl|DEBUG|8D|ReplicaFetcherThread-0-2|2021-12-21 06:14:09.575 
UTC|KeyUpdate.java:271|Produced KeyUpdate post-handshake message (
"KeyUpdate": {
  "request_update": update_not_requested
}
)
javax.net.ssl|DEBUG|8D|ReplicaFetcherThread-0-2|2021-12-21 06:14:09.575 
UTC|SSLCipher.java:2020|KeyLimit write side: algorithm = 
AES/GCM/NOPADDING:KEYUPDATE
countdown value = 137438953472
javax.net.ssl|DEBUG|8D|ReplicaFetcherThread-0-2|2021-12-21 06:14:09.575 
UTC|KeyUpdate.java:323|KeyUpdate: write key updated
[2021-12-21 06:14:09,575] ERROR [SslTransportLayer channelId=2 
key=channel=java.nio.channels.SocketChannel[connection-pending 
remote=/192.168.24.11:9093], selector=sun.nio.ch.EPollSelectorImpl@2eb1a872, 
interestOps=8, readyOps=0] Renegotiation requested, but it is not supported, 
channelId 2, appReadBuffer pos 0, netReadBuffer pos 0, netWriteBuffer pos 147 
handshakeStatus NEED_WRAP State READY 
(org.apache.kafka.common.network.SslTransportLayer)
javax.net.ssl|DEBUG|8D|ReplicaFetcherThread-0-2|2021-12-21 06:14:09.578 
UTC|Alert.java:238|Received alert message (
"Alert": {
  "level"      : "warning",
  "description": "close_notify"
}
)
javax.net.ssl|ALL|8D|ReplicaFetcherThread-0-2|2021-12-21 06:14:09.580 
UTC|SSLEngineImpl.java:752|Closing outbound of SSLEngine{code}

> Brokers disconnect intermittently with TLS1.3
> ---------------------------------------------
>
>                 Key: KAFKA-13418
>                 URL: https://issues.apache.org/jira/browse/KAFKA-13418
>             Project: Kafka
>          Issue Type: Bug
>          Components: clients
>    Affects Versions: 2.8.0
>            Reporter: shylaja kokoori
>            Assignee: shylaja kokoori
>            Priority: Minor
>         Attachments: tls1_3.patch
>
>
> Using TLS1.3 (with JDK11) is causing a regression and an increase in 
> inter-broker p99 latency, as mentioned by Yiming in 
> [Kafka-9320|https://issues.apache.org/jira/browse/KAFKA-9320?focusedCommentId=17401818&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-17401818].
>  We tested this with Kafka 2.8.
> The issue seems to be because of a renegotiation exception being thrown by 
> {code:java}
> read(ByteBuffer dst)
> {code}
>  & 
> {code:java}
> write(ByteBuffer src)
> {code}
>  in 
> _clients/src/main/java/org/apache/kafka/common/network/SslTransportLayer.java_
> This exception is causing the connection to close between the brokers before 
> read/write is completed. In our internal experiments we have seen the p99 
> latency stabilize when we remove this exception.
> Given that TLS1.3 does not support renegotiation, I would like to make it 
> applicable just for TLS1.2.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to