【发布时间】:2020-07-10 12:50:37
【问题描述】:
我使用 openssl 实现了一个 DTLS 服务器。 (我有一个 udp 套接字,我正在使用内存 bio 与 openssl 通信。)但是,如果丢包,DTLS 握手可能需要 1-2 秒,这在我的情况下很多。
没有丢包时的正常流程:(几毫秒)
Client Hello ------------------------->
<------------------------- Server Hello
Rest of the handshake ---------------->
<---------------- Rest of the handshake
我正在经历的流程:(几秒钟)
Client Hello ------------------------->
<-------(lost)------------ Server Hello
Client Hello ------------------------->
Client Hello ------------------------->
Client Hello ------------------------->
<------------------------- Server Hello
Rest of the handshake ---------------->
<---------------- Rest of the handshake
即使在本地环境中直接丢弃第一个 Server Hello,我也可以轻松重现它。
我很好奇为什么服务器不响应一些即将到来的客户端问候。 如果它会回答握手可能会在 1 秒以下完成,但这样它会占用 1-2 秒,当它最终再次回答以后的客户问候时。
如何使 DTLS 握手更快完成? (例如,通过启用所有 Client Hello 的回答,有没有办法?)
【问题讨论】:
-
这可能取决于重传的客户端 hello(记录号 - 握手序列号)。如果可能,请提供wireshark日志。 (我不确定 Stackoverflow 是否支持附加文件。如果不只是在 github.com/eclipse/californium/issues 中打开一个新问题并通过“拖放”将其附加到那里。)
-
感谢您的帮助,我使用随附的 Wireshark 捕获文件创建了一个 GitHub 问题:github.com/eclipse/californium/issues/1267
标签: ssl networking openssl udp dtls