44
33

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-09-09

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

44
33
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
44
33

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?