• 検索結果がありません。

設定記述例

ドキュメント内 博 士 論 文 (ページ 98-103)

Masterと通信を行い実験を開始する。実験の初期段階としてIPアドレスな どの設定が必要となるが、これらの設定はシナリオの一部として実行される。

他のノードとの協調が必要な場合のみ、Scenario Masterを通じたメッセー ジ交換で他のノードと協調を行う。Scenario SlaveはScenario Masterから MACアドレスとIPアドレスの組を受取り、指定されたMACアドレスを持 つネットワークインターフェースに、指定されたIPアドレスを設定する。そ の他の必要な設定に関しても同様にScenario Masterとの通信にしたがって 実行される。

される。一台は管理ノードであり、残りの2台はそれぞれnetperf のサーバプログ ラムとクライアントプログラムが動作するノードである。

実験記述はノード設定部とシナリオ部に分けられ、ノード設定部にはノードの ネットワークインターフェースの種類や数などのハードウェアに関する条件と、起 動方法や利用するディスクイメージなど導入するソフトウェアに関する情報が記 述される。シナリオ部にはノードのクラス設定部に記述されるノードシナリオと、

ノードシナリオの協調のためにScenario Masterが実行するグローバルシナリオが ある。

シナリオは以下の手順で実行されることとする。

1. server[0]がnetperf のサーバプログラムであるnetseverを起動する。

2. Scenario Masterがserver[0]のIPアドレスをclient[0]に通知する。

3. client[0]がnetperf のクライアントプログラムであるnetperf を起動すること でserver[0]に対するトラフィックを発生させる。

4. netperf による性能試験が終了後、client[0]はScenario Masterに’cdone’とい うメッセージを発行する。

5. Scenario Masterが’cdone’というメッセージを受信すると、server[0]に’quit’

というメッセージを送信する。

6. ’quit’を受信したserver[0]はnetserver を終了する。

図 7.6はこの時の設定ファイルの全容である。ただし、StarBEDに用意されて いるFNCPやERMなどが動作する固定的なサーバに関する設定は別ファイルに 記述されている。netperf のサーバとクライアント用の2つのノードクラスが1行 目から18行目と20行目から32行目に定義されている。最初の定義がサーバ用で、

それに続く定義がクライアント用であり、どちらのクラスに属するノードも1つ のネットワークインターフェースを持つ。それぞれのノードのインスタンスは1台 ずつ生成されている。サーバノードとクライアントノードは直接接続されるため、

一つの実験用ネットワークが34行目から42行目で定義され、ノードのインター フェースは”attach”文により、このネットワーククラスのインスタンスに接続さ

シナリオに関する定義は、“scenario”からはじまる3つのブロックで定義されて いる。最初の2つのシナリオは、ノードクラス中で定義されているが、これはノー ドシナリオであり、最後のシナリオ定義がグローバルシナリオである。ノードシ ナリオは基本的にノードで実行されるコマンドリストであり、グローバルシナリ オはノード間の同期のために利用されるメッセージ制御のためのシナリオである といえる。“recv”はメッセージ受信を待ち、指定された文字列に受け取ったメッ セージを格納する。ノードは受け取ったメッセージにより挙動を変更することが でき、これは10行目などの”msgswitch”で制御される。“wake”と”wakewait”は コマンド実行のために利用されるが、“wake”はコマンドをバックグラウンドプロ セスとして起動し、“wakewait”はフォアグラウンドプロセスとして起動する。ま た、”sync”はグローバルシナリオ中でのみ利用され、指定されたノードからのメッ セージを待つ。図 7.7にメッセージ交換のタイムラインを示す。

1 nodeclass svclass { 2 partition 2 3 ostype "FreeBSD"

4 diskimage "ftp://anonymous:[email protected]/s_image.gz"

5 netif media fastethernet 6 scenario {

7 wake "/sim/netserver" "/sim/netserver"

8 loop { 9 recv x 10 msgswitch x { 11 "quit" {

12 wakewait "/usr/bin/killall" "killall" "netserver"

13 exit 14 } } } } } 15 nodeclass clclass { 16 partition 2 17 ostype "FreeBSD"

18 diskimage "ftp://anonymous:[email protected]/c_image.gz"

19 netif media fastethernet 20 scenario {

21 sleep 6 22 recv dst 23 sleep 24

24 wakewait "/sim/netperf" "/sim/netperf" "-H" dst 25 send "cdone"

26 } }

27 netclass ethclass { 28 media fastethernet

29 ipaddrrange "192.168.3.0/24"

30 }

31 nodeset client class clclass num 1 32 nodeset server class svclass num 1 33

34 netset ethnet class ethclass num 1 35

36 attach server.netif["lan0"] ethnet 37 attach client.netif["lan0"] ethnet 38

39 scenario {

40 send client[0] haddr(server[0].netif[0].ipaddr) 41 sync {

42 msgmatch client[0] "cdone"

43 }

44 send server[0] "quit"

45 exit 46 }

図 7.6: 本実験例での設定ファイル

本実験例の設定ファイルの全容。これだけの設定記述を用意すれば、

ノードへのOS導入を含め、実験シナリオすべてが自動的に実行さ れる。

netperf

traffic

STOP Scenario

Master

Scenario Slave#1 client[0]

Scenario Slave#2 server[0]

<IP addr>

"quit"

"cdone" send

wake

wakewait send

send

wakewait

netperf

killall

netserver

図 7.7: 実験のタイムライン

本実験でのタイムライン。一番左のラインが管理用ノード上のScenario Masterの動作を、中央のラインがnetperf を実行する実験用ノード、

右のラインがnetserverを実行する実験用ノードの動作を表す。

ドキュメント内 博 士 論 文 (ページ 98-103)