Re: [ogpx] My take on Teleports and protocol resilience
Vaughn Deluca <vaughn.deluca@gmail.com> Sun, 25 October 2009 22:30 UTC
Return-Path: <vaughn.deluca@gmail.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 12D8028C1A9 for <ogpx@core3.amsl.com>;
Sun, 25 Oct 2009 15:30:43 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.47
X-Spam-Level:
X-Spam-Status: No, score=-1.47 tagged_above=-999 required=5 tests=[AWL=-0.862,
BAYES_20=-0.74, HTML_MESSAGE=0.001, 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 nFzhOKrRSf5q for
<ogpx@core3.amsl.com>; Sun, 25 Oct 2009 15:30:41 -0700 (PDT)
Received: from mail-fx0-f218.google.com (mail-fx0-f218.google.com
[209.85.220.218]) by core3.amsl.com (Postfix) with ESMTP id D81DE28C1A8 for
<ogpx@ietf.org>; Sun, 25 Oct 2009 15:30:40 -0700 (PDT)
Received: by fxm18 with SMTP id 18so11652824fxm.37 for <ogpx@ietf.org>;
Sun, 25 Oct 2009 15:30:48 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma;
h=domainkey-signature:mime-version:received:in-reply-to:references
:date:message-id:subject:from:to:cc:content-type;
bh=aiGIx3SBG3p8nSmSJpSeFQt8b6pWI3XtFwIeDGDU+CE=;
b=Gth7/07w7FappXCE0OJzaK/B57cUIiNLFU9YbukjYJNQCr1/p5u6Pi6UJAZQCl4C9u
7veG5yBwJK5UxKlq+S7CzuT2fSYVEWYR7qNqYtemiKPUMwN3oPtNUCslEjGR7ZMaSiK7
S2kilneY4BbT0dsQUndzIfycmU1rRBpoRV1k4=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma;
h=mime-version:in-reply-to:references:date:message-id:subject:from:to
:cc:content-type;
b=IKcmYKdAK+nTfVP0bIOYjV1rXsjyAvOCd56agR57Vk5Jpx9d1iESXOlhvKiUUdO4N8
s1gaCOlTitC4C537PQ/QmyHZENsyqEddv246zs1BIdL3Qu2oD4PtVgRzkbQOIwbSEeH/
Yx46k4pZQJsE1r/VZpUP7B/0DFZMmfmp/OFJE=
MIME-Version: 1.0
Received: by 10.204.23.203 with SMTP id s11mr5175521bkb.17.1256509848599;
Sun, 25 Oct 2009 15:30:48 -0700 (PDT)
In-Reply-To: <20091025121547.GB7775@alinoe.com>
References: <20091025121547.GB7775@alinoe.com>
Date: Sun, 25 Oct 2009 23:30:48 +0100
Message-ID: <9b8a8de40910251530u273830a5k47bdd8927b7efc76@mail.gmail.com>
From: Vaughn Deluca <vaughn.deluca@gmail.com>
To: Carlo Wood <carlo@alinoe.com>
Content-Type: multipart/alternative; boundary=000325559f1a2ebd540476c9ffae
Cc: ogpx@ietf.org
Subject: Re: [ogpx] My take on Teleports and protocol resilience
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: Sun, 25 Oct 2009 22:30:43 -0000
> [AS:animation state] --- message stream --> [simulator:animation state copy] What you are suggesting here is keeping a copy of the avatar state. We would be increasing bandwith and storage space to gain flexibility. I do not think storage space is a real problem. I am not sure about bandwidth. Is there anybody who can put some real numbers on this? How much extra work would the region have to do? Is it still acceptable if the Agent service is in Australia and the region in Europe? -Vaughn On Sun, Oct 25, 2009 at 1:15 PM, Carlo Wood <carlo@alinoe.com> wrote: > Lets start with some brainstorming... > > Things that might be relevant, in no particular order. > > * State of avatar > * State of attachments > * Location of avatar > * Time of unresponsiveness of avatar (position) towards viewer > * Time of unresponsiveness of attachments (attaching/detaching/scripts) > * Perception of the viewer > * Perception of other viewers > * Region boundary crossing > * Teleport over larger distance > * User configurable parameters > * did I miss something important? > > > Real message starts here: > > Something that protocol (or implementation)- wise leads to problems > are copies of the same data on different hosts; this always leads > to desynchronization of this data with heaps of untrackable problems > (bugs). > > The ONLY way to keep a copy of some data reliably synchrononized is by > having a stream of state changes being sent from one host to another, > where the messages that contain that state changes always keep > the same order and the stream is never terminated/lost (in which case > a full-resynchronization would be necessary). Note that this means > that the source of the state changes has to be a single point of > origin, which automatically means that we can identify the REAL > (original) copy of the data. Thus: > > [original] ---> stream of state changes --> [copy] > > Lets call this an "unidirectional state" by lack of a better word. > > [PS I'm ignoring actual implementation details here. I'm NOT > saying that currently anyone is using a TCP-stream of > state changes, so don't quote JUST this part with the comment > that this is not how it current works, Infinity :p > Instead, this is an mathematical approach, the abstract > equivalent of any possible deployment case]. > > Basically, we want to avoid copies of the same data. > > > The simulator contains a lot of state information that cannot > be moved away from the simulator though: because the state is > needed to calculate the interactions between all objects and > avatars in the region, which would become way too slow if, > for example, several agent domain services would have to be > queried all the time. I can imagine that this also holds for > the attachments on an avatar. > > This means that if an avatar moves from one region to another, > all this state information has to be transfered too. > > Thus, the origin sends state information to the new region. > If this fails, then we want the user to resume at it's old > location: we need to keep a copy of the state until we know > the teleport was successful. In other words, we will have > a copy of data at two different hosts, temporarily. > > One way to make sure that this is not a problem is by > freezing all state; then copy it, and only once the copy > is successful, destroy the old data and resume the simulation > in the other region. > > The problem we try to tackle now is the case were the old > region is not responsive... > > > In this case we have to notice that the AD can ALSO detect > that at least the new region is able to host the avatar: > the teleport can *partly* succeed. This can be detected > independent of copying all the state information. > > Secondly, we have to realize that the 'location' of the > avatar is (state) data that does NOT have to be copied > (we're changing it anyway) and therefore is not part of > said state, and does not suffer from the copy-problem. > > The same could be said about animations (which is currently > broken in Second Life: you must stop all animations > before teleporting or a desync happens): we could state > that after a teleport no animations are active, and leave > it to the viewer to re-initiate and required animations. > However, animations can be made unidirectional (meaning > that if anyone but the agent service wants to change the > animation, it has to send a request message to the AD, > which then grants it, so that the actual state change always > originates from the agent service (AS)). > > As a result, we can think of the animation state as: > > > [AS:animation state] --- message stream --> [simulator:animation state > copy] > > which means that we can teleport, keeping the correct > animation(s) without bothering with the source region. > > > The only clear case where this kind of 'trick' doesn't work > (I think it's not a trick, but the best way to implement this) > is for script states: those change way too frequent to host > them on the AS. > > > Conclusion > > Thus, in the case of an unresponsive source region, > we CAN - without risks of desynchronization - immediately > transfer the avatar (location) and animations, and > any other INFREQUENTLY CHANGING, UNIDIRECTIONAL DATA > that can be stored on the AS (and buffered on the > simulator), like clothing UUIDs, and attachments. > > However, the scripts in the attachments will not run > until their state is transfered from the old region. > > Imho, this is hardly a problem: after user configurable > timeout we leave it to the user what he wants to do: > logout or reset the scripts :p... Ok, we just reset > the scripts after some time, where the timeout is > determined by the AD with possible input from the user. > > -- > Carlo Wood <carlo@alinoe.com> > _______________________________________________ > ogpx mailing list > ogpx@ietf.org > https://www.ietf.org/mailman/listinfo/ogpx >
- [ogpx] My take on Teleports and protocol resilien… Carlo Wood
- Re: [ogpx] My take on Teleports and protocol resi… Vaughn Deluca
- Re: [ogpx] My take on Teleports and protocol resi… Carlo Wood
- Re: [ogpx] My take on Teleports and protocol resi… Vaughn Deluca
- Re: [ogpx] My take on Teleports and protocol resi… Carlo Wood
- Re: [ogpx] My take on Teleports and protocol resi… Morgaine
- Re: [ogpx] My take on Teleports and protocol resi… Vaughn Deluca