Skip to main content
QUICK REVIEW

[論文レビュー] Flexible failure detection and fast reroute using eBPF and SRv6

Mathieu Xhonneux, Olivier Bonaventure|arXiv (Cornell University)|Oct 24, 2018
Software-Defined Networks and 5G参考文献 10被引用数 10
ひとこと要約

この論文は、低遅延で高耐障害性の監視を実現するため、カーネル空間での実行を活用したeBPFベースの高速障害検出およびSRv6 TI-LFAの高速リルーティング機構を提案している。CPU負荷下でも10ms未満の障害検出を達成し、スケジューラのジターフリーで、カーネルがトリガーする割り込み駆動処理により、ユーザー空間BFD実装を上回る性能を発揮。スループットの低下はわずか8%にとどまる。

ABSTRACT

Segment Routing is a modern variant of source routing that is being gradually deployed by network operators. Large ISPs use it for traffic engineering and fast reroute purposes. Its IPv6 dataplane, named SRv6, goes beyond the initial MPLS dataplane, notably by enabling network programmability. With SRv6, it becomes possible to define transparent network functions on routers and endhosts. These functions are mapped to IPv6 addresses and their execution is scheduled by segments placed in the forwarded packets. We have recently extended the Linux SRv6 implementation to enable the execution of specific eBPF code upon reception of an SRv6 packet containing local segments. eBPF is a virtual machine that is included in the Linux kernel. We leverage this new feature of Linux 4.18 to propose and implement flexible eBPF-based fast-reroute and failure detection schemes. Our lab measurements confirm that they provide good performance and enable faster failure detections than existing BFD implementations on Linux routers and servers.

研究の動機と目的

  • Linuxルーターにおける高CPU負荷下でのユーザー空間BFDデーモンの性能制限を解消すること。
  • Linuxカーネル内でeBPFとSRv6を活用し、柔軟で低コストの障害検出および高速リルーティングを実現すること。
  • 監視ロジックをカーネルにオフロードすることで、従来のBFDと比較して構成の複雑さを軽減し、耐障害性を向上させること。
  • カーネルベースのeBPF関数が、ユーザー空間デーモンよりも高速かつ信頼性の高い障害検出を実現できることを示すこと。
  • アプリケーション層プロトコルに依存しない軽量で統合的な解決策として、ライブネス監視と高速リルーティングを提供すること。

提案手法

  • Linux SRv6にeBPFサポートを拡張し、End.BPFフックを用いてカーネル空間でカスタムネットワーク関数を直接実行する。
  • プローブのタイムスタンプを追跡し、タイムアウトを検出することで、リンクの健全性を監視するBPFベースのスレーブ関数を実装する。
  • システムスケジューリングのポーリングではなく、カーネルレベルの割り込みを用いて障害検出をトリガーし、ジタを低減して応答性を向上させる。
  • eBPFベースの障害検出をSRv6 TI-LFAと統合し、トポロジに依存しないバックアップパスを実現する。
  • eBPFマップを用いて永続的な状態を保存し、BPFヘルパー関数を用いてパケット操作およびカプセル化を実行する。
  • CPU負荷を制御したラボ環境に本ソリューションをデプロイし、従来のBFDおよびbirdのユーザー空間実装と性能を比較する。

実験結果

リサーチクエスチョン

  • RQ1CPU負荷下において、カーネル空間でのeBPFベース障害検出が、ユーザー空間BFDデーモンよりも低い検出遅延と高い耐障害性を達成できるか?
  • RQ2eBPFベース監視の性能は、従来のBFDと比較して、高負荷下でどの程度劣化するか?
  • RQ3eBPFとSRv6の統合により、追加のネットワーク状態や構成を必要とせず、効率的で柔軟な高速リルーティングが可能になるか?
  • RQ4Linuxカーネル内でeBPFプログラムを実行することで、障害検出およびTI-LFAリルーティングにどの程度の性能オーバーヘッドが生じるか?
  • RQ5アプリケーション層プロトコルに依存せず、最小限のカーネル空間実装でBFDに類似した関数を実現できるか?

主な発見

  • eBPFベースのスレーブ関数は、10msのプローブ間隔と30msの検出時間で、高CPU負荷下でも完全な障害検出を達成。一方、ユーザー空間BFD実装は失敗した。
  • eBPFスレーブ関数は、システムスケジューラのポーリングではなく割り込み駆動処理を採用することで、ジタを低減し、信頼性を向上させた。
  • eBPFベース障害検出スキームは、積極的なタイマー設定により10ms未満の検出時間を達成し、従来のBFD実装を上回った。
  • eBPFを用いたSRv6 TI-LFA実装は、通常運用時で8%、アクティブリルーティング時で25%のスループットオーバーヘッドを示したが、大部分はSRHカプセル化に起因した。
  • eBPFスレーブ関数はたった150行のコードで実装されており、カーネル空間に完全に実装可能な軽量で高性能な監視が可能であることを示した。
  • 本ソリューションは非対称監視を可能にし、プローブはマスターデバイスのみが送信し、スレーブはアプリケーション層プロトコルを必要としないカーネル空間で実行される。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。