Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ビデオ通話が繋がる0.2秒で何が起きているのか

 ビデオ通話が繋がる0.2秒で何が起きているのか

MIERUNE BBQ #19 で使用した資料です。

Avatar for Miyamoto Naoyuki

Miyamoto Naoyuki

July 15, 2026

More Decks by Miyamoto Naoyuki

Other Decks in Programming

Transcript

  1. $ cat profile.service [Unit] Description=Self Introduction [Profile] Name="Miyamoto Naoyuki" Twitter="@Msprzk"

    Affiliation="北海道情報大学2年" Interest="Network",”Security”,”WebRTC”
  2. ※1: Zoomは独自実装(Not WebRTC)が基本、しかし、Zoom Video SDKにはWebRTC Modeというものもある. (https://developers.zoom.us/docs/video-sdk/web/) WebRTCとは - リアルタイム通信技術

    - Zoom※1, Discord, オンラインゲームなどで 使われている - 基本的に、P2P前提※2 ※2: もちろん、P2Pだけではリアルワールドのサービスは成り立たないので、サーバクライアントモデルをできるようにSFUと 呼ばれるものが存在したりする
  3. 1: ページを開く Google MeetをWebアプリとして読み込む 2: 参加前の準備をする カメラ・マイクを使える状態にする 3: 接続条件を交換する 音声・映像・暗号化の条件を決める

    全体の流れ 4: 通れる経路を探す 実際に通信できる道を選ぶ 5: 鍵を作って流す 音声・映像を暗号化して送る 6: 繋がった後 通話品質を測りながら調整し続ける
  4. $ dig +short meet.google.com (DNSで見る) meet.google.com → ページ表示の実測 142.251.23.102 142.251.23.113

    … $ curl -I -L https://meet.google.com HTTP/2 200 - dig: DNSに「この名前のIPは?」と聞く - curl: HTTPSでページにアクセスして応答を見る - HTTP/2 200: Meetのページが返ってきている
  5. request カメラ・マイクを使いたい 116.5ms audio request 387.8ms audio track result 1226.7ms

    video request 2663.4ms video track result Track result 使える音声・映像が返ってくる カメラ・マイクの実測 参加前に、ローカル側の準備は実際に走っている
  6. SDPは... 音声・映像だけの情報ではない 通話前の打ち合わせメモのようなもの - 音声を使うか - 映像を使うか - 使える圧縮形式 -

    ネットワーク接続の情報 - 暗号化に必要な情報 m=audio … m=video … m=application … webrtc-datachannel SDP(Session Description Protocol)に入るもの
  7. 実測では、使えそうな道が複数見えていた - UDP - TCP - 443 番ポート - Google

    側の候補 ここから1つを選ぶ 候補を集めて試す
  8. DTLS: Datagram Transport Layer Security UDP上で相手確認と鍵交換をする SRTP: Secure Real-time Transport

    Protocol その鍵で音声・映像を暗号化して送る DTLS / SRTP 通話開始できた!! めでたしめでたし...
  9. DTLS: Datagram Transport Layer Security UDP上で相手確認と鍵交換をする SRTP: Secure Real-time Transport

    Protocol その鍵で音声・映像を暗号化して送る DTLS / SRTP ではない!
  10. HTTP/3, QUIC curl -I -L https://meet.google.com HTTP/2 200 alt-svc: h3=":443";

    ma=2592000,h3-29=":443"; ma=2592000 ページ表示側では HTTP/3 の案内も返っていた。 おまけ