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.

[参考译文] CC2652R7:TCP 连接至 OT 设备的 IPv6地址、但如何改用主机名?

Guru**** 2465890 points
Other Parts Discussed in Thread: CC2652R7

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1129888/cc2652r7-tcp-connection-to-an-ipv6-address-of-a-ot-device-but-how-about-to-a-hostname-instead

器件型号:CC2652R7

你(们)好。

总结: CLI_MTD 是否可以将其唯一主机名注册到网络(例如边界路由器),以便使在边界路由器的 wifi 端运行的客户端能够按名称引用设备,而不必知道 OT 设备的 IPv6地址?

详细信息:
我已开始使用最近 simplelink_cc13xx_cc26xx_sdk_6_20_00_29中提供的 TCP 功能。 我已确认可以在我的笔记本电脑(边界路由器的 WIFI 端)上编写一个小型 TCP 客户端、并成功建立与 CC2652R7 LaunchPad (边界路由器的 OT 端)上运行的 CLI_MTD 的 TCP 连接。 对于 OT 设备(以及本特定实验),我正在使用可用 CLI‘TCP’命令的[子集]。 例如:

> TCP 帮助
中止
基准
绑定
连接
取消初始化
帮助
初始化
倾听
发送
发送
制动灯
完成
>

我已经证明、如果我提前知道 CLI_MTD 的 IPv6地址是什么、我可以通过在笔记本电脑上运行的客户端代码(同样、我的边界路由器的 WIFI 端)建立 TCP 连接。 没关系。 但从长远来看、我将需要通过主机名连接到 OT TCP 服务器;这是我的问题。 CLI_MTD 是否可以将其唯一主机名注册到网络(或边界路由器),以使运行在网络 WIFI 端的客户端能够按主机名引用? 换句话说、作为一个示例、这两个 Linux/MacOS 命令中的任何一个都是可能的:

ping6 fdd6:3481:6985:ebdb:5120:fd96:72ed:24ba
...或...
ping6 My_OTDeviceHostname

提前感谢!
Steve Kranz

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

    您好、Steve、

    很高兴听到 TCP 连接已验证为正常工作!

    应该可以按主机名执行 Ping (或、寻址);它将通过 SRP (服务注册协议)实现。
    Thread 设备将充当 SRP 客户端、而边界路由器将充当 SRP 服务器。 SRP 客户端将自己注册到 SRP 服务器,然后 SRP 服务器将其通告 给更广泛的网络。

    需要执行一些额外的步骤、尤其是在 Thread MCU 侧启用 SRP 客户端(例如、将"#define OPENTHREAD_CONFIG_SRP_CLIENT_ENABLE 1"添加到位于 libopenthread_FTD_cc13x2_26x2_ticlang\config.h 中的 openthread-config-config-cc13x2-cc26x2-ftd.h )。

    然后、可以按照本 指南中的步骤进行操作。 由于您已经设置了边界路由器、 因此您可能可以从此 步骤开始(在终端设备上发布服务): https://openthread.io/codelabs/openthread-border-router#4

    谢谢、
    Toby

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

    尊敬的 Toby:

    在您引用的特定*.h 中查找设置时,我没有成功。 我想仔细检查并查看您是否希望请我调整另一个文件:也许是 SRP_CLIENT.h?

    在整个 simplelink_cc13xx_cc26xx_sdk_6_20_00_29安装树中、它是唯一提供定义 OPENTHREAD_CONFIG_SRP_CLIENT_ENABLE 的机会的文件。

    [文件./source/third_party/openthread/src/core/config/srp_client.h
    #define OPENTHREAD_CONFIG_SRP_CLIENT_ENABLE 1.

    在其默认状态下、它设置为:

    [文件./source/third_party/openthread/src/core/config/srp_client.h
    #define OPENTHREAD_CONFIG_SRP_CLIENT_ENABLE 0

    是否可以调整 OPENTHREAD_CONFIG_DNS_CLIENT_ENABLE 设置(例如“DNS”而不是“SRP”)?
                                                                                                                         
    我在 CC2652R7Launchpad 上以库存形式运行 CLI_MTD 演示应用(不是 FTD 应用)、但如果您认为这是我需要的、我很乐意根据需要更改构建设置以启用 SRP。 您的说明与我所看到的内容有很大的不同,我想重复检查。 好的、提前感谢!

    此致、
    Steve Kranz

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

    尊敬的 Toby:

    您是否有机会查看我在8月31日给您的回复?  :-)

    此致、Steve Kranz

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

    您好!

    正确、默认配置为:

    #ifndef OPENTHREAD_CONFIG_SRP_CLIENT_ENABLE
    #define OPENTHREAD_CONFIG_SRP_CLIENT_ENABLE 0
    #endif

    但是、在这里将其更改为1可能会影响依赖于此文件的其他工作区中的所有项目。
    我建议 您现在在  openthread-config-cc13x2-cc26x2-mtd.h 中对更改进行本地处理

    此处应使用 SRP。
    然后、边框将 通过 mDNS 进行广播。

    摘录:
    "mDNS 已广泛用于在本地链路上发布 DNS-SD 服务。 但是、多播消息会消耗过多的带宽、并会快速耗尽低功耗设备的电池电量。 Thread 使用单播 SRP 协议向边界路由器注册其服务、并依靠边界路由器在 Wi-Fi 或以太网链路上广播服务。"

    谢谢、
    Toby

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

    尊敬的 Toby:

    感谢您的回复。 我想我仍然不知道您会推荐什么。 您引用的 openthread-config-cc13x2_26x2-mtd.h 文件当前没有任何“SRP_CLIENT”控件。 但是、您是否建议我在中添加一个? 具体而言、我复制粘贴通常驻留在./source/third_party/openthread/src/core/config/srp_client.h.中的文件 换句话说、我应该将以下行粘贴到 openthread-config-cc13x2_26x2-MTD.h 中:

    #define OPENTHREAD_CONFIG_SRP_CLIENT_ENABLE 1.

    很抱歉,如果我遗漏了显而易见的内容,但您说的是这样吗?

    谢谢!
    Steve。

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

    您好、Steve、

    是的! 这正是我的意思。

    很抱歉、下次我会尝试更加清晰。

    谢谢、
    Toby

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

    尊敬的 Toby:

    根据您的建议、我向./libopenthread_MTD_cc13x2_26x2_ticlang/config/openthread-config-cc13x2_26x2-mtd.h 文件添加了以下代码行:

    #if 1/* TI e2e 论坛建议将此设置放置在此处。 (2022年9月)。 *
    #define OPENTHREAD_CONFIG_SRP_CLIENT_ENABLE 1.
    #endif

    但遗憾的是、现在有许多文件无法编译、常见错误为:

    “错误:命名空间'ot:Crypto’中没有名为'ECDSA'的成员”

    OPENTHREAD_CONFIG_SRP_CLIENT_ENABLE 是否需要附加#define?

    提前感谢!
    Steve。

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

    尊敬的 Toby:

    您是否有机会查看我9月24日给您的回复?  :-)

    此致、Steve Kranz

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

    您好、Toby、这已经是6天左右了。 您是否同意问题存在? 我仍然有兴趣启用 SRP 客户端、以便我可以继续。 但到目前为止、它不是可构建的系统。 你能评论吗?

    提前感谢、

    Steve K.

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

    您好!

    抱歉,我没有机会采取后续行动。

    [引用 userid="375367" URL"~/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1129888/cc2652r7-tcp-connection-to-an-ipv6-address-of-a-ot-device-but-how-about-to-a-hostname-instead/4220449 #4220449"]“错误:命名空间'ot:Crypto’中没有名为'ECDSA'的成员[/quot]

    请参阅 此处的注释:   OT_SRP_CLIENT 注意:构建选项在终端设备上启用 SRP 客户端实施、而 OT_ECDSA  OT_SRP_CLIENT 创建签名需要该选项。

    尝试定义 OPENTHREAD_CONFIG_ECDSA_ENABLE = 1。

    我最初假设 SRP 所需的任何依赖项(例如宏)都将自动定义--看起来 ECDSA 是目前也建议定义的内容。

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

    尊敬的 Toby:

    TI 是否有人知道您可以继续解决此问题并确定解决方法/解决方法? 当我尝试以下操作时、我仍然有一个无法编译的系统。 我正在尝试从 SDK 安装中构建 CLI_MTD 示例。

    对库存 cli_mtd (openthread-config-cc13x2_26x2-MTD.h)的更改:
    #if 1/* TI e2e 论坛建议将此设置放置在此处。 (2022年9月/10月)。 *
    #define OPENTHREAD_CONFIG_SRP_CLIENT_ENABLE 1.
    #define OPENTHREAD_CONFIG_ECDSA_ENABLE 1.
    #endif

    生成结果:
    ****为项目 libopenthread_MTD_cc13x2_26x2_ticlang 构建配置优化大小****

    /Applications/ti/ccs1200/ccs/utils/bin/gmake -k -j 7 all -O
     
    构建文件:"/Applications/ti/simplelink_cc13xx_cc26xx_sdk_6_20_00_29/source/third_party/openthread/src/core/crypto/ecdsa.cpp
    调用:ARM 编译器
    "/Applications/ti/ccs1200/ccs/tools/compiler/ti-cgt-armllvm_2.1.0.LTS/bin/tiarmclang /Applications/ti/simplelink_cc13xx_cc26xx_sdk_6_20_00_29/source /Applications/ti/simplelink_cc13xx_cc26xx_sdk_6_20_00_29/source/third_party/openthread/include /Applications/ti/simplelink_cc13xx_cc26xx_sdk_6_20_00_29/source/third_party/openthread/src/core -c -mcpu=cortex-M4 -mfloat-abi=hard -mfpbd=fpbSD-d16 -mlittle-endian -mthumb -"i-"/Users/Kranz/Desktop/zPuzL/CCS/leak/libopenthread_mtd_cc13x2_26x2_ticlang /Applications/ti/simplelink_cc13xx_cc26xx_sdk_6_20_00_29/source/third_party/openthread/third_party/mbedtls /Users/Kranz/Desktop/zPuzL/CCS/leak/libmbedcrypto_cc13x2_26x2_ticlang/config /Applications/ti/simplelink_cc13xx_cc26xx_sdk_6_20_00_29/source/third_party/openthread/src -i"i-"/Applications/ti/simplelink_cc13xx_cc26xx_sdk_6_20_00_29/source/third_party/openthread/examples/platforms /Applications/ti/simplelink_cc13xx_cc26xx_sdk_6_20_00_29/source/third_party/openthread/third_party/mbedtls/repo/include /Users/Kranz/Desktop/zPuzL/CCS/leak/libopenthread_mtd_cc13x2_26x2_ticlang/config -i"-i"dccbidex-ex-ex-ctrad_dcc13x2_df-ex-file"-mctrad_ctrad_dcc13x2_d_zh-ctrad-d_core-ex-ctrabx2_dcc1 -ex-ctrad-d_ex-d_ctrad_ctrad-d_ex-ctrad-d_ctrabx2_enu_d_ex-d_ctrad-dc-dcc1  /Applications/ti/simplelink_cc13xx_cc26xx_sdk_6_20_00_29/source/third_party/openthread/src/core/crypto/ecdsa.cpp
    src/core/crypto/subdir_rules.mk:28:目标'strc/core/crypto/ecdsa.o'的配方失败
    /Applications/ti/simplelink_cc13xx_cc26xx_sdk_6_20_00_29/source/third_party/openthread/src/core/crypto/ecdsa.cpp:69:11:错误:使用未声明的标识符'mbedtls_pk_write_key_der';您是指'mbedtls_ECP_write_key'?
       RET = mbedtls_pk_write_key_der (&pk、mDerBytes、sizeof (mDerBytes));
             ^~~~~~~~~~~~~~~~~~~~~~~~μ A
             mbedtls_ECP_write_key
    /Applications/ti/simplelink_cc13xx_cc26xx_sdk_6_20_00_29/source/third_party/openthread/third_party/mbedtls/repo/include/mbedtls/ecp.h:1272:5:注意:此处声明了'mbedtls_ECP_WRITE_KEY'
    int mbedtls_ECP_write_key (mbedtls_ECP_keypair *键,
       ^μ A
    /Applications/ti/simplelink_cc13xx_cc26xx_sdk_6_20_00_29/source/third_party/openthread/src/core/crypto/ecdsa.cpp:69:36:错误:无法使用类型'mbedtls_pk_context *'的 rvalue 初始化'mbedtls_ECP_keypair *'类型的参数
       RET = mbedtls_pk_write_key_der (&pk、mDerBytes、sizeof (mDerBytes));
                                      ^~~μ A
    /Applications/ti/simplelink_cc13xx_cc26xx_sdk_6_20_00_29/source/third_party/openthread/third_party/mbedtls/repo/include/mbedtls/ecp.h:1272:49:注意:在此处将参数传递到参数'key'
    int mbedtls_ECP_write_key (mbedtls_ECP_keypair *键,
                                                   ^μ A
    /Applications/ti/simplelink_cc13xx_cc26xx_sdk_6_20_00_29/source/third_party/openthread/src/core/crypto/ecdsa.cpp:146:11:错误:使用未声明的标识符'mbedtls_ecdsa_sign_det_ext'
       RET = mbedtls_ecdsa_sign_det_ext (&ecdsa.MBEDTLS_private (grp)、&r、&s、&ecdsa.MBEDTLS_private (d)、aHash.GetBytes()、
             ^μ A
    生成3个错误。
    gmake:***[src/core/crypto/ecdsa.o]错误1.
    gmake:目标"全部"不会由于错误而重新生成。

    ****构建完成****

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

    您好、Steve、

    [引用 userid="375367" URL"~/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1129888/cc2652r7-tcp-connection-to-an-ipv6-address-of-a-ot-device-but-how-about-to-a-hostname-instead/4365366 #4365366"] TI 是否有人知道可以继续解决此问题并确定修复/解决方法?

    我将是这里的主要联系人。

    诚然,我在 SRP 方面的经验不在我们的通用 SDK 中,我已经在 Matter 的环境中运行了它。
    在该构建环境中、似乎需要实施 ECDSA 函数。
    另外、请注意、SRP 服务器位于边界路由器上(在 Linux 处理器上运行、例如 BBB)。

    以下是值得关注的问题: https://github.com/project-chip/connectedhomeip/tree/master/src/platform/cc13x2_26x2/crypto

    以及检查被拉入的 mbedtls 的版本(例如 、mbedtls_ecdsa_sign_det_ext 可能未在随 SDK 提供的 mbedtls 中定义(位于此处: C:\ti\simplelink_cc13xx_cc26xx_sdk_6_20_00_25\source\third_party_certls\threpto\threpto\threptrent\thre\contrent_openls)。

    谢谢、
    Toby  

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

    Toby、您好、感谢您的回复。 您是否可以采用 CLI_MTD TI 示例并解决这些问题? 我觉得做正确的事情会更舒服、我觉得向客户收取几个小时的费用可能只能正常工作、这让我感到很不舒服。 你怎么看?

    此致、

    Steve K.

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

    您好、Steve、

    感谢您分享背景信息。

    不幸的是、在不久的将来、我想我不能再深入研究这个问题了。

    我建议分支机构、您可以在这里尝试联系 openthread 社区吗?
    https://github.com/openthread/openthread/issues

    它们与 Thread 实现更加紧密地配合工作。
    请随时参阅此帖子。

    谢谢、
    Toby