Service Discovery Protocols

Service Discovery is the automatic detection of devices and services offered by devices on a computer network. A service discovery protocol (SDP) is a network protocol that helps accomplish service discovery. 

Simple Service Discovery Protocol (SSDP) is a networkprotocol based on the Internet Protocol Suite for advertisement and discovery of network services and presence information. It accomplishes this without assistance of server-based configuration mechanisms, such as DHCP or DNS, and without special static configuration of a network host. SSDP is the basis of the discovery protocol of Universal Plug and Play (UPnP) and is intended for use in residential or small office environments. 

Multicast DNS(mDNS) protocol is published as RFC 6762, uses IP multicast UserDatagram Protocol(UDP) packets, and is implemented by the Apple Bonjour and open source Avahi software packages. Android contains an mDNS implementation. mDNS has also been implemented in Windows 10, but its use there is limited to discovering networked printers. mDNS can work in conjunction with DNS Service Discovery (DNS-SD), a companion zero-configuration technique specified separately in RFC 6763

DNS Service Discovery over Multicast DNS (DNS-SD/mDNS), made fashionable through Apple’s Bonjour. DNS Service Discovery over Multicast DNS (DNS-SD/mDNS) is a prevalent technique widely used for offering and requesting services in local networks without configuration. Using the upper two layers of the Zeroconf stack, namely DNS Service Discovery and Multicast DNS, it provides a great user experience. DNS-SD/mDNS is widely used. It runs on Linux (Avahi), Windows (Avahi, Bonjour), MacOS (Bonjour), Android (NSD), and iOS (Bonjour). Implementations for Internet of Things (IoT) operating systems, such as contiki, also exist.

Zeroconf stack provides configurationless means for all of addressing, name resolution, and service discovery. A huge advantage is that these layers are independent of each other. The name resolution mechanism - multicast DNS (mDNS) works with automatic  or static address configuration as well as with DHCP. The service discovery layer - DNS service discovery (DNS-SD)  works with standard DNS as well as mDNS.


ref:

Service Discovery using ZeroConf Stack(DNS-SD/mDNS) - https://pdfs.semanticscholar.org/0c62/d94cef19690d8f1fabc7e1f8bcf369dc49ce.pdf

SSDP(Simple Service Discovery Protocol) Protocol - https://en.wikipedia.org/wiki/Simple_Service_Discovery_Protocol

MultiCast DNS(mDNS) -

Apple Bonjour-
SSDP protocol opensource libraries-

Apple mDNS/ZeroConf "C" library: Bonjour (Apache License) - https://opensource.apple.com/source/mDNSResponder/mDNSResponder-214/mDNSCore/

Linux Avahi library source code (LGPL license) - https://github.com/lathiat/avahi


Apple Bonjour Test/Sample code - https://github.com/jevinskie/mDNSResponder

ZeroConf(mDNS) discovery in C++ - https://github.com/HBPVIS/Servus

mDNS opensource implementations - https://github.com/topics/mdns 



Android Bonjour mDNS responder - https://www.andriydruk.com/post/mdnsresponder/

SIP URI Service Discovery using DNS-SD - https://tools.ietf.org/html/draft-lee-sip-dns-sd-uri-03


Proxy support for service discovery using mDNS/DNS-SD in low power networks - http://www.win.tue.nl/~mstolikj/publications/IOTSOS2014.pdf

KDNSSD(Network service discovery using Zeroconf) - https://api.kde.org/frameworks/kdnssd/html/index.html