Closed Bug 1698972 Opened 5 years ago Closed 5 years ago

ICE pair state transition from FAILED to WAITING when no Triggered Check was sent

Categories

(Core :: WebRTC: Networking, defect)

Firefox 86
defect

Tracking

()

RESOLVED INVALID

People

(Reporter: michalkasa, Unassigned)

Details

Attachments

(1 file, 1 obsolete file)

Attached file log_filtered.txt (obsolete) —

User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36

Steps to reproduce:

In my scenario I have a webrtc peer A running on Firefox that have only one local ICE candidate(privateIP_A), and a remote peer B that have only one ICE candidate (publicIP_B) with Lite ICE implementation (FreeSWITCH).
Peer A receives a candidate from peer B, and forms one pair (privateIP_A/publicIP_B) to start connectivity check. During connectivity check as peer A is behind NAT, it forms a new candidate type prflx and a new pair (publicIP_A/publicIP_B), and set first pair to state FAILED.

Actual results:

Connectivity check on a prflx pair (publicIP_A/publicIP_B) ends with state SUCCEED but suddenly checks on a first pair restart.
Firefox mistakenly log that it received a STUN check on a failed pair which is not possible as Lite ICE agent did not generate any checks.

Expected results:

Once firefox marked pair as FAILED it should not resurrect it if no triggered check was sent from peer B.

Component: Untriaged → WebRTC
Product: Firefox → Core

This looks webrtc::networking. Byron, do you have time to take a quick look?

Component: WebRTC → WebRTC: Networking
Flags: needinfo?(docfaraday)
Summary: ICE candidate state transition from FAILED to WAITING when no Triggered Check was sent → ICE pair state transition from FAILED to WAITING when no Triggered Check was sent
Comment on attachment 9209572 [details] log_filtered.txt >setting pair to state FROZEN: CavB|IP4:192.168.0.10:57453/UDP|IP4:37.130.6.14:25900/UDP(host(IP4:192.168.0.10:57453/UDP)|candidate:9596795817 1 udp >setting pair to state WAITING: CavB|IP4:192.168.0.10:57453/UDP|IP4:37.130.6.14:25900/UDP(host(IP4:192.168.0.10:57453/UDP)|candidate:9596795817 1 udp >setting pair to state IN_PROGRESS: CavB|IP4:192.168.0.10:57453/UDP|IP4:37.130.6.14:25900/UDP(host(IP4:192.168.0.10:57453/UDP)|candidate:9596795817 1 udp >setting pair to state FROZEN: VJmr|IP4:178.235.185.121:7626/UDP|IP4:37.130.6.14:25900/UDP(prflx|candidate:9596795817 1 udp >setting pair to state FAILED: CavB|IP4:192.168.0.10:57453/UDP|IP4:37.130.6.14:25900/UDP(host(IP4:192.168.0.10:57453/UDP)|candidate:9596795817 1 udp >setting pair to state SUCCEEDED: VJmr|IP4:178.235.185.121:7626/UDP|IP4:37.130.6.14:25900/UDP(prflx|candidate:9596795817 1 udp >received STUN check on failed pair, resurrecting: CavB|IP4:192.168.0.10:57453/UDP|IP4:37.130.6.14:25900/UDP(host(IP4:192.168.0.10:57453/UDP)|candidate:9596795817 >setting pair to state WAITING: CavB|IP4:192.168.0.10:57453/UDP|IP4:37.130.6.14:25900/UDP(host(IP4:192.168.0.10:57453/UDP)|candidate:9596795817 1 udp >setting pair to state IN_PROGRESS: CavB|IP4:192.168.0.10:57453/UDP|IP4:37.130.6.14:25900/UDP(host(IP4:192.168.0.10:57453/UDP)|candidate:9596795817 1 udp >setting pair to state SUCCEEDED: VJmr|IP4:178.235.185.121:7626/UDP|IP4:37.130.6.14:25900/UDP(prflx|candidate:9596795817 1 udp
Attached file log_filtered_v2.txt
Attachment #9209572 - Attachment is obsolete: true

I'm going to need a packet capture to make absolutely sure we did not receive a STUN request from the other end here, because I do not see how we could have ended up in this code path otherwise.

Flags: needinfo?(docfaraday) → needinfo?(michalkasa)

Closer look to a pcap shown that there was triggered check sent some time later.
Unfortunately logs in about:webrtc have no timestamps which is some inconvenience in diagnostics, especially in complexity of ICE.

Flags: needinfo?(michalkasa)
Status: UNCONFIRMED → RESOLVED
Closed: 5 years ago
Resolution: --- → INVALID
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: