Closed4
Clubhouse リアルタイム配信の仕組みについて (妄想編)
Cloubhouse はすでに OSS である Janus Gateway に切り替えており Agora は使用していないようです
ライセンス
Creative Commons — 表示 - 非営利 - 改変禁止 4.0 国際 — CC BY-NC-ND 4.0
前提
- @suthio_さんがつぶやいていたのがきっかけ
- 招待してくれた @dmnlk さんに感謝
- DNS パケット見ただけ
- 他の方の解析は見ていない
- クライアント側の処理は知らない
- 気が向いたら更新している
著者
- 商用 WebRTC SFU 開発者
- WebRTC プロトコルスタック実装者
- End to End Encryption プロトコルスタック実装者
- IRIAM 配信サーバ設計者
妄想
- 求人にメディアサーバ系がないので SaaS だろうと思った
- 利用しているリアルタイム配信サービスは Agora.io
- DNS 見ただけ
- ap-japan.agora.io が見えた
- 東京リージョンに繋いでる
- もともと地理的にサーバにアクセスさせて、あとはプライベートネットワークでサーバ間を繋ぐというのが強みのサービス
- メディアルーター(転送するだけ) の仕組みを採用
- 音声合成をサーバでやるというのは Agora にはないはずなので採用していないはず
- そもそもサーバで音声合成はコストがかかるのと、いろいろ不便になるので今の時代採用する事はない
- モバイルで完結しているサービスなので WebRTC は利用せず独自仕様
- これは Agora 自体がアピールしている
- ただし WebRTC 互換性をアピールしてるので利用している音声コーデックは Opus だろう
- 利用しているサーバは Rackspace、 DigitalOcean、 Zenlayer などとのこと
- https://www.quora.com/What-servers-does-agora-io-use
- 少し古い情報なので、今はどうか知らない
- Agora 自体が P2P を採用していない
- 商用のリアルタイム重視のサービスでグループが前提になる場合、 P2P の採用はよほど理由がない限り採用しない
- P2P 利用した瞬間に TURN 関連が必要になるため二度手間
- 素直にサーバ経由にする
- Zoom だろうが Google Meet だろうが Signal だろうが Webex だろうが全部サーバ経由
- サーバ経由であればプッシュ型でも 1000 人以上の配信は可能
- 片方向のプッシュでの大規模配信は多段構成にしていれば万の単位でも可能
- Agora.io はプライベートネットワークでサーバを繋ぐのが強みの時点で多段前提だろう
- 双方向 N 人を M 人に配信するモデルは、よくあるパターン
- パネルディスカッションをイメージすれば良い
- 視聴側が双方向に切り替えるという仕組みだろうと予想
- そのため、視聴者(受信) が双方向(配信)側に切り替わるとき少しタイムラグがあると思う
雑感
- 配信部分が自力ではなく、利用時間単位で課金されるサービスを利用しているので利益を出すのが大変そう
- 小規模な間はいいが、中規模以降になると明らかに費用を圧迫してくる
- メディアストリームを主軸としている場合には Discord のように完全に自力か定額で無制限に利用できる商用製品で DataPacket のような転送量制限がないサーバを使うといった選択肢をとらないと今後ツライ
- Agora.io はデフォルトでは E2EE 対応していないので、話した音声全てが録音、解析されている可能性がある
- もちろん自前で暗号化してから Agora.io に渡すことはできる
- https://docs.agora.io/en/Agora Platform/security
- デフォルトで MLS や Signal などの E2EE (グループ) における鍵合意の仕組みが用意されていない
- 明示的に E2EE を行っているというのが見つけられなかったので自分が利用する事は絶対にない
- もちろん自前で暗号化してから Agora.io に渡すことはできる
- 自分が使いたいと思うのは E2EE が前提で ホワイトボードがある Clubhouse なのかもしれない、雑談しやすそう
- 独自プロトコルについて
- セキュリティ周りはしっかり検証しているだろうしブラウザ以外の部分では都合の良いプロトコルを採用するのは変ではない
- Discord だってブラウザ以外では暗号周りを変えたりと独自実装はある
蛇足
- 細かくパケットを分けると暗号化の負荷が上がるのでパケットを細かく分ければいいというものではない
- Clubhouse リアルタイム配信の仕組みについて (解説編)
このスクラップは2021/10/28にクローズされました