
SFU(選択的転送ユニット)
アーキテクチャ参加者間でストリームを効率的に転送するサーバーアーキテクチャ。
SFUとは?
SFU(Selective Forwarding Unit)は、ビデオおよび音声ストリームのスマートルーターとして機能するメディアサーバーアーキテクチャです。参加者が互いにストリームを直接送信するP2P接続や、すべてのストリームをデコードしてミックスするMCUサーバーとは異なり、SFUは各参加者からストリームを受信し、変更せずに他の参加者に選択的に転送します。
2025年時点で、SFUはWebRTCアプリケーションのデファクトスタンダードアーキテクチャとなっており、Zoom、Google Meet、Microsoft Teams、Discordなど、事実上すべての主要なビデオ会議プラットフォームで使用されています。
主な技術的特徴
- トランスコーディングなし:SFUはビデオストリームをデコード・再エンコードせず、エンコードされたパケットを単に転送。サーバー側のCPU使用率が非常に低い
- サイマルキャストサポート:各参加者が異なる品質レベルで複数バージョンのビデオを送信し、SFUが各受信者に最適な品質を選択
- アダプティブビットレート:各参加者のネットワーク状況をリアルタイムで監視し、自動的に品質を調整
SFUの利点
- 優れたスケーラビリティ:小規模会議から大規模カンファレンスまで美しくスケール
- 低いアップロード帯域幅:参加者はSFUに1度だけストリームをアップロード(P2Pの9分の1)
- 低レイテンシ:デコード/エンコードしないため、処理遅延は最小限(通常50-100ms追加)
- コスト効率:MCUの高価なCPUリソースと比較して、SFUは運用コストが比較的安い
SFU vs P2P vs MCU
- P2P:1対1または超小規模グループ(2-4人)に最適。コストゼロ、最大プライバシー
- SFU:ほとんどの用途(5-100人以上)に最適。コスト/パフォーマンスのバランスが良い、業界標準
- MCU:超大規模ブロードキャスト、レガシーシステム、帯域幅保証に最適。高コスト、追加レイテンシ
代表的なSFU実装
- mediasoup:強力なNode.js SFU、高い柔軟性とパフォーマンス
- Janus:機能豊富なCベースSFU、極めて効率的
- LiveKit:モダンなGoベースSFU、優れた開発者エクスペリエンス
- Cloudflare Calls:グローバルエッジ展開のマネージドSFUサービス