SlideShare a Scribd company logo
DPDK QoS
May 17, 2015
Masaru OKI @masaru0714
● Linux上で動く、高速なパケットI/O処理を実現するためのライブラリ。
○ C言語で書かれている。C++からも呼び出し可能。
○ 特定のEthrenetポートを「DPDK専用」に切り替えて送受信する。
○ 特定のCPU(コア/スレッド)を「DPDK専用」として動作させる。
○ 受信パケットの単純転送で、10GbEワイヤーレートが出せる。
○ メモリープール管理やロックレスリングバッファなどの機能も提供。
○ ネットワークスタックは含まない。
● Intelが開発し、現在はhttp://dpdk.org/ にて開発が続いている。
● 2015年5月時点での最新バージョンはv2.0.0
● BSD Licenseで公開されている。
About DPDK
main() {
rte_mbuf *array[size]; /* パケット受信用バッファ */
init(); /* もろもろ初期化 */
for (;;) {
rte_eth_rx_burst(0, 0, array, size); /* API: portid 0のパケットを受信 */
rte_eth_tx_burst(1, 0, array, size); /* API: パケットをportid 1に送信 */
}
}
「パケットを受信」「データをパケットとして送信」がAPIになっているので呼び出す。
複数ポートを処理する場合はこれらを並べるか、スレッドを分けて並列に動かす。
DPDKのプログラム
QoS: Quality of Service (サービス品質)
通信パケットをすべて均等に扱うのではなく、種類や宛先、通信量等の
種類により流量を加減したり優先度を変えるなど、通信内容にに対して
要求される通信品質を適切に確保する技術および実装。
DPDKで提供されているQoSの実装は2つある。
● qos_meter: メータリング(パケットを流量によって3段階に色分けする)
● qos_sched: スケジューリング(優先度等によるパケットの並べ替え)
DPDKのQoS
RFCに基づく2種類のメータリングAPIが用意されている。
● RFC2697 srtcm (Single Rate Three Color Meter)
● RFC2698 trtcm (Two Rate Three Color Meter)
使い方
経過時間(Time Stamp Counterの値)とともにパケットをパラメータに与え
てrte_meter APIを呼び出すと、3種類のcolorのどれに相当するかが返っ
てくる。(パラメータ詳細はRFCやDPDKのドキュメントを参照)
○ GREEN
○ YELLOW
○ RED
ユーザプログラムはcolorに応じて処理をする。(REDはdropするなど)
DPDK QoS (meter)
階層化スケジューラが用意されている。
● あらかじめEthernetポートを論理的に分割しておく。
● 分割単位は階層化されている。
● ユーザプログラムは受信パケットに対して分割単位の情報を書き込む
● スケジューラは分割単位の優先度などに応じてパケットを並べ替える。
● スケジューラはキューを持っていて、あふれたパケットはdropされる。
階層は下記となっている。
1. Port
2. Subport
3. Pipe
4. Traffic Class
5. Queue
DPDK QoS (sched)
● Port
○ Ethernetポート。複数ポートの優先順位は均等。
● Subport
○ Portを単数あるいは複数に分割したもの。
○ それぞれ転送レートを指定できる。
● Pipe
○ Subportを単数あるいは複数に分割したもの。帯域は等分される。
● Traffic class
○ Pipeを流れるパケットを優先度別にクラスわけする。4クラス固定。
● Queue
○ Pipeを流れるパケットをキューイングする最小単位。
○ Traffic classごとに4固定。Weighted Round Robin(WRR)でdequeueされる。
QoS(sched)の各階層
4キュー
4クラス
図にするとこう
sched_port
subport 0 subport 1 subport 2
pipe 2pipe 1pipe 0 pipe 0 pipe 1
tc0 tc1 tc2 tc3
tc0 tc1 tc2 tc3
tc0 tc1 tc2 tc3
tc0 tc1 tc2 tc3
tc0 tc1 tc2 tc3
tc0 tc1 tc2 tc3q0 q1 q2 q3
q0 q1 q2 q3
q0 q1 q2 q3
q0 q1 q2 q3
q0 q1 q2 q3
q0 q1 q2 q3
q0 q1 q2 q3
q0 q1 q2 q3
任意の帯域
pipe 1pipe 0subportを等分割
1. 準備
1.1. rte_eth_dev_configure()等でポートの使用準備
1.2. rte_sched_port_config()
1.3. rte_sched_subport_config()
1.4. rte_sched_pipe_config()
2. 送受信
2.1. rte_eth_rx_burst()でパケット受信
2.2. rte_sched_port_pkt_write()
2.3. rte_sched_port_enqueue()
2.4. rte_sched_port_dequeue()
2.5. rte_eth_tx_burst()でパケット送信
使い方
1. rte_sched_*_config
あらかじめスケジューリングの階層パラメータを設定
2. rte_sched_port_pkt_write
パケットをどのキューに入れるか情報を書き込み
3. rte_sched_port_enqueue
キューイングすると
4. rte_sched_port_dequeue
スケジューリング設定に応じた順序でパケットを取り出せる。
大雑把な解説
4キュー
4クラス
rte_sched_port_pkt_write()
subport 0 subport 1 subport 2
pipe 2pipe 1pipe 0 pipe 0 pipe 1
tc0 tc1 tc2 tc3
tc0 tc1 tc2 tc3
tc0 tc1 tc2 tc3
tc0 tc1 tc2 tc3
tc0 tc1 tc2 tc3
tc0 tc1 tc2 tc3q0 q1 q2 q3
q0 q1 q2 q3
q0 q1 q2 q3
q0 q1 q2 q3
q0 q1 q2 q3
q0 q1 q2 q3
q0 q1 q2 q3
q0 q1 q2 q3
任意の帯域
pipe 1pipe 0subportを等分割
パケットをどのキューに書き込むかを具体的に指定。
sched_port

More Related Content

What's hot (20)

PDF
DPDKによる高速コンテナネットワーキング
Tomoya Hibi
 
PDF
NETCONFとYANGの話
Masakazu Asama
 
PDF
10GbE時代のネットワークI/O高速化
Takuya ASADA
 
PPTX
FD.io VPP事始め
tetsusat
 
PDF
Intel dpdk Tutorial
Saifuddin Kaijar
 
PDF
Linux Linux Traffic Control
SUSE Labs Taipei
 
PDF
ネットワークOS野郎 ~ インフラ野郎Night 20160414
Kentaro Ebisawa
 
PDF
20111015 勉強会 (PCIe / SR-IOV)
Kentaro Ebisawa
 
PDF
閉域網接続の技術入門
Masayuki Kobayashi
 
PDF
Linux packet-forwarding
Masakazu Asama
 
PDF
NEDIA_SNIA_CXL_講演資料.pdf
Yasunori Goto
 
PPTX
3GPP TR38.801-e00まとめ
Tetsuya Hasegawa
 
PDF
TC Flower Offload
Netronome
 
PPTX
Linux Network Stack
Adrien Mahieux
 
PPTX
Introduction to DPDK
Kernel TLV
 
PDF
How to Speak Intel DPDK KNI for Web Services.
Naoto MATSUMOTO
 
PPTX
Tutorial: Using GoBGP as an IXP connecting router
Shu Sugimoto
 
PDF
HPCユーザが知っておきたいTCP/IPの話 ~クラスタ・グリッド環境の落とし穴~
Ryousei Takano
 
PDF
DPDKを用いたネットワークスタック,高性能通信基盤開発
slankdev
 
PDF
BGP Unnumbered で遊んでみた
akira6592
 
DPDKによる高速コンテナネットワーキング
Tomoya Hibi
 
NETCONFとYANGの話
Masakazu Asama
 
10GbE時代のネットワークI/O高速化
Takuya ASADA
 
FD.io VPP事始め
tetsusat
 
Intel dpdk Tutorial
Saifuddin Kaijar
 
Linux Linux Traffic Control
SUSE Labs Taipei
 
ネットワークOS野郎 ~ インフラ野郎Night 20160414
Kentaro Ebisawa
 
20111015 勉強会 (PCIe / SR-IOV)
Kentaro Ebisawa
 
閉域網接続の技術入門
Masayuki Kobayashi
 
Linux packet-forwarding
Masakazu Asama
 
NEDIA_SNIA_CXL_講演資料.pdf
Yasunori Goto
 
3GPP TR38.801-e00まとめ
Tetsuya Hasegawa
 
TC Flower Offload
Netronome
 
Linux Network Stack
Adrien Mahieux
 
Introduction to DPDK
Kernel TLV
 
How to Speak Intel DPDK KNI for Web Services.
Naoto MATSUMOTO
 
Tutorial: Using GoBGP as an IXP connecting router
Shu Sugimoto
 
HPCユーザが知っておきたいTCP/IPの話 ~クラスタ・グリッド環境の落とし穴~
Ryousei Takano
 
DPDKを用いたネットワークスタック,高性能通信基盤開発
slankdev
 
BGP Unnumbered で遊んでみた
akira6592
 

Viewers also liked (20)

PDF
Dpdk環境の話
Masaru Oki
 
PPTX
apps of nanotech
KARTHICK JAGA
 
PDF
Cuaderno caligrafia anaya 2
mjrivasmedina
 
PPT
8 Campaign Tactics if I am a 2016 Presidentiable
Jose Radin Garduque
 
PPT
8 Colorful Ideas for My Country (The Filipino Youth)
Jose Radin Garduque
 
PPTX
Thailand (Socio-Cultural Setting)
Jose Radin Garduque
 
PPTX
Myanmar: Political Setting
Jose Radin Garduque
 
PPTX
Vietnam: Socio-Cultural Setting
Jose Radin Garduque
 
PPTX
bls
Andretam
 
PPTX
Cambodia
Jose Radin Garduque
 
PDF
Lagopus on small arm board
Masaru Oki
 
PPTX
Singapore: Political Setting
Jose Radin Garduque
 
PPT
Philippine Civil War Theories
Jose Radin Garduque
 
PPTX
The One Who Deserves (Silent Protest)
Jose Radin Garduque
 
PPTX
cgfh
Andretam
 
PPTX
Dracula presentation with answers ok
alexteacherproa
 
PPTX
Thailand (Political Setting)
Jose Radin Garduque
 
PPT
PARADIGMAS URBANOS. Guía sitio 2016
Arquitectura Civil
 
PPTX
Indonesia: Socio-Cultural Setting
Jose Radin Garduque
 
DOCX
Bao cao thuc_tap
Tan Do
 
Dpdk環境の話
Masaru Oki
 
apps of nanotech
KARTHICK JAGA
 
Cuaderno caligrafia anaya 2
mjrivasmedina
 
8 Campaign Tactics if I am a 2016 Presidentiable
Jose Radin Garduque
 
8 Colorful Ideas for My Country (The Filipino Youth)
Jose Radin Garduque
 
Thailand (Socio-Cultural Setting)
Jose Radin Garduque
 
Myanmar: Political Setting
Jose Radin Garduque
 
Vietnam: Socio-Cultural Setting
Jose Radin Garduque
 
Lagopus on small arm board
Masaru Oki
 
Singapore: Political Setting
Jose Radin Garduque
 
Philippine Civil War Theories
Jose Radin Garduque
 
The One Who Deserves (Silent Protest)
Jose Radin Garduque
 
cgfh
Andretam
 
Dracula presentation with answers ok
alexteacherproa
 
Thailand (Political Setting)
Jose Radin Garduque
 
PARADIGMAS URBANOS. Guía sitio 2016
Arquitectura Civil
 
Indonesia: Socio-Cultural Setting
Jose Radin Garduque
 
Bao cao thuc_tap
Tan Do
 
Ad

More from Masaru Oki (20)

PDF
NetBSD移植の昔話
Masaru Oki
 
PDF
Rust-DPDK
Masaru Oki
 
PDF
Rust-DPDK
Masaru Oki
 
PDF
Lagopusとvagrant
Masaru Oki
 
PDF
OpenFlowでいろんなプロトコルを 話そうとするとどうなるか
Masaru Oki
 
PDF
今よりも少し(?)昔、 Windowsを作ろうとした話
Masaru Oki
 
PDF
Onieで遊んでみようとした話
Masaru Oki
 
PDF
GPD WINが来た!
Masaru Oki
 
PDF
新生Lagopus2017(仮称)
Masaru Oki
 
PDF
Lagopus as open flow hybrid switch 実践編
Masaru Oki
 
PDF
LagopusでPPPoEを使えるか考えてみた件
Masaru Oki
 
PDF
Lagopus どれだけ速いのか
Masaru Oki
 
PDF
Lagopus 0.2.7
Masaru Oki
 
PDF
Ryu+Lagopusで OpenFlowの動きを見てみよう
Masaru Oki
 
PDF
Lagopus match improvements
Masaru Oki
 
PDF
Lagopus 0.2.4
Masaru Oki
 
PDF
Open flow tunnel extension on lagopus vswitch
Masaru Oki
 
PDF
Lagopus as open flow hybrid switch
Masaru Oki
 
PDF
Net bsd advent calendar 2015 bpf
Masaru Oki
 
PDF
Using rump on NetBSD 7.0
Masaru Oki
 
NetBSD移植の昔話
Masaru Oki
 
Rust-DPDK
Masaru Oki
 
Rust-DPDK
Masaru Oki
 
Lagopusとvagrant
Masaru Oki
 
OpenFlowでいろんなプロトコルを 話そうとするとどうなるか
Masaru Oki
 
今よりも少し(?)昔、 Windowsを作ろうとした話
Masaru Oki
 
Onieで遊んでみようとした話
Masaru Oki
 
GPD WINが来た!
Masaru Oki
 
新生Lagopus2017(仮称)
Masaru Oki
 
Lagopus as open flow hybrid switch 実践編
Masaru Oki
 
LagopusでPPPoEを使えるか考えてみた件
Masaru Oki
 
Lagopus どれだけ速いのか
Masaru Oki
 
Lagopus 0.2.7
Masaru Oki
 
Ryu+Lagopusで OpenFlowの動きを見てみよう
Masaru Oki
 
Lagopus match improvements
Masaru Oki
 
Lagopus 0.2.4
Masaru Oki
 
Open flow tunnel extension on lagopus vswitch
Masaru Oki
 
Lagopus as open flow hybrid switch
Masaru Oki
 
Net bsd advent calendar 2015 bpf
Masaru Oki
 
Using rump on NetBSD 7.0
Masaru Oki
 
Ad

Recently uploaded (9)

PPTX
勉強会_ターミナルコマンド入力迅速化_20250620. pptx. .
iPride Co., Ltd.
 
PDF
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
 
PPTX
色について.pptx .
iPride Co., Ltd.
 
PPTX
Vibe Codingを始めよう 〜Cursorを例に、ノーコードでのプログラミング体験〜
iPride Co., Ltd.
 
PDF
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
 
PDF
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
 
PDF
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
 
PDF
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
 
PDF
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
 
勉強会_ターミナルコマンド入力迅速化_20250620. pptx. .
iPride Co., Ltd.
 
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
 
色について.pptx .
iPride Co., Ltd.
 
Vibe Codingを始めよう 〜Cursorを例に、ノーコードでのプログラミング体験〜
iPride Co., Ltd.
 
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
 
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
 
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
 
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
 
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
 

DPDK QoS

  • 1. DPDK QoS May 17, 2015 Masaru OKI @masaru0714
  • 2. ● Linux上で動く、高速なパケットI/O処理を実現するためのライブラリ。 ○ C言語で書かれている。C++からも呼び出し可能。 ○ 特定のEthrenetポートを「DPDK専用」に切り替えて送受信する。 ○ 特定のCPU(コア/スレッド)を「DPDK専用」として動作させる。 ○ 受信パケットの単純転送で、10GbEワイヤーレートが出せる。 ○ メモリープール管理やロックレスリングバッファなどの機能も提供。 ○ ネットワークスタックは含まない。 ● Intelが開発し、現在はhttp://dpdk.org/ にて開発が続いている。 ● 2015年5月時点での最新バージョンはv2.0.0 ● BSD Licenseで公開されている。 About DPDK
  • 3. main() { rte_mbuf *array[size]; /* パケット受信用バッファ */ init(); /* もろもろ初期化 */ for (;;) { rte_eth_rx_burst(0, 0, array, size); /* API: portid 0のパケットを受信 */ rte_eth_tx_burst(1, 0, array, size); /* API: パケットをportid 1に送信 */ } } 「パケットを受信」「データをパケットとして送信」がAPIになっているので呼び出す。 複数ポートを処理する場合はこれらを並べるか、スレッドを分けて並列に動かす。 DPDKのプログラム
  • 4. QoS: Quality of Service (サービス品質) 通信パケットをすべて均等に扱うのではなく、種類や宛先、通信量等の 種類により流量を加減したり優先度を変えるなど、通信内容にに対して 要求される通信品質を適切に確保する技術および実装。 DPDKで提供されているQoSの実装は2つある。 ● qos_meter: メータリング(パケットを流量によって3段階に色分けする) ● qos_sched: スケジューリング(優先度等によるパケットの並べ替え) DPDKのQoS
  • 5. RFCに基づく2種類のメータリングAPIが用意されている。 ● RFC2697 srtcm (Single Rate Three Color Meter) ● RFC2698 trtcm (Two Rate Three Color Meter) 使い方 経過時間(Time Stamp Counterの値)とともにパケットをパラメータに与え てrte_meter APIを呼び出すと、3種類のcolorのどれに相当するかが返っ てくる。(パラメータ詳細はRFCやDPDKのドキュメントを参照) ○ GREEN ○ YELLOW ○ RED ユーザプログラムはcolorに応じて処理をする。(REDはdropするなど) DPDK QoS (meter)
  • 6. 階層化スケジューラが用意されている。 ● あらかじめEthernetポートを論理的に分割しておく。 ● 分割単位は階層化されている。 ● ユーザプログラムは受信パケットに対して分割単位の情報を書き込む ● スケジューラは分割単位の優先度などに応じてパケットを並べ替える。 ● スケジューラはキューを持っていて、あふれたパケットはdropされる。 階層は下記となっている。 1. Port 2. Subport 3. Pipe 4. Traffic Class 5. Queue DPDK QoS (sched)
  • 7. ● Port ○ Ethernetポート。複数ポートの優先順位は均等。 ● Subport ○ Portを単数あるいは複数に分割したもの。 ○ それぞれ転送レートを指定できる。 ● Pipe ○ Subportを単数あるいは複数に分割したもの。帯域は等分される。 ● Traffic class ○ Pipeを流れるパケットを優先度別にクラスわけする。4クラス固定。 ● Queue ○ Pipeを流れるパケットをキューイングする最小単位。 ○ Traffic classごとに4固定。Weighted Round Robin(WRR)でdequeueされる。 QoS(sched)の各階層
  • 8. 4キュー 4クラス 図にするとこう sched_port subport 0 subport 1 subport 2 pipe 2pipe 1pipe 0 pipe 0 pipe 1 tc0 tc1 tc2 tc3 tc0 tc1 tc2 tc3 tc0 tc1 tc2 tc3 tc0 tc1 tc2 tc3 tc0 tc1 tc2 tc3 tc0 tc1 tc2 tc3q0 q1 q2 q3 q0 q1 q2 q3 q0 q1 q2 q3 q0 q1 q2 q3 q0 q1 q2 q3 q0 q1 q2 q3 q0 q1 q2 q3 q0 q1 q2 q3 任意の帯域 pipe 1pipe 0subportを等分割
  • 9. 1. 準備 1.1. rte_eth_dev_configure()等でポートの使用準備 1.2. rte_sched_port_config() 1.3. rte_sched_subport_config() 1.4. rte_sched_pipe_config() 2. 送受信 2.1. rte_eth_rx_burst()でパケット受信 2.2. rte_sched_port_pkt_write() 2.3. rte_sched_port_enqueue() 2.4. rte_sched_port_dequeue() 2.5. rte_eth_tx_burst()でパケット送信 使い方
  • 10. 1. rte_sched_*_config あらかじめスケジューリングの階層パラメータを設定 2. rte_sched_port_pkt_write パケットをどのキューに入れるか情報を書き込み 3. rte_sched_port_enqueue キューイングすると 4. rte_sched_port_dequeue スケジューリング設定に応じた順序でパケットを取り出せる。 大雑把な解説
  • 11. 4キュー 4クラス rte_sched_port_pkt_write() subport 0 subport 1 subport 2 pipe 2pipe 1pipe 0 pipe 0 pipe 1 tc0 tc1 tc2 tc3 tc0 tc1 tc2 tc3 tc0 tc1 tc2 tc3 tc0 tc1 tc2 tc3 tc0 tc1 tc2 tc3 tc0 tc1 tc2 tc3q0 q1 q2 q3 q0 q1 q2 q3 q0 q1 q2 q3 q0 q1 q2 q3 q0 q1 q2 q3 q0 q1 q2 q3 q0 q1 q2 q3 q0 q1 q2 q3 任意の帯域 pipe 1pipe 0subportを等分割 パケットをどのキューに書き込むかを具体的に指定。 sched_port