## Memo ## Memo with LLM ### 論文情報 - **論文のタイトル**: eProbe: eBPF-Enhanced Accurate Container Status Probing in Cloud-Native Systems - **著者と所属**: Wanqi Yang, Pengfei Chen (Sun Yat-sen University, School of Computer Science and Engineering, Guangzhou, China) - **カンファレンス/ジャーナル名**: IEEE Transactions on Services Computing (TSC) - **発表年**: 2025年(Volume 18, Number 4, July/August 2025) ### 論文概要 クラウドネイティブシステムにおいて、既存のKubernetesプローブでは部分的にしか実現できないコンテナ状態の正確な監視を、eBPF(extended Berkeley Packet Filter)ベースの非侵襲的リアルタイムプロービングシステム「eProbe」で実現する。従来のプローブの限界を克服し、より精密で詳細なコンテナ監視により、トラフィックスケジューリングエラーやアプリケーション障害の防止を目指している。 ### 詳細解説 #### 問題設定 **入力**: クラウドネイティブシステム内のコンテナ群とその動作状況 - パケット通信情報(送受信パケット数、応答時間等) - TCP接続情報とHTTP/MySQLリクエストの応答情報 - システムコール情報(tcp_set_state等) **出力**: コンテナの正確なリアルタイム状態(Ready/Non-ready) - 詳細な障害原因情報の提供 - Kubernetesプローブの結果制御による正確な状態報告 **必要なデータ**: - カーネルレベルでのパケット傍受データ - 応答比率(#send/#recv)、応答時間、接続数(#conn)、エラー率(#error/#total) #### 提案手法 eProbeは3つの主要モジュールで構成される: **1. メトリックコレクター** - eBPFプログラムをContainer Network Interface(CNI)にアタッチし、全コンテナのトラフィックを傍受 - 4つの主要メトリックを収集: - 応答比率 = #send/#recv - 応答時間 = trecv - tsend - 接続数(tcp_set_state フックで監視) - HTTP/MySQLエラー率 = #error/#total **2. 状態ジャッジ** - DDSketchベースの分位数スケッチを用いて応答時間の分布を推定 - 現在の時間窓でのP50が前の時間窓のP90を超える場合に非準備状態と判定 - 判定式: ``` Status(si) = { NotReady, if Index(P50curr) ≥ Index(P90prev) NotReady, if #sendi/#recvi ≤ η1 (η1=0.5) NotReady, if #conni ≥ η2 (η2=500) NotReady, if #errori/#totali ≥ η3 (η3=0.5) Ready, else } ``` **3. 状態エクスポーター** - XDPプログラムでプローブパケットを傍受・識別 - HTTPプローブ: ステータスコードを200→500に変更 - TCPプローブ: SYNパケットに対するACK応答をドロップ #### 新規性 **従来研究との差別化**: 1. **カーネル内メトリック収集**: ユーザ空間ではなくカーネル空間での効率的な監視 2. **非侵襲的統合**: 既存のKubernetesプローブシステムを変更せずに機能拡張 3. **リアルタイム精密監視**: パケットレベルでの詳細な状態監視により、従来プローブでは検出困難な障害を発見 4. **分位数スケッチ手法**: eBPFの制約下での効率的な統計計算手法の導入 #### 実験設定 **環境**: 5台のVM構成Kubernetesクラスタ(Ubuntu 18.04、Linux kernel 5.10.85) - 各VM: 8GB RAM、40GB disk、32-core 2.80GHz Intel Xeon Gold 6242 **評価アプリケーション**: - [[Sock Shop]](carts、catalogue、orders、frontend、catalogue-db) - [[Bookinfo]](productpage) - [[Nginx]] **障害パターン(5種類)**: 1. データベース障害([[MySQL]]) 2. コンテナ内部障害(HTTP 500エラー) 3. エージング障害(応答時間遅延) 4. 無応答障害(パケットドロップ) 5. 過剰接続障害 **評価指標**: 検出精度、検出時間、リソースオーバーヘッド(CPU、メモリ)、応答時間への影響 #### 実験結果 **検出精度**: - eProbe: 全障害パターンで100%検出成功 - Kubernetesプローブ: 一部障害のみ検出(特に過剰接続時のみ部分的検出) **検出時間**: - eProbe: 3.29秒(過剰接続障害) - Kubernetesプローブ: 42.8秒以上 **システムオーバーヘッド**: - CPU使用率増加: 0.22%-0.33% - メモリ使用率増加: 0.03%-0.26% - 応答時間増加: 2.48%(最大) **スケーラビリティ**: 1200並行ユーザまで安定動作、18レプリカまでテスト済み **閾値影響分析**: η1とη3が検出時間に大きく影響、η2と時間窓は相対的に小さな影響 ## Abstract クラウドネイティブシステムは、コンテナを活用することでスケーラビリティと可用性を向上させます。コンテナの管理とスケジューリングを改善するため、既存のコンテナ管理システム(例:[[Kubernetes]])は、コンテナの状態を監視するためにレディネスプローブとライブネスプローブを採用しています。しかし、これらのプローブシステムにおける障害は、リアルタイムプローブの問題や実装上のバグにより、トラフィックスケジューリングエラー、アプリケーションの障害、またはクラスターのクラッシュを引き起こす可能性があります。これらの課題を解決するため、私たちは[[eBPF]](拡張バークレーパケットフィルター)を基盤とした非侵襲的なリアルタイムコンテナ状態プロービングシステム「eProbe」を提案します。eProbeは、既存のコンテナ管理システムに追加のインストルメンテーションや変更を加えることなく、コンテナを通過するパケットをインターセプトし、オペレーティングシステムカーネル内でリアルタイムにコンテナの状態をプローブします。評価結果によると、eProbeはコンテナの状態を正確にプローブできるのに対し、Kubernetesのプローブは部分的にしか実現できません。さらに、eProbeは低オーバーヘッドを実現し、追加メモリ消費は0.03%から0.26%、追加CPU使用率は0.22%から0.33%に抑えられ、クラウドネイティブアプリケーションの応答時間に2.48%の増加を伴います。