- From: Lennart Grahl <lennart.grahl@gmail.com>
- Date: Wed, 5 Dec 2018 20:38:57 +0100
- To: Peter Thatcher <pthatcher@google.com>
- Cc: public-webrtc@w3.org
On 05.12.18 01:01, Peter Thatcher wrote: > On Tue, Dec 4, 2018 at 1:48 AM Lennart Grahl <lennart.grahl@gmail.com> > wrote: > >> >> >> On 04.12.18 03:30, Bernard Aboba wrote: >>> Justin said: >>> >>> >>> "However, if we want to reframe the effort similar to what Youenn >> proposes, namely defining a protocol-agnostic NG API, and then considering >> QUIC as one substrate on which this API can be implemented (perhaps amongst >> others), that might facilitate reaching a consensus here." >>> >>> >>> [BA] Two protocol agnostic APIs have previously been discussed in the >> WEBRTC WG: >>> >>> >>> a. WHATWG Streams. At the F2F meeting in Stockholm there was some >> enthusiasm for use of WHAT WG streams for multiple transports (e.g. SCTP >> data channel as well as QUIC). At TPAC Lyon, Peter made a concrete >> proposal for QUIC, and Jan-Ivar discussed steps toward streams support for >> the SCTP data channel. So there is a concrete proposal for a >> protocol-agnostic NG API on the table. However, it's not yet clear whether >> WHATWG streams is the best way to address critical issues such as >> multi-threading or whether other approaches might offer similar benefits in >> a wider set of circumstances. So one way forward is to continue to >> investigate approaches to multi-threading, including data transfer in >> workers and WHATWG streams. >>> >>> >>> b. RTCDataChannel. As Peter noted in his presentation at TPAC Lyon, the >> original goal was to enable QUIC as a transport for the existing >> RTCDataChannel API. The current draft of WebRTC-QUIC allows RTCDataChannel >> (or at least the reliable portion of it) to be built on top of it, assuming >> that the data channel protocol for QUIC were to be defined. However, it's >> not clear how much developer enthusiasm there is for exposing QUIC via a >> WebSockets/RTCDatachannel API. >>> >> >> If the proposed QUIC API migrates to WHATWG streams and the existing >> RTCDataChannel API does too (which is what Jan-Ivar and I have started >> working on), then I don't see a real need for a unified API. The >> transports will always have different functionality. As a developer, one >> would only have to swap out the part of the code that constructs the >> transport but sending and receiving a stream would be virtually identical. >> >> Thus, IMO the cost of creating a high-level abstraction might be higher >> than the benefit iff both already support WHATWG streams for >> sending/receiving. However, the impact of "stream of streams" >> (RTCDataChannel) vs. "stream" (RTCQuic*) would need to be investigated. >> > > What I presented at TPAC as "streams of streams" for both SCTP and QUIC. > It's the only way to get things offer the main thread, by using something > like Transferable Streams. > > But there is a difference between SCTP and QUIC here: SctpTransport could > have more than one "stream of streams" (because it has SIDs), while a > QuicTransport can only have one, at least right now. Another way of > thinking about it is that an SctpTransport is a "stream of streams of > streams": SctpTransport -> RTCDataChannel -> Message while a QuicTransport > is currently a "stream of streams": QuicTransport -> Stream. Let's try to attach context every time we talk about "stream". :) An SCTP stream (read: data channel) would be a WHATWG stream of WHATWG streams of bytes. Or in other words: type Message = ReadableStream<Bytes> RTCDataChannel+Streams { readable: ReadableStream<Message> writable: WritableStream<Message> } Whereas a QUIC stream (currently) would be a WHATWG stream of bytes: RTCQuicStream { readable: ReadableStream<Bytes> writable: WritableStream<Bytes> } (I believe this is what you were saying.) Cheers Lennart
Received on Wednesday, 5 December 2018 19:39:52 UTC