身の回りがずいぶんと春めいてきて、桜のみごろのピークが訪れていた。近所の堀川に、スロープを降りていくと、川のほとりに整備されたこじんまりした散歩道があることに最近気がついた。散歩道には、桜の木がちらほらとみえるので、毎日のように昼と夜に散歩していた。

Research

go-conntracer-bpf

In-Kernel In-Flow Aggregation by yuuki · Pull Request #11 · yuuki/go-conntracer-bpf

フロー単位でデータ転送量の統計情報を集約するBPFによるネットワークトレース実装。

trace tcp/udp message bytes for in-kernel-aggregation by yuuki · Pull Request #12 · yuuki/go-conntracer-bpf

複数のフローを単一のフローに集約する方式で、データ転送量をトレースできるようにした。

BPFのCコードは、基本的にbpf_printkなどを使ってprintデバッグするのが一般的だが、デバッグビルド時だけ予めマクロで定義したprintデバッグ文だけを出力するようにした。実は以前からやってたのだけど、makeのビルドキャッシュの関係でデバッグ文が埋め込まれなかったりして、整備するのがめんどくさくて放置していた。 make -Bでmakeのタイムスタンプ管理を外れて、すべてのターゲットをビルドすることに気づいたので、 make -B BPF_DEBUG=1などとして、デバッグビルドするようにした。

ところで、ライブラリ形式にしてるけど、ライブラリとして使いやすいとは思えないし、shawk にマージしてしまおうかな。

Linuxのリモート開発環境

リモートの Linux サーバを開発環境にする

クラウド事業者に在籍していることを生かして、さくらのクラウドをリモート開発環境として使うことにした。社員は、制約の範囲内でさくらのサービスを利用できるので、個人だと財布が厳しいところをカバーできる。

さくらのクラウドのインスタンスにUbuntu 20.10をインストールして、徐々にローカルのmacOSでやっていたことを移している。さくらのクラウドは、クライアントVPNが使えるので、サーバにグローバルIPアドレスを付与せずに、プライベートアドレスにssh接続して使う。サーバからNATごしにインターネット接続だけできるようにしておく。

手始めに、次のような移行作業をした。

そのうち、ローカルのターミナルはsshするだけにしたい。

BPF Performance Tools輪読会