O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

DPDKを拡張してみた話し

7.339 visualizações

Publicada em

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

Publicada em: Software
  • Dating for everyone is here: ❤❤❤ http://bit.ly/369VOVb ❤❤❤
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • Follow the link, new dating source: ♥♥♥ http://bit.ly/369VOVb ♥♥♥
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui

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

×