lagopus + dockerのdpdk接続
TRANSCRIPT
0 Copyright©2016 NTT corp. All Rights Reserved.
Lagopus + Docker のDPDK接続
2017/02/15
@hibitomo
@falcon8823
0
1 Copyright©2016 NTT corp. All Rights Reserved.
今日伝えたいこと
すごーい!LagopusはdockerとDPDKで接続できるスイッチなんだね! #npstudy
2 Copyright©2016 NTT corp. All Rights Reserved.
Lagopus-0.2
DPDKによる仮想環境との接続
Lagopus + docker のDPDK接続
新Lagopus
Agenda
3 Copyright©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
4 Copyright©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対応
5 Copyright©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
Throughp
ut(G
bps)
Packetsize(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
Throughp
ut(G
bps)
Packetsize(byte)
Lagopus
Wire-rate
6 Copyright©2016 NTT corp. All Rights Reserved.
Lagopus-0.2
DPDKによる仮想環境との接続
Lagopus + docker のDPDK接続
新Lagopus
Agenda
7 Copyright©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)
8 Copyright©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
9 Copyright©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
10 Copyright©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
11 Copyright©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%20NFV.pdf
参考資料
12 Copyright©2016 NTT corp. All Rights Reserved.
Lagopus-0.2
DPDKによる仮想環境との接続
Lagopus + docker のDPDK接続
新Lagopus
Agenda
14 Copyright©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
15 Copyright©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
16 Copyright©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
17 Copyright©2016 NTT corp. All Rights Reserved.
virtio-userをつかめるのはDPDKアプリのみ
コンテナで使うHugepagesは8ページ以下しか使えない
CPUを複数ソケットもつ場合,Dockerで使用するノードを明示的に指定する必要がある
ポイント
18 Copyright©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 Copyright©2016 NTT corp. All Rights Reserved.
Lagopus-0.2
DPDKによる仮想環境との接続
Lagopus + docker のDPDK接続
新Lagopus
Agenda
21 Copyright©2016 NTT corp. All Rights Reserved.
Lagopus Switch から Lagopus Routerに
OpenFlow Switchで開発した柔軟なフロー検索と処理に加え,様々なネットワーク制御系アプリやオーケストレーションと連携可能とする
• ルータの備える標準的なプロトコル制御機能
• オーバーレイネットワークを実現するVxLANやGRE
• 暗号化(IPsec)の終端機能
新Lagopus
22 Copyright©2016 NTT corp. All Rights Reserved.
パケット処理部,構成情報管理機構,プロトコルエージェントを疎結合で接続
プロトコル処理制御用のAPIをプロトコル毎に提供
詳細は公開中
http://www.lagopus.org/lagopus2-design-book/ja/
Lagopus Router アーキテクチャ
24 Copyright©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/
参考
25 Copyright©2016 NTT corp. All Rights Reserved.
まとめ
すごーい!LagopusはdockerとDPDKで接続できるルータになるんだね! #npstudy