--
You received this message because you are subscribed to the Google Groups "Cap'n Proto" group.
To unsubscribe from this group and stop receiving emails from it, send an email to capnproto+unsubscribe@googlegroups.com.
Visit this group at https://groups.google.com/group/capnproto.
To unsubscribe from this group and stop receiving emails from it, send an email to capnproto+...@googlegroups.com.
I don't think intruducer generated PSK is a good idea. If the PSK is a symmetric key, then a connection made on behalf of a compromised introducer will be insecure, and so will be all the connections introduced over this one, potentially posining the whole network.
Having the PSK be two asymmetric keys leads to slightly better outcome: second order connections would only be readable in one direction, but it doesn't solve the whole poison thing.Instead, each node should generate iteself DH pair, the public value of which it advertises to it's neighbors. The introducers job would then be to send each side the DH of their peer (maybe mixing in salt).
About streams vs messages. The semantics of sending a stream vs message is that stream packets should arrive in order (to reduce buffering), while message packets just need to arrive. Which makes the retransmission mechanism simpler and more efficient. Ideally you would have both, streams for stream-like data, and messeges for message-like data. But you can always adapt a stream for messages by framing, while adapting messages for a stream isn't as easy.
Finally, a thing to consider about UPD protocols is path MTU discovery, which cannot use ICMP over raw sockets because they need admin privileges.
On Tuesday, June 12, 2018 at 3:05:01 AM UTC+2, Kenton Varda wrote:Last time I looked at QUIC (long ago), the implementation was too tied with Chrome and HTTP to be useful, but maybe it has changed now that it's getting closer to standardization.For 3-party handoff scenarios, we want 0-RTT that does not require having ever connected to that party before, but can instead be initialized with a pre-shared key. The introducer would generate a key and send it to both of the parties being introduced. In this case you get something like forward secrecy even with 0-RTT, since the PSK is in fact an ephemeral key for just that one session (and is never stored to disk).Maybe QUIC can do that, though it's a little different from what it was designed for.Also tricky is the fact that Cap'n Proto isn't really a stream protocol. It's a bunch of independent requests which may or may not have ordering constraints with respect to each other. It would be useful if the Cap'n Proto RPC system could receive the unordered requests and then sort them out for itself, enforcing e-order as necessary, rather than have the underlying transport always provide perfect in-order delivery.But certainly, I'm not excited about writing a new UDP protocol from scratch... so it would be nice to reuse if it fits.-KentonOn Mon, Jun 11, 2018 at 3:11 AM, <ondr...@seznam.cz> wrote:While QUIC is being developed to replace TCP under HTTP 2, i think it's also a good fit for RPC.
Independent streams:
Self explanatory, multiple streams with connection flow control and congestion avoidance, without packet loss blocking unrelated streams. To satisfy e-order, messages to a capability would have to be transmitted over one stream.
0-RTT connections (with encryption):
With the cost of some per connection persistent state, 0-RTT connections are possible. Especially useful in 3+ party scenarios. The only catch is that forward secrecy kicks in only after 1-RTT, so critical data should be held off for that period.
Forward error correction:
Again, by sending more data up-front, some amount of lost packets can be reconstructed, avoiding extra round trips.
I'm not suggesting we should immediately go and implement it, it's still in development, and adoption is only in chromium/google services. But the package of independent streams and reduced RTTs seems really enticing over building something specially for Cap'n Proto.
--
You received this message because you are subscribed to the Google Groups "Cap'n Proto" group.
To unsubscribe from this group and stop receiving emails from it, send an email to capnproto+...@googlegroups.com.
Visit this group at https://groups.google.com/group/capnproto.
--
You received this message because you are subscribed to the Google Groups "Cap'n Proto" group.
To unsubscribe from this group and stop receiving emails from it, send an email to capnproto+unsubscribe@googlegroups.com.
As Kenton finalized his last post in this topic:
>But yes, there is certainly lots of complexity to implementing UDP-based protocols. Congestion control is also quite complicated.
Your comment on ENet related post is appreciated. I need to build a Cannp based application on UDP protocol and it would be better if it is more supprted in Capn"n proto level. ENet seems to be a powerful small library, Any advice on how to use it with current Cap"n proto UDP implementation.
--
***Web:
*
*** www.must.edu.eg <http://www.must.edu.eg/>
*
***Facebook:
*
*** facebook.com/mustuni <http://facebook.com/mustuni>
****Twitter:
*
***
*twitter.com/must_university <http://twitter.com/must_university>
***Instagram: instagram.com/mustuni <http://instagram.com/mustuni>
*
**
***Pinterest: pinterest.com/mustuni <http://pinterest.com/mustuni>
*
**
*Think Green – *Please do not print this email unless you really need to.*
*
******-*
** *This email message is intended for the use of the person
to whom it has been sent, and may contain information that is confidential
or legally protected. If you are not the intended recipient or have
received this message in error, you are not authorized to copy, distribute,
or otherwise use this message or its attachments. Please notify the sender
immediately by return e-mail and permanently delete this message and any
attachments. Misr University for Science & Technology makes no warranty
that this email is error or virus free.** Thank you.*
*
*
***