RELEASE NOTES PSPacer version 1.2 April 17, 2006 PSPacer は,Linux 上で動作するソフトウェアによる精密なペーシング機構です. 本ソフトウェアは,産業技術総合研究所により開発されました.なお,本ソフト ウェアの開発の一部は,文部科学省「経済活性化のための重点技術開発プロジェ クト」の一環として実施している超高速コンピュータ網形成プロジェクト(NAREGI: National Research Grid Initiative)により行われました. PSPacer は,GNU GPLライセンスのもとで公開されています. より詳細な情報はプロジェクトページ http://www.gridmpi.org/ を参照してください. =============================================================================== PSPacer とは何か? 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 コントロールデーモン =============================================================================== 制限事項 (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 フロー制御を無効に設定することをお薦めします. =============================================================================== コンパイル&インストール方法 #1: バイナリインストール (FedoraCore 4 のみ) - RPM パッケージのダウンロード - インストール # rpm -ivh pspacer-<version>.i386.rpm #2: ソースコードからインストール コンパイルには,次のソースコードが必要になります. - Linux カーネル 2.4.x もしくは 2.6.x - iproute2 [注意] 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> <使用する環境にあわせて tc/Makefile.inc を編集してください> $ make $ su # make install =============================================================================== 簡単な使用例 - 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.pdf),または man ページを参照して ください. =============================================================================== テスト環境 本ソフトウェアは次に示す環境で動作確認を行いました. * Linux ディストリビューション: o RedHat Linux 9 (kernel 2.4.26 + iproute ss010824) o FedoraCore 1 (kernel 2.4.30 + iproute ss040831) o FedoraCore 3 (kernel 2.6.9 + iproute ss040831) o FedoraCore 3 (kernel 2.6.11 + iproute ss050330) o FedoraCore 3 (kernel 2.6.13 + iproute ss040831) o FedoraCore 4 (kernel 2.6.11 + iproute ss050314) o SUSE SLES 8.1 AMD64 (kernel 2.4.21 + iproute ss020116) o Debian GNU/Linux 3.1 (kernel 2.6.8 + iproute ss041019) o Debian GNU/Linux sid (kernel 2.6.12.2 + iproute ss041019) * ネットワークインタフェースカード: o Intel PRO/1000 (PCI-X, CSA) o Intel PRO/100 o Broadcom BCM5704 (PCI-X)