[Opensim-dev] GridServer RPC security and region alive heartbeat

Charles Krinke cfk at pacbell.net
Fri Feb 8 21:16:45 UTC 2008


Dear Brian:

First, I applaud your efforts as you are thinking it through, and this is a very good thing.

As one of the guys that opened this Pandora's Box, let me express why I opened it in the first place.

On a public grid, such as OSGrid and others, there are regions that will come and go. Basically, in one of our usage models, we encourage a heterogeneous network where the individual regions are controlled by others. 

One problem that surfaces are regions that attach to a grid and then go away. Having a simple, low-bandwidth way for the grid servers to know if a region is online or not would be useful. I was originally thinking once a day,but certainly not every few seconds.

When a region is determined to be offline, we can either mark it in a table somewhere, or perhaps delete it from the regions table (which is a little harsher). In any case, the current problem is regions that are offline tending to cause adjacent regions to throw exceptions because these adjacent regions can not do any remoting calls to the offline region.

Please move forward with your thoughts and keep us posted.

Charles


----- Original Message ----
From: Brian Wolfe <brianw at terrabox.com>
To: opensim-dev at lists.berlios.de
Sent: Friday, February 8, 2008 12:24:35 PM
Subject: [Opensim-dev] GridServer RPC security and region alive heartbeat

After reading through the GridServer and Region.Communications.OGS1 I
noticed a lack of region alive heartbeat fucntionality as well as a lack
of security check on RPC requests to the GridServer. 

There is a desire by several parties (including myself) to have up to
date information on which regions are still online in a simple,
unstressfull to GridServer, netowrk, and regions method.

so two questions...

Is there a need for checking keys on RPC calls after RegisterRegion
sicne RegisterRegion has the option of authenticating via the keys?

What is the best way for GridServer to keep track of what regions are
still alive for a new RPC call requesting RegionOnlineStatus data?


My thought is yes, there needs to be some kind of minimal check done on
the current two RPC calls XmlRpcSimulatorDataRequestMethod and
XmlRpcMapBlockMethod since they appear to ony be used by simulators.


On the topic of the heartbeat I saw that there was a disabled chunk of
code for having GridServer do a periodic heartbeat cal TO the regions. I
think that this is backwards and will nto work nearly as well as having
the regions report itno the gridserver.

My proposal is to add LastSeen value to RegionData and implement a new
XMLRPC handler called RegionHeartbeat. We can leverage the security
check to keep the number of RegionHeartbeat calls down to a minimal by
having it update the LastSeen stamp at the same time that it checks the
keys (if the keys are NOT NULL). If the time interval between now and
LastSeen in a regiondata is greater than a configurable time limit,
thent he sim is considered offline and is reported as such in the
getRegionsStatus RPC call. Optionally we can also add this field to the
regions table to make it easy for external applications to gather online
status data without having to pester the GridServer.

On the Region side, when a packet is sent out, it sets it's
HeartbeatSent = true. I would also add a timer that every X
(configurable via OpenSim.ini) seconds the timer would check
HeartbeatSent, and if false send a heartbeat RPC call, then clear it to
False.


Comments, suggestions, etc are as always desired. :)



_______________________________________________
Opensim-dev mailing list
Opensim-dev at lists.berlios.de
https://lists.berlios.de/mailman/listinfo/opensim-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://opensimulator.org/pipermail/opensim-dev/attachments/20080208/048a28ad/attachment-0001.html>


More information about the Opensim-dev mailing list