Contenu connexe
Similaire à Lagopus + DockerのDPDK接続 (20)
Lagopus + DockerのDPDK接続
- 3. 2Copyright©2016 NTT corp. All Rights Reserved.
Lagopus-0.2
DPDKによる仮想環境との接続
Lagopus + docker のDPDK接続
新Lagopus
Agenda
- 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. 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. 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. 6Copyright©2016 NTT corp. All Rights Reserved.
Lagopus-0.2
DPDKによる仮想環境との接続
Lagopus + docker のDPDK接続
新Lagopus
Agenda
- 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. 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. 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. 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. 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
参考資料
- 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. 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. 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. 17Copyright©2016 NTT corp. All Rights Reserved.
virtio-userをつかめるのはDPDKアプリのみ
コンテナで使うHugepagesは8ページ以下しか使えない
CPUを複数ソケットもつ場合,Dockerで使用するノードを明示的に
指定する必要がある
ポイント
- 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
- 22. 21Copyright©2016 NTT corp. All Rights Reserved.
Lagopus Switch から Lagopus Routerに
OpenFlow Switchで開発した柔軟なフロー検索と処理に加え,様々なネット
ワーク制御系アプリやオーケストレーションと連携可能とする
• ルータの備える標準的なプロトコル制御機能
• オーバーレイネットワークを実現するVxLANやGRE
• 暗号化(IPsec)の終端機能
新Lagopus
- 23. 22Copyright©2016 NTT corp. All Rights Reserved.
パケット処理部,構成情報管理機構,プロ
トコルエージェントを疎結合で接続
プロトコル処理制御用のAPIをプロトコル毎
に提供
詳細は公開中
http://www.lagopus.org/lagopus2-design-
book/ja/
Lagopus Router アーキテクチャ
- 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/
参考
- 27. 26Copyright©2016 NTT corp. All Rights Reserved.
ご清聴ありがとうございました
26
########
## ;;;; ##
## #### ##
#### ##
## ## ####
##### ######## ##
############## ## ##
### ######## ## ##
#### ## ## ## #### ##
#### ## ## ## ## ##
###### #### ####
#### #### ##########
####################
mmmm ##
##########