ZeroConfSpec

Revision 19 as of 2005-11-04 17:39:08

Clear message

Introduction

This Spec describes the integration of ZeroConf technologies for Dapper

Rationale

ZeroConf allows computers to communicate on a network without any kind of configuration, additionally it provides for discovery of services, so instead of specifying an IP you can select from a list of advertised servers on the network. This is usefull so that you can simply plug two laptops together an transfer a file or play a network game. It is also usefull in situations where you don't know about the other services, such as people to chat to or files to share.

Scope and Use Cases

Home Users

  • Trent wants to send a file to Jeff, he plugs an ethernet cable in between his two computers and is able to drag and drop it onto Jeff's computer in the Network Servers. Neither Trent nor Jeff touched any configuration and a pre-existing network was not setup.
  • Trent is at a conference and sitting around doing nothing, he opens up gaim and can see other people on the network to talk to.
  • Jane wants to play a network game of Four-in-a-row with Claire, they are using wireless at Jane's place with an existing IP setup, Jane starts a game and Claire is able to connect to it simply by clicking the name of the game Jane specified in Four-in-a-row.
  • Isaac is at Uni, he has completed his work and wants to print it out. His Uni' printers advertise via mDNS/DNS-SD and cups automatically configures itself to print to these printers when he connects his laptop.
  • Sebest subscribes to the domain ubuntu.com using Wide-Area Zeroconf and his firefox's bookmark is automagically updated with links to launchpad, wiki, bugzilla, etc...

Corporate Users

The zeroconf technology would be a great addition to UbuntuForSmallBusinesses and SmallBusinessServer.

  • The common use case is small business from 5 to 20 workstations and 1 or 2 servers.
  • John install his Ubuntu 4 SBS server, and create the different user accounts.
  • Then John wants to install the workstations, he starts the computer with a Ubuntu Cd
  • The install cd detects the apt-proxy (through zeroconf)
  • The installation is over, and Marc wants to login, the kerberos server is detected
  • Marc wants to write a mail, he starts evolution: smtp, imap, ldap, webcal all configured throught zeroconf
  • Marc wants to call its friend to tell him how great is zeroconf, he starts gnomemeeting that automatically detects asterix (Pabx) and route the call.
  • John's firm is getting bigger, he needs to add a new server for fault tolerance: he starts his brand new Ubuntu 4 SBS server, it detects that there is already one Ubuntu 4 SBS servers and automatically replicates its configuration.

To sum up, zeroconf can solves immensenly the configuration and installation process in corporate environments. Basically, you would have nothing to configure and the workstation.

Design

  • Avahi/Zeroconf should be turned off by default and have an easy option to be turned on (both to respect the Ubuntu default policy of "no open ports", and privacy issues).

Implementation Plan

  • Move avahi into main [deps libdaemon], SebastienBacher has already made a wiki page about this

  • Make avahi not listen on the network by default.
  • Install/configure avahi and libnss-mdns by default with the desktop.
  • Install zeroconf if NetworkManager does not provide sufficient zcip autoconfiguration by then

  • Ask Trent to add option to avahi to start/stop listening on a particular interface (so that we don't have to start/kill the daemon whenever we change the option or bring an interface up/down).
  • Add an option to one of the GNOME dialog to activate the feature. This option will send a dbus signal.

Packages Affected

  • zeroconf - configures IPv4 Link Local addresses when there is no static IP or DHCP address
  • network-manager - May be able to do what zeroconf does
  • avahi - Handles service dicovery, allows applications to publish and browse for services
  • libnss-mdns - Allows the system to resolve .local addresses, advertisd by avahi via the standard resolver interface.
  • libknssd-avahi - Allows *all* kde programs already using dns-sd with the KDE api to use avahi
  • libavahi-bonjour-compat (doesnt exist in ubuntu yet, avahi 0.6, for dapper) -- Allows applications to use avahi that use the bonjour API (in both a API and ABI compatible manner)
  • libavahi-bonjour-howl - as above, but for HOWL
  • service-discovery-applet - gnome applet display services and allowing you to launch them
  • gaim - gaim 2.0 will support zeroconf (currently support howl, port to avahi may happen)
  • gnome-vfs - support zeroconf with howl (avahi 0.6 has a howl compat layer specifically for gnome-vfs)

Outstanding Issues

  • where do we put the option to turn it on/off , Maybe it would better to be able to disable only the publishing part (the one that need to open a port) and always make the browsing part functionnal. In short only disabling the server part of avahi and not the client part.
  • printing support: as mentionned by TrentLloyd, it is upstream work. Hub plan to do it to implement

    • ZeroConf printer support

    • Advertise shared printer
  • zeroconf (the application) needs a bit of work to become usable
  • make clear for the user if the feature is used or not
  • make certain the interaction between avahi and n-m is sane
  • Avahi is not limited to lan, there is wide-area support coming soon. We should take this in account, because an UI will be needed for the user to configure the domain(s) it's like to be able to publish/browse and also an optionnal login/pass for publishing purpose. This UI could also be use to enable/disable avahi publishing for lan use.

UBZ BOF Agenda

UBZ Pre-Work

Points for BoF discussion by TrentLloyd(Lathiat)

So this spec has grown, and is reaching a fair bit out, but I think the following points need to be focussed

  • Moving avahi into main [deps libdaemon]
  • Determining / deciding to evaluate possible IPv4-LL solutions (zeroconf, network-manager)
    • - Obviously zeroconf has been shown to have possible issues at UBZ, need to investigate actual cause and possible solutions
  • Shipping Avahi by Default (but disabled)
  • Exposing a UI to turn it on
    • - How/where/what/why? UI at all? would be nice to be an easy tick option
  • Moving libnss-mdns into main
    • - Installing by default - Shipping on by default
  • Configuring as many programs as possible to use Avahi, including with howl and bonjour compat layers

User Interface Requirements

  • Various applications need to be extended to support Avahi, good examples would be gnome-vfs (for nautilus), gaim, muine and cups. I (TrentLloyd) plan to do this work where possible for upstream.

  • GnomeMeeting in CVS supports service discovery, using Avahi instead of Howl with a patch by SebastienEstienne, Ubuntu cannot use howl due to various licensing problems.

  • service-discovery-applet : allows to quickly access to zeroconf services. This applet can also be considerated as a generic Gui to add zeroconf support for client that doesn't support it yet. (eg: it can browse for Zeroconf Web servers and launch firefox with the good Url).


CategorySpec