PSP
Section: Linux (8)
Updated: 6 June 2005
名前
PSP - Precise Software Pacer
書式
tc qdisc ... dev
dev
( parent
classid
| root) [ handle
major:
] psp [ default
] [ rate
rate
]
tc class ... dev
dev
parent
major:[minor]
[ classid
major:minor
] psp rate
rate
] [ mode
mode
]
説明
Precise Software Pacer (PSPacer) は,パケット間ギャップ(IPG: Inter Packet
Gap)を調整することによって精密なペーシングを提供するパケットスケジューラである.
本スケジューラは,
tc(8)
コマンドによるトラヒック制御から利用可能なクラスフルキューイング規則
(queuing disipline)として実装されており,各クラスごとに設定した送信ターゲットレート
にしたがってトラヒックを平滑化する.
ターゲットレートの指定方法には,
tc(8)
コマンドから静的に指定する静的ターゲットレートモードと,TCPの場合に限り,輻輳ウィンドウ
サイズとラウンドトリップタイムから送信レートを見積もる動的ターゲットレートモードが
利用できる.
ペーシングアルゴリズム
MTUが1500バイトで送信レートを半分にペーシングするには,IPGを1500バイトにする必要がある.
そこで,他のクラスにパケットがキューイングされている場合はそのパケットを利用し,存在しない
場合にはギャップパケットを送信する.
ギャップパケットは IEEE 802.3x フロー制御で定義された PAUSE パケットを利用し,必要な
IPG に合わせてサイズを調整したパケットである.ギャップパケットは送信ホストの直近の
スイッチまたはルータで消滅するので,外のネットワークには流れない.
PSP qdisc 内に,ペーシングするトラヒックとペーシングしないトラヒックが存在する場合は,
ターゲットレート以内でペーシングするトラヒックを優先して送信する.
クラシフィケーション
PSP qdisc は CBQ のような階層的なクラス構造を持つことが可能であり,リーフノードの
各クラスはそれぞれ qdisc を持つ.
PSP qdisc にパケットがエンキューされると,ルートから開始して,次に示す方法にしたがい,
どのノードにパケットを分類するか決定する.これをリーフノードに達するまで繰り返す.
-
クラスに登録されたフィルタを調べ,条件が成立したノードへ送る.
-
どの条件にも合致しなかった場合は,デフォルトクラスへ送る.
QDISC
PSP クラスツリーのルート qdisc は,次のパラメータを持つ.
- parent major:minor | root
-
必須パラメータ.qdisc の親クラスを指定する.親クラスはインタフェースのルート,
もしくは既存のクラスのどちらかになる.
- handle major:
-
qdisc にハンドルを割り当てる.ハンドルはメジャー番号にコロンをつなげた表記で表される.
ハンドルは qdisc を参照する際に使用されるため,サブクラスを設定する場合に必要となる.
- default minor-id
-
クラシフィケーションされなかったトラヒックはこのマイナー番号を持つクラスに送られる.
- rate rate
-
インタフェースの最大転送レートを明示的に指定する.
PCI バスボトルネックでインタフェースの物理性能を出せない場合に利用する.
CLASSES
クラスは次に示すパラメータを保持する.
- parent major:minor
-
必須パラメータ.クラスの親クラスを指定する.クラスではなく,直接 qdisc に追加する場合は,
マイナー番号を省略する.
- classid major:minor
-
必須パラメータ.qdisc のように,クラスにも名前を付けることができる.子供(クラス,
qdisc)から参照されるために必要である.メジャー番号は所属する qdisc のメジャー番号と
等しくなければならない.
- rate rate
-
最大送信レートを指定する.使用できる単位については,
tc(8)
の UNITS を参照のこと.
- mode mode
-
動作モードを指定する.0から2の整数値を取る.0はペーシングなし,1は静的ターゲットレートによる
ペーシング,2は動的ターゲットレートによるペーシングである.
制限事項
- バージョン 1.0 は,動的ターゲットレートモードに対応していない.
- TCP Segmentation Offloading (TSO) に対応していない.次のように
ethtool(8)
を使って,TSO を無効化すること.
# /sbin/ethtool -K eth0 tso off
出典
-
http://www.gridmpi.org/
-
R.Takano, T.Kudoh, Y.Kodama, M.Matsuda, H.Tezuka, and Y.Ishikawa,
"Design and Evaluation of Precise Software Pacing Mechanisms for
Fast Long-Distance Networks," PFLDnet05, 2005.
関連項目
tc(8)
著者
Ryousei Takano <takano at axe-inc.co.jp>.
This document was created by man2html, using the manual pages.
Time: 06:33:57 GMT, June 10, 2005