41

我试图找出什么是AWDL。在 iOS 上,如果您通过蓝牙使用 Apple 的点对点网络,苹果似乎创建了一个新的网络接口“awdl0”来实现(我猜)IP-over-BT。

但是我找不到任何关于这项技术的文档,或者这个界面,它的行为方式,我们必须/不能用它做的事情等等。谷歌出现空白:(。

特别是,我相信这意味着“建立了一个BT连接,并且我在顶部运行了一个IP桥,你可以使用它来进行点对点通信”。Apple 自己的系统库存在错误,即此桥的设置速度不够快,如果您发送数据过早,它似乎会被操作系统丢弃。所以......如果我可以查询这个awdl0,我希望检查“你准备好了吗?” 并延迟 P2P 消息,直到操作系统满意为止。


更新

更多信息:我可以让成对的 iOS 设备相互创建 awdl0 连接——但它们永远不会被创建到 OS X 机器上,无论 BT 和 Bonjour 是否打开,无论设备是否配对。


一些背景:

在 iOS5 中,Apple 永久禁用了 Bonjour/Peer-to-peer 网络的蓝牙部分,并发布了一份技术说明,指导所有人使用 DNS-SD,如果他们想继续使用蓝牙作为 iOS 设备之间的传输方式。这很好,但这意味着如果你想要高性能的 BT 并且想要它可靠,就必须使用 DNS-SD。

(GameKit有时可以正常工作,但我们经常在现实场景中看到糟糕的性能,例如拥挤的公共场所 - 如果您使用 DNS-SD,这种情况就会消失)

DNS-SD 协议不包含告诉您硬件正在使用什么的信息。但它确实告诉你网络接口(这就是我知道我们在 awdl0 上运行的方式)

DNS-SD 很棒,我们在 iOS 设备之间建立了高速、低延迟的点对点连接——所有这些都是 GameKit 所承诺的,但当范围内有多个 wifi/BT 设备时,往往无法提供。

4

2 回答 2

50

AWDL 最近在 iOS 8 和 OS X Yosemite 设备中引起 Wi-Fi 问题时引起了很多关注。

什么是 AWDL? AWDL(Apple Wireless Direct Link)是一种低延迟/高速 WiFi 点对点连接,Apple 可用于您所期望的任何地方:AirDrop、GameKit(也使用蓝牙)、AirPlay,也许还有其他地方。它使用自己的专用网络接口工作,通常是“awdl0”。

虽然某些服务,如 Instant HotSpot、蓝牙网络共享(当然)和 GameKit 通过蓝牙 SDP 宣传他们的服务,但 Apple 决定通过 WiFi 宣传 AirDrop,并无意中破坏了数百万优胜美地和 iOS 8 用户的 WiFi 性能。

AWDL 是如何工作的? 从 iPhone 4 开始,iOS 内核已经有多个 WiFi 接口连接到 1 个 WiFi Broadcom 硬件芯片。

  • en0 — 主要 WiFi 接口
  • ap1 — 用于 WiFi 网络共享的接入点接口
  • awdl0 — Apple Wireless Direct Link 接口(从 iOS 7 开始?)

通过拥有多个接口,Apple 能够在 en0 上建立标准 WiFi 连接,同时仍然在 awdl0 上广播、浏览和解析点对点连接(只是不太好)。

您可以在此处此处找到更多信息。

于 2015-01-28T15:25:38.167 回答
18

我想就协议内部的工作方式提供更准确的答案。我引用了这篇论文的部分摘要。

简而言之,每个 AWDL 节点都会宣布一系列可用性窗口 (AW),表明它已准备好与其他 AWDL 节点通信。选出的主节点同步这些序列。在 AW 之外,节点可以将其 Wi-Fi 无线电调谐到不同的频道以与接入点通信,或者可以将其关闭以节省能源。

从用户的角度来看,AWDL 允许设备保持连接到基于基础设施的 Wi-Fi 网络,并通过在两个网络的通道之间快速跳转来“同时”与 AWDL 对等方通信(AWDL 使用固定的社交渠道 6、44 , 和 149)。与之前的答案相比,我们发现当前版本的 AWDL 工作得相当好,并且频道跳频只会产生很小的开销。

免责声明:我是本文的合著者,我们通过逆向工程检索了这些信息。如果您对细节感兴趣,请阅读论文并查看Wireshark 解剖器(即将发布)。

于 2018-08-10T12:41:31.683 回答