<p>I'd like to provide a more precise answer as to <em>how</em> the protocol works internally. I quote part of the abstract of <a href="https://arxiv.org/abs/1808.03156" rel="noreferrer">this paper</a>.</p>

<blockquote>
  <p>In short, each AWDL node announces a sequence of Availability Windows
  (AWs) indicating its readiness to communicate with other AWDL nodes.
  An elected master node synchronizes these sequences. Outside the AWs,
  nodes can tune their Wi-Fi radio to a different channel to communicate
  with an access point, or could turn it off to save energy.</p>
</blockquote>

<p>From a user perspective, AWDL allows a device remain connected to an infrastructure-based Wi-Fi network and communicate with AWDL peers "at the same time" by quickly hopping between the channels of the two networks (AWDL uses fixed social channels 6, 44, and 149). In contrast to the previous answer, we found that current versions of AWDL work fairly well and channel hopping only induces a small overhead.</p>

<p><em>Disclaimer</em>: I'm co-author of <a href="https://arxiv.org/abs/1808.03156" rel="noreferrer">this paper</a> and we retrieved this information by means of reverse engineering. If you are interested in the details, please read the paper and have a look at the <a href="https://seemoo.de/wireshark-awdl" rel="noreferrer">Wireshark dissector</a> (published soon).</p>
What is AWDL (Apple Wireless Direct Link) and how does it work?
<p>I'm trying to find out what AWDL is. On iOS, if you use Apple's peer-to-peer networking over BlueTooth, it seems Apple creates a new Network Interface "awdl0" to implement (I guess) IP-over-BT.</p>

<p>But I can't find any docs on this tech, or this interface, how it behaves, things we must / must not do with it, etc. Google comes up blank :(.</p>

<p>In particular, I <em>believe</em> it means "established a BT connection, and I'm running an IP bridge over the top, and you can use this to communicate peer-to-peer". Apple's own system libraries have bugs where this bridge isn't setup quickly enough, and if you send data too soon, it appears to get dropped by the OS. So ... if I can query this awdl0, I hope to check "are you ready yet?" and delay P2P messages until the OS is happy.</p>

<hr>

<h2>UPDATE</h2>

<p>More info: I can get pairs of iOS devices to create awdl0 connections to each other - but they never get created to OS X machines, whether BT and Bonjour are on or not, whether the devices are paired or not.</p>

<hr>

<p>Some background:</p>

<p>In iOS5, Apple permanently disabled the Bluetooth parts of Bonjour/Peer-to-peer networking, and published a technote instructing everyone to use DNS-SD if they wanted to keep using Bluetooth as a transport between iOS devices. This is fine, but it means you <em>must</em> use DNS-SD if you want high-performance BT, and you want it reliable.</p>

<p>(GameKit <em>sometimes</em> works fine, but we often see terrible performance in real-world scenarios, e.g. crowded public places - which goes away if you use DNS-SD)</p>

<p>DNS-SD protocol doesn't include info to tell you what the hardware is using. But it does tell you the Network Interfaces (which is how I know we're running on awdl0)</p>

<p>DNS-SD is awesome, and we have high-speed, low latency connections peer-to-peer between iOS devices - all the stuff that GameKit promises but often fails to deliver whenever there's more than a few wifi/BT devices in range.</p>