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:当 WAP 没有互联网时、在 DNS 分辨率期间会等待很长时间。

Guru**** 2482225 points


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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1299891/cc3220sf-launchxl-huge-time-wait-during-dns-resolutions-when-no-internet-for-wap

器件型号: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

 

我们的产品是电池供电设备。

 

设备获得配置文件(连接到 WAP)后、我试图与 AWS IoT 建立 MQTT 连接。 在建立/创建 MQTT 连接时、WAP 没有互联网、因此无法建立连接、因为它将无法解析主机名并返回网络错误。 在此建立连接期间、它将等待大约20秒来解析 DNS (请参阅下面的 API 调用)。 这20秒的等待是一个非常巨大的时间、并且会在电池供电的器件/系统中消耗更多能量。 由于在我的应用中、我将再次尝试建立连接、因此总延迟将为40秒、以解析 DNS 并在关闭互联网期间返回响应。

_i16 sl_NetAppDnsGetHostByName (_i8 * pHostName、const _u16 NameLen、_u32* OutIpAddr、const _u8 Family);   (当互联网不可用于 WAP 时、此函数需要20秒以上的时间才能返回)

下面是我的两个问题:-

  1. 在互联网关闭情况下、是否有可能将 DNS 解析时间缩短20秒。 如果是的话,我们如何才能改变这种情况,延迟时间的改变会影响到 NWP 的运作。
  2. 在解析 DNS 之前、是否有任何方法可以检查互联网是否可用于 WAP、以便不调用解析的函数。

 

谢谢。此致、

S·简纳斯瓦尔  

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

    尊敬的 Sai:

    对您的问题的回答:

    1.请尝试设置 DNS 客户端的超时,方法是:

    _i16 Status;
    SlNetAppDnsClientTime_t Time;
    Time.MaxResponseTime = 2000; // Max DNS retry timeout, DNS request timeout changed every retry,
    start with 100Ms up to MaxResponseTime Ms
    Time.NumOfRetries = 30; // number DNS retries before sl_NetAppDnsGetHostByName failed
    Status = sl_NetAppSet(SL_NETAPP_DNS_CLIENT_ID, SL_NETAPP_DNS_CLIENT_TIME, sizeof(Time), (_u8
    *)&Time);
    if( Status )
    {
    // error
    }

    2.如何在互联网上 ping 服务器,如8.8.8.8, 9.9.9.9等? 但是、如果不允许从本地网络执行 ping 操作、则此方法可能不起作用。

    1月

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

    大家好、Jan、

    感谢您的回复。 您能告诉我、  如果我们不使用上述函数来更改超时、NumOfRetries 和 MaxResponseTime 的默认值是什么吗?

    谢谢

    S·简纳斯瓦尔

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

    尊敬的 Sai:

    我不能说明默认值是什么。 但是没有什么可以阻止您通过 API sl_NetAppGet ()读回默认值

    1月

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

    大家好、Jan、

    我已经尝试使用  sl_NetAppGet ()读取默认值。 当我读取这些值时、得到的  MaxResponseTime  为620ms、  NumOfRetries  为32。   但是、我只是想知道我们可以为网络处理器提供哪些最佳值、以便其正常工作。

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

    尊敬的 Sai:

    这取决于您的应用程序、DNS 服务器的延迟等。 您需要自行确定的最佳价值。 大家都不知道您的设备是如何使用的。

    1月

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

    大家好、Jan

    感谢您的回复、正在努力完成。  只是想知道人们通常会根据你的经验使用什么,以便我们可以微调和尝试使用该值的各种条件。  

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

    您好!

    例如、我使用1500和5。 但这在您的情况下可能不起作用。

    1月