JP2006352236A - ゲートウェイ - Google Patents
ゲートウェイ Download PDFInfo
- Publication number
- JP2006352236A JP2006352236A JP2005172300A JP2005172300A JP2006352236A JP 2006352236 A JP2006352236 A JP 2006352236A JP 2005172300 A JP2005172300 A JP 2005172300A JP 2005172300 A JP2005172300 A JP 2005172300A JP 2006352236 A JP2006352236 A JP 2006352236A
- Authority
- JP
- Japan
- Prior art keywords
- frame
- processing
- data transfer
- load
- priority
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Small-Scale Networks (AREA)
- Communication Control (AREA)
Abstract
【課題】マルチプロセッサ方式にて負荷分散処理を行うゲートウェイの新規な構成と、そのゲートウェイにおける処理方法を提案する。
【解決手段】複数のネットワーク9A〜9Cに個別に接続される複数の物理終端ドライバ16A〜16Cと、前記各物理終端ドライバ16A〜16Cに個別に接続される複数のプロトコルコントローラ15A〜15Cと、前記各プロトコルコントローラ15A〜15Cに個別に接続され、複数のCPU#0〜#nへの負荷分散処理を行う複数のロードバランサー14A〜14Cと、前記各ロードバランサーと個別に接続される複数のCPUと、を具備し、前記各ロードバランサーにおいては、前記フレームのフレームIDに基づいて、前記CPUの中からデータ転送処理を実行させるCPUが選定され、前記CPUにおけるデータ転送処理の負荷分散処理が実行される構成とする。
【選択図】図1
【解決手段】複数のネットワーク9A〜9Cに個別に接続される複数の物理終端ドライバ16A〜16Cと、前記各物理終端ドライバ16A〜16Cに個別に接続される複数のプロトコルコントローラ15A〜15Cと、前記各プロトコルコントローラ15A〜15Cに個別に接続され、複数のCPU#0〜#nへの負荷分散処理を行う複数のロードバランサー14A〜14Cと、前記各ロードバランサーと個別に接続される複数のCPUと、を具備し、前記各ロードバランサーにおいては、前記フレームのフレームIDに基づいて、前記CPUの中からデータ転送処理を実行させるCPUが選定され、前記CPUにおけるデータ転送処理の負荷分散処理が実行される構成とする。
【選択図】図1
Description
本発明は、複数種類のネットワーク(バス)を中継し、宛先検索処理、スイッチング処理、データ転送、データ転送に伴うプロトコル変換等を司るゲートウェイの構成、及び、ゲートウェイにおけるデータの処理方法に関するものである。
従来、車載ゲートウェイに関する技術は周知となっており、これについて開示する文献も存在する(例えば、特許文献1参照。)。
これらの文献に開示される車載ゲートウェイは、少なくとも二種類のネットワーク(高速バスライン、低速バスラインなど)の中間に位置し、宛先検索処理、スイッチング処理、データ転送、データ転送に伴うプロトコル変換等を司るものである。
これらの文献に開示される車載ゲートウェイは、少なくとも二種類のネットワーク(高速バスライン、低速バスラインなど)の中間に位置し、宛先検索処理、スイッチング処理、データ転送、データ転送に伴うプロトコル変換等を司るものである。
図7は、ゲートウェイ80と、このゲートウェイ80にて各ネットワーク90A〜90C間での通信を実現する従来の車載LANの一形態について示すものである。
前記ゲートウェイ80は、CPU81、ROM82、RAM83から構成されるゲートウェイ機能部84と、前記CPU81とそれぞれ接続されるプロトコルコントローラ85A〜85Cと、各プロトコルコントローラ85A〜85Cに接続される物理終端ドライバ86A〜86Cと、から構成され、前記物理終端ドライバ86A〜86Cには、それぞれネットワーク90A〜90Cが接続される。各ネットワーク90A〜90Cには、ECU(Electronic Control Unit:電子制御装置)90A−1〜90C−3がそれぞれ接続されている。また、前記ゲートウェイ機能部84においては、CPU81によるソフトウェア処理にて、宛先検索処理、スイッチング処理、データ転送、プロトコル変換、データフィルタリング等のゲートウェイ機能が実施されることとしている。
このような車載LANにおいては、前記各ネットワーク90A〜90Cは、一般に制御系、情報系(AVC系)、ボデー系といった機能ごとに分けられており、各ネットワーク90A〜90CでのECU間の通信には、その用途に適した通信プロトコルが採用される。
前記ゲートウェイ80は、CPU81、ROM82、RAM83から構成されるゲートウェイ機能部84と、前記CPU81とそれぞれ接続されるプロトコルコントローラ85A〜85Cと、各プロトコルコントローラ85A〜85Cに接続される物理終端ドライバ86A〜86Cと、から構成され、前記物理終端ドライバ86A〜86Cには、それぞれネットワーク90A〜90Cが接続される。各ネットワーク90A〜90Cには、ECU(Electronic Control Unit:電子制御装置)90A−1〜90C−3がそれぞれ接続されている。また、前記ゲートウェイ機能部84においては、CPU81によるソフトウェア処理にて、宛先検索処理、スイッチング処理、データ転送、プロトコル変換、データフィルタリング等のゲートウェイ機能が実施されることとしている。
このような車載LANにおいては、前記各ネットワーク90A〜90Cは、一般に制御系、情報系(AVC系)、ボデー系といった機能ごとに分けられており、各ネットワーク90A〜90CでのECU間の通信には、その用途に適した通信プロトコルが採用される。
また、特許文献2においては、複数あるプロトコルに優先順位をつけるとともに、各プロトコルのデータ処理を専用のCPUで行うことにより、データ転送効率の向上を図る技術について提案している。
特開2002−16614号公報
特開平9−83562号公報
しかし、上述のようにソフトウェア処理にてゲートウェイ機能を実施する構成では、一つのCPUにてフレームの宛先検索処理やスイッチング処理等のソフトウェア処理が実行されるため、データの処理量が多くなった場合には、中継フレームがゲートウェイ内に滞留し、データ転送に遅延が生じてしまうことになる。
上述した車載LANの場合、特に制御系に関するデータ転送は、安全上等の観点から、他のデータ転送よりも優先して行われるべきものであるが、データ転送の遅延によって、このような重要なデータ転送に障害が生じることになる。
上述した車載LANの場合、特に制御系に関するデータ転送は、安全上等の観点から、他のデータ転送よりも優先して行われるべきものであるが、データ転送の遅延によって、このような重要なデータ転送に障害が生じることになる。
また、このデータ転送の遅延の発生はCPUの処理性能によるところもあるが、今後、ECUのアプリケーション多様化に伴うプロトコル種別の増加や、ネットワークトポロジーの複雑化、通信データ容量の増加が想定され、さらなるデータ処理効率の向上と、これに伴う品質の確保という課題があり、CPUの処理性能だけに依存できない状況となることが考えられる。
また、CPUを複数搭載したマルチプロセッサ方式を採用し、負荷分散処理によって処理効率を向上させることも検討されるが、単純にラウンド・ロビン方式等によって負荷分散処理を行ってしまうと、本来優先させるべきデータ通信が、優先させるべきでないものよりも後に処理される、といった順序の逆転現象が生じることになる。例えば、上述した車載LANの形態において、オーディオに関するECUのデータ通信(情報系)が、安全上優先度の高いエンジンに関するECUのデータ通信(制御系)よりも先に処理されてしまうといったことである。
また、特許文献2の場合では、プロトコル毎に専用のCPUを備える必要があることから、プロトコル種別の増加に伴ってCPUの数も増加する必要が生じることになり、装置構成の複雑化や、コスト的に不利な状況が生じ得る。
また、図7の構成においてCPU81とプロトコル処理部85A〜85Cの間の内部データのバス通信が低速なシリアル転送で行われる場合には、このことがデータ転送処理性能のボトルネックとなり、上述したプロトコル種別の増加等に対し、高品質な通信の信頼性が確保できなくなるといった問題がある。
そこで、本発明は、上記の問題に鑑み、マルチプロセッサ方式にて負荷分散処理を行うゲートウェイの新規な構成と、そのゲートウェイにおける処理方法を提案するものである。
本発明の解決しようとする課題は以上のごとくであり、次にこの課題を解決するための手段を説明する。
即ち、請求項1に記載のごとく、
複数のネットワークに個別に接続され、物理層の終端機能を持つ複数の物理終端ドライバと、
前記各物理終端ドライバに個別に接続され、通信プロトコルの制御処理機能を持つ複数のプロトコルコントローラと、
前記各プロトコルコントローラに個別に接続され、複数のCPUへの負荷分散処理を行う複数のロードバランサーと、
前記各ロードバランサーと接続され、前記各ロードバランサーの負荷分散処理によって割り当てられるデータ転送処理を実行する前記複数のCPUと、を具備し、
前記各ロードバランサーにおいては、前記フレームのフレームIDに基づいて、前記CPUの中からデータ転送処理を実行させるCPUが選定され、前記CPUにおけるデータ転送処理の負荷分散処理が実行される、ゲートウェイとする。
複数のネットワークに個別に接続され、物理層の終端機能を持つ複数の物理終端ドライバと、
前記各物理終端ドライバに個別に接続され、通信プロトコルの制御処理機能を持つ複数のプロトコルコントローラと、
前記各プロトコルコントローラに個別に接続され、複数のCPUへの負荷分散処理を行う複数のロードバランサーと、
前記各ロードバランサーと接続され、前記各ロードバランサーの負荷分散処理によって割り当てられるデータ転送処理を実行する前記複数のCPUと、を具備し、
前記各ロードバランサーにおいては、前記フレームのフレームIDに基づいて、前記CPUの中からデータ転送処理を実行させるCPUが選定され、前記CPUにおけるデータ転送処理の負荷分散処理が実行される、ゲートウェイとする。
また、請求項2に記載のごとく、
前記各ロードバランサーは、前記各CPU側で中継処理待ちとなっているフレームのデータ量から、各CPUにおける分散処理の偏りの大きさを識別し、分散処理の偏りの大きさが閾値を超えた場合には、前記データ転送処理の優先度に対応するKeyポインタを変更することで、前記CPUの選定に係るアルゴリズムを変更し、前記分散処理の偏りの大きさを前記閾値よりも小さくすることとする。
前記各ロードバランサーは、前記各CPU側で中継処理待ちとなっているフレームのデータ量から、各CPUにおける分散処理の偏りの大きさを識別し、分散処理の偏りの大きさが閾値を超えた場合には、前記データ転送処理の優先度に対応するKeyポインタを変更することで、前記CPUの選定に係るアルゴリズムを変更し、前記分散処理の偏りの大きさを前記閾値よりも小さくすることとする。
また、請求項3に記載のごとく、
前記データ転送処理の優先度に対応するKeyポインタの変更は、前記データ転送処理の優先度の低いフレームから順に実行されるものとする。
前記データ転送処理の優先度に対応するKeyポインタの変更は、前記データ転送処理の優先度の低いフレームから順に実行されるものとする。
また、請求項4に記載のごとく、
前記各ロードバランサーは、前記各CPUから受信したフレームを多重処理して前記プロトコルコントローラに送信するに際し、前記データ転送処理の優先度の高いフレームを優先的に先に送信する優先制御を実行することとする。
前記各ロードバランサーは、前記各CPUから受信したフレームを多重処理して前記プロトコルコントローラに送信するに際し、前記データ転送処理の優先度の高いフレームを優先的に先に送信する優先制御を実行することとする。
以上の請求項1に記載の発明では、複数のCPUにて実行されるデータ転送処理の負荷が分散されるため、CPU単体の処理性能や、データバスの通信速度のデータ転送速度に対する影響を低減することができ、これらCPUの処理性能やデータバスの通信速度が障害となって生じるデータの輻輳の発生を低減することができる。
また、仮に、単純にCPUの負荷状態に準じて負荷分散を実行させた場合では、例えば、転送処理の優先度の高いフレーム(以下、単に、「高優先フレーム」とする。)が負荷状態の高いCPUにて中継処理待ち状態となった場合に、負荷状態の低いCPUに転送処理の優先度の低いフレーム(以下、単に、「低優先フレーム」とする。)の転送処理が割り当てられた場合には、低優先フレームが、高優先フレームよりも先に転送されるといった順序逆転現象が発生することになるが、本発明では、フレームのフレームIDに基づいてデータ転送処理を実行させるCPUを選定することとしているため、この順序逆転現象の発生を防止できることとなる。
また、仮に、単純にCPUの負荷状態に準じて負荷分散を実行させた場合では、例えば、転送処理の優先度の高いフレーム(以下、単に、「高優先フレーム」とする。)が負荷状態の高いCPUにて中継処理待ち状態となった場合に、負荷状態の低いCPUに転送処理の優先度の低いフレーム(以下、単に、「低優先フレーム」とする。)の転送処理が割り当てられた場合には、低優先フレームが、高優先フレームよりも先に転送されるといった順序逆転現象が発生することになるが、本発明では、フレームのフレームIDに基づいてデータ転送処理を実行させるCPUを選定することとしているため、この順序逆転現象の発生を防止できることとなる。
また、請求項2に記載の発明では、ロードバランサーにおいて、CPUへの負荷分散処理の結果を監視して分散処理の偏りを検出し、CPUの選定に係るアルゴリズム(以下、単に、「分散アルゴリズム」とする。)を変更することで、分散処理の偏りを回避することができ、負荷分散の効率を保つことができる。これにより、高品質な通信の確保と、信頼性の向上を図ることができる。
また、請求項3に記載の発明では、低優先フレームに関して分散アルゴリズムを変更さることで分散処理の偏りを回避させることによれば、高優先フレームに関しては、特定のCPUにて処理を継続させることができ、高優先フレームに関する順序逆転現象の発生を防止できる。これにより、高品質な通信の確保と、信頼性の向上を図ることができる。
また、請求項4に記載の発明では、高優先フレームが優先的に先に出力される、即ち、データ転送処理の優先度の高いフレームから順にネットワークへと出力されることになるので、高品質な通信の確保と、信頼性の向上を図ることができる。
図1に示すごとく、本発明にかかるゲートウェイ1は、
複数のネットワーク9A〜9Cに個別に接続され、物理層の終端機能を持つ複数の物理終端ドライバ16A〜16Cと、
前記各物理終端ドライバ16A〜16Cに個別に接続され、通信プロトコルの制御処理機能を持つ複数のプロトコルコントローラ15A〜15Cと、
前記各プロトコルコントローラ15A〜15Cに個別に接続され、複数のCPU#0〜#nへの負荷分散処理を行う複数のロードバランサー14A〜14Cと、
前記各ロードバランサー14A〜14Cと接続され、前記各ロードバランサー14A〜14Cの負荷分散処理によって割り当てられるデータ転送処理を実行する前記複数のCPU#0〜#nと、を具備し、
前記各ロードバランサー14A〜14Cにおいては、前記フレームのフレームIDに基づいて、前記CPU#0〜#nの中からデータ転送処理を実行させるCPU#0〜#nが選定され、前記CPU#0〜#nにおけるデータ転送処理の負荷分散処理が実行される構成とするものである。
複数のネットワーク9A〜9Cに個別に接続され、物理層の終端機能を持つ複数の物理終端ドライバ16A〜16Cと、
前記各物理終端ドライバ16A〜16Cに個別に接続され、通信プロトコルの制御処理機能を持つ複数のプロトコルコントローラ15A〜15Cと、
前記各プロトコルコントローラ15A〜15Cに個別に接続され、複数のCPU#0〜#nへの負荷分散処理を行う複数のロードバランサー14A〜14Cと、
前記各ロードバランサー14A〜14Cと接続され、前記各ロードバランサー14A〜14Cの負荷分散処理によって割り当てられるデータ転送処理を実行する前記複数のCPU#0〜#nと、を具備し、
前記各ロードバランサー14A〜14Cにおいては、前記フレームのフレームIDに基づいて、前記CPU#0〜#nの中からデータ転送処理を実行させるCPU#0〜#nが選定され、前記CPU#0〜#nにおけるデータ転送処理の負荷分散処理が実行される構成とするものである。
この構成では、複数のCPU#0〜#nにて実行されるデータ転送処理の負荷が分散されるため、CPU単体の処理性能や、データバスの通信速度のデータ転送速度に対する影響を低減することができ、これらCPUの処理性能やデータバスの通信速度が障害となって生じるデータの輻輳の発生を低減することができる。
また、仮に、単純にCPU#0〜#nの負荷状態に準じて負荷分散を実行させた場合では、例えば、転送処理の優先度の高いフレーム(以下、単に、「高優先フレーム」とする。)が負荷状態の高いCPUにて中継処理待ち状態となった場合に、負荷状態の低いCPUに転送処理の優先度の低いフレーム(以下、単に、「低優先フレーム」とする。)の転送処理が割り当てられた場合には、低優先フレームが、高優先フレームよりも先に転送されるといった順序逆転現象が発生することになるが、本発明では、フレームのフレームIDに基づいてデータ転送処理を実行させるCPU#0〜#nを選定することとしているため、この順序逆転現象の発生を防止できることとなる。
また、仮に、単純にCPU#0〜#nの負荷状態に準じて負荷分散を実行させた場合では、例えば、転送処理の優先度の高いフレーム(以下、単に、「高優先フレーム」とする。)が負荷状態の高いCPUにて中継処理待ち状態となった場合に、負荷状態の低いCPUに転送処理の優先度の低いフレーム(以下、単に、「低優先フレーム」とする。)の転送処理が割り当てられた場合には、低優先フレームが、高優先フレームよりも先に転送されるといった順序逆転現象が発生することになるが、本発明では、フレームのフレームIDに基づいてデータ転送処理を実行させるCPU#0〜#nを選定することとしているため、この順序逆転現象の発生を防止できることとなる。
また、前記各ロードバランサー14A〜14Cは、前記各CPU#0〜#n側で中継処理待ちとなっているフレームのデータ量(例えば、フレーム数)から、各CPU#0〜#nにおける分散処理の偏りの大きさを識別し、分散処理の偏りの大きさが閾値を超えた場合には、前記データ転送処理の優先度に対応するKeyポインタを変更することで、分散アルゴリズムを変更し、前記分散処理の偏りの大きさを前記閾値よりも小さくすることとする。
このように、ロードバランサー14A〜14Cにおいて、CPU#0〜#nへの負荷分散処理の結果を監視して分散処理の偏りを検出し、分散アルゴリズムを変更することで、分散処理の偏りを回避することができ、負荷分散の効率を保つことができる。これにより、高品質な通信の確保と、信頼性の向上を図ることができる。
また、前記データ転送処理の優先度に対応するKeyポインタの変更は、前記データ転送処理の優先度の低いフレームから順に実行されるものとする。
このように、低優先フレームに関して分散アルゴリズムを変更さることで分散処理の偏りを回避させることによれば、高優先フレームに関しては、特定のCPUにて処理を継続させることができ、高優先フレームに関する順序逆転現象の発生を防止できる。これにより、高品質な通信の確保と、信頼性の向上を図ることができる。
また、前記各ロードバランサー14A〜14Cは、前記各CPU#0〜#nから受信したフレームを多重処理して前記プロトコルコントローラ15A〜15Cに送信するに際し、前記データ転送処理の優先度の高いフレームを優先的に先に送信する優先制御を実行することとする。
これによれば、高優先フレームが優先的に先に出力される、即ち、データ転送処理の優先度の高いフレームから順にネットワークへと出力されることになるので、高品質な通信の確保と、信頼性の向上を図ることができる。
以下、図1に示すゲートウェイ1を構成する各部の機能の詳細について説明する。
<物理終端ドライバ>
物理終端ドライバ16A〜16Cは、各ネットワーク9A〜9Cに対する物理層の終端機能を持つものである。また、各ネットワーク9A〜9Cには、ECU9A−1〜9C−1が接続されており、これらECU9A−1〜9C−1の間の通信がゲートウェイ1にて中継されるようになっている。この物理終端ドライバ16A〜16Cは、従来の一般的な構成にて実現される。
<物理終端ドライバ>
物理終端ドライバ16A〜16Cは、各ネットワーク9A〜9Cに対する物理層の終端機能を持つものである。また、各ネットワーク9A〜9Cには、ECU9A−1〜9C−1が接続されており、これらECU9A−1〜9C−1の間の通信がゲートウェイ1にて中継されるようになっている。この物理終端ドライバ16A〜16Cは、従来の一般的な構成にて実現される。
<プロトコルコントローラ>
プロトコルコントローラ15A〜15Cは、CAN・BEAN・LIN等の通信プロトコルの制御処理機能を持つものであり、デジタル信号のデコード/エンコードや、フレーム生成等の解析処理を行う。各プロトコルコントローラ15A〜15Cは、前記物理終端ドライバ16A〜16Cと個別に接続される。また、このプロトコルコントローラ15A〜15Cは、従来の一般的な構成にて実現される。
プロトコルコントローラ15A〜15Cは、CAN・BEAN・LIN等の通信プロトコルの制御処理機能を持つものであり、デジタル信号のデコード/エンコードや、フレーム生成等の解析処理を行う。各プロトコルコントローラ15A〜15Cは、前記物理終端ドライバ16A〜16Cと個別に接続される。また、このプロトコルコントローラ15A〜15Cは、従来の一般的な構成にて実現される。
<CPU>
各CPU#0〜#nは、複数のロードバランサー14A〜14Cに対し、それぞれ内部データバスにより接続されている(例えば、CPU#0は、ロードバランサー14A〜14Cに対して接続されている)。また、各CPU#0〜#nには、それぞれRAM8#0〜8#n、ROM9#0〜9#nが接続されている構成としている。尚、複数のCPUにてRAM/ROMを共有する構成としてもよい。
このようにして、CPUを複数搭載したマルチプロセッサ方式のゲートウェイ1が構成されるようになっている。
各CPU#0〜#nは、複数のロードバランサー14A〜14Cに対し、それぞれ内部データバスにより接続されている(例えば、CPU#0は、ロードバランサー14A〜14Cに対して接続されている)。また、各CPU#0〜#nには、それぞれRAM8#0〜8#n、ROM9#0〜9#nが接続されている構成としている。尚、複数のCPUにてRAM/ROMを共有する構成としてもよい。
このようにして、CPUを複数搭載したマルチプロセッサ方式のゲートウェイ1が構成されるようになっている。
<ロードバランサー>
(1)負荷分散処理機能
ロードバランサー14A〜14Cでは、前記プロトコルコントローラ15A〜15Cから受信されるフレームのフレームIDに基づいてCPU#0〜#nの負荷分散処理が実行されるものである。ここで、前記フレームID31は、各ネットワーク9A〜9Cに接続されるECU9A−1〜9C−1(図1参照)からそれぞれ送信されるフレームに付されている情報であり、以下に説明するように、当該フレームIDを基に、各フレームの分散Keyが演算されることとしている。
(1)負荷分散処理機能
ロードバランサー14A〜14Cでは、前記プロトコルコントローラ15A〜15Cから受信されるフレームのフレームIDに基づいてCPU#0〜#nの負荷分散処理が実行されるものである。ここで、前記フレームID31は、各ネットワーク9A〜9Cに接続されるECU9A−1〜9C−1(図1参照)からそれぞれ送信されるフレームに付されている情報であり、以下に説明するように、当該フレームIDを基に、各フレームの分散Keyが演算されることとしている。
この負荷分散処理においては、CPUの選定が行われるものであり、このCPUの選定に係るアルゴリズムを図2に示す。
まず、前記フレームIDに対応する分散Keyが演算により設定される(S21)。
前記分散Keyは、各ロードバランサー14A〜14Cにおいて、前記フレームIDから演算により求められるものである。この演算は、図3に示すごとく、例えば、フレームIDを4ビットごとに加算し、桁上げしない4ビットを分散Keyとして求めるものであり、この例では、フレームID=bad(h)の場合に、分散Key=0010(b)として求められることとなっている。
この分散Keyは、以下に述べるように、KeyポインタとともにCPUの選定の際に基準となるものである(Keyポインタによって参照されるものである)。また、前記フレームIDが同じであれば常に同一に設定されるものであり、このフレームIDと分散Keyの対応が実現できるのであれば、分散Keyを求める処理については特に限定されるものではない(上記の4ビット分割和の形態に限定されるものではない)。
まず、前記フレームIDに対応する分散Keyが演算により設定される(S21)。
前記分散Keyは、各ロードバランサー14A〜14Cにおいて、前記フレームIDから演算により求められるものである。この演算は、図3に示すごとく、例えば、フレームIDを4ビットごとに加算し、桁上げしない4ビットを分散Keyとして求めるものであり、この例では、フレームID=bad(h)の場合に、分散Key=0010(b)として求められることとなっている。
この分散Keyは、以下に述べるように、KeyポインタとともにCPUの選定の際に基準となるものである(Keyポインタによって参照されるものである)。また、前記フレームIDが同じであれば常に同一に設定されるものであり、このフレームIDと分散Keyの対応が実現できるのであれば、分散Keyを求める処理については特に限定されるものではない(上記の4ビット分割和の形態に限定されるものではない)。
そして、図2に示すごとく、前記分散Keyの演算後、データ転送処理の優先度に従い(S22)、Keyポインタの設定が行われる(S23#0〜S23#n)。
ここで、前記データ転送処理の優先度は、各ロードバランサー14A〜14Cにおいて、各ネットワーク9A〜9Cの通信プロトコルごとに設定されるものであり、例えば、車載LANの例では、安全性に関連する通信(車体の制動制御等)の通信プロトコルについて優先度が高く設定されることとなる。
図2の例では、優先度が0〜nの段階で設定されるようになっており、各優先度の数値に従ってKeyポインタ(Key−PTR)の数値(0〜n)が設定されるようにしている。
ここで、前記データ転送処理の優先度は、各ロードバランサー14A〜14Cにおいて、各ネットワーク9A〜9Cの通信プロトコルごとに設定されるものであり、例えば、車載LANの例では、安全性に関連する通信(車体の制動制御等)の通信プロトコルについて優先度が高く設定されることとなる。
図2の例では、優先度が0〜nの段階で設定されるようになっており、各優先度の数値に従ってKeyポインタ(Key−PTR)の数値(0〜n)が設定されるようにしている。
以上のように、優先度に基づいてKeyポインタを求め、図3に示すごとく、当該Keyポインタと前記分散Keyから、データ転送処理を実行させるCPUの選定が行われる(図2のS24)。
図3の例では、Keyポインタ=2とする場合であり、分散Keyの4ビットの内の先頭から2番目(Keyポインタ=2)のビット「0」であるため、CPU#0が選択される例を示している(CPU分散方路としてCPU#0が選択される)。
図3の例では、Keyポインタ=2とする場合であり、分散Keyの4ビットの内の先頭から2番目(Keyポインタ=2)のビット「0」であるため、CPU#0が選択される例を示している(CPU分散方路としてCPU#0が選択される)。
そして、図2に示すごとく、上述したCPUの選定後(S24)、選定されたCPUにて転送処理が実行される(S27、S28)。
以上のように、前記各ロードバランサー14A〜14Cにおいては、前記フレームのフレームIDに対応する分散Keyの設定、前記フレームの通信プロトコルに対応するデータ転送処理の優先度の設定、及び、前記優先度に対応するKeyポインタの設定がなされ、前記分散Key、及び、前記Keyポインタに基づいて、前記CPU#0〜#nの中からデータ転送処理を実行させるCPU#0〜#nが選定され、前記CPU#0〜#nにおけるデータ転送処理の負荷分散処理が実行される構成とするものである。
そして、以上のようにCPUを選定し、複数のCPU#0〜#nにて実行されるデータ転送処理の負荷を分散させることで、CPU単体の処理性能や、データバスの通信速度のデータ転送速度に対する影響を低減することができ、これらCPUの処理性能やデータバスの通信速度が障害となって生じるデータの輻輳の発生を低減することができる。
また、仮に、単純にCPU#0〜#nの負荷状態に準じて負荷分散処理を実行させると、例えば、高優先フレームが負荷状態の高いCPUにて中継処理待ち状態となった場合に、負荷状態の低いCPUに低優先フレームの転送処理が割り当てられた場合には、低優先フレームが、高優先フレームよりも先に転送されるといった順序逆転現象が発生することになるが、本発明では、フレームのフレームIDに基づいてデータ転送処理を実行させるCPU#0〜#nを選定することとしているため、この順序逆転現象の発生を防止できることとなる。
尚、図3を用いて説明したCPUの選定に係るアルゴリズム(分散アルゴリズム)は、あくまでも一例であり、フレームIDに基づく分散Keyの演算方法や、データ転送処理の優先度とKeyポインタの対応関係(優先度=Keyポインタ)については、他の演算方法や対応関係を採用してもよい。
また、以上の例では、データ転送処理の優先度は、各ネットワーク9A〜9Cの通信プロトコルごとに設定されることとしたが、この他、フレームIDに基づいて前記優先度が決定されるものとしてもよい。例えば、フレームIDと優先度を関連付けたテーブルを設け、フレームIDから優先度を参照する構成が考えられる。
さらに、フレームIDについて、分散Key、優先度、Keyポインタを関連付けたテーブルを設け、このテーブルを参照してCPUを選定することとしてもよい。この場合は、後述する負荷分散の偏りの発生に備え、Keyポインタを動的に変更する機能を備える必要がある。
以上のいずれの形態を採用してもよく、いずれにしても、フレームIDに基づいてCPUが選定されることとするものである。
また、以上の例では、データ転送処理の優先度は、各ネットワーク9A〜9Cの通信プロトコルごとに設定されることとしたが、この他、フレームIDに基づいて前記優先度が決定されるものとしてもよい。例えば、フレームIDと優先度を関連付けたテーブルを設け、フレームIDから優先度を参照する構成が考えられる。
さらに、フレームIDについて、分散Key、優先度、Keyポインタを関連付けたテーブルを設け、このテーブルを参照してCPUを選定することとしてもよい。この場合は、後述する負荷分散の偏りの発生に備え、Keyポインタを動的に変更する機能を備える必要がある。
以上のいずれの形態を採用してもよく、いずれにしても、フレームIDに基づいてCPUが選定されることとするものである。
(2)負荷分散の偏りを解消する機能〜分散アルゴリズムの変更
次に、各CPU#0〜#nに対する負荷分散の偏りが生じた場合に、偏りを解消する溜めの機能について説明する。
前記各ロードバランサー14A〜14Cは、前記各CPU#0〜#n側で中継処理待ちとなっているフレームのデータ量(例えば、フレーム数)から、各CPU#0〜#nに対する負荷分散の偏りの大きさを識別し、負荷分散の偏りの大きさが閾値を超えた場合には、前記データ転送処理の優先度に対応するKeyポインタを変更することで、前記CPU#0〜#nの選定に係るアルゴリズムを変更し、前記負荷分散の偏りの大きさを前記閾値よりも小さくし、偏りを解消することとするものである。
次に、各CPU#0〜#nに対する負荷分散の偏りが生じた場合に、偏りを解消する溜めの機能について説明する。
前記各ロードバランサー14A〜14Cは、前記各CPU#0〜#n側で中継処理待ちとなっているフレームのデータ量(例えば、フレーム数)から、各CPU#0〜#nに対する負荷分散の偏りの大きさを識別し、負荷分散の偏りの大きさが閾値を超えた場合には、前記データ転送処理の優先度に対応するKeyポインタを変更することで、前記CPU#0〜#nの選定に係るアルゴリズムを変更し、前記負荷分散の偏りの大きさを前記閾値よりも小さくし、偏りを解消することとするものである。
前記各ロードバランサー14A〜14Cは、フレームの種別を識別する機能を有している。ここでいうフレームの種別は二種類あって、一つは、ネットワーク9A〜9Cから入力されて、ゲートウェイ1にて中継され、再びネットワーク9A〜9Cへと出力されるフレームであり、この種のフレームを中継フレームとする。もう一つは、ゲートウェイ1内にて生成され、ネットワーク9A〜9Cへと出力されるフレーム、又は、ネットワーク9A〜9Cから入力されてゲートウェイ1内に収容されるフレームであり、この種のフレームを自発着フレームとする。
そして、図2に示すごとく、各ロードバランサー14A〜14Cは、CPUの選定後(S24)、フレームの転送処理に移る前に、転送するフレームが中継フレームであるか、自発着フレームであるかの判別を行う(S25)。
ここで、フレームが中継フレームである場合には、中継カウンタのカウント値を一つ増やし、記憶することとする(S26)。このカウント値の増加後、転送処理に移られる(S27)。このように、各ロードバランサー14A〜14Cには、この中継カウンタが実装されることとしている。
一方、フレームが自発着フレームである場合には、前記中継カウンタのカウント値は増やさずに転送処理へと移る(S28)。
ここで、フレームが中継フレームである場合には、中継カウンタのカウント値を一つ増やし、記憶することとする(S26)。このカウント値の増加後、転送処理に移られる(S27)。このように、各ロードバランサー14A〜14Cには、この中継カウンタが実装されることとしている。
一方、フレームが自発着フレームである場合には、前記中継カウンタのカウント値は増やさずに転送処理へと移る(S28)。
また、図4に示すごとく、各ロードバランサー14A〜14Cは、各CPU#0〜#nから各ロードバランサー14A〜14Cへと転送されるフレームの多重処理に移る前に、転送するフレームが中継フレームであるか、自発着フレームであるかの判別を行う(S41)。
ここで、フレームが中継フレームである場合には、前記中継カウンタのカウント値を一つ減らし、記憶することとする(S42)。このカウント値の減少後、多重処理に移られる(S43)。
一方、フレームが自発着フレームである場合には、前記中継カウンタのカウント値は減らさずに多重処理に移る(S44)。
ここで、フレームが中継フレームである場合には、前記中継カウンタのカウント値を一つ減らし、記憶することとする(S42)。このカウント値の減少後、多重処理に移られる(S43)。
一方、フレームが自発着フレームである場合には、前記中継カウンタのカウント値は減らさずに多重処理に移る(S44)。
そして、以上のようにして転送するフレームの数(フレーム数)を中継カウンタにてカウントすることによれば、前記各CPU#0〜#n側で中継処理待ちとなっているフレームのデータ量を認識することができ、各CPU#0〜#nに対する負荷分散の偏りの大きさを識別することができる。
つまり、中継処理待ちが発生していない場合には、中継フレームが中継されることでカウント値がプラスマイナスゼロとなってカウント値が増加することにはならないが、中継処理待ちが発生している場合には、カウント値の減少がなされずに(図4のS42)、カウント値が増加することになるため(図2の26)、このことをもってして中継処理待ち、即ち、負荷分散の偏りを識別することとするものである。このように、中継カウンタのカウント値によって負荷分散の偏りを識別することができる。
つまり、中継処理待ちが発生していない場合には、中継フレームが中継されることでカウント値がプラスマイナスゼロとなってカウント値が増加することにはならないが、中継処理待ちが発生している場合には、カウント値の減少がなされずに(図4のS42)、カウント値が増加することになるため(図2の26)、このことをもってして中継処理待ち、即ち、負荷分散の偏りを識別することとするものである。このように、中継カウンタのカウント値によって負荷分散の偏りを識別することができる。
尚、以上の例では、転送するフレームの数をカウントして中継処理待ちのフレームのデータ量を認識することとしたが、フレームのバイト数によってデータ量を認識することとしてもよく、この場合は、フレーム長をカウントする回路を実装する必要がある。
そして、図5に示すごとく、負荷分散の偏りが生じた場合には、前記Keyポインタを変更する、即ち、分散アルゴリズムを変更することにより、偏りの解消を図ることとするものである。また、このKeyポインタの変更は、前記データ転送処理の優先度の低いものから順に実行されるものとする。
図5に示すごとく、各ロードバランサー14A〜14Cにおいては、前記中継カウンタにてカウント値を記憶しておき、当該カウント値が閾値を超えた場合には(S51)、例えば、Keyポインタを一つ増やす等して、前記Keyポインタを変更(更新)する(S52)。
また、各ロードバランサー14A〜14Cには、更新カウンタが実装されており、前記Keyポインタの変更回数(更新回数)がカウントされるようになっている(S53)。
そして、前記Keyポインタの変更(S52)により、前記中継カウンタのカウント値が閾値が小さくなった場合には、処理が終了される。
また、各ロードバランサー14A〜14Cには、更新カウンタが実装されており、前記Keyポインタの変更回数(更新回数)がカウントされるようになっている(S53)。
そして、前記Keyポインタの変更(S52)により、前記中継カウンタのカウント値が閾値が小さくなった場合には、処理が終了される。
一方、Keyポインタの一度変更したにもかかわらず、中継カウンタのカウント値が閾値よりも小さくならない場合には、さらなるKeyポインタの変更を行う。この変更回数を前記更新カウンタによりカウントし(S53)、このカウント値が閾値(本実施例では四回)を超えた場合には(S54)、優先度の一つ高いフレームのKeyポインタの変更を行う(S55)。そして、前記更新カウンタのカウントをクリアする(S56)。
以上のように、ロードバランサー14A〜14Cにおいて、CPU#0〜#nへの負荷分散処理の結果を監視して負荷分散の偏りを検出し、分散アルゴリズムを変更することで、負荷分散の偏りを回避することができ、負荷分散の効率を保つことができる。
また、低優先フレームに関して分散アルゴリズムを変更さることで負荷分散の偏りを回避させることによれば、高優先フレームに関しては、特定のCPUにて処理を継続させることができ、高優先フレームに関する順序逆転現象の発生を防止できる。
そして、以上により、高品質な通信の確保と、信頼性の向上を図ることができる。
また、低優先フレームに関して分散アルゴリズムを変更さることで負荷分散の偏りを回避させることによれば、高優先フレームに関しては、特定のCPUにて処理を継続させることができ、高優先フレームに関する順序逆転現象の発生を防止できる。
そして、以上により、高品質な通信の確保と、信頼性の向上を図ることができる。
(3)フレームの多重処理〜優先制御
次に、各ロードバランサー14A〜14Cにおける多重処理に関し、データ転送処理の優先度の高いフレームを優先的に先に出力する機能について説明する。
これは、前記各ロードバランサー14A〜14Cにおいて、前記各CPU#0〜#nから受信したフレームを多重処理して前記プロトコルコントローラ15A〜15Cに送信するに際し、前記データ転送処理の優先度の高いフレームを優先的に先に送信する優先制御を実行することとするものである。
次に、各ロードバランサー14A〜14Cにおける多重処理に関し、データ転送処理の優先度の高いフレームを優先的に先に出力する機能について説明する。
これは、前記各ロードバランサー14A〜14Cにおいて、前記各CPU#0〜#nから受信したフレームを多重処理して前記プロトコルコントローラ15A〜15Cに送信するに際し、前記データ転送処理の優先度の高いフレームを優先的に先に送信する優先制御を実行することとするものである。
この優先制御は、図6に示すごとくのキュー(Queue)の構成にて実現される。
即ち、CPU#0〜#nの間ではラウンド・ロビン方式(RR)にて調停を図り、優先度間ではストリクト・プライオリティ方式(SP)で調停を図ることとするものである。
これによれば、高優先フレームが優先的に先に出力される、即ち、データ転送処理の優先度の高いフレームから順にネットワークへと出力されることになるので、高品質な通信の確保と、信頼性の向上を図ることができる。
尚、ここでいう優先度は、上述した負荷分散処理において利用される優先度と同一のものであり、これにより、ロードバランサー14A〜14Cにおいて輻輳状態が発生した場合においても、高優先フレームを先に出力する優先制御が可能となるものである。
即ち、CPU#0〜#nの間ではラウンド・ロビン方式(RR)にて調停を図り、優先度間ではストリクト・プライオリティ方式(SP)で調停を図ることとするものである。
これによれば、高優先フレームが優先的に先に出力される、即ち、データ転送処理の優先度の高いフレームから順にネットワークへと出力されることになるので、高品質な通信の確保と、信頼性の向上を図ることができる。
尚、ここでいう優先度は、上述した負荷分散処理において利用される優先度と同一のものであり、これにより、ロードバランサー14A〜14Cにおいて輻輳状態が発生した場合においても、高優先フレームを先に出力する優先制御が可能となるものである。
1 ゲートウェイ
9A〜9C ネットワーク
#0 CPU
14A〜14C ロードバランサー
15A〜15C プロトコルコントローラ
16A〜16C 物理終端ドライバ
9A〜9C ネットワーク
#0 CPU
14A〜14C ロードバランサー
15A〜15C プロトコルコントローラ
16A〜16C 物理終端ドライバ
Claims (4)
- 複数のネットワークに個別に接続され、物理層の終端機能を持つ複数の物理終端ドライバと、
前記各物理終端ドライバに個別に接続され、通信プロトコルの制御処理機能を持つ複数のプロトコルコントローラと、
前記各プロトコルコントローラに個別に接続され、複数のCPUへの負荷分散処理を行う複数のロードバランサーと、
前記各ロードバランサーと接続され、前記各ロードバランサーの負荷分散処理によって割り当てられるデータ転送処理を実行する前記複数のCPUと、を具備し、
前記各ロードバランサーにおいては、前記フレームのフレームIDに基づいて、前記CPUの中からデータ転送処理を実行させるCPUが選定され、前記CPUにおけるデータ転送処理の負荷分散処理が実行される、ゲートウェイ。 - 記各ロードバランサーは、前記各CPU側で中継処理待ちとなっているフレームのデータ量から、各CPUにおける分散処理の偏りの大きさを識別し、分散処理の偏りの大きさが閾値を超えた場合には、前記データ転送処理の優先度に対応するKeyポインタを変更することで、前記CPUの選定に係るアルゴリズムを変更し、前記分散処理の偏りの大きさを前記閾値よりも小さくすることとする、ことを特徴とする、請求項1に記載のゲートウェイ。
- 前記データ転送処理の優先度に対応するKeyポインタの変更は、前記データ転送処理の優先度の低いフレームから順に実行されるものとする、ことを特徴とする、請求項2に記載のゲートウェイ。
- 前記各ロードバランサーは、前記各CPUから受信したフレームを多重処理して前記プロトコルコントローラに送信するに際し、前記データ転送処理の優先度の高いフレームを優先的に先に送信する優先制御を実行することとする、ことを特徴とする、請求項1乃至請求項3のいずれか一項に記載のゲートウェイ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005172300A JP2006352236A (ja) | 2005-06-13 | 2005-06-13 | ゲートウェイ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005172300A JP2006352236A (ja) | 2005-06-13 | 2005-06-13 | ゲートウェイ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006352236A true JP2006352236A (ja) | 2006-12-28 |
Family
ID=37647646
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005172300A Pending JP2006352236A (ja) | 2005-06-13 | 2005-06-13 | ゲートウェイ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006352236A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008092146A (ja) * | 2006-09-29 | 2008-04-17 | Auto Network Gijutsu Kenkyusho:Kk | 車内通信方法、車内通信システム及び中継装置 |
JP2015069518A (ja) * | 2013-09-30 | 2015-04-13 | 日本電気株式会社 | 処理の並列化装置、処理の並列化方法及びプログラム |
WO2019239774A1 (ja) * | 2018-06-14 | 2019-12-19 | 日立オートモティブシステムズ株式会社 | ゲートウェイ装置 |
-
2005
- 2005-06-13 JP JP2005172300A patent/JP2006352236A/ja active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008092146A (ja) * | 2006-09-29 | 2008-04-17 | Auto Network Gijutsu Kenkyusho:Kk | 車内通信方法、車内通信システム及び中継装置 |
JP2015069518A (ja) * | 2013-09-30 | 2015-04-13 | 日本電気株式会社 | 処理の並列化装置、処理の並列化方法及びプログラム |
WO2019239774A1 (ja) * | 2018-06-14 | 2019-12-19 | 日立オートモティブシステムズ株式会社 | ゲートウェイ装置 |
CN112236978A (zh) * | 2018-06-14 | 2021-01-15 | 日立汽车系统株式会社 | 网关装置 |
JPWO2019239774A1 (ja) * | 2018-06-14 | 2021-04-22 | 日立Astemo株式会社 | ゲートウェイ装置 |
US11374786B2 (en) | 2018-06-14 | 2022-06-28 | Hitachi Astemo, Ltd. | Gateway device |
JP7136893B2 (ja) | 2018-06-14 | 2022-09-13 | 日立Astemo株式会社 | ゲートウェイ装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9917725B2 (en) | Automotive neural network | |
EP1549005A1 (en) | Communications method and communications system | |
US20060034190A1 (en) | Receive load balancing on multiple network adapters | |
US10666457B2 (en) | Relay device | |
JP2014007519A (ja) | 情報処理システム、中継装置、情報処理装置および情報処理方法 | |
JP7469498B2 (ja) | 車両制御装置 | |
EP3079316B1 (en) | Network switch circuit, system and method | |
JP2008113097A (ja) | ゲートウェイ装置及び転送制御方法 | |
US20160196073A1 (en) | Memory Module Access Method and Apparatus | |
JP4917669B2 (ja) | 車載用の中継接続ユニット | |
JP7459881B2 (ja) | 管理装置、車載システム、通信管理方法および通信管理プログラム | |
JP6544230B2 (ja) | 通信システム | |
JP2006352236A (ja) | ゲートウェイ | |
JP2006352235A (ja) | ゲートウェイ、及び、ゲートウェイにおける処理方法 | |
CN110365580B (zh) | 服务质量调度方法、装置、电子设备及计算机可读存储介质 | |
CN109547352B (zh) | 报文缓存队列的动态分配方法和装置 | |
CN116319303A (zh) | 基于dpu跨卡链路聚合的网卡虚拟化方法 | |
JP2008005290A (ja) | 中継接続ユニットおよび電子制御ユニット | |
JP6683090B2 (ja) | 中継装置 | |
JP7135985B2 (ja) | 通信装置 | |
KR101514398B1 (ko) | 가상 버스 개념의 차량용 게이트웨이 및 이의 메시지 전송 방법 | |
CN111817906B (zh) | 数据处理方法、装置、网络设备和存储介质 | |
KR101862050B1 (ko) | 경로 최적화를 위한 고속 망 변환 장치 및 이를 이용하는 대내 분리 환경에서의 고속 망 변환 네트워크 시스템 | |
WO2020027181A1 (ja) | スイッチ、制御装置、通信システム、通信制御方法及びプログラム | |
JP6812765B2 (ja) | 電子制御装置 |