HTTP上でL2VPNを実現する Proxying Ethernet in HTTP について

Proxying Ethernet in HTTP』という仕様がGoogleのAlejandro R Sedeño氏から提出されています。これは、HTTP上でイーサネットフレームを送受信させるための仕様です。

背景として、IETFでは、Masque WGにおいてHTTPコネクション上で通信をトンネリングする仕組みの標準化を行っています。

すでに標準化が進められている、上記の仕様に続きイーサネットフレームを取り扱えるようにするというのが今回の提案です。ユースケースについては、L2VPNを実現するのに利用する例が挙げられています。

Proxying Ethernet in HTTPの概要

Proxying Ethernet in HTTP』では、"RFC 9297 HTTP Datagrams "を利用し、HTTP/1.1~HTTP/3でイーサネットフレームをトンネリング出来るようにします。

大まかな通信の流れは、"RFC 9298 Proxying UDP in HTTP" などと同様、拡張CONNECTメソッドでconnect-ethernetネゴシエーションし、HTTP DATAGRAMを利用しデータをトンネリングさせます。

通信例


draftに記載のL2VPN通信路の確立について説明します

  • HTTP/3コネクション確立時に、拡張CONNECT及びHTTP DATAGRAMを利用するためのSETTINGSパラメータを交換しておきます
  • クライアントは拡張CONNECTでconnect-ethernetの利用を要求します
  • Proxyはもしconnect-ethernetの通信を受け入れる場合は200で返します
  • その後は、HTTP DATAGRAMにイーサネットフレームを格納して送受信します。なお、DATAGRAMフレームには拡張CONNECTを使ったストリームと紐づけるためのコンテキストが付与されます