Re: [ogpx] The Urgent Need For Protocol Negotiation (Was: Beyond the monolithic client protocol endpoint)

Carlo Wood <carlo@alinoe.com> Mon, 07 December 2009 20:18 UTC

Return-Path: <carlo@alinoe.com>
X-Original-To: ogpx@core3.amsl.com
Delivered-To: ogpx@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 9996E3A692F for <ogpx@core3.amsl.com>; Mon, 7 Dec 2009 12:18:09 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.737
X-Spam-Level:
X-Spam-Status: No, score=-0.737 tagged_above=-999 required=5 tests=[AWL=0.693, BAYES_00=-2.599, HELO_EQ_AT=0.424, HOST_EQ_AT=0.745]
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 ZFikJI1L8LGF for <ogpx@core3.amsl.com>; Mon, 7 Dec 2009 12:18:08 -0800 (PST)
Received: from viefep11-int.chello.at (viefep11-int.chello.at [62.179.121.31]) by core3.amsl.com (Postfix) with ESMTP id 4E74A3A6808 for <ogpx@ietf.org>; Mon, 7 Dec 2009 12:18:08 -0800 (PST)
Received: from edge04.upc.biz ([192.168.13.239]) by viefep11-int.chello.at (InterMail vM.7.09.01.00 201-2219-108-20080618) with ESMTP id <20091207201756.UQA21592.viefep11-int.chello.at@edge04.upc.biz>; Mon, 7 Dec 2009 21:17:56 +0100
Received: from mail9.alinoe.com ([77.250.43.12]) by edge04.upc.biz with edge id ELHn1d01L0FlQed04LHoYi; Mon, 07 Dec 2009 21:17:56 +0100
X-SourceIP: 77.250.43.12
Received: from carlo by mail9.alinoe.com with local (Exim 4.69) (envelope-from <carlo@alinoe.com>) id 1NHjym-0006T3-U6; Mon, 07 Dec 2009 21:14:44 +0100
Date: Mon, 7 Dec 2009 21:14:44 +0100
From: Carlo Wood <carlo@alinoe.com>
To: Meadhbh Hamrick <meadhbh.siobhan@gmail.com>
Message-ID: <20091207201444.GB23549@alinoe.com>
References: <e0b04bba0912051014y1aeea211i2ce3267179c70f1e@mail.gmail.com> <4B1B785A.9000602@cox.net> <e0b04bba0912060911i122d62e9o37a7229a2d742ac@mail.gmail.com> <20091207001703.GA26539@alinoe.com> <f72742de0912071030k22cae4d1xd4100ecd823373af@mail.gmail.com> <b8ef0a220912071057y46127519ibfc23ba4205c67da@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <b8ef0a220912071057y46127519ibfc23ba4205c67da@mail.gmail.com>
User-Agent: Mutt/1.5.20 (2009-06-14)
Cc: ogpx@ietf.org
Subject: Re: [ogpx] The Urgent Need For Protocol Negotiation (Was: Beyond the monolithic client protocol endpoint)
X-BeenThere: ogpx@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Virtual Worlds and the Open Grid Protocol <ogpx.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/ogpx>, <mailto:ogpx-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/ogpx>
List-Post: <mailto:ogpx@ietf.org>
List-Help: <mailto:ogpx-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ogpx>, <mailto:ogpx-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 07 Dec 2009 20:18:09 -0000

On Mon, Dec 07, 2009 at 10:57:00AM -0800, Meadhbh Hamrick wrote:
> right. as i remember it (and i may be doing carlo's proposal a great
> disservice) the proposal is:
> 
> a. at connection time, the client tells the server what new protocols
> it knows about.
> b. if the server doesn't know about the new protocols, then it uses
> the base protocol
> 
> if so, we should also ask how this is different than a HTTP Upgrade.

The details are probably only important once we agree that this
is needed (or at least handy to have :p)...

Nevertheless, a better description would be:

a. At connection time, the server tells the client what implementation
   it represents (ie "opensim" or "lindenlab") (called "label" below),
   it's protocol version, and a "compatibility version"
   (multiple label/version/compversion triplets may be provided).

b. If the client knows about compversion or later for that implementation,
   then it proceeds; otherwise it would be incompatible (it will lack
   a feature that the service requires) and the user has to upgrade
   before they can connnect.

c. Since the client knows (was written for) "label" and version X,
   where X >= compversion, it will know what features are mandatory
   and which are optional (new optional feature of a later version
   it won't know about, but it also won't support those). Therefore
   it can request those optional features that it supports and wants.
   (your points 'a', above).

d. The server sends a final handshake where it tells the client with
   which features it will proceed (this is necessary as the server
   might DENY requested optional features, because it is possible
   that the current version of the server doesn't support those
   anymore; which doesn't make it incompatible with the viewer).

Thus:

TO client   <-- NETWORK label1 version1 compversion1 [label2 version2 compversion2 ...]
>From client --> PROT REQ label1 versionX <list of features>  (where compversion1 <= versionX <= version)
TO client   <-- PROT SET label1 versionX <pruned list of features>

-- 
Carlo Wood <carlo@alinoe.com>