Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
TapAggregationを使ったデータプレーン性能測定
Search
Mabuchin
October 01, 2018
Technology
0
230
TapAggregationを使ったデータプレーン性能測定
Mabuchin
October 01, 2018
Tweet
Share
More Decks by Mabuchin
See All by Mabuchin
TIPSTARのライブ・プロダクションシステムの裏側
mabuchin
1
1.3k
ホワイトボックス伝送の動向と商用利用について
mabuchin
3
760
WhiteBoxSwitch NOSの変遷
mabuchin
5
2k
Cassini + Goldstone DCI use case and challenges
mabuchin
1
230
転びながらもネットワーク処理をソフトウェアで自作していく話
mabuchin
8
4.5k
モダンなネットワーク構成管理DBを最小労力で開発する
mabuchin
3
860
Gitでネットワークオペレーションを進める話
mabuchin
0
120
Github PullRequestで作業半自動化
mabuchin
0
89
お手軽! BGP RIBのリアルタイム経路解析+可視化
mabuchin
0
370
Other Decks in Technology
See All in Technology
製造業からパッケージ製品まで、あらゆる領域をカバー!生成AIを利用したテストシナリオ生成 / 20250627 Suguru Ishii
shift_evolve
PRO
1
160
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
26k
自律的なスケーリング手法FASTにおけるVPoEとしてのアカウンタビリティ / dev-productivity-con-2025
yoshikiiida
1
2.2k
GitHub Copilot の概要
tomokusaba
1
150
KubeCon + CloudNativeCon Japan 2025 Recap Opening & Choose Your Own Adventureシリーズまとめ
mmmatsuda
0
240
AI導入の理想と現実~コストと浸透〜
oprstchn
0
160
Yamla: Rustでつくるリアルタイム性を追求した機械学習基盤 / Yamla: A Rust-Based Machine Learning Platform Pursuing Real-Time Capabilities
lycorptech_jp
PRO
4
180
Flutter向けPDFビューア、pdfrxのpdfium WASM対応について
espresso3389
0
110
ビギナーであり続ける/beginning
ikuodanaka
3
440
PHPでWebブラウザのレンダリングエンジンを実装する
dip_tech
PRO
0
220
AWS Organizations 新機能!マルチパーティ承認の紹介
yhana
1
230
低レイヤを知りたいPHPerのためのCコンパイラ作成入門 完全版 / Building a C Compiler for PHPers Who Want to Dive into Low-Level Programming - Expanded
tomzoh
4
3.4k
Featured
See All Featured
Code Review Best Practice
trishagee
69
18k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
Git: the NoSQL Database
bkeepers
PRO
430
65k
Rails Girls Zürich Keynote
gr2m
94
14k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
Being A Developer After 40
akosma
90
590k
GitHub's CSS Performance
jonrohan
1031
460k
A better future with KSS
kneath
239
17k
Rebuilding a faster, lazier Slack
samanthasiow
82
9.1k
How GitHub (no longer) Works
holman
314
140k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
Transcript
TapAggregationを⽤いた レイテンシ測定 2018.12.06 Toshiya Mabuchi 株式会社ミクシィ XFLAG スタジオ
About • ⾺淵俊弥 / Toshiya Mabuchi • 開発本部 XFLAG事業推進室 インフラ開発グループ
• 主にやっていること • AS38651ネットワークまわりの運⽤ • DPDK/XDP等のパケット⾼速処理技術を⽤いたネットワーク基盤開発 • ネットワーク運⽤⾃動化(⾼度化)に向けたコード整備 • ネットワーク制御のためのAPI/コントロールプレーンの開発
ネットワーク開発? • ユーザがプログラマブルかつ⾼速にパケット処理できる技術の確⽴ (DPDK/XDP/Netmap/FD.io/P4/SmartNIC/ etc...) • Linuxユーザランドで動作させるようなものでも、40Mppsくらい余裕で出る • 一般的なサーバーを使い、自社に適したネットワーク処理を追加することができる •
ネットワークの自由度の大幅な向上が見込める • P4/SmartNICの利用により、ASICとほぼ同等の処理性能を得られるケースも • レイテンシやパケロスロス等、性能⾯のテストを⾃分達で検査する必要 • 保守も当然自分たちなので、保守できる範囲も考えなければならない →まずは自社特有の事情にマッチする点にに利用していくパターンが多い
データプレーン開発する際に考慮する点 • パケット加⼯処理が、どの程度オーバーヘッドを⽣んでいるか ≒ レイテンシにどの程度影響を与えるのか • オーバーヘッドとなる要因は様々 • パケット加工時のアルゴリズム(特にInner周りの処理) •
各プロトコルChecksum等の計算方法(Offload/自力) • メモリの取扱い • NIC性能 • CPU性能 などなど.... 「処理による遅延」を「可能な限り正確に」測定し、 許容できないオーバーヘッドを生んでいないか確かめることが重要
GRE Decap機能の開発時における 性能の測定例
Gre Decapについて • こんな感じでGREを単純にDecapする機能を実装 • ASIC/FPGA/DPDKの3種類を実装し比較 スマホアプリ「モンスト」も支えるデータプレーン技術 hJps://speakerdeck.com/junpei_y/sumahoapuri-monsutasutoraiku-mozhi-erudetapurenji-shu
性能をどう計測するか • 帯域性能検査 • T-REX • DPDKベースのOSSトラフィックジェネレータ • 対象を挟んだLoopBack的な試験で送信/受信パケットの総数や帯域の検査が可能 •
Python API / GUIどちらもそこそこ使える • パフォーマンステストをコードベースで記述し何度もデータを簡単に取れる • Scapyベースでパケットを生成して送付できるのでコードも簡単 • 遅延性能検査 • Tap Aggregation • Nano secレベルでレイテンシの計測が可能 • テストする実パケット自体には手を加えずに計測が可能
Tap Aggregation
Tap Aggregation? • ⽂字通り、TapをAggregationするArista独⾃機能 • Tap⾃体するわけではなく、あくまでTapしたパケットをまとめ、 解析するサーバー等にL1的に纏めて渡すことができる。 • 解析サーバーが少なく済み、サーバー性能に依存せずに、 簡単なパケット処理やフィルタを⾏った上で解析が可能
Router Switch Router Switch Arista 7280/7130/5104 Analyze Server tap Tap interface Tool interface
• オプション機能がいくつかある • Timestamp機能 ASIC ClockをもとにしたIEEE1588(PTP) ToD形式のタイムスタンプを埋め込む機能 • Replace Souce
Mac: Souce Mac Addressを48bitのTimestampに上書きする パーサを書かなくていいので、取扱いが楽 • Extend L2 Header : Etherヘッダに拡張で独自のヘッダーを挿入する • Filtering機能 • ACLと同じ感覚で、特定条件に沿ったパケットのみ解析するサーバーに送付可能 (e.g. TCP dst port 80のみ解析サーバへ送る) Tap Aggregationオプション機能
Tap Aggregation Timestamp • 今回はSource Mac addressを書き換える⽅法を採⽤ • 追加でパケットのパーサを書く必要がない •
Source Mac addressの情報は解析時には不要なので問題無し • 48bit IEEE1588 ToD Formatで、秒数変換も難しくない 16bit 32bit 48bit Second nano second (/30nano sec) ※MSB 2bitは0固定なので実質30bit
計測結果
計測結果 スマホアプリ「モンスト」も支えるデータプレーン技術 hJps://speakerdeck.com/junpei_y/sumahoapuri-monsutasutoraiku-mozhi-erudetapurenji-shu
まとめ • データプレーン開発 • すでに十分適用可能なレベルに開発が進んできている • SmartNIC/DPDKともにASIC性能には及ばないが、十分な性能 • 処理のオーバーヘッドにはそれなりに気を使っている •
開発サポートのツールとしてのTap Aggregation • nsecレベルで正確にレイテンシ計測が可能 • 開発時の指標として正確に遅延計測 • 解析するためのサーバーは1台でオッケー • SrcMacに埋め込む形式なら解析の手間もかからない
最後に... トラブルシュート利⽤への展望 • Tap Aggregationのフィルタリング機能 • 網内パケットのトラブルシュートに非常に有効 • PolicyベースでTAPパケットをフィルタリング -
ICMP ErrorやTCP RetransmitのみTap Aggregationで解析 問題が発生している箇所をDestination IPで可視化することで、 現状況と原因を、素早く的確な箇所で切り分けが可能 こんなイメージ ・・・というアイディア
None