On Friday 14 November 2008 10:04, Volodya wrote: > Somebody has asked me to send this (i will post the original in Russian and then > the translation done by me) (please note that i don't really think that all of > this makes sense, i'm an interpreter) > > == Translation == > Using of USK for the implimentation of ARK has obvious downfalls. One of them is > that during the rapid change of IP, for example during the change of the version > of the node or during the repeated connection loss, number of ARK increases > rapidly, and during this process there is no attempt to check if previous > versions are still accessible; and they can "fall out" from the network, if > almost instantaneously other nodes are restarting. As a result, as it seems, > quite often "breaks" in the sequence of ARK appear with the length of more than > 4 versions, which is a requirement for the working of normal USK; this leads to > the search for the "new" ARK number giving no results. This is especially > important for the nodes working less than 24 hours a day and having a dynamic IP. > One solution may be a request for ARK far ahead, say a few times with the random > increase of a version number from 5 to 100 related to the existing one (of > course distributed not equally, but maybe as a reverse exponent). Or a dumb > request for 44 rather than 4 following versions.
IMHO this is a weakness in USKs themselves, rather than a specific issue for ARKs. Solutions have been proposed but not yet implemented. IIRC we do look further ahead, but we throttle it increasingly heavily, so it takes a long time. > > Another bug problem of USK/SSK is related to the algorithm of attempting repeat > write to the existing SSK, when a specific version is provided. Node after > finding that another programme attempts to write SSK with the already existing > version immediately interrupts the request and notifies the programme. We attempt to find the data (via a USK fetcher). If it is already there and identical, we don't reinsert it. So it could be in the node's datastore and not on the network. > Unfortunately _ALL_ the programmes after that assume that information is already > on the network, and if no new information exists do nothing. In the best (but > not optimal) case they attempt to write the same information to the new version > of SSK. Correct behaviour of the programmes would be to ask the node for the > existing version of SSK in full and check the completeness and correctness of > the received, to exclude the existence of the unreadable SSK. In case of an > problem with the fetch of the data the need for the reinsert becomes clear. > Unfortunately even if one knows ahead of the time that the data has not changed, > programmes are forced to write a new version of SSK, or the node will once again > interrupt the request. > One optional solution may be the node allowing the rewrite of the current > version of SSK until it finishes successfully and only after letting the > programme know that the write has been successful as a rewrite of the data. > Or > beginning of the new request when programme asks the node how to behave if the > version already exists: repeat write (as the first solution), check the match > (the node, not the programme, asks for the current version and compares)or only > check the fetchability of the existing version of SSK (attempt to read SSK in > the full but without providing the data or writing it anywhere) - only check the > existence (or at least that there are enough blocks for full reconstruction). ARKs don't occupy lots of blocks. Having said that they do occupy one more block than necessary - for some reason we insert them with a text/plain mime type, they should be inserted with no MIME type. > This is important also for the working of ARK, as often restart of the node is > not a reason to reinsert the ARK version, but it is important that the existing > version is still in the network. Otherwise even neighbours working constantly on > the constant address: unchanged ARK of such a node can "fall off" the network, > but the node itself will not notice that even after the restart; but the > neighbours during the restart after changing IP will be unable to get that ARK. So basically, what you want is for the node to reinsert the ARK (at the old key) even if it is identical to the existing data. I dunno, maybe that's a good idea. It probably wouldn't get very far most of the time, because it would be terminated at the first node to have the data in its store... Anyone have a view? Other issues with ARKs and USKs: 1. ARKs are currently inserted with a MIME type, resulting in them occupying an SSK and a CHK. An SSK is all that is needed, and since I suspect we have overcapacity in SSKs, that should greatly improve ARKs' reliability. 2. It is hard to find the latest version of a USK when you've lost your place. IMHO the simplest, fastest, and most reliable solution to this is date-based hierarchical pointers (which would simply include the latest edition at a given time). Hence: USK at blah/site/12 -> SSK at blah/site-12 // the actual content But we also insert SSK at blah/site-___DATE___-2008 SSK at blah/site-___DATE___-2008-11 SSK at blah/site-___DATE___-2008-11-14 All of which contain the current edition number, "12". > > == End == > > -- > http://freedom.libsyn.com/ Echo of Freedom, Radical Podcast > http://eng.anarchopedia.org/ Anarchopedia, A Free Knowledge Portal > http://www.freedomporn.org/ Freedom Porn, anarchist and activist smut > > "None of us are free until all of us are free." ~ Mihail Bakunin -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 827 bytes Desc: not available URL: <https://emu.freenetproject.org/pipermail/support/attachments/20081114/8c4089cf/attachment.pgp>