(57)【要約】【課題】１組の通信装置の双方がリンクアグリゲーション機能を実装していなくても、複数の物理リンクを利用して通信容量を拡張できる通信制御方法を提供する。【解決手段】複数の仮想ＩＰアドレス／仮想ＭＡＣアドレスが割り当てられている、複数のルータポートを有するルータは、Ｌ２スイッチから、宛先情報として第１の仮想ＩＰアドレス／第１の仮想ＭＡＣアドレスが設定されたパケットを受信する。ルータは、仮想ＩＰアドレスと、仮想ＭＡＣアドレスと、ルータポートとの対応関係を管理するテーブルを、第１の仮想ＩＰアドレス／第１の仮想ＭＡＣアドレスで参照して対応するルータポートを特定する。ルータは、特定したルータポートに対応する、Ｌ２スイッチが有する複数のスイッチポートの中の１つへ、第１の仮想ＭＡＣアドレスを通知することにより、Ｌ２スイッチに、第１の仮想ＭＡＣアドレスに対応するスイッチポートを認識させる。【選択図】図１１
2013013032.tif 000002
【特許請求の範囲】
【請求項１】
複数の仮想ＩＰアドレスおよび前記複数の仮想ＩＰアドレスに対応する複数の仮想ＭＡＣアドレスが割り当てられている、複数のルータポートを有するルータは、Ｌ２スイッチから、宛先情報として第１の仮想ＩＰアドレスおよび前記第１の仮想ＩＰアドレスに対応する第１の仮想ＭＡＣアドレスが設定されたパケットを、前記複数のルータポートの中の１つを介して受信し、
前記ルータは、前記ルータの記憶部に記憶されている、前記複数の仮想ＩＰアドレスと、前記複数の仮想ＭＡＣアドレスと、前記複数のルータポートとの対応関係を管理するテーブルを、前記第１の仮想ＩＰアドレスまたは前記第１の仮想ＭＡＣアドレスの少なくとも一方で参照して、対応するルータポートを特定し、
前記ルータは、前記特定したルータポートに対応する、前記Ｌ２スイッチが有する複数のスイッチポートの中の１つへ、前記第１の仮想ＭＡＣアドレスを通知するパケットを送信することにより、前記Ｌ２スイッチに、前記第１の仮想ＭＡＣアドレスに対応するスイッチポートを認識させる
ことを特徴とする通信制御方法。
【請求項２】
前記テーブルにおいて、前記複数の仮想ＩＰアドレスおよび前記複数の仮想ＭＡＣアドレスは一意に対応づけられており、仮想ＩＰアドレスと仮想ＭＡＣアドレスとのペアに対してそれぞれ１つのルータポートが対応づけられている
ことを特徴とする請求項１に記載の通信制御方法。
【請求項３】
前記ルータは、前記Ｌ２スイッチと前記ルータとの間の複数の物理リンクの状態を監視し、
前記ルータは、前記テーブルにおいて、状態が変化した物理リンクに接続しているルータポートを識別する第１の識別番号を、他のルータポートを識別する第２の識別番号に変更し、
前記ルータは、前記テーブルにおいて対応するルータポートの識別番号が変更された仮想ＭＡＣアドレスを、前記第２の識別番号で識別されるルータポートを介して前記Ｌ２スイッチに通知して、前記Ｌ２スイッチに、通知した仮想ＭＡＣアドレスとスイッチポートとの対応関係を再学習させる
ことを特徴とする請求項１または２に記載の通信制御方法。
【請求項４】
前記ルータは、前記Ｌ２スイッチからの受信パケットに設定されている宛先ＩＰアドレスまたは宛先ＭＡＣアドレスの少なくとも一方で前記テーブルを参照して、対応するルータポートをサーチし、
前記ルータは、前記受信パケットが到着したルータポートと前記サーチにより特定されたルータポートとが一致すれば、前記受信パケットを取り込み、
前記ルータは、前記受信パケットが到着したルータポートと前記サーチにより特定されたルータポートとが一致しなければ、前記受信パケットを破棄する
ことを特徴とする請求項１〜３のいずれか１つに記載の通信制御方法。
【請求項５】
複数の仮想ＩＰアドレスおよび前記複数の仮想ＩＰアドレスに対応する複数の仮想ＭＡＣアドレスが割り当てられている、複数のルータポートを有するルータと、複数の物理リンクを介して前記複数のルータポートに接続する複数のスイッチポートを有するＬ２スイッチとの間の通信を制御する方法であって、
前記ルータは、前記複数のルータポートのいずれかを介して、宛先情報として第１の仮想ＩＰアドレスおよび第１の仮想ＭＡＣアドレスが設定された第１のパケットを受信し、
前記ルータは、前記第１のパケットに設定されている前記宛先情報に対応する目的装置へ前記第１のパケットを転送し、
前記ルータは、宛先情報として前記第１の仮想ＭＡＣアドレスが設定された、前記第１のパケットに応答する第２のパケットを前記目的装置から受信すると、前記第２のパケットの宛先情報を書き換えると共に、前記第２のパケットの送信元情報の中に前記第１の仮想ＭＡＣアドレスを設定し、
前記ルータは、前記ルータの記憶部に記憶されている、前記複数の仮想ＩＰアドレスと、前記複数の仮想ＭＡＣアドレスと、前記複数のルータポートとの対応関係を管理するテーブルを、前記第２のパケットの送信元情報を利用して参照して、対応するルータポートを特定し、
前記ルータは、前記特定したルータポートを介して前記第２のパケットを前記Ｌ２スイッチへ送信することにより、前記Ｌ２スイッチに、前記複数のスイッチポートの中から前記第１の仮想ＭＡＣアドレスに対応するスイッチポートを認識させる
ことを特徴とする通信制御方法。
【請求項６】
複数の仮想ＩＰアドレスおよび前記複数の仮想ＩＰアドレスに対応する複数の仮想ＭＡＣアドレスが割り当てられている、複数のルータポートを有するルータと、複数の物理リンクを介して前記複数のルータポートに接続する複数のスイッチポートを有するＬ２スイッチとの間の通信を制御する方法であって、
前記ルータは、前記複数の仮想ＩＰアドレスの中の第１の仮想ＩＰアドレスから送信するパケットに、前記第１の仮想ＩＰアドレスに対応する第１の仮想ＭＡＣアドレスを送信元ＭＡＣアドレスとして設定し、
前記ルータは、前記ルータの記憶部に記憶されている、前記複数の仮想ＩＰアドレスと、前記複数の仮想ＭＡＣアドレスと、前記複数のルータポートとの対応関係を管理するテーブルを、前記第１の仮想ＩＰアドレスまたは前記第１の仮想ＭＡＣアドレスの少なくとも一方で参照して、対応するルータポートを特定し、
前記ルータは、前記特定したルータポートを介して前記パケットを前記Ｌ２スイッチへ送信することにより、前記Ｌ２スイッチに、前記複数のスイッチポートの中から前記第１の仮想ＭＡＣアドレスに対応するスイッチポートを認識させる
ことを特徴とする通信制御方法。
【請求項７】
複数の仮想ＩＰアドレスおよび前記複数の仮想ＩＰアドレスに対応する複数の仮想ＭＡＣアドレスが割り当てられている、複数のルータポートを有するルータに実装されているプロセッサに、
Ｌ２スイッチから、宛先情報として第１の仮想ＩＰアドレスおよび前記第１の仮想ＩＰアドレスに対応する第１の仮想ＭＡＣアドレスが設定されたパケットを、前記複数のルータポートの中の１つを介して受信する処理、
前記ルータの記憶部に記憶されている、前記複数の仮想ＩＰアドレスと、前記複数の仮想ＭＡＣアドレスと、前記複数のルータポートとの対応関係を管理するテーブルを、前記第１の仮想ＩＰアドレスまたは前記第１の仮想ＭＡＣアドレスの少なくとも一方で参照して、対応するルータポートを特定する処理、
前記特定したルータポートに対応する、前記Ｌ２スイッチが有する複数のスイッチポートの中の１つへ、前記第１の仮想ＭＡＣアドレスを通知するパケットを送信することにより、前記Ｌ２スイッチに、前記第１の仮想ＭＡＣアドレスに対応するスイッチポートを認識させる処理
を実行させることを特徴とする通信制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の物理リンクを利用する通信を制御する方法およびそのためのプログラムに係わる。
【背景技術】
【０００２】
通信容量の増加に対応するために、通信装置間に複数の物理リンクを設置し、それら複数の物理リンクを利用してデータ通信を行う構成が知られている。そのような技術の１つとして、複数の物理リンクを束ねて使用するリンクアグリゲーションが提案されている。リンクアグリゲーションに係わる規格は、例えば、IEEE 802.3ad Link Aggregationが存在する。
【０００３】
リンクアグリゲーションでは、通信を行う装置間（例えば、ルータとＬ２スイッチとの間）で使用するインタフェース、分散アルゴリズムなどが定義される。この場合、ルータとＬ２スイッチとの間のトラフィックは、所定のアルゴリズムに従って分散される。
【０００４】
リンクアグリゲーションの論理ポートを構成する複数の物理ポートにトラフィックを分散させるために、ハッシュ関数を用いて受信パケットの宛先アドレス及び送信元アドレスからハッシュ値を計算し、宛先の物理ポートを決定する装置が提案されている。この装置は、複数の物理ポートのそれぞれからのパケットの出力流量を計測する計測手段と、計測された出力流量について複数の物理ポート間の流量比を算出する算出手段と、算出された流量比を複数の物理ポート間の帯域分配比率にフィードバックして宛先の物理ポートを決定するためのハッシュ値の個数割当ての変更を行う制御手段と備える。（例えば、特許文献１）
また、特許文献２には、関連する技術が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−５４３７号公報
【特許文献２】特開２０１０−１１４６５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、リンクアグリゲーションを採用する従来の通信システムにおいては、例えば、パケット毎にハッシュ計算が行われ、そのハッシュ値に応じてそのパケットを伝送する物理リンクが決定される。このため、ネットワーク設計者またはネットワーク管理者は、トラフィックがどの物理リンクを経由しているのかを正確に把握することは困難である。例えば、同じＩＰアドレス宛の通信であっても、送信元が異なるときには、その通信のトラフィックが異なる物理リンクに分散されてしまうことがある。あるいは、１組の装置（ここでは、装置Ａおよび装置Ｂと呼ぶ。）間の通信であっても、装置Ａから装置Ｂへのトラフィックと、装置Ｂから装置Ａへのトラフィックが、異なる物理リンクに割り当てられることがある。
【０００７】
また、リンクアグリゲーションを採用する従来の通信システムにおいては、通信を行う１組の装置の双方が、複数の物理リンクを同一の論理リンクとして認識する必要がある。すなわち、通信を行う１組の装置の双方は、リンクアグリゲーション機能をサポートしている必要がある。この場合、通信装置および／または通信ソフトウェアを実装するためのコストが高額になるおそれがある。
【０００８】
本発明の課題は、通信を行う１組の装置の双方が複数の物理リンクを束ねて通信を行うための機能を実装していなくても、複数の物理リンクを利用して通信容量を拡張できる通信制御方法を提供することである。
【課題を解決するための手段】
【０００９】
本発明の１つの態様の通信制御方法においては、複数の仮想ＩＰアドレスおよび前記複数の仮想ＩＰアドレスに対応する複数の仮想ＭＡＣアドレスが割り当てられている、複数のルータポートを有するルータは、Ｌ２スイッチから、宛先情報として第１の仮想ＩＰアドレスおよび前記第１の仮想ＩＰアドレスに対応する第１の仮想ＭＡＣアドレスが設定されたパケットを、前記複数のルータポートの中の１つを介して受信する。前記ルータは、前記ルータの記憶部に記憶されている、前記複数の仮想ＩＰアドレスと、前記複数の仮想ＭＡＣアドレスと、前記複数のルータポートとの対応関係を管理するテーブルを、前記第１の仮想ＩＰアドレスまたは前記第１の仮想ＭＡＣアドレスの少なくとも一方で参照して、対応するルータポートを特定する。前記ルータは、前記特定したルータポートに対応する、前記Ｌ２スイッチが有する複数のスイッチポートの中の１つへ、前記第１の仮想ＭＡＣアドレスを通知するパケットを送信することにより、前記Ｌ２スイッチに、前記第１の仮想ＭＡＣアドレスに対応するスイッチポートを認識させる。
【発明の効果】
【００１０】
上述の態様によれば、通信を行う１組の装置の双方が複数の物理リンクを束ねて通信を行うための機能を実装していなくても、複数の物理リンクを利用して通信容量を拡張できる。
【図面の簡単な説明】
【００１１】
【図１】実施形態の通信制御方法が使用される通信システムの一例を示す図である。
【図２】ルータの構成を示す図である。
【図３】ルータの機能を説明する機能ブロック図である。
【図４】管理テーブルの一例を示す図である。
【図５】通信システムにおいて伝送されるパケットの形式を示す図である。
【図６】学習テーブルを作成する手順を説明する図（その１）である。
【図７】学習テーブルを作成する手順を説明する図（その２）である。
【図８】学習テーブルを作成する手順を説明する図（その３）である。
【図９】学習テーブルを作成する手順を説明する図（その４）である。
【図１０】学習テーブルを作成する手順を説明する図（その５）である。
【図１１】学習テーブルを作成する手順を説明する図（その６）である。
【図１２】学習テーブルを作成する手順を説明する図（その７）である。
【図１３】学習テーブルを作成する手順を説明する図（その８）である。
【図１４】学習テーブルを作成する手順を説明する図（その９）である。
【図１５】Ｌ２スイッチからパケットを受信したときのルータの処理を示すフローチャートである。
【図１６】パケット送信時のルータの処理を示すフローチャートである。
【図１７】物理リンクに障害が発生したときの処理を示す図（その１）である。
【図１８】物理リンクに障害が発生したときの処理を示す図（その２）である。
【図１９】Ｇ−ＡＲＰパケットの形式を示す図である。
【図２０】リンクダウン時のルータの処理を示すフローチャートである。
【図２１】リンクアップ時のルータの処理を示すフローチャートである。
【発明を実施するための形態】
【００１２】
図１は、実施形態の通信制御方法が使用される通信システムの一例を示す。図１に示す通信システム１は、パケットを伝送するパケット網であり、Ｌ２スイッチ１０およびルータ２０を含む。
【００１３】
Ｌ２スイッチ１０は、レイヤ２の宛先情報に基づいてパケットのルートを制御する通信機器である。レイヤ２の宛先情報は、通信システム１では、ＭＡＣアドレスである。すなわち、Ｌ２スイッチ１０は、受信パケットのヘッダに設定されている宛先ＭＡＣアドレスに応じて、そのパケットを宛先に向かうリンクへ出力する。
【００１４】
ルータ２０は、レイヤ３の宛先情報に基づいてパケットのルートを制御する通信機器である。レイヤ３の宛先情報は、通信システム１では、ＩＰアドレスである。すなわち、ルータ２０は、受信パケットのヘッダに設定されている宛先ＩＰアドレスに応じて、そのパケットを宛先に向かうリンクへ出力する。
【００１５】
Ｌ２スイッチ１０とルータ２０との間には、複数の物理リンク＃０〜＃ｎが設けられている。各物理リンクは、例えば、光ファイバ回線またはメタル回線である。そして、Ｌ２スイッチ１０およびルータ２０は、物理リンク＃０〜＃ｎを利用してパケットを送受信することができる。このとき、Ｌ２スイッチ１０およびルータ２０は、複数の物理リンク＃０〜＃ｎを、１本の論理リンクとして使用することができる。すなわち、Ｌ２スイッチ１０およびルータ２０は、複数の物理リンクを束ねて１本の論理リンクとして使用するリンクアグリゲーションを行う。ただし、後で詳しく説明するが、Ｌ２スイッチ１０は、リンクアグリゲーションを実現するための専用の構成またはプログラムを備えていない。
【００１６】
ルータ２０には、複数の仮想ＩＰアドレスおよび複数の仮想ＭＡＣアドレスが割り当てられている。図１においては、ルータ２０に対して仮想ＩＰアドレス＃１、＃２が割り当てられている。また、この実施例では、ルータ２０に割り当てられている複数の仮想ＩＰアドレスおよび複数の仮想ＭＡＣアドレスは、互いに一意に対応づけられている。
【００１７】
ルータ２０は、サーバシステムを収容している。図１に示す例では、ルータ２０は、サーバシステム３およびサーバシステム４を収容している。サーバシステム３は、複数のサーバコンピュータ３ａ〜３ｃを含み、サーバシステム４は、複数のサーバコンピュータ４ａ〜４ｃを含む。また、サーバシステム３、４は、それぞれ、仮想ＩＰアドレス＃１、＃２に対応づけられている。
【００１８】
上述した通信システム１において、例えば、クライアント２がサーバシステム３にアクセスする際には、クライアント２は、仮想ＩＰアドレス＃１および仮想ＩＰアドレス＃１に対応する仮想ＭＡＣアドレスを宛先情報として設定したパケットを送信する。そうすると、通信システム１上のノード装置（すなわち、Ｌ２スイッチ、ルータ等）は、受信パケットの宛先情報に従ってそのパケットを転送する。これにより、このパケットは、Ｌ２スイッチ１０に転送される。
【００１９】
Ｌ２スイッチ１０は、上記パケットを受信すると、そのパケットをルータ２０へ転送する。なお、Ｌ２スイッチ１０が物理リンク＃０〜＃ｎの中のどのリンクを介して上記パケットをルータ２０へ転送するのかについては、後で詳しく説明する。
【００２０】
ルータ２０は、宛先情報として仮想ＩＰアドレス＃１が設定されたパケットを受信すると、サーバシステム３に属するサーバコンピュータ３ａ〜３ｃの中の１つを選択する。この選択処理は、例えば、サーバ負荷分散機能（ＳＬＢ：Server Load Balancer）により実現される。以下の説明では、サーバ負荷分散機能によりサーバコンピュータ３ａが選択されるものとする。また、ルータ２０は、選択したサーバコンピュータ３ａへパケットを転送するために、上記パケットの宛先情報を書き換える。この書換え処理は、例えば、アドレス変換機能（ＮＡＴ：Network Address Translation）により実現される。これにより、クライアント２から送信されたパケットは、サーバシステム３に属するサーバコンピュータ３ａに転送される。
【００２１】
サーバコンピュータ３ａは、クライアント２へ応答パケットを返送する。この応答パケットは、いったん仮想ＩＰアドレス＃１へ送られる。そうすると、ルータ２０は、宛先情報を書き換えた後、その応答パケットをＬ２スイッチ１０へ送信する。なお、ルータ２０が物理リンク＃０〜＃ｎの中のどのリンクを介して応答パケットをＬ２スイッチ１０へ送信するのかについては、後で詳しく説明する。
Ｌ２スイッチ１０は、応答パケットをクライアント２へ向かって転送する。この結果、クライアント２は、サーバシステム３からの応答を受信する。
【００２２】
図２は、ルータ２０の構成を示す。ルータ２０は、ポートＰ０〜Ｐｍ、バッファメモリ２１、プロセッサ２２、メモリ２３を有する。
ポートＰ０〜Ｐ３（ルータポート）には、それぞれ物理リンク＃０〜＃３が接続されている。物理リンク＃０〜＃３は、Ｌ２スイッチ１０とルータ２０との間に設けられている。すなわち、ポートＰ０〜Ｐ３は、それぞれ、Ｌ２スイッチ１０から物理リンク＃０〜＃３を介して伝送されてくるパケットを受信する。また、ポートＰ０〜Ｐ３は、それぞれ、Ｌ２スイッチ１０へ伝送すべきパケットを物理リンク＃０〜＃３へ出力する。
【００２３】
なお、図２に示す例では、物理リンク＃０〜＃３は、それぞれ、Ｌ２スイッチ１０のポートＰ０〜Ｐ３（スイッチポート）に接続されている。したがって、例えば、ルータ２０がポートＰ０を介してパケットを送信すると、そのパケットは、Ｌ２スイッチ１０のポートＰ０に到着する。同様に、ルータ２０がポートＰ１、Ｐ２、Ｐ３を介してパケットを送信すると、各パケットは、それぞれ、Ｌ２スイッチ１０のポートＰ１、Ｐ２、Ｐ３に到着する。
【００２４】
ポートＰ４〜Ｐｍは、Ｌ２スイッチ１０以外の相手装置とパケットを送受信するために使用される。ポートＰ４〜Ｐｍの一部は、例えば、図１に示すサーバシステム３、４とパケットを送受信するために使用される。また、ポートＰ４〜Ｐｍの他の一部は、例えば、他のルータとパケットを送受信するために使用される。
【００２５】
バッファメモリ２１は、ポートＰ０〜Ｐｍを介して受信するパケットを一時的に格納する。バッファメモリ２１に格納されているパケットは、プロセッサ２２により読み出されて、プロセッサ２２により指定されるポートを介して送信される。なお、バッファメモリ２１は、半導体メモリにより実現される。
【００２６】
プロセッサ２２は、メモリ２３に格納されている通信制御プログラムを実行することにより、ルータ２０の動作を制御する。メモリ２３は、上述の通信制御プログラムを格納する。また、メモリ２３は、ルータ２０の動作に必要な情報を格納する。さらに、メモリ２３は、プロセッサ２２の作業領域を提供する。なお、メモリ２３は、例えば、半導体メモリにより実現される。また、バッファメモリ２１は、メモリ２３の一部として実現してもよい。
【００２７】
実施形態の通信制御プログラムは、例えば、下記の形態でルータ２０に提供される。
（１）メモリ２３に予めインストールされている。
（２）着脱可能記録媒体により提供される。この場合、ルータ２０は、着脱可能記録媒体から情報を読み取るデバイスを備える。
（３）プログラムサーバから提供される。この場合、ルータ２０は、不図示のインタフェースを介して、プログラムサーバから通信制御プログラムを受け取る。
【００２８】
図３は、ルータ２０の機能を説明する機能ブロック図である。ルータ２０は、リンク制御部３１、管理テーブル３２、転送制御部３３、リンク状態監視部３４を備える。
リンク制御部３１は、Ｌ２スイッチ１０とルータ２０との間でリンクアグリゲーションを実現するための処理を実行する。このとき、リンク制御部３１は、管理テーブル３２を参照して、Ｌ２スイッチ１０へパケットを送信する際に使用するポート（すなわち、使用する物理リンク）を選択する。
【００２９】
管理テーブル３２は、ルータ２０に割り当てられている複数の仮想ＩＰアドレスと、ルータ２０に割り当てられている複数の仮想ＭＡＣアドレスと、Ｌ２スイッチ１０とパケットを送受信するための複数のポートＰ０〜Ｐ３の識別番号との対応関係を管理する。なお、管理テーブル３２は、図２に示すメモリ２３に形成される。
【００３０】
図４は、管理テーブル３２の一例を示す。図４に示す例では、ルータ２０に対して７個の仮想ＩＰアドレスおよび７個の仮想ＭＡＣアドレスが割り当てられている。よって、管理テーブル３２には、それら７個の仮想ＩＰアドレスおよび７個の仮想ＭＡＣアドレスが登録されている。ここで、７個の仮想ＩＰアドレスおよび７個の仮想ＭＡＣアドレスは、互いに一意に対応づけられている。例えば、仮想ＩＰアドレス「192.168.1.10」は、仮想ＭＡＣアドレス「00:11:22:33:44:11」に対応づけられている。以下、互いに対応づけられた仮想ＩＰアドレスと仮想ＭＡＣアドレスの組合せを、ＶＩＰ／ＶＭＡＣペアと呼ぶことがある。
【００３１】
管理テーブル３２には、各ＶＩＰ／ＶＭＡＣペアに対して、定義ポートが登録される。定義ポートは、ＶＩＰ／ＶＭＡＣペアに対して予め定義されている物理インタフェースを表す。例えば、ＶＩＰ／ＶＭＡＣペア１「192.168.1.10／00:11:22:33:44:11」に対しては、ポートＰ０が定義されている。なお、定義ポートは、例えば、各物理リンク＃０〜＃３のトラフィックが略均等になるように決定されることが好ましい。また、定義ポートは、例えば、ネットワーク管理者により決定される。
【００３２】
管理テーブル３２は、さらに、各ＶＩＰ／ＶＭＡＣペアに対して、割り当てポートを管理するフィールドを有する。割り当てポートは、ＶＩＰ／ＶＭＡＣペアに対して実際に割り当てられた物理インタフェースを表す。
【００３３】
ここで、定義ポートに対応する物理リンクが正常であれば、割り当てポートは、定義ポートと一致する。たとえば、ポートＰ０に接続する物理リンク＃０が正常であるものとする。この場合、「定義ポート＝Ｐ０」が設定されているＶＩＰ／ＶＭＡＣペア（例えば、ＶＩＰ／ＶＭＡＣペア１、５）の割り当てポートは、定義ポートと同様に、「Ｐ０」である。これに対して、定義ポートに対応する物理リンクにおいて異常が検出されたときは、リンク制御部３１は、割り当てポートとして、定義ポートとは異なるポートを選択する。例えば、ポートＰ２に接続する物理リンク＃０において異常が検出されたものとする。この場合、「定義ポート＝Ｐ２」が割り当てられているＶＩＰ／ＶＭＡＣペア（例えば、ＶＩＰ／ＶＭＡＣペア４、７）の割り当てポートとして、定義ポートとは異なるポートが選択されている。
【００３４】
転送制御部３３は、サーバ負荷分散処理、アドレス変換処理、ルーティング処理を実行する。サーバ負荷分散処理は、サーバコンピュータ３ａ〜３ｃ、４ａ〜４ｃの負荷が分散されるように、クライアント２からの要求をサーバコンピュータ３ａ〜３ｃ、４ａ〜４ｃに振り分ける。アドレス変換処理は、ＩＰアドレスおよびＭＡＣアドレスの変換を行う。ルータ２０においては、例えば、仮想ＩＰアドレス／仮想ＭＡＣアドレスと、サーバコンピュータ３ａ〜３ｃ、４ａ〜４ｃのＩＰアドレス／ＭＡＣアドレスとの間の変換が行われる。ルーティング処理は、入力パケットのヘッダに設定されているＩＰアドレスに基づいて、そのパケットを対応する出力ポートに導く。なお、サーバ負荷分散処理、アドレス変換処理、ルーティング処理は、公知の手順を利用してもよい。
【００３５】
リンク状態監視部３４は、Ｌ２スイッチ１０とルータ２０との間の各物理リンク＃０〜＃３の状態を監視する。このとき、リンク状態監視部３４は、例えばポーリングにより、各ポートＰ０〜Ｐ３において受信信号が検出されるか否かを監視する。そして、リンク状態監視部３４は、あるポートにおいて受信信号を検出できなければ、そのポートに接続する物理リンクに異常（リンクダウン）が生じていると判定する。
【００３６】
なお、リンク制御部３１、転送制御部３３、リンク状態監視部３４は、この例では、プロセッサ２２を用いて通信制御プログラムを実行することにより実現される。ただし、リンク制御部３１、転送制御部３３、リンク状態監視部３４は、ソフトウェアとハードウェアとの組合せで実現してもよい。
【００３７】
図５は、通信システム１において伝送されるパケットの形式を示す。このパケットは、ＭＡＣヘッダ、ＩＰヘッダ、データ（ペイロード）を有する。ＭＡＣヘッダは、この実施例では、送信元ＭＡＣアドレス（ＳＡ）および宛先ＭＡＣアドレス（ＤＡ）を含む。ＩＰヘッダは、ＲＦＣ７９１で規定されており、送信元ＩＰアドレス（Source Address）および宛先ＩＰアドレス（Destination Address）を含む。なお、ＩＰパケットの形式は公知なので、詳しい説明は省略する。
【００３８】
次に、図６〜図１４を参照しながら、Ｌ２スイッチ１０およびルータ２０がパケットを中継する動作と連携して、ルータ２０がＬ２スイッチ１０に学習テーブルを作成させる手順を説明する。
【００３９】
図６は、Ｌ２スイッチ１０とルータ２０との間でパケットの送受信が開始される前の状態を示す。この実施例では、Ｌ２スイッチ１０とルータ２０との間には、４本の物理リンク＃０〜＃３が設けられている。物理リンク＃０〜＃３は、それぞれＬ２スイッチ１０のポートＰ０〜Ｐ３に接続され、また、それぞれルータ２０のポートＰ０〜Ｐ３に接続されている。クライアント２からサーバ３（３ａ）へ送信されるパケットは、Ｌ２スイッチ１０のポートＰ１０に到着するものとする。また、ルータ２０は、ポートＰ１０を介してサーバ３ａとパケットを送受信するものとする。
【００４０】
Ｌ２スイッチ１０は、入力パケットをＭＡＣアドレスでルーティングするための学習テーブル１１を有する。学習テーブル１１は、パケットを送受信するためのポートとＭＡＣアドレスとの対応関係を管理する。
【００４１】
ルータ２０は、管理テーブル３２を有する。この実施例では、ルータ２０には、６個の仮想ＩＰアドレスおよび６個の仮想ＭＡＣアドレスが割り当てられている。よって、管理テーブル３２には、ＶＩＰ／ＶＭＡＣペア１〜６が登録されている。また、各ＶＩＰ／ＶＭＡＣペアに対してそれぞれ「定義ポート」が登録されている。ただし、この時点では、「割り当てポート」は未だ登録されていないものとする。
【００４２】
図７は、クライアント側から仮想ＩＰアドレス宛のパケットが送信されたときの動作を示す。ここでは、図１および図６に示すクライアント２が、サーバシステム３に対して処理を要求するものとする。
【００４３】
この場合、クライアント側から送信されたパケットには、図７に示すアドレス情報が設定される。送信元ＭＡＣアドレスとしては、クライアント２に隣接するルータのＭＡＣアドレスが設定される。宛先ＭＡＣアドレスとしては、ルータ２０に割り当てられている仮想ＭＡＣアドレスの１つが設定される。ここでは、宛先ＭＡＣアドレスとして、サーバシステム３に対応する仮想ＭＡＣアドレス「00:22:22:22:22:22」が設定されている。送信元ＩＰアドレスとしては、クライアント２のＩＰアドレスが設定される。そして、宛先ＩＰアドレスとしては、ルータ２０に割り当てられている仮想ＩＰアドレスの１つが設定される。ここでは、宛先ＩＰアドレスとして、サーバシステム３に対応する仮想ＩＰアドレス「192.168.2.1」が設定されている。なお、図７〜図１４においては、他のヘッダ情報については記載を省略する。
【００４４】
クライアント２から送信された上記パケットは、宛先アドレスに応じてルーティングされる。この結果、上記パケットは、Ｌ２スイッチ１０に到着するものとする。この実施例では、上記パケットは、Ｌ２スイッチ１０のポートＰ１０に到着するものとする。
【００４５】
図８は、Ｌ２スイッチ１０がクライアント側から受信したパケットを転送するときの動作を示す。Ｌ２スイッチ１０は、クライアント側からパケットを受信すると、そのパケットの宛先ＭＡＣアドレスに応じてルーティングを行う。このとき、Ｌ２スイッチ１０は、受信パケットの宛先ＭＡＣアドレス「00:22:22:22:22:22」で学習テーブル１１を参照する。ところが、この時点では、この宛先ＭＡＣアドレスは学習テーブル１１に登録されていない。この場合、Ｌ２スイッチ１０は、パケットを受信したポート（すなわち、ポートＰ１０）以外のすべてのポートを介して、そのパケットを送信する。すなわち、Ｌ２スイッチ１０は、受信パケットをフラッディングする。この実施例では、Ｌ２スイッチ１０のポートＰ０〜Ｐ３から同じパケットが送信される。
【００４６】
なお、Ｌ２スイッチ１０は、クライアント側からパケットを受信したときに、学習テーブル１１を更新する。すなわち、パケットを受信したポート（すなわち、ポートＰ１０）に対応づけて、そのパケットの送信元ＭＡＣアドレス「00:11:22:33:44:55」が登録される。
【００４７】
Ｌ２スイッチ１０のポートＰ０〜Ｐ３から送信されたパケットは、それぞれ、物理リンク＃０〜＃３を介して伝送され、ルータ２０のポートＰ０〜Ｐ３に到着する。この場合、ルータ２０は、各受信パケットの宛先ＩＰアドレスに基づいてそのパケットを処理する。すなわち、リンク制御部３１は、宛先ＩＰアドレスで管理テーブル３２を参照する。このとき、宛先ＩＰアドレスが仮想ＩＰアドレスの１つとして登録されていた場合には、リンク制御部３１は、対応する「定義ポート」を取得する。そして、リンク制御部３１は、取得した「定義ポート」により識別されるポートを介して入力されたパケットを取り込み、他のポートを介して入力されたパケットを破棄する。
【００４８】
なお、ルータ２０は、ＭＡＣアドレスで管理テーブル３２を参照してもよい。また、ルータ２０は、ＩＰアドレスおよびＭＡＣアドレスの組合せで管理テーブル３２を参照してもよい。すなわち、ルータ２０は、ＩＰアドレスまたはＭＡＣアドレスの少なくとも一方で参照管理テーブル３２を参照すればよい。
【００４９】
この実施例では、受信パケットの宛先ＩＰアドレスおよび宛先ＭＡＣアドレスは、管理テーブル３２に登録されているＶＩＰ／ＶＭＡＣペア２に相当する。そして、管理テーブル３２において、ＶＩＰ／ＶＭＡＣペア２に対して「ポートＰ１」が登録されている。したがって、この場合、ルータ２０は、ポートＰ０〜Ｐ３を介して受信した４個のパケットのうち、ポートＰ１を介して受信したパケットを取り込み、ポートＰ０、Ｐ２、Ｐ３を介して受信したパケットを破棄する。
【００５０】
なお、受信パケットの宛先ＩＰアドレス／宛先ＭＡＣアドレスが、ルータ２０に割り当てられている仮想ＩＰアドレス／仮想ＭＡＣアドレスでなかったときは、ルータ２０は、通常のルーティング処理を行う。このルーティングは、転送制御部３３のルーティング機能により実現される。
【００５１】
図９は、ルータ２０がＬ２スイッチ１０から受信したパケットをサーバシステム３へ転送するときの動作を示す。ルータ２０は、まず、サーバシステム３に属するサーバコンピュータ３ａ〜３ｃの中から、受信パケットを転送すべきサーバコンピュータ（ここでは、３ａ）を選択する。この選択は、転送制御部３３のサーバ負荷分散機能により行われる。ここで、ルータ２０がＬ２スイッチ１０から受信したパケットの宛先アドレスには、ルータ２０に割り当てられている仮想ＩＰアドレス／仮想ＭＡＣアドレスが設定されている。よって、ルータ２０は、この宛先アドレスを書き換える。すなわち、転送制御部３３のアドレス変換機能は、宛先ＭＡＣアドレス／宛先ＩＰアドレスを、サーバ負荷分散機能により選択されたサーバコンピュータ３ａのＭＡＣアドレス／ＩＰアドレスに書き換える。この実施例では、アドレス変換により、宛先ＭＡＣアドレスに「00:aa:aa:aa:aa:aa」が設定され、宛先ＩＰアドレスに「192.168.100.1」が設定される。
【００５２】
そして、ルータ２０は、宛先アドレスを書き換えたパケットを、目標装置であるサーバコンピュータ３ａへ送信する。これにより、クライアント２から送信されたパケットは、サーバシステム３に到着する。
【００５３】
図１０は、サーバコンピュータ３ａが応答パケットを送信したときの動作を示す。サーバコンピュータ３ａは、クライアント２から受信したパケットに対応する応答パケットを作成して送信する。
【００５４】
この場合、サーバコンピュータ３ａが送信する応答パケットには、図１０に示すアドレス情報が設定される。送信元ＭＡＣアドレス／送信元ＩＰアドレスには、サーバコンピュータ３ａのＭＡＣアドレス／ＩＰアドレスが設定される。宛先ＭＡＣアドレスには、ルータ２０に割り当てられている、サーバシステム３に対応する仮想ＭＡＣアドレスが設定される。この仮想ＭＡＣアドレスは、図７〜図８においてクライアント側からルータ２０へ送信されたパケットの宛先ＭＡＣアドレスに相当する。すなわち、応答パケットの宛先ＭＡＣアドレスには「00:22:22:22:22:22」が設定される。なお、クライアント２からのパケットを受信したサーバコンピュータ３ａは、ルータ２０に割り当てられている、サーバシステム３に対応する仮想ＭＡＣアドレスを認識しているものとする。応答パケットの宛先ＩＰアドレスには、クライアント２のＩＰアドレス「172.20.10.123」が設定される。
【００５５】
図１１は、ルータ２０がサーバコンピュータ３ａから受信したパケットをＬ２スイッチ１０へ転送するときの動作を示す。ルータ２０は、サーバコンピュータ３ａから送信された応答パケットをポートＰ１０を介して受信する。そうすると、ルータ２０は、応答パケットの送信元ＭＡＣアドレス、宛先ＭＡＣアドレス、送信元ＩＰアドレスを書き換える。すなわち、転送制御部３３のアドレス変換機能は、受信した応答パケットに設定されている宛先ＭＡＣアドレスを、送信元ＭＡＣアドレスに書き込む。すなわち、送信元ＭＡＣアドレスには、仮想ＭＡＣアドレス「00:22:22:22:22:22」が設定される。また、アドレス変換機能は、送信元ＩＰアドレスには、書換えにより設定された送信元ＭＡＣアドレスである仮想ＭＡＣアドレスに一意に対応する仮想ＩＰアドレスを書き込む。すなわち、送信元ＩＰアドレスには、仮想ＩＰアドレス「192.168.2.1」が設定される。さらに、アドレス変換機能は、宛先ＭＡＣアドレスとして、クライアント２に隣接するルータのＭＡＣアドレスを書き込む。
【００５６】
続いて、ルータ２０のリンク制御部３１は、アドレス変換後の応答パケットの送信元ＩＰアドレス／送信元ＭＡＣアドレスで管理テーブル３２を参照する。この実施例では、この参照により、管理テーブル３２においてＶＩＰ／ＶＭＡＣペア２がヒットする。この場合、リンク制御部３１は、ＶＩＰ／ＶＭＡＣペア２に対応する「定義ポート＝Ｐ１」を取得する。そして、リンク制御部３１は、上記応答パケットを、ポートＰ１を介してＬ２スイッチ１０へ送信する。このように、ルータ２０は、サーバシステム３からクライアント２へ向かう応答パケットを、送信元の仮想ＩＰアドレス／仮想ＭＡＣアドレスに対応するポートを介して送信する。
【００５７】
ここで、Ｌ２スイッチ１０のポートＰ０〜Ｐ３及びルータ２０のポートＰ０〜Ｐ３は、一意に対応している。よって、ルータ２０が管理テーブル３２を参照して特定したルータ２０のポート（Ｐ１）を介してパケットを送信すると、そのパケットは、Ｌ２スイッチ１０において一意に対応するポート（Ｐ１）により受信される。すなわち、ルータ２０の特定ポートを介してパケットを送信する動作は、実質的に、ルータ２０の特定ポートに一意に対応するＬ２スイッチ１０のポートへパケットを送信する動作を等価である。
【００５８】
リンク制御部３１は、送信元アドレスとしてＶＩＰ／ＶＭＡＣペア２が設定された応答パケットを送信すると、そのパケット送信で使用したポートを管理テーブル３２の「割り当てポート」に登録する。この実施例では、応答パケットは、ポートＰ１を介してＬ２スイッチ１０へ送信されている。よって、管理テーブル３２において、ＶＩＰ／ＶＭＡＣペア２に対応づけて、「割り当てポート＝Ｐ１」が登録される。
【００５９】
図１２は、Ｌ２スイッチ１０がルータ２０から受信したパケットをクライアント側へ転送するときの動作を示す。ルータ２０は、上述のように、ポートＰ１を介して応答パケットを送信する。そうすると、この応答パケットは、物理リンク＃１を介して伝送され、Ｌ２スイッチ１０のポートＰ１に到着する。
【００６０】
Ｌ２スイッチ１０は、受信した応答パケットに設定されている宛先ＭＡＣアドレスで学習テーブル１１を参照して、「ポート＝Ｐ１０」を得る。そうすると、Ｌ２スイッチ１０は、この応答パケットをポートＰ１０を介して送信する。Ｌ２スイッチ１０から送信された応答パケットは、ネットワーク上のノード装置により宛先アドレスに応じてルーティングされ、クライアント２まで転送される。
【００６１】
また、Ｌ２スイッチ１０は、ルータ２０から受信した応答パケットに応じて、学習テーブル１１を更新する。このとき、Ｌ２スイッチ１０は、応答パケットを受信したポートの識別番号と、その応答パケットに設定されている送信元ＭＡＣアドレスとを対応づけて学習テーブル１１に登録する。この実施例では、Ｌ２スイッチ１０は、ポートＰ１を介して応答パケットを受信する。また、この応答パケットの送信元アドレスには、ルータ２０に割り当てられている仮想ＩＰアドレス「00:22:22:22:22:22」が設定されている。したがって、学習テーブル１１には、図１２に示すように、ポートＰ１に対応づけて仮想ＩＰアドレス「00:22:22:22:22:22」が登録される。
【００６２】
図１３は、図７〜図１２に示す手順の後に、クライアント側から仮想ＩＰアドレス宛の次のパケットが送信されたときの動作を示す。ここで、クライアント側から送信されるパケットの宛先アドレスおよび送信元アドレスは、いずれも図７に示すパケットと同じである。そして、このパケットは、Ｌ２スイッチ１０のポートＰ１０に到着する。
【００６３】
図１４は、Ｌ２スイッチ１０が図１３に示すパケットを転送する動作を示す。Ｌ２スイッチ１０は、ポートＰ１０を介して上記パケットを受信すると、その宛先ＭＡＣアドレスで学習テーブル１１を参照する。このとき、学習テーブル１１には、先に行われた図１２に示す手順によって、ＭＡＣアドレス「00:22:22:22:22:22」に対してポートＰ１が登録されている。したがって、Ｌ２スイッチ１０は、このパケットをポートＰ１を介して送信する。このように、Ｌ２スイッチ１０は、新たに受信したパケットの宛先ＭＡＣアドレスについて既に学習しているので、登録されているポートを介してそのパケットをルータ２０へ送信することができる。
【００６４】
上記パケットは、物理リンク＃１を介して伝送され、ルータ２０のポートＰ１に到着する。そうすると、ルータ２０のリンク制御部３１は、受信パケットの宛先ＩＰアドレス／宛先ＭＡＣアドレスで管理テーブル３２を参照し、対応する「割り当てポート」を取得する。そして、リンク制御部３１は、取得した割り当てポートと、パケットを受信したポートとが一致すれば、そのパケットを取り込む。以降の手順は、図９〜図１２を参照しながら説明した手順と実質的に同じである。
【００６５】
このように、ルータ２０は、送信元ＭＡＣアドレスとしてルータ２０に割り当てられているある１つの仮想ＭＡＣアドレス（以下、仮想ＭＡＣアドレスＸ）を設定したパケットをＬ２スイッチ１０へ送信するときは、管理テーブル３２において仮想ＭＡＣアドレスＸに対応づけられて登録されているポート（以下、ポートＸ）を使用する。そうすると、Ｌ２スイッチ１０は、ルータ２０において使用されたポートＸに一意に対応するポート（以下、ポートＹ）を介して、そのパケットを受信する。そして、Ｌ２スイッチ１０は、そのパケットを受信したポートＹと対応づけて、そのパケットに設定されている送信元ＭＡＣアドレス（すなわち、仮想ＭＡＣアドレスＸ）を学習テーブル１１に登録する。したがって、以降、Ｌ２スイッチ１０は、宛先アドレスとして仮想ＭＡＣアドレスＸが設定されているパケットを受信すると、ポートＹを介してそのパケットをルータ２０へ転送する。すなわち、Ｌ２スイッチ１０から仮想ＭＡＣアドレスＸへ向かうパケットは、ルータ２０において仮想ＭＡＣアドレスＸに対して予め決められたポート（すなわち、物理リンク）を介して伝送される。
【００６６】
換言すれば、ルータ２０において管理テーブル３２を使用することにより、Ｌ２スイッチ１０から仮想ＭＡＣアドレスＸへ向かうパケットが経由する物理リンクを指定することができる。したがって、Ｌ２スイッチ１０とルータ２０との間でリンクアグリゲーションを行うときに、ネットワーク設計者またはネットワーク管理者は、トラフィックがどの物理リンクを経由しているのかを正確に把握することができる。
【００６７】
また、ルータ２０が仮想ＭＡＣアドレスからＬ２スイッチ１０へパケットを送信する際には、管理テーブル３２に登録されているポートを使用する。したがって、この場合も、ネットワーク設計者またはネットワーク管理者は、トラフィックがどの物理リンクを経由しているのかを正確に把握することができる。
【００６８】
さらに、仮想ＭＡＣアドレスＸからＬ２スイッチ１０へパケットを送信する際には、ルータ２０は、仮想ＭＡＣアドレスＸに対応づけられているポートを使用する。一方、Ｌ２スイッチ１０から仮想ＭＡＣアドレスＸへパケットを送信する際には、Ｌ２スイッチ１０は、仮想ＭＡＣアドレスＸに対応づけられているポートと物理リンクを介して接続するポートを使用する。したがって、Ｌ２スイッチ１０から仮想ＭＡＣアドレスＸへ向かうトラフィック、および仮想ＭＡＣアドレスＸからＬ２スイッチ１０へ向かうトラフィックは、同じ物理リンクを介して流れる。
【００６９】
さらに、Ｌ２スイッチ１０は、ルータ２０から受信するパケットを利用して学習テーブル１１を作成する。この学習テーブル１１は、レイヤ２のスイッチングを実現するために公知の構成を利用することができる。すなわち、Ｌ２スイッチ１０は、リンクアグリゲーションに係わる構成またはソフトウェアを実装している必要はない。このように、リンクアグリゲーションのための専用の構成またはソフトウェアをＬ２スイッチ１０に実装しなくても、Ｌ２スイッチ１０とルータ２０との間でリンクアグリゲーションを実現できる。よって、従来技術と比較して、Ｌ２スイッチとルータとの間のリンクアグリゲーションを簡易におよび／または低コストで実現できる。
【００７０】
図１５は、Ｌ２スイッチ１０からパケットを受信したときのルータ２０の処理を示すフローチャートである。ステップＳ１において、リンク制御部３１は、受信パケットの宛先アドレスが、ルータ２０に割り当てられている仮想ＩＰアドレスか否かを判定する。受信パケットの宛先アドレスがルータ２０に割り当てられている仮想ＩＰアドレスであれば、リンク制御部３１は、ステップＳ２において、その仮想ＩＰアドレスで管理テーブル３２を参照することにより、対応する物理インタフェース（すなわち、ポート）を特定する。そして、リンク制御部３１は、上記パケットを受信したポートと、管理テーブル３２を参照することで特定されたポートが一致するか判定する。
【００７１】
上記２つのポートが互いに一致するときは（ステップＳ２：Ｙｅｓ）、リンク制御部３１は、ステップＳ３において、受信パケットを転送制御部３３へ渡して処理を依頼する。この場合、転送制御部３３は、サーバ負荷分散処理、アドレス変換処理、ルーティング処理等を実行する。一方、上記２つのポートが互いに一致しないときは（ステップＳ２：Ｎｏ）、リンク制御部３１は、ステップＳ４において、受信パケットを破棄する。
【００７２】
受信パケットの宛先アドレスがルータ２０に割り当てられている仮想ＩＰアドレスでなかったときは（ステップＳ１：Ｎｏ）、リンク制御部３１は、ステップＳ５において、代表ポートを介してそのパケットを受信したか否かを判定する。ここで、代表ポートは、ルータ２０宛てのパケットを受信するために予め決められているものとする。そして、代表ポートを介してパケットを受信したときは、ステップＳ６において、リンク制御部３１は、ルータ２０宛てのパケットを処理するための上位処理部にそのパケットを渡す。この場合、上位処理部は、受信パケットにより指示された処理を実行する。一方、代表ポート以外のポートを介してパケットを受信したときは（ステップＳ５：Ｎｏ）、リンク制御部３１は、ステップＳ４において、受信パケットを破棄する。
【００７３】
このように、リンク制御部３１は、ルータ２０に割り当てられている仮想ＩＰアドレス宛てのパケットを受信したときに、その仮想ＩＰアドレスに対応するポートを介して受信したパケットを取り込み、他のポートを介して受信したパケットを破棄する。すなわち、ルータ２０は、仮想ＩＰアドレスに対応していない物理リンクを介して伝送されるパケットを拒否できる。したがって、仮想ＩＰアドレスとその仮想ＩＰアドレス宛てのトラフィックが流れる物理リンクとの対応関係が保障される。
【００７４】
図１６は、パケット送信時のルータ２０の処理を示すフローチャートである。なお、このフローチャートにおいては、転送制御部３３の処理は省略されている。
ステップＳ１１において、リンク制御部３１は、送信パケットの送信元アドレスが、ルータ２０に割り当てられている仮想ＩＰアドレスか判定する。送信元アドレスがルータ２０に割り当てられている仮想ＩＰアドレスであれば、リンク制御部３１は、ステップＳ１２において、管理テーブル３２を参照し、送信元の仮想ＩＰアドレスに対して既に物理インタフェース（すなわち、ポート）が割り当てられているか判定する。
【００７５】
送信元の仮想ＩＰアドレスに対して既にポートが割り当てられていれば、リンク制御部３１は、ステップＳ１６において、その仮想ＩＰアドレスに対して割り当てられているポートを介してパケットを送信する。一方、送信元の仮想ＩＰアドレスに対してポートが割り当てられていなければ、リンク制御部３１は、ステップＳ１３において、その仮想ＩＰアドレスに対して定義されているポートが使用可能か判定する。
【００７６】
送信元の仮想ＩＰアドレスに対して定義されているポートが使用可能であれば、リンク制御部３１は、ステップＳ１４において、定義されているポートをその仮想ＩＰアドレスに割り当てる。一方、送信元の仮想ＩＰアドレスに対して定義されているポートが使用可能でないときは、リンク制御部３１は、ステップＳ１５において、使用可能なポートの中から、既に割り当てられている仮想ＩＰアドレスの数が最も少ないポートを選択する。そして、送信パケットの送信元の仮想ＩＰアドレスに対して、新たに選択したポートが割り当てられる。ステップＳ１４またはＳ１５によりポートが割り当てられた後、ステップＳ１６の処理が実行される。
【００７７】
送信元アドレスがルータ２０に割り当てられている仮想ＩＰアドレスでないときは、リンク制御部３１は、ステップＳ１７において、代表ポートを介してそのパケットを送信する。例えば、ルータ２０が自らパケットを生成して送信するときは、この代表ポートを介してパケットが送信される。
【００７８】
このように、パケットの送信元がルータ２０に割り当てられている仮想ＩＰアドレスであるときは、ルータ２０は、その仮想ＩＰアドレスに対して割り当てられているポートを介してそのパケットをＬ２スイッチ１０へ送信する。すなわち、Ｌ２スイッチ１０は、その仮想ＩＰアドレスに対して割り当てられている物理リンクを介してそのパケットを受信する。ここで、仮想ＩＰアドレスと仮想ＭＡＣアドレスは、一意に対応している。したがって、Ｌ２スイッチ１０は、ルータ２０が備える管理テーブル３２の対応関係に従って、宛先ＭＡＣアドレスと出力ポートとの対応関係を記述した学習テーブル１１を作成することができる。よって、Ｌ２スイッチ１０がリンクアグリゲーション機能を実装していなくても、仮想ＩＰアドレス宛てのトラフィックが流れる物理リンクは、ルータ２０が備える管理テーブル３２に従って制御される。
【００７９】
次に、Ｌ２スイッチ１０とルータ２０との間の物理リンクの状態が変化したときの処理を説明する。以下の説明では、図７〜図１２の手順により、学習テーブル１１および管理テーブル３２が図１２に示す状態に更新されているものとする。
【００８０】
図１７〜図１８は、物理リンクに障害が発生したときの処理を示す。この実施例では、物理リンク＃１において障害が発生したものとする。
ルータ２０のリンク状態監視部３４は、常時、各物理リンク＃０〜＃３の状態を監視する。そして、図１７において、リンク状態監視部３４は、物理リンク＃１において障害が発生したことを検出する。
【００８１】
そうすると、リンク制御部３１は、管理テーブル３２を参照し、障害が発生した物理リンク＃１（すなわち、ポートＰ１）が割り当てられているＶＩＰ／ＶＭＡＣペアをサーチする。この実施例では、「割り当てポート＝Ｐ１」に対してＶＩＰ／ＶＭＡＣペア２が対応づけられている。
【００８２】
この場合、リンク制御部３１は、障害が発生していない物理リンク（すなわち、使用可能なポート）の中から、ＶＩＰ／ＶＭＡＣペア２に対して新たに割り当てるポートを選択する。このとき、例えば、既に割り当てられているＶＩＰ／ＶＭＡＣペアの数の最も少ないポートが選択される。或いは、最もトラフィックの少ない物理リンクに対応するポートを選択してもよい。この実施例では、ＶＩＰ／ＶＭＡＣペア２に対してポートＰ２が新たに割り当てられるものとする。すなわち、ＶＩＰ／ＶＭＡＣペア２に割り当てられるポートが、ポートＰ１からポートＰ２へ変更される。
【００８３】
ＶＩＰ／ＶＭＡＣペア２に割り当てられるポートを変更すると、ルータ２０は、ＶＩＰ／ＶＭＡＣペア２に対して新たに割り当てたポートへＧ−ＡＲＰ（Gratuitous Address Resolution Protocol）パケットを導く。すなわち、ルータ２０は、ポートＰ２を介して、Ｌ２スイッチ１０へＧ−ＡＲＰパケットを送信する。
【００８４】
図１９は、Ｇ−ＡＲＰパケットの形式を示す。Ｇ−ＡＲＰパケットの形式は、ＲＦＣ８２６等で規定されているＡＲＰパケットと同じであり、ＭＡＣヘッダおよびＡＲＰデータを有する。ＡＲＰは、ＩＰアドレスからＭＡＣアドレスを得るためのプロトコルである。ＡＲＰを実装しているコンピュータは、ＩＰアドレスとＭＡＣアドレスとの対応関係を保持するＡＲＰテーブルを有している。そして、Ｇ−ＡＲＰパケットは、他のコンピュータのＡＲＰテーブルを強制的に更新することができる。Ｇ−ＡＲＰパケットのＡＲＰデータには、Sender Hardware Address、Sender Protocol Address、Target Hardware Address、Target Protocol Addressが設定される。Hardware Addressは、ＭＡＣアドレスに相当し、Protocol Addressは、ＩＰアドレスに相当する。
【００８５】
ルータ２０からＬ２スイッチ１０へ送信されるＧ−ＡＲＰパケットの送信元ＭＡＣアドレスには、ブロードキャストを表す「ff:ff:ff:ff:ff:ff」が設定される。また、宛先アドレスには、割り当てポートが変更されたＶＩＰ／ＶＭＡＣペアのＭＡＣアドレスが設定される。よって、この実施例では、仮想ＭＡＣアドレス「00:22:22:22:22:22」が設定される。ここで、Ｇ−ＡＲＰパケットの「宛先ＭＡＣアドレス」は、Ｇ−ＡＲＰパケットを受信したコンピュータに再学習させるアドレスである。すなわち、この実施例では、ルータ２０は、Ｌ２スイッチ１０に、仮想ＭＡＣアドレス「00:22:22:22:22:22」を再学習させることになる。
【００８６】
ＡＲＰデータのSender ＭＡＣアドレスおよびTarget ＭＡＣアドレスには、宛先ＭＡＣアドレスと同じ値が設定される。また、ＡＲＰデータのSender ＩＰアドレスおよびTarget ＩＰアドレスには、対応する仮想ＩＰアドレス「192.168.2.1」が設定される。
【００８７】
上述のＧ−ＡＲＰパケットは、物理リンク＃２を介してルータ２０からＬ２スイッチ１０へ伝送される。そして、Ｌ２スイッチ１０は、ポートＰ２を介してそのＧ−ＡＲＰパケットを受信する。
【００８８】
そうすると、Ｌ２スイッチ１０は、受信したＧ−ＡＲＰパケットに従って学習テーブル１１を更新する。すなわち、図１８に示すように、学習テーブル１１において、受信したＧ−ＡＲＰパケットの宛先ＭＡＣアドレス「00:22:22:22:22:22」に対して、そのＧ−ＡＲＰパケットを受信したポートＰ２が対応づけられる。
【００８９】
以降、Ｌ２スイッチ１０は、宛先ＭＡＣアドレスとして「00:22:22:22:22:22」が設定されているパケットを受信すると、更新された学習テーブル１１に基づいて、ポートＰ２を介してそのパケットを送信する。このパケットは、物理リンク＃２を介してルータ２０へ伝送される。
【００９０】
このように、ルータ２０は、ある物理リンク（以下、第１の物理リンク）の障害を検出すると、第１の物理リンクが割り当てられていたＶＩＰ／ＶＭＡＣペアに、新たな物理リンク（以下、第２の物理リンク）を割り当てる。そして、ルータ２０は、第２の物理リンクを介して、第１の物理リンクが割り当てられていた仮想ＭＡＣアドレスを通知するためのＧ−ＡＲＰパケットをＬ２スイッチ１０へ送信する。よって、Ｌ２スイッチ１０は、第１の物理リンクに障害が発生すると、即座に、学習テーブル１１を更新できる。したがって、物理リンクに障害が発生した場合であっても、Ｌ２スイッチ１０とルータ２０との間でリンクアグリゲーションを実現しながら、クライアントとサーバとの間の通信を継続することができる。
【００９１】
図２０は、リンクダウン時のルータ２０の処理を示すフローチャートである。以下では、リンク状態監視部３４がある物理リンクの障害を検出した後の手順を説明する。
ステップＳ２１において、リンク制御部３１は、管理テーブル３２の「割り当てポート」を参照し、障害が検出された物理リンクに対応するポートが割り当てられていたＶＩＰ／ＶＭＡＣペアが存在するか否かを判定する。そのようなＶＩＰ／ＶＭＡＣペアが存在するときは、リンク制御部３１は、ステップＳ２２において、使用可能なポートの中から、既に割り当てられている仮想ＩＰアドレスの数が最も少ないポートを選択する。そして、リンク制御部３１は、管理テーブル３２において、選択したポートを上述のＶＩＰ／ＶＭＡＣペアに対して割り当てる。
【００９２】
ステップＳ２３において、リンク制御部３１は、ポートの割り当てを変更したＶＩＰ／ＶＭＡＣペアについて、再学習パケットを作成する。再学習パケットは、図１８に示す実施例では、Ｇ−ＡＲＰパケットである。そして、リンク制御部３１は、このＶＩＰ／ＶＭＡＣペアに対して新たに割り当てたポートを介して再学習パケットを送信する。
【００９３】
図２１は、リンクアップ時のルータ２０の処理を示すフローチャートである。以下では、物理リンクが障害から回復したことをリンク状態監視部３４により検出された後の手順を説明する。
【００９４】
ステップＳ３１において、リンク制御部３１は、管理テーブル３２を参照し、障害から回復した物理リンクに接続するポートが定義ポートであって、且つ、定義ポートと割り当てポートが異なっているＶＩＰ／ＶＭＡＣペアが存在するか否かを判定する。例えば、図１８に示す状態において、物理リンク＃１が回復したものとする。このとき、管理テーブル３２において、ＶＩＰ／ＶＭＡＣペア２について、「定義ポート＝Ｐ１」「割り当てポート＝Ｐ２」である。よって、この場合、ステップＳ３１は「Ｙｅｓ」と判定される。
【００９５】
上述のようなＶＩＰ／ＶＭＡＣペアが存在するときは、リンク制御部３１は、ステップＳ３２において、このＶＩＰ／ＶＭＡＣペアの割り当てポートとして「定義ポート」を設定する。すなわち、上記ＶＩＰ／ＶＭＡＣペアに対して定義ポートが割り当てられる。
【００９６】
ステップＳ３３において、リンク制御部３１は、ポートの割り当てを変更したＶＩＰ／ＶＭＡＣペアについて、再学習パケット（Ｇ−ＡＲＰパケット）を送信する。このとき、リンク制御部３１は、このＶＩＰ／ＶＭＡＣペアに対して新たに割り当てたポートを介して再学習パケットを送信する。
【００９７】
このように、実施形態の通信制御方法によれば、ルータ２０は、クライアントとサーバとの間の通信を中継する動作を利用して、ルータ２０に割り当てられている仮想ＭＡＣアドレスとポートとの対応関係を、Ｌ２スイッチ１０の学習テーブル１１に反映させる。これにより、Ｌ２スイッチ１０に専用の構成またはソフトウェアを実装することなく、Ｌ２スイッチ１０とルータ２０との間でリンクアグリゲーションを実現できる。
【００９８】
なお、ルータ２０に割り当てられている仮想ＭＡＣアドレスとポートとの対応関係をＬ２スイッチ１０の学習テーブル１１に反映させるためには、例えば、ルータ２０からＬ２スイッチ１０へ定期的にＧ−ＡＲＰパケットを送信する方法が考えられる。この場合、ルータ２０は、管理テーブル３２に登録されている各ＶＩＰ／ＶＭＡＣペアについてそれぞれ対応するポートを介してＧ−ＡＲＰパケットを送信する。
【００９９】
しかし、例えば、Ｌ２スイッチ１０に障害が発生して再起動した場合等においては、学習テーブル１１が初期化されてしまう。このため、上述のようなＧ−ＡＲＰパケットを使用する方法では、Ｌ２スイッチ１０は、ルータ２０から次のＧ−ＡＲＰパケットを受信して学習テーブル１１を作成するまでの期間、ルータ２０へパケットを転送することができない。この問題は、例えば、Ｇ−ＡＲＰパケットの送信間隔を短くすれば、緩和される。しかし、Ｇ−ＡＲＰパケットの送信間隔を短くすることは、Ｌ２スイッチ１０とルータ２０との間のトラフィックを増加させるので、好ましくない。よって、クライアントとサーバとの間の通信を中継する動作を利用して、仮想ＭＡＣアドレスとポートとの対応関係をＬ２スイッチ１０に反映させる、実施形態の通信制御方法は、クライアントとサーバとの間のリンクアグリゲーション通信を維持する点で優れている。
【符号の説明】
【０１００】
１０  Ｌ２スイッチ
１１  学習テーブル
２０  ルータ
２２  プロセッサ
３１  リンク制御部
３２  管理テーブル
３３  転送制御部
３４  リンク状態監視部
【図１】
2013013032.tif 000003
【図２】
2013013032.tif 000004
【図３】
2013013032.tif 000005
【図４】
2013013032.tif 000006
【図５】
2013013032.tif 000007
【図６】
2013013032.tif 000008
【図７】
2013013032.tif 000009
【図８】
2013013032.tif 000010
【図９】
2013013032.tif 000011
【図１０】
2013013032.tif 000012
【図１１】
2013013032.tif 000013
【図１２】
2013013032.tif 000014
【図１３】
2013013032.tif 000015
【図１４】
2013013032.tif 000016
【図１５】
2013013032.tif 000017
【図１６】
2013013032.tif 000018
【図１７】
2013013032.tif 000019
【図１８】
2013013032.tif 000020
【図１９】
2013013032.tif 000021
【図２０】
2013013032.tif 000022
【図２１】
2013013032.tif 000023