Cloudflareは、XDPサブシステムに基づくトラフィックアナライザーであるxdpcapを公開しました

クラウドフレア社 提示 プロジェクトを開く xdpcap、その中で tcpdump に似たネットワーク パケット アナライザーが開発されており、サブシステムに基づいて構築されています。 XDP (eXpress データ パス)。プロジェクトのコードは Go で書かれており、 によって配布 BSD ライセンスに基づいて。このプロジェクトも、 準備 Go アプリケーションから eBPF トラフィック ハンドラーをバインドするためのライブラリ。

xdpcap ユーティリティは、tcpdump/libpcap フィルタリング式と互換性があり、同じハードウェアで非常に大量のトラフィックを処理できます。 Xdpcap は、Linux カーネル ネットワーキング スタック (tcpdump) によって処理される前にパケットを処理する Linux カーネル XDP サブシステムを使用するフィルタリング、DoS 保護、負荷分散システムなど、通常の tcpdump が適用できない環境でのデバッグにも使用できます。 XDP ハンドラーによってドロップされたパケットは認識されません)。

eBPF および XDP サブシステムの使用により、高いパフォーマンスが実現されます。 eBPF は Linux カーネルに組み込まれたバイトコード インタープリタで、これを使用すると、受信/送信パケットの転送または破棄を決定する高性能ハンドラーを作成できます。 JIT コンパイラーを使用すると、eBPF バイトコードはオンザフライで機械語命令に変換され、ネイティブ コードのパフォーマンスで実行されます。 XDP (eXpress Data Path) サブシステムは、ネットワーク ドライバー レベルで BPF プログラムを実行する機能で eBPF を補完し、DMA パケット バッファーへの直接アクセスと、ネットワーク スタックによって skbuff バッファーが割り当てられる前の段階での作業をサポートします。

tcpdump と同様に、xdpcap ユーティリティは、まず標準の libpcap ライブラリを使用して高レベルのトラフィック フィルタリング ルールをクラシック BPF 表現 (cBPF) に変換し、次にコンパイラを使用してそれらを eBPF ルーチンの形式に変換します。 cbpfc、LLVM/Clang 開発を使用します。出力では、トラフィック情報は標準の pcap 形式で保存されます。これにより、xdpcap で準備されたトラフィック ダンプを、tcpdump や他の既存のトラフィック アナライザーで後で調査するために使用できます。たとえば、DNS トラフィック情報をキャプチャするには、「tcpdump ip and udp port 53」コマンドを使用する代わりに、「xdpcap /path/to/hook Capture.pcap 'ip and udp port 53'」を実行し、キャプチャを使用できます。 .pcap ファイル(たとえば、コマンド「tcpdump -r」または Wireshark を使用)。

出所: オープンネット.ru

コメントを追加します