Ethernet TSN の QoS(7)その他時間帯の QoS:Credit Based Shaper(帯域制御)

CBS( Credit Based Shaper)の基本動作原理は、リーキーバケットモデルだ。図1 の様に、蛇口から注いだ水がバケツの穴から常に一定量漏れ出すモデルだ。さらに細かく分類すれば「 Leaky bucket as a meter 」に準じたモデルだ。判定ポイントで、バケツに Credit (トークン)が十分あれば、パケットを出力し、足りなければパケットは止まる。パケットはキューに蓄積され、キューに収まらない場合は、キューの末尾で廃棄される(図2)。

図1 リーキーバケットモデル概念
図1 リーキーバケットモデル概念
図2 Leaky bucket as a meter モデル
図2 Leaky bucket as a meter モデル

Ethernet TSN のリーキバケットモデルは、一般的なモデルとは少し異なる。一般的なモデルでは、送信パケット長に見合う水位(Credit)になればパケットを送信できる(図3(a))。CBS では、Credit≧0 であればパケットを送信できる。Credit は送信の状況によりプラス領域とマイナス領域で変化する(図3(b))。Credit 加減算の考え方は同じだが、判定レベルの違いや底が抜けたバケツの様な形をしていることに注意いただきたい。

図3 Leaky bucket モデル
図3 Leaky bucket モデル

一般的なモデルは、初期状態が「0」でスタートした場合、Credit が一定量蓄積されるまではパケット送信ができない。これに対し、CBS モデルは初期状態が「0」でスタートするため、最初からパケット送信ができる。一般モデルでも、初期状態を「判定レベル」に変えれば、CBS モデルと同じ動作が可能だ。つまり、この2つのモデルは表現は異なるが同じ動作が可能だ。いずれのモデルも、バーストに関しては Credit の増減により抑制されるが完全に抑えることはできない。元々、SRクラスA ストリームは、比較的小さいパケットをバースト送信することで、応答性の改善を狙った面もあり、積極的にバーストを抑えているわけではない。

一般的なモデルは、判定レベルを変えることで送信レートを変える。これに対し、CBS モデル
は「sendSlope」と「idleSlope」を変えることで送信レートを変える。

100%送信の実現
一般的なモデルでは、判定レベルを下限に設定すれば 100% 送信可能。CBS モデルでは、
sendSlope=0% & idleSlope=100% で 100% 送信が可能
0%送信の実現
一般的なモデルでは、判定レベルを上限を超えた設定にすれば 0% 送信可能。CBS モデル では、
sendSlope=100% & idleSlope=0% で 0% 送信が可能

CBS は、SR クラスA/B にそれぞれ用意されたキューからパケットを取り出すための仕組みだ。 SR クラスA/B のそれぞれにキューと Credit を持っている。CBS 動作は、次の4つのパラメータで動作が決まる。各パラメータのイメージは、図4 を参照いただきたい。

CBS パラメータ

hiCreditCredit の上限値
loCreditCredit の下限値
idleSlopeCredit の加算レート
sendSlopeCredit の減算レート
図4 CBS パラメータ
図4 CBS パラメータ
hiCredit
Credit の上限値を決めるパラメータだ。SR クラス以外のパケットが先行送信中で、 SR クラスのパケットが待たされている状態では、Credit は idleSlope のレートでプラス領域でも Credit は増加する。Credit が増加する期間は、SR クラス以外の先行パケットを送信している期間になる。hiCredit は、idleSlope とイーサネットフレーム最大長(物理層含む)との掛け算になる。図4 では idleSlope は 20Mbps のため、イーサネット最大長の 20% だ。計算式は次のようになる。

hiCredit=idleSlope × MaxFrameSize
loCredit
Credit の下限値を決めるパラメータだ。SR クラスのパケット送信中、Credit は sendSlope のレートで減少する。Credit が減少する期間は、SR クラスパケットを送信している期間になる。loCredit は、sendSlope とイーサネットフレーム最大長 (物理層含む)との掛け算になる。計算式は次のようになる。

loCredit=sendSlope × MaxFrameSize
idleSlope
Credit がプラス領域で、SR クラス以外のパケットが先行送信中に SR クラスパケットが待たされている状態と、Credit がマイナス領域で SR クラスパケットを送信していない期間に、idleSlope のレートで Credit が加算される。idleSlope は言葉の意味としては「待ち状態での傾き」だが、実際は「SR クラスA/B に割り当てられた帯域」になる。例えば、20Mbps の帯域がSR クラスA に割り当てられているケースで は、idleSlope=20Mbps になる。
sendSlope
Credit の領域に関わらず、SR クラスパケット送信期間に、sendSlope のレートで Credit が減算される。sendSlope は言葉の意味としては「送信時の傾き」だが、実際は「SR クラスA/B が消化した帯域」になる。実際には、sendSlope = idleSlope – PortTransmitRate の関係になるため、idleSlope が 20Mbps の場合は -80Mbps になる。-符号になっているのは「減算する」ことを意味している。

図5 は CBS の動作例だ。Credit の初期値は「0」で始まる。SR クラスパケットを受信しキューに格納中は Credit は減少しない。Credit≧0 でパケット送信ができるため、パケット1 のキュー格納が完了すると送信が始まる。パケット送信が始まると sendSlope の割合で Credit は減少し、送信が完了すると idleSlope の割合で Credit は「0」まで増加する。

図5 CBS 動作例 1
図5 CBS 動作例 1

Credit 増加中(マイナス領域)にパケット2を受信しキューに格納されるが、 Credit≧0 になるまで待たされ、Credit=0 になったところでパケット2の送信が始まる。パケット送信が始まると sendSlope の割合で Credit は減少し、送信が完了すると idleSlope の割合で Credit は 「0」まで増加する。

Best Effort の先行パケットの送信が始まり、パケット3は待ち状態になる。この状態では、プラス領域であっても Credit は増加する。先行パケットの送信が完了すると、パケット3の送信が始まり sendSlope の割合で Credit は減少する。Credit は SR クラスパケット送信中減少するため、「0」を超えマイナス領域まで減少する。送信が完了すると idleSlope の割合で Credit は増加する。

図6 は Credit プラス領域での Credit 増減の例だ。パケット3の送信時間が短く、送信完了時 Credit はまだプラスになっている。しかし、継続して送信する SR クラスパケットが無い場合は、 Credit は「0」クリアされる。つまり、SR クラスパケットがキューに滞留していない状態では、 Credit は常に「0」以下になっている。

図6 CBS 動作例 2
図6 CBS 動作例 2

Credit 加減算基本ルール

  • Credit 初期値は「0」
  • Credit ≧0 で、SR クラスパケットを送信開始できる
  • SR クラスパケット送信中は、sendSlope で Credit 減算。下限値は loCredit
  • SR クラスパケット送信していないときは、idleSlope で Credit 加算。上限値は 0

Credit 加減算特殊ルール(Credit プラス領域)

  • 先行する非 SR パケットの送信が続いていて、SR クラスパケットが待たされているときは、Credit はプラス領域まで加算可能。上限値は hiCredit
  • SR クラスパケット送信が完了し、キューに滞留パケットが無い場合、Credit を「0」クリア

ここまでは「その他時間帯」での CBS 挙動の話だ。Credit は「その他時間帯」で使用するが、その他時間帯の中にある「Guard Band」と「CDT 専用時間帯」での挙動を決める必要がある。 図7 の様に、ガードバンドで SR クラスパケットが送信中であれば、 sendSlope の割合で Credit は減少する。送信完了または送信していない状態では、Credit は変化しない。CDT 専用 時間帯では、Credit は変化しない。

図7 ガードバンドと CDT 領域CBS 動作
図7 ガードバンドと CDT 領域CBS 動作

Credit 加減算ルール・・・CDT /ガードバンド領域での動作

  • ガードバンド内で、SR クラスパケット送信時は、 sendSlope で Credit を減算
  • ガードバンド内では、Credit を加算しない
  • CDT 領域(時間帯)では、Credit は加減算しない(変化しない)

IdleSlope/sendSlope/hiCredit/loCredit の計算式は次のようになっている。物理層を含むイーサネットフレーム形式は図8 だ。ここまで Byte 単位で話を進めてきたが、 IEEE 802.1Qav 規格では、bit または bit/秒を使用する。注意いただきたい。

図7 イーサネットフレーム(物理層含む)
図8 イーサネットフレーム(物理層含む)

CBS パラメータ計算式(x:SR クラスA/B )

  • Bx:SR 各クラスの帯域割合(予約帯域÷フレーム間隔)
  • MFSx:SR 各クラスの最大フレーム長(物理層付加オーバーヘッド含む) PTR:物理層送信速度
  • idleSlope x = Bx×PTR
  • sendSlope x = idleSlope x – PTR
  • loCredit x = MFSx× sendSlope x÷PTR
  • hiCredit x = idleSlope x× MFSx ÷ PTR

Ethernet TSN の QoS

この記事を書いた人

岩崎 有平

早稲田大学 理工学部 電子通信学科にて通信工学を専攻。
安立電気(現 アンリツ)に入社後、コンピュータ周辺機器の開発を経てネットワーク機器の開発やプロモーションに従事する。
おもにEthernetを利用したリアルタイム監視映像配信サービスの実現や、重要データの優先配信、映像ストリームの安定配信に向けた機器の開発行い、Video On Demandや金融機関のネットワークシステム安定化に注力した。
現在は、Ethernetにおけるリアルタイム機能の強化・開発と普及に向けて、Ethernet TSNの普及活動を行っている。