(57)【特許請求の範囲】
【請求項１】
外部とのパケット送受信の基点となる中継装置と、アプリケーションが動作する複数の制御装置とからなり、上記制御装置のアプリケーションは上記中継装置の実インタフェースに対応する仮想インタフェースにアクセスするネットワーク機器における経路テーブル同期方法において、
経路テーブルを作成するルーティングプロセスを上記制御装置のうちの一つであるマスター制御装置で実行し、
上記マスター制御装置の経路テーブルに更新があった場合に上記ルーティングプロセスとは独立に動作する経路同期用プロセスによって上記中継装置の経路テーブルを更新し、
上記中継装置を介して上記マスター制御装置以外の制御装置であるスレーブ制御装置の経路テーブルを更新することを特徴とする経路テーブル同期方法。
【請求項２】
外部とのパケット送受信の基点となる中継装置と、アプリケーションが動作する複数の制御装置とからなり、上記制御装置のアプリケーションは上記中継装置の実インタフェースに対応する仮想インタフェースにアクセスするネットワーク機器において、
上記制御装置の一つであるマスター制御装置内にあってパケットを送信するインタフェースを特定するための経路テーブルを作成するルーティング手段と、
上記マスター制御装置内にあって上記ルーティング手段とは独立に動作し、上記マスター制御装置内の経路テーブルに経路の更新があった旨をカーネルから受信したときに上記中継装置に経路情報を通知する第１の経路同期手段と、
上記中継装置内にあって、上記第１の経路同期手段から経路情報の通知を受信したときに上記中継装置内の経路テーブルを更新すると共に、上記マスター制御装置以外の制御装置であるスレーブ制御装置に経路情報を通知する第２の経路同期手段と、
上記スレーブ制御装置内にあって、上記第２の経路同期手段から経路情報の通知を受信したときに上記スレーブ制御装置内の経路テーブルを更新する第３の経路同期手段と
を備えたことを特徴とするネットワーク機器。
【請求項３】
上記中継装置内の第２の経路同期手段は、
上記スレーブ制御装置の仮想インタフェースがダウンしている場合は当該仮想インタフェースに対応する経路情報を上記スレーブ制御装置に送信せず、
上記スレーブ制御装置の仮想インタフェースがアップからダウンに変わったことを検出した場合は該当する経路情報を経路テーブルから削除するメッセージを上記スレーブ制御装置に送信し、
上記スレーブ制御装置の仮想インタフェースがダウンからアップに変わったことを検出した場合は該当する経路情報を上記スレーブ制御装置に送信することを特徴とする請求項２に記載のネットワーク機器。
【請求項４】
上記中継装置は、
上記マスター制御装置のルーティング手段が正常動作しなくなったことを検出した場合に他の上記スレーブ制御装置の一つに対し新たにルーティング手段を起動するメッセージを送信し、
上記スレーブ制御装置のルーティング手段が正常に起動したことを認識した場合にそれまで上記マスター制御装置に向けられていたルーティング用パケットの宛先を新たにルーティング手段が起動した上記スレーブ制御装置に切り替えることを特徴とする請求項２または３のいずれか一項に記載のネットワーク機器。
【請求項５】
外部とのパケット送受信の基点となる中継装置と、アプリケーションが動作する複数の制御装置とからなり、上記制御装置のアプリケーションは上記中継装置の実インタフェースに対応する仮想インタフェースにアクセスするネットワーク機器における経路テーブル同期プログラムにおいて、
経路テーブルを作成するルーティングプロセスを上記制御装置のうちの一つであるマスター制御装置で実行させる機能と、
上記マスター制御装置の経路テーブルに更新があった場合に上記中継装置の経路テーブルを更新する機能と、
上記中継装置の経路テーブルの更新の後に上記マスター制御装置以外の制御装置であるスレーブ制御装置の経路テーブルを更新する機能と
を上記ルーティングプロセスとは独立にコンピュータに実行させることを特徴とする経路テーブル同期プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インターネット、イントラネット等のネットワークシステムを構成するために使用されるネットワーク機器およびその経路テーブル同期の技術に関するものである。
【背景技術】
【０００２】
一般に、パケットを取り扱うネットワーク機器は制御部としてプロセッサ部を有するが、より高度な制御を行わせようとしたり、あるいは新たなネットワーク・アプリケーションを導入しようとすると、プロセッサやメモリ等のリソース不足がこうした機能提供の壁となる。なお、ネットワーク・アプリケーションの例としては、経路計算を行うルーティングデーモン、ファイル転送サービスを行うｆｔｐサーバ、ハイパーテキストによる情報提供を行うｈｔｔｐサーバ等がある。
【０００３】
そこで、そのようなネットワーク機器上で動かすアプリケーションを、外部から見た形態としては本体上で動作するように振舞わせる一方、実際の実行を本体とは別に用意したサーバ等の機器上で実行（アプリケーションの代理実行）するようなことができれば、適宜必要な処理性能を追加することが可能になる。
【０００４】
ところで、上記のアプリケーションの代理実行によらず、このようなネットワークにおける種々のサービスを提供するアプリケーションをサービス別に実行機器を分けるという解決手法もあるが、ルーティングデーモンのようにその機器上で動かすことで本来の動作を行うようなアプリケーションでは、手を加えずにそのまま別の機器上で実行させるのは困難であるし、また一般にＩＰネットワークにおいては、同じホストアドレスで種々のサービスを提供する方が利用者から見た場合に接続先を憶えやすく、サービス提供形態として運用が容易である。
【０００５】
このように、ネットワーク機器上で動かすアプリケーションを、外部から見た形態としては本体上で動作するように振舞わせる一方、実際の実行を本体とは別に用意したサーバ等の機器上で実行することを実現する方式を本願発明者等は既に提案している。
【０００６】
この方式によれば、本体（中継装置）とは別に用意したサーバ等の外部機器（制御装置）に、本体の実インタフェースに対応する仮想インタフェースを配し、実行を委譲したいアプリケーションをその外部機器で仮想インタフェースに対し送受信を行うように実行させることで、あたかもその本体上でそのアプリケーションが動作しているかのように振舞わせることが可能となる。
【０００７】
さらに、複数のアプリケーションを実行させたい場合、各々のアプリケーションに異なるコネクション識別子（ポート番号）を割り当てて通信する特性を利用し、アプリケーション毎に処理の実行を担う制御装置を分けることが可能となる。その結果、論理的には単一の機器のように利用者から見える一方、提供するアプリケーション別に処理を担う機器を分けることにより、処理性能におけるスケーラビリティが確保できる。また、この方式によれば、アプリケーションにおいて通信処理の実行開始／終了に応じ動的にコネクションを確立／削除することが可能で、運用も容易である。
【０００８】
なお、先行技術に関する公開された文献については把握していない。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ところで、各アプリケーション処理の実行を担う制御装置において、複数の仮想インタフェースを有する場合、パケットをその通信相手に送信する際にどのインタフェースから送信すべきかを決定するための経路テーブルが必要になる。これは、制御装置で動作するアプリケーションの実行形態であるプロセスが外部の装置との通信を行う際、どのインタフェースに接続するかを決定するための処理において経路テーブルを参照するからである。具体的には、制御装置で動作するプロセスが外部装置と通信を行う際に指定するのは接続先のＩＰアドレスであるが、この宛先ＩＰアドレスを持つ相手の装置がどのインタフェースに接続しているか、またはどの仮想インタフェースに接続するべきかを決定するためには、宛先のＩＰアドレスとデータを送出するべき仮想インタフェースとの対応表が必要である。これが経路テーブルである。そして、経路テーブルは、通信を行うプロセスが存在する制御装置毎にローカルに持たなければならない。
【００１０】
このとき、仮想インタフェースは、外部とのパケット送受信の基点となる中継装置における実インタフェースと論理的には同等に振舞うため、仮想インタフェースに関する経路テーブルは実インタフェースと実質的に同一でなくてはならない。
【００１１】
経路を静的に設定するスタティック・ルーティングを行う場合は、仮想インタフェースを配した制御装置における経路テーブルがそれぞれ中継装置の経路テーブルと同一内容に設定されていれば良いが、経路を動的に設定するダイナミック・ルーティングを行う場合は、何らかの形で経路テーブルを一致させる必要がある。
【００１２】
一般にダイナミック・ルーティングは、ルーティングプロトコルを利用し周囲のルータと経路情報を交換し合うことで経路テーブルを作成する。しかし、ここで複数の制御装置がある場合、各々がルーティングプロトコル処理を実施すると、結果的に外部から見れば一つの装置で複数のルーティングプロトコル処理プログラムが動いている形となり、各々が干渉してしまい、正しい動作ができない。
【００１３】
また、複数の制御装置で各々ルーティングプロトコル処理プログラムを実行するというのは、種々のアプリケーション処理を分担して実行することでプロセッサ性能の向上を実現するという本来の主旨からも不適切である。
【００１４】
一方、ルーティングプロトコル処理プログラムを全面的に設計し直し、経路テーブルを一致させる機能を設けることも不可能ではないが、処理シーケンスが非常に複雑なものとなる。これは、物理的に分離された複数の装置の経路テーブルを一元的に管理しなければならないためであり、特にエラー時の処理は複雑なものとなる。
【００１５】
本発明は上記の従来の問題点に鑑み提案されたものであり、その目的とするところは、仮想インタフェース方式を用いて複数の制御装置で各種アプリケーション処理の実行を分担する構成において、複雑なシーケンスを行わずに、各々の制御装置の経路テーブルを同期させ、実インタフェースの経路情報とこの実インタフェースに対応した仮想インタフェースを持つ各制御機器の経路テーブルとを同期させることにある。
【課題を解決するための手段】
【００１６】
上記の課題を解決するため、本発明にあっては、外部とのパケット送受信の基点となる中継装置と、アプリケーションが動作する複数の制御装置とからなり、上記制御装置のアプリケーションは上記中継装置の実インタフェースに対応する仮想インタフェースにアクセスするネットワーク機器において、経路テーブルを作成するルーティングプロセスを上記制御装置のうちの一つであるマスター制御装置で実行し、上記マスター制御装置の経路テーブルに更新があった場合に上記ルーティングプロセスとは独立に動作する経路同期用プロセスによって上記中継装置の経路テーブルを更新し、上記中継装置を介して上記マスター制御装置以外の制御装置であるスレーブ制御装置の経路テーブルを更新するようにしている。
【００１７】
これにより、オリジナルの経路テーブルの作成プロセスに手を加えることなく、これとは独立した経路同期用プロセスにより自律分散方式で複雑なシーケンスを行わずに各装置の経路テーブルの同期をとることができる。
【００１８】
また、中継装置は、仮想インタフェースがダウンしている場合は当該仮想インタフェースに対応する経路情報をスレーブ制御装置に送信せず、仮想インタフェースがアップからダウンに変わったことを検出した場合は該当する経路情報を経路テーブルから削除するメッセージをスレーブ制御装置に送信し、仮想インタフェースがダウンからアップに変わったことを検出した場合は該当する経路情報をスレーブ制御装置に送信するようにすることができる。
【００１９】
これにより、ダウンしている仮想インタフェースについての経路情報を経路テーブルに持たせないようにすることができ、パケットの送信ができずに異常な状態となることを防止することができる。
【００２０】
また、上記マスター制御装置のルーティングプロセスが正常動作しなくなったことを検出した場合に他の上記スレーブ制御装置の一つに対し新たにルーティングプロセスを起動するメッセージを送信し、上記スレーブ制御装置のルーティングプロセスが正常に起動したことを認識した場合にそれまで上記マスター制御装置に向けられていたルーティング用パケットの宛先を新たにルーティングプロセスが起動した上記スレーブ制御装置に切り替えるようにすることができる。
【００２１】
これにより、ルーティングプロセスの冗長化が行え、ルーティングプロセスの異常終了等に対する安全性を高めることができる。
【発明の効果】
【００２２】
本発明にあっては、仮想インタフェース方式を用いて複数の制御装置で各種アプリケーション処理の実行を分担する構成において、オリジナルの経路テーブルとは独立したプロセスで、また各装置間の同期処理を自律分散方式で行うことにより、複雑なシーケンスを行わずに経路テーブルの同期をとることが可能となる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の実施形態について図面を参照して説明する。
【００２４】
先ず、本発明の前提となる、経路テーブルの基本的な機能と、仮想インタフェースを用いたアプリケーションの代理実行について説明する。
【００２５】
図１は単一装置におけるパケットの流れを示す図である。図１において、アプリケーションの実行形態であるプロセスａからカーネルｂに対して宛先ＩＰアドレスを指定してパケットの送信が行われると（ステップＳ１）、カーネルｂは経路テーブルｃを参照して宛先ＩＰアドレスに対応するインタフェースを決定し、パケットを送信する（ステップＳ２）。なお、経路テーブルｃは、宛先のネットワークがどのインタフェースに接続されていて、次の中継ルータ（next hop）が何であるかという情報を示すテーブルのことである。
【００２６】
図２は経路テーブルｃの例を示したものであり、宛先ネットワークのＩＰアドレスを示す「Destination」フィールドと、次の中継ルータを示す「Gateway」フィールドと、マスクを示す「Genmask」フィールドと、各種のフラグ類「Flags」「Metric」「Ref」「Use」のフィールドと、インタフェースを示す「Iface」フィールドを含んでいる。例えば、デフォルトルート（default）については、next hop : 10.25.165.1でインタフェースがeth0であることを示している。なお、図２は端末での例であるが、ルータ装置の場合、このような経路情報が数万エントリー並ぶことになる。
【００２７】
図３は仮想インタフェースを用いて複数の装置で構成したネットワーク機器におけるパケットの流れを示す図である。
【００２８】
図３において、制御装置１はアプリケーションを代理実行する装置であり、中継装置２は外部とのパケット送受信の基点となる装置である。中継装置２は複数の実インタフェースeth0〜eth2を有しており、制御装置１とはその中の一つの実インタフェースeth0で接続されている。なお、ここでは制御装置１を１台しか示していないが、代理実行させるアプリケーションの数等に応じて複数台となる。
【００２９】
ところで、通常、制御装置１で動作しているアプリケーションから見えるインタフェースは、制御装置１が持つ実インタフェースである。従って、制御装置１が複数存在するとそれだけ複数の装置があると外部からは見えることになり、外部からアクセスするサーバ（アプリケーション）が異なることになって、異なるＩＰアドレス宛にアクセスすることになってしまう。これを外部からは中継装置２のＩＰアドレス宛にアクセスし、内部的に複数の制御装置１にアクセス可能にするために、制御装置１のカーネル１ｂ内にデバイスドライバの一種である仮想インタフェースvif0〜vif2を配備してある。なお、仮想インタフェースの数は図示のものに限られない。
【００３０】
ここで、アプリケーションの実行形態であるプロセス１ａからカーネル１ｂに対して宛先ＩＰアドレスを指定してパケットの送信が行われると（ステップＳ３）、カーネル１ｂは経路テーブル１ｃを参照して宛先ＩＰアドレスに対応する仮想インタフェースを決定し、その仮想インタフェースにパケットを書き込む（ステップＳ４）。
【００３１】
トンネルプロセス１ｄは、仮想インタフェースにパケットが書き込まれると、そのパケットを読み出し（ステップＳ５）、実インタフェースeth0を介して中継装置２に送信する（ステップＳ６）。なお、トンネルプロセス１ｄは、どの仮想インタフェースから受信したパケットであるかが分かるように、その仮想インタフェースの番号（トンネルＩＤ）をデータのヘッダに付与してパケットを送信する。このように、制御装置１のカーネル１ｂは仮想インタフェースに書き込まれたパケットを実インタフェースから直接に送信するのではなく、専用のトンネルプロセス１ｄにデータを読み出してもらい、このトンネルプロセス１ｄが実インタフェースに対して送信を行うものである。
【００３２】
一方、中継装置２では、カーネル２ａを介してトンネルプロセス２ｂが制御装置１からのパケットを受信し、トンネルプロセス２ｂは受信したパケットのヘッダに付与された仮想インタフェースの番号からどの実インタフェースに送信すればよいかを判別し、その実インタフェースを介して外部ネットワークにパケットを送信する（ステップＳ７）。ここで、制御装置１のトンネルプロセス１ｄと中継装置２のトンネルプロセス２ｂの間に形成される通信パスはトンネルと呼ばれている。
【００３３】
また、逆に外部から中継装置２がパケットを受信すると、中継装置２はパケットの宛先ポート番号を識別し、どの制御装置１に送信するべきかを判断する。すなわち、この宛先ポート番号によって、どのトンネルにパケットを振り分けるかを決定し、パケットをトンネルを通じて制御装置１に送信する。制御装置１に到着したパケットは、いったんトンネルを終端するトンネルプロセス１ｄが受信する。トンネルプロセス１ｄは、受信したパケットを対応する仮想インタフェースに書き込み、通信の終端であるプロセス１ａは、この仮想インタフェースからパケットを受信する。
【００３４】
以上の一連の流れによって、制御装置１で動作しているプロセス１ａは、仮想インタフェースにアクセスすることによって、あたかも中継装置２の実インタフェースを直接にアクセスしているような動作を実現している。
【００３５】
図４は本発明の第１の実施形態にかかるネットワーク機器の構成を示す図である。
【００３６】
図４において、アプリケーションを代理実行する複数の制御装置１０〜１２は、外部とのパケット送受信の基点となる中継装置２０と実インタフェースを介して接続されている。また、制御装置１０〜１２のうちの１台が経路情報の生成を行うマスター制御装置１０とされ、他はスレーブ制御装置１１、１２となっている。
【００３７】
マスター制御装置１０においては、中継装置２０を介して周囲のルータと通信を行って経路情報を生成するルーティングプロセス１０２が動作しており、スレーブ制御装置１１ではアプリケーションの例としてｈｔｔｐサーバ１１２が動作し、スレーブ制御装置１２ではｆｔｐサーバ１２２が動作している。
【００３８】
一方、各装置１０〜１２、２０のカーネル１００、１１０、１２０，２００内にはそれぞれ経路テーブル１０１、１１１、１２１、２０１が設けられ、更に経路テーブルの同期を図るための経路同期用プロセス１０３、１１３、１２３、２０２が設けられている。
【００３９】
図５は図４のネットワーク機器における仮想インタフェースと実インタフェースの対応関係の例を示す図であり、ここでは制御装置１０〜１２のカーネル１００、１１０、１２０内に設けられた仮想インタフェースvif0、vif1、vif2、vif3が中継装置２０の実インタフェースeth0、eth1、eth2、eth3に対応するものとなっている。
【００４０】
図６は図４および図５に示した第１の実施形態の動作例を示す図である。
【００４１】
図６において、マスター制御装置１０で動作するルーティングプロセス１０２が、外部と仮想インタフェースを介して経路情報を交換し、その結果に基づき決定した経路に基づいてカーネル１００内の経路テーブル１０１に対して経路情報の更新を行うと、カーネル１００は経路同期用プロセス１０３に対して更新した旨の情報を投げる。これを受け取った経路同期用プロセス１０３は、中継装置２０上の経路同期用プロセス２０２にメッセージを送信する（ステップＳ１１）。中継装置２０にて、このメッセージを受信した経路同期用プロセス２０２は、カーネル２００の経路テーブル２０１に経路情報を書き込むことによって、マスター制御装置１０と中継装置２０の間での経路情報の同期を実現する。
【００４２】
なお、マスター制御装置１０と中継装置２０とでは実質的に同じ経路情報を持つものであるが、マスター制御装置１０から見えるルートのインタフェースは仮想インタフェースであるため、インタフェースの名前がマスター制御装置１０と中継装置２０とでは異なることになる。この変換は中継装置２０の経路同期用プロセス２０２において経路情報を更新する際に行われる。変換した結果、例えば中継装置２０から見える宛先Ａというアドレスは実インタフェースeth0の先に存在するものであるが、マスター制御装置１０から見える同じ宛先Ａというアドレスは、仮想インタフェースvif0の先に存在するように見えることになる。
【００４３】
図７は上記のマスター制御装置１０から中継装置２０への経路情報の更新の流れをより詳しく示したものである。すなわち、マスター制御装置１０のルーティングプロセス１０２がカーネル１００の経路テーブル１０１に対して経路情報の更新を行うと（ステップＳ１３）、マスター制御装置１０のカーネル１００は経路情報の更新があった旨のメッセージをマスター制御装置１０の経路同期用プロセス１０３に通知する（ステップＳ１４）。次いで、マスター制御装置１０の経路同期用プロセス１０３は同期を取る対象である中継装置２０の経路同期用プロセス２０２に対して経路情報をＩＰパケットに入れて送信する（ステップＳ１５）。中継装置２０の経路同期用プロセス２０２は同期用のパケットを受信すると、カーネル２００の経路テーブル２０１に更新を行う（ステップＳ１６）。
【００４４】
次いで、図６に戻り、マスター制御装置１０以外のスレーブ制御装置１１、１２は仮想インタフェースに対する経路決定を自らは行わず、その仮想インタフェースに対応する実インタフェースが存在する中継装置２０から経路情報を取得する。すなわち、中継装置２０上で動作する経路同期用プロセス２０２は、マスター制御装置１０の経路同期用プロセス１０３から経路メッセージを受信すると、上述したように自身の経路テーブル２０１をその情報に基づいて更新すると共に、中継装置２０の実インタフェースに対応する仮想インタフェースを持つスレーブ制御装置１１、１２に対し、再度経路メッセージを送信する（ステップＳ１２）。各スレーブ制御装置１１、１２は、それぞれで動作している経路同期用プロセス１１３、１２３により、中継装置２０からの経路メッセージを受信し、自身の仮想インタフェースに対応する経路情報として経路テーブル１１１、１２１に対して登録・更新を行う。
【００４５】
上述した一連の経路テーブルの同期手順は、ルーティングプロセスとは独立して実行されると共に、二つの装置における一対一で閉じた間で行われるため、オリジナルの経路を作成するルーティングプロセスに対して影響を与えることなく、シンプルなシーケンスで動作が可能である。例えば同期手順でエラーが発生した場合、その一対一の間における処理で対処すればよいだけであり、複雑なエラー処理手順を必要としないという利点がある。
【００４６】
次に、図８は本発明の第２の実施形態にかかるネットワーク機器の構成を示す図である。この実施形態では、中継装置が持つ実インタフェースに対応する仮想インタフェースの一部がスレーブ制御装置においてダウンしている（オープンしていない）場合、対応する経路情報をそのスレーブ制御装置に持たせないようにしたものである。すなわち、ダウンしているインタフェースに対応する経路情報はそのスレーブ制御装置で不要であるのみならず、ダウンしているインタフェースに対応する経路情報が制御装置にあると問題が起こる危険がある。つまり、ダウンしているインタフェースに対応するルートに宛ててパケットをカーネルに書き込むと、カーネルは経路テーブルを検索して出力するべきインタフェースの情報を得ることができるために、そのパケットを受け取ってしまう。従ってアプリケーションは正常に送信ができたと認識してしまうが、実際にはそのインタフェースがダウンしているためにパケットの送信ができず異常な状態になってしまう。このため、ダウンしているインタフェースに対応した経路情報は、制御装置の経路テーブルから削除されるべきである。
【００４７】
図８において、中継装置２０には上記の機能を果たすよう、スレーブ制御装置で使用中のインタフェースを管理するスレーブ制御装置管理テーブル２０３を備えた経路同期用プロセス２０２が設けられている。その他の構成は図４と同様である。
【００４８】
ここで、中継装置２０の経路同期用プロセス２０２の機能、すなわち仮想インタフェースのアップ／ダウンを考慮した経路情報の同期を取る機能を列記すると、次のようになる。
（１）制御装置が仮想インタフェースをダウン状態からアップ状態にした時、その制御装置に対して該当する経路情報を送信する。
（２）制御装置が仮想インタフェースをアップ状態からダウン状態にした時、該当する経路情報をその制御装置から削除させる。
（３）制御装置の仮想インタフェースがダウン状態の時、該当する経路情報はその制御装置に送信しない。
【００４９】
図９は図８のネットワーク機器における仮想インタフェースと実インタフェースの対応関係の例を示す図であり、前述したのと同様に、制御装置１０〜１２のカーネル１００、１１０、１２０内に設けられた仮想インタフェースvif0、vif1、vif2、vif3が中継装置２０の実インタフェースeth0、eth1、eth2、eth3に対応するものとなっているが、ここではスレーブ制御装置１２の仮想インタフェースvif3（実インタフェースeth3に対応）がダウンしているものとする。
【００５０】
図１０は図８および図９に示した第２の実施形態の動作例を示す図である。
【００５１】
図１０において、マスター制御装置１０で動作するルーティングプロセス１０２が、外部と仮想インタフェースを介して経路情報を交換し、その結果に基づき決定した経路に基づいてカーネル１００内の経路テーブル１０１に対して経路情報の更新を行うと、カーネル１００は経路同期用プロセス１０３に対して更新した旨の情報を投げる。これを受け取った経路同期用プロセス１０３は、中継装置２０上の経路同期用プロセス２０２にメッセージを送信する（ステップＳ２１）。中継装置２０にて、このメッセージを受信した経路同期用プロセス２０２は、カーネル２００の経路テーブル２０１に経路情報を書き込むことによって、マスター制御装置１０と中継装置２０の間での経路の同期を実現する。
【００５２】
一方、中継装置２０の経路同期用プロセス２０２は、スレーブ制御装置管理テーブル２０３により各スレーブ制御装置１１、１２の使用中のインタフェースを認識し、ダウンしている仮想インタフェース以外の経路情報を送信する（ステップＳ２２）。ここでは、スレーブ制御装置１１の仮想インタフェースはすべて使用中（アップ）であるためスレーブ制御装置１１に対してはすべての経路情報を送信するが、スレーブ制御装置１２は仮想インタフェースvif3がダウンしていることから、スレーブ制御装置１２に対しては仮想インタフェースvif3以外の経路情報を送信する。そして、各スレーブ制御装置１１、１２は、それぞれで動作している経路同期用プロセス１１３、１２３により、中継装置２０からの経路メッセージを受信し、自身の仮想インタフェースに対応する経路情報として経路テーブル１１１、１２１に対して登録・更新を行う。
【００５３】
また、中継装置２０の経路同期用プロセス２０２は、マスター制御装置１０から経路情報を受信しない場合であっても、スレーブ制御装置１１、１２の仮想インタフェースがダウン状態からアップ状態に変化したことを検出した場合、その仮想インタフェースに関する経路情報を該当するスレーブ制御装置に送信し、スレーブ制御装置では経路テーブルに対して登録・更新を行う。更に、仮想インタフェースがアップ状態からダウン状態に変化したことを検出した場合、その仮想インタフェースに関する経路情報を削除させるメッセージを該当するスレーブ制御装置に送信し、スレーブ制御装置では経路テーブルから該当する経路情報を削除する。
【００５４】
図１１は上記の経路情報の更新の流れをより詳しく示したものである。すなわち、マスター制御装置１０のルーティングプロセス１０２がカーネル１００の経路テーブル１０１に対して経路情報の更新を行うと（ステップＳ２３）、マスター制御装置１０のカーネル１００は経路情報の更新があった旨のメッセージをマスター制御装置１０の経路同期用プロセス１０３に通知する（ステップＳ２４）。次いで、マスター制御装置１０の経路同期用プロセス１０３は同期を取る対象である中継装置２０の経路同期用プロセス２０２に対して経路情報をＩＰパケットに入れて送信する（ステップＳ２５）。中継装置２０の経路同期用プロセス２０２は同期用のパケットを受信すると、カーネル２００の経路テーブル２０１に更新を行う（ステップＳ２６）。次いで、中継装置２０の経路同期用プロセス２０２は、スレーブ制御装置管理テーブル２０３を参照し、スレーブ制御装置１１、１２の使用中インタフェースを調べ、未使用（ダウン）となっている仮想インタフェース以外の経路情報を送信する（ステップＳ２７、Ｓ２８）。
【００５５】
図１２は本発明の第３の実施形態にかかるネットワーク機器の構成を示す図である。この実施形態では、マスター制御装置のルーティングプロセスが何らかの原因で正常に動作しなくなった場合に、複数あるスレーブ制御装置の一つで仮想インタフェースに対するルーティングプロセスを動作させ、そのスレーブ制御装置を新たにマスター制御装置とすることで冗長性を確保するようにしている。すなわち、マスター制御装置で動作しているルーティングプロセスが何らかのトラブルでダウンした場合、外部ネットワークのルーティングプロセスとの通信ができなくなるために経路テーブルの更新ができなくなるが、そのような状況を回避するためのものである。
【００５６】
図１２において、中継装置２０には上記の機能を果たすよう、マスター制御装置のルーティングプロセスとの通信が不能になったことを検出した場合に他のスレーブ制御装置の一つに対し新たにルーティングプロセスを起動するメッセージを送信し、ルーティングプロセスが正常に起動したことを認識した場合にそれまでマスター制御装置に向けられていたルーティングプロトコルのパケットの宛先を新たにルーティングプロセスが起動したスレーブ制御装置に切り替える経路管理用プロセス２０４が設けられている。その他の構成は図４および図８と同様である。
【００５７】
図１３および図１４は上記の第３の実施形態の動作例を示す図である。
【００５８】
図１３において、ルーティングプロセス１０２が正常に動作している場合においては、ルーティングプロセス１０２は仮想インタフェースvif0による経路Ｐ１を介して外部のルータと経路情報の交換を行って経路テーブル１０１の更新を行っている。しかし、ルーティングプロセス１０２が何らかの原因で動作しなくなったことを中継装置２０が検出すると、中継装置２０の経路管理用プロセス２０４は、図１４に示すように、例えばスレーブ制御装置１１に新たにルーティングプロセス１１４を起動させ、外部のルータとの経路情報の交換のための経路を今までの経路Ｐ１から経路Ｐ２に切り替える。その後は、マスター制御装置１０をスレーブ制御装置の一つとして扱い、スレーブ制御装置１１をマスタ制御装置として扱って、経路テーブルの同期を行う。
【００５９】
図１５は上記の第３の実施形態におけるマスター制御装置のルーティングプロセスの動作状態を検出する動作を示す図である。
【００６０】
図１５において、中継装置２０のトンネルプロセス２０５は、外部からルーティングプロセス宛のパケットが到着すると（ステップＳ３１）、マスター制御装置１０のトンネルプロセス１０４に対して送信する（ステップＳ３２）。これにより、中継装置２０のトンネルプロセス２０５は、マスター制御装置１０のトンネルプロセス１０４から戻るAckパケット（ステップＳ３７）を待つ状態になる。次いで、マスター制御装置１０のトンネルプロセス１０４は、仮想インタフェースを経由してルーティングプロセス１０２にパケットを送る（ステップＳ３３、Ｓ３４）。ルーティングプロセス１０２は、経路テーブルを更新すると共に、Ackパケットを送信元に戻す（ステップＳ３５、Ｓ３６、Ｓ３７）。
【００６１】
中継装置２０の経路管理用プロセス２０４は、トンネルプロセス２０５がこのAckパケットを所定の時間以内に取得したか否かを監視しており、所定の時間以内に取得した場合にはマスター制御装置１０のルーティングプロセス１０２が正常に動作していることを確認できる。逆に、このAckパケットが、所定の時間以内に戻ってこないことを認識した場合、経路管理用プロセス２０４はマスター制御装置１０のルーティングプロセス１０２が異常終了したものと判断し、他のスレーブ制御装置に対しルーティングプロセスを起動するよう通知し、そのルーティングプロセスが正常に起動した場合、今までのルーティングプロセス宛のトンネルを、新規にルーティングプロセスを起動したスレーブ制御装置に変更する。
【００６２】
次に、図１６は制御装置が独自のルーティングプロセスを有する他の実施形態にかかるネットワーク機器の構成を示す図である。すなわち、マスター制御装置もスレーブ制御装置も、一般に各々自身の実インタフェースを有し、中継装置から委譲されるアプリケーションの代理実行以外の処理におけるパケット送受信を行う必要がある。このとき、自身の実インタフェースについては前述した経路同期用プロセスによらず、自身で経路テーブルを作成する必要がある。
【００６３】
図１６において、中継装置２０の実インタフェースeth0、eth1、eth2、eth3は、マスター制御装置１０およびスレーブ制御装置１１の仮想インタフェースvif0、vif1、vif2、vif3にそれぞれ対応し、実インタフェースeth0、eth1、eth2、eth3はネットワーク３０、３１、３２、３３にそれぞれ接続されているが、スレーブ制御装置１１は他のネットワーク３４に接続される独自の実インタフェースを有している。これに対応し、スレーブ制御装置１１は独自のルーティングプロセス１１６を備えると共に、このルーティングプロセス１１６によって管理される独自の経路テーブル１１５を備えている。この場合、スレーブ制御装置１１のルーティングプロセス１１６は、マスター制御装置１０のルーティングプロセス１０２とは独立して動作し、経路テーブル１１５は独立して管理される。なお、実インタフェースと仮想インタフェースがそれぞれ複数存在する場合、実インタフェースか仮想インタフェースかでインタフェースグループを分けることが望ましい。
【００６４】
図１７はインタフェースのグループ分けの例を示す図である。なお、ここでは図１６と異なり、マスター制御装置１０においても独自の経路テーブル１０５とルーティングプロセス１０６を備えた例を示している。
【００６５】
図１７において、マスター制御装置１０の実インタフェースPIF01、PIF02と仮想インタフェースVIF11、VIF12、VIF13、VIF14、VIF15は別々にグループ分けされ、スレーブ制御装置１１においても、実インタフェースPIF01、PIF02と仮想インタフェースVIF12、VIF13、VIF15は別々にグループ分けされている。また、仮想インタフェースは中継装置２０の実インタフェースPIF11、PIF12、PIF13、PIF14、PIF15とインタフェースマッピングされ、対応付けが行われている。なお、マスター制御装置１０とスレーブ制御装置１１と中継装置２０は、実インタフェースの一つ、例えば実インタフェースPIF01、PIF11、PIF15を介して接続されており、この実インタフェースを介してパケットの転送が行われる。
【００６６】
そして、インタフェースグループ毎に経路テーブルが用意され、仮想インタフェースのグループについては前述した経路同期用プロセス１０３、１１３により経路テーブル１０１、１１１が管理され、実インタフェースのグループについてはルーティングプロセス１０６、１１６による経路制御が行われる。なお、動的な経路制御に代えて静的な経路設定を行うようにしてもよい。
【００６７】
実施の各種形態につき以下に付記する。
（付記１）  外部とのパケット送受信の基点となる中継装置と、アプリケーションが動作する複数の制御装置とからなり、上記制御装置のアプリケーションは上記中継装置の実インタフェースに対応する仮想インタフェースにアクセスし外部に対して単一の機器として振舞うネットワーク機器における経路テーブル同期方法において、
経路テーブルを作成するルーティングプロセスを上記制御装置のうちの一つであるマスター制御装置で実行し、
上記マスター制御装置の経路テーブルに更新があった場合に上記ルーティングプロセスとは独立に動作する経路同期用プロセスによって上記中継装置の経路テーブルを更新し、
上記中継装置を介して上記マスター制御装置以外の制御装置であるスレーブ制御装置の経路テーブルを更新する
ことを特徴とする経路テーブル同期方法。
（付記２）上記スレーブ制御装置の仮想インタフェースがダウンしている場合は当該仮想インタフェースに対応する経路情報を上記スレーブ制御装置に送信せず、
上記スレーブ制御装置の仮想インタフェースがアップからダウンに変わったことを検出した場合は該当する経路情報を経路テーブルから削除するメッセージを上記スレーブ制御装置に送信し、
上記スレーブ制御装置の仮想インタフェースがダウンからアップに変わったことを検出した場合は該当する経路情報を上記スレーブ制御装置に送信する
ことを特徴とする付記１に記載の経路テーブル同期方法。
（付記３）上記マスター制御装置のルーティングプロセスが正常動作しなくなったことを検出した場合に他の上記スレーブ制御装置の一つに対し新たにルーティングプロセスを起動するメッセージを送信し、
上記スレーブ制御装置のルーティングプロセスが正常に起動したことを認識した場合にそれまで上記マスター制御装置に向けられていたルーティング用パケットの宛先を新たにルーティングプロセスが起動した上記スレーブ制御装置に切り替える
ことを特徴とする付記１または２のいずれか一項に記載の経路テーブル同期方法。
（付記４）  外部とのパケット送受信の基点となる中継装置と、アプリケーションが動作する複数の制御装置とからなり、上記制御装置のアプリケーションは上記中継装置の実インタフェースに対応する仮想インタフェースにアクセスし外部に対して単一の機器として振舞うネットワーク機器において、
上記制御装置の一つであるマスター制御装置内にあってパケットを送信するインタフェースを特定するための経路テーブルを作成するルーティング手段と、
上記マスター制御装置内にあって上記ルーティング手段とは独立に動作し、上記マスター制御装置内の経路テーブルに経路の更新があった旨をカーネルから受信したときに上記中継装置に経路情報を通知する第１の経路同期手段と、
上記中継装置内にあって、上記第１の経路同期手段から経路情報の通知を受信したときに上記中継装置内の経路テーブルを更新すると共に、上記マスター制御装置以外の制御装置であるスレーブ制御装置に経路情報を通知する第２の経路同期手段と、
上記スレーブ制御装置内にあって、上記第２の経路同期手段から経路情報の通知を受信したときに上記スレーブ制御装置内の経路テーブルを更新する第３の経路同期手段と
を備えたことを特徴とするネットワーク機器。
（付記５）  上記中継装置内の第２の経路同期手段は、
上記スレーブ制御装置の仮想インタフェースがダウンしている場合は当該仮想インタフェースに対応する経路情報を上記スレーブ制御装置に送信せず、
上記スレーブ制御装置の仮想インタフェースがアップからダウンに変わったことを検出した場合は該当する経路情報を経路テーブルから削除するメッセージを上記スレーブ制御装置に送信し、
上記スレーブ制御装置の仮想インタフェースがダウンからアップに変わったことを検出した場合は該当する経路情報を上記スレーブ制御装置に送信する
ことを特徴とする付記４に記載のネットワーク機器。
（付記６）  上記中継装置は、
上記マスター制御装置のルーティング手段が正常動作しなくなったことを検出した場合に他の上記スレーブ制御装置の一つに対し新たにルーティング手段を起動するメッセージを送信し、
上記スレーブ制御装置のルーティング手段が正常に起動したことを認識した場合にそれまで上記マスター制御装置に向けられていたルーティング用パケットの宛先を新たにルーティング手段が起動した上記スレーブ制御装置に切り替える
ことを特徴とする付記４または５のいずれか一項に記載のネットワーク機器。
（付記７）  外部とのパケット送受信の基点となる中継装置と、アプリケーションが動作する複数の制御装置とからなり、上記制御装置のアプリケーションは上記中継装置の実インタフェースに対応する仮想インタフェースにアクセスし外部に対して単一の機器として振舞うネットワーク機器における経路テーブル同期プログラムにおいて、
経路テーブルを作成するルーティングプロセスを上記制御装置のうちの一つであるマスター制御装置で実行させる機能と、
上記マスター制御装置の経路テーブルに更新があった場合に上記中継装置の経路テーブルを更新する機能と、
上記中継装置の経路テーブルの更新の後に上記マスター制御装置以外の制御装置であるスレーブ制御装置の経路テーブルを更新する機能と
を上記ルーティングプロセスとは独立にコンピュータに実行させることを特徴とする経路テーブル同期プログラム。
（付記８）上記スレーブ制御装置の仮想インタフェースがダウンしている場合は当該仮想インタフェースに対応する経路情報を上記スレーブ制御装置に送信せず、
上記スレーブ制御装置の仮想インタフェースがアップからダウンに変わったことを検出した場合は該当する経路情報を経路テーブルから削除するメッセージを上記スレーブ制御装置に送信し、
上記スレーブ制御装置の仮想インタフェースがダウンからアップに変わったことを検出した場合は該当する経路情報を上記スレーブ制御装置に送信する
ことを特徴とする付記７に記載の経路テーブル同期プログラム。
（付記９）上記マスター制御装置のルーティングプロセスが正常動作しなくなったことを検出した場合に他の上記スレーブ制御装置の一つに対し新たにルーティングプロセスを起動するメッセージを送信し、
上記スレーブ制御装置のルーティングプロセスが正常に起動したことを認識した場合にそれまで上記マスター制御装置に向けられていたルーティング用パケットの宛先を新たにルーティングプロセスが起動した上記スレーブ制御装置に切り替える
ことを特徴とする付記７または８のいずれか一項に記載の経路テーブル同期プログラム。
【図面の簡単な説明】
【００６８】
【図１】単一装置におけるパケットの流れを示す図である。
【図２】経路テーブルの例を示す図である。
【図３】仮想インタフェースを用いて複数の装置で構成したネットワーク機器におけるパケットの流れを示す図である。
【図４】本発明の第１の実施形態にかかるネットワーク機器の構成を示す図である。
【図５】図４のネットワーク機器における仮想インタフェースと実インタフェースの対応関係の例を示す図である。
【図６】第１の実施形態の動作例を示す図である。
【図７】第１の実施形態における経路情報の更新の流れを示す図である。
【図８】本発明の第２の実施形態にかかるネットワーク機器の構成を示す図である。
【図９】図８のネットワーク機器における仮想インタフェースと実インタフェースの対応関係の例を示す図である。
【図１０】第２の実施形態の動作例を示す図である。
【図１１】第２の実施形態における経路情報の更新の流れを示す図である。
【図１２】本発明の第３の実施形態にかかるネットワーク機器の構成を示す図である。
【図１３】第３の実施形態の動作例を示す図（その１）である。
【図１４】第３の実施形態の動作例を示す図（その２）である。
【図１５】第３の実施形態におけるマスター制御装置のルーティングプロセスの動作状態を検出する動作を示す図である。
【図１６】制御装置が独自のルーティングプロセスを有する他の実施形態にかかるネットワーク機器の構成を示す図である。
【図１７】インタフェースのグループ分けの例を示す図である。
【符号の説明】
【００６９】
１０          マスター制御装置
１００        カーネル
１０１        経路テーブル
１０２        ルーティングプロセス
１０３        経路同期用プロセス
１０４        トンネルプロセス
１０５        経路テーブル
１０６        ルーティングプロセス
１１          スレーブ制御装置
１１０        カーネル
１１１        経路テーブル
１１２        ｈｔｔｐサーバ
１１３        経路同期用プロセス
１１４        ルーティングプロセス
１１５        経路テーブル
１１６        ルーティングプロセス
１２          スレーブ制御装置
１２０        カーネル
１２１        経路テーブル
１２２        ｆｔｐサーバ
１２３        経路同期用プロセス
２０          中継装置
２００        カーネル
２０１        経路テーブル
２０２        経路同期用プロセス
２０３        スレーブ制御装置管理テーブル
２０４        経路管理用プロセス
２０５        トンネルプロセス
３０〜３４    ネットワーク
【図１】
0004789425.tif 000002
【図２】
0004789425.tif 000003
【図３】
0004789425.tif 000004
【図４】
0004789425.tif 000005
【図５】
0004789425.tif 000006
【図６】
0004789425.tif 000007
【図７】
0004789425.tif 000008
【図８】
0004789425.tif 000009
【図９】
0004789425.tif 000010
【図１０】
0004789425.tif 000011
【図１１】
0004789425.tif 000012
【図１２】
0004789425.tif 000013
【図１３】
0004789425.tif 000014
【図１４】
0004789425.tif 000015
【図１５】
0004789425.tif 000016
【図１６】
0004789425.tif 000017
【図１７】
0004789425.tif 000018