Bonjour Sleep Proxy

Apple's **Bonjour Sleep Proxy** service is an open source
component of zero configuration networking, designed to assist in reducing power consumption of networked electronic devices. A device acting as a **sleep proxy server** will respond to Multicast DNS queries for another, compatible device which has gone into low power mode. The *low-power-mode* device remains *asleep* while the sleep proxy server responds to any Multicast DNS queries.

When the sleep proxy server sees a query which requires the *low-power-mode* device to *wake up*, the sleep proxy server sends a special wake-up-packet ("magic packet") to the low-power-mode device. Finally, communication parameters are updated via Multicast DNS and normal communications proceed.

Apple Inc. describes the service as **Bonjour Sleep Proxy** in their support documents. The service supports the **Wake on Demand** feature, first offered in Mac OS X Snow Leopard.

## Details

### Address resolution protocol

The sleep proxy service responds to address resolution protocol requests on behalf of the low-power-mode device:

> When a sleep proxy sees an IPv4 ARP or IPv6 ND Request for one of the sleeping device's addresses, it answers on behalf of the sleeping device, without waking it up, giving its own MAC address as the current (temporary) owner of that address.
>
>

This may appear confusing to network administrators who are not expecting the behaviour of changing MAC addresses.

### Wireless magic packet

In case the low-power-mode device is communicating via Wi-Fi, the wake-up-packet is sent via Wireless Multimedia Extensions (WMM). This was not possible in previous implementations of Wake on LAN (WoL). The wireless hardware must be updated enough to include WMM support. Apple provides instructions for checking compatibility with this feature for Macintosh computers.

### Supported services and examples

The sleep proxy service is able to advertise any Bonjour-supported services, while the host computer sleeps. Some examples of supported services are:

* File sharing: a host supporting the sleep proxy service, which offers file services, may go to sleep as needed. When someone needs to access shared files, the host will wake up automatically.
* iTunes library sharing: the computer hosting the iTunes library may go to sleep, and will automatically wake when someone wishes to browse the iTunes library from a different PC.
* Printer sharing: a printer may be connected and shared from a computer supporting sleep proxy service. The computer can go to sleep when not in use, but will wake when needed to service a print job being sent from a different computer.
* SSH: a computer offering SSH access may go to sleep, and awaken via the sleep proxy service when an SSH login is initiated. On Darwin or Macintosh computers, the host can be put back to sleep using the command line instruction: pmset *sleepnow*.
* Desktop sharing: similar to above examples.

### Troubleshooting

Stuart Cheshire has a page describing steps for troubleshooting Sleep Proxy Service.

## Implementations

*Implementations on a local area network can be seen with Bonjour Browser.*
**Script error: No such module "Unsubst".**

* Apple AirPort Express with firmware version 7.4.1 or 7.4.2
* Apple AirPort Extreme with firmware version 7.4.1 or 7.4.2
* Apple AirPort Time Capsule
* Apple TV (all generations)
* Computers running Mac OS X Snow Leopard act as a Bonjour sleep proxy server when Internet sharing is enabled.

## References

1. ↑ Note: see

mDNSResponder source code at www.macosforge.org, which includes a full implementation of the DNS-SD/mDNS Sleep Proxy Service, available under the Apache 2.0 Open Source license.
2. ↑ 2.0 2.1 2.2 2.3 Marc Krochmal (2010-03-23). "Internet Draft: draft-cheshire-dnsext-multicastdns-11". Apple Inc. Retrieved 2010-05-30.
3. ↑ 3.0 3.1 3.2 3.3 3.4 3.5 "Mac OS X v10.6: About Wake on Demand (Apple Article HT3774)". Apple. 2009-08-27. Retrieved 2009-09-15. Setting up Wake on Demand", "Setting up a Bonjour Sleep Proxy
4. ↑ 4.0 4.1 4.2 Glenn Fleishman (2009-08-28). "Wake on Demand lets Snow Leopard sleep with one eye open". Macworld.com. Retrieved 2009-09-15. How it works", "Energy Saver preference pane
5. ↑ Apple Inc. Worldwide Developers Conference (WWDC) 2009, Session 508, *Zero Configuration Networking Using Bonjour*[1]

## External links

* US 7107442 , see *Mosaics* tab for figures
* US 7330986 , see *Mosaics* tab for figures
* US 7447757 , see *Mosaics* tab for figures
* Fscklog.com: Snow Leopard und 2009er Macs: Wake on WLAN (German, Deutsch)
* Macrumors.com: A Closer Look at Snow Leopard's Wake on Demand Feature
* opensource.apple.com: Open-source mDNS implementation including the sleep proxy service
* UC San Diego: SleepServer: A Software-Only Approach for Reducing the Energy Consumption of PCs within Enterprise Environments 22 June 2010. Usenix 2010.
* Microsoft Research: Sleepless In Seattle No Longer 22 June 2010. Usenix 2010.