Re: [ogpx] HTTP(S) and XMPP as transports of OGP application layer messages

David W Levine <dwl@us.ibm.com> Tue, 18 August 2009 14:06 UTC

Return-Path: <dwl@us.ibm.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 717D13A6A9E; Tue, 18 Aug 2009 07:06:30 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.375
X-Spam-Level:
X-Spam-Status: No, score=-5.375 tagged_above=-999 required=5 tests=[AWL=1.092, BAYES_00=-2.599, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-4, SARE_UNSUB18=0.131]
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 I8i7kx7jOUxO; Tue, 18 Aug 2009 07:06:28 -0700 (PDT)
Received: from e2.ny.us.ibm.com (e2.ny.us.ibm.com [32.97.182.142]) by core3.amsl.com (Postfix) with ESMTP id 817D13A689D; Tue, 18 Aug 2009 07:06:27 -0700 (PDT)
Received: from d01relay04.pok.ibm.com (d01relay04.pok.ibm.com [9.56.227.236]) by e2.ny.us.ibm.com (8.14.3/8.13.1) with ESMTP id n7IE0VWf002225; Tue, 18 Aug 2009 10:00:31 -0400
Received: from d01av02.pok.ibm.com (d01av02.pok.ibm.com [9.56.224.216]) by d01relay04.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id n7IE6O96241592; Tue, 18 Aug 2009 10:06:29 -0400
Received: from d01av02.pok.ibm.com (loopback [127.0.0.1]) by d01av02.pok.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id n7IE3Utl015425; Tue, 18 Aug 2009 10:03:30 -0400
Received: from d01ml605.pok.ibm.com (d01ml605.pok.ibm.com [9.56.227.91]) by d01av02.pok.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id n7IE2imF009913; Tue, 18 Aug 2009 10:02:44 -0400
In-Reply-To: <19082.38320.554039.749475@crucible.client.research.att.com>
References: <3a880e2c0908121753s34bacba7k59fae708752d3d6a@mail.gmail.com> <e0b04bba0908130954p16da6777n279a462b9cf8a381@mail.gmail.com> <b8ef0a220908170944x200b0f6eh67bde4e7dd481a7e@mail.gmail.com> <19082.38320.554039.749475@crucible.client.research.att.com>
To: tk@research.att.com
MIME-Version: 1.0
X-KeepSent: AD2F5035:074062AB-85257616:004D296F; type=4; name=$KeepSent
X-Mailer: Lotus Notes Release 8.0.2 HF623 January 16, 2009
Message-ID: <OFAD2F5035.074062AB-ON85257616.004D296F-85257616.004D693D@us.ibm.com>
From: David W Levine <dwl@us.ibm.com>
Date: Tue, 18 Aug 2009 10:05:31 -0400
X-MIMETrack: Serialize by Router on D01ML605/01/M/IBM(Build V851_07072009|July 07, 2009) at 08/18/2009 10:05:37, Serialize complete at 08/18/2009 10:05:37
Content-Type: multipart/alternative; boundary="=_alternative 004D693D85257616_="
Cc: Meadhbh Siobhan <meadhbh.siobhan@gmail.com>, ogpx@ietf.org, ogpx-bounces@ietf.org
Subject: Re: [ogpx] HTTP(S) and XMPP as transports of OGP application layer messages
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: Tue, 18 Aug 2009 14:06:30 -0000

That matches my thinking. We want to be saying  "Here is a formatted 
request./response sequence" "Here is how you move it on http(s)" and 
expect that, down the road someone may say "Here is how you move it on 
xmpp" We need a parallel 
construct to map "update stream" like messages. We don't want to tie 
permanently to a single transport,  but, we need to show it on specific 
ones, and http(s) gets first dibs on that. 

- David
~ Zha


ogpx-bounces@ietf.org wrote on 08/18/2009 07:51:12 AM:

> thomas kirk <tk@research.att.com> 
> Sent by: ogpx-bounces@ietf.org
> 
> 08/18/2009 07:51 AM
> 
> Please respond to
> tk@research.att.com
> 
> To
> 
> Meadhbh Siobhan <meadhbh.siobhan@gmail.com>
> 
> cc
> 
> ogpx@ietf.org
> 
> Subject
> 
> Re: [ogpx] HTTP(S) and XMPP as transports of OGP application layer 
messages
> 
> in favor of leaving open the possibility of alternative transports, so
> even if HTTP(S) is the preferred mapping, it would be worthwhile to 
> define a core OGP protocol that's independent of a concrete transport, 
> and specify the HTTP(S) mapping separately, in the manner that 
> BEEP (for example) makes this distinction (rfc3080, 3081).
> 
> The core protocol can express requirements and assumptions about 
> the transport abstractly; separating its specification leaves 
> open the possibility of future mappings, and makes explicit 
> (and probably simplifies) the ways that OGP depends on underlying 
> service. Given the historical bias, seems reasonable to propose 
> at least an HTTP mapping, but without precluding others.
> 
> 
>  > On Thu, Aug 13, 2009 at 9:54 AM, 
> Morgaine<morgaine.dinova@googlemail.com> wrote:
>  > > On Thu, Aug 13, 2009 at 1:53 AM, Infinity Linden 
<infinity@lindenlab.com>
>  > > wrote:
>  > >>
>  > >> Original work with OGP used HTTP(S) to carry application messages.
>  > >> There's been enough talk about alternate transports that it feels 
very
>  > >> bad to dismiss them without discussion. However, I'm wondering if
>  > >> there's anyone out there planning on implementing OGP over XMPP?
>  > >
>  > >
>  > > Asking the question in this form creates a bit of a false 
dichotomy.
>  > > HTTP(S) and XMPP cover different areas of the solution space, so 
they are
>  > > not simple alternatives.  It's better to first disentangle the 
> requirements,
>  > > and then see what is applicable to each part.
>  > 
>  > mmm.. i hate to say it morgaine, but i disagree. both HTTP(S) and 
XMPP
>  > can be used to carry application state changes.
>  > 
>  > but i do agree we need to be clear about the messaging requirements.
>  > 
>  > 
>  > >
>  > > OGP networking requirements (as far as we know them) comprise 
> at least three
>  > > different types of functionality, although the 3rd is a matter of 
some
>  > > debate:
>  > >
>  > > HTTP(S) client-server request/response calls to OGP services.
>  > > Server-client streaming object updates, over an unspecified 
reliable
>  > > transport.
>  > > HTTP(S) server-client request/response calls to client-side 
services.
>  > 
>  > this list presupposes HTTP(S). i would list them as being a 
> little more general:
>  > 
>  > 1. the client makes a non-real-time request of the server.
>  > 2. the server makes a non-real-time request of another server.
>  > 3. the client makes a real-time request of the server.
>  > 4. the server sends a real-time update to the client.
>  > 5. the server makes a non-real-time request of the client.
>  > 
>  > * all messages SHOULD have the ability to carry meta-data important 
to
>  > the carrying protocol.
>  > * all messages SHOULD have clear semantics for describing 
> endpoints of messages
>  > 
>  > an example of 1 would be fetching a texture from an asset server.
>  > there is a proud history of using HTTP to fetch images, which is why 
i
>  > think there's consensus behind using it for this purpose.
>  > 
>  > an example of 2 would be an agent host making a request of a
>  > simulator. like the first example, this is a request-response 
pattern.
>  > 
>  > an example of 3 would be the user presses the 'up' arrow on the
>  > keyboard and expects a change in the avatar's shared state (like it
>  > moves forward.) i would call this a "weak" request response, meaning,
>  > it would be nice if after you pressed the up arrow and the client 
sent
>  > the "hey, my user just pressed the up arrow" message to the server, 
if
>  > you would get a response. but... if you wind up not getting a 
response
>  > for each request, it's not the end of the world. maybe responses 
could
>  > be acknowledged in a batch response, or the response could be
>  > eliminated all together if the semantics of the message do not 
REQUIRE
>  > reliable delivery.
>  > 
>  > an example of 4 would be the simulator sending object update messages
>  > to the client. these messages MAY have real-time semantics, meaning 
if
>  > a message is late, it's useless (think VoIP.) so imagine a world,
>  > where the simulator sends each client messages like "object <foo> is
>  > now at location <bar>" or ".. is now rotated <thusly>." if we applied
>  > real-time semantics to these messages, the client would likely be
>  > constructed to update the position (or other physical 
characteristics)
>  > of an object at a low frame rate, and the experience would be that
>  > those objects would potentially look jerky. if we didn't apply
>  > real-time semantics, the client could have some messages delayed, 
then
>  > applied rapidly; like maybe five seconds worth of avatar movement is
>  > compressed into two seconds. these are two extremes, and there are
>  > probably a great number of tricks the client could pull to make the
>  > experience look a little nicer.
>  > 
>  > i think this is where RTP and XMPP would shine. RTP if we want
>  > real-time semantics, XMPP if we don't. ultimately, however, given the
>  > event queue and long poll techniques, non-real-time messaging from 
the
>  > server to the client COULD be implemented with HTTP.
>  > 
>  > an example of 5 is a server needs to access a sensitive resource
>  > maintained by the client. (reference previous discussions about 
client
>  > side capabilities.) this is another place where XMPP would likely be
>  > more efficient than HTTP(S), but again, we have an event queue, long
>  > poll and someday might have a standard for bi-directional HTTP.
>  > 
>  > ultimately, i think the thinking here is that it's easier to think of
>  > OGP as an application protocol that CAN go over multiple protocols,
>  > then define how it goes over each protocol, then allow the deployer 
to
>  > choose which protocol it wants to layer OGP messages over modulo some
>  > fixed number of well defined interoperability profiles.
>  > 
>  > i think that REQUIRING some messages to go over HTTP (and only over
>  > HTTP) while REQUIRING other messages to go over RTP (and only over
>  > RTP) and yet a third class of messages to go over XMPP (and only over
>  > XMPP) is a recipe for disaster in a protocol. such a beast would be
>  > extremely difficult to implement as it would require implementers and
>  > deployers to integrate multiple transports. in practice, this might
>  > mean integrating apache with ejabberd and with a custom RTP
>  > application. it's not impossible to do, but it would DEFINITELY be
>  > more difficult.
>  > 
>  > >
>  > > Type 1 is wonderfully served by HTTP(S), while XMPP leaves a lot to 
be
>  > > desired in this role, for which it was not designed.
>  > >
>  > > Type 2 is not served naturally by HTTP(S) at all, but because this
>  > > requirement is so common in many types of applications, the 
> "web everywhere"
>  > > fraternity has tried to shoehorn this type into HTTP as well, using 
a
>  > > variety of proposed strategies ranging from COMET's Long Poll 
> and Streamed
>  > > Response through to the latest WebSockets, with debateable 
success.  XMPP
>  > > was designed to serve this type of networking functionality, 
although its
>  > > targetted application area is somewhat different to that of 
> VWs.  Whether it
>  > > would be able to carry object updates with sufficient efficiency 
would
>  > > require analysis and testing.
>  > >
>  > > Type 3 is poorly specified at present, and it may turn out to be a
>  > > non-existent requirement stemming only from a misguided attempt to 
poll
>  > > clients instead of receiving streamed asynchronous updates 
fromthem.  On
>  > > the other hand it may turn out to be an essential networking 
facility for
>  > > providing symmetry between clients and servers, for instance 
> when decoupled
>  > > OGP services run on the client --- this will need much more 
discussion.
>  > > Assuming for now that there is indeed such a requirement, HTTP 
> may serve it
>  > > adequately when run over Reverse HTTP, whereas XMPP would leave
> a lot to be
>  > > desired in this role for which it was not designed.
>  > >
>  > > The above is confusing and fragmented enough, but it gets worse.
>  > >
>  > > There is yet another networking type common to VWs which has 
> not even been
>  > > mentioned in our two years of AWG and the 6 months of MMOX 
deliberations,
>  > > yet is an essential type with its own properties:   streaming of 
input
>  > > events and objects from client to server.  This is (roughly) 
> lumped in with
>  > > Type 2 in current SL and Opensim  implementations, and it appears 
to be
>  > > destined to be lumped in with Type 1 in OGP, where it fits poorly 
for
>  > > reasons of latency on realtime inputs.  Neither HTTP(S) nor 
> XMPP seem ideal
>  > > for this, although XMPP has a much closer semantic fit owing toits 
Jabber
>  > > heritage.
>  > >
>  > > So where does this leave us?  Well the first thing that should 
> be clear is
>  > > that we are not facing a simple question of  "Should we do it 
> all over HTTP
>  > > alone, or also allow for implementation over XMPP?".  The design
>  > > requirements aren't like that at all.  In particular, HTTP(S) 
> just doesn't
>  > > fit the Type 2 semantic requirement, and XMPP may not either.
>  > >
>  > > Given that our current task is only to define the charter and not 
to
>  > > constrain the solutions, I think that any form of wording that 
> suggests that
>  > > HTTP(S) alone is sufficient should be avoided, because it is 
> not sufficient
>  > > for Type 2 based on our existing experience in virtual worlds. To 
put it
>  > > bluntly, it's too slow, and the polling model has inadequate 
latency
>  > > properties.
>  > >
>  > > I suggest therefore that this question of "HTTP(S) and/or XMPP" not 
be
>  > > addressed in the charter, because the requirements have not yet 
been
>  > > examined in sufficient detail to be able to make that call.  
> Indeed, Type 2
>  > > may require a different protocol altogether.
>  > 
>  > so i respectfully disagree with your assertion that identifying a
>  > standard transport for messages is not useful.
>  > 
>  > >
>  > >
>  > > Morgaine.
>  > >
>  > >
>  > >
>  > >
>  > >
>  > >
>  > >
>  > > On Thu, Aug 13, 2009 at 1:53 AM, Infinity Linden 
<infinity@lindenlab.com>
>  > > wrote:
>  > >>
>  > >> Hey people!
>  > >>
>  > >> So... looping back around to some of the comments from the f2f BoF
>  > >> meeting...
>  > >>
>  > >> Original work with OGP used HTTP(S) to carry application messages.
>  > >> There's been enough talk about alternate transports that it feels 
very
>  > >> bad to dismiss them without discussion. However, I'm wondering if
>  > >> there's anyone out there planning on implementing OGP over XMPP?
>  > >>
>  > >> The reason I ask is that a number of us who worked on the early
>  > >> pre-IETF interop trials are heavily invested in HTTP(S). Though i
>  > >> can't speak for everyone involved, i would anticipate resistance 
to
>  > >> mandating a new transport. HTTP(S) has it's weaknesses as a 
transport,
>  > >> to be sure, but it's a well deployed and well understood protocol 
with
>  > >> a mature tool chain. This makes it attractive to many people.
>  > >>
>  > >> On the other hand, if someone else thinks they want to produce an 
OGP
>  > >> implementation over XMPP, that seems really cool. But if no one's
>  > >> going to implement it, an argument could be made that putting the
>  > >> effort into specifying it would be a waste of time. On yet another
>  > >> hand, going through the exercise of figuring out what aspects of 
HTTP
>  > >> are required to transport OGP messages might reveal subtle
>  > >> dependencies between components. Back on the other hand again, can 
we
>  > >> do this without re-writing BCP56?
>  > >>
>  > >> So I was thinking of this as a proposal:
>  > >>
>  > >> If there is strong interest in implementing OGP over XMPP, let's
>  > >> mention that it's an "officially supported" transport in the 
charter.
>  > >> (for some definition of the words "officially supported.")
>  > >>
>  > >> If there's not strong interest in implementing OGP over XMPP, 
let's
>  > >> not put it in the charter.
>  > >>
>  > >> In either case, I think there's sufficient justification for
>  > >> describing the set of requirements OGP makes on it's transport. 
For
>  > >> instance, does it REQUIRE request/response semantics? (i.e. - if 
i'm
>  > >> writing a compliant server layering OGP over XMPP, and i receive 
an
>  > >> OGP "request" in an XML stanza, am i REQUIRED to send a response?)
>  > >> Or... does it REQUIRE specific content negotiation semantics? 
(i.e. -
>  > >> do we need to explicitly describe or reference a technique for
>  > >> identifying the content type of a response in XMPP?) Or... does 
the
>  > >> protocol explicitly depend on caching behavior of some HTTP 
proxies?
>  > >> if so, how? etc. etc.
>  > >>
>  > >> -sincerely
>  > >> -meadhbh
>  > >> _______________________________________________
>  > >> ogpx mailing list
>  > >> ogpx@ietf.org
>  > >> https://www.ietf.org/mailman/listinfo/ogpx
>  > >
>  > >
>  > > _______________________________________________
>  > > ogpx mailing list
>  > > ogpx@ietf.org
>  > > https://www.ietf.org/mailman/listinfo/ogpx
>  > >
>  > >
>  > _______________________________________________
>  > ogpx mailing list
>  > ogpx@ietf.org
>  > https://www.ietf.org/mailman/listinfo/ogpx
> _______________________________________________
> ogpx mailing list
> ogpx@ietf.org
> https://www.ietf.org/mailman/listinfo/ogpx