Re: [SWMP] Media Machines' initial design and code

john_patterson@us.ibm.com Tue, 26 June 2007 17:20 UTC

Return-path: <swmp-bounces@ietf.org>
Received: from [127.0.0.1] (helo=stiedprmman1.va.neustar.com) by megatron.ietf.org with esmtp (Exim 4.43) id 1I3EiO-0006Tp-JD; Tue, 26 Jun 2007 13:20:32 -0400
Received: from [10.91.34.44] (helo=ietf-mx.ietf.org) by megatron.ietf.org with esmtp (Exim 4.43) id 1I3EVi-0002si-FK for swmp@ietf.org; Tue, 26 Jun 2007 13:07:26 -0400
Received: from e31.co.us.ibm.com ([32.97.110.149]) by ietf-mx.ietf.org with esmtp (Exim 4.43) id 1I3EV9-0001J5-OZ for swmp@ietf.org; Tue, 26 Jun 2007 13:07:26 -0400
Received: from d03relay02.boulder.ibm.com (d03relay02.boulder.ibm.com [9.17.195.227]) by e31.co.us.ibm.com (8.13.8/8.13.8) with ESMTP id l5QH6nS0030226 for <swmp@ietf.org>; Tue, 26 Jun 2007 13:06:49 -0400
Received: from d03av02.boulder.ibm.com (d03av02.boulder.ibm.com [9.17.195.168]) by d03relay02.boulder.ibm.com (8.13.8/8.13.8/NCO v8.3) with ESMTP id l5QH6jAF240888 for <swmp@ietf.org>; Tue, 26 Jun 2007 11:06:46 -0600
Received: from d03av02.boulder.ibm.com (loopback [127.0.0.1]) by d03av02.boulder.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id l5QH6iTh024921 for <swmp@ietf.org>; Tue, 26 Jun 2007 11:06:45 -0600
Received: from internet1.lotus.com (internet1.lotus.com [9.33.9.11]) by d03av02.boulder.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id l5QH6hEU024781 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=FAIL); Tue, 26 Jun 2007 11:06:44 -0600
Received: from wtfmail02.edc.lotus.com (wtfmail02.lotus.com [9.33.9.69]) by internet1.lotus.com (8.14.1/8.14.1) with ESMTP id l5QH6hDc015499; Tue, 26 Jun 2007 13:06:43 -0400 (EDT)
In-Reply-To: <46802ACC.1090109@mediamachines.com>
To: "Jay C. Weber" <jweber@mediamachines.com>
Subject: Re: [SWMP] Media Machines' initial design and code
MIME-Version: 1.0
X-Mailer: Lotus Notes Release 7.0 August 18, 2005
Message-ID: <OF9311E6B3.E102E931-ON85257306.005BE41A-85257306.005DFDB9@lotus.com>
From: john_patterson@us.ibm.com
Date: Tue, 26 Jun 2007 13:07:17 -0400
X-MIMETrack: Serialize by Router on WTFMAIL02/WTF/M/Lotus(Release 7.0.2FP2|April 16, 2007) at 06/26/2007 01:07:18 PM, Serialize complete at 06/26/2007 01:07:18 PM
X-Spam-Score: 0.7 (/)
X-Scan-Signature: 75ac735ede4d089f7192d230671d536e
X-Mailman-Approved-At: Tue, 26 Jun 2007 13:20:30 -0400
Cc: swmp@ietf.org
X-BeenThere: swmp@ietf.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Discussion of a Simple Wide-area Multiuser-3D Protocol <swmp.ietf.org>
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/swmp>, <mailto:swmp-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www1.ietf.org/pipermail/swmp>
List-Post: <mailto:swmp@ietf.org>
List-Help: <mailto:swmp-request@ietf.org?subject=help>
List-Subscribe: <https://www1.ietf.org/mailman/listinfo/swmp>, <mailto:swmp-request@ietf.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============0684308076=="
Errors-To: swmp-bounces@ietf.org

Jay:

Thanks for the response.

It looks like I got the situation mostly right.  Here are some residual 
reactions resulting from your reply:

1)  I am OK with Node-Field-Value as a generic representation of state. It 
is not much different from Object-Property-Value, except I assume the node 
naming implies a hierarchical relationship.  I do think we will need a 
richer representation for type.  To be fully general, I question whether 
enumerated types is the way to go (as opposed to Mime types.)  Doesn't 
enumeration require one to know all possible types prior to defining the 
values.  We can't do that and be flexible for unanticipated uses of swmp.

One approach might be to define a notion of a type scheme and then use an 
enumeration within that scheme.  Thus, some more string-like value would 
indicate that these are X3D types and then a second field could indicate 
the enumerated types for that scheme.

2)  So long as X3D is a special case of a more generic state sharing 
technique, I am happy.  It is probably not worth the trouble to debate 
whether X3D is more model or view.  (It is in the nature of virtual worlds 
that the model is view-like.)  I'm just pretty sure that we will encounter 
situations when the state of something other than an X3D node needs to 
conveyed.

3)  I am glad that you see the value of a set vs setNotify message.  I 
didn't think of it before, but we are probably ready to talk about why 
there isn't any subscritpion message in the swamp protocol (and whether 
there should be one in swmp.)

4)  It sounds like you are saying that latecomer support is in your code 
even though it is not obvious how to do it based on the paper.  Does that 
mean there is a get request in your implemented protocol?

jfp



"Jay C. Weber" <jweber@mediamachines.com> 
06/25/2007 04:51 PM

To
john_patterson@us.ibm.com
cc
swmp@ietf.org
Subject
Re: [SWMP] Media Machines' initial design and code






john_patterson@us.ibm.com wrote: 
I have now managed to look through the paper and I am ready to ask some 
questions. 
Hi John, sorry for the delay, I had a little holiday last week.
Second, I understand the swamp protocol (I use the name from the paper.) 
to be a peer-to-peer state replication protocol. By peer-to-peer, I do not 
mean that it is useless for a server-based approach, but that it only 
addresses communication between two network nodes and this communication 
is completely symmetric; there is no assumption about either node having a 
different role from the other.  By state replication, I mean that both 
nodes maintain a copy of the state (at least the relevant, e.g., 
dynamically changing, state) and the protocol is used to keep these copies 
synchronized. 
Yes, it is intentionally independent of the architecture, so it can be 
used with peer-peer, client-server, peer-server, and other architectural 
variations.
Third, I assume there is a desire for swmp to embrace the full breadth of 
virtual worlds implementations.  The paper (and subsequent postings) 
clearly recognize alternative network configurations (peer-to-peer, 
server-based, and hybrid) as an issue.  The paper is less clear on its 
position regarding varying approaches to where certain virtual worlds 
semantics, e.g., physics, collision detection, etc., will occur, i.e., 
centrally or peripherally.  I do not fault the paper for that, I just want 
to point out that this is a major differentiator among existing 
implementations and, if possible, we want to support many, if not all, 
alternatives. 
Yes; overall our work encompasses system architectures and virtual world 
semantics (and X3D provides some of this), but that paper focuses on the 
sub-problem of a protocol for communicating world-state changes.
Fourth, I assume that swamp supports packing multiple messages onto a 
single udp packet.  Without that I am having a little trouble 
understanding the obsession with keeping messages short (as evidenced by 
the setf method.).
Absolutely, minimizing individual message size allows the system to 
optimize packet sizes and/or message buffering for bandwidth utilization. 
The message enveloping in the paper doesn't include this, nor does the 
reference implementation, yet.  I think the implementation should do the 
buffering automatically, perhaps with a time-to-wait parameter so the 
application can tune the buffering to trade off bandwidth and latency.
Fifth, I assume that the purpose of swamp is for communicating state that 
is dynamic (ie, changing due to interactions with the virtual world) and 
not for the purpose of moving the static aspects of the 3D models.  It is 
not stated, but I am assuming that terrain, avatars, and in-world objects 
are initially obtained via prior download/install, http, or some other 
query-response protocol.  SWAMP is not for retrieving this static 
information; it is for maintaining the dynamic attributes of these models 
as they change due to being instantiated in a virtual world. 
Right.  When we use it with X3D, the static "base scene" is retrieved via 
HTTP and loaded, and then the SWMP session starts up to manage the dynamic 
aspects.
1)  Should the base model be more generic with X3D as a specific type? 

Many systems starting with Linda and moving through JavaSpaces and TSpaces 
have adopted the attitude that a state sharing system can use a very 
generic notion of how the state is organized.  These systems assume the 
state is in tuples; other systems assume something more akin to 
property-value pairs.  In any case, the base model is very generic and not 
tied to any particular purpose or specialized representation.  I wonder 
whether that would be a better approach for swmp. 
Agreed that state descriptions should be as generic as possible.  Our SWMP 
is already an Object-Property-Value triple, except that we use the X3D 
terms (which are also used elsewhere) of Node-Field-Value.

But, as you noted, where this gets X3D-specific is with the types of the 
values.  Though I do not know of another open-standard enumeration of the 
types one needs for communicating the values one needs for 3D scenes, so 
it may be that the X3D enumeration is the best choice, given that we need 
some standardized enumeration.  Note that X3D's types are based on other 
standards, like IEEE floats, and our SWMP also uses the standard IETF 
Network Byte Order.
2)  Is X3D the right model? 

I am not familiar enough with X3D to have a strong position on this.  I am 
mostly reacting to the idea that (to a first approximation) it is a scene 
graph representation.  That means it is tied to the display of the virtual 
world, which means it is more view than model in the model-view-controller 
(MVC) sense.  Presumably, our primary objective is to share the model of 
the world.
I think the X3D is more model than view, in the MVC sense.  And a 
scene-graph model is prevalent enough that it is a reasonable choice for 
the model.

Of course a key advantage that X3D has over other scene-graph models, is 
that it is a mature International Standard.

3)  Should notifications of changes be distinguished from instructions to 
make a change? 

Most of the time when I have constructed protocols of this sort, I have 
distinguished between messages that indicate a desire to change the state 
and messages that indicate that the state has been changed.  SWAMP does 
not seem to make this distinction.  I assume a set message is used both to 
reflect that a change should be made and that a change has been made.  My 
bias for differentiating these messages derives from working on 
client-server implementations, but I think it is useful even in a 
peer-to-peer situation.  Usually, one node has final say on whether a 
change of state will be permitted.
Very interesting issue, I left the change vs. notify semantics (and 
implemented it) as the semantics of the particular architecture but I can 
see some advantage to making this explicit through separate messages.
4)  How does swamp support latecomers? 

Presumably one of the values of having a server keep track of the state of 
the virtual world is so that late arriving clients can retrieve the 
current values and get caught up.  This is generally referred to as the 
latecomer problem.  I do not see how a latecomer requests the current 
state of the virtual world using swmp.
That (who updates latecomers) is also in the architecture, and implemented 
in the current code base as the server updating latecomer clients.


jay

_______________________________________________
SWMP mailing list
SWMP@ietf.org
https://www1.ietf.org/mailman/listinfo/swmp