33
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Googleが開発してるらしい QUIC as a VPN (QBone)について (2020年更新)

QUIC as a VPN (QBone)について

(落ちの無い話です)

[追記]
IETF107 (2020/03/25)において、Googleでの利用例が共有されました。それについて、記事最後に追記しました。

QUIC as a VPN (QBone)

公式な情報はまだないが、GoogleがQUICコネクションをVPNとして利用する「QUIC as a VPN (QBone)」なるものを作ってるのは窺い知ることができる。

2017年6月に、GoogleでQUICの開発に携わっているIan Swett氏より「QUIC Messages」という提案書が出ている。この提案書の、提案背景の章で「QUIC as a VPN (QBone)」は登場する。

Today, most production QUIC traffic is HTTP. However, developers are actively working on running WebRTC over QUIC (aka Quartc) and using QUIC as a VPN(aka QBone) and there is a large amount of external interest in DNS over QUIC.

しかし、その詳細について語られることはなく月日は過ぎ去るのである。

(「QUIC Messages」の解説は「QUICの信頼性のないデータグラム拡張(MESSAGEフレーム/Datagramフレーム)」参照)

The MASQUE Protocol

話は少々それるが、2019年2月にはGoogleのDavid Schinazi氏より「The MASQUE Protocol」という、提案仕様が出ている。

詳細は「HTTP/3で接続してVPNとして使うMASQUEプロトコルの提案仕様」こちらの通りであり、IETFで目下議論中である。

Google quiche

GoogleのサーバやChromiumで利用されているHTTP/2, QUIC実装ライブラリの「quiche

この中に、2019年8月に qbone というディレクトリが登場した(コミット)。そう、「QUIC as a VPN (QBone)」である。

ALPN識別子として qbone を使うため、MASQUEとは異なるプロトコルであることがわかる (ユースケースがそもそも違いそう)。

ソースコードを眺めると、VPN的に、来たデータ(ICMP, UDP, TCPパケット)をQUICコネクション上でトンネリングさせていそうなことがわかる。

qbone_client_session.cc
void QboneClientSession::ProcessPacketFromNetwork(QuicStringPiece packet) {
  SendPacketToPeer(packet);
}
void QboneClientSession::ProcessPacketFromPeer(QuicStringPiece packet) {
  writer_->WritePacketToNetwork(packet.data(), packet.size());
}
qbone_server_session.cc
void QboneServerSession::ProcessPacketFromNetwork(QuicStringPiece packet) {
  string buffer = string(packet);
  processor_.ProcessPacket(&buffer,
                           QbonePacketProcessor::Direction::FROM_NETWORK);
}
void QboneServerSession::ProcessPacketFromPeer(QuicStringPiece packet) {
  string buffer = string(packet);
  processor_.ProcessPacket(&buffer,
                           QbonePacketProcessor::Direction::FROM_CLIENT);
}

まだツールとしては提供されてはいないが、そのうち触れるようになるかもしれない。。。

[追記] Googleでの利用例

IETF107(2020/03/25)の、MASQUE BoFのセッション内において、GoogleでのQBone利用事例について共有がありました。

170国以上に設置されたGoogle Global CacheノードをQBoneでつないでおり、100Gbps以上のトラフィックを処理しているとのこと。

ET6KdX5U4AEpIRF.jpg

ET6LMK8U8AES4n3.jpg

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
33
Help us understand the problem. What are the problem?