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
- [SWMP] Media Machines' initial design and code Jay C. Weber
- Re: [SWMP] Media Machines' initial design and code chris
- Re: [SWMP] Media Machines' initial design and code Jay C. Weber
- [SWMP] tcp and udp transports in one application … Jay C. Weber
- Re: [SWMP] Media Machines' initial design and code john_patterson
- Re: [SWMP] Media Machines' initial design and code Paul Aslin
- RE: [SWMP] Media Machines' initial design and code Tony Parisi
- RE: [SWMP] Media Machines' initial design and code Sven-Erik Tiberg
- Re: [SWMP] Media Machines' initial design and code Jay C. Weber
- Re: [SWMP] Media Machines' initial design and code Jay C. Weber
- Re: [SWMP] Media Machines' initial design and code john_patterson
- Re: [SWMP] Media Machines' initial design and code Jay C. Weber
- [SWMP] Introducing pub-sub john_patterson
- RE: [SWMP] Introducing pub-sub Tony Parisi
- RE: [SWMP] Introducing pub-sub john_patterson
- [SWMP] SWMP server source Sven-Erik Tiberg