Bonjour Sleep Proxy Explained

Apple's Bonjour Sleep Proxy service is an open source[1] component of zero-configuration networking, designed to assist in reducing power consumption of networked electronic devices.[2] It allows a device providing services, such as file sharing, printer sharing, or remote log-in, to sleep, i.e. enter a low-power mode, while its services remain available, even world-wide, by registering with a sleep proxy server on the local network. The sleep proxy server continues to both advertise the services on the local network on behalf of the sleep host, and listen for incoming connections whether the services are available only locally or across the Internet. When any device attempts to use any proxied service, the proxy server wakes the sleeping device and the service works as if the sleeping device had remained fully powered.

Any device that can act as a sleep proxy server advertises this on all LANs of which it is a part. A device providing network services, such as file sharing, when its services are not actively being used can register its services with an available sleep proxy server and sleep until one of its services is needed. The sleep proxy server continues to advertise the services in Multicast DNS (mDNS) on behalf of the sleeping host. When the sleep proxy server sees an attempt to use any such service it wakes the sleeping host and the service proceeds normally, and in the case of SSH, a server with an active session can register with a proxy, sleep, and be awakened with the next received packet, continuing the same session.[3]

Apple refers to the service as Bonjour Sleep Proxy in its support documents.[4] The service uses the Wake on Demand feature, first offered in Mac OS X Snow Leopard.[5]

Details

Address Resolution Protocol and Neighbor Discovery Protocol

When a sleep proxy service accepts a request to proxy, it in effect takes over the IP addresses of proxied servers by announcing this through Address Resolution Protocol (ARP) and Neighbor Discovery Protocol (NDP). To claim traffic for the proxied host’s IPv4 addresses, it sends gratuitous ARP announcements so that packets addressed to the proxied server go to the proxy instead, and for IPv6 it does the same using the analogous NDP. To maintain the association, it responds on behalf of the sleeping host to ARP and NDP requests. This process effectively maps the IP addresses of proxied servers to a physical port of the proxy server.

When a packet arrives, from anywhere on the Internet, for a proxied service, the sleep proxy server wakes the sleeping host and reverses the above process, using ARP and NDP again to re-associate the same IP addresses with the proper machine, and any service proceeds as if the server had not slept.

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

Wake-on-LAN and magic packets

The method by which a sleep proxy server wakes a sleeping host is wake-on-LAN. The network interface of a sleeping host with this capability will wake the machine when it receives a specific series of bits, and a packet containing this pattern is a magic packet. Early implementations of Wake on LAN (WoL) required wired network interfaces. In the wireless case (Wi‑Fi), the wake-up packet is sent via Wireless Multimedia Extensions (WMM). In either case the function must be supported by the network interface. 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:

Implementations

Implementations on a local area network can be seen with Bonjour Browser.

External links

Notes and 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. Web site: Internet Draft: draft-cheshire-dnsext-multicastdns-11. Marc Krochmal. Apple Inc.. 2010-03-23. 2010-05-30.
  3. Web site: Understanding Sleep Proxy Service . Cheshire . Stuart . December 2009 . Stuart Cheshire . 2024-04-11 .
  4. Web site: Mac OS X v10.6: About Wake on Demand (Apple Article HT3774). Apple. 2009-08-27. 2009-09-15. Setting up Wake on Demand", "Setting up a Bonjour Sleep Proxy.
  5. Web site: Glenn Fleishman . Wake on Demand lets Snow Leopard sleep with one eye open . Macworld.com . 2009-08-28 . 2009-09-15 . How it works", "Energy Saver preference pane . 2009-09-16 . https://web.archive.org/web/20090916005930/http://www.macworld.com/article/142468/2009/08/wake_on_demand.html . dead.
  6. Apple Inc. Worldwide Developers Conference (WWDC) 2009, Session 508, Zero Configuration Networking Using BonjourWeb site: Archived copy . 2009-09-15 . dead . https://web.archive.org/web/20090806201857/http://devimages.apple.com/products/video/wwdc09/wwdc09iphonesessionlist.pdf . 2009-08-06 .