draft-jesup-rtcweb-data-protocol-01

advertisement
WebRTC Data Channels
Salvatore Loreto
Randell Jesup
Michael Tuexen
Interim June 2012 - Stockholm
Outline
› Protocol stack
› Dependencies outside RTCWeb wg
› Inbound vs Outbound
› Data Channel Protocol overview
Protocol Stack
STUN
SRTP
Keying
…
SSRCN
SSRC1
› consensus for SCTP encapsulated on DTLS
SRTP
Data
SCTP
DTLS
UDP
IP
Data Channel Requirements
› Multiple data channels
› Reliable and unreliable
› MUST be congestion-controlled
› Provide relative priority
› Data streams MUST be encrypted
› MUST provide message fragmentation support
› Quality open-source userland implementation needed for
deployment
› See draft for other implementation requirements
Dependencies: IETF TSVWG
DTLS Encapsulation of SCTP Packets for RTCWEB
draft-tuexen-tsvwg-sctp-dtls-encaps-00.txt
Status: it needs mail comments/support in tsvwg
Dependencies: IETF MMUSIC
Stream Control Transmission Protocol (SCTP)-Based Media
Transport in the Session Description Protocol (SDP)
draft-ietf-mmusic-sctp-sdp-01
This document defines (other then SCTP identifier) a new
protocol identifier
DTLS/SCTP : to allow the usage of SCTP on top of the Datagram Transport Layer
Security (DTLS) protocol, as defined in [I-D.tuexen-tsvwg-sctp-dtls-encaps], using
SDP. SCTP over DTLS is used by the RTCWeb protocol suite for transporting nonmedia data between browsers.
Status: waiting for comments/feedback…
Discussion: In-band vs Out-of-band
› Out-of-band: more/everything to be negotiated via SDP
(i.e. define all the SDP parameters necessary)
› In-band: everything other the SCTP Association startup is
negotiated inbound.
The SCTP association is created with a initial number of
streams specified by the application (i.e. default 16)
Data Channel Protocol
WebRTC Data Channel Protocol
draft-jesup-rtcweb-data-protocol-01
a protocol for how the JS-layer dataChannel objects provide
the data channels between the peers.
Adding a Channel
Control Messages are sent to manage opening bidirectional
channels setting PPID = WebRTC (TBD by IANA).
msg_type = DATA_CHANNEL_OPEN_REQUEST
msg_type = DATA_CHANNEL_OPEN_RESPONSE
Reverse_direction_stream = Stream number the DATA_CHANNEL_OPEN
was sent on
msg_type = DATA_CHANNEL_ACK
DATA
Reset stream
DATA_CHANNEL_OPEN_REQUEST
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Message Type |
Channel Type |
Flags
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Reliability Parameter
|
Priority
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\
|
/
/
Label
|
\
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
DATA_CHANNEL_OPEN_RESPONSE
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Message Type |
Error
|
Flags
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Reverse Stream
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
DATA_CHANNEL_ACK
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Message Type |
+-+-+-+-+-+-+-+-+
Closing a Channel
Data Channels are closed by resetting the outgoing stream:
If an incoming stream is reset by the peer, an corresponding
outgoing stream reset SHOULD be issued.
Once both streams of a channel are reset, the channel is
closed and the streams are available for reuse.
new SCTP Payload Protocol Identifiers (PPIDs)
WebRTC Control
- #To Be Assigned
DOMString
- #To Be Assigned
Binary Data
- #To Be Assigned.
Download