Solaris のシステム管理 (資源管理とネットワークサービス)

SLP 検出要求のタイムアウトの変更

SLP 検出要求のタイムアウトを変更する必要があるのは、次の 2 つの場合です。

デフォルトのタイムアウトの変更

ネットワークの応答時間が長いと、UA および SA が要求と登録を行う場合、応答を受け取る前にタイムアウトになる原因になります。複数のサブネット、ダイアルアップ回線、または WAN によって UA が SA から切り離されている場合、または UA と SA の両方が DA から切り離されている場合、応答時間が問題となることがあります。応答時間が問題であるかどうかを判断するには、UA および SA の要求と登録でタイムアウトが起こったために SLP 要求が失敗しているかどうかを確認します。ping コマンドを使って実際の応答時間を測定することもできます。

次の表は、タイムアウトを制御する構成プロパティを示します。この節で説明する手順で、これらのプロパティを変更できます。

表 20–4 タイムアウトプロパティ

プロパティ  

説明 

net.slp.multicastTimeouts

net.slp.DADiscoveryTimeouts

net.slp.datagramTimeouts

これらのプロパティは、メッセージ転送が中止されるまで、マルチキャストやユニキャストが繰り返し実行する UDP メッセージの転送に使用できるタイムアウトのリストを制御する 

net.slp.multicastMaximumWait

このプロパティは、マルチキャストメッセージが中止されるまで、転送される最長時間を制御する 

net.slp.datagramTimeouts

このプロパティにリストされる値の合計を示す DA タイムアウトの上限。UDP ダイアグラムは、応答を受け取るかタイムアウトの上限になるまで、DA に繰り返し送られる 

マルチキャストサービスの検出中または DA の検出中に頻繁にタイムアウトが発生する場合は、net.slp.multicastMaximumWait プロパティをデフォルト値の 15000 ミリ秒 (15 秒) から増やしてください。最大待ち時間を長くすることにより、応答時間の長いネットワーク上で要求に対してより長い時間が許可されます。net.slp.multicastMaximumWait プロパティの値を増やした後は、net.slp.multicastTimeoutsnet.slp.DADiscoveryTimeouts も変更する必要があります。これらのプロパティのタイムアウト値の合計が net.slp.multicastMaximumWait 値と等しくなるようにしてください。

デフォルトのタイムアウトの変更方法

次の手順に従って、タイムアウトを制御する SLP プロパティを変更します。

  1. スーパーユーザーになります。

  2. ホスト上の slpd とすべての SLP 動作を停止します。


    # /etc/init.d/slpd stop
    
  3. 構成の設定を変更する前に、デフォルトの /etc/inet/slp.conf ファイルのバックアップをとります。

  4. slpd.conf ファイル内の net.slp.multicastMaximumWait プロパティを変更します。


    net.slp.multicastMaximumWait=value
    

    value

    32 ビットの整数で、net.slp.multicastTimeoutsnet.slp.DADiscoveryTimeouts に設定する値の合計値を示す

    デフォルト値は、15000 ミリ秒 (15 秒) 

    値の範囲は、1000 から 60000 ミリ秒  

    たとえば、マルチキャスト要求で 20 秒 (20000 ミリ秒) 必要だと判断したら、net.slp.multicastTimeouts プロパティと net.slp.DADiscoveryTimeouts プロパティにリストされている値の合計が 20000 ミリ秒になるように調整します。


    net.slp.multicastMaximumWait=20000
    net.slp.multicastTimeouts=2000,5000,6000,7000
    net.slp.DADiscoveryTimeouts=3000,3000,6000,8000
  5. slpd.conf ファイル内の net.slp.datagramTimeouts プロパティを必要に応じて変更します。


    net.slp.datagramTimeouts=value
    

    value

    32 ビット整数のリストで、ユニキャストのデータグラム転送を DA に実行するためのタイムアウト (ミリ秒) 

    デフォルト値は、3000,3000,3000 

    たとえば、頻繁なタイムアウトの発生を回避するために、データグラムのタイムアウトを 20000 ミリ秒に増やすことができます。


    net.slp.datagramTimeouts=2000,5000,6000,7000

    高パフォーマンスのネットワークでは、逆に UDP データグラム転送のマルチキャストまたはユニキャストのタイムアウトの上限を小さくできます。 タイムアウトの上限を小さくすることで、SLP 要求を満たすために必要な応答時間を短縮できます。

  6. 変更を保存し、ファイルを閉じます。

  7. 変更を反映するには、slpd を再起動します。


    # /etc/init.d/slpd start
    

ランダム待ち時間の上限の構成

トラフィックの重いネットワークや衝突率の高いネットワークでは、DA との通信が影響を受けることがあります。衝突率が高い場合、送信エージェントは、UDP データグラムを再転送する必要があります。再転送が発生しているかどうかは、snoop を使用して、SA サーバー として slpd を実行しているホスト、および DA として slpd を実行しているホストのネットワークトラフィックを監視することにより判断できます。 SA サーバーとして slpd を実行しているホストから同じサービスについて複数のサービス登録メッセージが snoop トレースに現れる場合は、衝突の問題があると考えられます。

衝突は、ブート時の主要な問題となる場合があります。DA が最初に起動されると、DA は請求されていない通知を送り出し、SA はそれらの登録に応答します。SLP は、DA 通知を受け取ってから応答するまでにランダムな時間だけ、SA を待たせます。このランダムな待ち時間は、net.slp.randomWaitBound によって制御される最大値を使って均等に分散されます。デフォルトのランダム待ち時間の上限は 1000 ミリ秒 (1 秒) です。

ランダム待ち時間の上限の構成方法

次の手順に従って、slp.conf ファイルの net.slp.RandomWaitBound プロパティを変更します。

  1. スーパーユーザーになります。

  2. ホスト上の slpd とすべての SLP 動作を停止します。


    # /etc/init.d/slpd stop
    
  3. 構成の設定を変更する前に、デフォルトの /etc/inet/slp.conf ファイルのバックアップをとります。

  4. slpd.conf ファイル内の net.slp.RandomWaitBound プロパティを変更します。


    net.slp.RandomWaitBound=value
    

    value

    DA に接続するまでのランダム待ち時間の計算に使用される上限 

    デフォルト値は、1000 ミリ秒 (1 秒) 

    値の範囲は、1000 から 3000 ミリ秒  

    たとえば、ランダム待ち時間を 5000 ミリ秒 (5 秒) に延長できます。


    net.slp.randomWaitBound=5000

    ランダム待ち時間の上限を長くすると、登録で遅延が長くなります。SA は新しく検出された DA をより時間をかけて登録できるので、衝突とタイムアウトを回避することができます。

  5. slpd.conf ファイル内の net.slp.datagramTimeouts プロパティを必要に応じて変更します。


    net.slp.datgramTimeouts=value
    

    value

    32 ビット整数のリストで、ユニキャストのデータグラム転送を DA に実行するためのタイムアウト (ミリ秒) 

    デフォルト値は、3000,3000,3000 

    たとえば、頻繁なタイムアウトの発生を回避するために、データグラムのタイムアウトを 20000 ミリ秒に増やすことができます。


    net.slp.datagramTimeouts=2000,5000,6000,7000

    高パフォーマンスのネットワークでは、逆に UDP データグラム転送のマルチキャストまたはユニキャストのタイムアウトの上限を小さくできます。 この設定により、SLP 要求を満たす際に、応答時間を短縮できます。

  6. 変更を保存し、ファイルを閉じます。

  7. 変更を反映するには、slpd を再起動します。


    # /etc/init.d/slpd start