この記事は『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)で受信状態に入る
なお、再送制御などは、最初に確立したパスで補完することになる。