jitsi/ice4j

Implement WebRTC IP Mode 3 support

Closed this issue · 9 comments

This is currently a pre-requisite for Safari 11 support. If it is in-fact already supported, then close this ticket, but as far as I can see, it is not.

Link: https://tools.ietf.org/html/draft-ietf-rtcweb-ip-handling-03

Mode 3: Default route only: This is the the same as Mode 2, except that the associated private address MUST NOT be provided. This may cause traffic to hairpin through a NAT, fall back to the application TURN server, or fail altogether, with resulting quality implications.

Additional reference: https://webrtchacks.com/safari-webrtc/

ice4j is an ICE library, not a WebRTC endpoint. Can you please elaborate on how this is a pre-requisite for Safari support?

Using the ice4j library in an application wherein an endpoint is Safari 11 will fail, based on the linked information.

Please elaborate -- why would it fail? How do you expect ICE to behave?

The mode 3 option states that a private IP "MUST NOT" be provided. When candidates are collected there is no private IP filtering that I'm aware of in ice4j? Maybe an option should be enabled for this scenario?

How does this affect Safari support?

Safari 11 has implemented mode 3.

Ice4j isn't running in Safari (or any other browser for the matter). And I don't see why the Videobridge would provide private IPs to the connecting clients. If it does, it's most likely not correctly configured.

I never said that ice4j runs in a browser; I'm stating that a browser can be an end-point. An SFU/MCU using ice4j could and does provide candidates which include private network IP addresses. In the future, when an end-point is Safari 11 or any other browser enforcing strict mode 3 handling, those connections will fail.

Including extra candidates will not make ICE less likely to succeed.

See here for documentation on how to block certain addresses. I don't know if it is enough to accomplish what the draft describes (but again, I don't see why you would want to do this).
https://github.com/jitsi/ice4j/blob/master/doc/configuration.md