目次
PF_RING" >PF_RING
DPDK" >DPDK
1 UIO mmap はゼロコピーを実装します " >1 UIO mmap はゼロコピーを実装します
2 UIO PMD は割り込みと CPU コンテキストの切り替えを軽減します" >2 UIO PMD は割り込みと CPU コンテキストの切り替えを軽減します
3 HugePages による TLB ミスの削減" >3 HugePages による TLB ミスの削減
4 その他の最適化" >4 その他の最適化
XDP" >XDP
ホームページ 運用・保守 Linuxの運用と保守 いくつかの古典的な Linux パケット収集エンジン

いくつかの古典的な Linux パケット収集エンジン

Aug 04, 2023 pm 04:07 PM
linux

この記事では、4 つの古典的な Linux パケット収集エンジンをリストします。他にも問題ないと思われるエンジンがある場合は、メッセージを残してください。これら 4 つは次のとおりです:

  • #libpcap/libpcap-mmap
  • PF_RING
  • DPDK
  • #xdp
libpcap

libpcap のパケット キャプチャ メカニズムは、バイパス処理を追加することで、システム独自のネットワーク プロトコル スタックの処理送受信されたデータ パケットは、Linux カーネルを通じてフィルタリングおよびバッファリングされ、最終的に上位層アプリケーションに直接渡されます。

  1. データ パケットはネットワーク カード デバイスに到着します。
  2. #ネットワーク カード デバイスは、設定に従って DMA 操作を実行します。 (
    「最初のコピー」 : ネットワーク カード レジスタ -> カーネルによってネットワーク カードに割り当てられたバッファ リング バッファ)
  3. ##ネットワーク カードは割り込みを送信し、プロセッサをウェイクアップします。
  4. ドライバー ソフトウェアはリング バッファーから読み取り、カーネル skbuff 構造に埋め込みます (
  5. 「2 番目のコピー」 : カーネル ネットワーク カード バッファ リング バッファ -> カーネル固有のデータ構造 skbuff)
  6. 次に netif_receive_skb 関数を呼び出します:
    5.1 パケット キャプチャ プログラムがある場合は、ネットワーク サブインターフェイス経由で BPF フィルターに入り、ルールに一致するパケットをシステム カーネル キャッシュにコピーします (
  • 「3 番目のコピー」 )。 BPF は、サービスを必要とする各パケット キャプチャ プログラムに 1 つのフィルタと 2 つのバッファを関連付けます。 BPF はバッファを割り当て、そのサイズは通常 4KB です。ストア バッファはアダプタからデータを受信するために使用され、ホールド バッファはパケットをアプリケーションにコピーするために使用されます。
  • 5.2 データリンク層のブリッジ機能を処理します;
  • 5.3 skb->protocol フィールドに基づいて上位層プロトコルを決定しますそしてそれをネットワーク層の処理に送信し、高レベルの処理のためにネットワーク プロトコル スタックに入ります。
  • libpcap は、Linux カーネル パケット収集プロセスのプロトコル スタック部分の処理をバイパスし、ユーザー空間 API がソケット PF_PACKET を直接呼び出して、リンク層ドライバーからデータ パケットを取得できるようにします。カーネルバッファからユーザー空間バッファへ (
  • 「4 番目のコピー」 )
  • libpcap-mmap

    libpcap-mmap は古い libpcap 実装を改良したもので、新しいバージョンの libpcap は基本的に packet_mmap メカニズムを使用します。 PACKET_MMAP は mmap を使用して 1 つのメモリ コピー (

    「4 番目のコピーがなくなりました」 ) を削減し、これにより頻繁なシステム コールが削減され、メッセージ キャプチャの効率が大幅に向上します。

    PF_RING

    libpcap には 4 つのメモリ コピーがあることが以前に確認されました。 libpcap_mmap には 3 つのメモリ コピーがあります。 PF_RING が提案する中心的なソリューションは、送信中のメッセージのコピーの数を減らすことです。

    libpcap_mmap と比較すると、pfring ではユーザー空間メモリを rx_buffer で直接 mmap できることがわかります。これにより、別のコピー ( 「libpcap_mmap の 2 番目のコピー」: rx_buffer->skb)

    PF-RING ZC が DNA (ダイレクト NIC アクセス (ダイレクト ネットワーク カード) を実装) が削減されます。 access) テクノロジーは、ユーザー メモリ空間をドライバーのメモリ空間にマップし、ユーザー アプリケーションがネットワーク カードのレジスタおよびデータに直接アクセスできるようにします。

    このようにして、カーネル内のデータ パケットのキャッシュが回避され、コピーが 1 つ削減されます ( 「libpcap の最初のコピー」 、DMA からカーネル バッファへのコピー)。これは完全にゼロコピーです。

    欠点は、一度に 1 つのアプリケーションしか DMA リングを開くことができないことです (今日のネットワーク カードは複数の RX/TX キューを持つことができ、1 つのアプリケーションが同時に各キューに存在できることに注意してください)。つまり、ユーザー モードの複数のアプリケーションは、データ パケットを分散するために相互に通信する必要があります。

    DPDK

    pf-ring zc と dpdk はどちらもデータ パケットのゼロ コピーを実現でき、どちらもカーネルをバイパスしますが、実装原理は若干異なります。 PF リング zc は、zc ドライバー (アプリケーション層でも) を通じてデータ パケットを引き継ぎ、dpdk は UIO に基づいて実装されます。

    1 UIO mmap はゼロコピーを実装します

    UIO (ユーザー空間 I/O) は、ユーザー空間で実行される I/O テクノロジです。一般に、Linux システムのドライバー デバイスはカーネル空間で実行され、ユーザー空間のアプリケーションから呼び出すことができますが、UIO はドライバーのごく一部をカーネル空間で実行し、ドライバーの大部分をユーザー空間で実装します。関数。 Linux が提供する UIO メカニズムを使用すると、カーネルをバイパスでき、すべてのパケット処理作業がユーザー空間で完了します。

    2 UIO PMD は割り込みと CPU コンテキストの切り替えを軽減します

    DPDK の UIO ドライバーはハードウェア発行の割り込みをブロックし、ユーザー モードでアクティブ ポーリングを使用します。このモードは PMD と呼ばれます。 (ポーリング モード ドライバー)。

    DPDK と比較すると、pf-ring (zc なし) は NAPI ポーリングとアプリケーション層ポーリングを使用しますが、pf-ring zc は DPDK に似ており、アプリケーション層ポーリングのみを使用します。

    3 HugePages による TLB ミスの削減

    MMU (メモリ管理ユニット) がオペレーティング システムに導入された後、CPU はメモリを読み取るためにメモリに 2 回アクセスする必要があります。データ。 1 回目は、ページ テーブルにクエリを実行して論理アドレスを物理アドレスに変換し、その物理アドレスにアクセスしてデータまたは命令を読み取ります。

    ページ数やページ テーブルが大きすぎることによって引き起こされるクエリ時間が長すぎる問題を軽減するために、アドレス変換バッファとして変換できる TLB (Translation Lookaside Buffer) が導入されました。 TLB はメモリ管理ユニットであり、通常はレジスタに格納され、現在アクセスされる可能性が最も高いページ テーブル エントリの小さな部分が格納されます。

    TLB の導入後、CPU はまず TLB 内を検索しますが、TLB はレジスタに格納され、ページ テーブル エントリのごく一部しか含まれていないため、クエリ速度は非常に高速です。 TLB でのアドレス指定が成功した場合 (TLB ヒット)、RAM 内のページ テーブルをクエリする必要はありませんが、TLB でのアドレス指定が失敗した場合 (TLB ミス)、RAM 内のページ テーブルをクエリする必要があります。クエリ後、ページはTLB に更新されます。

    DPDK は、x86-64 で 2MB および 1GB のページ サイズをサポートする HugePages を使用します。これにより、総ページ数とページ テーブルのサイズが大幅に削減され、TLB ミスの可能性が大幅に減少し、CPU が向上します。アドレス性能です。

    4 その他の最適化

    • SNA (シェアードナッシング アーキテクチャ)、ソフトウェア アーキテクチャは分散型であり、グローバルな共有を回避し、グローバルな共有を実現しようとします。競争が起こり、水平方向に拡張する能力が失われます。 NUMA システムでは、メモリはノード間でリモートで使用されません。
    • SIMD (単一命令複数データ)、初期の mmx/sse から最新の avx2 まで、SIMD の機能は増加しています。 DPDK は、複数のパケットを同時にバッチ処理し、ベクトル プログラミングを使用してすべてのパケットを 1 サイクルで処理します。たとえば、memcpy は SIMD を使用して速度を向上させます。
    • cpu アフィニティ: CPU アフィニティ

    XDP

    xdp は eXpress データ パスを表します。パケット フィルタリング用の ebpf データ パケットをユーザー モードに直接送信し、ユーザー モードを高速データ処理プレーンとして使用する dpdk と比較して、xdp はドライバー層にデータ高速プレーンを作成します。データ パケットは、ネットワーク カード ハードウェアによってメモリにデータが転送され、skb が割り当てられる前に処理されます。

    XDP はデータ パケットに対してカーネル バイパスを実行せず、事前に少しの事前チェックを行うだけであることに注意してください。

    DPDK と比較すると、XDP には次の利点があります:

    • #サードパーティのコード ライブラリとライセンスは不要
    • #ポーリング ネットワークと割り込みベースのネットワークの両方をサポート
    • 巨大なページを割り当てる必要はありません
    • #専用の CPU は必要ありません
    • #新しいセキュリティ ネットワーク モデルを定義する必要はありません
    • XDP の使用シナリオには以下が含まれます:

    DDoS 防御
    • ファイアウォール
    • XDP_TXベースのロード バランシング
    • ネットワーク統計
    • 複雑なネットワーク サンプリング
    • 高速取引プラットフォーム
    • OK、今日の共有は以上です。他にもパケット収集エンジンがあると思われる場合は、共有するメッセージを残してください。


    #

以上がいくつかの古典的な Linux パケット収集エンジンの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Deepseek Webバージョンの入り口Deepseek公式ウェブサイトの入り口 Deepseek Webバージョンの入り口Deepseek公式ウェブサイトの入り口 Feb 19, 2025 pm 04:54 PM

DeepSeekは、Webバージョンと公式Webサイトの2つのアクセス方法を提供する強力なインテリジェント検索および分析ツールです。 Webバージョンは便利で効率的であり、公式ウェブサイトは包括的な製品情報、ダウンロードリソース、サポートサービスを提供できます。個人であろうと企業ユーザーであろうと、DeepSeekを通じて大規模なデータを簡単に取得および分析して、仕事の効率を向上させ、意思決定を支援し、イノベーションを促進することができます。

DeepSeekをインストールする方法 DeepSeekをインストールする方法 Feb 19, 2025 pm 05:48 PM

DeepSeekをインストールするには、Dockerコンテナ(最も便利な場合は、互換性について心配する必要はありません)を使用して、事前コンパイルパッケージ(Windowsユーザー向け)を使用してソースからコンパイル(経験豊富な開発者向け)を含む多くの方法があります。公式文書は慎重に文書化され、不必要なトラブルを避けるために完全に準備します。

LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? Apr 01, 2025 pm 05:09 PM

LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

Bitget公式ウェブサイトのインストール(2025初心者ガイド) Bitget公式ウェブサイトのインストール(2025初心者ガイド) Feb 21, 2025 pm 08:42 PM

Bitgetは、スポット取引、契約取引、デリバティブなど、さまざまな取引サービスを提供する暗号通貨交換です。 2018年に設立されたこのExchangeは、シンガポールに本社を置き、安全で信頼性の高い取引プラットフォームをユーザーに提供することに取り組んでいます。 Bitgetは、BTC/USDT、ETH/USDT、XRP/USDTなど、さまざまな取引ペアを提供しています。さらに、この取引所はセキュリティと流動性について評判があり、プレミアム注文タイプ、レバレッジド取引、24時間年中無休のカスタマーサポートなど、さまざまな機能を提供します。

システムの再起動後にUnixSocketの権限を自動的に設定する方法は? システムの再起動後にUnixSocketの権限を自動的に設定する方法は? Mar 31, 2025 pm 11:54 PM

システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ...

gate.ioインストールパッケージを無料で入手してください gate.ioインストールパッケージを無料で入手してください Feb 21, 2025 pm 08:21 PM

Gate.ioは、インストールパッケージをダウンロードしてデバイスにインストールすることで使用できる人気のある暗号通貨交換です。インストールパッケージを取得する手順は次のとおりです。Gate.ioの公式Webサイトにアクセスし、「ダウンロード」をクリックし、対応するオペレーティングシステム(Windows、Mac、またはLinux)を選択し、インストールパッケージをコンピューターにダウンロードします。スムーズなインストールを確保するために、インストール中に一時的にウイルス対策ソフトウェアまたはファイアウォールを一時的に無効にすることをお勧めします。完了後、ユーザーはGATE.IOアカウントを作成して使用を開始する必要があります。

OUYI OKXインストールパッケージが直接含まれています OUYI OKXインストールパッケージが直接含まれています Feb 21, 2025 pm 08:00 PM

世界をリードするデジタル資産交換であるOuyi Okxは、安全で便利な取引体験を提供するために、公式のインストールパッケージを開始しました。 OUYIのOKXインストールパッケージは、ブラウザに直接インストールでき、ユーザー向けの安定した効率的な取引プラットフォームを作成できます。インストールプロセスは、簡単で理解しやすいです。

OUYI Exchangeダウンロード公式ポータル OUYI Exchangeダウンロード公式ポータル Feb 21, 2025 pm 07:51 PM

OKXとしても知られるOUYIは、世界をリードする暗号通貨取引プラットフォームです。この記事では、OUYIの公式インストールパッケージのダウンロードポータルを提供します。これにより、ユーザーはさまざまなデバイスにOUYIクライアントをインストールすることが容易になります。このインストールパッケージは、Windows、Mac、Android、およびiOSシステムをサポートします。インストールが完了した後、ユーザーはOUYIアカウントに登録またはログインし、暗号通貨の取引を開始し、プラットフォームが提供するその他のサービスを楽しむことができます。

See all articles