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

Brian Wolfe brianw at terrabox.com
Fri Feb 8 20:24:35 UTC 2008


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. :)






More information about the Opensim-dev mailing list