サービスロケーションプロトコルの管理

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

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

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

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

タイムアウトを制御する構成プロパティのセットは、次のとおりです。

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

たとえば、マルチキャスト要求が完了するまでに、15 秒ではなく 20 秒 (20000 ミリ秒) かかると判断したとします。次に示すプロパティ構成は、最大待ち時間およびマルチキャストのタイムアウトのリストを変更します。


net.slp.multicastMaximumWait=20000
net.slp.multicastTimeouts=2000,5000,6000,7000
net.slp.DADiscoveryTimeouts=3000,3000,6000,8000

ネットワークの応答時間が短い場合は、net.slp.multicastMaximumWait の構成値および 2 つのマルチキャストのタイムアウトのリスト内の値を小さくして、待ち時間を短縮できます。

これと同じ手順が、UDP データグラムを DA に送る場合のタイムアウトについて使用できます。ただし、DA のタイムアウトの上限が net.slp.datagramTimeouts リスト内の要素の合計で決定されていて、別のプロパティで決定されているのではない場合に限ります。UDP ダイアグラムは、応答を受け取るかタイムアウトの上限になるまで、繰り返し DA に対して送られます。頻繁にタイムアウトが発生する場合は、リストの値を増やすことができます。

たとえば、前述のように、頻繁なタイムアウトの発生を回避するために、データグラムタイムアウトの上限を 20000 ミリ秒に増やす必要があるとします。次のように構成すると達成できます。


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

高性能のネットワークでは、逆に UDP データグラム転送のマルチキャストまたはユニキャストについてのタイムアウトの上限を小さくするために、この手順を行うことができます。これにより、SLP 要求を満たす際に、応答時間を短縮できます。

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

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

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

プロパティを構成することにより、この最大待ち時間を長くできます。たとえば、次のように構成します。


net.slp.randomWaitBound=5000

この例は、ランダム待ち時間を 5000 ミリ秒 (5 秒) に延長します。

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