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.

Lagopus + DockerのDPDK接続

ネットワークプログラマビリティ勉強会 #11で発表した内容です.
LagopusとDockerコンテナがDPDKでつながります.

  • Seja o primeiro a comentar

Lagopus + DockerのDPDK接続

  1. 1. 0Copyright©2016 NTT corp. All Rights Reserved. Lagopus + Docker のDPDK接続 2017/02/15 @hibitomo @falcon8823 0
  2. 2. 1Copyright©2016 NTT corp. All Rights Reserved. 今日伝えたいこと すごーい!LagopusはdockerとDPDKで接続できるス イッチなんだね! #npstudy
  3. 3. 2Copyright©2016 NTT corp. All Rights Reserved.  Lagopus-0.2  DPDKによる仮想環境との接続  Lagopus + docker のDPDK接続  新Lagopus Agenda
  4. 4. 3Copyright©2016 NTT corp. All Rights Reserved. Lagopus OpenFlowスイッチのソフトウェア実装 汎用x86サーバで動作可能 OSSとして公開 (2014年1月 0.1.x 公開, 2015年8月 0.2.x 公開) 高速なパケット処理と幅広いプロトコルに対応 > 10Gbps OpenFlow1.3+tunneling OpenFlow コントローラ コントロールプレーン OpenFlow プロトコル OpenFlow スイッチ データプレーン Flow Table フローパターン アクション フローパターン アクション カウンター カウンター Flow Table #2 Flow Table #3 Flow Table #4
  5. 5. 4Copyright©2016 NTT corp. All Rights Reserved.  0.2.5 Apr 6, 2016  GTP-U tunnel support, some bug fixes  0.2.6 May 2, 2016  performance improvement, but DPDK ixgbe vector enabled, much slow  0.2.7 May 18, 2016  DPDK vector disabled again  0.2.8 July 12, 2016  build and tests on Ubuntu 16.04LTS  deprecated -p parameter • ignored if specified  it works as L2 and/or L3 Hybrid switch  0.2.9 Aug 26, 2016  DPDK 16.07  0.2.10 Dec 20, 2016  DPDK 16.11 最近のリリース action: NORMAL対応 L2/L3 Hybrid switch Tunnel対応
  6. 6. 5Copyright©2016 NTT corp. All Rights Reserved. 性能評価  単純なポートフォワードを実施した場合のスループットを測定 CPU E5-2697v2 2.70GHz NIC Intel X520 メモリ 64GB OS Ubuntu 14.04LTS CPU E5-2667v3 3.20GHz NIC Intel XL710 メモリ 64GB OS Ubuntu 14.04LTS  10GbE  測定環境  測定結果  40GbE  測定環境  測定結果 6.66 8.65 9.28 9.49 9.63 9.77 9.83 9.85 9.86 0 1 2 3 4 5 6 7 8 9 10 0 200 400 600 800 1000 1200 1400 Throughput(Gbps) Packet size (byte) Lagopus Wire-rate 7.7 15.5 26.5 34.2 39.2 39.5 0 5 10 15 20 25 30 35 40 0 200 400 600 800 1000 1200 1400 Throughput(Gbps) Packet size (byte) Lagopus Wire-rate
  7. 7. 6Copyright©2016 NTT corp. All Rights Reserved.  Lagopus-0.2  DPDKによる仮想環境との接続  Lagopus + docker のDPDK接続  新Lagopus Agenda
  8. 8. 7Copyright©2016 NTT corp. All Rights Reserved.  Interop Shownet 2016  vhost-user PMD による仮想マシンとのDPDK接続 DPDKによる仮想環境との接続(VM) HV VNF VNF VNF lagopus lagopus uplink downlink hash計算と MACへの 埋め込み MACにもとづいて VMへ送信(staticな flow entry)
  9. 9. 8Copyright©2016 NTT corp. All Rights Reserved.  vhost-user PMD DPDKによる仮想環境との接続(VM) 引用: http://events.linuxfoundation.org/sites/events/files/slides/Scalable%20high- performance%20userland%20container%20networking%20for%20NFV.pdf
  10. 10. 9Copyright©2016 NTT corp. All Rights Reserved.  SR-IOV or virtio-user DPDKによる仮想環境との接続(コンテナ) 引用: http://dpdk.org/doc/guides/howto/virtio_user_for_container_networking.html#figure-use- models-for-running-dpdk-in-containers
  11. 11. 10Copyright©2016 NTT corp. All Rights Reserved. DPDKによる仮想環境との接続(コンテナ) 引用: http://dpdk.org/doc/guides/howto/virtio_user_for_container_networking.html#figure-use- models-for-running-dpdk-in-containers  virtio-user
  12. 12. 11Copyright©2016 NTT corp. All Rights Reserved.  lagopus/doc/how-to-use-virtio-user.md  https://github.com/lagopus/lagopus/pull/106/files  DPDK HowTo Guides  http://dpdk.org/doc/guides/howto/virtio_user_for_container_network ing.html#figure-use-models-for-running-dpdk-in-containers  Scalable High-Performance User Space Interface/Stack for Containers in NFV - Jianfeng Tan & Zhihong Wang, Intel  http://events.linuxfoundation.org/sites/events/files/slides/Scalable%2 0high- performance%20userland%20container%20networking%20for%20NF V.pdf 参考資料
  13. 13. 12Copyright©2016 NTT corp. All Rights Reserved.  Lagopus-0.2  DPDKによる仮想環境との接続  Lagopus + docker のDPDK接続  新Lagopus Agenda
  14. 14. 13Copyright©2016 NTT corp. All Rights Reserved. 接続例 Lagopus Server Container Testpmd
  15. 15. 14Copyright©2016 NTT corp. All Rights Reserved.  Docker, Lagopusのインストール  省略  Hugepagesの設定  省略.hugepagesizeは 1G 必須.  hugetlbfsのマウント  /etc/fstabを編集  ホスト用,各コンテナ用それぞれでマウントする 手順(準備) # for host none /mnt/huge hugetlbfs pagesize=1G,size=4G 0 0 # for container none /mnt/huge_c0 hugetlbfs pagesize=1G,size=1G 0 0
  16. 16. 15Copyright©2016 NTT corp. All Rights Reserved.  Dockerイメージ  testpmdのdockerイメージ  Lagopusの設定  Interfaceを仮想マシン接続時と同じく,vhost-userで用意する.  参考:http://www.slideshare.net/tomoyahibi/lagopusl3-lagopus 手順(Docker,Lagopus) channel channel01 create -dst-addr 127.0.0.1 -protocol tcp controller controller01 create -channel channel01 -role equal -connection-type main interface interface01 create -type ethernet-dpdk-phy -device eth_vhost0,iface=/tmp/dpdk/sock0 interface interface02 create -type ethernet-dpdk-phy -device eth_vhost1,iface=/tmp/dpdk/sock1 port port01 create -interface interface01 port port02 create -interface interface02 bridge bridge01 create -controller controller01 -port port01 1 -port port02 2 -dpid 0x1 bridge bridge01 enable flow bridge01 add in_port=1 apply_actions=output:2 flow bridge01 add in_port=2 apply_actions=output:1
  17. 17. 16Copyright©2016 NTT corp. All Rights Reserved.  Lagopusの起動  Dockerの起動 手順(起動) $ sudo lagopus -d -- -c 0xc -n 2 -m 1024 -- $ docker run -it --rm -v /mnt/huge_c0:/mnt/huge_c0 -v /tmp/dpdk:/tmp/dpdk dpdk-docker testpmd --no-pci --vdev=virtio_user0,path=/tmp/dpdk/sock0 -- vdev=virtio_user1,path=/tmp/dpdk/sock1 -c 0x3 -n 2 -m 1024 -- --disable-hw-vlan-filter -i
  18. 18. 17Copyright©2016 NTT corp. All Rights Reserved.  virtio-userをつかめるのはDPDKアプリのみ  コンテナで使うHugepagesは8ページ以下しか使えない  CPUを複数ソケットもつ場合,Dockerで使用するノードを明示的に 指定する必要がある ポイント
  19. 19. 18Copyright©2016 NTT corp. All Rights Reserved.  パケットの流れ  pktgen -> 物理 -> vswitch -> Container(L2Fwd) -> vswitch -> 物理 -> pktgen 性能評価 Lagopus or docker0 Server Container L2Fwd or Linux Bridge Container pktgen-dpdk OS: Ubuntu 16.04.1 CPU: Xeon E5-2697 v2 @ 2.70GHz メモリ: 64GB
  20. 20. 19Copyright©2016 NTT corp. All Rights Reserved. 性能評価
  21. 21. 20Copyright©2016 NTT corp. All Rights Reserved.  Lagopus-0.2  DPDKによる仮想環境との接続  Lagopus + docker のDPDK接続  新Lagopus Agenda
  22. 22. 21Copyright©2016 NTT corp. All Rights Reserved.  Lagopus Switch から Lagopus Routerに  OpenFlow Switchで開発した柔軟なフロー検索と処理に加え,様々なネット ワーク制御系アプリやオーケストレーションと連携可能とする • ルータの備える標準的なプロトコル制御機能 • オーバーレイネットワークを実現するVxLANやGRE • 暗号化(IPsec)の終端機能 新Lagopus
  23. 23. 22Copyright©2016 NTT corp. All Rights Reserved.  パケット処理部,構成情報管理機構,プロ トコルエージェントを疎結合で接続  プロトコル処理制御用のAPIをプロトコル毎 に提供  詳細は公開中  http://www.lagopus.org/lagopus2-design- book/ja/ Lagopus Router アーキテクチャ
  24. 24. 23Copyright©2016 NTT corp. All Rights Reserved.  BGP Router Usecase  IPsec Router
  25. 25. 24Copyright©2016 NTT corp. All Rights Reserved.  Lagopus  https://lagopus.org  Github  https://github.com/lagopus/lagopus  Lagopus books (英語)  http://www.lagopus.org/lagopus-book/en/html/  Mailing list (英語,開発者向け)  https://lists.sourceforge.net/lists/listinfo/lagopus-devel  Slack  https://lagopus-project-slack.herokuapp.com/ 参考
  26. 26. 25Copyright©2016 NTT corp. All Rights Reserved. まとめ すごーい!LagopusはdockerとDPDKで接続できる ルータになるんだね! #npstudy
  27. 27. 26Copyright©2016 NTT corp. All Rights Reserved. ご清聴ありがとうございました 26 ######## ## ;;;; ## ## #### ## #### ## ## ## #### ##### ######## ## ############## ## ## ### ######## ## ## #### ## ## ## #### ## #### ## ## ## ## ## ###### #### #### #### #### ########## #################### mmmm ## ##########

×