Movatterモバイル変換


[0]ホーム

URL:


Masaru Oki, profile picture
Uploaded byMasaru Oki
2,489 views

DPDK QoS

DPDK QoS design and implementation.

Embed presentation

Downloaded 21 times
DPDK QoSMay 17, 2015Masaru 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. Port2. Subport3. Pipe4. Traffic Class5. QueueDPDK 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_portsubport 0 subport 1 subport 2pipe 2pipe 1pipe 0 pipe 0 pipe 1tc0 tc1 tc2 tc3tc0 tc1 tc2 tc3tc0 tc1 tc2 tc3tc0 tc1 tc2 tc3tc0 tc1 tc2 tc3tc0 tc1 tc2 tc3q0 q1 q2 q3q0 q1 q2 q3q0 q1 q2 q3q0 q1 q2 q3q0 q1 q2 q3q0 q1 q2 q3q0 q1 q2 q3q0 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 2pipe 2pipe 1pipe 0 pipe 0 pipe 1tc0 tc1 tc2 tc3tc0 tc1 tc2 tc3tc0 tc1 tc2 tc3tc0 tc1 tc2 tc3tc0 tc1 tc2 tc3tc0 tc1 tc2 tc3q0 q1 q2 q3q0 q1 q2 q3q0 q1 q2 q3q0 q1 q2 q3q0 q1 q2 q3q0 q1 q2 q3q0 q1 q2 q3q0 q1 q2 q3任意の帯域pipe 1pipe 0subportを等分割パケットをどのキューに書き込むかを具体的に指定。sched_port

Recommended

PPTX
FD.io VPP事始め
PDF
Dpdk pmd
PPTX
OVS v OVS-DPDK
PPTX
Linux Network Stack
PPTX
3GPP TS 38.300-100まとめ
PDF
コンテナ時代のOpenStack
PPTX
3GPP TR38.801-e00まとめ
PPTX
3GPP F1インターフェース(TS38.470-f50)の概要
PPSX
FD.io Vector Packet Processing (VPP)
PDF
GPU仮想化最前線 - KVMGTとvirtio-gpu -
 
PPTX
コンテナネットワーキング(CNI)最前線
PDF
今話題のいろいろなコンテナランタイムを比較してみた
PDF
The linux networking architecture
PDF
ネットワークでなぜ遅延が生じるのか
PDF
DPDK In Depth
PDF
Scaling the Container Dataplane
PDF
Telecom Infra Projectの取り組み -光伝送におけるハードとソフトの分離-
PDF
"SRv6の現状と展望" ENOG53@上越
PDF
3GPP LTE introduction 4 (Detach)
PDF
TD_complet_reseau__CISCO__Packet Tracer.pdf
PDF
PCE 〜MPLSネットワークのSDN化を本気で実現する"唯一の"方法〜
PPTX
Introduction to Ostinato , network packet crafting and generator.
PPTX
Understanding DPDK
PDF
パケットキャプチャの勘どころ Ssmjp 201501
PPTX
Understanding of MQTT for IoT Projects
PPTX
Modern Linux Tracing Landscape
PDF
仮想化環境におけるパケットフォワーディング
PDF
HPCユーザが知っておきたいTCP/IPの話 ~クラスタ・グリッド環境の落とし穴~
PDF
Dpdk環境の話
PPTX
Myanmar: Political Setting

More Related Content

PPTX
FD.io VPP事始め
PDF
Dpdk pmd
PPTX
OVS v OVS-DPDK
PPTX
Linux Network Stack
PPTX
3GPP TS 38.300-100まとめ
PDF
コンテナ時代のOpenStack
PPTX
3GPP TR38.801-e00まとめ
PPTX
3GPP F1インターフェース(TS38.470-f50)の概要
FD.io VPP事始め
Dpdk pmd
OVS v OVS-DPDK
Linux Network Stack
3GPP TS 38.300-100まとめ
コンテナ時代のOpenStack
3GPP TR38.801-e00まとめ
3GPP F1インターフェース(TS38.470-f50)の概要

What's hot

PPSX
FD.io Vector Packet Processing (VPP)
PDF
GPU仮想化最前線 - KVMGTとvirtio-gpu -
 
PPTX
コンテナネットワーキング(CNI)最前線
PDF
今話題のいろいろなコンテナランタイムを比較してみた
PDF
The linux networking architecture
PDF
ネットワークでなぜ遅延が生じるのか
PDF
DPDK In Depth
PDF
Scaling the Container Dataplane
PDF
Telecom Infra Projectの取り組み -光伝送におけるハードとソフトの分離-
PDF
"SRv6の現状と展望" ENOG53@上越
PDF
3GPP LTE introduction 4 (Detach)
PDF
TD_complet_reseau__CISCO__Packet Tracer.pdf
PDF
PCE 〜MPLSネットワークのSDN化を本気で実現する"唯一の"方法〜
PPTX
Introduction to Ostinato , network packet crafting and generator.
PPTX
Understanding DPDK
PDF
パケットキャプチャの勘どころ Ssmjp 201501
PPTX
Understanding of MQTT for IoT Projects
PPTX
Modern Linux Tracing Landscape
PDF
仮想化環境におけるパケットフォワーディング
PDF
HPCユーザが知っておきたいTCP/IPの話 ~クラスタ・グリッド環境の落とし穴~
FD.io Vector Packet Processing (VPP)
GPU仮想化最前線 - KVMGTとvirtio-gpu -
 
コンテナネットワーキング(CNI)最前線
今話題のいろいろなコンテナランタイムを比較してみた
The linux networking architecture
ネットワークでなぜ遅延が生じるのか
DPDK In Depth
Scaling the Container Dataplane
Telecom Infra Projectの取り組み -光伝送におけるハードとソフトの分離-
"SRv6の現状と展望" ENOG53@上越
3GPP LTE introduction 4 (Detach)
TD_complet_reseau__CISCO__Packet Tracer.pdf
PCE 〜MPLSネットワークのSDN化を本気で実現する"唯一の"方法〜
Introduction to Ostinato , network packet crafting and generator.
Understanding DPDK
パケットキャプチャの勘どころ Ssmjp 201501
Understanding of MQTT for IoT Projects
Modern Linux Tracing Landscape
仮想化環境におけるパケットフォワーディング
HPCユーザが知っておきたいTCP/IPの話 ~クラスタ・グリッド環境の落とし穴~

Viewers also liked

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

More from Masaru Oki

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

DPDK QoS

  • 1.
    DPDK QoSMay 17,2015Masaru 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 ofService (サービス品質)通信パケットをすべて均等に扱うのではなく、種類や宛先、通信量等の種類により流量を加減したり優先度を変えるなど、通信内容にに対して要求される通信品質を適切に確保する技術および実装。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. Port2. Subport3. Pipe4. Traffic Class5. QueueDPDK 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_portsubport 0 subport1 subport 2pipe 2pipe 1pipe 0 pipe 0 pipe 1tc0 tc1 tc2 tc3tc0 tc1 tc2 tc3tc0 tc1 tc2 tc3tc0 tc1 tc2 tc3tc0 tc1 tc2 tc3tc0 tc1 tc2 tc3q0 q1 q2 q3q0 q1 q2 q3q0 q1 q2 q3q0 q1 q2 q3q0 q1 q2 q3q0 q1 q2 q3q0 q1 q2 q3q0 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 subport1 subport 2pipe 2pipe 1pipe 0 pipe 0 pipe 1tc0 tc1 tc2 tc3tc0 tc1 tc2 tc3tc0 tc1 tc2 tc3tc0 tc1 tc2 tc3tc0 tc1 tc2 tc3tc0 tc1 tc2 tc3q0 q1 q2 q3q0 q1 q2 q3q0 q1 q2 q3q0 q1 q2 q3q0 q1 q2 q3q0 q1 q2 q3q0 q1 q2 q3q0 q1 q2 q3任意の帯域pipe 1pipe 0subportを等分割パケットをどのキューに書き込むかを具体的に指定。sched_port

[8]ページ先頭

©2009-2025 Movatter.jp