<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
FONT-SIZE: 10pt;
FONT-FAMILY:Tahoma
}
</style>
</head>
<body class='hmmessage'>Diva,<BR>
<BR>
there's a blindingly simple remedy; start treating the asset guid as something private between the region and the client, and publicly refer to assets by url instead.<BR>
<BR>
In effect, the fact that we are storing the assets untampered in the database is just a legacy issue. If we were to start processing the asset data more intelligently, things would look a lot differently.<BR>
<BR>
Suppose we;<BR>
<BR>
a) on asset upload, processed the asset and changed guids to urls, firstly by lookup (is this already an asset guid known to the region) then by url synthetization (create an asset storage url (maybe using the users home asset server that we already said we would store... ;D ) , post the binary to that and change all guid references in the asset to that)<BR>
<BR>
b) on asset download (from asset storage) processed the asset and changed urls to guid, again firstly by lookup (is it already known to the region) then, by fetching the asset by url and assigning it a guid.<BR>
<BR>
This would mean that the client, when it refers to an asset, actually requests it by the local guid that the region has assigned it - more as a local cache key than a public asset id.<BR><BR>
I believe this would solve the whole thing, more or less. I would love to see a proof of concept - it should be fairly easily thrown together, probably as a custom asset cache.<BR> <BR>Best regards,<BR>Stefan Andersson<BR>Tribal Media AB<BR> <BR>Join the 3d web revolution : <A href="http://tribalnet.se/" target=_blank>http://tribalnet.se/</A><BR> <BR><BR><BR><BR>
<HR id=EC_stopSpelling>
<BR>
Date: Sat, 1 Nov 2008 07:52:33 -0700<BR>From: diva@metaverseink.com<BR>To: opensim-users@lists.berlios.de<BR>Subject: Re: [Opensim-users] [Opensim-dev] Grid Numberging<BR><BR>
<META content="Microsoft SafeHTML" name=Generator>The only reason why I'm suggesting the encoding hack as a horrible option not to be immediately discarded is that it is probably the simplest thing to do for the LL Viewer to start pulling assets from different places on the internet. From all I know, the LL Viewer is deeply rooted on UUIDs for universal identification; refactoring this will be a massive undertaking on the viewer. But simply giving semantics to UUIDs would not be that big of a deal. I'm thinking a few conditionals here and there:<BR><BR>url = RetrieveUrl(uuid)<BR>if ItsASyntacticallyValidUrl(url)<BR> try to do the right thing, please<BR>else<BR> do what you do now<BR><BR>or something to this effect.<BR><BR>Of course, we're hitting our heads again on the pre-condition of using the LL Viewer...<BR><BR>Dickson, Mike (ISS Software) wrote: <BR>
<BLOCKQUOTE cite=mid:4646639E08F58B42836FAC24C94624DD5C229C7011@GVW0433EXB.americas.hpqcorp.net>
<STYLE>
.ExternalClass .EC_shape
{;}
</STYLE>
<STYLE>
.ExternalClass p.EC_MsoNormal, .ExternalClass li.EC_MsoNormal, .ExternalClass div.EC_MsoNormal
{margin-bottom:.0001pt;font-size:12.0pt;font-family:'Times New Roman','serif';color:black;}
.ExternalClass a:link, .ExternalClass span.EC_MsoHyperlink
{color:blue;text-decoration:underline;}
.ExternalClass a:visited, .ExternalClass span.EC_MsoHyperlinkFollowed
{color:purple;text-decoration:underline;}
.ExternalClass p
{margin-right:0in;margin-left:0in;font-size:12.0pt;font-family:'Times New Roman','serif';color:black;}
.ExternalClass pre
{margin-bottom:.0001pt;font-size:10.0pt;font-family:'Courier New';color:black;}
.ExternalClass span.EC_HTMLPreformattedChar
{font-family:Consolas;color:black;}
.ExternalClass span.EC_EmailStyle20
{font-family:'Calibri','sans-serif';color:#1F497D;}
.ExternalClass .EC_MsoChpDefault
{font-size:10.0pt;}
@page Section1
{size:8.5in 11.0in;}
.ExternalClass div.EC_Section1
{page:Section1;}
</STYLE>
<DIV class=EC_Section1>
<P class=EC_MsoNormal><SPAN style="FONT-SIZE: 11pt; COLOR: rgb(31,73,125); FONT-FAMILY: 'Calibri','sans-serif'">We really don’t want to start encoding info into a GUID. The RFC that describes them pretty much details what kinds of entropy can be used. </SPAN></P>
<P class=EC_MsoNormal><SPAN style="FONT-SIZE: 11pt; COLOR: rgb(31,73,125); FONT-FAMILY: 'Calibri','sans-serif'"> </SPAN></P>
<P class=EC_MsoNormal><SPAN style="FONT-SIZE: 11pt; COLOR: rgb(31,73,125); FONT-FAMILY: 'Calibri','sans-serif'">I’ve been thinking for a while that the handle service (<A href="http://www.handle.net/" target=_blank>http://www.handle.net</A>) might be a nice way to do a URL style mechanism to refer to assets and such not on a local server. It’s been a while since I looked at it but it’s pretty much designed for the purpose and there’s a proxy architecture already defined for it.</SPAN></P>
<P class=EC_MsoNormal><SPAN style="FONT-SIZE: 11pt; COLOR: rgb(31,73,125); FONT-FAMILY: 'Calibri','sans-serif'"> </SPAN></P>
<P class=EC_MsoNormal><SPAN style="FONT-SIZE: 11pt; COLOR: rgb(31,73,125); FONT-FAMILY: 'Calibri','sans-serif'">Mike</SPAN></P>
<P class=EC_MsoNormal><SPAN style="FONT-SIZE: 11pt; COLOR: rgb(31,73,125); FONT-FAMILY: 'Calibri','sans-serif'"> </SPAN></P>
<DIV>
<DIV style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: rgb(181,196,223) 1pt solid; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 3pt; BORDER-BOTTOM: medium none">
<P class=EC_MsoNormal><B><SPAN style="FONT-SIZE: 10pt; COLOR: windowtext; FONT-FAMILY: 'Tahoma','sans-serif'">From:</SPAN></B><SPAN style="FONT-SIZE: 10pt; COLOR: windowtext; FONT-FAMILY: 'Tahoma','sans-serif'"> <A class=EC_moz-txt-link-abbreviated href="mailto:opensim-users-bounces@lists.berlios.de">opensim-users-bounces@lists.berlios.de</A> [<A class=EC_moz-txt-link-freetext href="mailto:opensim-users-bounces@lists.berlios.de">mailto:opensim-users-bounces@lists.berlios.de</A>] <B>On Behalf Of </B>Diva Canto<BR><B>Sent:</B> Saturday, November 01, 2008 9:05 AM<BR><B>To:</B> <A class=EC_moz-txt-link-abbreviated href="mailto:opensim-users@lists.berlios.de">opensim-users@lists.berlios.de</A><BR><B>Subject:</B> Re: [Opensim-users] [Opensim-dev] Grid Numberging</SPAN></P></DIV></DIV>
<P class=EC_MsoNormal> </P>
<P class=EC_MsoNormal>Actually, I just realized that the problem is already much worse than I thought.<BR>The practices that we are all doing around opensim completely invalidate the concept of uniqueness in UUIDs. This comes from the fact that UUIDs are being externalized into DBs and XML representations, which are then being imported elsewhere. As people reuse entire DBs and XML files to recreate the same worlds in different grids, uniqueness goes down the drain. So definitely, forget about "Universal" Unique Identification with UUIDs; uris/urls are absolutely required for universal naming. The only way to savage UUIDs would be use part of their representation to deterministically code up the ip/port of where they come from.<BR><BR>Stefan Andersson wrote: </P>
<P class=EC_MsoNormal style="MARGIN-BOTTOM: 12pt">And the whole thread started with suggesting we allocate information bits to encode semantics. Which drastically heightens the risk of collisions, intentional or malicious.<BR><BR>Just see guids as private to the trust domain, and we'll all fine. Grids should be publicly referred to by something riches, as an uri/url for example.<BR><BR>Best regards,<BR>Stefan Andersson<BR>Tribal Media AB<BR> <BR>Join the 3d web revolution : <A href="http://tribalnet.se/" target=_blank>http://tribalnet.se/</A><BR> <BR><BR><BR></P>
<DIV class=EC_MsoNormal style="TEXT-ALIGN: center" align=center>
<HR id=EC_EC_stopSpelling align=center width="100%" SIZE=2>
</DIV>
<P class=EC_MsoNormal><BR>Date: Fri, 31 Oct 2008 20:10:41 -0700<BR>From: <A href="mailto:diva@metaverseink.com">diva@metaverseink.com</A><BR>To: <A href="mailto:opensim-users@lists.berlios.de">opensim-users@lists.berlios.de</A><BR>Subject: Re: [Opensim-users] [Opensim-dev] Grid Numberging<BR><BR>Not to mention the dudes and dudettes who generate region UUIDs by hand... (a-hem)<BR>Purely random UUIDs that don't encode higher-order information are too fragile when there is a chance that people will get their hands on them. I'm not even talking about malicious manipulation, just simple human intervention.<BR><BR>Frisby, Adam wrote: <BR><BR></P><PRE>Yeah, the reason I said 'almost' wasn’t because of a good UUID generator, - it's the bad ones.</PRE><PRE> </PRE><PRE>IE, people using bad random sources, etc which dramatically increase the chance of a collision - ie if you are only getting 30 bits of randomness, you could run into a collision fairly quickly.</PRE><PRE> </PRE><PRE>Adam</PRE><PRE> </PRE><PRE> </PRE>
<BLOCKQUOTE style="MARGIN-BOTTOM: 5pt"><PRE>-----Original Message-----</PRE><PRE>From: <A href="mailto:opensim-users-bounces@lists.berlios.de">opensim-users-bounces@lists.berlios.de</A> [<A href="mailto:opensim-users">mailto:opensim-users</A>-</PRE><PRE><A href="mailto:bounces@lists.berlios.de">bounces@lists.berlios.de</A>] On Behalf Of Sean Dague</PRE><PRE>Sent: Friday, 31 October 2008 4:48 PM</PRE><PRE>To: <A href="mailto:opensim-users@lists.berlios.de">opensim-users@lists.berlios.de</A></PRE><PRE>Subject: Re: [Opensim-users] [Opensim-dev] Grid Numberging</PRE><PRE> </PRE><PRE>Dr Scofield wrote:</PRE><PRE> </PRE>
<BLOCKQUOTE style="MARGIN-BOTTOM: 5pt"><PRE>Frisby, Adam wrote:</PRE><PRE> </PRE>
<BLOCKQUOTE style="MARGIN-BOTTOM: 5pt"><PRE>Shouldn’t UUIDs by definition be unique?</PRE><PRE> </PRE><PRE> </PRE><PRE> </PRE><PRE>IE – if your generating them randomly a collision is almost</PRE><PRE>guaranteed to never ever occur.</PRE><PRE> </PRE></BLOCKQUOTE><PRE>"almost" being a key word here...</PRE><PRE> </PRE></BLOCKQUOTE><PRE>"...after generating 1 billion UUIDs every second for the next 100</PRE><PRE>years, the probability of creating just one duplicate would be about</PRE><PRE>50%. The probability of one duplicate would be about 50% if every</PRE><PRE>person on earth owns 600 million UUIDs.<A href="http://en.wikipedia.org/wiki/UuidJusttokeep" target=_blank>"</A></PRE><PRE><SPAN class=EC_MsoHyperlink><A href="http://en.wikipedia.org/wiki/UuidJusttokeep" target=_blank><SPAN style="TEXT-DECORATION: none"> </SPAN></A></SPAN></PRE><PRE><SPAN class=EC_MsoHyperlink><A href="http://en.wikipedia.org/wiki/UuidJusttokeep" target=_blank>http://en.wikipedia.org/wiki/Uuid</A></SPAN></PRE><PRE><SPAN class=EC_MsoHyperlink><A href="http://en.wikipedia.org/wiki/UuidJusttokeep" target=_blank><SPAN style="TEXT-DECORATION: none"> </SPAN></A></SPAN></PRE><PRE><SPAN class=EC_MsoHyperlink><A href="http://en.wikipedia.org/wiki/UuidJusttokeep" target=_blank>Just to keep "</A></SPAN>almost" in perspective,</PRE><PRE> </PRE><PRE> -Sean</PRE><PRE> </PRE><PRE>--</PRE><PRE>Sean Dague / Neas Bade</PRE><PRE><A href="mailto:sdague@gmail.com">sdague@gmail.com</A></PRE><PRE><A href="http://dague.net/" target=_blank>http://dague.net</A></PRE><PRE> </PRE><PRE> </PRE></BLOCKQUOTE><PRE>_______________________________________________</PRE><PRE>Opensim-users mailing list</PRE><PRE><A href="mailto:Opensim-users@lists.berlios.de">Opensim-users@lists.berlios.de</A></PRE><PRE><A href="https://lists.berlios.de/mailman/listinfo/opensim-users" target=_blank>https://lists.berlios.de/mailman/listinfo/opensim-users</A></PRE><PRE> </PRE><PRE> </PRE>
<P class=EC_MsoNormal><BR><BR></P><PRE> </PRE><PRE style="TEXT-ALIGN: center"><HR align=center width="90%" SIZE=4>
</PRE><PRE> </PRE><PRE>_______________________________________________</PRE><PRE>Opensim-users mailing list</PRE><PRE><A href="mailto:Opensim-users@lists.berlios.de">Opensim-users@lists.berlios.de</A></PRE><PRE><A href="https://lists.berlios.de/mailman/listinfo/opensim-users" target=_blank>https://lists.berlios.de/mailman/listinfo/opensim-users</A></PRE><PRE> </PRE>
<P class=EC_MsoNormal> </P></DIV><PRE><HR width="90%" SIZE=4>
_______________________________________________
Opensim-users mailing list
<A class=EC_moz-txt-link-abbreviated href="mailto:Opensim-users@lists.berlios.de">Opensim-users@lists.berlios.de</A>
<A class=EC_moz-txt-link-freetext href="https://lists.berlios.de/mailman/listinfo/opensim-users" target=_blank>https://lists.berlios.de/mailman/listinfo/opensim-users</A>
</PRE></BLOCKQUOTE><BR></body>
</html>