Trickle ICE
Trickle ICE is an optimization of the ICE specification for NAT traversal.
The main bottleneck in ICE is the time it takes to start initiating connectivity checks – it requires collecting all ICE candidates in advance, which in turn means interacting with external servers (STUN and TURN servers). This takes several round trips.
Trickle ICE makes the whole process parallel by having the ability to send single or multiple ICE candidates when they become available without waiting for the collection of all candidates.
About
일반적으로 각 peer들은 ICE 후보들을 수집해서 그 목록을 완성한 후 한꺼번에 교환하게 된다. 하지만 이러한 방식은 SDP의 제안 응답 모델과 맞물리면서 단점으로 작용한다. 후보를 모으는 데에도 시간이 오래 걸리고, 그 과정에서 네트워크 환경에 따라 지연이 될 수 있다. 또, 한 쪽 peer의 ICE 후보 수집 작업이 완료되어야만 다른 peer가 ICE 후보를 모을 수 있기 때문에 비효율적이라고 한다. 이러한 비효율적인 후보 교환 작업을 병렬 프로세스로 수행할 수 있게 만드는 것이 바로 Trickle ICE다. 두 개의 peer들이 ICE 후보를 수집하고 교환하는 과정을 동기적 프로세스에서 비동기적 프로세스로 만드는 기술이라고 할 수 있다.
즉, Trickle 옵션이 활성화된 ICE 프레임워크는 각 peer에서 ICE 후보를 찾아내는 그 즉시 교환을 시작한다. 그래서 상호 간 연결 가능한 ICE를 보다 빨리 찾아낼 수 있다. 이러한 옵션 덕분에 ICE 프레임워크는 피어 간의 연결 상태를 체크함과 동시에 연결에 걸리는 시간을 최적화할 수 있다. 결론적으로 Trickle 옵션은 가능하다면 활성화하는 게 좋다고 한다.
APIs
- RTCPeerConnection.canTrickleIceCandidates
Online Tools
- Trickle ICE
- https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
- Local download - Trickle-ice-f40401d.zip
See also
Favorite site
- [추천] Trickle ICE - WebRTC Glossary - 동영상
- [추천] WebRTC samples Trickle ICE (Trickle ICE 연결 테스트)
- RTCPeerConnection.canTrickleIceCandidates - Web API | MDN
- draft-ietf-mmusic-trickle-ice-02 - Trickle ICE: Incremental Provisioning of Candidates for the Interactive Connectivity Establishment (ICE) Protocol