Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

initial draft for evaluating Data Channel as the transport protocol. #24

Merged
merged 1 commit into from
Apr 9, 2017

Conversation

schien
Copy link
Contributor

@schien schien commented Mar 29, 2017

address issue #10

datachannel.md Outdated

[Data Channel](https://tools.ietf.org/html/draft-ietf-rtcweb-data-channel-13)
is a non-media transport protocol in WebRTC framework, designed for exchanging
data from peer to peer. It advertise the following benefits:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

advertises

datachannel.md Outdated
data from peer to peer. It advertise the following benefits:

- Implemented in major browsers (except Safari)
- Support heterogeneous network environment e.g. NAT, firewall.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Supports

datachannel.md Outdated

- Implemented in major browsers (except Safari)
- Support heterogeneous network environment e.g. NAT, firewall.
- Easily support media transport for remote playback
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Supports

datachannel.md Outdated
# Presentation API functionality

Data Channel is designed to be a non-media transport for WebRTC, with built-in
sub protocol negociation mechanism defined.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo in "negotiation"

datachannel.md Outdated
sub protocol negociation mechanism defined.

A Data Channel is built on top of SCTP/DTLS/UDP protocol stack, which supports
reliable data transmition. Each Data Cahnnel has a unique integer ID and a label.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo in Channel

datachannel.md Outdated

Assume that a single Data Channel is used as a control channel to transmit control
messages between the controller and receiver and one Data Channel is created for each
connected Presentation Connection for trasmitting application data.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo: transmitting

datachannel.md Outdated
connected Presentation Connection for trasmitting application data.

An extra signalling channel and protocol for exchanging ICE candidates is required
to bootstrap the control channel. The bootstraping procedure needs to be executed
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

bootstrapping

datachannel.md Outdated

1. Send a control message on control channel from the controller to the display
reconnect to a presentation with ID and URL for the initial presentation connection.
2. Receiver spawn a Data Channel on the same RTC connection of control channel, with
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If a second controller wants to initiate connection to the same presentation, would it have a duplicate Data Channel label?

Copy link
Contributor Author

@schien schien Apr 9, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Generating a unique session Id in Receiver side seems to be a simpler solution for supporting many-to-one presentation.

datachannel.md Outdated

# Latency to establish a new connection

Data on connection establishment latency.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It sounds like are three sources of latency:

  1. Connecting a reliable channel the first time for for ICE negotiation.
  2. Establishing the first Data Channel (perhaps this is part of [Meta] Write document describing protocol requirements #1).
  3. Adding an additional Data Channel on top of an existing peer-to-peer connection.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, exactly. I'll add it to this document.

datachannel.md Outdated
# Reliability

WebRTC is designed to be operated on heterogeneous network environment, using
ICE for address discovery and built-in negociation/re-negociation mechanism.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/negociation/negotiation/g

@mfoltzgoogle
Copy link
Contributor

This looks great @schien! Most of my comments are minor typos.

Did you have thoughts about establishing the bootstrap reliable channel for ICE negotation? IIRC Mozilla uses a TCP channel for this. I believe the bootstrap channel needs to remain open in case the network routing changes and ICE renegotiation occurs.

I recently heard from local WebRTC contacts that there is exploratory work to layer RTCDataChannel on top of QUIC, since the functionality is similar. Something to keep an eye on.

@schien
Copy link
Contributor Author

schien commented Apr 4, 2017

Yes, the example protocol we have in current Gecko codebase uses TCP channel for bootstrapping DataChannel. To be more specific, TLS connection is used (with self-generated certificate, fingerprint broadcast on DNSSD).
We might use QUIC to replace the TLS/TCP channel if maintaining a QUIC connection is cheaper.

@anssiko
Copy link
Member

anssiko commented Apr 6, 2017

@schien, great work! Feel free to land this. You can keep #10 open to track the remaining TODOs.

@schien schien force-pushed the issue-10-data-channel-transport branch 2 times, most recently from af92d82 to 07d1d55 Compare April 9, 2017 08:26
@schien schien force-pushed the issue-10-data-channel-transport branch from 07d1d55 to 600beba Compare April 9, 2017 08:29
@schien schien merged commit e41ac65 into w3c:gh-pages Apr 9, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants