この節では、IP ネットワークマルチパスを有効にする方法について説明します。IP ネットワークマルチパス機能を使用するには、同じ IP リンクに複数の物理インタフェースで接続されていなければなりません。たとえば、同じ Ethernet スイッチや同じ IP サブネットなどに、同じマルチパスグループとして構成された複数の物理インタフェースを接続します。物理インタフェースが 1 つだけの場合は、「1 つの物理インタフェースで構成されたマルチパスグループの管理」を参照してください。
マルチパスグループは、空文字列でない名前で識別されます。たとえば、math-link、bio-link、chem-link などは有効な名前です。名前は通常、グループがどこに接続されているのかを表しています。マルチパスグループのいずれか 1 つのネットワークアダプタに障害が発生すると、障害が発生したアダプタのすべてのネットワークアクセスが、同じグループの正常なアダプタに迂回されます。ネットワークアクセスの障害経路の迂回の対象には、IPv4 のユニキャスト、ブロードキャスト、およびマルチキャストと、IPv6 のユニキャストおよびマルチキャストが含まれます。IP ネットワークマルチパスが正常に動作するには、同じマルチパスグループに属するネットワークアダプタで次の条件が満たされている必要があります。
マルチパスグループのすべてのネットワークアダプタに対し、同じ STREAMS モジュール群をプッシュおよび構成する必要があります。
1 つのネットワークアダプタで IPv4 を使用するのであれば、マルチパスグループのすべてのネットワークアダプタで IPv4 を使用する必要があります。
1 つのネットワークアダプタで IPv6 を使用するのであれば、マルチパスグループのすべてのネットワークアダプタで IPv6 を使用する必要があります。
Ethernet の場合は、システムにあるすべての Ethernet ネットワークアダプタに固有の MAC アドレスが必要です。SPARC プラットフォームの場合は、openboot PROM の local-mac-address? を true に設定します。IA (x86) プラットフォームでは、何もする必要はありません。
マルチパスグループのすべてのネットワークアダプタは、同じ IP リンクに接続されていなければなりません。
マルチパスグループに異なる種類のインタフェースが含まれていてはなりません。グループ化するインタフェースは、/usr/include/net/if_types.h に定義されているのと同じタイプのインタフェースでなければなりません。たとえば、Ethernet とトークンリングを一緒にしたり、トークンバスと ATM (非同期転送モード) を一緒にしたりすることはできません。
ATM で IP ネットワークマルチパスを使用する場合は、ATM を LAN エミュレーションで構成する必要があります (従来の IP インスタンス間のマルチパスの使用は、現在はサポートされていません)。
4 つ目の条件は、マルチパスグループに属するインタフェースだけでなく、システムのすべてのインタフェースに適用されます。
グループの構成には、ifconfig コマンドを使用します。このコマンドの group オプションでグループ名を指定し、インタフェースを IPv4 と IPv6 をともにそのグループに追加します。group オプションは次のように使用します。
ifconfig interface-name group group-name |
特定のグループに IPv4 インタフェースを入れると、同じグループに IPv6 インタフェースが自動的に入れられます。さらに、同じコマンドを使って、同じサブネットに接続された 2 つ目のインタフェースを同じグループに入れることができます (「2 つのインタフェースでマルチパスインタフェースグループを構成するには」を参照)。
マルチパスグループからインタフェースを削除するには、group オプションで空文字列を指定します (「グループからインタフェースを削除するには」を参照)。
別のマルチパスグループに属するインタフェースを新しいグループに入れる場合、既存のグループからそのインタフェースを削除する必要はありません。インタフェースを新しいグループに入れると、そのインタフェースは既存のグループから自動的に削除されます (「インタフェースを既存のグループから別のグループに移動するには」を参照)。
1 つのマルチパスグループに構成できるネットワークアダプタの数に制限はありません。group オプションを論理インタフェースに指定することはできません。たとえば、hme0 は使用できますが、hme0:1 は使用できません。
マルチパスグループのすべてのインタフェースは、同じ IP リンクに接続されていなければなりません。これは、インタフェースに障害が発生すると、障害経路の迂回処理によって、すべての IP アドレスが障害の発生したインタフェースからグループ内の正常なインタフェースに移されるからです。正常なインタフェースに切り替えられたアドレスにルーターがパケットのルーティングを引き続き行うためには、その正常なインタフェースが同じ IP リンクに接続されていなければなりません。
マルチパスグループのすべての物理インタフェースを構成する際には、検査用 IP アドレスを指定する必要があります。検査用 IP アドレスは、障害や回復の検出に必要です。検査用 IP アドレスが指定されていないと、その物理インタフェースは障害経路の迂回には使用されません。in.mpathd だけが検査用 IP アドレスを使用します。通常のアプリケーションでは、このアドレスを使用しないようにしてください。インタフェースに障害が発生しても、このアドレスに関しては障害経路の迂回は行われません。IPv4 では、検査用 IP アドレスを構成する際には、通常のアプリケーションが検査用 IP アドレスを使用しないように設定してください (「2 つのインタフェースでマルチパスインタフェースグループを構成するには」を参照)。
ここでは、次のインターネットプロトコルに対する検査用 IP アドレス構成の概念について説明します。
IPv4
IPv6
in.mpathd マルチパスデーモンは、障害や回復を検出するための検査用 IP アドレスを必要とします。この IP アドレスは、ルーティング可能なアドレスでなければなりません。つまり、このアドレスのネットワークアドレス (ネットワーク接頭子) がリンク内のすべてのルーターから認識可能でなければなりません。検査用 IP アドレスの構成には、ifconfig コマンドの -failover オプションを使用します。検査用 IP アドレスを設定する構文は次の通りです。
# ifconfig interface-name addif ip-address <other-parameters> -failover up |
<other-parameters> には、実際の構成に必要なオプションを指定します。詳細は、ifconfig(1M) のマニュアルページを参照してください。IPv4 検査用アドレスの設定手順については、「2 つのインタフェースでマルチパスインタフェースグループを構成するには」を参照してください。
たとえば、アドレスが 19.16.85.21、ネットマスクおよびブロードキャストアドレスがデフォルト値で、かつ検査用に使用できる論理インタフェースを新規に作成するには、次のように指定します。
# ifconfig hme0 addif 19.16.85.21 netmask + broadcast + -failover up |
この検査用 IP アドレスをアプリケーションから使用できないように IPv4 検査用アドレスを deprecated と指定する必要があります (「2 つのインタフェースでマルチパスインタフェースグループを構成するには」を参照)。
アドレスの障害経路の迂回属性を有効にする場合は、failover (ダッシュ (-) をつけない) を指定します。
マルチパスグループのすべての検査用 IP アドレスには、同じネットワークアドレスを使用する必要があります。つまり、すべての検査用 IP アドレスは 1 つの IP サブネットに属していなければなりません。
リンクローカルアドレスが物理インタフェースに結び付けられているので、IPv6 検査用 IP アドレスを構成するには、リンクローカルアドレス自体を使用します。したがって、IPv6 では、別個の IP アドレスは必要ありません。IPv6 の場合、-failover オプションの構文は次の通りです。
# ifconfig interface-name inet6 -failover |
IPv6 検査用 IP アドレスの設定手順については、「2 つのインタフェースでマルチパスインタフェースグループを構成するには」を参照してください。
マルチパスグループですべてのグループのインタフェースに IPv4 と IPv6 の両方が使用される場合には、別個の IPv4 検査用アドレスは必要ありません。in.mpathd デーモンは、IPv6 リンクローカルアドレスを使ってインタフェースを調べることができます。IPv6 リンクローカルアドレスは、IPv6 を使用すると自動的に作成されます。
アドレスの障害経路の迂回属性を有効にするには、failover (ダッシュ (-) をつけない) を指定します。
有効な IPv6 検査用 IP アドレスは、リンクローカルアドレスだけです。
検査用 IP アドレスを構成したら、このアドレスが通常のアプリケーションで使用されないようにする必要があります。検査用 IP アドレスに対して障害経路の迂回処理が行われないため、アプリケーションから検査用 IP アドレスを使用できるようにすると、検査用 IP アドレスを使用したアプリケーションは障害迂回の処理時に異常終了します。検査用 IP アドレスが通常のアプリケーションに使用されるのを防ぐには、ifconfig コマンドを使って検査用 IP アドレスを deprecated と指定します。このオプションは次の構文により指定します。
ifconfig interface-name deprecated |
アドレスを deprecated と指定すると、このアドレスをアプリケーションが明示的に指定しない限り、IP はこのアドレスを通信のソースアドレスとして選択しません。このようなアドレスに明示的に指定するのは、in.mpathd だけです (「2 つのインタフェースでマルチパスインタフェースグループを構成するには」を参照)。
ネームサービス (DNS、NIS、NIS+) にはリンクローカルアドレスは登録されませんので、アプリケーションはリンクローカルアドレスを通信に使用しません。したがって、IPv6 検査用 IP アドレスを deprecated と指定する必要はありません。
IPv6 リンクローカルアドレスは deprecated と指定しないでください。
アドレスの deprecated 属性を無効にするには、-deprecated オプションを使用します。
IPv4 検査用アドレスは、ネームサービスデータベース (DNS、NIS、または NIS+) に入れないでください。IPv6 では、検査用 IP アドレスとしてリンクローカルアドレスが使用されますが、このアドレスは通常、ネームサービスデータベースに入れられません。
マルチパスグループと検査用 IP アドレスの構成には、/etc/hostname.interface ファイルを使用できます。/etc/hostname.interface ファイルを使ってマルチパスグループを構成するには、次の構文に従ってファイルに 1 行追加します。
interface-address <parameters> group group-name up ¥ addif logical-interface-address <parameters> up |
たとえば、次の構成に基づいて test グループを作成します。
物理インタフェース hme0 のアドレスは 19.16.85.19
論理インタフェースのアドレスは 19.16.85.21
deprecated と -failover を指定する。
ネットマスクおよびブロードキャストアドレスをデフォルト値に設定する。
/etc/hostname.hme0 ファイルに次の行を追加します。
19.16.85.19 netmask + broadcast + group test up ¥ addif 19.16.85.21 deprecated -failover netmask + broadcast + up |
IPv4 hostname ファイルの構成手順については、「2 つのインタフェースでマルチパスインタフェースグループを構成するには」を参照してください。
IPv6 の設定では、次の構文に従って /etc/hostname6.interface ファイルに 1 行追加します。
<parameter> group group-name up |
たとえば、IPv6 検査用 IP アドレスを使って hme0 に対し test グループを作成するには、/etc/hostname6.hme0 ファイルに次の行を追加します。
-failover group test up |
IPv6 hostname6 ファイルの構成手順については、「2 つのインタフェースでマルチパスインタフェースグループを構成するには」を参照してくだい。
マルチパスグループには、待機インタフェースを構成できます。名前が示すように、このインタフェースは待機中とみなされ、グループの他のインタフェースに障害が発生しない限り使用されません。
待機インタフェースは、通常のデータパケットの送信には使用されません。したがって、待機インタフェースでのデータの流量は限られています。待機インタフェースが正常であるかどうかを判定するための検査信号の送信に使用するため、待機インタフェースには検査用 IP アドレスが必要です。待機インタフェースに検査用 IP アドレスが指定されていないと、グループの別のインタフェースに障害が発生しても、この待機インタフェースは障害経路の迂回先にはなりません。次の場合には、待機インタフェースにデータが流れることがあります。
ネットワーク上の別ホストが待機インタフェースのアドレスを使ってこのホストと通信すると、着信パケットにはその待機インタフェースが使用されます。
待機インタフェースのアドレスをアプリケーションが (bind または IP_ADD_MEMBERSHIP を使って) 指定すると、継続的にこの待機インタフェースにデータが流れることがあります。
このように待機インタフェースは、アプリケーションによって明示的に選択されない限り、通常 (検査目的以外には) 選択されません。グループのインタフェースに障害が発生すると、すべてのネットワークアクセスは待機インタフェースに迂回されます。待機インタフェースを構成するには、次のように ifconfig コマンドの standby オプションを使用します。
# ifconfig interface-name standby group group-name |
この手順については、「インタフェースの 1 つが待機インタフェースであるマルチパスグループを構成するには」を参照してください。
待機インタフェースに検査用 IP アドレスが設定されていると、in.mpathd デーモンは、待機インタフェースを通して検査信号を送信します。待機インタフェースには、検査用 IP アドレスだけを設定してください。待機インタフェースに他のアドレスを追加しても、追加は失敗します。検査用 IP アドレス以外のアドレスをもつインタフェースを待機インタフェースに指定すると、これらのアドレスは自動的にグループの他のインタフェースに移され、検査用 IP アドレスがある場合は待機インタフェースには検査用 IP アドレスだけが残ります。待機インタフェースに検査用 IP アドレス以外のアドレスを設定しないことを推奨します。
検査用 IP アドレスを指定するには、ifconfig コマンドの standby や up オプションの前に deprecated と -failover オプションを指定します。
待機インタフェースに検査用 IP アドレスを設定するには、次の構文を使用します。
# ifconfig interface-name plumb ip-address <other-parameters> deprecated -failover standby up |
<other-parameters> には、実際の構成に必要なパラメータを使用します。詳細は、ifconfig(1M) のマニュアルページを参照してください。
待機インタフェースに検査用 IP アドレスが設定されていないと、待機インタフェースは障害経路の迂回には使用されません。
たとえば、次の構成に基づいて検査用 IP アドレスを作成します。
物理インタフェース hme2 を待機インタフェースにする。
アドレスを 19.16.85.22 とする。
deprecated と -failover を指定する。
ネットマスクおよびブロードキャストアドレスをデフォルト値に設定する。
次のようにコマンド行を入力します。
# ifconfig hme2 plumb 19.16.85.22 netmask + broadcast + deprecated -failover standby up |
インタフェースは、アドレスに対して障害経路の迂回が行われないように設定された後にのみ、待機インタフェースとして設定されます。
この手順については、「インタフェースの 1 つが待機インタフェースであるマルチパスグループを構成するには」を参照してください。
待機状態を解除するには、次の構文を使用します。
# ifconfig interface-name -standby |