ICE restart behavior still needs to be resolved #93

juberti opened this Issue May 30, 2014 · 10 comments


None yet

3 participants

juberti commented May 30, 2014

#59 attempted to address this, but issues were discovered:

"I don't think this is sufficient given the need for TransportController and freezing policy. The TransportController really needs to be able to redo its thing, suggesting that ICE restart needs to be internal to an IceTransport rather than configured externally. (Unless we want to go down the route of having multiple TCs, which starts getting into questionable territory)."


Just to clarify, are you saying we need an explicit "restart()" method on the IceTransport? I'm okay with that, just want to clarify.

aboba commented Jun 9, 2014

I'd suggest we assume that a restart() method on the IceTransport is what is needed.

@robin-raymond robin-raymond pushed a commit to robin-raymond/ortc that referenced this issue Jun 15, 2014
Robin Raymond - Added support for non-multiplexed RTP/RTCP and ICE freezing, as des…
…cribed in Issue 57


- Added support for getRemoteCertificates(), as described in Issue 67

- Removed filterParameters and createParameters functions, as described in Issue 80

- Partially addressed capabilities issues, as described in Issue 84

Addressed WebIDL type issues described in Issue 88

- Addressed Overview section issues described in Issue 91

- Address readonly attribute issues described in Issue 92

- Added ICE restart method to address the issue described in Issue 93

- Added onerror eventhandler to sender and receiver objects as described in Issue 95
aboba commented Jun 15, 2014

restart() method added in the latest editor's draft:

aboba commented Jun 25, 2014

Can we reopen this? In the June 24 ORTC meeting, I believe we concluded that we had not fully addressed this.

@robin-raymond robin-raymond reopened this Jun 25, 2014
aboba commented Jun 27, 2014

RFC 5245 indicates that an ICE restart can involve changing endpoints, so that the DTLS Transport would also need to be changed:

aboba commented Jun 28, 2014

Yet another restart-related issue from Shijun Sun:
Section 3.3. IceTransport. restart(). If this is to reset to gathering, the spec should be clear on the impact to “state”, local candidate list, etc. And, should we allow any change to the getherPolicy when restart()? And, from another perspective, can we recommend just constructing a new IceTransport as in Section 3.1, i.e. removing “restart()” from the interface?


$related #101

@robin-raymond robin-raymond added the 1.1 label Jun 28, 2014
@robin-raymond robin-raymond pushed a commit to robin-raymond/ortc that referenced this issue Jul 16, 2014
Robin Raymond Added section on WebRTC 1.0 compatibility issues, responding to Issue #…

Added Identity support, as described in Issue #78
Reworked getStats method, as described in Issue #85
Removed ICE restart method described in Issue #93
Addressed CNAME and synchronization context issues described in Issue #94
Fixed WebIDL issues noted in Issue #97
Addressed NITs described in Issue #99
DTLS transport issues fixed as described in Issue #100
ICE transport issues fixed as described in Issue #101
ICE transport controller fixes made as described in Issue #102
Sender and Receiver object fixes made as described in Issue #103
Fixed RTCRtpEncodingParameter default issues described in Issue #104
Fixed 'Big Picture' issues descibed in Issue #105
Fixed RTCRtpParameter default issues described in Issue #106
Added a multi-stream capability, as noted in Issue #108
Removed quality scalability capabilities and parameters, as described in Issue #109
Added scalability examples as requested in Issue #110
Addressed WebRTC 1.0 Data Channel compatibility issue described in Issue #111
Removed header extensions from RTCRtpCodecParameters as described in Issue #113
Addressed RTP/RTCP non-mux issues with IdP as described in Issue #114
Added getParameter methods to RTCRtpSender and RTCRtpReceiver objects, as described in Issue #116
Added layering diagrams as requested in Issue #117
Added a typedef for payload type, as described in Issue #118
Moved onerror from the RTCIceTransport object to the RTCIceListener object as described in Issue #121
Added explanation of Voice Activity Detection (VAD), responding to Issue #129
Clarified the meaning of maxTemporalLayers and maxSpatialLayers, as noted in Issue #130
Added RFC 6051 to the list of header extensions and removed RFC 5450, as noted in Issue #131
Addressed ICE terminology issues, as described in Issue #132
Separated references into Normative and Informative, as noted in Issue #133
aboba commented Jul 21, 2014

I believe the resolution is to add restart() to the RTCIceTransportController, no?

aboba commented Jul 30, 2014

Given the need to support rollback in SIP, I don't believe that a restart() method could be used if it were available. Instead, you'd need to create a new RTCIceTransport object, and then start using it (along with calling stop() on the old RTCIceTransport object) if and only if the restart transaction completed. If the transaction failed, the old RTCIceTransport object would remain in use. If instead restart() was called, and the transaction failed, you'd be stuck since restart() can't be reverted.

aboba commented Aug 6, 2014
@robin-raymond robin-raymond pushed a commit to robin-raymond/ortc that referenced this issue Aug 19, 2014
Robin Raymond Clarification of the ICE restart issue, as noted in:

Clarified onerror usage in sender and receiver objects, as noted in:

Clarified SST-MS capability issue noted in:

Clarification of send() and receive() usage as noted in:

Changed ICE state diagram as noted in:

Removed getParameters methods and changed send() method as noted in:

Changed definition of framerateScale and resolutionScale as noted in:

Substituted "muxId" for the "receiverId" as noted in:

Clarified the setting of track.kind as described in:

Added SSRC conflict event to the RTCRtpSender, as described in:

Addressed the "end of candidates" issues noted in:
@aboba aboba closed this Aug 19, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment