Trickle ICE Incremental Provisioning of Candidates for the Interactive Connectivity Establishment (ICE) Protocol draft-ivov-mmusic-trickle-ice Eric Rescorla Justin Uberti Emil Ivov draft-ivov-mmusic-trickle-ice 1/16 E. Rescorla, J. Uberti, E. Ivov
Reminder: Vanilla ICE STUN Alice Bob STUN Server Server disco o ff er and candidates disco answer and candidates … connectivity checks … Vanilla ICE as per RFC 5245 2/16
Reminder: Vanilla ICE vs Trickle ICE STUN STUN STUN STUN Alice Bob Alice Bob Server Server Server Server O/A with host or no cands disco disco disco o ff er and … candidates more cands & conn checks … disco answer and candidates … connectivity checks … Vanilla ICE as per RFC 5245 Trickle ICE 3/16
One Main Remaining Issue How do we handle candidate unfreezing? draft-ivov-mmusic-trickle-ice 4/16 E. Rescorla, J. Uberti, E. Ivov
Unfreezing Pairs Audio.RTP: 5000 Audio.RTCP: 5001 Alice Host: A1 Alice STUN: A2 Video.RTP: 5002 Video.RTCP: 5003 Bob Host: B1 Bob STUN: B2 5/16
Unfreezing Pairs Audio.RTP: 5000 Audio.RTCP: 5001 Alice Host: A1 Alice STUN: A2 Video.RTP: 5002 Video.RTCP: 5003 Bob Host: B1 Bob STUN: B2 A’s lists Host/Host Host/Srflx Srflx/Host Srflx/Srflx Str.Cmp Foundation A1B1 Foundation A1B2 Foundation A2B1 Foundation A2B2 Audio.1 A1:5000/B1:5000 A1:5000/B2:5000 A2:5000/B1:5000 A2:5000/B2:5000 CheckList.1 Audio.2 A1:5001/B1:5001 A1:5001/B2:5001 A2:5001/B1:5001 A2:5001/B2:5001 Video.1 A1:5002/B1:5002 A1:5002/B2:5002 A2:5002/B1:5002 A2:5002/B2:5002 CheckList.2 Video.2 A1:5003/B1:5003 A1:5003/B2:5003 A2:5003/B1:5003 A2:5003/B2:5003 B’s lists Host/Host Host/Srflx Srflx/Host Srflx/Srflx Str.Cmp Foundation B1A1 Foundation B1A2 Foundation B2A1 Foundation B2A2 Audio.1 B1:5000/A1:5000 B1:5000/A2:5000 B2:5000/A1:5000 B2:5000/A2:5000 CheckList.1 Audio.2 B1:5001/A1:5001 B1:5001/A2:5001 B2:5001/A1:5001 B2:5001/A2:5001 Video.1 B1:5002/A1:5002 B1:5002/A2:5002 B2:5002/A1:5002 B2:5002/A2:5002 CheckList.2 Video.2 B1:5003/A1:5003 B1:5003/A2:5003 B2:5003/A1:5003 B2:5003/A2:5003 6/16
Initial Unfreeze Audio.RTP: 5000 Audio.RTCP: 5001 Alice Host: A1 Alice STUN: A2 Video.RTP: 5002 Video.RTCP: 5003 Bob Host: B1 Bob STUN: B2 A’s lists Host/Host Host/Srflx Srflx/Host Srflx/Srflx Str.Cmp Foundation A1B1 Foundation A1B2 Foundation A2B1 Foundation A2B2 Audio.1 A1:5000/B1:5000 A1:5000/B2:5000 A2:5000/B1:5000 A2:5000/B2:5000 CheckList.1 Audio.2 A1:5001/B1:5001 A1:5001/B2:5001 A2:5001/B1:5001 A2:5001/B2:5001 Video.1 A1:5002/B1:5002 A1:5002/B2:5002 A2:5002/B1:5002 A2:5002/B2:5002 CheckList.2 Video.2 A1:5003/B1:5003 A1:5003/B2:5003 A2:5003/B1:5003 A2:5003/B2:5003 B’s lists Host/Host Host/Srflx Srflx/Host Srflx/Srflx Str.Cmp Foundation B1A1 Foundation B1A2 Foundation B2A1 Foundation B2A2 Audio.1 B1:5000/A1:5000 B1:5000/A2:5000 B2:5000/A1:5000 B2:5000/A2:5000 CheckList.1 Audio.2 B1:5001/A1:5001 B1:5001/A2:5001 B2:5001/A1:5001 B2:5001/A2:5001 Video.1 B1:5002/A1:5002 B1:5002/A2:5002 B2:5002/A1:5002 B2:5002/A2:5002 CheckList.2 Video.2 B1:5003/A1:5003 B1:5003/A2:5003 B2:5003/A1:5003 B2:5003/A2:5003 7/16
Check List Unfreeze Audio.RTP: 5000 Audio.RTCP: 5001 Alice Host: A1 Alice STUN: A2 Video.RTP: 5002 Video.RTCP: 5003 Bob Host: B1 Bob STUN: B2 A’s lists Host/Host Host/Srflx Srflx/Host Srflx/Srflx Str.Cmp Foundation A1B1 Foundation A1B2 Foundation A2B1 Foundation A2B2 Audio.1 A1:5000/B1:5000 A1:5000/B2:5000 A2:5000/B1:5000 A2:5000/B2:5000 CheckList.1 Audio.2 A1:5001/B1:5001 A1:5001/B2:5001 A2:5001/B1:5001 A2:5001/B2:5001 Video.1 A1:5002/B1:5002 A1:5002/B2:5002 A2:5002/B1:5002 A2:5002/B2:5002 CheckList.2 Video.2 A1:5003/B1:5003 A1:5003/B2:5003 A2:5003/B1:5003 A2:5003/B2:5003 B’s lists Host/Host Host/Srflx Srflx/Host Srflx/Srflx Str.Cmp Foundation B1A1 Foundation B1A2 Foundation B2A1 Foundation B2A2 Audio.1 B1:5000/A1:5000 B1:5000/A2:5000 B2:5000/A1:5000 B2:5000/A2:5000 CheckList.1 Audio.2 B1:5001/A1:5001 B1:5001/A2:5001 B2:5001/A1:5001 B2:5001/A2:5001 Video.1 B1:5002/A1:5002 B1:5002/A2:5002 B2:5002/A1:5002 B2:5002/A2:5002 CheckList.2 Video.2 B1:5003/A1:5003 B1:5003/A2:5003 B2:5003/A1:5003 B2:5003/A2:5003 8/16
Foundation Unfreeze, All Lists Audio.RTP: 5000 Audio.RTCP: 5001 Alice Host: A1 Alice STUN: A2 Video.RTP: 5002 Video.RTCP: 5003 Bob Host: B1 Bob STUN: B2 A’s lists Host/Host Host/Srflx Srflx/Host Srflx/Srflx Str.Cmp Foundation A1B1 Foundation A1B2 Foundation A2B1 Foundation A2B2 Audio.1 A1:5000/B1:5000 A1:5000/B2:5000 A2:5000/B1:5000 A2:5000/B2:5000 CheckList.1 Audio.2 A1:5001/B1:5001 A1:5001/B2:5001 A2:5001/B1:5001 A2:5001/B2:5001 Video.1 A1:5002/B1:5002 A1:5002/B2:5002 A2:5002/B1:5002 A2:5002/B2:5002 CheckList.2 Video.2 A1:5003/B1:5003 A1:5003/B2:5003 A2:5003/B1:5003 A2:5003/B2:5003 B’s lists Host/Host Host/Srflx Srflx/Host Srflx/Srflx Str.Cmp Foundation B1A1 Foundation B1A2 Foundation B2A1 Foundation B2A2 Audio.1 B1:5000/A1:5000 B1:5000/A2:5000 B2:5000/A1:5000 B2:5000/A2:5000 CheckList.1 Audio.2 B1:5001/A1:5001 B1:5001/A2:5001 B2:5001/A1:5001 B2:5001/A2:5001 Video.1 B1:5002/A1:5002 B1:5002/A2:5002 B2:5002/A1:5002 B2:5002/A2:5002 CheckList.2 Video.2 B1:5003/A1:5003 B1:5003/A2:5003 B2:5003/A1:5003 B2:5003/A2:5003 9/16
Unfreezing Pairs with Trickle Audio.RTP: 5000 Audio.RTCP: 5001 Alice Host: A1 Alice STUN: A2 Video.RTP: 5002 Video.RTCP: 5003 Bob Host: B1 Bob STUN: B2 A’s lists Host/Host Host/Srflx Srflx/Host Srflx/Srflx Str.Cmp Foundation A1B1 Foundation A1B2 Foundation A2B1 Foundation A2B2 Audio.1 A1:5000/B1:5000 A2:5000 A2:5000 CheckList.1 Audio.2 A1:5001/B1:5001 A1:5001/B2:5001 Video.1 A1:5002/B1:5002 CheckList.2 Video.2 A1:5003/B1:5003 B’s lists Host/Host Host/Srflx Srflx/Host Srflx/Srflx Str.Cmp Foundation B1A1 Foundation B1A2 Foundation B2A1 Foundation B2A2 Audio.1 B1:5000/A1:5000 B1:5000/A2:5000 CheckList.1 Audio.2 B1:5001/A1:5001 B2:5001 B2:5001 Video.1 B1:5002/A1:5002 CheckList.2 Video.2 B1:5003/A1:5003 10/16
Unfreezing Pairs with Trickle: Failure Audio.RTP: 5000 Audio.RTCP: 5001 Alice Host: A1 Alice STUN: A2 Video.RTP: 5002 Video.RTCP: 5003 Bob Host: B1 Bob STUN: B2 A’s lists Host/Host Host/Srflx Srflx/Host Srflx/Srflx Str.Cmp Foundation A1B1 Foundation A1B2 Foundation A2B1 Foundation A2B2 Audio.1 A1:5000/B1:5000 A2:5000 A2:5000 CheckList.1 Audio.2 A1:5001/B1:5001 A1:5001/B2:5001 Video.1 A1:5002/B1:5002 CheckList.2 Video.2 A1:5003/B1:5003 B’s lists Host/Host Host/Srflx Srflx/Host Srflx/Srflx Str.Cmp Foundation B1A1 Foundation B1A2 Foundation B2A1 Foundation B2A2 Audio.1 B1:5000/A1:5000 B1:5000/A2:5000 CheckList.1 Audio.2 B1:5001/A1:5001 B2:5001 B2:5001 Video.1 B1:5002/A1:5002 CheckList.2 Video.2 B1:5003/A1:5003 11/16
Two ways to address this • We forget about freezing (Chrome, Firefox) Slim(?) chance of timeouts if STUN & sign lag • We preserve component order May slow delay ICE processing a bit in some cases draft-ivov-mmusic-trickle-ice 12/16 E. Rescorla, J. Uberti, E. Ivov
Now to the fun stu ff : Trickle ICE with SIP draft-ivov-mmusic-trickle-ice-sip Enrico Marocco Christer Holmberg Emil Ivov 13/16
Vague consensus on the following: STUN /TURN Alice Bob STUN/TURN Server Server disco INVITE (Offer) 180 (Answer) 180 (Answer) disco … PRACK / INFO (more cands / end-of-candidates) more cands & conn checks 200 OK (Answer from 180) 5245 SIP re-INVITE / 200 OK media 14/16
Summary of trickle ICE for SIP • PRACK is optional • Can be replaced with INFO: end-of-candidates • Candidates are trickled with INFOs Cumulatively or sequentially? • Cumulative: allows not to care for INFO delivery but • Sequential: easier mapping on top of current WebRTC API 15/16
application/sdpfrag INFO sip:alice@example.com SIP/2.0 ... Info-Package: trickle-ice Content-type: application/sdpfrag Content-Disposition: Info-Package Content-length: ... a=mid:1 a=candidate:1 1 UDP 1658497328 192.168.100.33 5000 typ host a=candidate:2 1 UDP 1658497328 96.1.2.3 5000 typ srflx a=mid:2 a=candidate:2 1 UDP 1658497328 96.1.2.3 5002 typ srflx a=end-of-candidates Content type is application/sdpfrag defined in draft-ivov-mmusic-sdpfrag (help needed) 16/16
Recommend
More recommend