最近は BPF に興味があって色々調べたりしています。先日、その流れで BPF Compiler Collection (BCC) を眺めていたら、sslsnif というツールが含まれているのに気が付きました。これは OpenSSL や GnuTLS の関数呼び出しをキャプチャして、TLS 通信の内容をダンプして表示するものです。 この sslsnif の仕組みを応用すれば、プログラムに一切の変更を加えることなく、様々なサーバーやクライアントで HTTP/2 フレームをダンプできるのではと考えました。そこで今回は BPF を使って HTTP/2 フレームをダンプできるかを検証します。 セットアップ 今回は Ubuntu 16.04 上に BCC をインストールし、Python を使って HTTP/2 フレームをダンプするツールを実装します。Python をフロントエンドに選択したのは、高品
![BPF を使って HTTP/2 フレームをダンプする - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/9e5e081b5904c4d6ede35c96d71fc5099d7c8ec4/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Fadvent-calendar-ogp-background-7940cd1c8db80a7ec40711d90f43539e.jpg%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9QlBGJTIwJUUzJTgyJTkyJUU0JUJEJUJGJUUzJTgxJUEzJUUzJTgxJUE2JTIwSFRUUCUyRjIlMjAlRTMlODMlOTUlRTMlODMlQUMlRTMlODMlQkMlRTMlODMlQTAlRTMlODIlOTIlRTMlODMlODAlRTMlODMlQjMlRTMlODMlOTclRTMlODElOTklRTMlODIlOEImdHh0LWFsaWduPWxlZnQlMkN0b3AmdHh0LWNvbG9yPSUyMzNBM0MzQyZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZzPTE4MTEwODExOTliMTRkYzFlMGFkZTY5NWY3OGI3NGQx%26mark-x%3D120%26mark-y%3D96%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9OTcyJnR4dD0lNDBzdW1tZXJ3aW5kJnR4dC1jb2xvcj0lMjMzQTNDM0MmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1jNTgyMmQ0ZTExYTI1MTBhZTBjMzI3YjcxYWVkNGQ4Ng%26blend-x%3D120%26blend-y%3D500%26blend-mode%3Dnormal%26s%3Dcac35dec85e5acb17fcb6fcd25cf423e)