It does seem awfully complicated compared to how I would imagine the functionality could be implemented if you just did it on top of UDP. One of the costs of using UDP is that one needs to support protocol-specific end-to-end congestion control as well as protocol-specific datagram-loss handling. To me a far simpler idea would be to start with "UDP congestion control" that didn't assume UDP datagrams arrived in-order and at-most-once, using observed drops and ECN marks, or end-to-end delay (by timestamping packets). Then use on that logic a sort of erasure coding (allowing reconstruction of packets containing backspace/delete) that allows out-of-order delivery as information becomes known. Erasure coding (like Digital Fountain codes) are more efficient than retransmission of duplicates of packets - if there are N packets queued in the network, you'd need some kind of SACK-like scheme, but SACK doesn't work very well when the buffering is a backup in the network, rather than in the receive endpoint's OS queueing. Digital Fountains or its successors work great! (and I think the patent expired finally). Up to this point, encryption hasn't been mentioned. But there are encryption schemes that work very well for UDP - emulating a "one-time pad" based on a random start value fed back into a good cipher. Ideally it would be inserted under the erasure code layer. What you need to know to decrypt a block to feed into the erasure-code decoder is just a sequence number for the transmitted block, so you can index into the OTP. Very simple. But doing this on top of WebRTC (not a bad protocol, just a complicated platform) etc. seems to introduce problems that need to be patched around. On Wednesday, April 15, 2020 7:34pm, "Dave Taht" <dave.t...@gmail.com> said:
> dave > > I am a big fan of udp. but reading about how this was implemented made > my head hurt. Then add crypto. > > https://www.meetecho.com/blog/realtime-text-sip-and-webrtc/ > > -- > Make Music, Not War > > Dave Täht > CTO, TekLibre, LLC > http://www.teklibre.com > Tel: 1-831-435-0729 >
_______________________________________________ Cerowrt-devel mailing list Cerowrt-devel@lists.bufferbloat.net https://lists.bufferbloat.net/listinfo/cerowrt-devel