IP ネットワークマルチパスの管理

複数の物理インタフェースで構成されたマルチパスグループの管理

この節では、IP ネットワークマルチパスを有効にする方法について説明します。IP ネットワークマルチパス機能を使用するには、同じ IP リンクに複数の物理インタフェースで接続する必要があります。たとえば、同じマルチパスグループの下に同じ Ethernet スイッチや同じ IP サブネットを構成できます。物理インタフェースが 1 つだけの場合は、1 つの物理インタフェースで構成されたマルチパスグループの管理を参照してください。

マルチパスグループは、空文字列でない名前で識別されます。たとえば、math-link、bio-link、chem-link などは有効な名前です。名前は通常、グループが接続されている場所を表します。障害が検出されると、障害が発生したアダプタからマルチパスグループ内の正常なアダプタにネットワークアドレスが切り替わります。 ネットワークアクセスの迂回先には、IPv4 のユニキャスト、ブロードキャスト、およびマルチキャストと、IPv6 のユニキャストおよびマルチキャストが含まれます。IP ネットワークマルチパスが正常に動作するには、同じマルチパスグループに属するネットワークアダプタで次の条件が満たされている必要があります。

  1. マルチパスグループのすべてのネットワークアダプタに対し、同じ STREAMS モジュール群をプッシュおよび構成する必要があります。

  2. 1 つのネットワークアダプタで IPv4 を結合する場合は、マルチパスグループのすべてのネットワークアダプタで IPv4 を結合する必要があります。

  3. 1 つのネットワークアダプタで IPv6 を結合する場合は、マルチパスグループのすべてのネットワークアダプタで IPv6 を結合する必要があります。

  4. システム内のすべての Ethernet ネットワークに一意の MAC アドレスを割り当てる必要があります。SPARC プラットフォームでは、一意の MAC アドレスを取得するため、openboot PROM で local-mac-address を TRUE に設定します。IA (x86) プラットフォームでは、何も設定する必要はありません。

  5. マルチパスグループのすべてのネットワークアダプタを、同じ IP リンクに接続する必要があります。

  6. マルチパスグループに異なる種類のインタフェースを含めないようにします。グループ化するインタフェースは、/usr/include/net/if_types.h に定義されているのと同じタイプのインタフェースである必要があります。たとえば、Ethernet とトークンリングを一緒にしたり、トークンバスと ATM (非同期転送モード) を一緒にしたりすることはできません。

  7. ATM で IP ネットワークマルチパスを使用する場合は、その ATM を LAN エミュレーション向けに構成する必要があります。従来の IP インスタンスでのマルチパスは現在サポートされていません。


注 –

4 つ目の条件は、マルチパスグループに属するインタフェースだけでなく、システムのすべてのインタフェースに適用されます。


出荷時設定で一意な MAC アドレスになっていないアダプタは、各アダプタの MAC アドレスを手動で構成して対処することができます。たとえば、起動スクリプトファイル中に ifconfig ether コマンドを使用して構成します。


注 –

手動で構成された MAC アドレスは、システムをリブートすると無効になります。MAC アドレスは、一意なものを選択する必要があります。アダプタの MAC アドレスが一意でない場合、IP ネットワークマルチパスは予測できない動作をする可能性があります。


物理インタフェースのグループ化

グループの構成には、ifconfig コマンドを使用します。このコマンドは、グループ名を必要とする新しい group パラメータを使用します。 ifconfig コマンドは、指定のグループ内にインタフェースの IPv4 インスタンスと IPv6 インスタンスを追加できます。group パラメータは次のように使用します。


ifconfig interface-name group group-name

注 –

グループ名には空白文字を使用しないでください。また、よく似たグループ名の使用も避けてください。ifconfig 状態表示では空白文字が表示されません。このため、空白文字が含まれているグループ名と含まれていないグループ名の区別がつかず、混乱を招くことがあります。


特定のグループに IPv4 インタフェースを追加すると、同じグループに IPv6 インタフェースが自動的に追加されます。さらに、同じコマンドを使って、同じサブネットに接続された 2 つ目のインタフェースを同じグループに追加することができます。2 つのインタフェースでマルチパスインタフェースグループを構成する方法を参照してください。

マルチパスグループからインタフェースを削除するには、group オプションで空文字列を指定します。グループからインタフェースを削除する方法を参照してください。

すでにマルチパスグループに追加されているインタフェースを新しいグループに追加できます。この場合、既存のグループからインタフェースを削除する必要はありません。新しいグループに追加されたインタフェースは、既存のグループから自動的に削除されます。インタフェースを既存のグループから別のグループに移動する方法を参照してください。

1 つのマルチパスグループに構成できるネットワークアダプタの数に制限はありません。group オプションを論理インタフェースに指定することはできません。たとえば、hme0 は使用できますが、hme0:1 は使用できません。

マルチパスグループ内のすべてのインタフェースを同じ IP リンクに接続する必要があります。インタフェースに障害が発生すると、障害経路の迂回処理が行われ、すべての IP アドレスが障害のあるインタフェースから同じグループ内の正常な別のインタフェースに移されます。IP アドレスの移動先のインタフェースは、同じ IP リンクに接続された正常なインタフェースです。ルーターは、正常なインタフェースに移動したアドレス宛てに引き続きパケットを送信できます。

検査用 IP アドレスの構成

マルチパスグループのすべての物理インタフェースを構成する際には、検査用 IP アドレスを指定する必要があります。検査用 IP アドレスは、障害や回復の検出に必要です。未構成の検査用 IP アドレスは、障害経路の迂回処理の対象から除外されます。検査用 IP アドレスは in.mpathd 専用です。通常のアプリケーションでは、このアドレスを使用しないようにしてください。このアドレスは、インタフェースに障害が発生したとき、障害経路の迂回処理の対象から除外されます。IPv4 では、検査用 IP アドレスを構成する際には、通常のアプリケーションが検査用 IP アドレスを使用しないように設定してください。2 つのインタフェースでマルチパスインタフェースグループを構成する方法を参照してください。

この節では、次のインターネットプロトコルの検査用 IP アドレスの構成について説明します。

IPv4 検査用 IP アドレス

in.mpathd マルチパスデーモンは、障害や回復を検出するための検査用 IP アドレスを必要とします。この IP アドレスは、ルーティング可能なアドレスでなければなりません。つまり、このアドレスのネットワークアドレスがリンク内のすべてのルーターから認識可能である必要があります。検査用 IP アドレスの構成には、ifconfig コマンドの -failover オプションを使用します。検査用 IP アドレスを設定する構文は次の通りです。


# ifconfig interface-name addif ip-address <その他のパラメータ> -failover up

<その他のパラメータ> には、実際の構成に応じたパラメータを指定します。詳細については、ifconfig(1M) のマニュアルページを参照してください。IPv4 検査用 IP アドレスの設定手順については、2 つのインタフェースでマルチパスインタフェースグループを構成する方法を参照してください。

たとえば、次のように構成するとします。

この場合、次のコマンドを入力します。


# ifconfig hme0 addif 19.16.85.21 netmask + broadcast + -failover up

注 –

この検査用 IP アドレスをアプリケーションから使用されないようにするため IPv4 検査用 IP アドレスを deprecated と指定する必要があります。2 つのインタフェースでマルチパスインタフェースグループを構成する方法を参照してください。


アドレスの障害経路の迂回属性を有効にするには、failover (ダッシュ (-) をつけない) を指定します。


注 –

マルチパスグループのすべての検査用 IP アドレスには、同じネットワークアドレスを使用してください。検査用 IP アドレスは単一の IP サブネットに属している必要があります。


IPv6 検査用 IP アドレス

リンクローカルアドレスが物理インタフェースに結び付けられているので、IPv6 検査用 IP アドレスを構成するには、リンクローカルアドレス自体を使用します。したがって、IPv6 では、別個の IP アドレスは必要ありません。IPv6 の場合、-failover オプションの構文は次の通りです。


# ifconfig interface-name inet6 -failover

IPv6 検査用 IP アドレスの設定手順については、2 つのインタフェースでマルチパスインタフェースグループを構成する方法を参照してください。

マルチパスグループですべてのグループのインタフェースに IPv4 と IPv6 の両方が結合される場合には、別個の IPv4 検査用 IP アドレスは必要ありません。in.mpathd デーモンは、IPv6 リンクローカルアドレスを使ってインタフェースを調べることができます。IPv6 リンクローカルアドレスは、IPv6 を結合すると自動的に作成されます。

アドレスの障害経路の迂回属性を有効にするには、failover (ダッシュ (-) をつけない) を指定します。


注 –

有効な IPv6 検査用 IP アドレスは、リンクローカルアドレスだけです。


アプリケーションによる検査用 IP アドレス使用の防止

検査用 IP アドレスを構成したあと、このアドレスが通常のアプリケーションで使用されないようにする必要があります。検査用 IP アドレスに対して障害経路の迂回処理が行われないため、アプリケーションから検査用 IP アドレスを使用できるようにすると、検査用 IP アドレスを使用したアプリケーションは障害迂回の処理時に異常終了します。検査用 IP アドレスが通常のアプリケーションに使用されるのを防ぐには、ifconfig コマンドを使って検査用 IP アドレスを deprecated と指定します。このオプションは次の構文により指定します。


ifconfig interface-name deprecated

deprecated (推奨されない) と指定したアドレスは、アプリケーションで明示的に指定されていない限り、通信のソースアドレスとしては選択されません。このようなアドレスを明示的に指定するのは in.mpathd だけです。2 つのインタフェースでマルチパスインタフェースグループを構成する方法を参照してください。

リンクローカルアドレスはネームサービス (DNS、NIS、NIS+) に登録されないため、アプリケーションがこれを通信に使用することはありません。したがって、IPv6 検査用 IP アドレスを deprecated と指定する必要はありません。


注 –

IPv6 リンクローカルアドレスは deprecated と指定しないでください。


アドレスの deprecated 属性を無効にするには、-deprecated オプションを使用します。


注 –

IPv4 検査用 IP アドレスは、ネームサービスデータベース (DNS、NIS、NIS+) に追加しないでください。IPv6 では、リンクローカルアドレスが検査用 IP アドレスとして使用されます。通常はネームサービステーブルには追加されません。


自動的に構成された IPv6 アドレスは、システムをリブートすると保持されません。リブートするときに IP アドレスを保持する必要がある場合には、アプリケーションで静的 IP アドレスを使用します。

hostname ファイルによるグループと検査用 IP アドレスの構成

マルチパスグループと検査用 IP アドレスの構成には、/etc/hostname.interface ファイルを使用できます。/etc/hostname.interface ファイルを使ってマルチパスグループを構成するには、次の構文に従ってファイルに 1 行追加します。


interface-address <パラメータ>  group group-name up \
addif logical-interface-address <パラメータ> up

たとえば、次の構成で test グループを作成するとします。

この場合、/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 行追加します。


<パラメータ> group group-name up

たとえば、IPv6 検査用 IP アドレスを使って hme0 に対し test グループを作成するには、/etc/hostname6.hme0 ファイルに次の行を追加します。


-failover group test up
addif 1080::56:a00:20ff:feb9:19fa up

IPv6 hostname6 ファイルの構成手順については、2 つのインタフェースでマルチパスインタフェースグループを構成する方法を参照してください。

待機インタフェースの構成

マルチパスグループには、待機インタフェースを構成できます。名前が示すとおり、そのインタフェースは待機インタフェースと見なされます。待機インタフェースは、グループ内のその他のインタフェースに障害が発生したときだけ使用されます。待機インタフェースが障害迂回 IP アドレスとして機能していない場合には、IFF_INACTIVE フラグが設定されます。その結果、アクティブなインタフェースに障害が発生すると、障害経路の迂回に待機インタフェースが必ず選択されます。待機インタフェースが選択されたあと、IFF_INACTIVE フラグがそのインタフェースで消去されます。その後、アクティブとなった待機インタフェースは他のアクティブなインタフェースと同様に処理されます。一部の障害では、待機インタフェースが選択されないことがあります。この場合、待機インタフェースではなく、いくつかの IP アドレスにアクティブなインタフェースが選択されます。

待機インタフェースは、通常のデータパケットの送信には使用されません。したがって、待機インタフェースでのデータの流量は限られています。待機インタフェースが正常であるかどうかを判定するための検査信号の送信に使用するため、待機インタフェースには検査用 IP アドレスが必要です。待機インタフェースに検査用 IP アドレスが指定されていないと、グループの別のインタフェースに障害が発生しても、この待機インタフェースは障害経路の迂回先にはなりません。次の場合には、待機インタフェースにデータが流れることがあります。

このように、待機インタフェースは、アプリケーションによって明示的に選択されていない限り、検査目的以外には使用されません。グループのインタフェースに障害が発生すると、すべてのネットワークアクセスは待機インタフェースに切り替わります。待機インタフェースを構成するには、次のように ifconfig コマンドの standby オプションを使用します。


# ifconfig interface-name standby group group-name

この手順については、インタフェースの 1 つが待機インタフェースであるマルチパスグループを構成する方法を参照してください。

待機インタフェースに検査用 IP アドレスが設定されていると、in.mpathd デーモンは、待機インタフェースを通して検査信号を送信します。待機インタフェースには、検査用 IP アドレスだけを設定してください。待機インタフェースに他のアドレスを追加しても、追加は失敗します。待機インタフェースに検査用 IP アドレス以外のアドレスが割り当てられている場合、自動的に障害経路の迂回処理が行われ、割り当て済みのアドレスは同じグループ内の別のインタフェースに移されます。 検査用 IP アドレスが存在する場合、その検査用 IP アドレスはそのままです。待機インタフェース上に検査用 IP アドレス以外のアドレスを構成することは避けてください。

待機インタフェース上に検査用 IP アドレスを指定するには、ifconfig コマンドの standbyup オプションの前に deprecated-failover オプションを指定します。

待機インタフェースに検査用 IP アドレスを設定するには、次の構文を使用します。


# ifconfig interface-name plumb ip-address
   <その他のパラメータ> deprecated -failover standby up

<その他のパラメータ> には、実際の構成に応じたパラメータを指定します。詳細については、ifconfig(1M) のマニュアルページを参照してください。


注 –

待機インタフェースに検査用 IP アドレスが設定されていないと、待機インタフェースは障害経路の迂回には使用されません。


たとえば、次の構成で待機インタフェースに検査用 IP アドレスを作成するとします。

この場合、コマンド行に次のように入力します。


# ifconfig hme2 plumb 19.16.85.22 netmask + broadcast + deprecated -failover standby up

注 –

インタフェースは、アドレスに対して障害経路の迂回が行われないように設定されたあとにだけ、待機インタフェースとして設定されます。


この手順については、インタフェースの 1 つが待機インタフェースであるマルチパスグループを構成する方法を参照してください。

待機状態を解除するには、次の構文を使用します。


# ifconfig interface-name -standby