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

第 4 章 ネットワークプロパティの構成

SLP には、slpd およびクライアントライブラリのネットワーク相互作用の特性を制御する構成プロパティ群があります。多くの場合、これらのプロパティのデフォルトの設定に変更を加える必要はありません。ただし、特定のネットワーク媒体またはネットワークトポロジについては、各種の応答時間または帯域幅を調整するため、あるいはネットワークの潜在的な問題の発生を防ぐために、変更が必要な場合もあります。

この章では、デフォルトの SLP 構成プロパティ設定を変更するケースを挙げます。

ネットワーク構成プロパティの変更

SLP ネットワークプロパティは、slpd、クライアントライブラリ、およびネットワークの間の相互作用の特定された部分を制御するよう設計されています。このセクションでは、次の種類の SLP ネットワークプロパティを変更するための手順を説明します。

各領域において、各種のプロパティが構成の異なる場合を制御します。次のセクションでは、SLP の構成方法を説明します。

DA 通知および検出頻度の変更

DA 通知または DA 検出の頻度の変更が必要な場合があります。DA 通知および DA 検出は、次のプロパティによって制御されます。

デフォルトの DA 通知および DA 検出の構成の変更理由は次のとおりです。

UA および SA を静的に構成された DA に制限する

UA および SA が slp.conf ファイル内の静的な構成情報から DA アドレスのみを取得するように制限することが必要な場合もあります。これは、slpd の受動的および能動的な DA 検出を無効にすることによって達成できます。

net.slp.passiveDADetection プロパティを False に設定することにより、受動的検出を無効にします。これにより、slpd は請求されていない DA 通知を無視します。

net.slp.DAActiveDiscoveryInterval-1 に設定することにより、初期および定期の能動的検出を無効にします。これにより、slpd は初期の能動的 DA 検出および新規の DA に対する定期的なポーリングを行わなくなります。

これらの構成は、静的な構成を使用するよう制限されている UA および SA を実行しているホスト上でのみ行います。前述のように構成すると、slpd は DA 情報を slp.conf ファイル内の net.slp.DAAddresses プロパティからのみ入手するようになります。

DA 通知および DA 検出のタイミングの変更

ネットワーク媒体および全体的なネットワークトポロジの特定の組み合わせに対して、受動的 DA 通知および定期的な能動的検出要求のタイミングの変更が必要な場合があります。この節では、これらの例を示します。

頻繁なパーティション分割に対する DA のハートビートの構成

スコープをサポートするすべての DA を使用して登録するには、SA が必要です。DA は、slpd が能動的検出を行なった後に現れることがあります。DA が slpd スコープをサポートする場合は、slpd はスコープのサービス通知の設定に矛盾がないようにするために、DA を使用してホスト上のすべての通知を登録します。

slpd が DA を発見する 1 つの方法は、起動時に DA が送り出す初期の請求されていない通知によるものです。slpd は定期的な請求されていない通知 (ハートビート) を使用して、DA がまだアクティブであるかどうかを判断し、ハートビートが現れない場合は使用する DA を削除し、UA に申し出ます。

最後に、DA にシャットダウン要求が出された場合、DA はサービスから抜け出すことを受信している SA サービスに知らせる、特別な DA 通知を転送します。slpd はまた、非動作中の DA をキャッシュから削除するためにもこの通知を使用します。

ネットワークが頻繁にパーティション分割を行い、SA の期限が長い場合は、ハートビートの通知を受けなければ、分割中に DA をキャッシュから削除できます。ハートビートの頻度を減らすことにより、使用中止になった DA がパーティションの修正後にキャッシュに復元される遅延を削減できます。

net.slp.DAHeartBeat プロパティは、DA が請求されていない DA 通知をマルチキャストする頻度を制御します。デフォルトでは、DA のハートビート期間は 3 時間 (10800 秒) に設定されています。次のエントリは、DA のハートビートの値を 1 時間に削減します。


net.slp.DAHeartBeat=3600

ダイアルアップネットワークに対する DA 検出の構成

UA または SA がダイアルアップネットワークによって DA から切り離されている場合は、検出要求および DA 通知の数を削減または削除するよう DA 検出を構成することができます。ダイアルアップネットワークは通常起動時に課金されるので、余分な通話を最小限に抑えることにより、ダイアルアップネットワークの使用コストを削減できます。

「UA および SA を静的に構成された DA に制限する」で説明している方法で、DA 検出を完全に無効にできます。DA 検出を完全に無効にする場合は、正しい DA にアクセスするには、net.slp.DAAddresses プロパティを UA および SA を実行しているホスト上の slp.conf に設定してください。

DA のハートビートの期間および能動的検出の期間を長くすることにより、請求されていない DA 通知および能動的検出を削減できます。次の例では、能動的検出の間隔および DA のハートビートの両方が約 18 時間に設定されています。最初の行は、DA を実行しているホストの設定を示します。


net.slp.DAHeartBeat=65535

UA および SA を実行しているホスト上では、能動的検出の間隔は次のように構成されます。


net.slp.DAActiveDiscoveryInterval=65535

プロパティはどちらも秒単位で測定されます。

ネットワークが混雑している場合

ネットワークが非常に混雑している場合、マルチキャストの量を制限したいことがあります。ネットワークに DA を配置していない場合は、DA を配置すると SLP 関連のマルチキャストの量を大幅に削減できます。

ただし、DA の配置後でも DA 検出のためのマルチキャストは必要です。DA 検出に必要なマルチキャストの量は、「ダイアルアップネットワークに対する DA 検出の構成」で説明している方法で削減できます。「UA および SA を静的に構成された DA に制限する」で説明している方法で、DA 検出のためのマルチキャストを完全になくすことができます。

異なるネットワーク媒体、トポロジ、あるいは構成の調整

ネットワークで基礎になっているネットワーク媒体および構成に応じて、次のパラメタの 1 つを変更して SLP のパフォーマンスを調整できます。

この節では、これらのプロパティを使用して SLP のパフォーマンスを調整する方法を説明します。

SA 再登録の間隔の短縮

SA は、期限が切れる前に定期的にサービス通知を更新する必要があります。DA が多くの UA および SA からの非常に重い負荷を扱っている場合は、頻繁な更新により DA が過負荷になることがあります。DA が過負荷になると、UA の要求がタイムアウトしたり、欠落したりします。UA 要求のタイムアウトには多くの原因が考えられるので、DA の過負荷が問題であると仮定する前に、snoop トレースを使用してサービス登録で登録されているサービス通知の有効期限を確認してください。有効期限が短く、再登録が頻繁に発生している場合は、再登録が頻繁すぎることがタイムアウトの原因と考えられます。サービス登録は、新規のフラグが設定されていなければ再登録となります。サービス登録メッセージについては、付録 A 「SLP のメッセージタイプ」 を参照してください。

次の例は SA の minimum refresh interval を 1 時間に設定します。


net.slp.DAAttributes=(min-refresh-interval=3600)

net.slp.DAAttributes プロパティの単位は秒です。デフォルトの最短再登録期間はゼロ (0) なので、SA はいつでも自由に再登録できます。

マルチキャストの有効期限プロパティの構成

マルチキャストの有効期限 (net.slp.multicastTTL プロパティ) は、マルチキャストパケットがイントラネット内で伝達される範囲を決定します。マルチキャスト TTL は net.slp.multicastTTL プロパティを 1 〜 255 までの整数に設定することにより構成されます。マルチキャスト TTL のデフォルト値は 255 で、これは理論的にはパケット経路が無制限であることを意味します。しかし、TTL を 255 とすると、マルチキャストパケットがイントラネットを超えて管理ドメインの端にある境界ルータまで進む原因になります。インターネットのマルチキャストバックボーンまたは ISP にマルチキャストパケットが漏れないようにするには、境界ルータ上のマルチキャストが正しく構成されていることが必要です。

マルチキャスト TTL のスコープ設定は、TTL 比較が作成されることを除いて、標準的な IP の TTL と似ています。マルチキャストを実行できるルータ上の各インタフェースには、TTL 値が割り当てられています。マルチキャストパケットが着信すると、ルータはパケットの TTL をインタフェースの TTL と比較します。パケットの TTL がインタフェースの TTL 値と同じかそれより大きい場合は、標準的な IP の TTL の場合と同じように、パケットの TTL を 1 減らします。TTL がゼロになると、そのパケットは破棄されます。したがって、SLP マルチキャストに TTL スコープを使用する場合、パケットをイントラネットの特定のサブセクションに限定するために、ルータが適切に構成されている必要があります。

TTL 値を減らしてマルチキャストの伝達範囲を縮小することができます。TTL の値が 1 の場合、パケットはそのサブネットに限定されます。TTL の値が 32 の場合は、パケットはそのサイトに限定されます。「サイト」は、マルチキャスト TTL について記述されている RFC 1075 では定義されていません。32 以上の値は、インターネット上の論理的な経路を指すので使用しないでください。ただし、32 未満の値は、ルータが TTL を使用して適切に構成されていれば、アクセス可能なサブネットのセットにマルチキャストを限定するために使用できます。

パケットサイズの構成

SLP のデフォルトのパケットサイズは 1400 バイトで、ほとんどのローカルエリアネットワークにはこれで十分です。無線ネットワークまたは広域ネットワークの場合は、メッセージの断片化を防いだりネットワークのトラフィックを削減したりするために、パケットサイズを縮小できます。より大きなパケットを持つローカルエリアネットワークの場合は、パケットサイズを大きくするとパフォーマンスが向上することがあります。ネットワークの最小パケットサイズを確認することにより、パケットサイズの縮小が必要かどうかを判断できます。ネットワーク媒体のパケットサイズがより小さい場合は、net.slp.MTU プロパティを設定してください。

ネットワーク媒体のパケットサイズがより大きい場合に、パケットサイズを大きくすることもできます。ただし、SA からのサービス通知または UA からの問い合わせが頻繁にデフォルトのパケットサイズをオーバーフローするのでなければ、構成は必要ありません。デフォルトのパケットサイズを頻繁にオーバーフローしているかどうかは、snoop を使用して、UA からの問い合わせが頻繁にオーバーフローしているかどうかと、UDP の代わりに TCP を使用するためにロールオーバーしているかどうかを確認することによって判断できます。

net.slp.MTU プロパティは、SLP メッセージと共に、リンク層ヘッダ、IP ヘッダ、および UDP または TCP ヘッダを含む、IP パケットの全体サイズを測定します。

マルチキャストの代わりにブロードキャストを構成する

SLP は、DA がない場合に、マルチキャストを使用してサービス検出および DA 検出を行うように設計されています。さまざまな理由により、マルチキャストルーティングを配置しないネットワークがあります。使用するネットワークが、マルチキャストルーティングを配置しない場合は、net.slp.isBroadcastOnly プロパティを True に設定することにより、SLP がブロードキャストを使用するように構成できます。

マルチキャストと異なり、ブロードキャストパケットはデフォルトではサブネットを超えて伝達しません。このため、マルチキャストを行わないネットワークにおいて、DA を使用しないサービス検出は、単一のサブネット上でのみ機能します。さらに、ブロードキャストが使用されているネットワークに DA およびスコープを配置する場合は、特別な考慮が求められます。マルチホームホスト上の DA は、マルチキャストが使用できない複数のサブネット間でサービス検出をブリッジできます。マルチホームホスト上の DA の配置については、第 8 章「マルチホームホスト上での SLP の構成」を参照してください。

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 を使用した登録をより時間をかけて完了できるので、衝突およびタイムアウトを回避することができます。