(57)【要約】【課題】マルチプロセッサ方式にて負荷分散処理を行うゲートウェイの新規な構成と、そのゲートウェイにおける処理方法を提案する。【解決手段】複数のネットワーク９Ａ〜９Ｃに個別に接続される複数の物理終端ドライバ１６Ａ〜１６Ｃと、前記各物理終端ドライバ１６Ａ〜１６Ｃに個別に接続される複数のプロトコルコントローラ１５Ａ〜１５Ｃと、前記各プロトコルコントローラ１５Ａ〜１５Ｃに個別に接続され、複数のＣＰＵ＃０〜＃ｎへの負荷分散処理を行う複数のロードバランサー１４Ａ〜１４Ｃと、前記各ロードバランサーと個別に接続される複数のＣＰＵと、を具備し、前記各ロードバランサーにおいては、前記フレームのフレームＩＤに基づいて、前記ＣＰＵの中からデータ転送処理を実行させるＣＰＵが選定され、前記ＣＰＵにおけるデータ転送処理の負荷分散処理が実行される構成とする。【選択図】図１
2006352236.tif 000002
【特許請求の範囲】
【請求項１】
複数のネットワークに個別に接続され、物理層の終端機能を持つ複数の物理終端ドライバと、
前記各物理終端ドライバに個別に接続され、通信プロトコルの制御処理機能を持つ複数のプロトコルコントローラと、
前記各プロトコルコントローラに個別に接続され、複数のＣＰＵへの負荷分散処理を行う複数のロードバランサーと、
前記各ロードバランサーと接続され、前記各ロードバランサーの負荷分散処理によって割り当てられるデータ転送処理を実行する前記複数のＣＰＵと、を具備し、
前記各ロードバランサーにおいては、前記フレームのフレームＩＤに基づいて、前記ＣＰＵの中からデータ転送処理を実行させるＣＰＵが選定され、前記ＣＰＵにおけるデータ転送処理の負荷分散処理が実行される、ゲートウェイ。
【請求項２】
記各ロードバランサーは、前記各ＣＰＵ側で中継処理待ちとなっているフレームのデータ量から、各ＣＰＵにおける分散処理の偏りの大きさを識別し、分散処理の偏りの大きさが閾値を超えた場合には、前記データ転送処理の優先度に対応するＫｅｙポインタを変更することで、前記ＣＰＵの選定に係るアルゴリズムを変更し、前記分散処理の偏りの大きさを前記閾値よりも小さくすることとする、ことを特徴とする、請求項１に記載のゲートウェイ。
【請求項３】
前記データ転送処理の優先度に対応するＫｅｙポインタの変更は、前記データ転送処理の優先度の低いフレームから順に実行されるものとする、ことを特徴とする、請求項２に記載のゲートウェイ。
【請求項４】
前記各ロードバランサーは、前記各ＣＰＵから受信したフレームを多重処理して前記プロトコルコントローラに送信するに際し、前記データ転送処理の優先度の高いフレームを優先的に先に送信する優先制御を実行することとする、ことを特徴とする、請求項１乃至請求項３のいずれか一項に記載のゲートウェイ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数種類のネットワーク（バス）を中継し、宛先検索処理、スイッチング処理、データ転送、データ転送に伴うプロトコル変換等を司るゲートウェイの構成、及び、ゲートウェイにおけるデータの処理方法に関するものである。
【背景技術】
【０００２】
従来、車載ゲートウェイに関する技術は周知となっており、これについて開示する文献も存在する（例えば、特許文献１参照。）。
これらの文献に開示される車載ゲートウェイは、少なくとも二種類のネットワーク（高速バスライン、低速バスラインなど）の中間に位置し、宛先検索処理、スイッチング処理、データ転送、データ転送に伴うプロトコル変換等を司るものである。
【０００３】
図７は、ゲートウェイ８０と、このゲートウェイ８０にて各ネットワーク９０Ａ〜９０Ｃ間での通信を実現する従来の車載ＬＡＮの一形態について示すものである。
前記ゲートウェイ８０は、ＣＰＵ８１、ＲＯＭ８２、ＲＡＭ８３から構成されるゲートウェイ機能部８４と、前記ＣＰＵ８１とそれぞれ接続されるプロトコルコントローラ８５Ａ〜８５Ｃと、各プロトコルコントローラ８５Ａ〜８５Ｃに接続される物理終端ドライバ８６Ａ〜８６Ｃと、から構成され、前記物理終端ドライバ８６Ａ〜８６Ｃには、それぞれネットワーク９０Ａ〜９０Ｃが接続される。各ネットワーク９０Ａ〜９０Ｃには、ＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ：電子制御装置）９０Ａ−１〜９０Ｃ−３がそれぞれ接続されている。また、前記ゲートウェイ機能部８４においては、ＣＰＵ８１によるソフトウェア処理にて、宛先検索処理、スイッチング処理、データ転送、プロトコル変換、データフィルタリング等のゲートウェイ機能が実施されることとしている。
このような車載ＬＡＮにおいては、前記各ネットワーク９０Ａ〜９０Ｃは、一般に制御系、情報系（ＡＶＣ系）、ボデー系といった機能ごとに分けられており、各ネットワーク９０Ａ〜９０ＣでのＥＣＵ間の通信には、その用途に適した通信プロトコルが採用される。
【０００４】
また、特許文献２においては、複数あるプロトコルに優先順位をつけるとともに、各プロトコルのデータ処理を専用のＣＰＵで行うことにより、データ転送効率の向上を図る技術について提案している。
【特許文献１】特開２００２−１６６１４号公報
【特許文献２】特開平９−８３５６２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、上述のようにソフトウェア処理にてゲートウェイ機能を実施する構成では、一つのＣＰＵにてフレームの宛先検索処理やスイッチング処理等のソフトウェア処理が実行されるため、データの処理量が多くなった場合には、中継フレームがゲートウェイ内に滞留し、データ転送に遅延が生じてしまうことになる。
上述した車載ＬＡＮの場合、特に制御系に関するデータ転送は、安全上等の観点から、他のデータ転送よりも優先して行われるべきものであるが、データ転送の遅延によって、このような重要なデータ転送に障害が生じることになる。
【０００６】
また、このデータ転送の遅延の発生はＣＰＵの処理性能によるところもあるが、今後、ＥＣＵのアプリケーション多様化に伴うプロトコル種別の増加や、ネットワークトポロジーの複雑化、通信データ容量の増加が想定され、さらなるデータ処理効率の向上と、これに伴う品質の確保という課題があり、ＣＰＵの処理性能だけに依存できない状況となることが考えられる。
【０００７】
また、ＣＰＵを複数搭載したマルチプロセッサ方式を採用し、負荷分散処理によって処理効率を向上させることも検討されるが、単純にラウンド・ロビン方式等によって負荷分散処理を行ってしまうと、本来優先させるべきデータ通信が、優先させるべきでないものよりも後に処理される、といった順序の逆転現象が生じることになる。例えば、上述した車載ＬＡＮの形態において、オーディオに関するＥＣＵのデータ通信（情報系）が、安全上優先度の高いエンジンに関するＥＣＵのデータ通信（制御系）よりも先に処理されてしまうといったことである。
【０００８】
また、特許文献２の場合では、プロトコル毎に専用のＣＰＵを備える必要があることから、プロトコル種別の増加に伴ってＣＰＵの数も増加する必要が生じることになり、装置構成の複雑化や、コスト的に不利な状況が生じ得る。
【０００９】
また、図７の構成においてＣＰＵ８１とプロトコル処理部８５Ａ〜８５Ｃの間の内部データのバス通信が低速なシリアル転送で行われる場合には、このことがデータ転送処理性能のボトルネックとなり、上述したプロトコル種別の増加等に対し、高品質な通信の信頼性が確保できなくなるといった問題がある。
【００１０】
そこで、本発明は、上記の問題に鑑み、マルチプロセッサ方式にて負荷分散処理を行うゲートウェイの新規な構成と、そのゲートウェイにおける処理方法を提案するものである。
【課題を解決するための手段】
【００１１】
本発明の解決しようとする課題は以上のごとくであり、次にこの課題を解決するための手段を説明する。
【００１２】
即ち、請求項１に記載のごとく、
複数のネットワークに個別に接続され、物理層の終端機能を持つ複数の物理終端ドライバと、
前記各物理終端ドライバに個別に接続され、通信プロトコルの制御処理機能を持つ複数のプロトコルコントローラと、
前記各プロトコルコントローラに個別に接続され、複数のＣＰＵへの負荷分散処理を行う複数のロードバランサーと、
前記各ロードバランサーと接続され、前記各ロードバランサーの負荷分散処理によって割り当てられるデータ転送処理を実行する前記複数のＣＰＵと、を具備し、
前記各ロードバランサーにおいては、前記フレームのフレームＩＤに基づいて、前記ＣＰＵの中からデータ転送処理を実行させるＣＰＵが選定され、前記ＣＰＵにおけるデータ転送処理の負荷分散処理が実行される、ゲートウェイとする。
【００１３】
また、請求項２に記載のごとく、
前記各ロードバランサーは、前記各ＣＰＵ側で中継処理待ちとなっているフレームのデータ量から、各ＣＰＵにおける分散処理の偏りの大きさを識別し、分散処理の偏りの大きさが閾値を超えた場合には、前記データ転送処理の優先度に対応するＫｅｙポインタを変更することで、前記ＣＰＵの選定に係るアルゴリズムを変更し、前記分散処理の偏りの大きさを前記閾値よりも小さくすることとする。
【００１４】
また、請求項３に記載のごとく、
前記データ転送処理の優先度に対応するＫｅｙポインタの変更は、前記データ転送処理の優先度の低いフレームから順に実行されるものとする。
【００１５】
また、請求項４に記載のごとく、
前記各ロードバランサーは、前記各ＣＰＵから受信したフレームを多重処理して前記プロトコルコントローラに送信するに際し、前記データ転送処理の優先度の高いフレームを優先的に先に送信する優先制御を実行することとする。
【発明の効果】
【００１６】
以上の請求項１に記載の発明では、複数のＣＰＵにて実行されるデータ転送処理の負荷が分散されるため、ＣＰＵ単体の処理性能や、データバスの通信速度のデータ転送速度に対する影響を低減することができ、これらＣＰＵの処理性能やデータバスの通信速度が障害となって生じるデータの輻輳の発生を低減することができる。
また、仮に、単純にＣＰＵの負荷状態に準じて負荷分散を実行させた場合では、例えば、転送処理の優先度の高いフレーム（以下、単に、「高優先フレーム」とする。）が負荷状態の高いＣＰＵにて中継処理待ち状態となった場合に、負荷状態の低いＣＰＵに転送処理の優先度の低いフレーム（以下、単に、「低優先フレーム」とする。）の転送処理が割り当てられた場合には、低優先フレームが、高優先フレームよりも先に転送されるといった順序逆転現象が発生することになるが、本発明では、フレームのフレームＩＤに基づいてデータ転送処理を実行させるＣＰＵを選定することとしているため、この順序逆転現象の発生を防止できることとなる。
【００１７】
また、請求項２に記載の発明では、ロードバランサーにおいて、ＣＰＵへの負荷分散処理の結果を監視して分散処理の偏りを検出し、ＣＰＵの選定に係るアルゴリズム（以下、単に、「分散アルゴリズム」とする。）を変更することで、分散処理の偏りを回避することができ、負荷分散の効率を保つことができる。これにより、高品質な通信の確保と、信頼性の向上を図ることができる。
【００１８】
また、請求項３に記載の発明では、低優先フレームに関して分散アルゴリズムを変更さることで分散処理の偏りを回避させることによれば、高優先フレームに関しては、特定のＣＰＵにて処理を継続させることができ、高優先フレームに関する順序逆転現象の発生を防止できる。これにより、高品質な通信の確保と、信頼性の向上を図ることができる。
【００１９】
また、請求項４に記載の発明では、高優先フレームが優先的に先に出力される、即ち、データ転送処理の優先度の高いフレームから順にネットワークへと出力されることになるので、高品質な通信の確保と、信頼性の向上を図ることができる。
【発明を実施するための最良の形態】
【００２０】
図１に示すごとく、本発明にかかるゲートウェイ１は、
複数のネットワーク９Ａ〜９Ｃに個別に接続され、物理層の終端機能を持つ複数の物理終端ドライバ１６Ａ〜１６Ｃと、
前記各物理終端ドライバ１６Ａ〜１６Ｃに個別に接続され、通信プロトコルの制御処理機能を持つ複数のプロトコルコントローラ１５Ａ〜１５Ｃと、
前記各プロトコルコントローラ１５Ａ〜１５Ｃに個別に接続され、複数のＣＰＵ＃０〜＃ｎへの負荷分散処理を行う複数のロードバランサー１４Ａ〜１４Ｃと、
前記各ロードバランサー１４Ａ〜１４Ｃと接続され、前記各ロードバランサー１４Ａ〜１４Ｃの負荷分散処理によって割り当てられるデータ転送処理を実行する前記複数のＣＰＵ＃０〜＃ｎと、を具備し、
前記各ロードバランサー１４Ａ〜１４Ｃにおいては、前記フレームのフレームＩＤに基づいて、前記ＣＰＵ＃０〜＃ｎの中からデータ転送処理を実行させるＣＰＵ＃０〜＃ｎが選定され、前記ＣＰＵ＃０〜＃ｎにおけるデータ転送処理の負荷分散処理が実行される構成とするものである。
【００２１】
この構成では、複数のＣＰＵ＃０〜＃ｎにて実行されるデータ転送処理の負荷が分散されるため、ＣＰＵ単体の処理性能や、データバスの通信速度のデータ転送速度に対する影響を低減することができ、これらＣＰＵの処理性能やデータバスの通信速度が障害となって生じるデータの輻輳の発生を低減することができる。
また、仮に、単純にＣＰＵ＃０〜＃ｎの負荷状態に準じて負荷分散を実行させた場合では、例えば、転送処理の優先度の高いフレーム（以下、単に、「高優先フレーム」とする。）が負荷状態の高いＣＰＵにて中継処理待ち状態となった場合に、負荷状態の低いＣＰＵに転送処理の優先度の低いフレーム（以下、単に、「低優先フレーム」とする。）の転送処理が割り当てられた場合には、低優先フレームが、高優先フレームよりも先に転送されるといった順序逆転現象が発生することになるが、本発明では、フレームのフレームＩＤに基づいてデータ転送処理を実行させるＣＰＵ＃０〜＃ｎを選定することとしているため、この順序逆転現象の発生を防止できることとなる。
【００２２】
また、前記各ロードバランサー１４Ａ〜１４Ｃは、前記各ＣＰＵ＃０〜＃ｎ側で中継処理待ちとなっているフレームのデータ量（例えば、フレーム数）から、各ＣＰＵ＃０〜＃ｎにおける分散処理の偏りの大きさを識別し、分散処理の偏りの大きさが閾値を超えた場合には、前記データ転送処理の優先度に対応するＫｅｙポインタを変更することで、分散アルゴリズムを変更し、前記分散処理の偏りの大きさを前記閾値よりも小さくすることとする。
【００２３】
このように、ロードバランサー１４Ａ〜１４Ｃにおいて、ＣＰＵ＃０〜＃ｎへの負荷分散処理の結果を監視して分散処理の偏りを検出し、分散アルゴリズムを変更することで、分散処理の偏りを回避することができ、負荷分散の効率を保つことができる。これにより、高品質な通信の確保と、信頼性の向上を図ることができる。
【００２４】
また、前記データ転送処理の優先度に対応するＫｅｙポインタの変更は、前記データ転送処理の優先度の低いフレームから順に実行されるものとする。
【００２５】
このように、低優先フレームに関して分散アルゴリズムを変更さることで分散処理の偏りを回避させることによれば、高優先フレームに関しては、特定のＣＰＵにて処理を継続させることができ、高優先フレームに関する順序逆転現象の発生を防止できる。これにより、高品質な通信の確保と、信頼性の向上を図ることができる。
【００２６】
また、前記各ロードバランサー１４Ａ〜１４Ｃは、前記各ＣＰＵ＃０〜＃ｎから受信したフレームを多重処理して前記プロトコルコントローラ１５Ａ〜１５Ｃに送信するに際し、前記データ転送処理の優先度の高いフレームを優先的に先に送信する優先制御を実行することとする。
【００２７】
これによれば、高優先フレームが優先的に先に出力される、即ち、データ転送処理の優先度の高いフレームから順にネットワークへと出力されることになるので、高品質な通信の確保と、信頼性の向上を図ることができる。
【００２８】
以下、図１に示すゲートウェイ１を構成する各部の機能の詳細について説明する。
＜物理終端ドライバ＞
物理終端ドライバ１６Ａ〜１６Ｃは、各ネットワーク９Ａ〜９Ｃに対する物理層の終端機能を持つものである。また、各ネットワーク９Ａ〜９Ｃには、ＥＣＵ９Ａ−１〜９Ｃ−１が接続されており、これらＥＣＵ９Ａ−１〜９Ｃ−１の間の通信がゲートウェイ１にて中継されるようになっている。この物理終端ドライバ１６Ａ〜１６Ｃは、従来の一般的な構成にて実現される。
【００２９】
＜プロトコルコントローラ＞
プロトコルコントローラ１５Ａ〜１５Ｃは、ＣＡＮ・ＢＥＡＮ・ＬＩＮ等の通信プロトコルの制御処理機能を持つものであり、デジタル信号のデコード／エンコードや、フレーム生成等の解析処理を行う。各プロトコルコントローラ１５Ａ〜１５Ｃは、前記物理終端ドライバ１６Ａ〜１６Ｃと個別に接続される。また、このプロトコルコントローラ１５Ａ〜１５Ｃは、従来の一般的な構成にて実現される。
【００３０】
＜ＣＰＵ＞
各ＣＰＵ＃０〜＃ｎは、複数のロードバランサー１４Ａ〜１４Ｃに対し、それぞれ内部データバスにより接続されている（例えば、ＣＰＵ＃０は、ロードバランサー１４Ａ〜１４Ｃに対して接続されている）。また、各ＣＰＵ＃０〜＃ｎには、それぞれＲＡＭ８＃０〜８＃ｎ、ＲＯＭ９＃０〜９＃ｎが接続されている構成としている。尚、複数のＣＰＵにてＲＡＭ／ＲＯＭを共有する構成としてもよい。
このようにして、ＣＰＵを複数搭載したマルチプロセッサ方式のゲートウェイ１が構成されるようになっている。
【００３１】
＜ロードバランサー＞
（１）負荷分散処理機能
ロードバランサー１４Ａ〜１４Ｃでは、前記プロトコルコントローラ１５Ａ〜１５Ｃから受信されるフレームのフレームＩＤに基づいてＣＰＵ＃０〜＃ｎの負荷分散処理が実行されるものである。ここで、前記フレームＩＤ３１は、各ネットワーク９Ａ〜９Ｃに接続されるＥＣＵ９Ａ−１〜９Ｃ−１（図１参照）からそれぞれ送信されるフレームに付されている情報であり、以下に説明するように、当該フレームＩＤを基に、各フレームの分散Ｋｅｙが演算されることとしている。
【００３２】
この負荷分散処理においては、ＣＰＵの選定が行われるものであり、このＣＰＵの選定に係るアルゴリズムを図２に示す。
まず、前記フレームＩＤに対応する分散Ｋｅｙが演算により設定される（Ｓ２１）。
前記分散Ｋｅｙは、各ロードバランサー１４Ａ〜１４Ｃにおいて、前記フレームＩＤから演算により求められるものである。この演算は、図３に示すごとく、例えば、フレームＩＤを４ビットごとに加算し、桁上げしない４ビットを分散Ｋｅｙとして求めるものであり、この例では、フレームＩＤ＝ｂａｄ（ｈ）の場合に、分散Ｋｅｙ＝００１０（ｂ）として求められることとなっている。
この分散Ｋｅｙは、以下に述べるように、ＫｅｙポインタとともにＣＰＵの選定の際に基準となるものである（Ｋｅｙポインタによって参照されるものである）。また、前記フレームＩＤが同じであれば常に同一に設定されるものであり、このフレームＩＤと分散Ｋｅｙの対応が実現できるのであれば、分散Ｋｅｙを求める処理については特に限定されるものではない（上記の４ビット分割和の形態に限定されるものではない）。
【００３３】
そして、図２に示すごとく、前記分散Ｋｅｙの演算後、データ転送処理の優先度に従い（Ｓ２２）、Ｋｅｙポインタの設定が行われる（Ｓ２３＃０〜Ｓ２３＃ｎ）。
ここで、前記データ転送処理の優先度は、各ロードバランサー１４Ａ〜１４Ｃにおいて、各ネットワーク９Ａ〜９Ｃの通信プロトコルごとに設定されるものであり、例えば、車載ＬＡＮの例では、安全性に関連する通信（車体の制動制御等）の通信プロトコルについて優先度が高く設定されることとなる。
図２の例では、優先度が０〜ｎの段階で設定されるようになっており、各優先度の数値に従ってＫｅｙポインタ（Ｋｅｙ−ＰＴＲ）の数値（０〜ｎ）が設定されるようにしている。
【００３４】
以上のように、優先度に基づいてＫｅｙポインタを求め、図３に示すごとく、当該Ｋｅｙポインタと前記分散Ｋｅｙから、データ転送処理を実行させるＣＰＵの選定が行われる（図２のＳ２４）。
図３の例では、Ｋｅｙポインタ＝２とする場合であり、分散Ｋｅｙの４ビットの内の先頭から２番目（Ｋｅｙポインタ＝２）のビット「０」であるため、ＣＰＵ＃０が選択される例を示している（ＣＰＵ分散方路としてＣＰＵ＃０が選択される）。
【００３５】
そして、図２に示すごとく、上述したＣＰＵの選定後（Ｓ２４）、選定されたＣＰＵにて転送処理が実行される（Ｓ２７、Ｓ２８）。
【００３６】
以上のように、前記各ロードバランサー１４Ａ〜１４Ｃにおいては、前記フレームのフレームＩＤに対応する分散Ｋｅｙの設定、前記フレームの通信プロトコルに対応するデータ転送処理の優先度の設定、及び、前記優先度に対応するＫｅｙポインタの設定がなされ、前記分散Ｋｅｙ、及び、前記Ｋｅｙポインタに基づいて、前記ＣＰＵ＃０〜＃ｎの中からデータ転送処理を実行させるＣＰＵ＃０〜＃ｎが選定され、前記ＣＰＵ＃０〜＃ｎにおけるデータ転送処理の負荷分散処理が実行される構成とするものである。
【００３７】
そして、以上のようにＣＰＵを選定し、複数のＣＰＵ＃０〜＃ｎにて実行されるデータ転送処理の負荷を分散させることで、ＣＰＵ単体の処理性能や、データバスの通信速度のデータ転送速度に対する影響を低減することができ、これらＣＰＵの処理性能やデータバスの通信速度が障害となって生じるデータの輻輳の発生を低減することができる。
【００３８】
また、仮に、単純にＣＰＵ＃０〜＃ｎの負荷状態に準じて負荷分散処理を実行させると、例えば、高優先フレームが負荷状態の高いＣＰＵにて中継処理待ち状態となった場合に、負荷状態の低いＣＰＵに低優先フレームの転送処理が割り当てられた場合には、低優先フレームが、高優先フレームよりも先に転送されるといった順序逆転現象が発生することになるが、本発明では、フレームのフレームＩＤに基づいてデータ転送処理を実行させるＣＰＵ＃０〜＃ｎを選定することとしているため、この順序逆転現象の発生を防止できることとなる。
【００３９】
尚、図３を用いて説明したＣＰＵの選定に係るアルゴリズム（分散アルゴリズム）は、あくまでも一例であり、フレームＩＤに基づく分散Ｋｅｙの演算方法や、データ転送処理の優先度とＫｅｙポインタの対応関係（優先度＝Ｋｅｙポインタ）については、他の演算方法や対応関係を採用してもよい。
また、以上の例では、データ転送処理の優先度は、各ネットワーク９Ａ〜９Ｃの通信プロトコルごとに設定されることとしたが、この他、フレームＩＤに基づいて前記優先度が決定されるものとしてもよい。例えば、フレームＩＤと優先度を関連付けたテーブルを設け、フレームＩＤから優先度を参照する構成が考えられる。
さらに、フレームＩＤについて、分散Ｋｅｙ、優先度、Ｋｅｙポインタを関連付けたテーブルを設け、このテーブルを参照してＣＰＵを選定することとしてもよい。この場合は、後述する負荷分散の偏りの発生に備え、Ｋｅｙポインタを動的に変更する機能を備える必要がある。
以上のいずれの形態を採用してもよく、いずれにしても、フレームＩＤに基づいてＣＰＵが選定されることとするものである。
【００４０】
（２）負荷分散の偏りを解消する機能〜分散アルゴリズムの変更
次に、各ＣＰＵ＃０〜＃ｎに対する負荷分散の偏りが生じた場合に、偏りを解消する溜めの機能について説明する。
前記各ロードバランサー１４Ａ〜１４Ｃは、前記各ＣＰＵ＃０〜＃ｎ側で中継処理待ちとなっているフレームのデータ量（例えば、フレーム数）から、各ＣＰＵ＃０〜＃ｎに対する負荷分散の偏りの大きさを識別し、負荷分散の偏りの大きさが閾値を超えた場合には、前記データ転送処理の優先度に対応するＫｅｙポインタを変更することで、前記ＣＰＵ＃０〜＃ｎの選定に係るアルゴリズムを変更し、前記負荷分散の偏りの大きさを前記閾値よりも小さくし、偏りを解消することとするものである。
【００４１】
前記各ロードバランサー１４Ａ〜１４Ｃは、フレームの種別を識別する機能を有している。ここでいうフレームの種別は二種類あって、一つは、ネットワーク９Ａ〜９Ｃから入力されて、ゲートウェイ１にて中継され、再びネットワーク９Ａ〜９Ｃへと出力されるフレームであり、この種のフレームを中継フレームとする。もう一つは、ゲートウェイ１内にて生成され、ネットワーク９Ａ〜９Ｃへと出力されるフレーム、又は、ネットワーク９Ａ〜９Ｃから入力されてゲートウェイ１内に収容されるフレームであり、この種のフレームを自発着フレームとする。
【００４２】
そして、図２に示すごとく、各ロードバランサー１４Ａ〜１４Ｃは、ＣＰＵの選定後（Ｓ２４）、フレームの転送処理に移る前に、転送するフレームが中継フレームであるか、自発着フレームであるかの判別を行う（Ｓ２５）。
ここで、フレームが中継フレームである場合には、中継カウンタのカウント値を一つ増やし、記憶することとする（Ｓ２６）。このカウント値の増加後、転送処理に移られる（Ｓ２７）。このように、各ロードバランサー１４Ａ〜１４Ｃには、この中継カウンタが実装されることとしている。
一方、フレームが自発着フレームである場合には、前記中継カウンタのカウント値は増やさずに転送処理へと移る（Ｓ２８）。
【００４３】
また、図４に示すごとく、各ロードバランサー１４Ａ〜１４Ｃは、各ＣＰＵ＃０〜＃ｎから各ロードバランサー１４Ａ〜１４Ｃへと転送されるフレームの多重処理に移る前に、転送するフレームが中継フレームであるか、自発着フレームであるかの判別を行う（Ｓ４１）。
ここで、フレームが中継フレームである場合には、前記中継カウンタのカウント値を一つ減らし、記憶することとする（Ｓ４２）。このカウント値の減少後、多重処理に移られる（Ｓ４３）。
一方、フレームが自発着フレームである場合には、前記中継カウンタのカウント値は減らさずに多重処理に移る（Ｓ４４）。
【００４４】
そして、以上のようにして転送するフレームの数（フレーム数）を中継カウンタにてカウントすることによれば、前記各ＣＰＵ＃０〜＃ｎ側で中継処理待ちとなっているフレームのデータ量を認識することができ、各ＣＰＵ＃０〜＃ｎに対する負荷分散の偏りの大きさを識別することができる。
つまり、中継処理待ちが発生していない場合には、中継フレームが中継されることでカウント値がプラスマイナスゼロとなってカウント値が増加することにはならないが、中継処理待ちが発生している場合には、カウント値の減少がなされずに（図４のＳ４２）、カウント値が増加することになるため（図２の２６）、このことをもってして中継処理待ち、即ち、負荷分散の偏りを識別することとするものである。このように、中継カウンタのカウント値によって負荷分散の偏りを識別することができる。
【００４５】
尚、以上の例では、転送するフレームの数をカウントして中継処理待ちのフレームのデータ量を認識することとしたが、フレームのバイト数によってデータ量を認識することとしてもよく、この場合は、フレーム長をカウントする回路を実装する必要がある。
【００４６】
そして、図５に示すごとく、負荷分散の偏りが生じた場合には、前記Ｋｅｙポインタを変更する、即ち、分散アルゴリズムを変更することにより、偏りの解消を図ることとするものである。また、このＫｅｙポインタの変更は、前記データ転送処理の優先度の低いものから順に実行されるものとする。
【００４７】
図５に示すごとく、各ロードバランサー１４Ａ〜１４Ｃにおいては、前記中継カウンタにてカウント値を記憶しておき、当該カウント値が閾値を超えた場合には（Ｓ５１）、例えば、Ｋｅｙポインタを一つ増やす等して、前記Ｋｅｙポインタを変更（更新）する（Ｓ５２）。
また、各ロードバランサー１４Ａ〜１４Ｃには、更新カウンタが実装されており、前記Ｋｅｙポインタの変更回数（更新回数）がカウントされるようになっている（Ｓ５３）。
そして、前記Ｋｅｙポインタの変更（Ｓ５２）により、前記中継カウンタのカウント値が閾値が小さくなった場合には、処理が終了される。
【００４８】
一方、Ｋｅｙポインタの一度変更したにもかかわらず、中継カウンタのカウント値が閾値よりも小さくならない場合には、さらなるＫｅｙポインタの変更を行う。この変更回数を前記更新カウンタによりカウントし（Ｓ５３）、このカウント値が閾値（本実施例では四回）を超えた場合には（Ｓ５４）、優先度の一つ高いフレームのＫｅｙポインタの変更を行う（Ｓ５５）。そして、前記更新カウンタのカウントをクリアする（Ｓ５６）。
【００４９】
以上のように、ロードバランサー１４Ａ〜１４Ｃにおいて、ＣＰＵ＃０〜＃ｎへの負荷分散処理の結果を監視して負荷分散の偏りを検出し、分散アルゴリズムを変更することで、負荷分散の偏りを回避することができ、負荷分散の効率を保つことができる。
また、低優先フレームに関して分散アルゴリズムを変更さることで負荷分散の偏りを回避させることによれば、高優先フレームに関しては、特定のＣＰＵにて処理を継続させることができ、高優先フレームに関する順序逆転現象の発生を防止できる。
そして、以上により、高品質な通信の確保と、信頼性の向上を図ることができる。
【００５０】
（３）フレームの多重処理〜優先制御
次に、各ロードバランサー１４Ａ〜１４Ｃにおける多重処理に関し、データ転送処理の優先度の高いフレームを優先的に先に出力する機能について説明する。
これは、前記各ロードバランサー１４Ａ〜１４Ｃにおいて、前記各ＣＰＵ＃０〜＃ｎから受信したフレームを多重処理して前記プロトコルコントローラ１５Ａ〜１５Ｃに送信するに際し、前記データ転送処理の優先度の高いフレームを優先的に先に送信する優先制御を実行することとするものである。
【００５１】
この優先制御は、図６に示すごとくのキュー（Ｑｕｅｕｅ）の構成にて実現される。
即ち、ＣＰＵ＃０〜＃ｎの間ではラウンド・ロビン方式（ＲＲ）にて調停を図り、優先度間ではストリクト・プライオリティ方式（ＳＰ）で調停を図ることとするものである。
これによれば、高優先フレームが優先的に先に出力される、即ち、データ転送処理の優先度の高いフレームから順にネットワークへと出力されることになるので、高品質な通信の確保と、信頼性の向上を図ることができる。
尚、ここでいう優先度は、上述した負荷分散処理において利用される優先度と同一のものであり、これにより、ロードバランサー１４Ａ〜１４Ｃにおいて輻輳状態が発生した場合においても、高優先フレームを先に出力する優先制御が可能となるものである。
【図面の簡単な説明】
【００５２】
【図１】本発明に係るゲートウェイの構成について示す機能ブロック図。
【図２】負荷分散処理のフローチャートについて示す図。
【図３】ＣＰＵを選定する分散アルゴリズムの例について示す図。
【図４】ロードバランサーにおけるフレーム出力のフローチャートについて示す図。
【図５】分散アルゴリズムを変更するフローチャートについて示す図。
【図６】優先制御を実行するキューの構成について示す図。
【図７】従来のゲートウェイの構成について示す機能ブロック図。
【符号の説明】
【００５３】
１      ゲートウェイ
９Ａ〜９Ｃ  ネットワーク
＃０    ＣＰＵ
１４Ａ〜１４Ｃ    ロードバランサー
１５Ａ〜１５Ｃ    プロトコルコントローラ
１６Ａ〜１６Ｃ    物理終端ドライバ
【図１】
2006352236.tif 000003
【図２】
2006352236.tif 000004
【図３】
2006352236.tif 000005
【図４】
2006352236.tif 000006
【図５】
2006352236.tif 000007
【図６】
2006352236.tif 000008
【図７】
2006352236.tif 000009