SCSPD(8)

名称
scspd - SCSP デーモン

書式
scspd [-f <cfg-file>] [-d] [-T<options>]

解説
scspd は、 Host ATM Research Platform (HARP) ネットワーキングソフトウェア用の、 サーバキャッシュ同期プロトコル (Server Cache Synchronization Protocol; SCSP) の実装のひとつです。 scspd は、 あるホスト上の (1 つ以上の) サーバの (1 つ以上の) キャッシュと、 リモートホスト上のサーバのキャッシュを同期させます。 SCSP は多くの異なったプロトコルに対して定義されますが、 現在のバージョンの scspd は ATMARP のみサポートします。

scspd と atmarpd(8) を使用すると、 単一の ATM LIS に対して複数の ATMARP サーバを提供することが可能となります。 例えば、 長距離リンクで接続される複数のローカルエリア ATM ネットワークにより、 LIS が構成される場合に有用でしょう。 各ローカルエリアネットワークは各自の ATMARP サーバを持つことができ、 すべてのサーバのキャッシュは SCSP により同期されます。 このような場合、もし長距離リンクが切断されても、 ローカルエリアネットワーク上のホストは他のローカルホストとの接続性を保ちます (全ローカルホストはローカルの ATMARP サーバを使用するからです)。 長距離リンクが回復すると、SCSP はサーバのキャッシュを再同期し、 リモートホストとの接続性を回復します。 ATMARP キャッシュが同期される前に、 scspd と atmarpd(8) の両方が走行している必要があります。

scspd は、 RFC 2334, および draft-ietf-ion-scspd-atmarpd-00.txt, に示されるように SCSP を実装しています。

scspd が実行を開始すると、 自己に与えられたコマンドラインを解析し、バックグラウンドに移行します。

用語
SCSP に関する用語には混乱しやすいものがあります。 この文書では、次の定義を使用します:

クライアントサーバ もしくは ローカルサーバ は、 scspd と同じホストで実行されているサーバを意味します。 このサーバのキャッシュは、複数のリモートサーバと同期されます。 サーバ という言葉が単独で使用される場合、 クライアントサーバ を意味します。

リモートサーバ は、 scspd が実行されているホストとは別のホスト上で実行されているサーバを 意味します。

直接接続されたサーバ (Directly Connected Server; DCS) は、 scspd が直接通信を行うリモートサーバを意味します。 リモートサーバもまた SCSP の実装のひとつを実行しているでしょう。

キャッシュアラインメント (Cache Alignment; CA) には、 2 つの意味があります。 キャッシュアラインメントプロトコルは SCSP プロトコル仕様の一部であり、 キャッシュアラインメント有限状態機械 (FSM) は キャッシュアラインメントプロトコルを実装する有限状態機械です。

オプション
コマンドラインオプションは次の通りです:

-f <cfg-file>
    設定ファイルの名前を指定します。 このオプションを指定しないと、 scspd はファイル /etc/scspd.conf を探します。

-d  scspd をデバッグモードで実行することを指定します。 デバッグモードでは、デーモンはバックグラウンドにはなりません。 ログメッセージは、 設定ファイルに指定されたログファイルではなく、標準出力に書かれます。

-T<options>
    実行に際して、指定したイベントとメッセージをトレースするよう、 scspd に指示します。 -T フラグの後には、次に示すオプションを 1 つ以上付けます:

    c   scspd の CA 有限状態機械 (FSM) をトレースします。
    h   scspd の Hello FSM をトレースします。
    i   scspd のクライアントインタフェース FSM をトレースします。
    C   CA, CSUS, CSU リクエストと CSU リプライのメッセージを トレースします。
    H   Hello メッセージをトレースします。
    I   scspd のクライアントと相互にやりとりする インタフェースメッセージをトレースします。

設定
設定ファイルは、一連の設定文から成ります。 これらの文は、 scspd がキャッシュの同期を行う対象となる、 ローカルおよびリモートの両方のサーバに関する情報を指定します。 scspd の設定方法については、 RFC 2334, および draft-ietf-ion-scspd-atmarpd-00.txt, が役立つでしょう。

コメント以外の設定文はセミコロンで終端します。 文によってはブロックを持ち、ブレース (“{” と “}”) で区切ります。 設定文のキーワードは大文字小文字の区別はありませんが、 パラメータには区別のあるものがあります (例えばインタフェース名)。 設定文は複数行に渡ることが可能です。

  コメント
3 種類のコメントを使用可能です:

# comments:
    “#” から行末までのすべての文字は無視されます。

C コメント:
    “/*” と “*/” の間のすべての文字は無視されます。

C++ コメント:
    “//” から行末までのすべての文字は無視されます。

  文
scspd が理解する設定文を示します:

    Server <name> {
    	Protocol <protocol ID>;
    	Netif <if_name>;
    	ServerGroupID <ID>;
    	FamilyID <ID>;
    	DCS {
    		ATMaddr <ATM address>;
    		ID <host>;
    		CAReXmitInt <int>;
    		CSUSReXmitInt <int>;
    		CSUReXmitInt <int>;
    		CSUReXmitMax <cnt>;
    		HelloDead <cnt>;
    		HelloInt <int>;
    		Hops <cnt>;
    	};
    };
    Log {
    	File <file name>;
    	Syslog;
    };

設定ファイル内でホストアドレスを指定する必要があるところでは、 DNS での名前でも、10 進数をドットで繋ぐ IP アドレスの形式でも、 どちらでも使用可能です。

ATM アドレスは 16 進数の文字列として指定します。 前に “0x” を付けてもかまいません。 アドレス内のフィールドはピリオドで区切ってもかまいません。 ピリオドは読みやすさのためだけにあり、単に無視されます。 ATM アドレスの長さは 20 バイトです。 先行する 0 を含めて、全アドレスを指定する必要があります。 例:

    0x47.0005.80.ffe100.0000.f21a.0170.0020481a0170.00

  Server 文
server 文はクライアントサーバを指定します。 このクライアントサーバのキャッシュは、 リモートホスト上で実行されている他のサーバのキャッシュと同期されます。 scspd によってキャッシュが同期される各クライアントサーバごとに、 1 つの server 文を設定ファイルに書きます。 server 文の書式は次の通りです:

Server <name> { <statements> };

name は server 文で指定する必要がありますが、 scspd はこれを使用しません。 サーバの用途に関する短い記述を与えるものと期待されています。

server 文は、いくつかの副文を持ち、 scspd の設定の詳細を指定します。 副文を示します:

Protocol ATMARP;
    現在のバージョンの scspd がサポートする唯一のプロトコルは ATMARP です。 protocol 文は常に指定する必要があります。

Netif <intf>;
    netif 文は、クライアントサーバがサービスを提供している ATM ネットワークインタフェース名を指定します。 netif 文は常に指定する必要があります。

ServerGroupID <ID>;
    ServerGroupID 文は、 scspd が同期を行うサーバ群に対する識別子を指定します。 ID は 10 進数として指定され、範囲は 0 - 65,535 です。 SCSP セッションにより同期されるキャッシュを持つ全サーバにおいて、 サーバグループ ID は同一である必要があります。 つまり、ホストのサーバグループ ID は、 server 文内で指し示されるすべての直接接続されたサーバ (DCS) において同一である必要があるということです。 ServerGroupID 文は常に指定する必要があります。

FamilyID <ID>;
    familyID 文は、 ホスト群間で実行される並列 SCSP セッションのファミリに対する識別子を指定します (ファミリとはすなわち、 異なったプロトコル ID ではあっても同一のサーバ集合である、 SCSP セッションの集合です)。 ID は 10 進数として指定され、範囲は 0 - 65,535 です。 ファミリ ID は現在 scspd は使用しません。

  DCS 文
DCS 文は server 文の副文であり、 直接接続されたサーバ (DCS) の特性を指定します。 server 文は、 scspd が情報交換する DCS ごとに 1 つの DCS 文を持ちます。 DCS 文は多くの副文を持ち、 DCS の設定に関する詳細を指定します。 それらを次に示します:

ATMaddr <ATM address>;
    ATMaddr 文は DCS の ATM アドレスを指定します。 ATMaddr 文は常に指定する必要があります。

ID <host>;
    ID 文は DCS の SCSP 識別子を指定します。 ATMARP における ID は、 DCS の ATM インタフェースに関連付けられた IP アドレスまたは DNS での名前です。 ID 文は常に指定する必要があります。

CAReXmitInt <int>;
    CAReXmitInt 文は、 CA メッセージの再送間隔時間を指定します。 CA メッセージが送信されて確認応答が CAReXmitInt 秒以内に受信されない場合、 メッセージが再送されます。 CAReXmitInt のデフォルト値は 3 秒です。

CSUSReXmitInt <int>;
    CSUSReXmitInt 文は、 CSU Solicit メッセージの再送間隔時間を指定します。 CSUS メッセージが送信されたとき、 CSUS によりリクエストされた Cache State Advertisement (CSA) が CSUSReXmitInt 秒以内に受信されないと、 別の CSUS メッセージによる再リクエストが発生します。 CSUSReXmitInt のデフォルト値は 3 秒です。 CSUSReXmitInt と CSUReXmitInt に関して 混乱しないようにしてください。

CSUReXmitInt <int>;
    CSUReXmitInt 文は、 CSU リクエストメッセージの再送間隔時間を指定します。 CSU リクエストメッセージが送信されたとき、 CSUReXmitInt 秒以内に CSU リプライメッセージによって確認応答が返されない CSA は再送されます。 CSUReXmitInt のデフォルト値は 2 秒です。 CSUReXmitInt と CSUSReXmitInt に関して 混乱しないようにしてください。

CSUReXmitMax <cnt>;
    CSUReXmitMax 文は、前述のように CSA が再送される回数を指定します。 この回数を越えると、SCSP は CSA を諦めて捨ててしまいます。 CSUReXmitMax のデフォルト値は 5 です。

HelloDead <cnt>;
    HelloDead 文は、 Hello メッセージに入れられて DCS に送られる、Hello Dead Factor を指定します。 HelloDead * HelloInt 秒間 DCS からなにも受信しない場合、 “DCS down” 状態が検出されます。 HelloDead のデフォルト値は 3 です。

HelloInt <int>;
    HelloInt 文は、 Hello メッセージに入れられて DCS に送られる、Hello Interval を指定します。 HelloInt のデフォルト値は 3 秒です。

Hops <cnt>;
    Hops 文は (DCS から DCS への) ホップ数を指定し、 ローカルサーバを起点とする CSA の中に指定されます。 この値は最小でもサーバグループの直径である必要があります。 すなわち、 サーバ群中の全サーバに CSA が伝播するのに十分な大きさが必要ということです。 Hops のデフォルト値は 3 です。

  Log 文
log 文は、 scspd の操作情報をどのようにログするかを指定します。 scspd は、ログ情報をファイルに書き込むことができますし、 システムのログに書き込むこともできますし、両方とも行うことも可能です。

File <file name>;
    file 文は、 scspd がログメッセージを 指定された名前のファイルに書き込むことを指定します。 ファイルが既に存在する場合、ログメッセージはファイルの最後に追加されます。

Syslog;
    syslog 文は、 scspd がログメッセージを syslog ファシリティに書き込むことを指定します。 scspd は、ファシリティコード LOG_DAEMON を使用して、 メッセージを syslog に書き込みます。

log 文を指定しないと、 scspd はログメッセージを システムのログに書き込みます。 file と syslog の両方が指定されると、 指定された名前のファイルとシステムのログの両方に、 scspd はログメッセージを書き込みます。

  使用例
scspd の簡単な設定ファイルの例は次のようになります:

    server atmarp_ni0 {
         protocol ATMARP;
         netif ni0;
         ServerGroupID 23;
         DCS {
              ID 10.1.1.2;
              ATMaddr 0x47.0005.80.ffdc00.0000.0002.0001.002048061de7.00;
              hops 2;
         };
    };

この設定では、ネットワークインタフェース ni0 上で実行されている ATMARP サーバのキャッシュと、 IP アドレス 10.1.1.2 のホスト上で実行されている 2 番目のサーバのキャッシュとの 同期をとります。 ログメッセージはシステムのログに書き込まれます。

シグナル処理
次のシグナルを使用して scspd を制御できます:

SIGHUP
    設定ファイルを再度読み込み、 scspd を再スタートします。

SIGINT
    デバッグ情報をファイルにダンプします。 SIGINT を受信すると、 scspd は制御ブロックのサマリをテキストファイルにダンプします ( 関連ファイル 参照)。

関連ファイル

/etc/scspd.conf
    scspd のデフォルトの設定ファイルの名前です。 別の名前は、コマンドラインで -f オプションで指定可能です。

    /tmp/scspd. <pid> ~. <seq> .out デバッグ情報をダンプするファイルの名前です。 scspd が SIGINT シグナルを受信すると、 制御ブロックのサマリをこのファイルに書き込みます。 <pid> はデーモンのプロセス ID であり、 <seq> はダンプがとられるごとに増えるシーケンス番号です。

    /tmp/scspd. <pid> .trace トレースファイルです。 -T オプションがコマンドラインで指定されると、 scspd はトレース情報をこのファイルに書き込みます。

関連ファイル
atm(8), atmarpd(8) RFC 2334, Server Cache Synchronization Protocol (SCSP). draft-ietf-ion-scsp-atmarpd-00.txt, A Distributed ATMARP Service Using SCSP.

バグ
scspd が終了して再スタートすると、 以前に同期されたキャッシュエントリがタイムアウトして リフレッシュされるまでの期間、不安定になります。

バグは <harp-bugs@magic.net> に報告してください。

COPYRIGHT
Copyright (c) 1994-1998, Network Computing Services, Inc.

作者
John Cavanaugh, Network Computing Services, Inc. Mike Spengler, Network Computing Services, Inc. Joe Thomas, Network Computing Services, Inc.

謝辞
本ソフトウェアは、 Defense Advanced Research Projects Agency (DARPA) の協力により開発されました。

日本語訳
堀川和雄 <horikawa@jp.FreeBSD.org>