QUICでマルチキャスト通信を行うFlexicast QUICの提案仕様

この記事は『QUIC Advent Calendar 2024』 12/2の記事です。


インターネットで動画像の大規模配信が行われるようになって、トラフィックの増大が課題となっています。

そのような中で、QUICでマルチキャスト配信を行う議論は定期的に話題になります。マルチキャスト配信では、ルータ上で複製され必要な受信者に配送されるため、総トラフィック量を抑えることができます。

以前もマルチキャストQUICの提案仕様を紹介しました
asnokaze.hatenablog.com

今回は、Flexicast QUICという別の提案仕様が提出されているため簡単に紹介します

Flexicast QUIC

Flexicast QUICは『Flexicast QUIC: combining unicast and multicast in a single QUIC connection』としてIETFに提出されています。

アイディアとしては、QUICでマルチキャスト通信を行うというものですが、MultiPath-QUICをベースにしている点が新しいところです。

 
(引用: IETF 121スライド)

Flexicast QUICでは、各受信者とコネクションを張りながら別PATHとしてマルチキャスト通信を行います。このとき、マルチキャスト通信では共通の鍵を使えるようにしています。

通信の流れ

Flexicast QUICは以下の通信フローで、マルチキャスト通信の受信が行われる。
(なおIPレイヤの部分については、この仕様ではスコープ外である。つまり、マルチキャスト受信は行えるものとしてQUICレイヤが設計されている)


  • 通常のQUICハンドシェイクを行う。このときトランスポートパラメータとしてflexicast_supportを送信することで、本仕様のサポートを示す
  • サーバからFC_ANNOUNCEを送信し、マルチキャストの受信に必要なSource IP、Group IP、UDP Portなどを通知する
  • 受信者は、FC_STATE(JOIN)を送信し、マルチキャストフローの受信をサーバに通知する
  • サーバは、FC_KEYでマルチキャストフローを復号するためのマスターシークレットを送信する。
  • 受信者は、FC_STATE(LISTEN)で受信状態に入る

なお、再送制御などは、最初に確立したパスで補完することになる。

マルチキャストを受け取れない場合

Flexicast QUICではマルチキャストで送信数データは共通の鍵で暗号化する。仮に受信者がマルチキャストを受信できなかったとしても、同一のパケットをそのまま複数名に投げることでサーバ側の負荷を低減することが出来る。