Topik temu duga representatif

Temu Duga Umum: Bagaimanakah ICE, STUN, dan TURN Membina Sambungan WebRTC?

UmumSukar
Pasukan Editorial Offer.ccDiterbitkan Dikemas kini

Soalan

Dua pelayar mesti membina sambungan WebRTC merentasi rangkaian yang tidak diketahui. Terangkan bagaimana pengisyaratan, ICE, STUN, dan TURN bekerjasama, bagaimana pasangan calon dipilih, dan bagaimana anda mendiagnosis kegagalan ICE.

Gesaan dan skop

Dua pelayar memerlukan sambungan audio, video, atau data. Mereka mungkin berada pada LAN yang sama, di belakang NAT yang berbeza, atau pada rangkaian yang menyekat UDP. Terangkan laluan persediaan dan laluan kegagalan. Jawapan hendaklah membezakan saluran pengisyaratan yang bertukar perihalan daripada ICE, yang menemui dan menyemak laluan rangkaian yang mungkin.

Panduan temu duga WebRTC awam Credmark secara eksplisit meminta calon untuk menerangkan ICE dan peranan STUN serta TURN. RFC 8445 mentakrifkan prosedur calon, senarai semak, dan semakan ketersambungan ICE; WebRTC.org mendokumenkan cara sambungan rakan ke rakan (peer connection) menggunakan pelayan STUN atau TURN untuk mengumpul calon.

Perkara yang dinilai oleh penemu duga

  • Sama ada anda memisahkan pengisyaratan, pengumpulan calon, semakan ketersambungan, dan penyulitan media.
  • Sama ada anda menerangkan calon host, server-reflexive, dan relay tanpa menjanjikan bahawa STUN "membuka port".
  • Sama ada anda boleh mengimbangi kependaman laluan terus berbanding lebar jalur, privasi, dan kos operasi TURN.

Isyarat utama ialah garis masa bersebab: perihalan dan calon bergerak melalui pengisyaratan, semakan dijalankan ke atas pasangan calon, dan hanya selepas itu laluan yang dipilih membawa media atau data yang disulitkan.

Penjelasan sebelum menjawab

  1. Adakah pengisyaratan sudah tersedia? ICE tidak mentakrifkan pengangkutan pengisyaratan WebSocket, HTTP, atau pemesejan aplikasi anda.
  2. Adakah rakan sebaya (peers) berasaskan pelayar-ke-pelayar atau di belakang SFU? SFU mengubah topologi media tetapi masih memerlukan ketersambungan kepada setiap rakan sebaya.
  3. Adakah UDP dan TCP 443 dibenarkan? Dasar tembok api mengubah sama ada calon host, reflexive, atau relay boleh berjaya.
  4. Apakah sasaran kos? Geganti TURN membawa trafik, jadi kadar bit video dan peratusan geganti menentukan perbelanjaan.

Jawapan 30 saat

"Pengisyaratan bertukar tawaran (offer) dan jawapan (answer) SDP serta calon ICE yang dititiskan (trickled); ia adalah khusus untuk aplikasi. Setiap rakan sebaya mengumpul calon host, meminta alamat server-reflexive daripada STUN, dan memperoleh calon relay TURN apabila laluan terus mungkin gagal. ICE membentuk pasangan calon, menghantar semakan ketersambungan yang disahkan, dan mencalonkan pasangan yang berfungsi. DTLS kemudiannya mengesahkan dan memperoleh kunci untuk media atau data. STUN membantu menemui alamat yang dipetakan; TURN menyampaikan bait (bytes). NAT simetri, UDP yang disekat, atau tembok api yang ketat mungkin memaksa penggunaan TURN, jadi saya akan mengukur kejayaan pasangan calon, masa untuk disambungkan, nisbah geganti, dan kegagalan mengikut jenis rangkaian."

Jawapan mendalam langkah demi langkah

Langkah 1: Bertukar perihalan melalui pengisyaratan.

Pemanggil membuat tawaran yang mengandungi bahagian media dan kelayakan ICE, kemudian menghantarnya melalui perkhidmatan pengisyaratan aplikasi. Penerima panggilan mengembalikan jawapan. Pengisyaratan juga mengangkut calon yang dititiskan dan penanda tamat calon (end-of-candidates). Pelayan pengisyaratan tidak membawa media semata-mata kerana ia memajukan SDP.

Langkah 2: Mengumpul jenis calon.

Calon host mewakili antara muka tempatan. Permintaan pengikatan (binding request) STUN membolehkan rakan sebaya mengetahui calon server-reflexive yang mengandungi alamat dan port awam yang dipetakan yang diperhatikan oleh pelayan STUN tersebut. Peruntukan TURN mencipta calon relay; pelayan TURN menjadi titik akhir trafik. Keutamaan calon dan foundation membantu ICE membandingkan laluan, tetapi ia tidak menjamin bahawa pasangan dengan keutamaan lebih tinggi akan lulus.

Langkah 3: Membentuk dan menyemak pasangan calon.

Setiap pihak menggabungkan calon tempatan dan jauhnya. ICE menyusun pasangan ke dalam senarai semak, menghantar semakan ketersambungan STUN menggunakan kelayakan ICE, dan merekodkan respons. Semakan yang berjaya membuktikan bahawa trafik boleh melintasi pasangan tersebut pada saat itu; ia tidak membuktikan ketersediaan masa hadapan. Ejen pengawal mencalonkan pasangan yang sah, dan kedua-dua rakan sebaya menumpu padanya.

Langkah 4: Menjamin keselamatan laluan yang dipilih.

Selepas ketersambungan ICE, DTLS mengesahkan rakan sebaya dan memperoleh kunci. SRTP melindungi audio dan video; SCTP melalui DTLS membawa saluran data. ICE memilih kebolehcapaian; ia tidak menyulitkan muatan aplikasi. API pelayar mendedahkan keadaan sambungan dan statistik calon yang dipilih, yang penting untuk diagnosis.

Langkah 5: Menerangkan hasil NAT yang biasa.

Calon host pada LAN yang sama sering kali berfungsi. NAT kon penuh (full-cone) atau serasi mungkin membenarkan calon server-reflexive. Pemetaan NAT simetri, penapisan bergantung titik akhir, atau UDP yang disekat boleh menyebabkan calon terus gagal. TURN melalui UDP, TCP, atau TLS pada port 443 menyediakan sandaran geganti, dengan kependaman yang lebih tinggi, kos lebar jalur, dan permukaan kepercayaan yang lebih besar.

Langkah 6: Mendiagnosis kegagalan dengan bukti.

Log keadaan pengisyaratan, keadaan pengumpulan ICE, keadaan sambungan ICE, jenis calon, semakan pasangan, pasangan calon yang dipilih, RTT, kesegaran persetujuan (consent freshness), dan keluarga rangkaian. Gunakan matriks terkawal bagi rangkaian LAN, mudah alih, NAT simetri, VPN, dan rangkaian yang disekat UDP. Jika pengumpulan berjaya tetapi semakan gagal, periksa dasar tembok api dan NAT; jika hanya geganti yang berjaya, tingkatkan dasar laluan terus hanya selepas mengukur kos geganti dan kualiti panggilan.

Contoh jawapan berkualiti tinggi

"Saya akan menetapkan empat sempadan. Perkhidmatan pengisyaratan aplikasi bertukar SDP, kelayakan ICE, calon, dan end-of-candidates; ia bukan laluan media. Calon host menerangkan antara muka tempatan, STUN menghasilkan pemetaan server-reflexive, dan TURN memperuntukkan geganti. ICE menggabungkan calon tempatan dan jauh, menyemak pasangan dengan mesej STUN yang disahkan, dan mencalonkan pasangan. Selepas itu, DTLS memperoleh kunci, SRTP membawa audio/video, dan SCTP membawa saluran data.

Laluan terus host atau reflexive mempunyai kos yang lebih rendah dan selalunya kependaman yang lebih rendah, tetapi NAT simetri dan UDP yang disekat boleh memerlukan TURN. Saya akan mengukur pengumpulan calon, ralat semakan pasangan, masa untuk disambungkan, jenis calon yang dipilih, nisbah geganti, RTT, dan kehilangan persetujuan mengikut kelas rangkaian. Itu membezakan pengisyaratan yang hilang daripada kegagalan traversal NAT dan daripada panggilan yang disambungkan dengan laluan media yang lemah."

Kesilapan biasa

  • Memanggil STUN sebagai geganti → STUN melaporkan alamat yang dipetakan tetapi tidak membawa sesi → khaskan semantik geganti untuk TURN.
  • Mengatakan pengisyaratan membina media → pengisyaratan hanya mengangkut perihalan dan calon → jejaki semakan ICE kemudian dan pasangan yang dipilih.
  • Menganggap respons STUN yang berjaya membuktikan ketersambungan → pasangan rakan sebaya mungkin masih gagal disebabkan oleh penapisan → jalankan semakan ICE antara kedua-dua calon.
  • Menggunakan TURN untuk setiap panggilan tanpa mengukur → lebar jalur dan kependaman geganti boleh mendominasi kos dan kualiti → utamakan laluan terus dan pantau nisbah geganti.
  • Menganggap ICE sebagai penyulitan → ICE menyemak kebolehcapaian, bukan kerahsiaan → terangkan DTLS dan SRTP/SCTP secara berasingan.

Soalan susulan dan jawapan

Soalan susulan 1: Mengapakah STUN boleh berfungsi sedangkan sambungan rakan sebaya masih gagal?

STUN hanya menunjukkan bahawa pelayan memerhatikan pemetaan dari satu pihak. Rakan sebaya jauh mungkin tidak dapat menghantar ke pemetaan tersebut kerana NAT menggunakan pemetaan atau penapisan yang bergantung pada titik akhir, atau kerana tembok api menyekat protokol tersebut. ICE mesti menguji pasangan yang lengkap; permintaan STUN yang berjaya bukanlah jaminan laluan.

Soalan susulan 2: Bilakah sistem perlu memaksa penggunaan TURN?

Paksa atau utamakan TURN apabila dasar melarang alamat rakan sebaya, semakan terus berulang kali gagal, atau kelas rangkaian terkawal diketahui menyekat UDP. Gunakan kelayakan jangka pendek, geganti serantau, had kadar, dan penggera kapasiti. Memaksa TURN secara global menyembunyikan kemerosotan laluan terus dan meningkatkan kos lebar jalur, jadi jadikannya dasar yang jelas dengan pengukuran.

Soalan susulan 3: Panggilan bersambung tetapi video kurang memuaskan. Apakah yang anda periksa?

Semak pasangan calon yang dipilih dan sama ada ia adalah geganti, RTT, kehilangan paket, ketidakstabilan (jitter), kesegaran persetujuan, dan penyesuaian kadar bit. Bandingkan panggilan yang sama pada laluan terus dan geganti, periksa giliran CPU dan pengekod, serta periksa sama ada rantau SFU atau TURN jauh. Kejayaan ICE membuktikan kebolehcapaian; ia tidak membuktikan kapasiti yang mencukupi atau kualiti media.

Sumber awam

Soalan berkaitan