[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: End to end mixminion rationalized, with compression and K-of-N
Summary: Zooko thinks Nick has an excellent point about failure correlation,
but doesn't understand some of it. Zooko gives more general advice from Mnet
which may or may not apply to MixMinion.
> I'm guessing that most failures in a remailer network are not single
> packet failures, but rather server-level failures where a given server's
> unavailability causes all packets sent through that server to be delayed
> or dropped. Thus, the number of packets doesn't matter so much as the
> number of paths.
You're exactly right that Mnet's model is that packet failures are
uncorrelated with one another, which makes both the "low end of the erasure
code curve" problem (that I mentioned to you in an early private e-mail) and
the "P^K problem" as bad as they can be. The solution of using variable
length packets is precisely in order to make failure of some of the data
correlate. (You lose all or none of a packet.)
So in Mnet it is a huge win to use variable length packets over chunking,
because even if you have the same number of failed bytes in the system, they
are now highly correlated in such a way that our erasure code can handle it.
I didn't realize that MixMinion fragments would mostly be sent along the same
path(s). I think you are right that this makes packet-level failures better
correlated. Hm. But what you want is for *message* level failures to be
well-correlated. If you are going to lose 100 chunks out of 1000 chunks
during one time period, you very much want to lose all 100 chunks from a
single 100-chunk message, instead of losing one chunk each out of 100
different messages!
You write below that if the failures are path-level then only K, N, and the
number of paths matter. Does this mean that failures are well correlated
within messages? I don't really understand.
> Math time: If failures *are* packet-level, assuming a assuming a modest
> 90% success rate and an EXF of 1.5 or so, a 20-chunk (8960KB) message
> will arrive with 99.4% probability. Success probability only drops
> below 99% when message size
What's EXF?
An interesting thing you might want to look at is to hold the failure rate
right around K/M (where K is required packets and M is total packets), and
then see how twiddling numchunks changes reliability-of-total-message. This
is what happened to Mojo Nation: reliability of individual packets turned out
to be much more variable than we had thought, and on average was closer to K/M
than to 0.9. The chunking "compounded" this problem, effectively killing most
of the files most of the time, instead of killing a few of the files all of
the time.
> > The next generation data structure in Mnet will not do *any* chunking, which
> > we can get away with by specifying variable-length and large packet sizes.
>
> Actually, variable-length packet sizes were the first recommendation
> that Justin made to me; they're a great choice for non-anonymous
> systems. Just hold K constant and let the packet size equal Len(Msg)/K.
Yeah, Justin (Chapweske) is partially responsible for convincing me of this in
Mnet, along with Bram Cohen and Jukka Santala.
FWIW, the next version of Mnet will specify packets sizes of 2^N, and the user
can of course add higher-layer padding on top of that padding.
Regards,
Zooko