goでp2pしよう!


goでWebRTCのDataChannelを使ってp2p接続をつなぐお話。

p2pって?

  • 自前で実装するのとっても大変。
  • 品質を引き上げるのに多様なノウハウが要求される。

そこでWebRTC

  • 高品質なp2p機能が備わってるよ!
  • オマケでビデオや音声もストリーミング配信できるよ!
  • 一つのコネクションで複数のストリームや後述のRTCDataChannelを繋げられるよ!

RTCDataChannel

  • WebRTCの機能の一つ
  • 双方向のデータ通信(Websocketっぽい)

プロトコルスタック

  • SCTP(RTCDataChannel)/SRTP(ビデオ・オーディオ)
  • DTLS
  • UDP

特徴

  • ネットワーク機器上では単にUDPにしか見えない。
  • SCTPは後発の優秀なマルチセッションプロトコル。(http2の低レイヤ版に近い)
  • DTLSはUDPでTLS通信するプロトコル。
  • つまり暗号化されてて、接続に参加していない第三者からの盗聴が困難。

まとめ