lwIP 支持 Zeroconf 吗?

Posted

技术标签:

【中文标题】lwIP 支持 Zeroconf 吗?【英文标题】:Does lwIP support Zeroconf? 【发布时间】:2011-01-23 10:59:41 【问题描述】:

我看到lwIP 有一些 AutoIP(又名 IPv4LL,又名 RFC 3927)代码,但我不知道它是否在 Zeroconf 堆栈中执行更高级别的操作,即 mDNS 和 DNS-SD(与RFC 2782)。

那么,lwIP 是否支持 DNS-SD 服务发现?如果没有,从 Avahi 这样的项目中移植代码是否容易(假设许可允许)?

【问题讨论】:

【参考方案1】:

lwIP 网站有一个task tracker,其中包含以下三项(看起来好像它们是在 2010 年左右添加的,大约在最初提出这个问题的时候):

Add "One shot" Multicast DNS Queries (.local) to dns.c 标记完成,2016 年 12 月。它提供 ZeroConf 功能的子集。这不是一个完整的解决方案,但可以作为一个很好的基础。 Create "mDNSQuerier" module to support multiple response and continuous Multicast DNS queries Create multicast DNS Responder module enabling LwIP applications to support multicast DNS host name resoltuion 2015 年 8 月 28 日,后两张票被标记为“已取消”,并附有“已取消,因为似乎没有人愿意处理此问题”的说明。

【讨论】:

【参考方案2】:

这是一个非常小的 mDNS 响应器,可以很容易地移植到 lwIP:

https://bitbucket.org/geekman/tinysvcmdns

Apple 的 mDNSResponder 对于非常小的系统(就 RAM 使用而言)仍然是相当重量级的,所以如果只需要基本功能,这个可能是首选。

【讨论】:

【参考方案3】:

不,lwIP 不支持 Zeroconf 的任何部分,除了 AutoIP。 我没有看过 Avahi,但将 Apples mDNSResponder 移植到 lwIP 很简单。有一点肮脏的地方你 必须拉回 pbuf 标头才能访问 IP 标头以获取 发件人IP(我认为这是一种“正确”的方法正在开发中 对于 lwIP 但 AFAIK 尚未发布)。

使用 mDNSResponder,您可以获得服务广告和发现。

【讨论】:

【参考方案4】:

我无法评论您问题的 LWIP 部分(我上次使用 LWIP 时它甚至没有 IPv4LL 支持),但您可能有兴趣知道 Apple 已经开源了他们的 mDNSResponder 代码,可用从这里: http://developer.apple.com/networking/bonjour

这个实现的有趣之处在于,它们提供了一个 VxWorks 平台层,这可能比 Avahi 库更适合移植到您的嵌入式目标。

【讨论】:

以上是关于lwIP 支持 Zeroconf 吗?的主要内容,如果未能解决你的问题,请参考以下文章

Android 可以通过蓝牙支持 Zeroconf/Bonjour 吗? TCP/IP 怎么样?

lwIP2.1.x 更新详情

lwIP2.1.x 更新详情

lwIP 2.1.x 主要更新详情

Zeroconf和Python

LWIP总结