Re: [ogpx] LLIDL, LLSD, Transport

"Hurliman, John" <john.hurliman@intel.com> Thu, 25 February 2010 01:54 UTC

Return-Path: <john.hurliman@intel.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 5CBB73A860E for <ogpx@core3.amsl.com>; Wed, 24 Feb 2010 17:54:08 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.599
X-Spam-Level:
X-Spam-Status: No, score=-6.599 tagged_above=-999 required=5 tests=[AWL=-0.001, BAYES_00=-2.599, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-4]
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 3T+68gIrqvv0 for <ogpx@core3.amsl.com>; Wed, 24 Feb 2010 17:54:07 -0800 (PST)
Received: from mga14.intel.com (mga14.intel.com [143.182.124.37]) by core3.amsl.com (Postfix) with ESMTP id CB89C3A8504 for <ogpx@ietf.org>; Wed, 24 Feb 2010 17:54:06 -0800 (PST)
Received: from azsmga001.ch.intel.com ([10.2.17.19]) by azsmga102.ch.intel.com with ESMTP; 24 Feb 2010 17:56:15 -0800
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos; i="4.49,535,1262592000"; d="scan'208,217"; a="247844334"
Received: from rrsmsx604.amr.corp.intel.com ([10.31.0.170]) by azsmga001.ch.intel.com with ESMTP; 24 Feb 2010 17:56:15 -0800
Received: from rrsmsx601.amr.corp.intel.com (10.31.0.151) by rrsmsx604.amr.corp.intel.com (10.31.0.170) with Microsoft SMTP Server (TLS) id 8.2.176.0; Wed, 24 Feb 2010 18:56:14 -0700
Received: from rrsmsx506.amr.corp.intel.com ([10.31.0.39]) by rrsmsx601.amr.corp.intel.com ([10.31.0.151]) with mapi; Wed, 24 Feb 2010 18:56:14 -0700
From: "Hurliman, John" <john.hurliman@intel.com>
To: ogpx <ogpx@ietf.org>
Date: Wed, 24 Feb 2010 18:56:11 -0700
Thread-Topic: [ogpx] LLIDL, LLSD, Transport
Thread-Index: Acq1rDOyLvOHTYckQpScbLVz1SOlDwAELNvw
Message-ID: <62BFE5680C037E4DA0B0A08946C0933DCB12DAD9@rrsmsx506.amr.corp.intel.com>
References: <OF9C5B1597.47D03774-ON852576CB.006382E5-852576CB.006409C6@us.ibm.com> <4B79B2C9.8020800@cox.net> <e0b04bba1002151435g15b9050qeec1bde4b7d7c998@mail.gmail.com> <f72742de1002230858l2da40a7ag6daac72e6fd7c054@mail.gmail.com> <e0b04bba1002241550q4ff43e1eh96c33b5efe1376f8@mail.gmail.com>
In-Reply-To: <e0b04bba1002241550q4ff43e1eh96c33b5efe1376f8@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
acceptlanguage: en-US
Content-Type: multipart/alternative; boundary="_000_62BFE5680C037E4DA0B0A08946C0933DCB12DAD9rrsmsx506amrcor_"
MIME-Version: 1.0
Subject: Re: [ogpx] LLIDL, LLSD, Transport
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: Thu, 25 Feb 2010 01:54:08 -0000

As a side note, we are successfully using LLSD inside a thin TCP transport for communication between hosts as part of an internal project. Defining LLIDL and using LLSD serialization without going near HTTP is  easy to do, and even happens in the VWRAP specs. http://tools.ietf.org/html/draft-hamrick-vwrap-launch-00 defines LLIDL for LLSD that is meant to be transported in a web document. Whether that web document is retrieved through GET, POST, FTP, Gopher, etc. has no relevance.

John

From: ogpx-bounces@ietf.org [mailto:ogpx-bounces@ietf.org] On Behalf Of Morgaine
Sent: Wednesday, February 24, 2010 3:51 PM
To: ogpx
Subject: Re: [ogpx] LLIDL, LLSD, Transport

Joshua, being rather fond of decoupling as a software power tool, I tend to favour decoupling in documentation as well --- cross-references are generally better than static inclusion.

With regard to the use of GET, PUT and so on, it seems to me that which operations are supported is only relevant within the particular layer that performs these operations.  The only other place where this knowledge might perhaps be exposed is in a prior facilities negotiation phase, if any.

Within their layer, these operation of course invoke corresponding operations at the next layer, but those corresponding operations should not really know what invoked them otherwise you would never be able to replace HTTP with some other transport without modifying the next layer as well.

Be that as it may, if you think that this would be rather difficult then at the very least I would like to try to find a few additional words to add to the serializations section, in order to make it clear that further serializations are possible and would not be unexpected.

This is particularly important I feel in regard to the binary serialization of LLSD which could usefully be joined at a later date by a Protocol Buffer or Thrift serialization over TCP.  I would wish to make it clear that our document places no obstacles in the way of further serializations, in the sense that appearance of such new serializations would not be regarded as incompatibility with the LLSD specification.


Morgaine.




==================================
On Tue, Feb 23, 2010 at 4:58 PM, Joshua Bell <josh@lindenlab.com<mailto:josh@lindenlab.com>> wrote:

On Mon, Feb 15, 2010 at 2:35 PM, Morgaine <morgaine.dinova@googlemail.com<mailto:morgaine.dinova@googlemail.com>> wrote:
There is no need for the LLIDL/LLSD spec to mandate any specific transport layer at all.  It's a higher level data specification which can work perfectly well over any reliable transport.  If details are provided with regard to one particular transport, then these should be given in a separate document so that a different transport can also be specified, separately, without requiring change to the specification document of the layer above it.

I confess, I was a little put off by this at first. Some work I was doing with LLSD would have benefited from "naked" LLIDL descriptors, with no semantics about traffic. But then I started reviewing the use cases for LLIDL:

* Declaring the interface provided by a service end-point (i.e. I publish my API defined in LLIDL)
* Validating the use of an end-point (i.e. I put a LLIDL validator in my web service code and it flags invalid use)

In both cases, the actual verbs used are critical pieces of the API - whether my end-point supports GET, PUT or POST is rather important for a client to know.

LLSD can (of course) be used without LLIDL; most uses of LLSD today do not use LLIDL (since it was invented later).

I'd go further and suggest that binding to specific serializations is unnecessary coupling too.  While defining the three serializations is of course very useful, they should not be defined in the same document as LLIDL/LLSD, but in a separate set of parallel documents to which more serialization specs could be added later.

IMHO, splitting this one into multiple documents would produce unnecessary clutter and overhead. The specification should not preclude other serialization formats, and subsequent RFCs could be published that add additional formats.

For example, Google's Protocol Buffers and Facebook's Thrift provide very popular and very efficient serializations which have raised much interest as alternatives to the legacy binary serialization of LLSD, as they are much more appropriate for use over TCP-based transports.  The LLIDL/.LLSD specification should not have to be revised when one or both of these new serializations are defined.  All it should require is to add a new document in parallel with a set of 3 documents that define the current 3 serializations.

There should be nothing in the wording of the type systems I-D that precludes new specs providing further serializations. If there is, please point it out and it should be corrected.


_______________________________________________
ogpx mailing list
ogpx@ietf.org<mailto:ogpx@ietf.org>
https://www.ietf.org/mailman/listinfo/ogpx