2007-11-21
2007-11-21
PSPacer は,Linux 上で動作するソフトウェアによる精密なペーシング機構です. 本ソフトウェアは,産業技術総合研究所により開発されました.なお,本ソフト ウェアの開発の一部は,文部科学省「経済活性化のための重点技術開発プロジェ クト」の一環として実施している超高速コンピュータ網形成プロジェクト(NAREGI: National Research Grid Initiative)により行われました. PSPacer は,GNU GPLライセンスのもとで公開されています.
より詳細な情報はプロジェクトページ http://www.gridmpi.org/ を参照してください.
|
Note
|
PSPacer バージョン2.xは,Linuxカーネル2.4をサポートしていません. |
PSPacer は,従来専用ハードウェアが必要だった精密なネットワーク帯域制御, トラフィック平滑化をソフトウェアのみで実現します.これにより効率のよい遠距離 広帯域通信,高品質なストリーム配信が可能になります. 本ソフトウェアは,Linux ローダブルカーネルモジュールとして実装されています. また,tc(8) コマンドから制御可能なクラスフル qdisc モジュールであり,クラスごと に精密なペーシングを実現します.PSPacer の詳細については,パッケージに含まれて いる論文「Design and Evaluation of Precise Software Pacing Mechanisms for Fast Long-Distance Networks」を参照してください.
LICENSE - GPL ライセンス Makefile - Makefile README - 本ファイルの英語版 README.jp - 本ファイル ChangeLog - ChangeLog doc/ - ドキュメント(利用ガイド,論文) kernel/ - カーネルモジュール man/ - man ページ scripts/ - サンプルテストスクリプト tc/ - tc(8) 用の共有ライブラリ pspd/ - PSPacer コントロールデーモン patch/ - libnl 用のパッチ
(1) PSPacer は,システムの最大送信帯域に占める目標帯域の割合にしたがって,帯域 制御とバーストの平滑化を行います.
したがって,精密なペーシングを実現するためには,システム(コンピュータ,ネット ワークインタフェース,オペレーティングシステム)は最大転送レート(つまり 1000BASE であればギガビット/秒,100BASE であれば 100 メガビット/秒)でパケットを送信 できる必要があります.
例えば,ギガビットイーサネットワークインタフェースを 33MHz/32bit PCI バスに よって接続している場合,ボトルネックは PCI バスになり,システムはギガビット /秒のレートでパケットを送信することはできません.この場合,qdisc の設定時に, 次のように "rate" パラメータを使って,最大送信帯域を明示的に指定することが できます.
# /sbin/tc qdisc add ... psp ... rate 700mbit
^^^^^^^^^^^^
しかし,この場合,PCI バスの振る舞いが十分安定しないので,出力される トラフィックは精密にはならないでしょう.
したがって,ギガビットイーサネットのトラフィックを制御したいのであれば,ネット ワークインタフェースの接続に PCI-X,66MHz/64bit PCI や CSA を使うことを お薦めします.また,出力トラフィックの合計帯域が 100Mbps よりも少ない場合は, ネットワークインタフェースを 100BASE として使うことで,精密なペーシングを 得ることができます.
同様な理由から,PC と PSPacer を接続するエッヂスイッチとして,共有スイッチ (ダムハブ)を使うことは避けてください.
(2) PSPacer はパケット間のギャップとして IEEE 802.3x PAUSE フレームを使います. したがって,スイッチ/ルータから接続されたシステムへの送信を停止するために, PAUSE フレームを使うことはできません. 予期しない振る舞いを避けるためにも,スイッチ(から PCPacer が動作している PC へ) の IEEE 802.3 x フロー制御を無効に設定することをお薦めします.
コンパイルには,次のソースコードが必要になります.
Linux カーネル 2.6.x
iproute2
|
Note
|
iproute2 は,カーネルバージョンに強く依存しているため,適切な組合せを 使う必要があります.我々がチェックした組合せを「テスト環境」に記述したので, 参照してください. |
iproute2 tarball の展開:
$ cd /opt $ wget http://developer.osdl.org/dev/iproute2/download/ \ iproute2-<version>.tar.gz $ tar zxvf iproute2-<version>.tar.gz $ ln -s iproute2-<version> iproute2
PSPacer tarball の展開:
$ tar zxvf pspacer-<version>.tar.gz
make & install:
$ cd pspacer-<version> $ ./configure $ make $ su # make install
RedHat RPMまたはDebian debパッケージをサポートしています.作成方法は, 利用ガイド(doc/usage.en.txt)を参照してください.
qdisc の設定
(PSPacer qdisc をルート qdisc として追加します) # /sbin/tc qdisc add dev eth0 root handle 1: psp default 1 (ターゲットレートが 500 Mbps のクラスを追加します) # /sbin/tc class add dev eth0 parent 1: classid 1:1 psp rate 500mbit (PFIFO qdisc をサブ qdisc として追加します) # /sbin/tc qdisc add dev eth0 parent 1:1 handle 10: pfifo
iperf の実行
$ iperf -c <サーバホスト> -i 10 -t 60
------------------------------------------------------------
Client connecting to XXXX, TCP port 5122
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.1.1 port 46457 connected with 192.168.1.2 port 5122
[ 3] 0.0-10.0 sec 567 MBytes 476 Mbits/sec
[ 3] 10.0-20.0 sec 567 MBytes 476 Mbits/sec
:
qdisc の削除
(PFIFO サブ qdisc の削除) # /sbin/tc qdisc del dev eth0 parent 1:1 handle 10: (PSPacer クラスの削除) # /sbin/tc class del dev eth0 parent 1: classid 1:1 (PSPacer qdisc の削除) # /sbin/tc qdisc del dev eth0 root handle 1: (PSPacer モジュールの削除) # /sbin/rmmod sch_psp
より詳細な情報は,利用ガイド(doc/usage.en.txt),または man ページを参照して ください.
本ソフトウェアは次に示す環境で動作確認を行いました.
Linux ディストリビューション:
FedoraCore 3 (kernel 2.6.9 + iproute ss040831)
FedoraCore 3 (kernel 2.6.11 + iproute ss050330)
FedoraCore 3 (kernel 2.6.13 + iproute ss040831)
FedoraCore 4 (kernel 2.6.11 + iproute ss050314)
FedoraCore 5 (kernel 2.6.15-1.2054_FC5 + iproute ss060110)
FedoraCore 5 (kernel 2.6.20 + iproute ss060110)
SUSE SLES 9 AMD64 (kernel 2.6.5 + iproute ss020116)
Debian GNU/Linux 3.1 (kernel 2.6.8 + iproute ss041019)
Debian GNU/Linux sid (kernel 2.6.12.2 + iproute ss041019)
ネットワークインタフェースカード:
Intel PRO/1000 (PCI-X, CSA)
Intel PRO/100
Broadcom BCM5704 (PCI-X)