[Opensim-dev] Grid Architecture, Round 3 - FIGHT!
Adam Frisby
adam at gwala.net
Tue Nov 13 12:56:31 UTC 2007
Alright,
Sensible grid architecture time. After the first two rounds of
discussion on this, I think we can probably claim a few core decisions
have been made.
1. HTTP + XML/REST seems to be the defacto standard for non-realtime
communications.
2. We use sensible standards for authentication / security - such as
HTTP Authentication and TLS/SSL for security.
3. We avoid abusing standards (ie EventQueueGet again)
4. We dont break it up into groups or application servers, we simply
enable/disable individual URIs.
So, some concrete implementation ideas.
Login:
simulator has URI:
/users/recieve/<uuid>
user server has URIs:
/users/<uuid>
/users/login (XMLRPC for the SL Client)
1. User engages XMLRPC login service on
/users/login with their client credentials
2. Login service verifies user credentials
3. If successful, posts a message to their destination
and a URI for the user. Next step happens in parallel.
4a. Remote simulator accesses that URI to download
information about that client (other URIs,
eg inventory, etc). May POST to a URL
styled like
/users/<uuid>/current_sim/
with information about the region they are in[?]
4b. If the response from step #3 wasnt a rejection,
reply back to the login request with the IP of
the target region. (Maybe rely on it being sent
back in step 3?)
Grid Connection:
grid server has URI:
/regions/<uuid>/
/regions/new/
When a simulator connects to the grid, it issues a HTTP POST
against /regions/<uuid>/ or /regions/new/ with XML information
like the following:
<request>
<detail>
<x>1000</x>
<y>1000</y>
<user>[URI]</user>
</detail>
...etc...
</request>
What should come back will be a identically formatted reply:
<reply>
<status>CONFIRMED</status>
<detail>
<x>1005</x>
<y>1004</y>
<user>[URI]</user>
</detail>
<uris>
<map>[URI]</map>
<status>[URI]</status>
<uris>
...etc...
</reply>
The URI's returned are addresses to services affiliated with
this domain. Eg, the STATUS uri is a address for POSTing and
GETting status information.
Handling authentication:
A combination of CAPS for temporary authentication (eg a list of
temporary one-shot URI's that expire and reissue after use), and HTTP
authentication for permenent things (like logging into a
grid) seems like a fairly sane plan.
Thoughts?
Regards,
Adam
More information about the Opensim-dev
mailing list