[Opensim-dev] explanation of services

Justin Clark-Casey jjustincc at googlemail.com
Tue Jun 30 22:55:02 UTC 2009


Paul, a couple of other additional points below.

Paul Fishwick wrote:
> Thanks - I will take all of this into account!
> -paul
> 
> 
> Cristina Videira Lopes wrote:
>> For "grid mode" things are not as you describe. I can tell you how 
>> things are done currently, but this may/can change very easily, and in 
>> fact things are quite different if C is Grider.
>>
>> For the normal LL client, and as of now: C never talks to G/A/I 
>> directly; it talks to U and to Rs only. Upon login, C first contacts U, 
>> which in turn contacts G to know the info about the intended login 
>> Region, and then it informs that region R about the agent.
>>
>> On region crossings/TPs G is also not involved that much; it only serves 
>> for the departing region to find the info about the destination region. 
>> Once it gets that info, crosssings/TPs are done region-to-region. It's 
>> also the regions that interact with C during this process. The only 
>> difference in HG is that G is not used for region lookup at all; instead 
>> the info about the destination region is local to the departing region. 
>> But TPs are almost identical, with one extra first step.
>>
>> You can find some sequence diagrams here:
>> http://opensimulator.org/wiki/Teleports
>>
>> Paul Fishwick wrote:
>>   
>>> I am writing a tutorial for a conference, where I'd like to introduce
>>> them to OpenSim, and I wanted in that tutorial to include some information
>>> on how services connect. If there is a web page that I have overlooked,
>>> please let me know where it is.
>>>
>>> Here are some assumptions, which may not be right--and I'd like to be
>>> as accurate as possible. Here are some letters I'll use for servers:
>>>
>>> C - Client
>>> G - Grid
>>> U - User
>>> A - Asset
>>> I - Inventory
>>> M - Messaging
>>> Rx - Region # x
>>>
>>> .............................
>>>
>>> 1. For StandAlone mode, C connects with one server that contains all of 
>>> the other services
>>>     inside of it, along with N regions. So, this behavior seems more 
>>> straightforward.
>>>     All "other services" are (U,A,I,M, and Rx).   I am assuming that 
>>> most LSL commands
>>>     are executed server side, except for some like Rotation, Audio and 
>>> Video Streaming...
>>>     Is there a list of what is server vs. client side?

I don't think there is such a list.  In this particular example though, rotation is done server side - not sure about 
what section of the mechanism is server side for the other two.

>>>
>>> 2. For Grid mode, here are some guesses - please correct or edit..
>>>
>>>     C connects to G and then G serves as a gateway, routing messages to 
>>> the other
>>>     services. For example, if a user logs in, C connects to G which 
>>> connects to U,
>>>     which contains information on all agents and their avatars, 
>>> positions, etc.
>>>
>>>     A and I require the bulk of the database storage since Regions (R) 
>>> have a UUID
>>>    (pointer) reference and do not contain the bulk of the data (i.e, 
>>> textures, images,
>>>    prim attributes).

Certainly, it's true to say that A contains the bulk of the data.  I still contains some but like the regions they have 
UUID pointers to assets.

Also, R does contain prim attributes directly.

>>>
>>>     If a region crossing is made from, say R1 to R2, R1 sends a message 
>>> to G which
>>>     forwards it to R2.
>>>
>>> 3. For HyperGrid mode, there is no "G" and so it is more of a peer to 
>>> peer relationship
>>>     of StandAlones.

Well, a peer to peer relationship between Grids _and_ StandAlones (or Standalone Grids as Diva likes to call them :)

-- 
justincc
Justin Clark-Casey
http://justincc.wordpress.com



More information about the Opensim-dev mailing list