第3セッションは「QUICバージョン2」と題し、IIJイノベーションインスティテュート 技術研究所の山本和彦氏が登壇した。

  • IIJイノベーションインスティテュート 技術研究所 技術開発室 室長 山本和彦氏

QUICとはGoogleが開発し、IETFで標準化された汎用トランスポート層の通信プロトコルだ。要はTCPの代替を狙ったプロトコルだと言えるだろう。ChromeからGoogleサーバーへのコネクションで使用される他、Edge、Firefox、SafariなどでもQUICはサポートされている(HTTP/3として)。

2021年5月にバージョン1がRFC9000として標準化されたばかりなのに、すでにQUICバージョン2の策定が始まっているが、これはインターネットの硬直化を避けるためだと山本氏は指摘する。この「硬直化」とは、通信途中の機器が想定外の動作をすることで新しい機能の普及が困難になることで、例えばTLS 1.3でのハンドシェイク手順を短縮すると期待されていた「TCP Fast Open」(RFC7413)は、「知らないTCPオプションを削除する」「SYNパケットにデータが載っていた場合パケットを落とす」といった挙動を行う中間装置が多数あるために普及できなかったという例がある。

QUICでは硬直化を回避するため、ヘッダの保護やChromeマジック、そしてQUIC2バージョン2といった手法がとられた。この中でQUICバージョン2については、バージョン番号と暗号化の鍵が異なるだけで、実は仕様はバージョン1とほぼ同じだという。ではなぜバージョン番号を上げたかというと、1つにはバージョンアップの練習で、完全に新しいバージョンが来た時の練習となっている。2つめは硬直化の回避で、バージョン1の暗号鍵を決め打ちで復号することができないようになっているという。

山本氏はIIJの開発者blogにQUICに関する記事を掲載しているが、硬直化については新たに記事を作成して解説するとのこと。Webの新しいスタンダードについて学びたい方はぜひ確認していただきたい。