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

第 8 章 マルチホームホスト上での SLP の構成

サーバーマシンが複数の IP サブネット上でホストとして機能している場合は、そのサーバーに複数のネットワークインタフェースカードが装着されていることがあります。多くの場合、そのようなマルチホームホストはルーターとしても機能し、マルチキャストパケットを含む IP パケットは、このインタフェース間を経路指定されます。場合によっては、インタフェース間の経路指定ができないことがあります。この章では、そういった場合に SLP を構成する方法を説明します。

概要

構成を行わない場合、デフォルトのネットワークインタフェース上で、slpdマルチキャストおよび UDP または TCP ユニキャストに対して待機しています。ユニキャストルーティングおよびマルチキャストルーティングがマルチホームマシンのインタフェース間で調整されている場合は、別のインタフェースに到達するマルチキャストパケットはデフォルトで正確に経路指定されるので、追加の構成を行う必要はありません。その結果、DA または他のサービス通知のマルチキャスト要求は、slpd に届きます。経路指定が何らかの理由で調整されていない場合は、構成が必要です。

経路指定されていない複数のネットワークインタフェースに対して構成を行う場合

マルチホームマシン上で構成が必要と考えられるのは、主に次の場合です。

マルチキャストルーティングがインタフェース間で使用できない場合は、通常、マルチキャストがネットワークに配置されていないことが原因です。この場合は通常、それぞれのサブネット上の DA ベースでないサービス検出および DA 検出にブロードキャストが使用されます。ブロードキャストは、net.slp.isBroadcastOnly プロパティを True に設定することによって構成します。

経路指定されていない複数のネットワークインタフェースに対して構成する方法

経路指定を使用できないマルチホームマシン上で必要と考えられる主な構成手順は次のとおりです。

net.slp.interfaces プロパティの構成

net.slp.interfaces プロパティが設定されている場合、slpd は、SLP 要求のユニキャストおよびマルチキャストまたはブロードキャストに対して待機するのに、デフォルトのインタフェース上のものではなく、プロパティにリストされたインタフェース上のものに対して待機します。たとえば、3 枚のネットワークカードを持ち、マルチキャストルーティングがオフになっているサーバーが、3 つのサブネットに接続されているとします。さらに、その 3 つのネットワークインタフェースが IP アドレス 192.147.142.42192.147.143.42、および 192.147.144.42 を持っており、サブネットマスクが 255.255.255.0 であるとします。次のプロパティの設定を行うと、slpd はユニキャストおよびマルチキャストまたはブロードキャストのメッセージについて、3 つすべてのインタフェース上のものに対して待機します。


net.slp.interfaces=192.147.142.42,192.147.143.42,192.147.144.42

net.slp.interfaces プロパティは、前述のようにピリオドの付いた 10 進数形式の IP アドレスまたは解決可能なホスト名のいずれかに設定できます。

通常、net.slp.interfaces プロパティを設定すると同時に、net.slp.isBroadcastOnly プロパティを設定することによりブロードキャストを有効にします。これは、ネットワークにマルチキャストが配置されていないために行います。ただし、マルチキャストは配置されているが、この特定のマルチホームホスト上で経路指定されていない場合には、マルチキャスト要求は複数のインタフェースから slpd に到達できます。これは、そのインタフェースが役目を果たす、別のマルチホームホストまたはサブネットを接続するルーターがパケットの経路指定を行うために可能になります。

この場合、SA サーバーまたは要求を送っている UA は、マルチホームの slpd から 2 つの応答を受け取ります。これらの応答はクライアントライブラリによってフィルタにかけられて除かれるので、クライアントには見えません。ただし、この応答は、snoop トレースで見ることができます。

ユニキャストルーティングがオフになっている場合は、net.slp.interfaces プロパティの構成に注意してください。ユニキャストルーティングがない場合、SA クライアントが次のことをしないときには、マルチホーム上の SA クライアントによるサービス通知がすべてのサブネットから到達できないことがあります。

SA クライアントライブラリには、到達可能な URL が確実に通知されるようにするためのしくみはありません。したがって、到達可能な URL が確実に通知されるようにするのは、経路指定のないマルチホームホストを扱うかどうかに関わらず、サービスプログラムに依存します。

ユニキャストルーティングが無効なマルチホームホストにサービスを配置する前に、snoop を使用してサービスが複数のサブネットから出された要求を正確に処理しているかどうかを判断してください。さらに、マルチホームホストに DA を配置することを計画している場合は、「DA の配置およびスコープ名の割り当て」を参照してください。

マルチホームホスト上のプロキシ通知

複数のインタフェースを持つホストが slpd およびプロキシ登録を使用してサービスを通知する場合は、slpd によって通知されるサービス URL に到達可能なホスト名またはアドレスが含まれている必要があります。インタフェース間のユニキャストルーティングが有効な場合は、すべてのサブネット上のホストは別のサブネット上のホストに到達でき、任意のサブネット上のサービスについてプロキシ登録を行えます。しかし、ユニキャストルーティングが無効な場合は、1 つのサブネット上のサービスクライアントはマルチホームホストを通じて他のサブネット上のサービスには到達できません (別のルーターを通じて到達できることはあります)。

たとえば、デフォルトのホスト名が bigguy のホストが、経路指定されていない異なる 3 つのサブネット上に 3 枚のインタフェースカードを持っているとします。これらのサブネット上のホスト名は、IP アドレス 192.147.142.42 を持つ bigguy、IP アドレス 192.147.143.42 を持つ bigguy1、IP アドレス 192.147.144.42 を持つ bigguy2 です。ここで、レガシーのプリンタ oldprinter がサブネット 143 に接続されるとします。net.slp.interfaces がすべてのインタフェース上のものに対して待機するように構成して、下記の URL をすべてのインタフェース上でプロキシ通知すると、サブネット 142 および 144 上のマシンはサービス要求に対する応答に、この URL を受信します。しかし、それらのマシンはこのサービスにアクセスできません。


service:printing:lpr://oldprinter/queue1

この問題の解決方法は、マルチホームホスト上ではなく、サブネット 143 のみに接続されたマシン上で動作している slpd を使用してプロキシ通知を行うことです。サブネット 143 上のホストのみがサービス要求に対する応答にこの通知を入手できます。

DA の配置およびスコープ名の割り当て

経路指定が無効だが net.slp.interfaces プロパティが構成されているマルチホームホストを持つネットワークにおいて、DA の配置およびスコープ名の割り当てを行う場合は、クライアントがアクセス可能なサービスを確実に入手するように注意してください。さらに、マルチホームマシンのインタフェース間でユニキャストルーティングが有効な場合は、特別な DA およびスコープを構成する必要はありません。これは、DA にキャッシュされている通知が任意のサブネットからアクセス可能なサービスを識別するためです。ただし、ユニキャストルーティングが無効な場合は、DA をうまく配置しないと問題になることがあります。

前述の例で何が問題になりうるか見るために、bigguy が DA を実行し、すべてのサブネット上のクライアントが同じスコープを持つ場合に、何が起こるか考えてみます。サブネット 143 上の SA はサービス通知を DA に登録します。サブネット 144 上の UA は、サブネット 143 上のホストに到達できなくても、それらのサービス通知を入手できます。

この問題の 1 つの解決方法は、マルチホームホスト上ではなく、各サブネット上で DA を実行することです。この場合は、マルチホームホスト上の net.slp.interfaces プロパティは、単一のインタフェースホスト名あるいはアドレスを使用して構成するか、構成せずそのままにし、強制的にデフォルトのインタフェースが使用されるようにします。この解決方法の欠点は、通常大規模なマシンであり、DA として高機能であるマルチホームホストを DA に設定できないことです。

もう 1 つの解決方法は、マルチホームホスト上で DA を実行するが、各サブネット上の SA および UA が異なるスコープを持つようにスコープを構成することです。たとえば、前述の場合、142 ネット上の UA および SA がスコープ scope142143 ネット上の UA および SA がスコープ scope143144 ネット上の UA および SA がスコープ scope144 を持つようにスコープを構成することができます。3 つのインタフェースを持つ bigguy 上の net.slp.interfaces プロパティを構成して、DA を 3 つのサブネット上の 3 つのスコープに作用させることができます。

経路指定されていない複数のネットワークインタフェースを構成する場合の検討事項

ネットワークにおいてマルチキャストルーティングがオフになっていても、マルチホームホスト上のインタフェース間のユニキャストルーティングが有効な場合は、マルチホームホスト上の DA に、サブネット間のサービス通知をブリッジさせるよう net.slp.interfaces プロパティを構成することができます。ユニキャストはインタフェース間を経路指定しているため、サービスが置かれているサブネットと異なるサブネット上のホストは、サービス URL を受信すればそのサービスに接続することができます。DA がない場合は、特定のサブネット上の SA サーバーが同じサブネット上に出されたブロードキャストのみを受信するので、そのサブネット以外にサービスを置くことはできません。

net.slp.interfaces の構成が必要な最も一般的なケースは、マルチキャストがネットワークに配置されておらず、代わりにブロードキャストが使用されている場合です。その他の場合は、不必要な応答の重複や到達できないサービスを避けるために、入念に検討および計画を行なってください。