最近は BPF に興味があって色々調べたりしています。先日、その流れで BPF Compiler Collection (BCC) を眺めていたら、sslsnif というツールが含まれているのに気が付きました。これは OpenSSL や GnuTLS の関数呼び出しをキャプチャして、TLS 通信の内容をダンプして表示するものです。 この sslsnif の仕組みを応用すれば、プログラムに一切の変更を加えることなく、様々なサーバーやクライアントで HTTP/2 フレームをダンプできるのではと考えました。そこで今回は BPF を使って HTTP/2 フレームをダンプできるかを検証します。 セットアップ 今回は Ubuntu 16.04 上に BCC をインストールし、Python を使って HTTP/2 フレームをダンプするツールを実装します。Python をフロントエンドに選択したのは、高品