<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:arial, helvetica, sans-serif;font-size:12pt"><DIV style="FONT-SIZE: 12pt; FONT-FAMILY: arial, helvetica, sans-serif">Dear Brian:</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: arial, helvetica, sans-serif"> </DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: arial, helvetica, sans-serif">First, I applaud your efforts as you are thinking it through, and this is a very good thing.</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: arial, helvetica, sans-serif"> </DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: arial, helvetica, sans-serif">As one of the guys that opened this Pandora's Box, let me express why I opened it in the first place.</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: arial, helvetica, sans-serif"> </DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: arial, helvetica, sans-serif">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. </DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: arial, helvetica, sans-serif"> </DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: arial, helvetica, sans-serif">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.</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: arial, helvetica, sans-serif"> </DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: arial, helvetica, sans-serif">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.</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: arial, helvetica, sans-serif"> </DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: arial, helvetica, sans-serif">Please move forward with your thoughts and keep us posted.</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: arial, helvetica, sans-serif"> </DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: arial, helvetica, sans-serif">Charles<BR><BR></DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">----- Original Message ----<BR>From: Brian Wolfe <brianw@terrabox.com><BR>To: opensim-dev@lists.berlios.de<BR>Sent: Friday, February 8, 2008 12:24:35 PM<BR>Subject: [Opensim-dev] GridServer RPC security and region alive heartbeat<BR><BR>After reading through the GridServer and Region.Communications.OGS1 I<BR>noticed a lack of region alive heartbeat fucntionality as well as a lack<BR>of security check on RPC requests to the GridServer. <BR><BR>There is a desire by several parties (including myself) to have up to<BR>date information on which regions are still online in a simple,<BR>unstressfull to GridServer, netowrk, and regions method.<BR><BR>so two questions...<BR><BR>Is there a need for checking keys on RPC calls after RegisterRegion<BR>sicne RegisterRegion has the option of authenticating via the keys?<BR><BR>What is the best way for GridServer to keep track of
 what regions are<BR>still alive for a new RPC call requesting RegionOnlineStatus data?<BR><BR><BR>My thought is yes, there needs to be some kind of minimal check done on<BR>the current two RPC calls XmlRpcSimulatorDataRequestMethod and<BR>XmlRpcMapBlockMethod since they appear to ony be used by simulators.<BR><BR><BR>On the topic of the heartbeat I saw that there was a disabled chunk of<BR>code for having GridServer do a periodic heartbeat cal TO the regions. I<BR>think that this is backwards and will nto work nearly as well as having<BR>the regions report itno the gridserver.<BR><BR>My proposal is to add LastSeen value to RegionData and implement a new<BR>XMLRPC handler called RegionHeartbeat. We can leverage the security<BR>check to keep the number of RegionHeartbeat calls down to a minimal by<BR>having it update the LastSeen stamp at the same time that it checks the<BR>keys (if the keys are NOT NULL). If the time interval between now and<BR>LastSeen
 in a regiondata is greater than a configurable time limit,<BR>thent he sim is considered offline and is reported as such in the<BR>getRegionsStatus RPC call. Optionally we can also add this field to the<BR>regions table to make it easy for external applications to gather online<BR>status data without having to pester the GridServer.<BR><BR>On the Region side, when a packet is sent out, it sets it's<BR>HeartbeatSent = true. I would also add a timer that every X<BR>(configurable via OpenSim.ini) seconds the timer would check<BR>HeartbeatSent, and if false send a heartbeat RPC call, then clear it to<BR>False.<BR><BR><BR>Comments, suggestions, etc are as always desired. :)<BR><BR><BR><BR>_______________________________________________<BR>Opensim-dev mailing list<BR><A href="mailto:Opensim-dev@lists.berlios.de" ymailto="mailto:Opensim-dev@lists.berlios.de">Opensim-dev@lists.berlios.de</A><BR><A href="https://lists.berlios.de/mailman/listinfo/opensim-dev"
 target=_blank>https://lists.berlios.de/mailman/listinfo/opensim-dev</A><BR></DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: arial, helvetica, sans-serif"><BR></DIV></div></body></html>