問題タブ [dpdk]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
3274 参照

linux - 仮想化環境での DPDK カーネル NIC インターフェイスの使用

ラップトップでDPDK Linux アプリケーションを開発しようとしていますが、ラップトップのハードウェアは DPDK でサポートされていません。さらに、DPDKはQEMUを含む準仮想化デバイスをサポートします。virtio-net

そのため、デバイスでカーネル NIC インターフェイス (KNI)を実行するために QEMU ゲストを構成しようとしていvirtio-net-pciます。virtio-net-pci問題は、KNI サンプル アプリケーションがドライバーを受け入れないことです。

QEMU コマンド

ゲストでの KNI サンプル アプリケーションの実行

lspciゲストでのコマンドの出力

pci_scan_one()関数が を設定しているのにdev->kdrv = RTE_KDRV_NONE、ドライバーがvirtio-pci(から) として検出されていることに気付きました/sys/bus/pci/devices/0000:00:03.0/driver

TAP ネットワーキング

TAP ネットワークでも同じ問題が発生します。ホストで、Wi-Fi インターフェイスからブリッジを構成し、TAP インターフェイスに接続しました。

QEMU コマンド:

ifconfigゲストでの出力:

次のコマンドは、上記の「ユーザー」ネットワークの場合と同じように失敗します。

質問

デバイスでKNIを実行することは可能ですか?virtio-net-pci

不可能な場合、仮想化環境でDPDK KNIアプリケーションを開発する他のオプションはありますか?

0 投票する
1 に答える
1299 参照

c - 高ログレベルの dpdk mbuf および mempool メッセージ

DPDK ですべての mempool,mbuf デバッグを有効にする方法の手がかりはありますか。私はDPDK 2.2.0を使用しています。このバージョンではあまり役に立たない回答がいくつか見つかりました。

0 投票する
1 に答える
646 参照

c - Rust FFI から DPDK の静的 C 関数にアクセスする

私はかなり初心者のプログラマーで、理解していると思うが修正方法がわからない問題に直面しています。Rust FFI を使用して、すべて C で記述されたIntel の DPDKと対話しようとしています。これに対する私の最初の試みは、helloworld サンプル アプリを再作成することです。

DPDK の関数が静的であり、ライブラリから直接利用できないことが原因であると思われるコンパイル エラーが発生しています。私のFFIインターフェースはここにあります:

これを参照して関数をラップするライブラリもあります。

そして、ライブラリをリンクするための build.rs ファイル -

FFI インターフェイスに対して独自のアプリケーションをコンパイルしようとすると、rte_lcore_idおよびへの未定義の参照に関するエラーが発生し続けますrte_get_next_lcore。DPDK の API ドキュメントによると、これらの関数は librte_eal ライブラリの一部ですが、rte_lcore.hで static functions として定義されています。これらは静的関数であり、Rust からは見ることができないと想定しています。

DPDK にバンドルされている helloworld サンプル アプリでは、rte_lcore.h を直接インポートしています。これが、librte_eal を参照するだけでなく、これらの関数にアクセスできる理由だと思いますか?

Rust でこれにアクセスする方法はありますか、またはそれらの関数をラップして FFI 経由で利用できるようにする C のシムのようなものが必要ですか?

0 投票する
1 に答える
888 参照

nic - DPDK には複数の NIC が必要ですか?

私はDPDKをまったく初めて使用し、自分では理解できない奇妙な質問がいくつかあります。

  1. DPDK では、物理デバイスに複数の NIC が必要ですか? 2 つの NIC を必要とするいくつかの例 (l2fwd、l3fwd) を見ました。1 つはパケットの受信に使用され、もう 1 つはパケットの送信に使用されます。
  2. DPDK は NIC を制御するため、唯一の NIC を DPDK にバインドすると、通常どおりインターネットにアクセスできますか? つまり、Firefox で Web をサーフィンするなどの通常のことを行うということです。
  3. NIC をバインドした後、DPDK アプリケーションのみがそれらの NIC にアクセスできますか、または通常のアプリケーションがそれらにアクセスできる方法はありますか?

私は何日もこれらの質問で混乱してきました。私の心を浄化してください。

前もって感謝します :)

0 投票する
1 に答える
1401 参照

tcp - TCP 接続に属するパケットを DPDK の特定の lcore に転送する方法は?

特定の lcore が TCP 接続の両側に属するパケットを受信するようにします。つまり、クライアントからサーバーへのパケット (CtoS) とサーバーからクライアントへのパケット (StoC) は、どちらも単一の lcore に送信されます。RSS は、ストリーム (一方向のデータ フロー) に属するパケットが同じ lcore に送信されることを保証しているようです。方向の両側を同じ lcore に向けるには、対称 RSS が必要です。

  • 特定の lcore への接続に属するパケットを転送するように NIC (Intel 82599 など) を構成するにはどうすればよいですか?
  • CtoS トラフィックと StoC トラフィックが同じ NIC の異なるポートにある場合、接続に属するパケットを特定の lcore に転送する方法はありますか?
  • 異なる NIC 上の異なるポートはどうですか?
0 投票する
0 に答える
914 参照

linux - glibc の現在の安定バージョンが 2.23 であるのに、なぜ glibc バージョン >= 2.7 を読むのか

Linux の入門ガイド (リリース 16.04.0)の 2.3.1 章を読んでいるときに、次のように表示されました。

必須:

glibc >= 2.7 (cpuset に関連する機能用)

バージョンは、ldd --version コマンドを使用して確認できます。

私が走ったとき、私はldd --version得た

ldd (Ubuntu EGLIBC 2.19-0ubuntu6.9) 2.19

Copyright (C) 2014 Free Software Foundation, Inc.

これはフリー ソフトウェアです。条件のコピーについてはソースを参照してください。保証はありません。商品性や特定の目的への適合性のためでさえありません。

Roland McGrath と Ulrich Drepper によって書かれました。

それは、私の glibc のバージョンが 2.19 であることを意味しますか?

バージョンをアップグレードする方法をいくつか試しましたが、新しいものはありません。

実はThe GNU Libraryで気づいたのですが、

最新ニュース

2016-02-19: glibc 2.23 がリリースされました。

では、どうすれば 2.7 のバージョンを入手できますか?? Linux の入門ガイド (リリース 16.04.0) のメッセージは間違っていますか?

0 投票する
3 に答える
1899 参照

linux - Linux カーネルが PERF_COUNT_HW_REF_CPU_CYCLES イベントをサポートしていないため、Linux パフォーマンスを使用できません

仮想環境の Linux "perf" に関する情報が欲しいだけです。perf stat -e サイクル "my process" を取得しようとしているので、VM (Vmware5.1 上で実行されている) でこのコマンドを実行すると、次のようなメッセージが表示されます..

/サポートされていません> サイクル

VMwareハイパーバイザーのアクセス許可の問題または構成エラーがある可能性があることは理解できますが、それらを指摘できますか?. また、カーネルフラグ「PERF_COUNT_HW_REF_CPU_CYCLES」について読みましたが、カーネルでこのフラグが有効になっているかどうかを確認するにはどうすればよいですか? これのためのコマンドはありますか?

0 投票する
1 に答える
2540 参照

packets - DPDK - rte_mbuf ペイロード/データの初期化または更新/変更

DPDK の basicfwd の例の転送メカニズムを理解しようとしています。のペイロードの初期化と編集を手伝ってくれる人はいrte_mbufますか? これがクラスです。パケットの内容を使用tcpdumpして表示する予定です。rte_pktmbuf_dump

rte_mbuf独自のペイロードを追加したいのは次のとおりです。

これはrte_mbuf受け取られています:

これはrte_mbuf送信されています:

転送されたパケットをファイルに出力するように、DPDK の例のサンプル アプリケーションbasicfwd.cを変更しました。

これらは、出力ファイルに表示されるパケットです ループの最初の 3 回の繰り返しのダンプ 。内容をよりよく理解するために変更できるようにしたいと思います。試してみrte_pktmbuf_initましbufs->userdata =*(unsigned short*) 0xAAAAAAAAたが、うまくいきません。