Zeroconfig 具有多个接口

网络工程 linux
2022-02-09 13:46:16

我有一些疑问。首先,我对网络的了解很少。

我试图了解 zeroconfig 在并非所有设备都在单个网络上但它们都连接到集中式 PC 的情况下如何工作。它本质上是使用 g_ether 运行 linux 的嵌入式 arm 设备。因此,中央设备是主机 Windows 桌面。

我想每个连接到 PC 的设备都有自己的网络接口,并且从一个设备进行广播,不会到达第二个设备。如果主机 PC 请求设备使用的 IP 地址,它会正确协商第二个网络上的设备的新 IP 地址吗?

其次,我们在设备上使用 avahi。Windows 使用... w/e Windows 使用。zeroconf 是标准协议还是它们都有单独的实现。

如果这不起作用,我们应该使用其他标准吗?我们的要求是能够将 40 个连接到单台电脑……这是一个荒谬的 USB 集线器数量,但这就是他们想要的。

考虑到我得到的答案,还有 1 个问题。如果不能保证每台设备都有自己的IP地址,这是否意味着路由不起作用?考虑一台连接到两个网络的 PC,其设备具有相同的 IP 地址。是否可以使用该 IP 地址与单个设备通信。我想至少在 C++ 中我们可能必须指定一个网络适配器?

除了桥接所有设备之外,还有其他解决方案吗?这将用于制造,因此自动化比易于设置更重要。

也许我对 RNDIS usb 驱动程序工作的理解也是错误的。每个设备都有自己的网络接口。我假设像所有其他网络接口一样,它们是独立的网络。是否可以告诉 RNDIS 为多个设备加载单个网络接口?

1个回答

我试图了解 zeroconfig 在并非所有设备都在单个网络上但它们都连接到集中式 PC 的情况下如何工作。

Zeroconf 不是为在这种情况下工作而设计的,所以不要期望事情开箱即用。

Zeroconf 包含三个组件:IPv4LL、mDNS 和 DNS-SD。

  • IPv4LL 允许设备配置不与同一链路上的另一个设备冲突的地址,而无需依赖任何类型的服务器。如果每个设备有一个链接,那么每个设备将独立选择一个 IP 地址。无法保证所有设备都具有不同的 IP 地址。

  • mDNS 使用链路本地多播,因此它通常只能在一个链路上工作。您的中央机器将看到所有设备,但设备不会互相看到。

  • DNS-SD 是独立于网络的,因为它依赖于更高级别的协议:DNS。

如果您希望 Zeroconf 在您的设备上工作,最简单的方法是让您的中央主机桥接其所有网络接口。

zeroconf 是标准协议还是它们都有单独的实现。

这个问题没有意义。作为标准协议和具有不同的实现是两个完全正交的事情。是的,Zeroconf(或者更确切地说,它的每个组件)都在 RFC 中指定。是的,它有几个实现。

但是,Windows 本身并没有完全实现 Zeroconf。它只实现 IPv4LL。Apple 为 windows 实现了 mDNS 和 DNS-SD。但 Windows 主要依赖于一种名为 UPnP 的竞争技术,该技术的设计目的并非相同。