This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC3220SF-LAUNCHXL:来自网络处理器的 TLS 握手响应超时超时

Guru**** 1783340 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1315285/cc3220sf-launchxl-huge-timeout-for-tls-handshake-response-from-network-processor

器件型号:CC3220SF-LAUNCHXL

高支持、

我将为我的应用使用以下模块。

亚马逊 FreeRTOS -> 202107  

FreeRTOS 内核 V10.4.3

AWS 物联网无线更新 v3.0.0

SL 主机驱动程序版本2.0.1.27

服务包版本 sp_3.14.0.0_2.0.0.0_2.2.0.7.bin

在慢速互联网期间、在建立 MQTT 连接时、套接字设置 TLS 连接所需的时间平均约为60秒(最多达到80秒)。

sTIRetCode = sl_SetSockOpt( pxSocketContext->sSocketDescriptor,
SL_SOL_SOCKET,
SL_SO_STARTTLS,
&( ulDummyOptVal ),
( SlSocklen_t ) sizeof( ulDummyOptVal ) );

可以观察到、信标肯定会阻塞、直到收到来自 NWP 的 TLS 握手状态反馈。 NWP 所需的时间过长、无法发回握手状态。
是否可以设置等待 TLS 响应的套接字超时时间限制。

谢谢。
S·J·尤维斯蒂

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这似乎太长了。 请尝试改用 sl_StartTLS()。

    /*!
        \brief Initiate TLS connection on a socket
    
        Function Initiate TLS connection on the socket referred to by
        the socket descriptor sd. This function will works on blocking
        mode until the TLS handshake success or fails.
    
        \param[in] sd               Socket descriptor (handle)
    
        \return                     Zero on success, or negative error code on failure
    
        \sa                         sl_Socket
        \note                       belongs to \ref client_side
        \warning
    */
    #if _SL_INCLUDE_FUNC(sl_StartTLS)
    _i16 sl_StartTLS(_i16 sd);
    #endif

    我们需要查看空气嗅探器日志、以更好地分析这段漫长的设置时间。  

    我不确定您是否可以为此 API 设置超时、但您可以使用非阻塞套接字、如果建立连接所需时间过长、则可以关闭套接字。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Kobi:

    感谢您的回复。  

    是否有任何 API 可供网络处理器停止 TLS 握手过程。 可以观察到、NWP 的响应指示握手状态需要花费大量时间、  

    此致、

    S·简纳斯瓦尔  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    sl_Close ()

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    H Kobi,

    感谢您的回复。  

    我尝试了使用 sl_close (),但我得到了 SL_ERROR_BSD_ESECSSLDURINGHANDSHAKE (-465L)错误。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的。 我不知道这一点、但我可以(在代码中)看到这是合理的。

    我没有看到其他方法可以在握手期间关闭连接。

    您仍然可以 在第一个套接字正在进行时打开新的套接字(当连接响应出现时、可以关闭第一个套接字)。