SlideShare ist ein Scribd-Unternehmen logo
1 von 39
Downloaden Sie, um offline zu lesen
Copyright©2018 NTT corp. All Rights Reserved.
高性能ソフトウェアルータ・スイッチ
活用の知見
日比 智也
城倉 弘樹(@slankdev)
NTT未来ねっと研究所
NTT communications
Copyright©2018 NTT corp. All Rights Reserved.
アジェンダ
 自己&プロジェクト紹介
 Lagopus
 Kamuee
 汎用サーバのアーキテクチャとソフトウェアスイッチ・
ルータへの影響
 フロー検索のアルゴリズムと性能特性への影響
 100Gbpsを達成するために
1
Copyright©2018 NTT corp. All Rights Reserved.
自己紹介(その1)
 日比 智也
 NTT未来ねっと研究所研究員(2012.4 - )
 Lagopus project 開発メンバ (2013.4 - )
2
Copyright©2018 NTT corp. All Rights Reserved.
Lagopus project
 Develops SDN/NFV software node for carrier networks to
realize
 Differentiate services / Time-to-Market / Cost-efficiency
 Supported by
 The Ministry of Internal Affairs and Communications of Japan (April,
2013 - March, 2016)
 NTT (April, 2013 -)
 Release
 Lagopus software OpenFlow 1.3 switch (July, 2014 - )
• https://github.com/lagopus/lagopus
 Lagopus software router (Aug., 2017 - )
• https://github.com/lagopus/lagopus-router (alpha version)
3
Copyright©2018 NTT corp. All Rights Reserved.
Lagopus Router
4
 Loose coupled modular-based design
(like a microservice architecture)
 Unified configuration datastore
 Configuration defined by yang
 Pub/Sub-like APIs, config datastore as a
broker
 Using existing routing agents
 Slightly modified for APIs
 High performance/extensibility
dataplane
 Fast path written in C + DPDK
 Slow path written in go
Lagopus Router
Routing
agent
VRRP
agent
IKE agent MAT agent
Dataplane
Dataplane framework
Network
Interface
L2
(Bridging)
L3
(Routing)
IPsec
(crypto)
Config datastore
SDN controller/Orchestrator CLI
gRPC
gRPC or NETLINK
自己紹介 (その2)
● 城倉 弘樹 (SHIROKURA Hiroki)
○ Twitter: @slankdev
○ E-mail: slankdev@nttv6.jp
○ 2017 IPA未踏スーパークリエータ
○ セキュリティキャンプ講師
● パケット処理関連のソフトウェア開発をしている. パケットが好き
● Hackのようなものも好き. (解析ツールとかを組み合わせて色々遊ぶのもすき)
NTT Com 技術開発部 Kamuee
6
これまで
➔ NTT Comでソフトウェアルータを作った
➔ インターネットのフルルートを持ちつつも,
ショートパケットで高性能な転送が可能なソフトウェアルータを作る.
➔ しかもそれをIAアーキテクチャのみで実現している
➔ 今後のSDN/NFVの課題である性能問題を解決する
➔ 社のサービスや製品化して, 貢献したい <- いまここ
関連研究
➔ H. Asai, Y. Ohara "Poptrie: A Compressed Trie with Population Count for Fast and Scalable Software IP Routing
Table Lookup", ACM SIGCOMM ‘15 ルーティングルックアップアルゴリズム
➔ Y. Ohara, Y. Yamagishi “Kamuee Zero: the Design and Implementation of Route Table for High-Performance
Software Router”, IC ’16 高速なソフトウェアL3スイッチ設計実装
➔ Interop 2018 shownet コアルータとして動かしていただいた.
Copyright©2018 NTT corp. All Rights Reserved.
なぜ汎用x86サーバなのか?
 汎用サーバはかなり速くなっている
 ほぼ毎年性能が改善される
 コア数もどんどん増えている
 どこでも入手可能かつ実行可能
 秋葉原や近くの電気屋で買える
 仮想環境上でも動作可能
 安い
 10万以下で8 core CPU, 6 port 1GbEの構成
 予算にあわせて様々な構成で買える
 エンジニアはいっぱいいる
 開発環境・コンパイラ・ライブラリは充実
7
Copyright©2018 NTT corp. All Rights Reserved.
10Gbps達成のために必要なパケット処理数
0
5,000,000
10,000,000
15,000,000
20,000,000
0 256 512 768 1024 1280
#ofpacketsperseconds
Packet size (Byte)
Short packet 64Byte
14.88 MPPS, 67.2 ns
Computer packet 1KByte
1.2MPPS, 835 ns
Copyright©2018 NTT corp. All Rights Reserved.
汎用サーバの構成
NIC
CPU CPUMemory
Memory
NIC
NICNIC
QPI
PCI-Exp PCI-Exp
Reference: supermicro X9DAi
Copyright©2018 NTT corp. All Rights Reserved.
CPUのキャッシュとメモリの構成
 階層化されたキャッシュを持っている
 キャッシュに入っているデータ・アクセスはとても速い
 メインメモリのデータを見る場合はとても遅い
 連続するデータについてはプリフェッチ機構が
利用可能 Size
(Byte)
Bandwidth
(GB/s)
Latency - random
L1 $ 32K 699 4 clock
L2 $ 256K 228 12 clock
L3 $ 6M 112 44 clock
Memory G class 20 300 cycles
(91 ns)
Copyright©2018 NTT corp. All Rights Reserved.
パケット処理の流れ
受信処理
packet
フレーム処理
フロー検索
・ヘッダ書換え
QoS・Queue
送信処理
packet
NICのドライバ処理
パケットのパージング
Lookup,
Header書き換え
Policer, Shaper
Marking
カウンタ処理
Copyright©2018 NTT corp. All Rights Reserved.
パケット処理の流れ
受信処理
packet
フレーム処理
フロー検索
・ヘッダ書換え
QoS・Queue
送信処理
packet
NICのドライバ処理
パケットのパージング
Lookup,
Header書き換え
Policer, Shaper
Marking
カウンタ処理
Copyright©2018 NTT corp. All Rights Reserved.
パケット処理アプリ on Linux/PC
13
NIC
skb_buf
Ethernet Driver API
Socket API
vswitch
packet buffer
Data plane
ユーザ空間でのパケット処理アプリ
(イベントベースの処理)
1. Interrupt
& DMA
2. system call (read)
User
space
Kernel space
Driver
4. DMA
3. system call (write)
カーネル空間でのパケット処理
(イベントベースの処理)
NIC
skb_buf
Ethernet Driver API
Socket API
vswitch
packet buffer
1. Interrupt
& DMA
vswitch
Data plane
agentagent
2. DMA
Copyright©2018 NTT corp. All Rights Reserved.
パケット処理アプリ on Linux/PC
14
NIC
skb_buf
Ethernet Driver API
Socket API
vswitch
packet buffer
Data plane
ユーザ空間でのパケット処理アプリ
(イベントベースの処理)
1. Interrupt
& DMA
2. system call (read)
User
space
Kernel space
Driver
4. DMA
3. system call (write)
カーネル空間でのパケット処理
(イベントベースの処理)
NIC
skb_buf
Ethernet Driver API
Socket API
vswitch
packet buffer
1. Interrupt
& DMA
vswitch
Data plane
agentagent
2. DMA
Contexts switch
Interrupt-based
Many memory copy / read
Copyright©2018 NTT corp. All Rights Reserved.
DPDK パケット処理アプリ
15
DPDKアプリ
(ポーリングベースの処理)
NIC
Ethernet Driver API
Socket API
vswitch
packet buffer
agent
1. DMA
Write
2. DMA
READ
DPDK
Data plane
NIC
skb_buf
Ethernet Driver API
Socket API
vswitch
packet buffer
Data plane
ユーザ空間でのパケット処理アプリ
(イベントベースの処理)
1. Interrupt
& DMA
2. system call (read)
User
space
Kernel space
Driver
4. DMA
3. system call (write)
1. Interrupt
& DMA
agent Contexts switch
Interrupt-based
Many memory copy / read
Copyright©2018 NTT corp. All Rights Reserved.
参考:XDP
 KernelのNetworkStackに入る前に安全にいろいろできる
16
16
NIC
skb_buf
Ethernet Driver API
Socket API
packet buffer
vswitch
Data plane
agent
https://www.iovisor.org/technology/xdp
Copyright©2018 NTT corp. All Rights Reserved.
高速化のための実装の工夫
 処理のバイパス
 受信時パケットデータをNICのバッファから直接CPUキャッシュへ転送
(Intel Data Direct I/O)
 カーネルにおける処理のバイパス
 フロー検索$活用によるフロー検索処理の軽量化
 メモリアクセスの削減と局所化
 コンパクトな検索木の作成
 Thread local storageの活用
 パケット処理の部分化とそのCPUへの明示的な割当て
 パケット処理のCPUコアへの明示的な割り当て
 CPUやバスの内部接続を考慮したスレッドのCPUへの
割り当て
Copyright©2018 NTT corp. All Rights Reserved.
汎用サーバの構成
NIC
CPU CPUMemory
Memory
NIC
NICNIC
QPI
PCI-Exp PCI-Exp
Reference: supermicro X9DAi
Copyright©2018 NTT corp. All Rights Reserved.
Interop Tokyo 2016
 vNIC between DPDK-enabled Lagopus and
DPDK-enabled VNF (Virnos)
 Many vNICs and flow director (loadbalancing)
 8 VNFs and total 18 vNICs
HV VirNOS VirNOS VirNOS VirNOS
lagopus
lagopus
port2
port4 port6 port8 port10
port9port7port5port3
port1
Eth0
Eth1
Eth0
Eth1
Eth0
Eth1
Eth0
Eth1
Copyright©2018 NTT corp. All Rights Reserved.
Explicit resource assignment for
performance
 Packet processing workload aware assignment is
required for Lagopus and VNF
Memory
Memory
NIC
core
core
core
core
core
core
core
core
core
core
core
core
core
core
core
core
CPU0 CPU1
Traffic
Copyright©2018 NTT corp. All Rights Reserved.
Resource assign impacts in packet
processing performance
Memory Memory
NIC
core
core
core
core
core
core
core
core
core
core
core
core
core
core
core
core
CPU0 CPU1
Traffic
Lagopus 8 VNFs
Memory Memory
NIC
core
core
core
core
core
core
core
core
core
core
core
core
core
core
core
core
CPU0 CPU1
Traffic
Lagopus8 VNFs
4.4Gbps
10Gbps
Copyright©2018 NTT corp. All Rights Reserved.
パケット処理の流れ
受信処理
packet
フレーム処理
フロー検索
・ヘッダ書換え
QoS・Queue
送信処理
packet
NICのドライバ処理
パケットのパージング
Lookup,
Header書き換え
Policer, Shaper
Marking
カウンタ処理
Copyright©2018 NTT corp. All Rights Reserved.
フロー検索
 Open vSwitch
 OpenFlow
 VPP
 MAC & IP & L4 など
 Kamuee
 IPのみ
23
Copyright©2018 NTT corp. All Rights Reserved.
Open vSwtichのフロー検索
 2段階のキャッシュを利用する構造
24
- Ben Pfaff et al., The Design and Implementation of Open vSwitch , NSDI 2015
- Thomas F Herbert, FD.io/VPP OVS DPDK, DPDK User Space Summit 2015 Dublin
Copyright©2018 NTT corp. All Rights Reserved.
VPP
 VPPはネットワークスタックを処理するフレームワーク
 各ノードそれぞれのアルゴリズムで検索し,木をたどる
 Not OpenFlow
25
Copyright©2018 NTT corp. All Rights Reserved.
VPP vs OVS Performance
 OpenFlow用の検索とMAC用の検索で勝負しても差があるのは当たり前.
ユースケースに合わせたソフトウェアの採用が重要
http://dpdksummit.com/Archive/pdf/2016USA/Day02-Session04-ThomasHerbert-DPDKUSASummit2016.pdf
Poptrie
27
検索性能(1コア)
- 240.52 Mlps (Tier 1 backbone フルルート531,489経路,ランダムアドレス)
Radix Treeを多分木にして, 子ノード部分を配列とする. -> データ空間が非常に圧縮可能
CPUのLLC(Last Level Cacheに圧縮することができる)
参考: https://ja.tech.jar.jp/network/algorithms/poptrie/intro.html
ACM SIGCOMM’15再録. 東大浅井 特任助教(当時) 発明. NTT Com特許持ち
Copyright©2018 NTT corp. All Rights Reserved.
アジェンダ
 自己&プロジェクト紹介
 Lagopus
 Kamuee
 汎用サーバのアーキテクチャとソフトウェアスイッチ・
ルータへの影響
 フロー検索のアルゴリズムと性能特性への影響
 100Gbpsを達成するために
28
Performance: 400GbE x4 Interop Version
29
復習: 100Gbps
64byteだと148 Mpps!!
30
時間なんて圧倒的に足りない.
たったの20clockで何ができますか...
現在はたくさんCPUのコアがあるよ
40コア程度は積む時代になってきた
もうシングルスレッドでは間に合わない
必要な概念
● コンピュータ理論基礎 (NUMA,キャッシュ,etc..)
● 並列処理の概念
● 強い心
上記は, 1コアで20clock
2コアだったら40clockでいける.
(と考えることができる. わかりますか)
フォワーディング性能を実現するステップ
31
性能目標達成のために必要不可欠な技術要素100GbEルータの場合
①ルータの仕事は...
1. パケットの受信
2. パケット処理
1. 転送先経路の検索
2. 若干のパケットの書き換え
(TTL減算, checksum計算等)
3. パケットの送信
②パケット送受信は...
DPDKを使って,
IAサーバを使いこなす必要がある.
- 正しいコアを使うこと
- マルチコアを活用すること
- 必要に応じてHW支援機構を使う
復習..?: IAサーバを理解する (NUMA編)
NUMA: Non-Uniform Memory Access,
メモリ/デバイスのアクセスコストが任意のコアで均等になっていない構造
どのNICに対してどのCoreからアクセスをするか
32
NUMA: Back/Straight/Cross
33
CPUを跨がないから性能が良い
CPUを1度またぐから性能は落ちるが, 仕方ない
CPUを2度またぐから性能は落ちるし, 防げる
コアの割り当てを正しく行わないと,
計算機の性能が全く出ない.
マルチコアを活用する以前の問題である
現状では, コアの割り当て等に関しては,
プログラマが手動でチューニングしてい
る場合は多い
マルチコアへの負荷分散方式 (負荷分散ポイントに注目)
34
- RSS: Receive Side Scaling -> NICの機能
- RPS: Receive Packet Steering -> RSSをソフトウェア的に実現したもの
マルチコア活用術: 負荷分散3種類
35
ハードウェアによる負荷分散
CPUに無駄なリソースを割かない
Kamueeはこのタイプ
ロックフリー実現可能
ソフトウェアによる負荷分散
LBとかはよくのこの方式を用いる
特別なHW支援機構を必要としない
ロックフリー実現可能
ソフトウェアによる負荷分散
排他制御を行うことで,
RSSと同じ構造を作る.
ロックフリー実現不可能.
10GbE以上では, ロックがボトルネックで,
マルチコアの利点すら 薄れてしまう. パケ
ット処理に関してスレッド間で排他制御が
あると辛い. せっかくRSSでコスト0で負荷分
散したのに, それすら打ち消される
このどちらかを使おう. ロックはだめ.
Run to Completion Model & Pipeline Model
36
簡略化のために 10GbE x 2port 版
で説明
KamueeはRun to Completion
LagopusはPipeline
100GbEを実現するには
37
単純なルータとして..
● フォワーディング性能を最適化する
○ 正しいコアを使おう. (Bad NUMAに気をつける)
○ 負荷分散ポイントに気をつける (適宜HW支援機構を使う)
○ マルチコアを最大限に活用する
○ ロック等の排他制御は限りなく排除する. (パケット処理中はロックフリーでやる)
● 我々でもまだわからないことがあるのは事実
○ 低レイヤの沼のようなものがたくさん
○ チューニングミスだったり
○ メモリの扱いのせいだったり
○ HWのせいだったり
Copyright©2018 NTT corp. All Rights Reserved.
まとめ
 アーキテクチャ,アルゴリズムによって性能は大きく変わ
る
 目的とするユースケースによってアーキテクチャ,アルゴ
リズムも変わるので,性能特性も変わる
 アーキテクチャ,アルゴリズムを理解し,あたりをつけて
性能を実際に測りながら構築するのがよい
38

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

閉域網接続の技術入門
閉域網接続の技術入門閉域網接続の技術入門
閉域網接続の技術入門
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
 
DPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングDPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキング
 
AlmaLinux と Rocky Linux の誕生経緯&比較
AlmaLinux と Rocky Linux の誕生経緯&比較AlmaLinux と Rocky Linux の誕生経緯&比較
AlmaLinux と Rocky Linux の誕生経緯&比較
 
大規模DCのネットワークデザイン
大規模DCのネットワークデザイン大規模DCのネットワークデザイン
大規模DCのネットワークデザイン
 
BGP Unnumbered で遊んでみた
BGP Unnumbered で遊んでみたBGP Unnumbered で遊んでみた
BGP Unnumbered で遊んでみた
 
IPv4/IPv6 移行・共存技術の動向
IPv4/IPv6 移行・共存技術の動向IPv4/IPv6 移行・共存技術の動向
IPv4/IPv6 移行・共存技術の動向
 
containerdの概要と最近の機能
containerdの概要と最近の機能containerdの概要と最近の機能
containerdの概要と最近の機能
 
ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414
 
コンテナ時代のOpenStack
コンテナ時代のOpenStackコンテナ時代のOpenStack
コンテナ時代のOpenStack
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 
「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!
 
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
 
TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
 
KVM環境におけるネットワーク速度ベンチマーク
KVM環境におけるネットワーク速度ベンチマークKVM環境におけるネットワーク速度ベンチマーク
KVM環境におけるネットワーク速度ベンチマーク
 
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
 
急速に進化を続けるCNIプラグイン Antrea
急速に進化を続けるCNIプラグイン Antrea 急速に進化を続けるCNIプラグイン Antrea
急速に進化を続けるCNIプラグイン Antrea
 
Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
 
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
ネットワーク機器のAPIあれこれ入門(NetOpsCoding#2)ネットワーク機器のAPIあれこれ入門(NetOpsCoding#2)
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
 

Ähnlich wie [D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Festa 2018)

Oracle RACの弱点を克服する infinibandを使ったクラスターテクノロジー
Oracle RACの弱点を克服する infinibandを使ったクラスターテクノロジーOracle RACの弱点を克服する infinibandを使ったクラスターテクノロジー
Oracle RACの弱点を克服する infinibandを使ったクラスターテクノロジー
Insight Technology, Inc.
 

Ähnlich wie [D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Festa 2018) (20)

Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)
 
Lagopus workshop@Internet weekのそば
Lagopus workshop@Internet weekのそばLagopus workshop@Internet weekのそば
Lagopus workshop@Internet weekのそば
 
FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化
 
Lagopus Router
Lagopus RouterLagopus Router
Lagopus Router
 
プログラマ目線から見たRDMAのメリットと その応用例について
プログラマ目線から見たRDMAのメリットとその応用例についてプログラマ目線から見たRDMAのメリットとその応用例について
プログラマ目線から見たRDMAのメリットと その応用例について
 
次世代の高速メモリストレージ利用に向けたソフトウェアのモダナイゼーション
次世代の高速メモリストレージ利用に向けたソフトウェアのモダナイゼーション次世代の高速メモリストレージ利用に向けたソフトウェアのモダナイゼーション
次世代の高速メモリストレージ利用に向けたソフトウェアのモダナイゼーション
 
OpenStackを利用したNFVの商用化 - OpenStack最新情報セミナー 2017年7月
OpenStackを利用したNFVの商用化 - OpenStack最新情報セミナー 2017年7月OpenStackを利用したNFVの商用化 - OpenStack最新情報セミナー 2017年7月
OpenStackを利用したNFVの商用化 - OpenStack最新情報セミナー 2017年7月
 
Lagopus Router v19.07.1
Lagopus Router v19.07.1Lagopus Router v19.07.1
Lagopus Router v19.07.1
 
Application performance gree_20140908
Application performance gree_20140908Application performance gree_20140908
Application performance gree_20140908
 
YJTC18 A-1 データセンタネットワークの取り組み
YJTC18 A-1 データセンタネットワークの取り組みYJTC18 A-1 データセンタネットワークの取り組み
YJTC18 A-1 データセンタネットワークの取り組み
 
企業の成長を飛躍させるクラウドを ~クラウド勝者に導く次世代インフラとは~
企業の成長を飛躍させるクラウドを ~クラウド勝者に導く次世代インフラとは~企業の成長を飛躍させるクラウドを ~クラウド勝者に導く次世代インフラとは~
企業の成長を飛躍させるクラウドを ~クラウド勝者に導く次世代インフラとは~
 
ストレージ管理者が今、押さえておくべきネットワーク基本の「キ」 ~必要なのは性能とシンプルさ。その極意とは?~
ストレージ管理者が今、押さえておくべきネットワーク基本の「キ」 ~必要なのは性能とシンプルさ。その極意とは?~ストレージ管理者が今、押さえておくべきネットワーク基本の「キ」 ~必要なのは性能とシンプルさ。その極意とは?~
ストレージ管理者が今、押さえておくべきネットワーク基本の「キ」 ~必要なのは性能とシンプルさ。その極意とは?~
 
フロー技術によるネットワーク管理
フロー技術によるネットワーク管理フロー技術によるネットワーク管理
フロー技術によるネットワーク管理
 
Lagopus & NFV with Vhost (Tremaday#9)
Lagopus & NFV with Vhost (Tremaday#9)Lagopus & NFV with Vhost (Tremaday#9)
Lagopus & NFV with Vhost (Tremaday#9)
 
WebRTC/ORTCの最新動向まるわかり!
WebRTC/ORTCの最新動向まるわかり!WebRTC/ORTCの最新動向まるわかり!
WebRTC/ORTCの最新動向まるわかり!
 
Oracle RACの弱点を克服する infinibandを使ったクラスターテクノロジー
Oracle RACの弱点を克服する infinibandを使ったクラスターテクノロジーOracle RACの弱点を克服する infinibandを使ったクラスターテクノロジー
Oracle RACの弱点を克服する infinibandを使ったクラスターテクノロジー
 
Lagopus Switch Usecases
Lagopus Switch UsecasesLagopus Switch Usecases
Lagopus Switch Usecases
 
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
 
2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services
 
Reconf 201901
Reconf 201901Reconf 201901
Reconf 201901
 

Mehr von Tomoya Hibi

Mehr von Tomoya Hibi (10)

NPStudy LT Lagopus Router v19.07
NPStudy LT Lagopus Router v19.07NPStudy LT Lagopus Router v19.07
NPStudy LT Lagopus Router v19.07
 
LagopusとAzureとIPsecとDPDK
LagopusとAzureとIPsecとDPDKLagopusとAzureとIPsecとDPDK
LagopusとAzureとIPsecとDPDK
 
Osc2018tokyo spring-20180224
Osc2018tokyo spring-20180224Osc2018tokyo spring-20180224
Osc2018tokyo spring-20180224
 
Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続
 
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
 
IoTとOpenFlowのライトニングトーク
IoTとOpenFlowのライトニングトークIoTとOpenFlowのライトニングトーク
IoTとOpenFlowのライトニングトーク
 
Bird in show_net
Bird in show_netBird in show_net
Bird in show_net
 
Lagopusで試すFW
Lagopusで試すFWLagopusで試すFW
Lagopusで試すFW
 
Lagopusで試すFirewall
Lagopusで試すFirewallLagopusで試すFirewall
Lagopusで試すFirewall
 
ネットワークプログラマビリティ勉強会
ネットワークプログラマビリティ勉強会ネットワークプログラマビリティ勉強会
ネットワークプログラマビリティ勉強会
 

[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Festa 2018)

  • 1. Copyright©2018 NTT corp. All Rights Reserved. 高性能ソフトウェアルータ・スイッチ 活用の知見 日比 智也 城倉 弘樹(@slankdev) NTT未来ねっと研究所 NTT communications
  • 2. Copyright©2018 NTT corp. All Rights Reserved. アジェンダ  自己&プロジェクト紹介  Lagopus  Kamuee  汎用サーバのアーキテクチャとソフトウェアスイッチ・ ルータへの影響  フロー検索のアルゴリズムと性能特性への影響  100Gbpsを達成するために 1
  • 3. Copyright©2018 NTT corp. All Rights Reserved. 自己紹介(その1)  日比 智也  NTT未来ねっと研究所研究員(2012.4 - )  Lagopus project 開発メンバ (2013.4 - ) 2
  • 4. Copyright©2018 NTT corp. All Rights Reserved. Lagopus project  Develops SDN/NFV software node for carrier networks to realize  Differentiate services / Time-to-Market / Cost-efficiency  Supported by  The Ministry of Internal Affairs and Communications of Japan (April, 2013 - March, 2016)  NTT (April, 2013 -)  Release  Lagopus software OpenFlow 1.3 switch (July, 2014 - ) • https://github.com/lagopus/lagopus  Lagopus software router (Aug., 2017 - ) • https://github.com/lagopus/lagopus-router (alpha version) 3
  • 5. Copyright©2018 NTT corp. All Rights Reserved. Lagopus Router 4  Loose coupled modular-based design (like a microservice architecture)  Unified configuration datastore  Configuration defined by yang  Pub/Sub-like APIs, config datastore as a broker  Using existing routing agents  Slightly modified for APIs  High performance/extensibility dataplane  Fast path written in C + DPDK  Slow path written in go Lagopus Router Routing agent VRRP agent IKE agent MAT agent Dataplane Dataplane framework Network Interface L2 (Bridging) L3 (Routing) IPsec (crypto) Config datastore SDN controller/Orchestrator CLI gRPC gRPC or NETLINK
  • 6. 自己紹介 (その2) ● 城倉 弘樹 (SHIROKURA Hiroki) ○ Twitter: @slankdev ○ E-mail: slankdev@nttv6.jp ○ 2017 IPA未踏スーパークリエータ ○ セキュリティキャンプ講師 ● パケット処理関連のソフトウェア開発をしている. パケットが好き ● Hackのようなものも好き. (解析ツールとかを組み合わせて色々遊ぶのもすき)
  • 7. NTT Com 技術開発部 Kamuee 6 これまで ➔ NTT Comでソフトウェアルータを作った ➔ インターネットのフルルートを持ちつつも, ショートパケットで高性能な転送が可能なソフトウェアルータを作る. ➔ しかもそれをIAアーキテクチャのみで実現している ➔ 今後のSDN/NFVの課題である性能問題を解決する ➔ 社のサービスや製品化して, 貢献したい <- いまここ 関連研究 ➔ H. Asai, Y. Ohara "Poptrie: A Compressed Trie with Population Count for Fast and Scalable Software IP Routing Table Lookup", ACM SIGCOMM ‘15 ルーティングルックアップアルゴリズム ➔ Y. Ohara, Y. Yamagishi “Kamuee Zero: the Design and Implementation of Route Table for High-Performance Software Router”, IC ’16 高速なソフトウェアL3スイッチ設計実装 ➔ Interop 2018 shownet コアルータとして動かしていただいた.
  • 8. Copyright©2018 NTT corp. All Rights Reserved. なぜ汎用x86サーバなのか?  汎用サーバはかなり速くなっている  ほぼ毎年性能が改善される  コア数もどんどん増えている  どこでも入手可能かつ実行可能  秋葉原や近くの電気屋で買える  仮想環境上でも動作可能  安い  10万以下で8 core CPU, 6 port 1GbEの構成  予算にあわせて様々な構成で買える  エンジニアはいっぱいいる  開発環境・コンパイラ・ライブラリは充実 7
  • 9. Copyright©2018 NTT corp. All Rights Reserved. 10Gbps達成のために必要なパケット処理数 0 5,000,000 10,000,000 15,000,000 20,000,000 0 256 512 768 1024 1280 #ofpacketsperseconds Packet size (Byte) Short packet 64Byte 14.88 MPPS, 67.2 ns Computer packet 1KByte 1.2MPPS, 835 ns
  • 10. Copyright©2018 NTT corp. All Rights Reserved. 汎用サーバの構成 NIC CPU CPUMemory Memory NIC NICNIC QPI PCI-Exp PCI-Exp Reference: supermicro X9DAi
  • 11. Copyright©2018 NTT corp. All Rights Reserved. CPUのキャッシュとメモリの構成  階層化されたキャッシュを持っている  キャッシュに入っているデータ・アクセスはとても速い  メインメモリのデータを見る場合はとても遅い  連続するデータについてはプリフェッチ機構が 利用可能 Size (Byte) Bandwidth (GB/s) Latency - random L1 $ 32K 699 4 clock L2 $ 256K 228 12 clock L3 $ 6M 112 44 clock Memory G class 20 300 cycles (91 ns)
  • 12. Copyright©2018 NTT corp. All Rights Reserved. パケット処理の流れ 受信処理 packet フレーム処理 フロー検索 ・ヘッダ書換え QoS・Queue 送信処理 packet NICのドライバ処理 パケットのパージング Lookup, Header書き換え Policer, Shaper Marking カウンタ処理
  • 13. Copyright©2018 NTT corp. All Rights Reserved. パケット処理の流れ 受信処理 packet フレーム処理 フロー検索 ・ヘッダ書換え QoS・Queue 送信処理 packet NICのドライバ処理 パケットのパージング Lookup, Header書き換え Policer, Shaper Marking カウンタ処理
  • 14. Copyright©2018 NTT corp. All Rights Reserved. パケット処理アプリ on Linux/PC 13 NIC skb_buf Ethernet Driver API Socket API vswitch packet buffer Data plane ユーザ空間でのパケット処理アプリ (イベントベースの処理) 1. Interrupt & DMA 2. system call (read) User space Kernel space Driver 4. DMA 3. system call (write) カーネル空間でのパケット処理 (イベントベースの処理) NIC skb_buf Ethernet Driver API Socket API vswitch packet buffer 1. Interrupt & DMA vswitch Data plane agentagent 2. DMA
  • 15. Copyright©2018 NTT corp. All Rights Reserved. パケット処理アプリ on Linux/PC 14 NIC skb_buf Ethernet Driver API Socket API vswitch packet buffer Data plane ユーザ空間でのパケット処理アプリ (イベントベースの処理) 1. Interrupt & DMA 2. system call (read) User space Kernel space Driver 4. DMA 3. system call (write) カーネル空間でのパケット処理 (イベントベースの処理) NIC skb_buf Ethernet Driver API Socket API vswitch packet buffer 1. Interrupt & DMA vswitch Data plane agentagent 2. DMA Contexts switch Interrupt-based Many memory copy / read
  • 16. Copyright©2018 NTT corp. All Rights Reserved. DPDK パケット処理アプリ 15 DPDKアプリ (ポーリングベースの処理) NIC Ethernet Driver API Socket API vswitch packet buffer agent 1. DMA Write 2. DMA READ DPDK Data plane NIC skb_buf Ethernet Driver API Socket API vswitch packet buffer Data plane ユーザ空間でのパケット処理アプリ (イベントベースの処理) 1. Interrupt & DMA 2. system call (read) User space Kernel space Driver 4. DMA 3. system call (write) 1. Interrupt & DMA agent Contexts switch Interrupt-based Many memory copy / read
  • 17. Copyright©2018 NTT corp. All Rights Reserved. 参考:XDP  KernelのNetworkStackに入る前に安全にいろいろできる 16 16 NIC skb_buf Ethernet Driver API Socket API packet buffer vswitch Data plane agent https://www.iovisor.org/technology/xdp
  • 18. Copyright©2018 NTT corp. All Rights Reserved. 高速化のための実装の工夫  処理のバイパス  受信時パケットデータをNICのバッファから直接CPUキャッシュへ転送 (Intel Data Direct I/O)  カーネルにおける処理のバイパス  フロー検索$活用によるフロー検索処理の軽量化  メモリアクセスの削減と局所化  コンパクトな検索木の作成  Thread local storageの活用  パケット処理の部分化とそのCPUへの明示的な割当て  パケット処理のCPUコアへの明示的な割り当て  CPUやバスの内部接続を考慮したスレッドのCPUへの 割り当て
  • 19. Copyright©2018 NTT corp. All Rights Reserved. 汎用サーバの構成 NIC CPU CPUMemory Memory NIC NICNIC QPI PCI-Exp PCI-Exp Reference: supermicro X9DAi
  • 20. Copyright©2018 NTT corp. All Rights Reserved. Interop Tokyo 2016  vNIC between DPDK-enabled Lagopus and DPDK-enabled VNF (Virnos)  Many vNICs and flow director (loadbalancing)  8 VNFs and total 18 vNICs HV VirNOS VirNOS VirNOS VirNOS lagopus lagopus port2 port4 port6 port8 port10 port9port7port5port3 port1 Eth0 Eth1 Eth0 Eth1 Eth0 Eth1 Eth0 Eth1
  • 21. Copyright©2018 NTT corp. All Rights Reserved. Explicit resource assignment for performance  Packet processing workload aware assignment is required for Lagopus and VNF Memory Memory NIC core core core core core core core core core core core core core core core core CPU0 CPU1 Traffic
  • 22. Copyright©2018 NTT corp. All Rights Reserved. Resource assign impacts in packet processing performance Memory Memory NIC core core core core core core core core core core core core core core core core CPU0 CPU1 Traffic Lagopus 8 VNFs Memory Memory NIC core core core core core core core core core core core core core core core core CPU0 CPU1 Traffic Lagopus8 VNFs 4.4Gbps 10Gbps
  • 23. Copyright©2018 NTT corp. All Rights Reserved. パケット処理の流れ 受信処理 packet フレーム処理 フロー検索 ・ヘッダ書換え QoS・Queue 送信処理 packet NICのドライバ処理 パケットのパージング Lookup, Header書き換え Policer, Shaper Marking カウンタ処理
  • 24. Copyright©2018 NTT corp. All Rights Reserved. フロー検索  Open vSwitch  OpenFlow  VPP  MAC & IP & L4 など  Kamuee  IPのみ 23
  • 25. Copyright©2018 NTT corp. All Rights Reserved. Open vSwtichのフロー検索  2段階のキャッシュを利用する構造 24 - Ben Pfaff et al., The Design and Implementation of Open vSwitch , NSDI 2015 - Thomas F Herbert, FD.io/VPP OVS DPDK, DPDK User Space Summit 2015 Dublin
  • 26. Copyright©2018 NTT corp. All Rights Reserved. VPP  VPPはネットワークスタックを処理するフレームワーク  各ノードそれぞれのアルゴリズムで検索し,木をたどる  Not OpenFlow 25
  • 27. Copyright©2018 NTT corp. All Rights Reserved. VPP vs OVS Performance  OpenFlow用の検索とMAC用の検索で勝負しても差があるのは当たり前. ユースケースに合わせたソフトウェアの採用が重要 http://dpdksummit.com/Archive/pdf/2016USA/Day02-Session04-ThomasHerbert-DPDKUSASummit2016.pdf
  • 28. Poptrie 27 検索性能(1コア) - 240.52 Mlps (Tier 1 backbone フルルート531,489経路,ランダムアドレス) Radix Treeを多分木にして, 子ノード部分を配列とする. -> データ空間が非常に圧縮可能 CPUのLLC(Last Level Cacheに圧縮することができる) 参考: https://ja.tech.jar.jp/network/algorithms/poptrie/intro.html ACM SIGCOMM’15再録. 東大浅井 特任助教(当時) 発明. NTT Com特許持ち
  • 29. Copyright©2018 NTT corp. All Rights Reserved. アジェンダ  自己&プロジェクト紹介  Lagopus  Kamuee  汎用サーバのアーキテクチャとソフトウェアスイッチ・ ルータへの影響  フロー検索のアルゴリズムと性能特性への影響  100Gbpsを達成するために 28
  • 30. Performance: 400GbE x4 Interop Version 29
  • 31. 復習: 100Gbps 64byteだと148 Mpps!! 30 時間なんて圧倒的に足りない. たったの20clockで何ができますか... 現在はたくさんCPUのコアがあるよ 40コア程度は積む時代になってきた もうシングルスレッドでは間に合わない 必要な概念 ● コンピュータ理論基礎 (NUMA,キャッシュ,etc..) ● 並列処理の概念 ● 強い心 上記は, 1コアで20clock 2コアだったら40clockでいける. (と考えることができる. わかりますか)
  • 32. フォワーディング性能を実現するステップ 31 性能目標達成のために必要不可欠な技術要素100GbEルータの場合 ①ルータの仕事は... 1. パケットの受信 2. パケット処理 1. 転送先経路の検索 2. 若干のパケットの書き換え (TTL減算, checksum計算等) 3. パケットの送信 ②パケット送受信は... DPDKを使って, IAサーバを使いこなす必要がある. - 正しいコアを使うこと - マルチコアを活用すること - 必要に応じてHW支援機構を使う
  • 33. 復習..?: IAサーバを理解する (NUMA編) NUMA: Non-Uniform Memory Access, メモリ/デバイスのアクセスコストが任意のコアで均等になっていない構造 どのNICに対してどのCoreからアクセスをするか 32
  • 34. NUMA: Back/Straight/Cross 33 CPUを跨がないから性能が良い CPUを1度またぐから性能は落ちるが, 仕方ない CPUを2度またぐから性能は落ちるし, 防げる コアの割り当てを正しく行わないと, 計算機の性能が全く出ない. マルチコアを活用する以前の問題である 現状では, コアの割り当て等に関しては, プログラマが手動でチューニングしてい る場合は多い
  • 35. マルチコアへの負荷分散方式 (負荷分散ポイントに注目) 34 - RSS: Receive Side Scaling -> NICの機能 - RPS: Receive Packet Steering -> RSSをソフトウェア的に実現したもの
  • 36. マルチコア活用術: 負荷分散3種類 35 ハードウェアによる負荷分散 CPUに無駄なリソースを割かない Kamueeはこのタイプ ロックフリー実現可能 ソフトウェアによる負荷分散 LBとかはよくのこの方式を用いる 特別なHW支援機構を必要としない ロックフリー実現可能 ソフトウェアによる負荷分散 排他制御を行うことで, RSSと同じ構造を作る. ロックフリー実現不可能. 10GbE以上では, ロックがボトルネックで, マルチコアの利点すら 薄れてしまう. パケ ット処理に関してスレッド間で排他制御が あると辛い. せっかくRSSでコスト0で負荷分 散したのに, それすら打ち消される このどちらかを使おう. ロックはだめ.
  • 37. Run to Completion Model & Pipeline Model 36 簡略化のために 10GbE x 2port 版 で説明 KamueeはRun to Completion LagopusはPipeline
  • 38. 100GbEを実現するには 37 単純なルータとして.. ● フォワーディング性能を最適化する ○ 正しいコアを使おう. (Bad NUMAに気をつける) ○ 負荷分散ポイントに気をつける (適宜HW支援機構を使う) ○ マルチコアを最大限に活用する ○ ロック等の排他制御は限りなく排除する. (パケット処理中はロックフリーでやる) ● 我々でもまだわからないことがあるのは事実 ○ 低レイヤの沼のようなものがたくさん ○ チューニングミスだったり ○ メモリの扱いのせいだったり ○ HWのせいだったり
  • 39. Copyright©2018 NTT corp. All Rights Reserved. まとめ  アーキテクチャ,アルゴリズムによって性能は大きく変わ る  目的とするユースケースによってアーキテクチャ,アルゴ リズムも変わるので,性能特性も変わる  アーキテクチャ,アルゴリズムを理解し,あたりをつけて 性能を実際に測りながら構築するのがよい 38