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

invalid ice state transition from checking to disconnected? #332

Closed
fippo opened this Issue Jan 7, 2016 · 10 comments

Comments

Projects
None yet
5 participants
@fippo
Copy link
Contributor

fippo commented Jan 7, 2016

the (non-normative) diagram for ice state transitions shows a transition from 'checking' to 'disconnected' (also in the opposite direction) which is not shown in in the equivalent peerconnection diagram.

That looks like a bug, I can't think of a way how the checking->disconnected transition would happen. And disconnected to checking in the case of an ice-restart would happen via new.

(note: even though both diagrams look quite different otherwise that seems ok since in the ORTC version there is an annotation that 'new' is reachable from most other states, reducing the visual clutter)

@aboba

This comment has been minimized.

Copy link
Contributor

aboba commented Jan 7, 2016

The transition from 'disconnected' to 'checking' can occur if a new interface comes up, thereby providing new candidates (and pairs) to check.

As for the transition from 'checking' to 'disconnected', in WebRTC 1.0, it can only occur via the 'connected' or 'failed' states, not directly. Thinking....

@pthatcherg

This comment has been minimized.

Copy link

pthatcherg commented Jan 8, 2016

If it can go from "disconnected" to "checking" it can go back to
"disconnected" from "checking", can't it? For example:

  • Wifi goes away => disconnected
  • 3G candidates gathered => checking
  • 3G candidates gathered so far all fail => disconnected (still gathering,
    so not failed)

On Thu, Jan 7, 2016 at 3:52 PM, aboba notifications@github.com wrote:

The transition from 'disconnected' to 'checking' can occur if a new
interface comes up, thereby providing new candidates (and pairs) to check.

As for the transition from 'checking' to 'disconnected', in WebRTC 1.0, it
can only occur via the 'connected' or 'failed' states, not directly.
Thinking....


Reply to this email directly or view it on GitHub
#332 (comment).

@aboba

This comment has been minimized.

Copy link
Contributor

aboba commented Jan 8, 2016

Yes. So shouldn't the WebRTC 1.0 and ORTC ICE state diagrams be the same?

@aboba

This comment has been minimized.

Copy link
Contributor

aboba commented Jan 8, 2016

Submitted a PR to provide examples of RTCIceTransportState transitions.

aboba added a commit that referenced this issue Jan 8, 2016

Add change lot entry
Added change long entry for Issue #332
@aboba

This comment has been minimized.

Copy link
Contributor

aboba commented Jan 12, 2016

Discussion on the same issue in WEBRTC WG: w3c/webrtc-pc#457

@aboba

This comment has been minimized.

Copy link
Contributor

aboba commented Jan 15, 2016

Slides prepared for the January 14, 2016 virtual interim of the WEBRTC WG on this topic:
https://www.w3.org/2011/04/webrtc/wiki/images/f/f4/WebRTCWG-2016-01-14.pdf

Unfortunately we ran out of time before we got to those slides :(

@aboba

This comment has been minimized.

Copy link
Contributor

aboba commented Feb 29, 2016

@ibc

This comment has been minimized.

Copy link
Contributor

ibc commented Mar 1, 2016

PSD page 21:

  • checking: ICE agent is checking candidate pairs, and has never been connected.
  • connected: ICE agent is connected (may or may not be checking other pairs).
  • disconnected: ICE agent is not currently connected, and was either previously connected or is not
    checking.

+1000 for this

@robin-raymond

This comment has been minimized.

Copy link
Contributor

robin-raymond commented Mar 1, 2016

This is my state table I am using:
ice transport state table

@aboba

This comment has been minimized.

Copy link
Contributor

aboba commented May 10, 2016

Now that RTCIceTransportState also exists in WebRTC 1.0, and RTCIceConnectionState has been redefined based on that, the ICE transport state definitions (and transitions) in WebRTC 1.0 and ORTC are in the process of converging. The major outstanding issue appears to be the effect of ICE consent check failures on the states and transitions.

WebRTC 1.0 Issue 517 relates to state transitions due to ICE consent check failures:
w3c/webrtc-pc#517
The following PR has been submitted to address it:
w3c/webrtc-pc#611

Based on the resolution proposed in that PR, we are making progress on a proposed WebRTC 1.0 ICE transport state transition diagram:
w3c/webrtc-pc#457

Diagram:
https://cloud.githubusercontent.com/assets/808811/15027597/786a296a-11f9-11e6-8094-39ffb7cf49ed.png

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment