On 9/8/10 4:16 PM, Roque Gagliano wrote:
> Hi Rob,
> 
>> I don't see any locking strategy (either modifying rsync or creating a
>> new RPKI object to represent a lock) as likely to work.  I can go into
>> details if necessary, but in short there are just too many different
>> ways that a relying party could end up with a potentially inconsistent
>> collection of objects, and this problem goes beyond a single directory
>> ("publication point"), or the rsync protocol.
>>
>> I see no alternative but to place the burden of assembling a
>> consistent view on the relying party.  This may mean that the relying
>> party's view lags the latest published data in some cases, and that a
>> relying party that's just starting up (has no cache of valid results
>> from previous retrieval runs) may end up with an incomplete picture
>> portions of the universe.  So be it.
>>
>> Welcome to the world of loosely consistent databases.
> 
> I agree with you. However, can we think on some operational practices that 
> may help the RP?
> 
> Here is one example I was thinking about: what if we recommend the server to 
> always start updating a publication point by the manifest?. In this sense the 
> RP can always re-fetch the manifest at the end of the sync process to compare 
> it with the original one at the start of the sync process.
> 

FYI: we publish everything to a new, empty directory. When this is done
we change the symlink that points to the 'current' directory, to this
new dir. Rsync follows the symlink. I believe this is similar to other
implementations.

This does not prevent mid-transfer issues as such, but.. the change
itself is fairly atomic. In other words if the RP suspects a
mid-transfer update may have occurred, and then restarts the transfer:
they should get a consistent view.

Since the manifest is always updated when changes occur, and a new EE
certificate issued with not-before time set to the moment of
publication, the RP can re-fetch the manifest and check whether it was
updated.

So, when processing the SIA for a cert:
1) get manifest (follow manifest pointer)
2) get all other objects (follow dir pointer)
3) get manifest again and compare to 1
  --> if 3 and 1 don't match, wait a moment and repeat.

I am not sure though whether this enough.. other ideas?

Cheers
Tim
_______________________________________________
sidr mailing list
sidr@ietf.org
https://www.ietf.org/mailman/listinfo/sidr

Reply via email to