Open3
libp2p-webrtc-調査
目的
ゲーム開発に適用可能かlibp2pを調査する.
本Scrapでは,WebRTCに焦点を置く.
libp2pにおけるWebRTC
-
WebRTC
-
WebRTC Direct
- TLS証明書なしで接続可能
-
HOL Blocking
- 先頭データが何かしらの形で処理されない場合,後続データも処理されなくなる
- TCPやメッセージ指向のシステムで問題になりうる
- WebRTCのDataChannelは、特に信頼性モードかつ順序保証モードの場合、メッセージ指向であるため,HOL Blockingが起きやすい.
メッセージサイズを慎重に設計する必要がある. - SCTP
- NATにおいて知らないパケットは破棄される可能性が高いが、UDPの上に順番制御を順番に設定できるようにしている
- libp2pはbyte指向なので影響を軽減できる
-
デフォルトの設定
- WebRTCでNegotiationされる
- 順序ありのDataChannel
-
TURNサーバーは不要
- Cirtuit Relay v2を使用し,中央サーバーに依存しないP2P Networkを構築できる
参考
WebRTCの特徴
- DTLSの上にSCTPが構築され,その上にDataChannelが実装されている
- SCTPには本来,Heartbeat Chunkという機能があり,生存確認を行う.これにより通信の切断の検知が行える.
- しかし,DataChannel上のSCTPでは,この機能は利用されていない.よって切断を検知するまでに数分以上かかる場合がある.
AutoNat
- アドレスごとの到達可能かどうかの確認
- 到達可能かどうかの検証機能
- 増幅攻撃 (Amplification Attack) 対策
- 増幅攻撃とは,DDos攻撃の一種.
- 大量のトラフィックを発生させる