[hybi] Intermediaries

Kris Zyp <kris@sitepen.com> Thu, 13 August 2009 21:13 UTC

Return-Path: <kris@sitepen.com>
X-Original-To: hybi@core3.amsl.com
Delivered-To: hybi@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 571C43A62C1 for <hybi@core3.amsl.com>; Thu, 13 Aug 2009 14:13:34 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.599
X-Spam-Level:
X-Spam-Status: No, score=-3.599 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 0Ic109TtXn8Z for <hybi@core3.amsl.com>; Thu, 13 Aug 2009 14:13:33 -0700 (PDT)
Received: from rs48.luxsci.com (rs48.luxsci.com [65.61.166.92]) by core3.amsl.com (Postfix) with ESMTP id 4DF123A6972 for <hybi@ietf.org>; Thu, 13 Aug 2009 14:13:33 -0700 (PDT)
Received: from [192.168.0.66] (71-213-93-74.slkc.qwest.net [71.213.93.74]) (authenticated bits=0) by rs48.luxsci.com (8.13.1/8.13.7) with ESMTP id n7DLC0Z0018902 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT) for <hybi@ietf.org>; Thu, 13 Aug 2009 16:12:01 -0500
Message-ID: <4A84819B.1040500@sitepen.com>
Date: Thu, 13 Aug 2009 15:11:55 -0600
From: Kris Zyp <kris@sitepen.com>
User-Agent: Thunderbird 2.0.0.22 (Windows/20090605)
MIME-Version: 1.0
To: hybi@ietf.org
X-Enigmail-Version: 0.96.0
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 7bit
Subject: [hybi] Intermediaries
X-BeenThere: hybi@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Server-Initiated HTTP <hybi.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/hybi>, <mailto:hybi-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/hybi>
List-Post: <mailto:hybi@ietf.org>
List-Help: <mailto:hybi-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/hybi>, <mailto:hybi-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 13 Aug 2009 21:13:34 -0000

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
 
It has been mentioned before that we would ideally like the
bidirectional web protocol to be comprehensible at some level by
intermediaries. While I know it is not possible to envision every way
that an intermediary might be used, I think it is worth considered
possible benefits that can be derived from intermediaries and how to
facilitate that. Some of the main benefits that intermediaries can
provide is in scalability, multiple intermediaries can handle
requests, diverting the load from the final server. Providing faster
response times for users in various locations with local edge-placed
servers is also an important benefit of intermediaries. The designers
of HTTP understood this, and I think we would do well uphold a design
that can scale well across across multiple machines and locations.

I would suggest two possible ideas within the bidirectional web
protocol that could help facilitate efficient use of intermediaries:

* Subscription mechanisms defined in the protocol - The client/server
reverse of proxied caching is essentially multicasting. If an
intermediary can understand the protocol for how subscriptions are
made (by client request, generally), and they can understand which
messages should be delivered to different subscribers, then they can
effectively act as a multicaster of server originated messages to
clients. A proxy can receive handle multiple clients subscribing to
the same topic, create a single subscription to the central server,
and then when messages are received from the server for the given
topic, they can disseminate the topic to all the subscribed clients.
The central server only needs to be concerned with the single client
(the proxy server), and the work is offloaded.

* HTTP cache updating - I think there is an opportunity for the
bidirectional web protocol to more than merely coexist with HTTP, but
it could also complement it, if it could participate in the caching
infrastructure of HTTP. If a class of messages sent from a server
could signal that a resource was create, updated, or deleted, and
include an updated representation of that resource, the location and
appropriate metadata (media type and any other meta data that the
cache must "Vary" on) the message could be used to update HTTP caches
with the latest version for the given resource representation.

A very common use case for server originated messaging is to notify
clients of changes to server-side resources. If such messages were
defined by the bidirectional protocol, there would standard mechanism
for notifying clients in a way that intermediaries could benefit from.
This would also allow HTTP proxies to be more effective; cached
entities could be kept in caches for much longer periods of time
(indefinitely) if a proxy was maintaining a subscription such that it
would be notified if the resource ever changed.

It would be possible for users to each create their own custom
definition of resource update notification, but if it was not
standardized such that intermediaries would understand, the only way
for clients to cause the intermediaries to be updated would be to
reissue a GET request for the resource, which would result in
server-to-client, client-to-server, and server-to-client trips, rather
than a single server-to-client trip. I don't think tripling the
latency overhead is really practical for most users that are needing
bidirectional communication, which should seems unfortunate, as I
believe notification of server side resource updates is one of the
most common usages of bidirectional communication (even if it is not
always stated in RESTful terms).

- --
Kris Zyp
SitePen
(503) 806-1841
http://sitepen.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
 
iEYEARECAAYFAkqEgZsACgkQ9VpNnHc4zAwRTACcDJjq3Blek1UhyVbIEppe38FV
qNIAn1ollcKnsHL4NaQvNUoPme5x6POi
=BmkV
-----END PGP SIGNATURE-----