什么是AWDL(Apple无线直连)以及它的工作原理是什么?

48

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

但是我找不到有关此技术或此接口的任何文档,它的行为方式,我们必须/不得做什么等。谷歌没有相关信息 :(。

特别地,我认为它意味着“建立了 BT 连接,并在其上运行 IP 桥接,您可以使用此来进行点对点通信”。苹果自己的系统库存在错误,其中这个桥梁不能够迅速设置好,如果您发送数据太快,操作系统似乎会将其丢弃。因此...如果我可以查询此 awdl0,则希望检查“您准备好了吗?”并延迟 P2P 消息直到操作系统满意。


更新

更多信息:我可以让 iOS 设备之间创建 awdl0 连接对 - 但它们永远不会被创建到 OS X 设备,无论 BT 和 Bonjour 是否打开,无论设备是否配对。


一些背景:

在 iOS5 中,Apple 永久性禁用了 Bonjour/点对点网络的蓝牙部分,并发布了技术说明,指导每个人使用 DNS-SD 如果他们希望在 iOS 设备之间继续使用蓝牙作为传输。这很好,但它意味着您必须使用 DNS-SD,如果您想要高性能的蓝牙,并且您希望它可靠。

(GameKit 有时可以正常工作,但在现实场景中,例如拥挤的公共场所,我们经常看到可怕的性能 - 如果您使用 DNS-SD,则此问题会消失)

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

DNS-SD 是令人敬畏的,我们在 iOS 设备之间具有高速、低延迟的点对点连接 - 所有 GameKit 所承诺的东西,在拥有多个 wifi/BT 设备的范围内往往无法实现。

2个回答

57

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

什么是AWDL?

AWDL(Apple Wireless Direct Link)是苹果用于您期望的所有地方的低延迟/高速WiFi对等连接,例如AirDrop,GameKit(也使用蓝牙),AirPlay以及可能还有其他。 它使用自己的专用网络接口,通常为“awdl0”。

尽管某些服务(如即时热点、蓝牙共享上网(当然)、GameKit)通过Bluetooth SDP广播其服务,但苹果决定通过WiFi广告AirDrop,并无意中破坏了数百万Yosemite和iOS 8用户的WiFi性能。

AWDL是如何工作的?

自iPhone 4以来,iOS内核具有多个WiFi接口来连接一个WiFi Broadcom硬件芯片。

  • en0-主WiFi接口
  • ap1-WiFi接入点接口,用于WiFi共享上网
  • awdl0-Apple Wireless Direct Link接口(自iOS 7以来?)

通过拥有多个接口,苹果能够在en0上拥有标准的WiFi连接,同时仍可以在awdl0上广播、浏览和解决点对点连接(只是不是很好)。

您可以在这里这里找到更多信息。


23
我希望能够更精确地解释这个协议的内部工作机制。以下是引用这篇论文摘自摘要的一部分:
简而言之,每个 AWDL 节点都会宣布一系列可用性窗口(Availability Windows),表明其准备好与其他 AWDL 节点通信。一个选举出的主节点同步这些序列。在可用性窗口之外,节点可以将其 Wi-Fi 无线电调到不同的信道以便与接入点进行通信,或者关闭以节省能量。
从用户的角度来看,AWDL 允许设备在保持连接到基础设施型 Wi-Fi 网络的同时通过快速在两个网络的信道之间进行跳转来与 AWDL 对等节点“同时”通信(AWDL 使用固定的社交信道 6、44 和 149)。与之前的回答相比,我们发现当前版本的 AWDL 工作得相当不错,频道跳换只会引起很小的开销。
免责声明:我是这篇论文的合著者,我们通过反向工程获取了这些信息。如果您对详细信息感兴趣,请阅读该论文并查看即将发布的Wireshark dissecto

2
Google的Project Zero对AWDL有另一个很好的解释。 - 200_success

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接