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.

[参考译文] CCS/CC3220MOD:DHCP 租用时间的值是什么、在网络终端示例中设置、在 CCS8中找不到该值

Guru**** 2563410 points
Other Parts Discussed in Thread: CC3220MODA

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/831182/ccs-cc3220mod-what-is-value-of-dhcp-lease-time-where-set-in-network-terminal-example-could-not-find-with-ccs8

器件型号:CC3220MOD

工具/软件:Code Composer Studio

我们有一款围绕 CC3220MODA 设计的产品(ST365)以及围绕网络终端项目设计的固件。

我们的产品设置为 AP、其中 MAC 计算机连接为基站、而 MAC 正在运行控制我们产品的软件。  在连接大约11小时后、在 MAC 上运行的应用程序停止接收套接字数据、并且在几次重试尝试放弃后、我们遇到了这种情况。  我在 CC3220 AP 的调试 UART 输出中看到、就在 IP 地址被租用的流量结束之前。  台式机软件不会尝试重新打开插座、而是尝试从旧插座读取。

我想知道、AP 上的12小时 DHCP 租赁设置是否导致了这种情况、但无法找到示例项目中的租赁时间设置位置。 搜索"租用时间"或"租用时间"在项目中没有命中率。 但是、我怀疑搜索不会向下进入租赁时间默认值的库。  

我希望了解如何在网络终端示例项目中确定租赁时间。  我是否有更智能的方式使用 CCS8进行搜索?

我将附上我在我们的仪器连接故障 too.e2e.ti.com/.../Readme_5F00_ST365R1SN3.docx 上编写的报告

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

    IIRC、在测试开始时、我将 Galaxy 7电话连接到 DUT、并可能分配了10.123.45.2、然后将分配给 MAC PC 10.123.45.3。 因此、在10.123.45.3上 MAC 的 DHCP 租用到期后、它可能会重新分配到10.123.45.2、现在套接字连接已断开。

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

    您好!

    CC3220 DHCP 服务器在 AP 模式下的默认租用时间为1天。 我有经验、许多设备在一半的租用时间后要求使用新 IP。 DHCP 服务器的租用时间可通过 SL_NetApp_DHCP_Server_ID 和 SL_NetApp_DHCP_SRV_basic_opt 选项进行设置。 在"network_terminal"示例中、未设置租用时间-这意味着使用默认值。

    如果要使用更长的租用时间,则没有任何因素会阻止您更改默认值。

    1月

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

    1月、

    感谢您提供有关租赁时间设置的提示。  在 SWRU455程序员指南中,我找到了在 WAN 策略集之前在 ConfigureSimpleLinkToDefaultState()函数中使用的一些示例代码。  

    /*设置 DHCP 租用时间。 *
    SlNetAppDhcpServerBasicOpt_t dhcpParams;
    _u8 outLen = sizeof (slNetAppDhcpServerBasicOpt_t);
    // dhcpParams.ley_time = 4096; // IP 地址的租用时间(以秒为单位)
    dhcpParams.ley_time = 300; // IP 地址的5分钟租用时间(以秒为单位)
    dhcpParams.ipv4_addr_start = sl_ipv4_VAL (10、123、45、2);//分配的第一个 IP 地址。 IP 地址应设置为十六进制数-即(10.11.12.1)的0A0B0C01
    dhcpParams.ipv4_addr_last = sl_ipv4_VAL (10、123、45、5);//分配的最后一个 IP 地址。 IP 地址应设置为十六进制数-即(10.11.12.1)的0A0B0C01
    SL_NetAppStop (SL_NetApp_DHCP_Server_ID); //设置前停止 DHCP 服务器
    RetVal = SL_NetAppSet (SL_NetApp_DHCP_Server_ID、SL_NetApp_DHCP_SRV_BASE_OPT、outLen (_u8*)&dhcpParams);//设置参数
    SL_NetAppStart (SL_NetApp_DHCP_SERVER_ID); //使用新设置启动 DHCP 服务器
    
    if (RetVal)
    {
    //错误
    UART_PRINT ("SL_NetAppSet: Failed to configure device DHCP Lease Time");
    } 

    我构建了这个并将其放入一个单元中。 我把租期设为一个较短的值,希望能重复失败,等待12小时。

    我运行了来自 CCS8调试器的代码。 我连接了 Galaxy 7电话以获得10.123.45.2。 我断开了电话连接、并使用 Windows 笔记本电脑作为运行我们控制软件的工作站(10.123.45.3)连接到测试设备。 我使用 IPCONFIG 检查租用情况、并等待超时以查看 Windows PC 上是否会发生通信故障。 它没有。 IP 地址租用时间延长了5分钟,而租赁时间缩短了3分钟。

    然后,我们断开了 Windows PC 的连接,然后连接了再次获得10.123.45.2的 Galaxy 电话。 我断开了电话连接。 然后我们连接了地址为10.123.45.4的 MAC PC、并运行了控制软件。 MAC 控制 PC 在5分钟租赁期内运行了几次、通信中断。 因此、我无法重复该问题。  我们将让它继续运行并捕获 Debug UART 输出。

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

    您好!

    我不理解您的用例。 我不确定服务器是什么端、客户端是什么端以及使用的是 UDP 还是 TCP 套接字。 但是、处理 IP 地址更改的常见方法是使用某种发现协议。 在类似情况下、我使用自己的基于 UDP 广播的发现协议。

    您在最后一个答案中提供的信息看起来非常正常。

    1月

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

    关于"我不确定服务器的哪一面以及客户端的哪一面"  、我的错。 我会提供更详细的信息。 我们使用的是 TCP 套接字。  我们的产品(其中包含 CC3220的 ST365)是运行套接字服务器的 AP。  MAC PC 作为 STA 与套接字客户端相连。

    关于 IP 地址的更改、我们以前没有考虑过这种情况、我们的 MAC PC Desk Top 应用程序没有针对 IP 地址更改时发生的情况采取对策。 (供参考我们的桌面软件还可以通过有线 LAN 连接控制产品、并通过这种方式进行了广泛测试。 但是、有线 LAN IP 地址很少更改。) 我们刚刚开始对无线局域网进行长时间(夜间)测试、并且在第一次夜间跑步时遇到了这个问题。 另外两次夜间跑步没有重复出现问题。

    关于"更改 IP 地址的...dealt 将使用某种发现协议"、 我希望更智能。 您能概述一下这些步骤吗?

    我想、MAC PC 控制程序需要再次尝试查找仪器、即使它现在位于 MAC PC 仍连接到的 AP 的另一个 IP 地址上。 这是我们没有预料到的情况。

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

    您好!

    在这种用例中、您不需要实施发现协议。 因为您的客户端(PC、手机)始终知道另一侧的 IP 地址(CC3220)。 此地址将始终与网关的 IP 地址相同(通过 DHCP 协议获取)。

    是当客户端(PC、手机)的 IP 地址被更新并更改打开的套接字时、您的套接字不再有效 。 我希望在您的 PC 或手机应用程序上会出现异常。 您的代码需要处理此问题并重新连接。 但可能会隐藏陷阱。 您的 TCP 套接字可能无法通过四次握手正确关闭。 您的套接字可能会被 CC3220 TCP 服务器占用、直到保持活动时间到期。 此问题最简单的解决方案是将 TCP 服务器用于多个客户端。

    1月

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

    您好 Jan、

    关于"在这种用例中、您不需要实施发现协议。 因为您的客户端(PC、手机)始终知道另一侧的 IP 地址(CC3220)。 此地址将始终与网关的 IP 地址相同(通过 DHCP 协议获取)。"
    感谢您确认我的理解。

    关于,"...当客户端(PC、移动电话)的 IP 地址被更新并更改打开的套接字时,您的套接字将不再有效 。。。"
    不幸的是,我找不到重复问题的方法。 租赁时间设置为300秒、运行仪器控制台顶部固件的 MAC PC 连接到10.123.45.4、因此我们将其保留为隔夜运行(>12小时)、并且在我开始工作时、插座连接仍在工作。

    我想知道 RF 路径的一些短暂中断是否会触发事件、但我曾经梦想过这样做的方法。 我尝试在仪器周围缠绕铝箔、这大大减少了信号、但 MAC PC 从未失去连接。 无论是连接到我的工作台开发环境中的仪器、还是 MAC PC、对于涉及增加射频路径长度的实验而言、都不是非常可移植的。

    如果不是 RF 链路丢失、那么还有什么可能触发了我报告的事件的 IP 采集?

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

    您好!

    很难说出可能出错的地方。 但我不认为您的问题与射频相关。 如果 RF 侧出现问题、您可能会与 AP 断开连接。 日志中未显示断开连接事件。

    您一定应该在 PC 应用程序中实施重新连接算法。 如果您的 TCP 连接因某种原因而终止,则应用程序需要重复连接尝试。 要确定问题原因、您还应通过监听器(例如 Wireshark)捕获网络日志。

    1月

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

    您好、Lee、

    您是否还在监视 DHCP 事件的网络应用程序事件处理程序? 我会收到 IP 释放或 IP 冲突事件、这些事件可能会解释一些问题。 除此之外、您还应该像 Jan 建议的那样设置一个重新连接算法。

    此处第5.7节提供了有关事件的信息

    Jesu

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

    Jesu、

    关于"您是否还在监视 DHCP 事件的网络应用程序事件处理程序?"  我不知道、所以我进入了 SWRU455第5.7节并读了一些内容。 这让我能够成功地搜索"slcb_NetAppEvtHdlr"项目。

    我们的代码基于 network_terminal 示例、network_terminal.c 文件中有"SimpleLinkNetAppEventHandler"。 所以我认为这是你要求的活动的手柄。

    我刚刚在没有 UART 消息的唯一案例中添加了"UART_PRINT ("\n\n\r\n[NetApp 事件] IPv4 IP 已获取");"SL_NetApp_EVENT_IPv4_ACQUIRED 案例。

    代码中没有 sl_NetApp_EVENT_IP_Collision 的情况。 我将尝试添加一个至少报告 UART 打印出冲突的地址。 (看起来像 SL_NetApp_EVENT_IPv4_Lost、 SL_NetApp_EVENT_DHCP_IPv4_Acquire _TIMEOUT 和 SL_NetApp_EVENT_IPv6_Lost 是当前代码中没有案例的所有事件。)

    感谢您提出问题。  正如我说过的、我们的代码基于 network_terminal 示例、我是处理该代码的第三个人。 (我是一名物理学家、自称是 EE 硬件设计师、有时会在代码方面遇到困难。)

    谢谢、

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

    1月、
    Jesu、

    更多信息。 我们再次在下午和晚上运行、MAC PC 控制着我们的仪器、并且没有连接故障。 我已将租赁时间设置为5分钟。

    关于、"您肯定应该将重新连接算法实施到您的 PC 应用中。"  我不愿意要求同事作出改变,而不是以一种方式重现原来的失败,以便我们可以测试这些改变。

    我们得到的总线索是、Net App 事件处理程序报告了10.123.45.2的租用、然后控制权丢失、套接字已关闭。

    如果不是租用时间,还会触发 IP 地址的重新分配?

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

    进一步实验。
    我们的 AP 设置为仅租用一个 IP 地址。 我们的终端设置为: "wlan_ap_start -s "ST365SN3"-t open -c 6 -txP 10 -l 1"

    当 MAC PC 通过套接字服务器连接并控制地址10.123.45.4上的仪器时、我尝试连接我的 Galaxy 7。 Galaxy 7被拒绝 WiFi 连接、没有报告调试 UART、也没有 MAC PC 失去控制。  这就是我对 AP 设置为仅租赁一个 IP 地址的预期。

    因此、我得出的结论是、原始错误不是由尝试连接到我们的仪器的另一无线客户端设备干扰引起的。

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

    您好!

    DHCP 请求来自客户端(您的计算机)端。 很难说出您计算机端的 DHCP 管理是如何工作的。 Wireshark 日志可能会为您提供线索。

    如果您想使用普通 AP 模拟此问题、可以使用以下方法:

    1.使用基础设施 Wifi 路由器(需要更改 CC3220代码)

    • 将 STA 模式与 CC3220配合使用并连接您的 Wifi 路由器
    • 设置静态 IP 地址租用(将特定 IP 设置为特定 MAC 地址)
    • 设置短 DHCP 租用时间
    • 将您的计算机连接到 Wifi 路由器、连接您的应用程序并与 CC3220内的服务器进行通信
    • 在 Wifi 路由器上更改计算机的静态租用 IP
    • 等待 leas 过期并分配新 IP

    2.使用具有 AP 和客户端模式的路由器(无需更改 CC3220代码、需要使用具有 AP 和 STA 功能的路由器-重新要求使用 OpenWRT 器件)

    • 将路由器连接到 CC3220内的 AP
    • 在路由器上使用新子网创建新的 Wifi 网络
    • 在两个子网之间设置端口转发
    • 在路由器内部设置 DHCP 服务器(连接到第二个网络)
    • 使用与第1点相同的方法

    1月

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

    您好 Jan、

    我已阅读并理解您的建议。 谢谢。 我没有想到引入第三方 WiFi 路由器会如何为我提供其他方法来探测和强制行为。

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

    您好、Lee、

    正确、这些事件在 SimpleLinkNetAppEventHandler 中调用。 我认为、您所关心的事件是 IP 释放以及发生冲突时发生的事件。 这些附加检查将让您了解 AP 是否释放 IP 以及是否存在 IP 冲突。 在 SimpleLinkNetAppEventHandler 的切换情况下、可以像下面那样轻松添加这些内容。  

    案例 SL_NetApp_EVENT_DHCPv4_Released:
    //在此处插入代码
    中断;
    
    案例 SL_NetApp_EVENT_IP_Collision:
    //在此处插入代码
    中断; 

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

    Jesu、

    感谢您回来。

    我已更新事件处理程序条件语句以报告 UART 打印缺失的情况、并且我们已将 MAC PC 重新设置为运行该语句以进行寿命测试。

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

    Jesu、
    1月、

    以便为您提供最新信息。

    我向 SimpleLinkNetAppEventHandler 添加了更多事件类型案例报告。

    我们几乎每周全天候运行三到四台仪器、并且从未在日志中记录任何新事件报告。 我们从未重复过这样一个故障,即日志显示租用的 IP 地址为10.123.45.2,即使该站点(Mac Mini)最初使用的是10.123.45.4。

    我们发现、我们的器件未能响应请求、而我们的 UART 读路由阻止导致 Mac Mini 上的控制软件放弃套接字、但仍连接到 AP。 即使在数天后、AP 也不会更改 IP 地址。 仅供参考、我们将租赁时间设置为8小时、这足够长、我们希望能够具有代表性、并且足够短、我们可以在一两天的工作日内获得结果。

    由于我最初的问题是如何设置租赁时间、并且根据您的见解、 我更改了项目以设置租赁时间、并确认 Windows 10笔记本电脑顶部和 Apple 笔记本电脑顶部以及 Apple Mini 和 Apple 台式电脑 Windows 7都连接到 CC3220接入点、并报告了8小时的租赁时间 预期。
    这解决了我设置租赁时间的问题、因此我将此标记为已解决。

    非常感谢。