Zeroconf
Zeroconf или Zero Configuration Networking — набор технологий, которые автоматически создают IP-сеть без конфигурации или специальных серверов.
Также известен как Automatic Private IP Addressing (APIPA), позволяя необученным пользователям соединять компьютеры, сетевые принтеры и другие устройства вместе и получать работающую сеть. Без Zeroconf или чего-нибудь подобного пользователь должен либо установить специальные сервисы, например DHCP и DNS, или настраивать всё вручную.
Идеология Zeroconf применялась в утилите Rendezvous от фирмы Apple Computer[1], когда компания переходила с AppleTalk на IP.
Решенные проблемы
Zeroconf решает три проблемы:
- Выбор сетевого адреса для устройства
- Нахождение компьютеров по имени
- Обнаружение сервисов, например принтеров
Выбираемый адрес
Как IPv4, так и IPv6 описывают способы автоматического выбора IP-адреса. Согласно RFC 3927, IPv4 использует адреса 169.254.* (link-local).
Microsoft ссылается на это как Automatic Private IP Addressing (APIPA) или «Internet Protocol Automatic Configuration» (IPAC).
Поиск по именам
Существует два способа разрешения имен. Apple Computer использует Multicast DNS (mDNS), а Microsoft — Link-Local Multicast Name Resolution (LLMNR).
Эти протоколы имеют мало различий. mDNS выбирает имя в пространстве «.local» и объявляет его на некоторый мультикаст-адрес. Это приводит к специальной семантике для пространства имен .local, что считается проблемой для некоторых членов IETF [1] [2]. Текущий черновик LLMNR позволяет устройству выбрать любое доменное имя, что рассматривается как недостаток в безопасности некоторыми членами IETF [3]. mDNS совместим с DNS-SD как описано ниже, а LLMNR не совместим. Детальные различия обсуждаются здесь.
Поиск сервисов
Протокол Apple
Облегченный протокол DNS Service Discovery (DNS-SD) используется в продукции Apple, многих сетевых принтерах и значительном количестве других продуктов и приложений под различные ОС. Он считается более простым и легким в реализации, чем SSDP, поскольку он использует DNS, а не HTTP. Используются записи SRV (RFC 2782), TXT, и PTR для описания Service Instance Names, которые содержат подробности о доступных сервисах, таких как тип, доменное имя и опциональные параметры настройки. Существует реестр типов сервисов [4], публикуемый DNS-SD.org.
Протокол UPnP
Simple Service Discovery Protocol (SSDP) — это протокол Universal plug-and-play, используемый в Windows XP и нескольких типах сетевого оборудования. Несмотря на название, он считается сложным и требует больших усилий для реализации, чем DNS-SD. SSDP использует HTTP-уведомления, которые содержат URI типа сервиса и Unique Service Name (USN).
Стандарты IETF
Service Location Protocol (SLP) — единственный протокол для обнаружения сервисов, получивший статус RFC, обычно игнорируется крупными производителями, кроме Novell. SLP описан в RFC 2608.
Стандартизация
RFC 3927 — стандарт для выбора IP-адресов сетевыми устройствами, был опубликован в марте 2005 рабочей группой Zeroconf IETF working group, которая включала работников Apple, Sun и Microsoft.
Реализации
Apple Bonjour
Наиболее широко применяемое решение Zeroconf — Bonjour (бывший Rendezvous) от Apple Computer, который не следует SLP, а использует комбинацию стандартов IETF. Bonjour использует адресацию link-local, mDNS и DNS-SD. Apple перешла с SLP на mDNS и DNS-SD с выходом Mac OS 10.2.
Avahi
Avahi — реализация Zeroconf для дистрибутивов GNU/Linux и BSD.
Адреса IPv4 Link-Local
Доступно несколько реализаций:
- Windows и Mac OS поддерживают их с 1998. Apple выпустил реализацию с открытым кодом в пакете bootp для ОС Darwin.
- zcip (Zero-Conf IP)
- BusyBox [5] в текущих версиях включает реализацию zeroconf.
- zeroconf, пакет на основе Simple IPv4LL, более простой реализации от Arthur van Hoff.
Вышеперечисленные реализации — отдельные демоны. Другой подход заключается в модификации существующих DHCP-клиентов.
mDNS и DNS-SD
Мультикаст DNS позволяет использовать привычные API и формат пакетов DNS для работы в малых сетях без обычного DNS-сервера.
mDNS и DNS-SD (DNS Service Discovery) часто реализуются вместе. Наиболее популярная комбинация — это mDNSResponder от Apple, который имеет интерфейсы к Си и Java и доступен для BSD, Mac OS X, Linux, и других POSIX-совместимых ОС, а также для Microsoft Windows. [6] [7]
См. также
Ссылки на реализации
- Avahi, a free-software (LGPL) implementation of mDNS/DNS-SD for Linux, NetBSD, FreeBSD and Darwin/MacOSX
- Bonjour, an implementation of DNS-SD by Apple Computer
- JmDNS in Java
- Liaison
- mdnsd, embeddable Multicast DNS Daemon without DNS-SD
- pyZeroConf, Python service discovery
- tmdns, tiny multicast DNS, from the same project as ZCIP
- Multicast DNS
Ссылки
- Erik Guttman. Autoconfiguration for IP Networking: Enabling Local Communication (англ.) // IEEE Internet Computing[англ.] : journal. — 2001. — Vol. 5, no. 3. — P. 81—86.
- Zeroconf.org — Stuart Cheshire’s page, including expired internet drafts.
- «Understanding Zeroconf and Multicast DNS», December 2002 article, very slightly outdated, on the O’Reilly Network.
- AIR Wiki : ZeroconfTechnologies
- Charter of the DNSEXT working group, which coordinates LLMNR standarization
- Explanation of .local addresses, which are used with mDNS but not yet standardized by IANA
- DNS-SD.org DNS Service Discovery
- UPnP consortium
- RFC 2608, Service Location Protocol, Version 2
- avahi.org
Книги
- Zero Configuration Networking: The Definitive Guide, by Daniel Steinberg and Stuart Cheshire, O’Reilly
Видео
- Zeroconf tech talk by Stuart Cheshire to Google engineers.