Name

traffic_replay — Samba トラフィック生成ツール

Synopsis

traffic_replay [-F, --fixed-password <test-password>] [-T, --packets-per-second <number>] [-S, --scale-traffic <scale by factor>] [-r, --replay-rate <scale by factor>] [-D, --duration <seconds>] [--traffic-summary <output file>] [-I, --instance-id <id>] [-K, --prefer-kerberos] [-B, --badpassword-frequency <frequency>] [--dns-rate <rate>] [-t, --timing-data <file>] [-U, --username user] [--password <password>] [-W --workgroup <workgroup>] [--realm <realm>] [-s, --config-file <file>] [-k, --kerberos <kerberos>] [--ipaddress <address>] [-P, --machine-pass] [--option <option>] [-d, --debuglevel <debug level>] [--conversation-persistence <0-1>] [--latency-timeout <seconds>] [--stop-on-any-error] {summary-file} {dns-hostname}

traffic_replay [-G, --generate-users-only] [-F, --fixed-password <test-password>] [-n, --number-of-users <total users>] [--number-of-groups <total groups>] [--average-groups-per-user <average number>] [--group-memberships <total memberships>] [--max-members <group size>] {dns-hostname}

traffic_replay {-c|--clean-up} {dns-hostname}

traffic_replay [-h, --help] [-V, --version]

説明

This tool is part of the samba(7) suite.

このプログラムは samba(7)システムの一部である。

このツールは Samba DC 性能測定用のトラフィックを生成することと、 ネットワークの流量が増大する時に Samba がスケールするかをテストする。 これは、複数の異なったホストが、DCに対して、複数の異なったタイプの リクエストを生成することをシミュレートできる。

このツールは、(実際のネットワークトラフィックを処理している、 稼働中のDCではなく) テスト専用の DC に対して実行することを想定している。

このツールを動かすことによる副作用としては、種々の Samba 操作を テストするために、ユーザアカウントが DC 上に生成されることである。 アカウントの生成には時間がかかることがある。それらのユーザは 既定値で DC 上に残る。それらのアカウントを削除するためには、 --clean-up オプション を使う。

オプション

-h|--help

コマンドラインオプションの要約を表示する。

summary-file

replay するためのネットワークトラフィックを含むファイル。このファイルは トラフィックモデル (traffic_learner) で生成)で あること。このファイルをベースとして、このツールは、 ネットワークホストと DC 間の Samba の動作を表わす 'やりとり' を 生成する。

dns-hostname

テスト対象の DC に対する完全なDNS名。サマリファイル中の Samba の動作 はこの DC に対して 複製され、送られる。テストのための専用 DC を使い、 実際のネットワークトラフィックを処理している DC に対してこのツールを 使わないことを推奨する。

-F|--fixed-password <test-password>

テストユーザはこのツールが動作しているときに作成され、実際の Samba 動作、例えばユーザの認証が模倣される。このオプションは、生成される 任意のテストユーザが使うパスワードを指定する。

このツールによって作成された任意のユーザは、--cleanup オプションを 実行するまで DC に残ることに注意。そのため、fixed-password オプションは、 ツールを実行するたびごとに同じにする必要があり、そうしないと、 テストユーザは正しく認証できない。

random-seed

乱数生成器に与えるシードの値。トラフィックがモデルファイルから 生成される場合、このオプションを使うと、複数のテスト間でトラフィックの一貫性を 保てる。よって、Samba の異なったリリース間でパフォーマンスの比較ができるように なる。

トラフィックモデルオプション

サマリファイルが traffic-model (traffic_learner によって生成)の場合、生成されたトラフィックを変更するには 以下のオプションを使用する。

-D|--duration <seconds>

トラフィック生成のための、おおよそのデュレーションを 秒単位で指定する。既定値は60秒である。

-T|--packets-per-second <number>

モデルのベースとなっているトラフィックレートのサンプルに 関わらず、ここで指定した秒あたりのパケットを生成する。 このオプションは -S と共に使えない。

-S|--scale-traffic <factor>

ベースとなったモデルの、オリジナルトラフィックサンプル の相対値である、ここで指定する値を使って、通信量を増大させる。 このオプションは(トラフィックモデルに基づいた)パケットの送信 レートには影響しないが、より多くの通信が再生される事を意味する。 異なった方法でトラフィックレートを指定する -T オプションとは同時に使えない。

-r|--replay-rate <factor>

ここで指定した値を使って、トラフィックを高速化する。 このオプションは送信されるパケット数には影響しないが、 リソースの使用量を削減する、より小さな通信量に圧縮する。

--traffic-summary <output-file>

トラフィックモデルの再生の代わりに、このオプションは、 送信されるトラフィックを元にして、トラフィックサマリファイルを生成する。 トラフィックモデルを使うと、パケットレートと、送信するパケット数 をスケール出来る。しかし、トラフィックモデルを使うと、トラフィック 生成において、いくつかのランダム性が含まれるようになる。 そのため、モデルファイルを使い、同じ traffic_replay コマンドを複数回実行 すると、実際に送られるトラフィックは若干違った結果になる。 しかし、 traffic-summary ファイルを使い、同じ traffic_replay コマンドを 複数回実行した場合は、常に同じトラフィックが送信される。

何回かのテスト実行で性能測定を行うときには、このオプションを使って トラフィックサマリファイルからのトラフィックを再生するか、 --random-seed を指定することを推奨する。

--stop-on-any-error

クライアントで何らかのエラーが発生した場合、実行を停止する。

--conversation-persistence <0-1>

(モデルによって決定される)通信終了は、 この指定により、長い休止として解釈される。

--latency-timeout <seconds>

実行終了時、未処理の返信パケットを ここで指定した時間だけ待つ。タイムアウト時に未完了の 通信は、失敗として扱われる。

--generate-users-only

DBサイズを増大させるために、追加の ユーザ/グループを追加する。 既定値では、このツールは自動的にトラフィックのやりとりを生成する際に マップされるテストユーザを作成する。このオプションで、追加のユーザを この上に作成することが出来る。それら追加したユーザはトラフィックの 生成には実際には使われない事に注意 - トラフィック生成は、モデル/サマリ ファイルからいくつかのやりとりをベースにして作成される。

大量のユーザ作成には長時間かかるので、オプションは1回だけ実行できる。

作成されたユーザは、--clean-up オプションを指定して実行するまで、 引き続きDC上に残っていることに注意。このことは、グループメンバシップを 1回だけ割り当てる事を推奨する、すなわち、--clean-up オプション付きで 実行する前に、グループメンバシップの異なった割り当てを行う。

-n|--number-of-users <total-users>

作成すべきユーザの総数を指定する(トラフィックで要求される 任意のマシンアカウントは除く)。これら追加ユーザは DC 上の DB で単に populate されることに注意 - 生成された実際のユーザ トラフィックはサマリファイルをベースにしている。

--number-of-groups <total-groups>

テストユーザを割り当てるため、指定された数のグループを作成する。 ユーザは自動的にグループに割り当てられないことに注意 - --average-groups-per-user か --group-memberships を使うこと。

--average-groups-per-user <average-groups>

作成されたテストグループに、テストユーザをランダムに割り当てる。 全体のユーザが所属する平均的なグループがこの数と一致するので、 グループメンバシップが配分される。あるユーザはより多くの グループに所属し、あるユーザはより少ないグループに属している。 このオプションは --group-membership オプションとは非互換である。

--group-memberships <total-memberships>

ランダムに、作成されたテストグループにテストユーザを割り当てる。 グループメンバシップは、すべてのユーザに対して、ユーザがメンバ であるグループの合計がこの値と一致するように配分される。たとえば、 100ユーザと10グループがある場合、--group-memberships=300 は、平均でユーザを3つのグループに割り当てる。 ユーザのいくつかは、より多くのグループに属し、いくつかの ユーザはより少ないグループに属するが、属性にリンクされる すべてのメンバの合計は300である。このオプションは、 --group-membership オプションとは非互換である。

--max-members <group size>

他のグループオプションではそうでなかったとしても、 最大グループをこの値に制限する。

    --clean-up

    以前このツールを実行したときに作成された任意のユーザとグループを削除する。 このツールを動かしたあと必ずクリーンアップすることを推奨する。

    -I|--instance-id <id>

    同時に、同じDCで、このツールの複数インスタンスを実行するときにこのオプションを使う。 このオプションは、DC上で作成されたユーザを分離するために、プリフィックスを不可する。

    -K|--prefer-kerberos

    テストユーザの認証に Kerberos を使う。

    -B|--badpassword-frequency <frequency>

    このオプションを使うと、ユーザが不正なパスワードで認証しようとすることを シミュレートする。

    --dns-rate <rate>

    DNSパケットの送信レートを増大する。

    -t|--timing-data <file>

    このオプションは、指定されたファイルに拡張タイミングデータを書き込む。 このオプションは、たとえばグラフを生成するときなどの、レポーティング オプションに使われる。

    Samba 共通オプション
    -d|--debuglevel=level

    level は0から10までの整数値である。 既定値の値は、パラメーターが設定されていなければ1である。

    この値を大きくするほど、サーバーの動作に関するより詳細な情報が ログファイルに記録される。レベル 0 では、致命的なエラーと重大な警告 のみが記録される。レベル 1 は日々の運用に適しており、少量の稼働状況 に関する情報を生成する。

    1 より上のレベルは大量のログが生成されるので、問題解決の時にのみ 使用すべきである。 3 より上のレベルは開発者だけが利用するように設計されて おり、莫大な量のログデータが生成される。そのほとんどは非常に謎めいた内容 となっている

    このパラメーターの指定は、smb.confファイル中の、 log level パラメーターの 指定よりも優先する事に注意。

    -s|--configfile=<configuration file>

    サーバーが必要とする詳細な設定を含む設定ファイルを 指定する。このファイルには、サーバーが提供するサービスに関する記述や、 どの printcap ファイルを利用するかといった情報が含まれている。詳細は smb.conf を参照のこと。設定ファイルの名前の既定値は、コンパイル時 に決定される。

    --option=<name>=<value>

    コマンドラインから smb.conf(5) オプション "<name>" に値 "<value>" を設定。 これはコンパイル時の既定値と設定ファイルから読み込まれたオプションを上書きする。

    --realm=REALM

    realm 名を設定する。

    -V|--version

    プログラムのバージョン番号を表示する。

    資格情報オプション
    --simple-bind-dn=DN

    シンプルバインドで使うDN

    --password=PASSWORD

    パスワード

    -U USERNAME|--username=USERNAME

    ユーザ名

    -W WORKGROUP|--workgroup=WORKGROUP

    ワークグループ

    -k|--kerberos

    Kerberos による認証を試みる。アクティブディレクトリ環境でのみ有効である。

    --ipaddress=IPADDRESS

    サーバの IP アドレス

    -P|--machine-pass

    保存されたマシンパスワードアカウントを使用する。

    OPERATIONS

    トラフィックサマリファイルの生成

    このツールを使うためには、トラフィックサマリファイルか トラフィックモデルファイルのどちらかが必要である。それらの ファイルを生成するためには、使用しているネットワーク上で、 実際に Samba の動作をパケットキャプチャする必要がある。

    生成したいネットワーク上で、Wiresharkを使ってパケットキャプチャを 取るのが良いだろう。例えば、多数のユーザがログオンするのをシミュレート したい場合は、ユーザがログインする 午前8:30にパケットキャプチャを取る。

    次に、取得したパケットキャプチャをトラフィックサマリファイルに 変換する必要がある。これには、traffic_summary.pl を使う。基本的に、この作業では、キャプチャから機敏情報を削除し、 いつ、どのようなタイプのパケットが送られたかということを要約する。

    詳細はtraffic_summary.pl --help ヘルプを してほしいが、基本的なコマンドは以下のようになる:

    tshark -r capture.pcapng -T pdml | traffic_summary.pl > traffic-summary.txt

    トラフィックサマリファイルの再生

    トラフィックサマリファイルがある場合は、これをトラフィックの 生成に使うことが出来る。traffic_replay ツールは、テスト対象 DC の完全な DNS名とともに、トラフィックサマリファイルを渡す。そのほかに、 いくつかのユーザ認証情報、Samba の realm とワークグループ名 (もしも存在するならば、 /etc/smb.conf ファイル に例がある、realm と ワークグループ名が自動的に決まっているのにもかかわらず)を提供する 必要がある。たとえば以下の通り。

    traffic_replay traffic-summary.txt my-dc.samdom.example.com -UAdmin%password -W samdom --realm=samdom.example.com --fixed-password=blahblah123!

    これは、単純に、トラフィックサマリ中にある、Samba の動作を 再現する。トラフィックは、ホストと DC との間を、'やりとり' 中に グループ化する。ユーザとマシンアカウントが、ログインの許可および 他の操作を成功させるために、各テスト通信ごとに生成される。 スクリプトはサマリ中にあるものと同じタイプのパケットを生成する。

    ユーザの生成は、特にたくさんの会話が生成されている場合には、 とても時間がかかる処理になる。時間を節約するために、既定値で、 テストユーザは DC上に残ったままになる。トラフィックの生成を完了した 際には、 --clean-up オプションを動かして、それらを削除する必要がある。 ツールを同時に複数実行すると、同じテストユーザが使われてしまうため、 ユーザのパスワードは一貫しておく必要がある。これには、 --fixed-password オプションによって指定する。

    単に、tcprelay を使用することよりもこのツールが便利な点は、 生成されるトラフィックが特定のネットワークから独立していることである。 テストDC上で、事前に設定する必要はない。トラフィックにはもはや 機敏情報は含まれていないので、トラフィックサマリは他の Samba 開発者と 共有することが可能である。

    しかしながら、トラフィックサマリを直接再生することは、 実際に出来る事よりは制限がかかる。より自由度の高いやり方は、 モデルファイルを使ってトラフィックを生成することである。

    トラフィックモデルファイルの生成

    トラフィックモデルを生成するためには、単にトラフィックサマリ を以下のように、traffic_learnerスクリプトに渡すだけである。

    traffic_learner traffic-summary.txt -o traffic-model.txt

    これは、使用しているネットワーク上での、 Samba 動作のモデルを生成する。 このモデルファイルは、トラフィックの生成に使うことが出来る。

    トラフィックサマリファイルの再生

    トラフィックモデルを使ったパケットの生成は、以下のように、 トラフィックサマリファイルに対するコマンドと同じである。

    traffic_replay traffic-model.txt my-dc.samdom.example.com -UAdmin%password

    既定値では、モデルに基づいて、60秒分のトラフィックを生成する。 それより長くしたい場合は --duration パラメータを指定する。

    生成されたトラフィックは、ネットワークのキャプチャ中にあるものの 近似値である。トラフィックの生成は、若干ランダム性を改善するので、 同じコマンドを複数回実行しても、結果のトラフィックは生成されたものとは は多少異なる(--random-seed オプションを指定してこれを防いだとしても)。

    モデルの動作時間を変更するだけではなく、生成される会話の数や、 トラフィックの再生速度を変更することも出来る。再生する会話の数をおおよそ倍に するには、--scale-traffic=2 を使い、おおよそ半分にするには、 --scale-traffic=0.5 を使う。会話の再生速度をおおよそ倍にするには、 --replay-rate=2 を使い、おおよそ半分にするには、 --replay-rate=0.5 を使う。

    たとえば、(ネットワークトラフィックを元にして)2分間に10倍の 量を生成するには以下のように行う。

    traffic_replay traffic-model.txt my-dc.samdom.example.com -UAdmin%password --fixed-password=blahblah123! --scale-traffic=10 --duration=120

    ユーザ数のスケール

    テストユーザの小さなサブセットで、Samba DC を動かすときの パフォーマンスは、ネットワーク上で、Samba DC を完全に papulate したとき とは異なる。ユーザ数が増えると、DB のサイズが大きくなり、 とても大きな DB は小さな DBよりも処理が重くなる。

    Samba DB のサイズを大きくするためには、このツールで追加のユーザや グループを作成できる。追加のユーザは通常 DB に対して 'filler' となる。 これらは、トラフィックの生成には使われないが、テストユーザの認証作業 を遅くする。

    たとえば、追加 5000 ユーザ(これはしばらく時間がかかることに注意)を DB に対して追加するには、以下のように行う:

    traffic_replay my-dc.samdom.example.com -UAdmin%password --generate-users-only --fixed-password=blahblah123! --number-of-users=5000

    グループを作成し、ユーザをグループに割り当てることもできる。 ユーザはランダムにグループに割り当てることが出来る - これには、 会話にマップするユーザと同じように、追加ユーザも含まれる。テストユーザに どのくらいグループメンバシップに割り当てるかを指定するには、 --average-groups-per-user 又は --group-memberships を使う。

    たとえば、再生された会話中でユーザを平均10グループにware当てるには、 以下のように行う:

    traffic_replay traffic-model.txt my-dc.samdom.example.com -UAdmin%password --fixed-password=blahblah123! --generate-users-only --number-of-groups=25 --average-groups-per-user=10

    テストで作成されたユーザは STGU-0-xyz のような名前を持つ。 生成されたグループは STGG-0-xyz のような名前を持つ。

    バージョン

    このマニュアルは、Samba バージョン 4.14.5 用である。

    参照

    traffic_learner(7).

    AUTHOR

    オリジナルの Samba ソフトウェアと関連ユーティリティは、Andrew Tridgell によって作成された。現在 Samba は、Samba Team によって Linux カーネルの開発と同様に、オープンソースプロジェクトとして開発されている。

    traffic_replay ツールは、Samba チームのCatalyst IT Ltd によって開発された。

    traffic_replay のマニュアルページは Tim Beale によって作成された。

    日本語訳

    このマニュアルページは Samba 4.10.0 - 4.14.5 に対応する。

    このドキュメントの Samba 4.8.0 - 4.14.5 の翻訳は

    によって行なわれた。