[Http-crcsync] General comments on crcsync document

Patrick McManus mcmanus at ducksong.com
Fri Jul 17 10:22:09 EDT 2009


Hi Toby, et al!

On Fri, 2009-07-17 at 08:00 +0200, Toby Collett wrote:

> 
> The issue with the numbers is that in the case of say a credit card
> transaction, if we have a strong hash failure we cannot simply
> retransmit the data, which means the user will see an error page.

this is true with the failure of any non-idempotent http transaction. A
meaningful evaluation would need to take into account existing failure
rates from other sources of this kind of transaction (e.g. network,
server, firewall failures) to see it in context instead of just as a raw
number. (i.e. if we've already got a 1 in a million failure rate
baseline - adding a 1 in 100 million crc failure rate doesn't matter
much. these numbers are made up, but personal experience tells me that
natural failure rates are a lot more common than 1 in a million.)
Because of this inherent unreliability, applications have provisions for
resubmit built in - though I agree it is nice not to use them.

>  I will sit down later today and see if I can come up with some
> numbers and then run them past the list...

one thing you need to take into account, and I'm not really sure how to
do this, is to consider that a crc is not a uniform hash. It is designed
to catch small differences with a probability better than 1 - 1/2^32 ..
but large differences with a probability worse than that.. the question
is where does a false positive delta fall on that scale - being a delta
it is not independent data. My gut says this works in crc's favor.

finally, it is not purely a matter of optimal sizing. if crc32c is "good
enough" we should be biased in its favor because of the ubiquity of
quality implementations (software and hardware) available for it.


>         > Or am I now overcomplicating things?

algorithm negotiation is not a big deal to me, but doing it in the way
proposed is consistent with basic http mechanisms, which is a good thing
in an http extension imho. Minimally I think it would be good to state
the algorithm in the if-block header, giving room for a v2, while
stating in the spec that XXX is the only currently defined value and
negotiation is currently unspecified.

-Patrick




More information about the Http-crcsync mailing list