Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

DPDKを拡張してみた話し

6,619 views

Published on

DPDKにたいして、動的ポートの追加削除機能の実装をしてみた報告です。

Published in: Software
  • Be the first to comment

DPDKを拡張してみた話し

  1. 1. DPDKを拡張してみた話し Nov 18th, 2014 IGEL Co.,Ltd. Tetsuya Mukawa 武川 哲也
  2. 2. あなたは誰ですか? 10年くらい組込みLinuxをやってきました。 Lagopusの開発に参加させていただき、 DPDKを触っています。 開発内容 –ゲスト上のDPDKアプリと、ホスト上のDPDKアプリが高速 通信可能な方式の検討実装 –DPDKにたいして、動的ポート追加削除機能の実装 2
  3. 3. 話しの内容は?? 私達が開発中で、DPDK-2.0にマージされるか もしれない機能のデモをやります。 3
  4. 4. Demoの内容は? 4 ゲスト上のDPDKア プリと、ホスト上の DPDKアプリを高速 通信させるデモ Keywords •QEMU •NFV •vhost-user Demo1 DPDKアプリの動作 中にポートを動的に 追加削除するデモ Keywords •PCI Hotplug •virtual device Hotplug Demo2
  5. 5. 用語解説: PMD Poll Mode Driverの略です。 ユーザ空間で動作するデバイスドライバです。 実デバイスに対するPMDと、仮想デバイスに対する PMDが存在します。 5
  6. 6. 用語解説: Null PMD /dev/nullライクなPMDです。自分で書いてみました。 –幾らでもパケットを受信できる。 –幾らでもパケットを送信できる。 仮想デバイスに対するPMD http://dpdk.org/dev/patchwork/patch/686/ 実デバイスを必要とせず、高速に動作するので、デ バッグやパフォーマンス調査に超便利 もちろん、マージされてません。(T_T) 6
  7. 7. 用語解説: testpmd DPDKに標準で添付されるサンプルアプリ いろいろな動作オプションがありますが、とりあえず、 以下のように動作すると思ってください。 7 testpmd port0 port1 portN portN+1 ・・・・・ (Nは偶数) 2つのポート間で双方向にパ ケットを転送
  8. 8. Demo1: デモ環境 8 testpmd on guest testpmd on host p0 p1 p0 p1 基本的なアイデアは、左図の 通り。 ゲストとホストの上で、 testpmdを動作させ、左のよ うに結線すれば、可能な限り 早くパケット転送する。 あとは、どのくらいのパケット が転送されたかを表示してみ る。
  9. 9. Demo1: 昔ながらの通信方法の場合 ~virtio-net & pcap経由~ 9 kernel space on host user space on host DPDK App1 Guest QEMU kernel space on VM user space on VM DPDK App2 virtio-net virtio-net PMD pcap PMD tap driver uio tap client この線が2つあるのが、 今回のデモ構成
  10. 10. Demo1: 実際のデモ 10
  11. 11. Demo1:なんで、こんなに遅いの? 参考 https://www.nic.ad.jp/ja/materials/iw/2011/proceedings/s09/s09-02.pdf Guest Host Kernel User DPDK App1 pcap PMD tap driver QEMU tap client virtio-net KVM DPDK App2 virtio-net PMD uio コピー コピー パケット バッファ コピー コピー 割り込み 割り込み 割り込み ※注意 黒線をまたぐと コンテキストスイッチ発生
  12. 12. Demo1: vhost-userを使った場合 ~virtio-net & vhost-user backend経由~ 12 kernel space on host user space on host DPDK App1 Guest QEMU kernel space on VM user space on VM DPDK App2 virtio-net virtio PMD vhost- user backend QEMU-2.1以上では、vhost-net のバックエンドを、ユーザ空間にイ ンプリさせるための仕組みが実装 されている(vhost-user)。 なお、この仕組みでは、ゲストの 物理メモリは、hugetlbfsから取得 する必要がある。 eventfd
  13. 13. Demo1: 実際のデモ 13
  14. 14. Demo1: なんで、こんなに速いの? 参考 https://www.nic.ad.jp/ja/materials/iw/2011/proceedings/s09/s09-02.pdf Guest Host Kernel User DPDK App1 vhost -user backend QEMU KVM DPDK App2 virtio-net PMD uio パケット バッファ コピー 割り込み 割り込み 割り込み ※注意 黒線をまたぐと コンテキストスイッチ発生 eventfd 割り込み App1とApp2 が共にポーリ ングしている ので、通知は 必要なし!
  15. 15. Demo2: 動的なポート追加削除 DPDK-2.0にマージされることを目指して開発中 –DPDK MLにSubmit済み –動的にポートを追加削除可能なAPIをDPDKに追加 –DPDKアプリ側でも対応が必要 –サンプルとして、testpmdに動的にポートを追加削除 する機能を実装。 –今回のデモでは、動的にポートを追加削除することが 可能となるパッチを適用したうえで、testpmdを改造 15
  16. 16. Demo2: 実際のデモ 16
  17. 17. 終わりに 駆け足で説明したので、分け分からんという方 は、この後の懇親会で聞いてください。 DPDKについては、下記のような資料も作って いるので、参考にしてください。 –“CELF Jamboree 50”で検索! –http://elinux.org/images/8/80/Introduction_to_Intel_DPDK_v2.pdf 17

×