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

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

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

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

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

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

表 9–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 値と等しくなるようにしてください。

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

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

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

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


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

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


    net.slp.multicastMaximumWait=value
    
    value

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

    デフォルト値は、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

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

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

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


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

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

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

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


    # svcadm enable network/slp
    

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

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

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

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

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

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

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


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

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


    net.slp.RandomWaitBound=value
    
    value

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

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

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

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


    net.slp.randomWaitBound=2000

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

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


    net.slp.datgramTimeouts=value
    
    value

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

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

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


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

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

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

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


    # svcadm enable network/slp