Re: [dnssd] Generalized service discovery requirements/goals

Tim Chown <tjc@ecs.soton.ac.uk> Wed, 23 July 2014 19:08 UTC

Return-Path: <tjc@ecs.soton.ac.uk>
X-Original-To: dnssd@ietfa.amsl.com
Delivered-To: dnssd@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 74BFC1A0347 for <dnssd@ietfa.amsl.com>; Wed, 23 Jul 2014 12:08:14 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.221
X-Spam-Level:
X-Spam-Status: No, score=-1.221 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RP_MATCHES_RCVD=-0.001, SPF_NEUTRAL=0.779] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id YIN4U5-jSmys for <dnssd@ietfa.amsl.com>; Wed, 23 Jul 2014 12:08:11 -0700 (PDT)
Received: from falcon.ecs.soton.ac.uk (falcon.ecs.soton.ac.uk [IPv6:2001:630:d0:f102::25e]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id E33FF1A0296 for <dnssd@ietf.org>; Wed, 23 Jul 2014 12:08:10 -0700 (PDT)
Received: from falcon.ecs.soton.ac.uk (localhost [127.0.0.1]) by falcon.ecs.soton.ac.uk (8.13.8/8.13.8) with ESMTP id s6NJ86gM018702; Wed, 23 Jul 2014 20:08:06 +0100
X-DKIM: Sendmail DKIM Filter v2.8.2 falcon.ecs.soton.ac.uk s6NJ86gM018702
DKIM-Signature: v=1; a=rsa-sha1; c=simple/simple; d=ecs.soton.ac.uk; s=201304; t=1406142487; bh=wamvhN5TUdWKrsWqrADJeOxJFFE=; h=Mime-Version:Subject:From:In-Reply-To:Date:Cc:References:To; b=YoJS6s4+qBadL2/tCeC9p5JbUNSxe/g+S/jFsELlaRgOrXX4uN6fCrwd/Efn4wiqe qERjK+Ooh03FFSbVmi1XbL0Z5MsPkNHhPd4cZtGJ2QpxR5WV07y04yJgcK/IiYK56B i9Pz1BDCjTkX3JbaNyIVb2probk40pQQYKbfJUUM=
Received: from gander.ecs.soton.ac.uk ([2001:630:d0:f102:250:56ff:fea0:401]) by falcon.ecs.soton.ac.uk (falcon.ecs.soton.ac.uk [2001:630:d0:f102:250:56ff:fea0:68da]) envelope-from <tjc@ecs.soton.ac.uk> with ESMTP (valid=N/A) id q6MK860422106587O4 ret-id none; Wed, 23 Jul 2014 20:08:06 +0100
Received: from nat64.meeting.ietf.org (nat64.meeting.ietf.org [IPv6:2001:67c:1231:998:a4bd:7502:ee97:6937] (may be forged)) (authenticated bits=0) by gander.ecs.soton.ac.uk (8.13.8/8.13.8) with ESMTP id s6NJ7uQX001717 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Wed, 23 Jul 2014 20:07:58 +0100
Content-Type: multipart/alternative; boundary="Apple-Mail=_5C14BF11-0AA8-4918-90ED-1FFD290C7699"
Mime-Version: 1.0 (Mac OS X Mail 7.3 \(1878.6\))
From: Tim Chown <tjc@ecs.soton.ac.uk>
In-Reply-To: <c6ce5da5de4c450e8008fffbab883a6d@BY2PR03MB412.namprd03.prod.outlook.com>
Date: Wed, 23 Jul 2014 19:45:32 +0100
Message-ID: <EMEW3|232f587be269a936277c929101448f46q6MK8603tjc|ecs.soton.ac.uk|AAC5A884-3A36-4EE2-B38D-D8D8E3ADFF90@ecs.soton.ac.uk>
References: <c6ce5da5de4c450e8008fffbab883a6d@BY2PR03MB412.namprd03.prod.outlook.com> <AAC5A884-3A36-4EE2-B38D-D8D8E3ADFF90@ecs.soton.ac.uk>
To: Dave Thaler <dthaler@microsoft.com>
X-Mailer: Apple Mail (2.1878.6)
X-ECS-MailScanner: Found to be clean, Found to be clean
X-smtpf-Report: sid=q6MK86042210658700; tid=q6MK860422106587O4; client=relay,forged,no_ptr,ipv6; mail=; rcpt=; nrcpt=2:0; fails=0
X-ECS-MailScanner-Information: Please contact the ISP for more information
X-ECS-MailScanner-ID: s6NJ86gM018702
X-ECS-MailScanner-From: tjc@ecs.soton.ac.uk
Archived-At: http://mailarchive.ietf.org/arch/msg/dnssd/DMPsZ3EZjfA59lk3DwpSlkhmSGI
Cc: "dnssd@ietf.org" <dnssd@ietf.org>
Subject: Re: [dnssd] Generalized service discovery requirements/goals
X-BeenThere: dnssd@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: "Discussion of extensions to Bonjour \(mDNS and DNS-SD\) for routed networks." <dnssd.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dnssd>, <mailto:dnssd-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dnssd/>
List-Post: <mailto:dnssd@ietf.org>
List-Help: <mailto:dnssd-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dnssd>, <mailto:dnssd-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 23 Jul 2014 19:08:14 -0000

Hi,

On 23 Jul 2014, at 16:42, Dave Thaler <dthaler@microsoft.com> wrote:

> In offline email that Kerry Lynn and I exchanged, I sent what I wrote up some
> time ago about what I believe applications want from service discovery in
> general, based on experience and customer feedback over the past two
> decades, to provide additional context/input for the dnssd requirements
> discussion.  He then recommended I also send it to the list, so here it is.
> If folks think it would be useful in I-D format, I could do that.

Thanks for this Dave, it’s a useful perspective on the work in hand.  

Some initial comments below.
> 1      Introduction
> 
> “Service Discovery” encompasses discovery of various types of services, such as  devices, servers, application instances, etc.   All of these have some common aspects, including:
> 1)      Three levels of identifiers:
> 
> a.       A “service” (e.g.., a type of device, server, or application) to discover instances of.
> 
> b.      A particular “instance” of a service running on a specific network node, potentially reachable via multiple endpoints.  There can be multiple instances per service.
> 
> c.       A particular endpoint (e.g., IP address + port) at which an instance can be reached.  There might be multiple endpoints (e.g., IPv4 and IPv6) per instance.
> 

Agreed, and useful to differentiate.
> 2)      The following are some typical application operations:
> 
> a.       Enumerate all instances with minimal delay, and be immediately notified of changes.
> 
> b.      Get additional properties of a given instance (e.g., whether a printer supports color).
> 
> c.       Reconnect to a given instance, even if the endpoint has changed.
> 
The existing requirements draft doesn’t talk about specifics of what may be discovered, rather the characteristics of how an extended multi-link protocol should operate. But from the application perspective, these are very valid points.
> 3)      Multiple zones of interest (sometimes called “scopes”) within which to do discovery, such as: Local subnet, Physical proximity, Services the user has used before, Organization-specific, etc.   
> 
Or “my home” (whether I’m in it or not), etc...
> 4)      The following characteristics are important in how results are ordered/used.   The relative order of importance of the characteristics is often a choice made by a user or application developer.
> 
> a.       Features: an instance that supports a particular feature (e.g., color) may be more useful than one that does not.
> 
> b.      Live-ness: a currently reachable instance is typically more useful than an unreachable one.
> 
> c.       Proximity: an instance nearby is typically more useful than one farther away.
> 

So a couple of things here.

One is following the ‘stale information does not persist’ principle, unreachable information should not be retained.

Another is that we should probably distinguish discoverable (that the service is there) from reachable (e.g. it’s not firewalled from where I am) from usable (I can access/authenticate and use). 
> 2      Background
> 
> There are a number of key issues today that need to be addressed.
> Guest access: An increasingly common scenario is that of guest access, both within homes as well as within business environments.   This makes the concept of zones of interest more complicated.   Guests might or might not be permitted to discover and access a home printer for example, so might require a separate zone of interest for discovery.   Often guest access is implemented as a separate local subnet, which leads to the next problem.
In the homenet model, there are ‘realms’ and borders, and there’s an assumption of default policies being applied at borders, which may be overridden.

But there may be a ‘zone of interest’ of ‘devices in my home that a guest can use’, wherever they happen to be topologically.
> Multiple subnets: Many service discovery mechanisms today are designed for “local subnet” being the zone of interest.   However local subnet is not a user-visible concept and is becoming more and more at odds (e.g., due to guest access, mobile broadband, etc.) with typical consumer scenarios such as “within my house”.   That is, users care more about tangible Physical Proximity than a nebulous “local subnet” they don’t understand.   This makes link-scoped multicast solutions a poor match for such scenarios.
Indeed. 
> Efficient filtering: In many scenarios a client has a set of specific properties with which it wants to constrain the answers, such as only discovering color printers that can print double-sided.   This can be implemented by using a simple query to enumerate all service instances, getting the properties of them, and then filtering the results, OR by a complex query to enumerate all service instances that fit the criteria.   Although the latter would be more efficient, the complexity proved to be a problem and as a result the widely deployed protocols all use fairly simple queries.   The filtering is thus typically done by an API layer on top of the protocol, allowing applications to submit complex queries while using simple protocol queries underneath.
I believe this issue is the subject of tomorrow’s TXT discussion, see http://tools.ietf.org/html/draft-aggarwal-dnssd-optimize-query-00.
> Power-efficiency: Power conservation is becoming increasingly important.   With this trend comes the need to support discovery of services that are in a low-power state.   This requires either offload support in the network adapters at the service instances (as is available in some cases for mDNS for example), or a directory in another server.
> Live-ness detection: Determining live-ness of a service instance can be an issue when using a directory in another server, or when the zone of interest is “Services the user has used before” for instance.   Increasingly there are cases where it is expensive to determine whether a device is online or offline (e.g., if it went into a low power mode).  Furthermore, live-ness of a service is different from live-ness of the device hosting the service.   For example, the printer may be reachable but if it is jammed, it is less live than one in the ready-to-print state.  Another aspect of liveness is notification of changes when a device becomes online or offline while a client is in a user experience showing the available instances from which to choose.
Agreed, and your pointer to DNS LLQ at IETF89 was very useful in this regard.
> Managed environments: Managed environments use various types of directories (e.g., DNS servers, LDAP servers, etc.) for service discovery. Updating such directories requires certain privileges however, which may not be available to all services.  For example, in many networks, DNS updates are only permitted from DHCP servers.  Such permission constraints present obstacles to discovering unmanaged device and application instances.
> 3      Requirements
> 
> #
> Requirement
> 1
> An app can enumerate available zones of interest
> 2
> An app can discover instances of a given service within a specified zone of interest
> 3
> An app can determine whether an enumerated service instance is online
> 4
> An app can be notified whenever a service instance is added or removed
> 5
> An app can advertise a service instance within a specified zone of interest
> 6
> Advertised endpoints match the endpoints actually being listened on
> 7
> Support zones of interest that may be larger than single subnet but smaller than “everything”
> 8
> Identify a service instance in a way that is not tied to any endpoint so that if it is discovered multiple times with different endpoints (such as in two zones of interest at the same time), the app can tell they are the same service instance
> 9
> Enumeration must include service instances that could be in a low power state
> 10
> Discovery should require zero configuration by a human on an unmanaged device
> 11
> Support zero configuration for advertisement on unmanaged networks
So it would be interesting to map these to REQs in the existing requirements text - are there any explicit and important gaps to catch?
> The following are NOT requirements.
> ·         It is not required that one be able to advertise within any arbitrary zone of interest an instance that has no trust relationship. 
> 
> ·         It is not required that enumeration only return a set of online instances.  It is acceptable to return some offline instances as long as there is a way to determine whether an enumerated instance is online.  This is consistent with the fact that an instance may change its online/offline state at any time, such as immediately after being enumerated.
> 

The existing requirements draft is more focused on the networking aspects of scalability. So, given this is a nice initial stab at an application perspective on SSD, I personally think it would be worth capturing it in an I-D (whether we then move to publish it or not) and pushing it towards application area people for comment.

Tim