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:设置辅助 DNS 服务器并进行故障转移

Guru**** 2577385 points
Other Parts Discussed in Thread: CC3120

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/907534/cc3220sf-setting-and-fail-over-to-the-secondary-dns-server

器件型号:CC3220SF
主题中讨论的其他器件:CC3120

尊敬的 TI 团队:

我希望了解在启用 DHCP 时设置辅助 DNS 服务器选项的一些说明、以及在何时使用第二个 DNS 的一些信息。

正在覆盖辅助 DNS

我遇到应用程序设置的辅助 DNS 服务器被覆盖的问题。 我已经介绍了以下将复制条件的步骤。

按以下顺序发生的事情:

  1. SL_NETAPP_EVENT_IPV4_ACQUIRED 在 SL 应用程序事件处理程序中收到
  2. 指示另一个任务更改状态并配置辅助 DNS
  3. 执行下面的块 A 中的代码
  4. 另一个任务 sl_NetCfgGet稍后检查辅助 DNS 地址(使用)(以记录 DHCP 给定数据和辅助 DNS 数据)
  5. 次 DNS 地址与 DHCP 服务器提供的主 DNS 匹配,而不是配置的 DNS (在 192.168.1.254 我的情况下,与)  1.1.1.1

块 A

//此处我们还需要设置辅助 DNS,因为 IP 采集已覆盖 SWRU455J
中规定的值-§5.3.3 DNS 地址
//将辅助 DNS 设置为 CloudFlare 的 DNS 服务器
DNS_OPT.DnsSecondval ServerAddr = SL_IPv4_VAL (1、1、1);
Int16_t SL_Secondval = 0;
sl_ret_val = sl_NetCfgSet (sl_netcfg_IPV4_DNS_CLIENT、0、CONFIG_Len、
(uint8_t *)&DNS_OPT);
断言(sl_ret_val = 0); 

 

以下是我在测试功能时发现的观察结果:

  • 设置得太早,NWP 似乎会用 DHCP 服务器提供的主服务器覆盖次要服务器
  • 应用程序接收到 IP 获取事件、但在该回调中或之后快速设置辅助 DNS 将导致其被覆盖。
  • 尝试将 DHCP 流程从"机会续订流程"调整回"完全续订流程"、但似乎没有效果。

反复尝试设置辅助 DNS 服务器将最终导致其"粘滞"。 我假设这是因为在 DHCP 过程完全完成后、DHCP 过程将完成、并将保留设置辅助 DNS 服务器 IP。

我在这个问题上最大的挂机是、当尝试设置辅助 DNS 服务器时、我知道我必须等待 DHCP 进程完成、但没有一个独特的事件可以知道何时可以安全地设置辅助 DNS。

次要 DNS 使用

我在设备上运行了一些次 DNS 服务器集的实验、并创建了一个无法再访问主 DNS 的方案。 调用 SlNetUtil_getHostByName (具体调用在 SNTP 库中)和调用 sl_NetAppDnsGetHostByName (在 AWS 库中)似乎都失败。 我尝试调整超时/重试值、正如  E2E 上的 CC3120 MOD 博文中提到的、但似乎没有任何效果。 如果主 DNS 不可用、名称解析似乎不会故障转移到次 DNS。

您能否就上述两个问题中的任何一个/两个问题提供任何指导?

非常感谢、

-Tom

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

    您好、Tom、

    感谢您的详细博文。

    对于问题1,sl_NetCfgSet()以及许多其他 sl_* API 命令通过 NWP 端的调度程序运行。 根据运行的其他内容,不能保证 NWP 具有最高优先级,这意味着 IKE DHCP 可能会中断该 API。 在 DNS 客户端初始化代码中、它确实会清除辅助 DNS 服务器地址、这将解释在您的末尾覆盖它的原因

    在何时可以安全地设置辅助 DNS 方面、我希望了解是否有 DHCP 完成的指示。

    至于第二个问题、您如何使主 DNS 服务器无法访问? 它是否完全无法访问、或者只是返回表示无法解析 DNS 地址的响应? 我需要深入研究 NWP 源代码、看看是否有任何解释。

    了解如何设置该测试以便我可以在我的末尾复制也很有帮助、因此、请告诉我您如何能够测试问题2。

    此致、
    Michael

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

    您好、Michael、

    对于测试故障转移到辅助 DNS、这是我的设置:

    • 提供 DNS 服务器 IP 的 DHCP 服务器(运行 Pi-hole 的 RPi Zero)
    • 同一网络上的 DUT 与 DHCP 服务器交互并通过本地 DNS 服务器解析名称

    为了测试故障转移、我完成了以下每一项:

    已尝试使用 SNTP 库、DHCP 从一开始就无法访问

    1. 本地 DNS 服务器已关闭(以模拟 DNS 问题)、因此无法使用本地 DNS 服务器进行名称解析
    2. DUT 已通电、连接到 AP 并执行 DHCP 操作、接收本地 DNS 服务器的 IP
    3. 应用程序在 DHCP 请求完成后,将(根据需要等待并确认) 1.1.1.1 指定为辅助 DNS 服务器
    4. 应用程序尝试使用 TI 提供的 SNTP 库执行 NTP 时间同步
    5. 调用 SlNetUtil_getHostByName 无法重复解析服务器名称、直到应用程序的状态机假定 WAN 连接有问题、因为无法完成 NTP 同步。

    操作过程中连接失败

    1. DUT 已通电、连接到 AP 并执行 DHCP 操作、接收本地 DNS 服务器的 IP
    2. 应用程序在 DHCP 请求完成后,将(根据需要等待并确认) 1.1.1.1 指定为辅助 DNS 服务器
    3. 设备连接、与 NTP 同步时间、并继续与 AWS 建立和保持 MQTT 连接(正确解析端点)
    4. 本地 DNS 服务器已关闭(以模拟 DNS 问题)、因此无法使用本地 DNS 服务器进行名称解析
    5. 器件保持套接字连接、因为没有中断
    6. 调试器用于强制重新连接 MQTT 连接
    7. AWS lib 尝试使用进行名称解析 sl_NetAppDnsGetHostByName 、并继续失败、以表明 1.1.1.1 名称解析未被利用。

    希望这对您有所帮助! 如果我能提供更多信息、请告诉我! 如果有用、我很高兴尝试通过 Wireshark 捕获一些数据。

    -Tom

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

    您好、Tom、

    我仍在其中一台 Linux 计算机上安装本地 DNS 服务器以复制您的问题、但您可以为我收集更多数据、这些数据可以帮助我进行调试。

    在这种情况下、NWP 日志将非常有用、尤其是对于"次要 DNS 被覆盖"的情况。 这将使我能够看到 DHCP 握手完成与设置正在执行的辅助 DNS 服务器的命令之间的顺序是什么。 它还可以提供对其他 DNS 问题的一些见解、以查看主 DNS 服务器无法访问时设备的状态。 要收集 NWP 日志、只需将 USB 连接到 UART 器件并将其连接到 CC3120的引脚62、然后使用此处指定的 COM 端口设置:

    https://processors.wiki.ti.com/index.php/CC3120_%26_CC3220_Capture_NWP_Logs

    此致、

    Michael

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

    (网络编程人员指南 SWRU455J 的调试一章中也介绍了如何收集 NWP 日志。 我提到这一点是因为 Wiki 即将停产。)

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

    您好、Michael、

    听起来不错。 我将以出现"覆盖次要 DNS"问题的方式构建代码并进行捕获。

    今天我将为您尝试一下、但如果我无法做到、可能会延迟几天。

    感谢你的帮助。

    -Tom

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

    您好、Michael、

    很抱歉耽误了很长时间、我终于得到了您要求的数据(随附)。 我也在添加应用程序的日志、只是向您展示我看到的内容。

    Jan-01 00:00:01.347 0432 INFO AP UP
    Jan-01 00:00:01.834 0416 INFO SL FW 版本:2.0.0.0
    Jan-01 00:00:01.839 0416 INFO
    
    
    JAN PHY 版本:2.2.0.7 Jan-01 00:00:01.844 0416 INFO SL NWP 版本:3.15.0.1 Jan-01 00:00:06信息 Sl 0416:00:00:00:06.39信息 Sl 站点设置:1.0416 0
    Jan-01 00:00:06.451 0410信息连接到 AP、'Lost Woods'
    Jan-01 00:00:06.465 0419信息获取 IPv4 IP 地址
    Jan-16 15:04:56.756 1402信息与 NTP 服务器
    JUN-16同步时基15:04:56.763 1015
    Jun 信息与 IP 192.168.1.231–16 15:04:56.756
    IP 调试网关192.168.6.04:6.02:Devicev 4000 6月16:567675 DNS IP 192.168.1.254
    Jun-16:04:56.781 0002 debug DeviceProv: Secondary DNS IP 0.0.0.0 

    e2e.ti.com/.../2020_2D00_06_2D00_16_5F00_110450_5F00_0.log

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

    您好!

    感谢您收集这些 NWP 日志。 它们在我的末尾是可解码的、我可以看到 DHCP 的时序以及您发送到 NWP 的命令。 我将对其进行分析、并告诉您我有哪些发现。

    此致、

    Michael

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

    您好、Michael、

    我只是想知道您是否对此问题有任何进一步的发现、想法或指导。 谢谢!

    -Tom

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

    您好、Tom、

    很遗憾、我还没有能够全面了解这个 DHCP 问题。 感谢您在我继续调查时的耐心。

    此致、

    Michael