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.

[参考译文] RTOS:NDK和TCPIP堆栈行为

Guru**** 2458730 points


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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/604407/rtos-ndk-and-tcpip-stack-behavior

工具/软件:TI-RTOS

您好,

我遇到了一些与我预期的情况不符的行为- 这是否是与错误和/或实施相关的行为?

情况如下:

设备A:Subnet NDK.255.0 (子网NDK.),IP 10.1 .0.39 (255.255 堆栈)

设备B:(Linux/windows)子网255.255 .0.0 ,IP:10.1 .1.11

 

设备A将设备B视为位于另一子网上,但设备B认为设备A位于其子网上。

 

B尝试向A发送TCP数据包(B曾经在不同的方案中与A通信,因此它已经拥有MAC) A应接收数据包,但应通过网关响应,因为它看到B来自不同的子网。

未配置网关(网关IP上不存在任何内容),因此A应该不能与B通信

一段时间后,当B没有得到响应时,它会尝试ARP A–由A接收并应答的ARP (不太确定为什么B位于不同的子网中,除非ARP不关心并且只是第2层?)

从这里看,A似乎可以与B通信–我认为这是因为在ARP A现在有一个条目后,它包含B的IP和MAC关联,出于某种原因,它甚至不再考虑不同的子网。 您能否帮助解释这种行为?

 

附加的是Wireshark日志

Thankse2e.ti.com/.../5383.host10.1.1.10.1 .0.39 .pcap.7z

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

    伙计,

    此问题实际上已在您拥有的NDK版本(2.24x)中得到解决,但默认情况下不启用。

    要启用此修复程序,需要使用"-D_include_ACD_support"重建NDK堆栈。

    您可以在ti/NDK/stack/li/lliin.c的代码中看到此修复  只需搜索检查"_include_acd_support"的预处理程序代码。  (有关如何使用该宏以及它的其他功能进行重建的详细信息,请参见NDK文档)。

    您是否可以尝试使用该功能进行重建,并查看此功能是否解决了您的问题?


    有2个与此相关的错误报告:

    1. SDOCM10.7816万 -(ACD)允许重新构建堆栈,以避免从不同子网上的主机收到ARP请求的ARP表条目
      1. 这已被修复,但该修复是专门为地址冲突检测(ACD)支持而添加的,因此被预处理程序检查(如上所述)所包围。
    2. SDOCM10.7816万实现的NDK-70ARP表行为应该是NDK中的默认行为
      1. 这是为了删除该预处理程序代码。
      2. 目前计划在下一个主要NDK版本中进行此操作。

    Steve