- From: Michael Tuexen <Michael.Tuexen@lurchi.franken.de>
- Date: Wed, 5 Dec 2018 20:58:26 +0100
- To: Lennart Grahl <lennart.grahl@gmail.com>
- Cc: Peter Thatcher <pthatcher@google.com>, public-webrtc@w3.org
> On 5. Dec 2018, at 20:38, Lennart Grahl <lennart.grahl@gmail.com> wrote:
>
> 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.)
If you want to change the semantics of data channels from being
message oriented to being a byte stream, you can just ignore the
message boundaries.
Not sure what is wanted.
Best regards
Michael
>
> Cheers
> Lennart
>
Received on Wednesday, 5 December 2018 19:59:23 UTC