引き続き分散トレーシング関連の論文を紹介する。最初2つはDapper以前の古典とも言える論文。最後の1つはeBPFを用いて低いレイヤでのトレーシングをする最近の論文。

X-Trace: A Pervasive Network Tracing Framework

R. Fonseca, G. Porter, R. H. Katz, S. Shenker, and I. Stoica, “X-trace: A pervasive network tracing framework,” in Proceedings of the 4th USENIX Conference on Networked Systems Design & Implementation, ser. NSDI’07. USA: USENIX Association, 2007, p. 20.

概要
  • 異なるアプリケーションやネットワークレイヤー、管理者間で統一したメタデータを伝播することで、リクエストの流れを示すツリーを構築し、包括的なトレーシングをする提案
  • 当時のUC Berkeleyでネットワーク関連の研究してた人たち。今はそれぞれがいろんな分野ですごい業績を上げているっぽい(OpenFlow, RAID, Mesos, etc.)
感想
  • アノテーションベーストレーシングにおける最初期の論文なので問題設定が単純で、最近の大規模&複雑なものに比べて理解しやすかった
  • 一つの管理者による特定のサービスインフラで実装するのではなく、管理者の境界を超えてインターネット全体や全てのプロトコルでこれをサポートすることを目指しているようで壮大
  • 複数アプリケーション間でのトレーシング(pushNext)は今でも主流なのでわかるが、複数レイヤー間でのトレーシング(pushDown)をする必要性はあるのだろうか
    • 特にアプリケーション層プロトコル・TCP・IPにそれぞれメタデータ含めると、データが重複するしオーバーヘッドが大きくなる割にあまり有用性がないような
  • トレーシングは平常時のパフォーマンス診断に有用なものであって、Usage Senarioで示すような異常診断(特にDNS話)は他の方法でもできるような気がする
    • 各コンポーネントの異常は各管理者が発見したのち通知するはずで、トレースによって別管理者が勝手に先に知る必要はない
  • 管理者の境界を超えてトレーシングしたいという気持ちはわかるが、現実的には一部のみであってもトレースデータを他者に開示するのは難しいような気がする(セキュリティリスク・機密情報漏えいの点で)
    • 包括的にトレーシングしても個々でトレースデータ収集して分析するなら意味ないし
    • 今はどうなってるんやろ?OpenTelemetryはあるけど管理者間でトレースデータを共有する話は聞いたことがないのでやっぱり厳しいのかな

Causeway: Operating System Support For Controlling And Analyzing The Execution Of Distributed Programs

A. Chanda, K. Elmeleegy, A. L. Cox, and W. Zwaenepoel, “Causeway: Operating system support for controlling and analyzing the execution of distributed programs,” in Proceedings of the 10th Conference on Hot Topics in Operating Systems - Volume 10, ser. HOTOS’05. USA: USENIX Association, 2005, p. 18.

概要
  • 分散プログラムにおけるメタデータ伝播をカーネルレベルでサポートするCausewayによって、メタデータ伝播を必要とするメタアプリケーションの開発を容易にする
感想
  • これで本当にアプリケーションへの計装をなくせるのか?
    • メタデータの注入・アクセスインターフェースはメタアプリケーション(アクター)が叩く想定っぽいけど、そのメタデータをアプリケーションに渡す必要はないのだろうか
  • 通信のオーバーヘッドとかは考慮してないのか
  • プロトコル非依存にしたりアプリケーションへの計装を減らしてメタデータ伝播したいという要求はこんな昔からあるのに、今でも根本的な解決策はないっぽいので非常に難しい
  • より下位レイヤでの伝播というアイデアは今の技術だともっとできることがありそう
    • カーネル拡張するというのはeBPFとかでできるかも
  • 古の論文すぎて、前提となる用語の理解が難しかったり、当時どれくらい新規性があったのかが分かりにくかったりする

Enhancing Packet Tracing of Microservices in Container Overlay Networks using eBPF

C. Lee, R. Yoshitani, and T. Hirotsu, “Enhancing packet tracing of microservices in container overlay networks using ebpf,” in Proceedings of the 17th Asian Internet Engineering Conference, ser. AINTEC ’22. New York, NY, USA: Association for Computing Machinery, 2022, p. 53–61. [Online]. Available: https://doi.org/10.1145/3570748.3570756

概要
  • eBPFを利用して、アノテーションベースのトレーシングをコンテナオーバーレイネットワークのレイテンシ測定に拡張する提案
  • 法政大学で分散システム・トレーシングの研究してるグループ。筆頭著者はトヨタの研究所の方で分散システム・SDN、NFVとか。
感想
  • コンテナオーバーレイネットワーク(CNI)&eBPFといえばCiliumだと思うがそこに一切触れていないのが気になった
    • Flannel, Calicoに対応してVXLAN, IPIPを用いた解析をサポートしているのは良いが、Ciliumを拡張するともっと簡単にできるのでは
  • アノテーションベースのトレーシングがアプリケーション層しか考慮していないという問題はその通りだと思うので、それをインフラ層に拡張する発想は面白い
    • せっかくそれなりのコストをかけてトレーシングコンテクストを伝搬させているんだから、さらに他のことにも使えないかな
  • 日本でこんな研究してるグループがあるとは
  • eBPFの勉強がてらここら辺の実装読むor再実装してみたい