- From: Roman Shpount <roman@telurix.com>
- Date: Tue, 6 Jan 2015 13:27:09 -0500
- To: Bernard Aboba <Bernard.Aboba@microsoft.com>
- Cc: "public-ortc@w3.org" <public-ortc@w3.org>
- Message-ID: <CAD5OKxt3TJLm0KVVhi+0FL16ZSkMU+c1FD8nJ-2kF9S2J2h3ug@mail.gmail.com>
I am not sure that "auto" means that DTLS role is determined based on resolved ICE role. If it corresponds to actpass, then per RFC 5763 ( https://tools.ietf.org/html/rfc5763#section-5): The endpoint MUST use the setup attribute defined in [RFC4145]. The endpoint that is the offerer MUST use the setup attribute value of setup:actpass and be prepared to receive a client_hello before it receives the answer. The answerer MUST use either a setup attribute value of setup:active or setup:passive. Note that if the answerer uses setup:passive, then the DTLS handshake will not begin until the answerer is received, which adds additional latency. setup:active allows the answer and the DTLS handshake to occur in parallel. Thus, setup:active is RECOMMENDED. Whichever party is active MUST initiate a DTLS handshake by sending a ClientHello over each flow (host/port quartet). This also states that client_hello must be processed before answer is received and RTCDtlsTransport.start is called. Finally, we need also to deal with forking, where multiple negotiations can start on the same receiving host/port with different roles. _____________ Roman Shpount On Mon, Jan 5, 2015 at 5:08 PM, Bernard Aboba <Bernard.Aboba@microsoft.com> wrote: > Justin Uberti said: > > “Since actpass/active/passive are SDPisms, we decided to adopt the DTLS > terminology of client/server. > > Note that holdconn has no meaning in the DTLS environment, and actpass can > be simulated by initially acting as a server, but then changing to a client > if the other side says it wants to be the server.” > > Roman said: > > “From what I can see there is no way to change the role for > RTCDtlsTransport. Does it mean it will always start in auto and then switch > to client/server based on the start call? “ > > ” > > > > [BA] We have RTCDtlsTransport.getLocalParameters() but no > .setLocalParameters(). Since we have: > > > > dictionary RTCDtlsParameters { > > RTCDtlsRole role = "auto"; > > sequence<RTCDtlsFingerprint> fingerprints; > > }; > > > > This means that getLocalParameters.RTCDtlsRole is always initially set to > “auto” (DTLS role determined based on resolved ICE role). However, the ICE > role isn’t resolved until RTCIceTransport.start() is called. > > > > However, in the sample code examples (e.g. Section 4.4) > RTCIceTransport.start() isn’t called until after the capabilities are > exchanged. > > > > So at least in the sample code, the only possible value of > RTCDtlsTransport.getLocalParameters.RTCDtlsRole exchanged between peers is > “auto”. > > > > Presumably after the signaling is done, RTCIceTransport.start() is > called. After that point, it becomes possible for DTLS packets to flow > between the peers (and also for RTCDtlsRole to change, reflecting the > resolved ICE role). > > > > Roman also said: > > > > Second question, would RTCDtlsTransport accept DTLS packets before the > start call? Currently, with SDP, an offer is sent with actpass, the client > waits for answer, but will accept DTLS handshake packets, which will switch > it into server mode. If answer is received which forces a client setup > role, DTLS transport is reset and handshake is restarted as a client. Is > this something supported by the current setup? > > > > [BA] My assumption is that RTCIceGatherer needs to accept ICE connectivity > checks before RTCIceTransport.start() is called (or even before an > RTCIceTransport is constructed). Similarly, it seems to me that > RTCDtlsTransport needs to accept DTLS packets before > RTCDtlsTransport.start() is called. Note that by the time the > RTCDtlsTransport receives a DTLS packet, the ICE role will have been > resolved. In theory, a peer with a resolved role of “client” should not be > receiving incoming DTLS packets, since that would imply that the remote > peer has a resolved role of “server” and yet is behaving like a “client”. > But then the question is “what happens?” Does the RTCDtlsRole change to > reflect what is going on in the DTLS negotiation? > > > > >
Received on Tuesday, 6 January 2015 18:27:39 UTC