【課題】複数の電子制御ユニット(ECU)が通信に用いる車載ネットワークに接続される装置から得られた情報に基づいて、車載ネットワークへの悪影響を抑制して、受信したフレームが適正か否かについてある程度時間を要する判定手法を用いるサーバ装置及び方法を提供する。
【解決手段】サーバは、車両に搭載された複数の電子制御ユニットが通信に用いる車載ネットワークに接続される装置と通信する通信部と、車両における車載ネットワークで送信されるフレームの種類毎に、所定条件が満たされた回数を保持する車両データ保持部と、不正判定部とを備える。不正判定部は、通信部が、装置から判定対象のフレームの判定依頼を受信すると、車両データ保持部に保持されている判定対象のフレームの種類に対する回数に基づいて、判定対象のフレームが適正であるか否かを判定し、通信部が、判定結果を車載ネットワークに接続される装置に送信する。
【発明を実施するための形態】
【0021】
上記課題を解決するために本発明の一態様に係るゲートウェイ装置は、車載ネットワークシステムにおいて複数の電子制御ユニットが通信に用いるネットワークに接続されるゲートウェイ装置であって、第1フレームを受信する受信部と、前記受信部により前記第1フレームが受信された際に、当該第1フレームの内容に基づく情報を含む第2フレームに、当該第2フレームの受信後の処理の制限に関する第1制御情報を含めて、当該第2フレームを前記ネットワークに送信する送信部とを備える。
【0022】
また、前記送信部は、前記受信部により前記第1フレームが受信された際に、所定条件が満たされた場合に前記第2フレームに前記第1制御情報を含めて前記送信を行い、前記所定条件が満たされなかった場合には前記第1制御情報を含めずに前記第2フレームを前記ネットワークに送信し、前記第1制御情報を含めた前記第2フレームを送信した後には、当該第2フレームの処理方法に関する第2制御情報を含む第3フレームを、前記ネットワークに送信することとしても良い。
【0023】
また、前記複数の電子制御ユニットは、Controller Area Network(CAN)プロトコルに従って前記ネットワークを介して通信を行うこととしても良い。
【0024】
また、上記課題を解決するために本発明の一態様に係る車載ネットワークシステムは、1以上のネットワークを介して通信する複数の電子制御ユニットと前記ネットワークに接続されたゲートウェイ装置とを備える車載ネットワークシステムであって、前記ゲートウェイ装置は、第1フレームを受信する第1の受信部と、前記受信部により前記第1フレームが受信された際に、当該第1フレームの内容に基づく情報を含む第2フレームに、当該第2フレームの受信後の処理の制限に関する第1制御情報を含めて、当該第2フレームを前記ネットワークに送信する第1の送信部とを備える。
【0025】
また、前記ゲートウェイ装置の前記第1の送信部は、前記第1の受信部により前記第1フレームが受信された際に、所定条件が満たされた場合に前記第2フレームに前記第1制御情報を含めて前記送信を行い、前記所定条件が満たされなかった場合には前記第1制御情報を含めずに前記第2フレームを前記ネットワークに送信し、前記第1制御情報を含めた前記第2フレームを送信した後には、当該第2フレームの処理方法に関する第2制御情報を含む第3フレームを、前記ネットワークに送信し、前記複数の電子制御ユニットのうちの第1の電子制御ユニットは、第1フレームを受信する第2の受信部と、前記第1フレームが適正か否かを決定する判定部と、前記決定の結果を送信する第2の送信部とを備え、前記所定条件は、前記ゲートウェイ装置が前記第2フレームの送信後に、前記第1の電子制御ユニットにおいて前記第1フレームが適正か否かについて決定される状況で満たされる条件であり、前記第1の受信部は、前記判定の結果を受信すると、前記第1の送信部は、前記第3フレームに、前記第1フレームに係る前記決定の結果に応じた前記第2制御情報を含ませることとしても良い。
【0026】
また、上記課題を解決するために本発明の一態様に係る通信方法は、1以上のネットワークを介して通信する複数の電子制御ユニットを備える車載ネットワークシステムにおいて用いられる通信方法であって、第1フレームを受信する受信ステップと、前記受信ステップで前記第1フレームが受信された際に、当該第1フレームの内容に基づく情報を含む第2フレームに、当該第2フレームの受信後の処理の制限に関する第1制御情報を含めて、当該第2フレームを前記ネットワークに送信する送信ステップとを含む。
【0027】
また、上記課題を解決するために本発明の一態様に係るサーバ装置は、車両に搭載された複数の電子制御ユニットが通信に用いる車載ネットワークに接続されるゲートウェイ装置と通信する通信部と、前記車両における前記車載ネットワークで送信されるフレームの種類ごとに、所定条件が満たされた回数を保持する保持部と、不正判定部とを備え、前記通信部は、前記ゲートウェイ装置から判定対象のフレームの判定依頼を受信すると、前記不正判定部は、前記保持部に保持されている、前記判定対象のフレームのタイプに対する前記回数に基づいて、前記判定対象のフレームが不正であるか否かを判定し、前記通信部は、判定結果を前記ゲートウェイ装置に送信する。
【0028】
本発明の一態様に係るゲートウェイ装置は、車載ネットワークシステムにおいて複数の電子制御ユニットが通信に用いるバスに接続されるゲートウェイ装置であって、第1フレームを受信する受信部と、前記受信部により前記第1フレームが受信された際に、当該第1フレームの内容に基づく情報を含む第2フレームに、当該第2フレームの受信後の処理の制限に関する第1制御情報を含めて、当該第2フレームを前記バスに送信する送信部とを備えるゲートウェイ装置である。これにより、フレームの転送に際して制御情報を含めたフレームの送信を行うため、例えば受信後にフレームの処理を抑止して待機させる等の制御が可能となる。このため、受信したフレームが適正か否かの判定にある程度の時間を要する判定手法を用いた場合でも、その判定が完了するより前に、待機等を指示する制御情報をフレームに付加して送信しておくことが可能となり、フレームを受信した電子制御ユニット(ECU)において異常処理をしてしまうこと等を抑制できる。即ち、ゲートウェイ装置が受信したフレームが適正か否かの判定に時間を要することによる車載ネットワークへの悪影響を、抑制し得る。また、ゲートウェイ装置にとっては、フレームが適正か否かの判定に要する時間を確保可能となるので、より適切な判定が可能となり、車載ネットワークに不正なフレームが悪影響を及ぼすことを抑制可能となる。
【0029】
また、前記送信部は、前記受信部により前記第1フレームが受信された際に、所定条件が満たされた場合に前記第2フレームに前記第1制御情報を含めて前記送信を行い、前記所定条件が満たされなかった場合には前記第1制御情報を含めずに前記第2フレームを前記バスに送信し、前記第1制御情報を含めた前記第2フレームを送信した後には、当該第2フレームの処理方法に関する第2制御情報を含む第3フレームを、前記バスに送信することとしても良い。これにより、第1制御情報が含まれる第2フレームを受信したECUにおいては、その第2フレームの処理方法に関する第2制御情報を含む第3フレームを後に受信できることとなるため、第2フレームを保持して第3フレームを待機する等の対応を行い得る。即ち、第1制御情報が含まれる第2フレームを受信したECUは、第3フレームの受信タイミングまで第2フレームに対する処理の実行開始を行わないようにすること等が可能となる。
【0030】
また、前記所定条件は、前記第2フレームの送信後に前記第1フレームが適正か否かについて決定される状況で満たされる条件であり、前記送信部は、前記第3フレームに、前記第1フレームに係る前記決定の結果に応じた前記第2制御情報を含ませることとしても良い。これにより、第1制御情報が含まれる第2フレームを受信したECUにおいては、第2フレームの内容が適正でその内容に応じた機能処理等を実行すべきであるか、その内容が不正でその内容に応じた機能処理等を行うべきでないかを第3フレームの受信を待てば区別できるようになる。
【0031】
また、前記ゲートウェイ装置は、前記決定を行う不正判定処理部を備えることとしても良い。これにより、車載ネットワークへの悪影響を抑制して、ゲートウェイ装置は、受信したフレームが適正か否かの判定(決定)をフレームの受信から、ある程度の時間を要する判定手法を用いて、自装置(不正判定処理部)で実行することが可能となる。
【0032】
また、前記受信部は、更に前記複数の電子制御ユニットのうちの1つにより行われた前記決定の結果を受信することとしても良い。これにより、ゲートウェイ装置は、受信したフレームが適正か否かの判定(決定)を他のECU(例えばフレームが適正か否かの判定を主として行うECU等)に行わせてその結果を受信する判定手法を用いても、車載ネットワークへの悪影響が抑制され得る。
【0033】
また、前記ゲートウェイ装置は、自装置を搭載する車両の外部の装置に対して前記決定の要求を送信した後に前記決定の結果を受信する外部通信部を備えることとしても良い。これにより、ゲートウェイ装置は、受信したフレームが適正か否かの判定(決定)を車両外の装置(例えばサーバ)に行わせてその結果を受信する判定手法を用いても、車載ネットワークへの悪影響が抑制され得る。なお、車両外の装置との通信によれば、例えば、その車両における過去のデータ或いは他の車両のデータ等に基づいて、フレームが適正か否かの判定(決定)を行うことが可能となり、より適切な判定が行える可能性がある。
【0034】
また、前記第2制御情報は、前記第2フレームの処理の実行を開始すべき旨を示すこととしても良い。これにより、第1制御情報が含まれる第2フレームを受信したECUは、第2制御情報を含む第3フレームを受信したタイミングで、第2フレームが適正なものであるものとして適切に、第2フレームの処理の実行を開始できるようになる。
【0035】
また、前記第2制御情報は、前記第2フレームを破棄すべき旨を示すこととしても良い。これにより、第1制御情報が含まれる第2フレームを受信したECUは、第2制御情報を含む第3フレームを受信したタイミングで、第2フレームを破棄でき、不適切な処理を行わないようにすることが可能となる。このように破棄すべき場合であってもその指示を含むフレームが送信されることは、破棄すべき旨の指示を受信したECUにとって、保持している第2フレームを即座に破棄できる点で有用である。
【0036】
また、前記第1制御情報は、当該第1制御情報を含む前記第2フレームを受信した電子制御ユニットに、当該第2フレームの処理方法に関する情報を含むフレームを受信するまで、当該第2フレームに対応した処理の実行開始を遅延させるべき旨を示すこととしても良い。これにより、ゲートウェイ装置で第2フレームの処理方法(例えば対応処理の実行開始或いは破棄等)を決定するまで、第1制御情報を含む第2フレームを受信したECUにおいてその第2フレームの処理の実行開始がなされない。このため、ゲートウェイ装置ではその決定のための処理時間を確保できるようになる。
【0037】
また、前記第1制御情報は、当該第1制御情報を含む前記第2フレームを受信した電子制御ユニットに、一定条件が満たされるまで当該第2フレームに対応した処理の実行を抑止させるべき旨を示すこととしても良い。これにより、ゲートウェイ装置で一定条件を満たすための措置(例えば第2フレームの対応処理の実行開始を指示するフレームの送信等)を行うまでは、第1制御情報を含む第2フレームを受信したECUにおいてその第2フレームの処理の実行が抑止される。このため、ゲートウェイ装置ではその措置の内容を決めるための処理時間を確保できるようになる。
【0038】
また、前記複数の電子制御ユニットは、Controller Area Network(CAN)プロトコルに従って前記バスを介して通信を行うこととしても良い。これにより、CANプロトコルに従った車載ネットワークに攻撃者がアクセスして不正なフレームが送信された場合にそのフレームが不正であることを、ある程度時間を要する精度の良い判定手法を用いて、適切に区別することが可能となり得る。
【0039】
また、前記送信部は、前記第2フレームのデータフィールドの全部又は一部で前記第1制御情報を表すこととしても良い。これにより、フレームを受信したECUは、データフィールドを確認することで第1制御情報を認識可能となる。この場合に第1制御情報は、例えば、データフィールド内のある領域を特定値にすること等で表現され得る。また、ゲートウェイ装置はフレームの転送(フレームの受信及びその受信内容に基づくフレームの送信)において、受信したフレームの内容をある程度保ったまま(例えばIDフィールド等の内容を変更しないまま)、効率的に転送を行うことが可能となる。
【0040】
また、前記送信部は、前記第2フレームの拡張IDフィールドで前記第1制御情報を表すこととしても良い。これにより、フレームを受信したECUは、拡張IDフィールドを確認することで第1制御情報を認識可能となる。この場合に第1制御情報は、例えば、拡張IDフィールド内のある領域を特定値にすること等で表現され得る。
【0041】
また、前記送信部は、前記第2フレームのDLCフィールドで前記第1制御情報を表すこととしても良い。これにより、フレームを受信したECUは、DLCフィールドを確認することで第1制御情報を認識可能となる。この場合に第1制御情報は、例えば、DLCフィールド内のある領域を特定値にすること等で表現され得る。
【0042】
また、前記送信部は、前記第2フレームのデータフィールドの少なくとも一部の内容を反映したデータを格納する、当該第2フレームの一領域で、前記第1制御情報を表すこととしても良い。これにより、データフィールドの内容を反映したデータ(例えばその内容の検証のための冗長性を有するデータ等)に第1制御情報を重畳するため、新たなデータ領域を付加せずに、効率的に第1制御情報を表現し得る。
【0043】
また、前記送信部は、前記第2フレームのCRCフィールド内に格納するCRCに前記第1制御情報を重畳して、前記第2フレームの前記送信を行うこととしても良い。これにより、CRCに第1制御情報を重畳するため、効率的に第1制御情報を表現し得る。
【0044】
また、前記送信部は、前記第2フレームの前記一領域に格納するチェックサムに前記第1制御情報を重畳して、前記第2フレームの前記送信を行うこととしても良い。これにより、チックサムに第1制御情報を重畳するため、チェックサムを含むフレームが送受信される車載ネットワークにおいて効率的に第1制御情報を表現し得る。
【0045】
また、前記送信部は、前記第2フレームの前記一領域に格納するメッセージ認証コードに前記第1制御情報を重畳して、前記第2フレームの前記送信を行うこととしても良い。これにより、メッセージ認証コード(MAC)に第1制御情報を重畳するため、MACを含むフレームが送受信される車載ネットワークにおいて効率的に第1制御情報を表現し得る。
【0046】
また、本発明の一態様に係る車載ネットワークシステムは、1以上のバスを介して通信する複数の電子制御ユニットと前記バスに接続されたゲートウェイ装置とを備える車載ネットワークシステムであって、前記ゲートウェイ装置は、第1フレームを受信する受信部と、前記受信部により前記第1フレームが受信された際に、当該第1フレームの内容に基づく情報を含む第2フレームに、当該第2フレームの受信後の処理の制限に関する第1制御情報を含めて、当該第2フレームを前記バスに送信する送信部とを備える車載ネットワークシステムである。これにより、ゲートウェイ装置からフレームの受信の際に(受信のタイミングで)、第1制御情報を含めたフレームを送信するので、ゲートウェイ装置が受信したフレームが適正か否かの判定(決定)がそのフレームの送信後まで時間を要する場合であっても車載ネットワークへの悪影響を、抑制し得る。第1制御情報を含むフレームを受信したECUにおいて、フレームの受信が遅れることにより異常処理を行ってしまうこと等が防止され得るからである。
【0047】
また、本発明の一態様に係る通信方法は、1以上のバスを介して通信する複数の電子制御ユニットを備える車載ネットワークシステムにおいて用いられる通信方法であって、第1フレームを受信する受信ステップと、前記受信ステップで前記第1フレームが受信された際に、当該第1フレームの内容に基づく情報を含む第2フレームに、当該第2フレームの受信後の処理の制限に関する第1制御情報を含めて、当該第2フレームを前記バスに送信する送信ステップとを含む通信方法である。これにより、フレームを転送する装置において、第1フレームの受信に際して第1制御情報を含めた第2フレームを送信するので、第1フレームが適正か否かの判定(決定)がその第1フレームの送信後まで時間を要する場合であっても車載ネットワークへの悪影響を、抑制し得る。
【0048】
なお、これらの全般的又は具体的な態様は、システム、方法、集積回路、コンピュータプログラム又はコンピュータで読み取り可能なCD−ROM等の記録媒体で実現されても良く、システム、方法、集積回路、コンピュータプログラム又は記録媒体の任意な組み合わせで実現されても良い。
【0049】
以下、実施の形態に係るゲートウェイ装置を含む車載ネットワークシステムについて、図面を参照しながら説明する。ここで示す実施の形態は、いずれも本発明の一具体例を示すものである。従って、以下の実施の形態で示される数値、構成要素、構成要素の配置及び接続形態、並びに、ステップ(工程)及びステップの順序等は、一例であって本発明を限定するものではない。以下の実施の形態における構成要素のうち、独立請求項に記載されていない構成要素については、任意に付加可能な構成要素である。また、各図は、模式図であり、必ずしも厳密に図示されたものではない。
【0050】
(実施の形態1)
以下、本発明の実施の形態として、複数の電子制御ユニット(ECU)がバスを介して通信する車載ネットワークシステム10について、図面を用いて説明する。
【0051】
車載ネットワークシステム10は、フレームを受信して、1つのバスにフレームを転送するゲートウェイ装置を含む。ゲートウェイ装置は、受信したフレームが適正か否かについての最終的な決定(判定)を行うまでに時間を要するか否かを判別しその判別結果に応じてフラグをフレームに付加して、フレームの転送を行う。フレームを受信したECUでは、フレームが適正か否かが未決定であるか否かをそのフラグを参照することで判別し得る。フレームを受信したECUは、そのフラグが未決定を表す場合にはそのフレームに対応した処理を保留(つまりフレームを保持したまま処理を抑止)して更なる指示(フレームが適正か否かの決定後になされる指示)を待機することが可能となる。このようにフラグが未決定を表す場合は、ECUにとって、そのフラグは待機を指示する制御情報として作用し得る。本実施の形態では、ゲートウェイ装置は、そのフラグを含む制御指示データをフレームに付加する。
【0052】
[1.1 車載ネットワークシステム10の全体構成]
図1は、実施の形態1に係る車載ネットワークシステム10の全体構成を示す図である。車載ネットワークシステム10は、CANプロトコルに従って通信するネットワーク通信システムの一例であり、制御装置、センサ等の各種機器が搭載された自動車におけるネットワーク通信システムである。車載ネットワークシステム10は、バス200a、200b、200cと、ゲートウェイ300a、300b、及び、各種機器に接続されたECU100a〜100e等のECUといったバスに接続された各ノードとを含んで構成される。なお、
図1では省略しているものの、車載ネットワークシステム10にはECU100a〜100e以外にもいくつものECUが含まれ得る。ECUは、例えば、プロセッサ(マイクロプロセッサ)、メモリ等のデジタル回路、アナログ回路、通信回路等を含む装置である。メモリは、ROM、RAM等であり、プロセッサにより実行される制御プログラム(コンピュータプログラム)を記憶することができる。例えばプロセッサが、制御プログラム(コンピュータプログラム)に従って動作することにより、ECUは各種機能を実現することになる。なお、コンピュータプログラムは、所定の機能を達成するために、プロセッサに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
【0053】
ECU100a〜100eは、いずれかのバスと接続され、また、それぞれエンジン101、ブレーキ102、ドア開閉センサ103、窓開閉センサ104、コーナーセンサ105に接続されている。ECU100a〜100eのそれぞれは、接続されている機器(エンジン101等)の状態を取得し、定期的に状態を表すフレーム等をネットワーク(つまりバス)に送信している。
【0054】
ゲートウェイ300a、300bは、異なる複数の通信路を接続して通信路間でデータを転送するゲートウェイ装置である。ゲートウェイ300aは、ECU100a及びECU100bがつながるバス200aと、ECU100c及びECU100dがつながるバス200bと接続している。また、ゲートウェイ300bは、ECU100c及びECU100dがつながるバス200bと、ECU100eがつながるバス200cと、接続している。
【0055】
ゲートウェイ300a、300bは、一方のバスから受信したフレーム(データフレーム)について、適正か不正かに関連した条件判定を行って、判定結果に応じて制御指示データをデータフィールドに追加して、受信したフレームを他のバスに転送する機能を有する。ゲートウェイ300a、300bにおける制御指示データを追加したフレームの転送は、一方のバスから受信したフレームの内容に基づく情報を含む送信用フレームを生成して、その送信用フレームのECUにおける受信後の処理の制限に関する制御指示データをその送信用フレームのデータフィールドに含めて、その送信用フレームを他のバスに送信することで実現される。ゲートウェイ300a、300bは、受信したフレームを転送するかしないかを接続されたバス間毎に切り替えることも可能である。ゲートウェイ300a、300bも一種のECUである。
【0056】
この車載ネットワークシステム10においてはCANプロトコルに従って各ECUがフレームの授受を行う。CANプロトコルにおけるフレームには、データフレーム、リモートフレーム、オーバーロードフレーム及びエラーフレームがあるが、ここでは主にデータフレームに注目して説明する。
【0057】
[1.2 データフレームフォーマット]
以下、CANプロトコルに従ったネットワークで用いられるフレームの1つであるデータフレームについて説明する。
【0058】
図2は、CANプロトコルで規定されるデータフレームのフォーマットを示す図である。同図には、CANプロトコルで規定される標準IDフォーマットにおけるデータフレームを示している。データフレームは、SOF(Start Of Frame)、IDフィールド、RTR(Remote Transmission Request)、IDE(Identifier Extension)、予約ビット「r」、DLC(Data Length Code)、データフィールド、CRC(Cyclic Redundancy Check)シーケンス、CRCデリミタ「DEL」、ACK(Acknowledgement)スロット、ACKデリミタ「DEL」、及び、EOF(End Of Frame)の各フィールドで構成される。
【0059】
SOFは、1bitのドミナントで構成される。バスがアイドルの状態はレセシブになっており、SOFによりドミナントへ変更することでフレームの送信開始を通知する。
【0060】
IDフィールドは、11bitで構成される、データの種類を示す値であるID(メッセージID)を格納するフィールドである。複数のノードが同時に送信を開始した場合、このIDフィールドで通信調停を行うために、IDが小さい値を持つフレームが高い優先度となるよう設計されている。
【0061】
RTRは、データフレームとリモートフレームとを識別するための値であり、データフレームにおいてはドミナント1bitで構成される。
【0062】
IDEと「r」とは、両方ドミナント1bitで構成される。
【0063】
DLCは、4bitで構成され、データフィールドの長さを示す値である。なお、IDE、「r」及びDLCを合わせてコントロールフィールドと称する。ここでは、データフレームにおけるDLCの値を格納する4bitをDLCフィールドとも称する。
【0064】
データフィールドは、最大64bitで構成される送信するデータの内容を示す値である。8bit毎に長さを調整できる。送られるデータの仕様については、CANプロトコルで規定されておらず、車載ネットワークシステム10において定められる。従って、車種、製造者(製造メーカ)等に依存した仕様となる。
【0065】
CRCシーケンスは、15bitで構成される。SOF、IDフィールド、コントロールフィールド及びデータフィールドの送信値より算出される。
【0066】
CRCデリミタは、1bitのレセシブで構成されるCRCシーケンスの終了を表す区切り記号である。なお、CRCシーケンス及びCRCデリミタを合わせてCRCフィールドと称する。
【0067】
ACKスロットは、1bitで構成される。送信ノードはACKスロットをレセシブにして送信を行う。受信ノードはCRCシーケンスまで正常に受信ができていればACKスロットをドミナントとして送信する。レセシブよりドミナントが優先されるため、送信後にACKスロットがドミナントであれば、送信ノードは、いずれかの受信ノードが受信に成功していることを確認できる。
【0068】
ACKデリミタは、1bitのレセシブで構成されるACKの終了を表す区切り記号である。
【0069】
EOFは、7bitのレセシブで構成されており、データフレームの終了を示す。
【0070】
[1.3 ECU100aの構成]
図3は、ECU100aの構成図である。ECU100aは、フレーム送受信部110と、フレーム解釈部120と、受信ID判断部130と、受信IDリスト保持部140と、フレーム処理部150と、フレーム保持部160と、データ取得部170と、フレーム生成部180とを含んで構成される。これらの各構成要素の各機能は、例えばECU100aにおける通信回路、メモリに格納された制御プログラムを実行するプロセッサ或いはデジタル回路等により実現される。
【0071】
フレーム送受信部110は、バス200aに対して、CANプロトコルに従ったフレームを送受信する。バス200aからフレームを1bitずつ受信し、フレーム解釈部120に転送する。また、フレーム生成部180より通知を受けたフレームの内容をバス200aに送信する。
【0072】
フレーム解釈部120は、フレーム送受信部110よりフレームの値を受け取り、CANプロトコルで規定されているフレームフォーマットにおける各フィールドにマッピングするよう解釈を行う。IDフィールドと判断した値は受信ID判断部130へ転送する。フレーム解釈部120は、受信ID判断部130から通知される判定結果に応じて、IDフィールドの値と、IDフィールド以降に現れるデータフィールドとを、フレーム処理部150へ転送するか、その判定結果を受けた以降においてフレームの受信を中止する(つまりそのフレームとしての解釈を中止する)かを決定する。また、フレーム解釈部120は、CANプロトコルに則っていないフレームと判断した場合は、エラーフレームを送信するようにフレーム生成部180へ通知する。また、フレーム解釈部120は、エラーフレームを受信した場合、つまり受け取ったフレームにおける値からエラーフレームになっていると解釈した場合には、それ以降はそのフレームを破棄する、つまりフレームの解釈を中止する。
【0073】
受信ID判断部130は、フレーム解釈部120から通知されるIDフィールドの値を受け取り、受信IDリスト保持部140が保持しているメッセージIDのリストに従い、そのIDフィールド以降のフレームの各フィールドを受信するかどうかの判定を行う。この判定結果を、受信ID判断部130は、フレーム解釈部120へ通知する。
【0074】
受信IDリスト保持部140は、ECU100aが受信するID(メッセージID)のリストである受信IDリストを保持する。
図4は、受信IDリストの一例を示した図である。
【0075】
フレーム処理部150は、受信したフレームのデータに応じてECU毎に異なる機能に係る処理を行う。例えば、エンジン101に接続されたECU100aは、時速が30kmを超えた状態でドアが開いている状態だと、アラーム音を鳴らす機能を備える。ECU100aは、例えばアラーム音を鳴らすためのスピーカ等を有している。そして、ECU100aのフレーム処理部150は、他のECUから受信したデータ(例えばドアの状態を示す情報)を管理し、エンジン101から取得された時速に基づいて一定条件下でアラーム音を鳴らす処理等を行う。なお、フレーム処理部150は、ここで例示した以外のフレームのデータに係る処理を行っても良い。また、フレーム処理部150は、受信したフレームにおける制御指示データの内容によっては、受信したフレームを、保存指示することでフレーム保持部160へ格納して、受信したフレームに応じた上述の処理(ECUの機能に係る処理)の開始を一定条件が満たされるまで抑止(つまり一定条件の成立まで上述の処理を待機)し、或いは、フレーム保持部160からフレームを読み出してそのフレームのデータに応じてECUの機能に係る処理を実行する。
【0076】
フレーム保持部160は、フレーム処理部150の保存指示に従って、受信したフレームの情報をメモリ等の記憶媒体に保持する。また、フレーム処理部150からの読出し指示に従って、保存しているフレームを通知する。
【0077】
データ取得部170は、ECUにつながっている機器、センサ等の状態を示すデータを取得し、フレーム生成部180に通知する。
【0078】
フレーム生成部180は、フレーム解釈部120から通知されたエラーフレームの送信を指示する通知に従い、エラーフレームを構成し、エラーフレームをフレーム送受信部110へ通知して送信させる。また、フレーム生成部180は、データ取得部170より通知されたデータの値に対して、予め定められたメッセージIDをつけてフレームを構成し、フレーム送受信部110へ通知する。
【0079】
なお、ECU100b〜100eも、上述したECU100aと基本的に同様の構成を備える。但し、受信IDリスト保持部140に保持される受信IDリストはECU毎に異なる内容となり得る。また、フレーム処理部150の処理内容は、ECU毎に異なる。例えば、ECU100cにおけるフレーム処理部150の処理内容は、ブレーキがかかっていない状況でドアが開くとアラーム音を鳴らす機能に係る処理を含む。例えば、ECU100b及びECU100dにおけるフレーム処理部150では特段の処理を行わない。なお、各ECUは、ここで例示した以外の機能を備えていても良い。なお、ECU100a〜100eのそれぞれが送信するフレームの内容については後に
図5〜
図9を用いて説明する。
【0080】
[1.4 受信IDリスト例]
図4は、ECU100a〜100e、ゲートウェイ300a、300bのそれぞれにおいて保持される受信IDリストの一例を示す図である。同図に例示する受信IDリストは、ID(メッセージID)の値が「1」、「2」、「3」、「4」及び「5」のいずれかであるメッセージIDを含むフレームを選択的に受信して処理するために用いられる。例えば、ECU100aの受信IDリスト保持部140に
図4の受信IDリストが保持されていると、メッセージIDが「1」、「2」、「3」、「4」及び「5」のいずれでもないフレームについては、フレーム解釈部120でのIDフィールド以後のフレームの解釈が中止される。
【0081】
[1.5 エンジンに係るECU100aの送信フレーム例]
図5は、エンジン101に接続されたECU100aから送信されるフレームにおけるID(メッセージID)及びデータフィールド(データ)の一例を示す図である。ECU100aが送信するフレームのメッセージIDは「1」である。データは、時速(km/時)を表し、最低0(km/時)〜最高180(km/時)までの範囲の値を取り、データ長は1byteである。
図5の上行から下行へと、ECU100aから逐次送信される各フレームに対応する各メッセージID及びデータを例示しており、0km/時から1km/時ずつ加速されている様子を表している。
【0082】
[1.6 ブレーキに係るECU100bの送信フレーム例]
図6は、ブレーキ102に接続されたECU100bから送信されるフレームにおけるID(メッセージID)及びデータフィールド(データ)の一例を示す図である。ECU100bが送信するフレームのメッセージIDは「2」である。データは、ブレーキのかかり具合を割合(%)で表し、データ長は1byteである。この割合は、ブレーキを全くかけていない状態を0(%)、ブレーキを最大限かけている状態を100(%)としたものである。
図6の上行から下行へと、ECU100bから逐次送信される各フレームに対応する各メッセージID及びデータを例示しており、100%から徐々にブレーキを弱めている様子を表している。
【0083】
[1.7 ドア開閉センサに係るECU100cの送信フレーム例]
図7は、ドア開閉センサ103に接続されたECU100cから送信されるフレームにおけるID(メッセージID)及びデータフィールド(データ)の一例を示す図である。ECU100cが送信するフレームのメッセージIDは「3」である。データは、ドアの開閉状態を表し、データ長は1byteである。データの値は、ドアが開いている状態が「1」、ドアが閉まっている状態が「0」である。
図7の上行から下行へと、ECU100cから逐次送信される各フレームに対応する各メッセージID及びデータを例示しており、ドアが開いている状態から次第に閉められた状態へと移った様子を表している。
【0084】
[1.8 窓開閉センサに係るECU100dの送信フレーム例]
図8は、窓開閉センサ104に接続されたECU100dから送信されるフレームにおけるID(メッセージID)及びデータフィールド(データ)の一例を示す図である。ECU100dが送信するフレームのメッセージIDは「4」である。データは、窓の開閉状態を割合(%)で表し、データ長は1byteである。この割合は、窓が完全に閉まっている状態を0(%)、窓が全開の状態を100(%)としたものである。
図8の上行から下行へと、ECU100dから逐次送信される各フレームに対応する各メッセージID及びデータを例示しており、窓が閉まっている状態から徐々に開いていく様子を表している。
【0085】
[1.9 コーナーセンサに係るECU100eの送信フレーム例]
図9は、コーナーセンサ105に接続されたECU100eから送信されるフレームにおけるID(メッセージID)及びデータフィールド(データ)の一例を示す図である。ECU100eが送信するフレームのメッセージIDは「5」である。データは、コーナーセンサ105が車両のコーナーから一定距離範囲に障害物が存在することを検知すれば「1」、障害物を検知しなければ「0」である。
図9の上行から下行へと、ECU100eから逐次送信される各フレームに対応する各メッセージID及びデータを例示しており、車両のコーナーに障害物が検知されない状態から次第に障害物が検知される状態へと移った様子を表している。
【0086】
[1.10 ゲートウェイ300aの構成]
図10は、ゲートウェイ300aの構成図である。ゲートウェイ300aは、フレーム送受信部310と、フレーム解釈部320と、受信ID判断部330と、受信IDリスト保持部340と、不正判定処理部350と、不正判定ルール保持部360と、転送処理部370と、転送ルール保持部380と、フレーム生成部390とを含んで構成される。これらの各構成要素の各機能は、例えばゲートウェイ300aにおける通信回路、メモリに格納された制御プログラムを実行するプロセッサ或いはデジタル回路等により実現される。なお、ゲートウェイ300bもゲートウェイ300aと基本的に同様の構成を備える。
【0087】
フレーム送受信部310は、バス200a、200bそれぞれに対して、CANプロトコルに従ったフレームを送受信する。バスからフレームを1bitずつ受信し、フレーム解釈部320に転送する。また、フレーム生成部390より通知を受けた転送先のバスを示すバス情報及びフレームに基づいて、そのフレームの内容をバス200a、200bに1bitずつ送信する。
【0088】
フレーム解釈部320は、フレーム送受信部310よりフレームの値を受け取り、CANプロトコルで規定されているフレームフォーマットにおける各フィールドにマッピングするよう解釈を行う。IDフィールドと判断した値は受信ID判断部330へ転送する。フレーム解釈部320は、受信ID判断部330から通知される判定結果に応じて、IDフィールドの値と、IDフィールド以降に現れるデータフィールド(データ)とを、転送処理部370へ転送するか、その判定結果を受けた以降においてフレームの受信を中止するかを決定する。また、フレーム解釈部320は、CANプロトコルに則っていないフレームと判断した場合は、エラーフレームを送信するようにフレーム生成部390へ通知する。また、フレーム解釈部320は、エラーフレームを受信した場合、つまり受け取ったフレームにおける値からエラーフレームになっていると解釈した場合には、それ以降はそのフレームを破棄する、つまりフレームの解釈を中止する。
【0089】
受信ID判断部330は、フレーム解釈部320から通知されるIDフィールドの値を受け取り、受信IDリスト保持部340が保持しているメッセージIDのリストに従い、そのIDフィールド以降のフレームの各フィールドを受信するかどうかの判定を行う。この判定結果を、受信ID判断部330は、フレーム解釈部320へ通知する。
【0090】
受信IDリスト保持部340は、ゲートウェイ300aが受信するID(メッセージID)のリストである受信IDリスト(
図4参照)を保持する。
【0091】
不正判定処理部350は、フレーム解釈部320から通知されるIDフィールドの値を受け取り、不正判定ルール保持部360に保持している不正判定ルール(メッセージIDと、フレームが送信される周期とを対応付けた情報)に基づいて、受信されたフレームが不正か適正かに関する不正判定処理を行う。不正判定処理では、フレームの受信に際して、適正か否かを決定できるか否かを判別してその判別結果に応じて、転送のための送信用フレームのデータフィールドに付加する制御指示データの内容を選定して、制御指示データを転送処理部370へ通知する。不正判定処理部350は、フレームの受信時に迅速に適正か否かを決定できない場合には、つまり受信したフレームを迅速に転送した後においてフレームが適正であるか否かが決定され得る可能性がある場合には、制御指示データの値で、待機を指示する制御情報を表す。
図11に、制御指示データを含むデータフィールドのデータフォーマットの一例を示す。
【0092】
不正判定ルール保持部360は、ゲートウェイ300aが受信し得るフレームについての不正判定ルールを保持する。
図12に、不正判定ルールの一例を示す。
【0093】
転送処理部370は、転送ルール保持部380が保持する転送ルールに従って、受信したフレームのID(メッセージID)に応じて、転送するバスを決定し、転送するバスを示すバス情報とフレーム解釈部320より通知されたメッセージIDとデータと不正判定処理部350から通知された制御指示データとをフレーム生成部390へ通知する。なお、ゲートウェイ300aは、あるバスから受信されたエラーフレームについては他のバスに転送しない。
【0094】
転送ルール保持部380は、バス毎のフレームの転送についてのルールを表す情報である転送ルールを保持する。
図13は、転送ルールの一例を示した図である。
【0095】
フレーム生成部390は、フレーム解釈部320から通知されたエラーフレームの送信を指示する通知に従い、エラーフレームを構成し、エラーフレームをフレーム送受信部310へ通知して送信させる。また、フレーム生成部390は、転送処理部370より通知されたメッセージIDとデータと制御指示データとを使ってフレームを構成し、そのフレーム及びバス情報をフレーム送受信部310へ通知する。
【0096】
[1.11 フレームのデータフィールドのフォーマット例]
図11は、フレームの転送に際して送信に用いる送信用フレームのデータフィールドの一例を示す図である。
【0097】
送信用フレームのデータフィールドには、ゲートウェイ300aがECUから受信したフレームのデータフィールドに格納されたデータに加えて、制御指示データが格納される。
【0098】
送信用フレームにおける制御指示データは、
図11に例示するように、例えば、待機フラグ、待機終了指示フラグ、及び、待機終了指示有無フラグを含んで構成される。
【0099】
待機フラグは、例えば制御指示データの領域の先頭bit等であり、送信用フレームの受信後にECU(フレームを受信したECU100a〜100e等)でそのフレームのデータに対応した処理について待機の必要の有無を示す。
図11の例によれば、フレームを受信したECUにそのフレームのデータに対応した処理を実行せず待機するよう指示する場合には、待機フラグの値を「1」にし、待機の必要がない場合には、待機フラグの値を「0」にする。フレーム内の待機フラグの値が「1」であれば、受信したECUではそのフレームを保持して、一定条件(例えば後のフレーム内の待機終了指示フラグで待機解除つまり処理の実行開始の許可が指示される等)が成立するまで受信後の処理を抑止することになる。フレーム内の待機フラグの値が「0」であれば、受信したECUではそのフレームのデータに応じた機能処理を直ちに実行可能である。フレームの転送に際して送信用フレームに付加される制御指示データのデフォルト値は0であり、待機フラグは待機不要の旨を示す状態であるが、ゲートウェイ300aは、不正判定処理により一定の場合に、待機指示を示すように待機フラグを設定する。
【0100】
待機終了指示フラグは、例えば制御指示データの領域の最後尾bit等であり、ECUにおいて過去に受信したフレームを保持して処理の実行開始の許可を待機していたそのフレームに応じた処理についての処理方法(待機解除又は破棄)を指示するフラグである。
図11の例によれば、待機解除(つまり処理の実行開始の許可)を指示する場合には、待機終了指示フラグの値を「1」とし、破棄(つまりフレームに応じた処理を実行せずフレームを破棄すること)を指示する場合には、待機終了指示フラグの値を「0」とする。
【0101】
待機終了指示有無フラグは、例えば制御指示データの領域の先頭bitと最後尾bitとの間の1bit等であり、待機終了指示フラグが有効であるか否かを示すフラグである。あるフレームにおける制御指示データには、そのフレームの処理の待機に係る待機フラグが含まれるが、先行するフレームについての処理方法(待機解除又は破棄)を指示する待機終了指示フラグを含む場合と含まない場合があり得る。
図11の例によれば、制御指示データにおいて、有効な待機終了指示フラグを含む場合には待機終了指示有無フラグの値を「1」とし、有効な待機終了指示フラグを含まない場合には待機終了指示有無フラグの値を「0」とする。
【0102】
[1.12 不正判定ルール例]
図12は、ゲートウェイ300aの不正判定ルール保持部360が保持する不正判定ルールの一例を示す。不正判定ルールは、フレームが車載ネットワークシステム10において予め定められたルールに則って送信された適正なものか否か(不正なものか)を判別するために用いられる。
図12では不正判定ルール保持部360が保持する不正判定ルールのうち一部を例示している。
図12の不正判定ルールの例は、ゲートウェイ300aが接続するバスで送受信される各フレームのID(メッセージID)毎についてのフレームの送信周期について示している。
図12の例では、メッセージID「1」、「2」、「3」、「4」のそれぞれのフレームが送信される周期はそれぞれ、24、24、120、90msecであることを示している。
【0103】
ゲートウェイ300aでは、
図12に例示するような周期と、一定量(例えば3ms)のマージンとに基づいて、受信したフレームと、同じIDの1回前に受信したフレームとの受信間隔によってフレームが適正であるか否かを判定する。例えば、バスでフレーム間の衝突が生じた場合の調停(再送制御)による受信間隔のゆらぎを考慮して、受信間隔が周期プラスマイナス一定量(例えば3ms)のマージンの範囲内であれば受信したフレームは適正と判定される。また、そのマージンの範囲より短い受信間隔で受信したフレームであっても、マージンの範囲内に受信された同じIDのフレームがない場合には適正と判定される。マージンの範囲より短い受信間隔で受信したフレームは、そのマージンの範囲内に受信された同じIDのフレームがある場合には不正と判定される。ここでは、どのIDのフレームについても同じ量のマージンが定められるとして説明するが、ID毎にマージンの量を相違させても良い。
【0104】
[1.13 転送ルール例]
図13は、ゲートウェイ300a等の転送ルール保持部380が保持する転送ルールの一例を示す。
図13の転送テーブルで規定された転送ルールは、転送元のバスと転送先のバスと転送対象のID(メッセージID)とを対応付けている。転送ルールに従ってゲートウェイ300aは、転送を行うか否か、どのバスへと転送を行うか等を決定する。
【0105】
図13の例では、バス200aから受信するフレームはメッセージIDに関わらず、バス200bに転送するように設定されていることを示している。また、バス200bから受信するフレームのうち、バス200aにはメッセージIDが「3」であるフレームのみが転送されるように設定されていることを示している。なお、
図13の例では、ゲートウェイ300bの転送ルール保持部380が保持する転送ルールを合わせて示しており、バス200bから受信するフレームは全てバス200cに転送されるが、バス200cから受信するフレームは、バス200bに転送されないように設定されていることを示している。
【0106】
[1.14 フレームの転送に係る動作例]
図14は、ECU100aからバス200aに送信したフレームをゲートウェイ300aが受信した際に、フレームが適正か不正かの判定を行い、所定条件が満たされた場合に、待機を指示するよう待機フラグを設定した制御指示データをフレームに含めてバス200bに転送する動作例を示す。この所定条件は、受信したフレームについての転送の際において、フレームが適正か否かを決定できない状況で満たされる条件である。以下、
図14に即して各装置の動作の概要を説明する。各装置の詳細な動作については後に
図15〜
図19を用いて説明する。
【0107】
まず、ECU100aは、バス200aに対してフレームを送信するフレーム送信処理を実行する(ステップS10)。
【0108】
ゲートウェイ300aは、ECU100aから送信されたフレームを受信する(ステップS20)。
【0109】
ゲートウェイ300aは、不正判定ルールに基づいて、受信したフレームが適正か不正かを判定する不正判定処理を行う(ステップS30)。この不正判定処理により、例えば攻撃者が不正に車載ネットワーク(バス200a〜200c等)にアクセスして不正なフレーム(フレームが則るべき予め定められたルールに適合していないフレーム)を送信した場合に、そのフレームを転送せずに破棄することが可能となり得る。但し、ゲートウェイ300aは、フレームが則るべきルールへの適合の度合いが低いものの、適正であると最終的に判定(決定)される可能性があるフレームについては直ちに破棄をせず、フレームの転送の後に最終的な判定のための最終判定処理を行い得る。受信したフレームが適正か否かを即座に判定できれば、ゲートウェイ300aは、待機不要を示すように待機フラグが設定されている制御指示データを含めた送信用フレームを生成する。
図14では、受信したフレームが適正か否かを即座に判定(決定)できない状況であるという所定条件が満たされる例を示している。この所定条件が満たされる場合には、フレームの転送に際してフレームが適正か否かについて未決定であることを通知すべく、ゲートウェイ300aは、待機指示を示すように待機フラグを設定した制御指示データを含めた送信用フレームを生成する。そして、ゲートウェイ300aは、受信したフレームが適正か否かを最終的に判定できるタイミングで最終判定処理が実行されるようにタイマーを設定する。
【0110】
ゲートウェイ300aは、待機指示を示すように待機フラグを設定した制御指示データを含めた送信用フレームを、バス200bに送信する(ステップS31)。
【0111】
ステップS31でゲートウェイ300aによりバス200bに送信されたフレームを、ECU100cが受信する(ステップS32)。
【0112】
ECU100cは、受信したフレームに含まれる制御指示データの待機フラグを確認して、そのフレームの受信後の処理の実行を抑止してそのフレームを保持し、次の指示を待つ待機処理を行う(ステップS33)。
【0113】
ゲートウェイ300aは、ステップS30に際して設定したタイマーにより、受信したフレームが適正か否かを最終的に判定できるタイミングで最終判定処理を実行する(ステップS40)。
図14では、最終判定処理では、フレームが適正であったと判定した例を示している。
【0114】
ゲートウェイ300aは、最終判定処理による判定結果に応じて、待機終了指示フラグを設定し、更に待機終了指示有無フラグの値を有効な待機終了指示フラグを含む旨の値「1」とした制御指示データを含めたフレームを生成して送信する(ステップS41)。なお、ゲートウェイ300aは、最終判定処理による判定結果が適正であれば待機解除指示を示すように待機終了指示フラグを設定し、不正であれば破棄指示を示すように待機終了指示フラグを設定する。また、有効な待機終了指示フラグを含む制御指示データは、ゲートウェイ300aが別途受信したフレームを転送する際の送信用フレームに格納してもよいし、転送でなく新たに生成したフレームに格納してもよい。有効な待機終了指示フラグを含む制御指示データをゲートウェイ300aが別途受信したフレームを転送する際の送信用フレームに格納する場合には、その制御指示データの待機フラグは、その別途受信したフレームが適正か否かを即座に判定できるか否かに応じて設定される。
【0115】
ステップS41でゲートウェイ300aによりバス200bに送信されたフレームを、ECU100cが受信する(ステップS42)。
【0116】
ECU100cは、ステップS42で受信したフレームに含まれる制御指示データの待機終了指示有無フラグが「1」であることを確認し、待機終了指示フラグを確認し、待機解除指示を示す場合には既に待機処理をして保持していたフレームの実行を開始する(ステップS43)。この待機解除指示を受けた場合にECU100cにとってステップS32で受信した待機指示は、フレームの処理の実行開始を遅延させるべき旨を示す指示であったことになり、ステップS43でフレームの受信から遅延して実行が開始される。
【0117】
その後、ECU100aは、バス200aに対して次のフレームを送信し(ステップS50)、ゲートウェイ300aは、ECU100aから送信されたフレームを受信する(ステップS60)。
【0118】
[1.15 ECU100aのフレーム送信処理]
図15は、ECU100aにおけるフレーム送信処理の一例を示すフローチャートである。
【0119】
ECU100aは、データ取得部170により、ECU100aにつながっているセンサ等の状態を示すセンサーデータを取得し、フレーム生成部180に通知する(ステップS101)。
【0120】
ECU100aは、取得したセンサーデータに基づいて、フレーム生成部180で送信するフレームを生成する(ステップS102)。
【0121】
ECU100aは、フレーム生成部180により生成されたフレームをフレーム送受信部110によりバス200aに対して送信する(ステップS103)。CANにおいて送信されるフレームは、送信先を指定しないため、ブロードキャストされ、バス200aに接続された各ノード(ゲートウェイ300a等)はそのフレームを受信し得る。
【0122】
[1.16 ゲートウェイ300aのフレーム転送処理]
図16は、ゲートウェイ300aにおける、バス200aから受信したフレームをバス200bに転送するフレーム転送処理の一例を示すフローチャートである。以下、同図に即してゲートウェイ300aのフレーム転送処理について説明する。
【0123】
ゲートウェイ300aは、バス200aに送信されたフレームを受信する(ステップS201)。
【0124】
ゲートウェイ300aは、ステップS201で受信したフレームが適正か否かについて判定する不正判定処理を行う(ステップS202)。不正判定処理(
図17参照)において必要に応じてタイマーが設定され、タイマーによりステップS205の後において最終判定処理(
図18参照)が実行され得る。
【0125】
ゲートウェイ300aは、転送ルール保持部380に保持する転送テーブルで定めた転送ルールを確認する(ステップS203)。
【0126】
ゲートウェイ300aは、転送テーブルに転送先のバスが定められていれば、転送のために転送フレーム(送信用フレーム)を生成する(ステップS204)。
【0127】
ゲートウェイ300aは、生成した送信用フレームをバス200bに送信(ブロードキャスト)する(ステップS205)。
【0128】
[1.17 ゲートウェイ300aの不正判定処理]
図17は、ゲートウェイ300aにおける、受信したフレームの送信間隔からフレームが適正か不正かの判定を行う不正判定処理の一例を示すフローチャートである。以下、同図に即してゲートウェイ300aの不正判定処理について説明する。
【0129】
ゲートウェイ300aは、不正判定ルール保持部360が保持する不正判定ルールにより、受信したフレームに含まれるメッセージIDに該当する周期を取得する(ステップS301)。
【0130】
ゲートウェイ300aは、受信したフレームと同じメッセージIDを有する、過去に受信したフレームの受信タイミングの情報を取得する(ステップS302)。
【0131】
ゲートウェイ300aは、過去に受信したフレームと、現在受信したフレームとの受信間隔を算出する(ステップS303)。
【0132】
ゲートウェイ300aは、ステップS303で算出した受信間隔が、周期−マージンより短いか否かを判定する(ステップS304)。
【0133】
ゲートウェイ300aは、ステップS304で受信間隔が周期−マージンより短いと判定された場合には、フレームの周期が異常であり、受信したフレームが適正か否かの決定に時間を要すると判断し、転送に係る送信用フレームに含ませる制御指示データについての待機フラグを、待機指示を示すように設定する(ステップS305)。ここでは説明の便宜上、受信間隔が周期−マージンより短い場合に、受信したフレームが適正か否かの決定に時間を要すると判断することとしたが、例えば、受信間隔が周期−マージンより短い程度が予め定められた一定程度より小さい場合に限って、受信したフレームが適正か否かの決定に時間を要すると判断し、一定程度より大きく周期とずれている場合には、フレームが不正と判断することとしても良い。
【0134】
ステップS305に続いてゲートウェイ300aは、不正判定ルールで定められた正規の周期±(プラスマイナス)マージンの範囲内に同じIDの別のフレームを受信するかどうかに基づいて現在受信したフレームが適正か否かを後に判定する最終判定処理を起動するために、タイマーをセットする(ステップS306)。なお、ゲートウェイ300aは、最終判定処理での判定対象としての現在受信したフレームについての情報を最終判定処理の起動まで保持する。ステップS306においては、現在受信したフレームと同じメッセージIDを有するフレームの過去の受信タイミングに、正規の周期+マージンを加算したタイミングで最終判定処理が起動されるようにタイマーがセットされる。タイマーによって起動される最終判定処理については、後に
図18を用いて説明する。
【0135】
ゲートウェイ300aは、ステップS304で受信間隔が周期−マージンより短くないと判定した場合には、受信したフレームが適正であると判断し、過去に受信したフレームの受信タイミングの情報を破棄して(ステップS307)、現在受信したフレームの受信タイミングの情報を保存する(ステップS308)。なお、受信したフレームが適正であると判断するための条件は更に加えられていても良い。また、受信したフレームが適正であると判断した場合にゲートウェイ300aは、転送に係る送信用フレームに含ませる制御指示データについての待機フラグを、待機不要を示すデフォルト状態のままにしておく。
【0136】
[1.18 ゲートウェイ300aの最終判定処理]
図18は、ゲートウェイ300aにおける、受信したフレームが適正か不正かの最終的な判定を行う最終判定処理の一例を示すフローチャートである。以下、同図に即してゲートウェイ300aの最終判定処理について説明する。
【0137】
ゲートウェイ300aは、最終判定処理での判定対象とするフレームと同じIDの過去のフレームの受信タイミングからの経過時間が、正規の周期±マージンの範囲内の受信タイミングで、同じIDの別のフレームを受信したか否かを確認する(ステップS401)。ステップS401で、正規の周期±マージンの範囲内の受信タイミングで、同じIDの別のフレームを受信していたと確認した場合には、ゲートウェイ300aは、破棄指示を示す制御指示データを送信用フレームに含ませる。即ち、この場合にはゲートウェイ300aは、判定対象のフレームが不正であると最終的に判定(決定)して、転送に係る送信用フレームに含ませる制御指示データに、ECUに対してフレームの処理について抑止して待機させているところのフレームを破棄するように指示する情報を設定する(ステップS402)。ステップS402ではゲートウェイ300aは、制御指示データの待機終了指示フラグを、破棄指示を示すように設定し、待機終了指示有無フラグを待機終了指示フラグが有効である旨を示すように設定する。
【0138】
ステップS401で、正規の周期±マージンの範囲内の受信タイミングで、同じIDの別のフレームを受信していないと確認した場合には、ゲートウェイ300aは、待機解除を示す制御指示データを送信用フレームに含ませる。即ち、この場合にはゲートウェイ300aは、判定対象のフレームが適正であると最終的に判定(決定)して、転送に係る送信用フレームに含ませる制御指示データに、ECUに対してフレームの処理について抑止して待機させているところのフレームの処理の実行開始(つまり待機解除)を指示する情報を設定する(ステップS403)。ステップS403ではゲートウェイ300aは、制御指示データの待機終了指示フラグを、待機解除指示を示すように設定し、待機終了指示有無フラグを待機終了指示フラグが有効である旨を示すように設定する。このとき、
図18では省略しているが、ゲートウェイ300aは、過去のフレームの受信タイミングの情報の破棄及び判定対象のフレームの受信タイミングの保存(ステップS307、S308)を行い得る。
【0139】
ステップS402又はステップS403の後に、ゲートウェイ300aは、判定対象のフレームと同じメッセージIDを設定して制御指示データをデータフィールドに含めたフレームを、バス200aに送信(ブロードキャスト)する(ステップS404)。
【0140】
[1.19 ECU100cのフレーム受信処理]
図19は、ECU100cにおけるフレーム受信処理の一例を示すフローチャートである。以下、同図に即してECU100cのフレーム受信処理について説明する。
【0141】
ECU100cは、バス200bに送信されたフレームを受信する(ステップS501)。
【0142】
ECU100cは、受信したフレームのデータフィールド内の制御指示データを確認し、待機指示が含まれていないかどうかを判定する(ステップS502)。制御指示データ内の待機フラグが待機指示を示す値「1」であれば、待機指示が含まれていると判定される。待機指示が含まれていない場合(つまり待機フラグが待機不要を示す場合)には、ECU100cは、受信したフレームに応じた処理(フレームのデータに応じた機能処理等)を実行する(ステップS503)。ステップS503での処理の実行は、フレームの受信後に速やかに開始される。
【0143】
ステップS502で、待機指示が含まれていると判定した場合は、ECU100cは、ステップS501で受信したフレームを保持し、そのフレームに対する機能処理の実行を開始せずに、一定時間、次の待機終了指示の受信を待つ(ステップS504)。つまり、ステップS504ではECU100cは、ステップS501で受信したフレームと同一IDを有するフレームであって制御指示データの待機終了指示有無フラグが有効な待機終了指示フラグが有ることを示すフレームの受信を待機する。この一定時間は、待機終了指示が送信されるために十分な程度の時間である。一定時間経過しても、待機終了指示が受信されない場合には、ECU100cは、保持しているフレームについての待機を解除し、そのフレームを破棄する(ステップS507)。
【0144】
ステップS504で、制御指示データとして有効な待機終了指示フラグを含む、同一IDを持つフレームが受信された場合には、ECU100cは、その待機終了指示フラグが待機解除を指示するものであるか否かを判別する(ステップS505)。つまり、ECU100cは、処理の実行について待機しているフレームの処理を実行開始する指示が制御指示データで示されているか否かを判別する。
【0145】
ステップS505で、待機解除が指示されていると判別した場合にはECU100cは、処理の実行について待機しているフレームについての待機状態を解除し、そのフレームに応じた機能処理の実行を開始する(ステップS506)。また、ステップS505で、待機解除ではなく破棄が指示されていると判別した場合(待機終了指示フラグが破棄を指示すると判別した場合)には、ECU100cは、待機しているフレームを破棄する(ステップS507)。
【0146】
[1.20 実施の形態1の効果]
実施の形態1に係る車載ネットワークシステム10では、ゲートウェイ300aがフレーム(データフレーム)のデータフィールドに制御指示データを設定してフレームの送信を行うことで、ECUにおける受信したフレームの処理をコントロールする。ゲートウェイ300aは、制御指示データに、フレームを受信するECUでの処理を制限する制御情報(例えば待機指示を示すように設定した待機フラグ)を含ませ得る。このように、ゲートウェイ300aが、受信したフレームの転送に際して、待機指示を表すように制御指示データを設定した送信用フレームを送信することで、受信したフレームが適正か否かの判定処理に要する時間の確保が可能になる。また、受信したフレームが最終的に適正と判定される可能性がある場合においてフレームの転送を止めてしまうのではなく、待機指示を付してフレームの転送を行うことで、受信するECU側でフレームが到着しないことによって異常処理等を実行してしまうことを防止できる。つまり、転送に際してフレームに付加される制御指示データにより、フレームを受信するECUにおいては、フレームを送信する正規のECUが故障してフレームが届かない状態ではないことを識別可能となる。また、ゲートウェイ300aで、フレームが適正か不正かを判定することで、個別のECU100a〜100eにそのような判定の機能を有する必要がなくなり、システム全体としてのコストを抑制でき、不正判定ルールの更新等を容易化できる。
【0147】
(実施の形態2)
以下、実施の形態1で示した車載ネットワークシステム10の一部を変形した車載ネットワークシステム20について説明する。
【0148】
本実施の形態に係る車載ネットワークシステム20では、車載ネットワークにおいて、データフィールド内にデータとチェックサムとを含めたフレームが送受信されるようにしている。そして、バス間でフレームを転送するゲートウェイ装置がフレームに制御指示データを付加するのではなく、チェックサムへ必要に応じて制御情報を重畳させる。本実施の形態においてゲートウェイ装置(ゲートウェイ1300a、1300b)がチェックサムへ重畳させる情報は、例えば、実施の形態1で示した制御指示データの待機フラグによる待機指示、待機終了指示フラグによる待機解除指示、及び、待機終了指示フラグによる破棄指示である。また、車載ネットワークシステム20では、ゲートウェイ装置は、受信したフレームが適正か否かの最終的な判定を、車両外のサーバ400との通信によって行う。
【0149】
[2.1 車載ネットワークシステム20の全体構成]
図20は、実施の形態2に係る車載ネットワークシステム20の全体構成を示す図である。車載ネットワークシステム20は、バス200a、200b、200cと、ゲートウェイ1300a、1300b、及び、各種機器に接続されたECU1100a〜1100e等のECUといったバスに接続された各ノードと、車両外のネットワーク90とサーバ400とを含んで構成される。
【0150】
この車載ネットワークシステム20は、実施の形態1で示した車載ネットワークシステム10(
図1参照)におけるゲートウェイ300a、300b及びECU100a〜100eを、ゲートウェイ1300a、1300b及びECU1100a〜1100eに置き換えて、サーバ400及びネットワーク90を追加したものである。実施の形態1と同一の構成については、
図20において同一の符号を付加しており、説明を省略する。ここで説明しない点については、車載ネットワークシステム20は、車載ネットワークシステム10と同様である。
【0151】
ECU1100a〜1100eは、いずれかのバスと接続され、また、それぞれエンジン101、ブレーキ102、ドア開閉センサ103、窓開閉センサ104、コーナーセンサ105に接続されている。ECU1100a〜1100eは、基本的には実施の形態1で示したECU100a〜100eと同様の機能を有し、更に、フレームに含ませるチェックサムを取り扱うための機能が付加されている。ECU1100a〜1100eのそれぞれは、接続されている機器の状態を取得し、定期的に状態を表すデータと、ID、DLC及びそのデータから算出するチェックサムとを含むフレーム等をネットワーク(つまりバス)に送信している。また、ECU1100a〜1100eは、受信したフレームにおけるチェックサムを確認し、チェックサムに重畳されている制御情報を抽出して、受信したフレームのデータに応じた機能処理を実行するか待機するか等に係る制御を行う。
【0152】
ゲートウェイ1300a、1300bは、異なる複数の通信路を接続して通信路間でデータを転送するゲートウェイ装置である。ゲートウェイ1300aは、ECU1100a及びECU1100bがつながるバス200aと、ECU1100c及びECU1100dがつながるバス200bと接続している。また、ゲートウェイ1300bは、ECU1100c及びECU1100dがつながるバス200bと、ECU1100eがつながるバス200cと、接続している。
【0153】
ゲートウェイ1300a、1300bは、一方のバスから受信したフレームについて、適正か不正かに関連した条件判定を行って、必要に応じて待機指示をフレーム内のチェックサムに重畳させて、他のバスに転送する機能を有する。ゲートウェイ1300a、1300bにおけるフレームの転送は、一方のバスから受信したフレームの内容に基づく情報を含む送信用フレームを生成して、その送信用フレームのECUにおける受信後の処理の制限に関する情報(例えば待機指示)を必要に応じてその送信用フレームのデータフィールド内のチェックサムに含めて、その送信用フレームを他のバスに送信することで実現される。また、ゲートウェイ1300a、1300bは、ネットワーク90を介して車両外のサーバ400との通信を行い、バスから受信したフレームについての情報を送信して、適正か不正かの判定結果を受信する機能を持つ。また、ゲートウェイ1300a、1300bは、受信したフレームを転送するかしないかを接続されたバス間毎に切り替えることも可能である。ゲートウェイ1300a、1300bも一種のECUである。
【0154】
サーバ400は、ゲートウェイ1300a、1300bと、ネットワーク90を介して通信し、車載ネットワークで送信されるフレームの情報を取得して蓄積するコンピュータである。サーバ400は、例えば1日1回等の周期で、ゲートウェイ1300a等からバスで受信されたフレームに関する情報を取得して蓄積し管理し得る。サーバ400は、蓄積している情報に基づいて、ゲートウェイ1300a、1300bから情報が送信された判定対象のフレームについて適正か不正かを判定して、その判定結果をゲートウェイ1300a、1300bに通知する機能を持つ。ネットワーク90を介した通信には、無線通信、或いは、有線通信のいかなる通信プロトコルを適用しても良い。
【0155】
[2.2 フレームのデータフィールドのフォーマット例]
図21は、ECU1100a〜1100eが送信するフレームのデータフィールドのフォーマットの一例を示す図である。このフォーマットのフレームが、転送を行うゲートウェイ1300a、1300bによっても送信される。
【0156】
データフィールドには、センサーデータの値を示すデータと、ID、DLC及びそのデータから算出されるチェックサムとが含まれる。なお、ID、DLC及びデータの全てをチェックサムの算出に用いる必要はなく、任意の組み合わせ等が利用され得る。チェックサムは、フレームの一部の内容であるID、DLC或いはデータ等の値が伝送途中で変化していないことを確認するための、そのフレームの一部の内容を反映した検証用の情報である。フレームの少なくとも一部の内容を反映した値となるようにチェックサムをフレームの送信元のECUにおいて設定し、フレームを受信したECUではチェックサムを、フレームのその一部の内容に基づいて検証する。
【0157】
[2.3 チェックサムの算出例]
図22は、チェックサムの算出に用いる情報の一例を示す図である。
【0158】
ECU1100a〜1100eは、例えば、
図22に示すように、フレームの11bitのID(メッセージID)の上位8bitと、4bitのDLCと、8bit(1Byte)ずつに分けたDLC分のデータとを全て加算することでチェックサムを算出する。この例においてチェックサムは8bitであり、チェックサムの算出においてIDは、8bitとなるよう上位bitのみを抽出し、残りを削除する。またDLCも、8bitとなるよう、残り4bit(下位4bit)を「0」のbit値でパディングする。全て8bitに整形したID、DLC、データ8bit分ずつを全て加算することでチェックサムが算出される。
【0159】
ゲートウェイ1300a、1300bは、実施の形態1で示したゲートウェイ300a、300bが設定した制御指示データの待機フラグによる待機指示、待機終了指示フラグによる待機解除指示、及び、待機終了指示フラグによる破棄指示のそれぞれに相当する各制御情報を、転送に際して必要に応じてチェックサムに重畳する。具体例としては、DLCのパディング部分の下位4bitのうち、先頭の1bitを待機指示の場合に「1」のbit値にし、次の1bitを待機解除指示の場合に「1」のbit値にし、次の1bitを破棄指示の場合に「1」のbit値にして、チェックサムの算出を行う。ゲートウェイ1300a、1300bは、受信したフレームが適正か不正かの最終的な判定(決定)をその受信の際に完了できない場合に待機指示を示す制御情報を、フレームのチェックサムに重畳させて、そのフレームを送信することでフレームの転送を行う。また、ゲートウェイ1300a、1300bは、フレームについて待機指示をした後においてそのフレームが適正か不正かの最終的な判定(決定)が完了した際には、適正であれば待機解除指示、或いは、不正であれば破棄指示を示す制御情報をチェックサムに重畳させたフレームを送信する。
【0160】
[2.4 ECU1100aの構成]
ECU1100aは、基本的にECU100aと同様の構成(
図3参照)を有する。但し、ECU1100aでは、フレーム生成部180では生成するフレームにチェックサムを付加する。また、フレーム処理部150では、フレーム内のチェックサムの確認を行って、待機指示、待機解除指示或いは破棄指示といった制御情報が付されていれば抽出して、その制御情報に応じて処理を抑止してフレームについて待機する、待機を解除して待機していたフレームの処理の実行を開始する、或いは、待機していたフレームを破棄する。
【0161】
[2.5 ゲートウェイ1300aの構成]
図23は、ゲートウェイ1300aの構成図である。ゲートウェイ1300aは、フレーム送受信部310と、フレーム解釈部320と、受信ID判断部330と、受信IDリスト保持部340と、不正判定処理部1350と、外部通信部1351と、不正判定ルール保持部360と、転送処理部370と、転送ルール保持部380と、フレーム生成部1390とを含んで構成される。これらの各構成要素の各機能は、例えばゲートウェイ1300aにおける通信回路、メモリに格納された制御プログラムを実行するプロセッサ或いはデジタル回路等により実現される。なお、ゲートウェイ1300bもゲートウェイ1300aと基本的に同様の構成を備える。なお、ゲートウェイ1300aの構成のうち、実施の形態1で示したゲートウェイ300a(
図10参照)と同一の構成については
図23で同一の符号を付加し、説明を省略する。
【0162】
不正判定処理部1350は、フレーム解釈部320から通知されるIDフィールドの値を受け取り、不正判定ルール保持部360に保持している不正判定ルール(メッセージIDと、フレームが送信される周期とを対応付けた情報)に基づいて、受信されたフレームが不正か適正かに関する不正判定処理を行う。不正判定処理では、フレームの受信に際して、適正か否かを決定できるか否かを判別してその判別結果に応じて、転送するフレームのチェックサムに待機指示を示す制御情報を重畳するか否かを選択して選択結果を転送処理部370へ通知する。この選択結果は例えば実施の形態1で示した制御指示データの待機フラグと同様である。不正判定処理部1350は、フレームの受信時に迅速に適正か否かを決定できない場合には、チェックサムに待機を指示する制御情報を重畳するように選択結果を転送処理部370に通知する。この選択結果は転送処理部370を経てフレーム生成部1390に伝達され、生成するフレームに含ませるチェックサムの算出に用いられる。なお、不正判定処理部1350は、フレームの受信時に迅速に適正か否かを決定できない場合において、受信したフレームのメッセージID、データフィールドの内容、及び、受信タイミング(時刻)等の情報を、外部通信部1351を介してサーバ400に通知することでその受信したフレームを判定対象として最終的な判定を依頼する。この依頼を受けるとサーバ400では、判定対象のフレームが適正であるか不正であるかが判定(決定)され、その判定結果がゲートウェイ300aの外部通信部1351を介して不正判定処理部1350に通知される。フレームの受信時に迅速に適正か否かを決定できない場合については、実施の形態1で示した不正判定処理部350と同様に、フレームの受信間隔が周期−マージンより短い場合である。なお、不正判定処理部1350は、フレームの受信間隔が周期−マージンより短い程度が予め定められた一定程度より小さい場合に限って、受信したフレームが適正か否かをフレームの受信時に迅速に適正か否かを決定できないと判断し、一定程度より大きく周期とずれている場合には、フレームが不正と判断することとしても良い。不正判定処理部1350は、サーバ400での判定結果に応じて、転送処理部370を介してフレーム生成部1390にフレームを生成させて、そのフレームが、待機を指示する制御情報を含むフレームを先に送信したバスへ送信されるように制御する。即ち、不正判定処理部1350は、サーバ400で不正と判定されていればチェックサムに破棄を指示する制御情報を重畳させ、適正と判定されていればチェックサムに待機解除を指示する制御情報を重畳させたフレームが、送信されるように制御する。
【0163】
外部通信部1351は、不正判定処理部1350から通知されたデータに従ってサーバ400にデータを送信して判定を依頼(要求)する。また、サーバ400から通知された判定結果を、不正判定処理部1350に通知する。即ち、外部通信部1351は、自装置(ゲートウェイ1300a)を搭載する車両の外部の装置に対して、フレームが適正か否かについての判定(決定)の要求を送信した後にその決定の結果(判定結果)を受信する。
【0164】
フレーム生成部1390は、フレーム解釈部320から通知されたエラーフレームの送信を指示する通知に従い、エラーフレームを構成し、エラーフレームをフレーム送受信部310へ通知して送信させる。また、フレーム生成部1390は、転送処理部370より通知されたメッセージIDとデータと制御指示データ(待機、待機解除或いは破棄を指示する制御情報の指定)とを用いてチェックサムを算出してフレームを構成し、そのフレーム及びバス情報をフレーム送受信部310へ通知する。
【0165】
[2.6 サーバ400の構成]
図24は、サーバ400の構成図である。サーバ400は、通信部410と、不正判定部420と、車両データ保持部430とを含んで構成される。
【0166】
通信部410は、ネットワーク90を介してゲートウェイ1300a、1300bと通信する。また、ゲートウェイ1300a、1300bからの通知された、車載ネットワークで送信されるフレームの情報を車両データ保持部430へと通知する。また、不正判定部420から受けた通知内容を、ゲートウェイ1300a、1300bに通知する。
【0167】
不正判定部420は、サーバ400が、フレームが適正か否かについての最終的な判定をゲートウェイ1300a等に依頼された際に、通信部410を介して受信した情報と、車両データ保持部430に蓄積している過去に取得した車載ネットワークで送信されるフレームに関する情報とに基づいて、判定対象のフレームが適正か不正かを判定する。不正判定部420は、判定結果を通信部410に通知する。
【0168】
車両データ保持部430は、車載ネットワークで送信されるフレームの情報である車両データを保持する機能を有する。
【0169】
[2.7 車両データ例]
図25は、サーバ400が保持する車両データの一例を示す図である。
【0170】
同図は、車両データとして、特定の車両に搭載しているECUが送信するフレームのメッセージID毎に、これまでの周期異常発生回数を記録している例を示す。サーバ400は、ゲートウェイ1300a、1300bから、車載ネットワークで送信されたフレームの受信時刻等の情報を受信しているので、この情報を蓄積し、例えば随時フレームの周期を解析して周期異常が生じている回数を記録している。同図に例示する車両データは、1台の車両の情報について示したが、サーバ400は複数の車両それぞれについての情報を保持し得る。
【0171】
[2.8 ECU1100aのフレーム送信処理]
図26は、ECU1100aにおけるフレーム送信処理の一例を示すフローチャートである。同図において実施の形態1で示したECU100aのフレーム送信処理(
図15参照)と同じステップについては、同じ符号を付しており、ここでは説明を適宜省略する。
【0172】
ECU1100aは、ステップS101で取得したセンサーデータに基づいて、フレーム生成部180で、データフィールド内のデータの後にチェックサムを含めて、送信するフレームを生成する(ステップS1102)。ECU1100aは、
図22で示した情報からチェックサムを算出する。そして、ステップS103で、ECU1100aは、生成したフレームをバス200aに送信する。
【0173】
[2.9 ゲートウェイ1300aのフレーム転送処理]
図27は、ゲートウェイ1300aにおける、バス200aから受信したフレームをバス200bに転送するフレーム転送処理の一例を示すフローチャートである。同図において実施の形態1で示したゲートウェイ300aのフレーム転送処理(
図16参照)と同じステップについては、同じ符号を付しており、ここでは説明を適宜省略する。
【0174】
ゲートウェイ1300aは、ステップS201でバス200aから受信したフレームが適正か否かについて判定する不正判定処理を行う(ステップS1202)。ゲートウェイ1300aは不正判定処理では必要に応じてサーバ400に判定を依頼する。不正判定処理については、
図28を用いて後に説明する。
【0175】
ゲートウェイ1300aは、転送ルールを定める転送テーブルに転送先のバスが定められていれば、転送のために転送フレーム(チェックサムを含む送信用フレーム)を生成する(ステップS1204)。チェックサムを含む送信用フレームを生成する際には、ゲートウェイ1300aは、ステップS1202での不正判定処理の結果に基づき、フレームの受信時に迅速に適正か否かを決定できない場合に限りチェックサムに待機を指示する制御情報を重畳し、その他の場合には
図22で示した情報からチェックサムを算出する。そしてステップS205で、ゲートウェイ1300aは、チェックサム付きの送信用フレームをバス200bに送信(ブロードキャスト)する。
【0176】
[2.10 ゲートウェイ1300aの不正判定処理]
図28は、ゲートウェイ1300aにおける、受信したフレームの送信間隔からフレームが適正か不正かの判定を行う不正判定処理の一例を示すフローチャートである。同図において実施の形態1で示したゲートウェイ300aの不正判定処理(
図17参照)と同じステップについては、同じ符号を付しており、ここでは説明を適宜省略する。
【0177】
ゲートウェイ1300aは、ステップS304で受信間隔が周期−マージンより短いと判定された場合には、フレームの周期が異常であり、受信したフレームが適正か否かの決定に時間を要すると判断し、送信用フレームに含ませるチェックサムに待機指示を示す制御情報を重畳するように設定する(ステップS1305)。ゲートウェイ1300aは例えば制御指示データの待機フラグを、待機指示を示すように設定して、制御指示データを、転送処理部370を介してフレーム生成部1390に伝達する。そして、フレーム生成部1390では、その制御指示データに基づいてチェックサムに待機指示を示す制御情報を重畳させる。
【0178】
ステップS1305に続いてゲートウェイ1300aは、受信したフレームのメッセージIDと、データフィールドの内容と、受信タイミング(時刻)の情報を、サーバ400に通知することでその受信したフレームを判定対象として最終的な判定を依頼する(ステップS1306)。ゲートウェイ1300aは、サーバ400に判定を依頼した場合には、後にサーバ400からの判定結果を得るためのサーバ判定対応処理を行う。
【0179】
[2.11 ゲートウェイ1300aのサーバ判定対応処理]
図29は、ゲートウェイ1300aがサーバ400に判定を依頼した後に行うサーバ判定対応処理の一例を示すフローチャートである。以下、同図に即してゲートウェイ1300aのサーバ判定対応処理について説明する。
【0180】
ゲートウェイ1300aは、サーバ400から判定結果を受信する(ステップS1400)。
【0181】
サーバ400の判定結果が、判定対象のフレームが不正であることを示す場合には(ステップS1401)、ゲートウェイ1300aは、チェックサムに破棄を指示する制御情報を重畳するように設定する(ステップS1402)。ゲートウェイ1300aは例えば制御指示データの待機終了指示フラグを、破棄指示を示すように設定して、制御指示データを、転送処理部370を介してフレーム生成部1390に伝達する。そして、フレーム生成部1390では、その制御指示データに基づいてチェックサムに破棄指示を示す制御情報を重畳させる。
【0182】
サーバ400の判定結果が、判定対象のフレームが不正でない(適正である)ことを示す場合には(ステップS1401)、ゲートウェイ1300aは、チェックサムに待機解除(つまりフレームに対する機能処理の実行開始)を指示する制御情報を重畳するように設定する(ステップS1403)。ゲートウェイ1300aは例えば制御指示データの待機終了指示フラグを、待機解除指示を示すように設定して、制御指示データを、転送処理部370を介してフレーム生成部1390に伝達する。そして、フレーム生成部1390では、その制御指示データに基づいてチェックサムに待機解除指示を示す制御情報を重畳させる。
図29では省略しているが、ゲートウェイ1300aは、過去のフレームの受信タイミングの情報の破棄及び判定対象のフレームの受信タイミングの保存(ステップS307、S308)を行い得る。
【0183】
ステップS1402又はステップS1403の後に、ゲートウェイ1300aは、判定対象のフレームと同じメッセージIDを設定して待機解除或いは破棄指示を示す制御情報を重畳したチェックサムをデータフィールドに含めたフレームを、バス200aに送信(ブロードキャスト)する(ステップS1404)。
【0184】
[2.12 サーバ400の動作例]
図30は、サーバ400が、ゲートウェイ1300aからの判定対象のフレームについて適正か不正かの判定を依頼された場合に行う判定処理の動作例を示すフローチャートである。
【0185】
サーバ400は、判定の依頼としてのデータ(判定対象のフレームのメッセージID、データフィールドの内容、受信タイミング(時刻)等の情報)を受信する(ステップS1601)。
【0186】
サーバ400は、車両データ(
図25参照)に基づいて、判定対象のフレームのメッセージIDのフレームでこれまでに度々(一定数以上)の周期異常が発生しているか否かを確認し(ステップS1602)、度々周期異常が発生しているのであれば、判定対象のフレームが適正であると判定する(ステップS1603)。また、度々周期異常が発生していないのであれば、サーバ400は、判定対象のフレームが不正であると判定する(ステップS1604)。
【0187】
ステップS1603又はステップS1604に続いて、判定対象のフレームが適正か不正かについての判定結果をサーバ400は、判定の依頼元のゲートウェイ1300aに送信する(ステップS1605)。
【0188】
[2.13 ECU1100cのフレーム受信処理]
図31は、ECU1100cにおけるフレーム受信処理の一例を示すフローチャートである。同図において実施の形態1で示したECU100cのフレーム受信処理(
図19参照)と同じステップについては、同じ符号を付しており、ここでは説明を適宜省略する。
【0189】
ECU1100cは、ステップS501で受信したフレームのデータフィールド内のチェックサムを確認するためのチェックサム確認処理を行う(ステップS1511)。チェックサム確認処理によりチェックサムに待機指示、待機解除指示或いは破棄指示が重畳されている場合に、これらの各指示を抽出する。
【0190】
次に、ECU1100cは、受信したフレームに、待機指示が含まれていないかどうかを判定する(ステップS1502)。チェックサム確認処理により、待機指示が抽出されていれば待機指示が含まれていると判定される。待機指示が含まれていない場合(つまり待機指示を示す制御情報がチェックサムに重畳されていない場合)には、ECU1100cは、受信したフレームに応じた処理(フレームのデータに応じた機能処理等)を実行する(ステップS503)。
【0191】
ステップS1502で、待機指示が含まれていると判定した場合は、ECU1100cは、ステップS501で受信したフレームを保持し、そのフレームに対する機能処理の実行を開始せずに、一定時間、次の待機終了指示(待機解除指示或いは破棄指示)の受信を待つ(ステップS1504)。つまり、ステップS1504ではECU1100cは、ステップS501で受信したフレームと同一IDを有するフレームであってチェックサムに待機解除或いは破棄を指示する制御情報が重畳されているフレームの受信を待機する。なお、制御情報が重畳されているか否かについてはステップS1511と同様のチェックサム確認処理を行うことで判定する。一定時間経過しても、待機終了指示が受信されない場合には、ECU1100cは、保持しているフレームについての待機を解除し、そのフレームを破棄する(ステップS507)。
【0192】
ステップS1504で、待機終了指示の受信がなされたと判定した場合は、ECU1100cは、処理の指示つまり待機解除指示であるかを判定する(ステップS1505)。待機解除指示は、待機フレーム(待機しているフレーム)についての機能処理の実行開始の指示である。つまり、ECU1100cは、処理の実行について待機しているフレームの処理を実行開始する指示としての待機解除を指示する制御情報がチェックサムに重畳されているか否かを判定する。なお、待機解除を指示する制御情報が重畳されているか否かについてはステップS1511と同様のチェックサム確認処理を行うことで判定する。
【0193】
ステップS1505で、待機解除が指示されていると判別した場合にはECU1100cは、処理の実行について待機しているフレームについての待機状態を解除し、そのフレームに応じた機能処理の実行を開始する(ステップS506)。また、ステップS1505で、待機解除ではなく破棄を指示する制御情報がチェックサムに重畳されていると判定した場合には、ECU1100cは、待機しているフレームを破棄する(ステップS507)。
【0194】
[2.14 ECU1100cのチェックサム確認処理]
図32は、ECU1100cにおけるチェックサム確認処理の一例を示すフローチャートである。
【0195】
ECU1100cは、受信したフレームに含まれる、メッセージIDと、DLCと、データとを用いて
図22に示すようにチェックサムを算出する通常の計算を行い、その通常の計算結果と受信したフレーム内のチェックサムとが、一致するかどうかを確認する(ステップS1701)。一致すれば、待機指示等の制御情報がチェックサムに重畳されていなかったことになる。
【0196】
ステップS1701で、受信したフレーム内のチェックサムが、チェックサムの通常の計算結果と一致しなかった場合には、ECU1100cは、受信したフレームに含まれるメッセージID、DLC及びデータと、DLCをパディングする部分の1bitに「1」を設定した待機指示の制御情報とに基づいてチェックサムを算出する計算を行い、その計算結果と受信したフレーム内のチェックサムとが一致するかどうかを確認する(ステップS1702)。一致すれば、待機指示の制御情報がチェックサムに重畳されていたことになり、ECU1100cはその待機指示を抽出する(ステップS1703)。
【0197】
ステップS1702で、受信したフレーム内のチェックサムが、チェックサムに待機指示の制御情報が重畳されているときの計算結果と一致しなかった場合には、ECU1100cは、受信したフレームに含まれるメッセージID、DLC及びデータと、DLCをパディングする部分の別の1bitに「1」を設定した待機解除指示の制御情報とに基づいてチェックサムを算出する計算を行い、その計算結果と受信したフレーム内のチェックサムとが一致するかどうかを確認する(ステップS1704)。一致すれば、待機解除指示の制御情報がチェックサムに重畳されていたことになり、ECU1100cはその待機解除指示を抽出する(ステップS1705)。
【0198】
ステップS1704で、受信したフレーム内のチェックサムが、チェックサムに待機解除指示の制御情報が重畳されているときの計算結果と一致しなかった場合には、ECU1100cは、受信したフレームに含まれるメッセージID、DLC及びデータと、DLCをパディングする部分の更に別の1bitに「1」を設定した破棄指示の制御情報とに基づいてチェックサムを算出する計算を行い、その計算結果と受信したフレーム内のチェックサムとが一致するかどうかを確認する(ステップS1706)。一致すれば、破棄指示の制御情報がチェックサムに重畳されていたことになり、ECU1100cはその破棄指示を抽出する(ステップS1707)。
【0199】
ステップS1706で、受信したフレーム内のチェックサムが、チェックサムに破棄指示の制御情報が重畳されているときの計算結果と一致しなかった場合には、ECU1100cは、受信したフレームのチェックサムの検証に失敗したため、エラー処理(フレームの処理の停止等)を行って、以後そのフレームについての処理を行わない(ステップS1708)。
【0200】
[2.15 実施の形態2の効果]
実施の形態2に係る車載ネットワークシステム20では、ゲートウェイ1300aがフレーム(データフレーム)のデータフィールド内のチェックサムに制御情報を重畳してフレームの送信を行うことで、ECUにおける受信したフレームの処理をコントロールする。ゲートウェイ1300aは、チェックサムに、フレームを受信するECUでの処理を制限する制御情報(例えば待機指示を示すように設定した制御情報)を重畳し得る。このように、ゲートウェイ1300aが、受信したフレームの転送に際して、待機指示を表すようにチェックサムを設定した送信用フレームを送信することで、受信したフレームが適正か否かの判定処理に要する時間の確保が可能になる。このため、車両外部のサーバ400と通信してサーバ400に判定を行わせる時間が確保され得る。また、各ECUがフレームに格納しているチェックサムの領域に制御情報が重畳されるので、ゲートウェイ1300aがフレームの転送に際して、フレームのデータ長を長くすることがない。また、受信したフレームが最終的に適正と判定される可能性がある場合においてフレームの転送を止めてしまうのではなく、待機指示を付してフレームの転送を行うことで、受信するECU側でフレームが到着しないことによって異常処理等を実行してしまうことを防止できる。つまり、転送に際してフレームのチェックサムに重畳される制御情報により、フレームを受信するECUにおいては、フレームを送信する正規のECUが故障してフレームが届かない状態ではないことを識別可能となる。また、ゲートウェイ1300a及びサーバ400で、フレームが適正か不正かを判定することで、個別のECU100a〜100eにそのような判定の機能を有する必要がなくなり、システム全体としてのコストを抑制でき、不正判定ルールの更新等を容易化できる。
【0201】
(他の実施の形態)
以上のように、本発明に係る技術の例示として実施の形態1、2を説明した。しかしながら、本発明に係る技術は、これに限定されず、適宜、変更、置き換え、付加、省略等を行った実施の形態にも適用可能である。例えば、以下のような変形例も本発明の一実施態様に含まれる。
【0202】
(1)上記実施の形態では、CANプロトコルにおけるデータフレームを標準IDフォーマットで記述しているが、拡張IDフォーマットであっても良い。
【0203】
(2)上記実施の形態1では、制御指示データをデータフィールドに含めているが、データフィールド内のどこに含めても良いし、他のフィールドに含めても良い。例えば、拡張IDフィールドや、DLCフィールドの一部等に含んでも良い。拡張IDフィールドは、拡張IDフォーマットにおいて、ベースIDを格納する11bit長のフィールドの次の1bit長のSRR(Substitute Remote Request)bitの更に次の1bit長のIDE(Identifier Extension)bitに後続し、18bit長の拡張IDを格納するフィールドである。
【0204】
(3)上記実施の形態2では、ゲートウェイ1300aが、待機指示、待機解除指示或いは破棄指示等を示す制御情報をフレームのデータフィールド内のチェックサムに重畳させるように、待機指示等を表わす制御情報をチェックサムの算出に用いるようにしている。しかし制御情報を重畳させる領域は、フレーム内の他の領域であっても良い。例えば、制御情報を例えばCRCフィールドに重畳させても良いし、ECUがフレーム内にメッセージ認証コード(MAC:Message Authentication Code)を設定する場合において、制御情報をMACに重畳させても良い。MACは、例えばECU、ゲートウェイ間で持つ共通鍵を利用して、例えばフレームのデータ、フレームの送信毎にカウントされるカウンタ等に基づいて生成され、その生成のための算出式において制御情報を含ませ得る。また、チェックサムを、データフィールド内のどこに含めても良いし、データフィールド以外に含めても良く、例えば拡張IDフィールドに含めても良い。
【0205】
(4)上記実施の形態1では、有効な待機終了指示フラグを設定した制御指示データを、受信して待機させたフレームと同一のIDを持つ新たなフレームとして送信する例を示したが、ECU100aから送信される次のフレームを転送する際の送信用フレームに制御指示データとして含ませても良い。また、実施の形態1では、制御指示データは、待機終了指示フラグにより1つ前のフレームの待機解除或いは破棄を指示する例を示したが、任意の個数前を示すデータを含ませて、待機解除或いは破棄の対象となるフレームを指定するようにしても良い。また、実施の形態1では、ゲートウェイ300aが、ステップS401の判定の結果に応じて待機解除指示を示すフレームを送信することとしたが、その他、任意の不正判定アルゴリズムを実行した結果に基づいて、待機解除指示或いは破棄指示を示すフレームを送信することとしても良い。また、実施の形態1では、受信するECU100cが一定時間内に待機しているフレームと同一IDを持つフレームを受信しなければ待機しているフレームを破棄する例を示したが、破棄するフレームの個数、一定時間等として任意のものを設定し得る。また、ゲートウェイ300aが待機指示を含むフレームを送信する場合に、待機すべき時間その他の指示内容をそのフレームに含めても良い。これにより、待機すべき時間が経過したらECUは、待機解除或いは破棄を指示するフレームを待つことなく、待機のために保持していたフレームを破棄することができ、フレームの保持用のメモリ等の領域を効率良く利用できる。
【0206】
(5)上記実施の形態におけるゲートウェイ300a、300b、1300a、1300b等のゲートウェイ装置は、受信したフレームをバスに転送する機能を有する装置であればいかなる装置であっても良い。ゲートウェイ装置は、例えば、車両外部の装置からフレームを受信して車載ネットワークの1つのバスへと転送するヘッドユニット等のECUであっても良い。ここでの転送は、受信したフレーム(データ)に基づいて生成したフレームの送信であれば良く、受信したフレームの内容の一部を変更して送信するものであっても良い。例えば、特定のメッセージIDのフレームを受信して、メッセージIDやデータフィールドの一部を変更して再送するECUは、ゲートウェイ装置である。
【0207】
(6)上記実施の形態で示したCANプロトコルは、TTCAN(Time-Triggered CAN)、CANFD(CAN with Flexible Data Rate)等の派生的なプロトコルをも包含する広義の意味を有するものであっても良い。
【0208】
(7)上記実施の形態で示したゲートウェイ装置(例えばゲートウェイ300a、1300a等)は、複数のバスにフレームを転送する場合において、特定のバス(例えば重要なバス等)に転送するフレームについてのみ、待機を指示する制御情報(例えば待機フラグを、待機を指示するように設定した制御指示データ、或いは、待機指示の1bitを加えて算出させたチェックサム等)を含ませるようにしても良い。
【0209】
(8)上記実施の形態2では、ゲートウェイ装置(例えばゲートウェイ1300a)が外部通信部1351を有する例を示したが、車載ネットワークに接続されたヘッドユニット或いは他のECU(車外と通信する機能を有する装置)を経由して通信するとしても良い。ヘッドユニットは、例えば、マルチメディア再生、カーナビゲーション等の機能のために、車両外部との通信機能を有しているECUである。
【0210】
(9)上記実施の形態1で示したECU100a〜100eは、バスに送信するフレームに、制御指示データ(例えば待機フラグを、待機不要を示すようにし、待機終了指示有無フラグを、無しを示すようにしたもの等)を含めるようにしても良い。この場合においてゲートウェイ300a等のゲートウェイ装置がそのフレームの転送に際して制御指示データの内容を変更し得る。なお、制御指示データは、特定のメッセージIDを有するフレームに限定して、付加されることとしても良い。なお、フレームを受信するECUでは、メッセージID毎にECUに通常送信されるフレームのデータ長が予め定められているため、DLCに基づいて、ゲートウェイで制御指示データが付加されたか否か区別可能である。
【0211】
(10)上記実施の形態で示したゲートウェイ装置は、受信したフレームの転送に関連して、送信用フレームに制御情報(一定の値を示す制御指示データを含む)を含ませた。この制御情報としては、例えばフレームの受信に際して送信する送信用フレームに含ませる第1制御情報と、その受信より後に、受信したフレームが適正か否かの最終的な判定結果に基づいて送信する送信用フレームに含ませる第2制御情報とがある。第1制御情報は、例えば、待機指示であり、これは例えば、その第1制御情報を含むフレームを受信したECUに、そのフレームの処理方法に関する情報を含むフレームを受信するまで、そのフレームに対応した処理の実行開始を遅延させるべき旨を示す。またその待機指示は、例えば、その第1制御情報を含むフレームを受信したECUに、一定条件(第2制御情報を含むフレームの受信或いは一定時間の経過等の条件)が満たされるまで、そのフレームに対応した処理の実行を抑止させるべき旨を示す。なお、第1制御情報は、その第1制御情報を含むフレームの取り扱いを追って指示するという予告(そのフレームが適正か否かの最終的な決定が未だなされていない状況の報知)を示すとも言える。また、第2制御情報は、ゲートウェイ装置が受信したフレームに係る最終的な判定結果に応じて定められるものであり、例えば、そのフレームの処理の実行を開始すべき旨を示す待機解除指示、或いは、そのフレームを破棄すべき旨を示す破棄指示等である。
【0212】
(11)上記実施の形態1では、受信したフレームが適正であるか否かの判定(決定)に時間を要する最終判定処理をゲートウェイ300aが行い、実施の形態2では、ゲートウェイ1300aが受信したフレームが適正であるか否かの判定に時間を要する判定処理をサーバ400が行う例を示した。この他に、ゲートウェイ300a、1300a等のゲートウェイ装置は、受信したフレームが適正であるか否かの判定(決定)を、他のECUに行わせても良い。この場合には、フレームの受信のための受信部として作用するフレーム送受信部310は、他のECUにより行われた判定(決定)の結果を受信する。また、フレーム送受信部310は、受信したフレームが適正であるか否かの決定の結果に応じて、待機解除或いは破棄を指示するフレームの送信等を行い得る。なお、フレーム送受信部310は、フレームの受信後の処理の制限に関する制御情報を含めたフレームをバスに送信する送信部として作用する。この送信部は、受信部によりフレームが受信された際に、所定条件が満たされた場合にそのフレームに第1制御情報を含めてバスに送信し、所定条件が満たされなかった場合には第1制御情報を含めずにフレームをバスに送信し、第1制御情報を含めたフレームを送信した後には、例えばそのフレームが適正か否かの決定の結果に応じてそのフレームの処理方法に関する第2制御情報を含むフレームを、バスに送信する。所定条件は、例えば受信したフレームの転送の後にそのフレームが適正か否かについて決定される状況で満たされる条件、つまり、フレームの受信の際に、フレームが適正か否かを迅速に判定できないという条件であるが、他の条件であっても良い。また、送信部は、データフィールドの少なくとも一部の内容を反映したデータを格納する、フレームの一領域(例えばチェックサムの領域)で、第1制御情報を表すようにしても良い。
【0213】
(12)上記実施の形態における各ECU(ゲートウェイを含む)は、例えば、プロセッサ、メモリ等のデジタル回路、アナログ回路、通信回路等を含む装置であることとしたが、ハードディスク装置、ディスプレイ、キーボード、マウス等の他のハードウェア構成要素を含んでいても良い。また、メモリに記憶された制御プログラムがプロセッサにより実行されてソフトウェア的に機能を実現する代わりに、専用のハードウェア(デジタル回路等)によりその機能を実現することとしても良い。
【0214】
(13)上記実施の形態における各装置を構成する構成要素の一部または全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されていると
しても良い。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAM等を含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記録されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、システムLSIは、その機能を達成する。また、上記各装置を構成する構成要素の各部は、個別に1チップ化されていても良いし、一部又はすべてを含むように1チップ化されても良い。また、ここでは、システムLSIとしたが、集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現しても良い。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行っても良い。バイオ技術の適用等が可能性としてあり得る。
【0215】
(14)上記各装置を構成する構成要素の一部または全部は、各装置に脱着可能なICカードまたは単体のモジュールから構成されているとしても良い。前記ICカードまたは前記モジュールは、マイクロプロセッサ、ROM、RAM等から構成されるコンピュータシステムである。前記ICカードまたは前記モジュールは、上記の超多機能LSIを含むとしても良い。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、前記ICカードまたは前記モジュールは、その機能を達成する。このICカードまたはこのモジュールは、耐タンパ性を有するとしても良い。
【0216】
(15)本発明の一態様としては、上述した車載ネットワークにおけるフレームの転送に係る通信方法等の方法であるとしても良い。例えば、通信方法は、フレーム(第1フレーム)を受信する受信ステップと、受信ステップで第1フレームが受信された際に、そのフレームの内容に基づく情報を含む送信用フレーム(第2フレーム)に、第2フレームの受信後の処理の制限に関する第1制御情報を含めて、その第2フレームをバスに送信する送信ステップとを含む。また、この方法をコンピュータにより実現するコンピュータプログラムであるとしても良いし、前記コンピュータプログラムからなるデジタル信号であるとしても良い。また、本発明の一態様としては、前記コンピュータプログラムまたは前記デジタル信号をコンピュータで読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu-ray(登録商標) Disc)、半導体メモリ等に記録したものとしても良い。また、これらの記録媒体に記録されている前記デジタル信号であるとしても良い。また、本発明の一態様としては、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしても良い。また、本発明の一態様としては、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記録しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしても良い。また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を、前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしても良い。
【0217】
(16)上記実施の形態及び上記変形例で示した各構成要素及び機能を任意に組み合わせることで実現される形態も本発明の範囲に含まれる。