(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-08-09
(45)【発行日】2023-08-18
(54)【発明の名称】ノードデバイスが、許可できないメッセージをCANバス上に送信することを防止する方法及び装置
(51)【国際特許分類】
H04L 12/40 20060101AFI20230810BHJP
【FI】
H04L12/40 Z
(21)【出願番号】P 2019204333
(22)【出願日】2019-11-12
【審査請求日】2022-11-11
(32)【優先日】2018-12-04
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】504407000
【氏名又は名称】パロ アルト リサーチ センター インコーポレイテッド
(74)【代理人】
【識別番号】100094569
【氏名又は名称】田中 伸一郎
(74)【代理人】
【識別番号】100109070
【氏名又は名称】須田 洋之
(74)【代理人】
【識別番号】100067013
【氏名又は名称】大塚 文昭
(74)【代理人】
【識別番号】100086771
【氏名又は名称】西島 孝喜
(74)【代理人】
【識別番号】100109335
【氏名又は名称】上杉 浩
(74)【代理人】
【識別番号】100120525
【氏名又は名称】近藤 直樹
(74)【代理人】
【識別番号】100139712
【氏名又は名称】那須 威夫
(72)【発明者】
【氏名】マーク・イー・モスコ
【審査官】大石 博見
(56)【参考文献】
【文献】国際公開第2017/110056(WO,A1)
【文献】国際公開第2013/084741(WO,A1)
【文献】米国特許出願公開第2018/0121385(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/40
(57)【特許請求の範囲】
【請求項1】
装置であって、
第1のコントローラエリアネットワーク(controller are network、CAN)バスと通信するように結合された第1のバスインターフェースと、
ノードデバイスと通信するように結合された第2のバスインターフェースであって、前記ノードデバイスが、第2のCANバスと通信するように構成されている、第2のバスインターフェースと、
前記第1のバスインターフェースと前記第2のバスインターフェースとの間に結合された論理回路であって、前記論理回路が、
各ビットが前記第2のCANバスを介して前記第1のCANバス上に送信されるとき前記第2のバスインターフェースを介して前記ノードデバイスから送信されたメッセージの各ビットを読み出すように、
各ビットの第1の
最小時間単位のビット期間の間に、前記メッセージの現在のビットが前記メッセージは前記ノードデバイスに対して許可されていないことを示していると判定するように、かつ
前記現在のビットが前記第1のCANバス上で検出できる前に、それに応答して、前記メッセージの前記現在のビット及び続くビットが前記第1のCANバス上に送信されることを防止するように、動作可能である、論理回路と、を備える、装置。
【請求項2】
前記メッセージが前記ノードデバイスに対して許可されていないと判定することが、前記メッセージが前記ノードデバイスに対して許可された最大アービトレーション優先度を超えると判定することを含む、請求項1に記載の装置。
【請求項3】
前記メッセージが前記ノードデバイスに対して許可されていないと判定することが、前記メッセージが前記ノードデバイスに対して許可されていないメッセージ識別子フィールドを有すると判定することを含む、請求項1に記載の装置。
【請求項4】
前記論理回路が、
前記ノードデバイスを有効化又は無効化するコマンド、
前記ノードデバイスの動作を記述する統計の要約、及び
前記ノードデバイスに自己試験を実行させるコマンドのうちの少なくとも1つを含む制御メッセージを通信する、請求項1に記載の装置。
【請求項5】
前記論理回路が、前記第1のCANバスを介して前記制御メッセージを通信する、請求項4に記載の装置。
【請求項6】
前記論理が、前記第1のCANバス及び前記第2のCANバスとは独立した通信チャネルを介して前記制御メッセージを通信する、請求項4に記載の装置。
【請求項7】
前記第1のCANバス及び前記第2のCANバスが、共通のCAN規格を利用する、請求項1に記載の装置。
【請求項8】
前記第1のCANバス及び前記第2のCANバスが、異なるCAN規格を利用する、請求項1に記載の装置。
【請求項9】
前記第1のCANバスがCANCryptバスであり、前記第2のCANバスのデータが暗号化されず、前記論理回路が、更に、
前記メッセージが前記ノードデバイスに対して許可されていると判定するように、
それに応答して、前記CANCryptバス上で複数のメッセージ形式で前記メッセージを暗号化して送信するように、かつ
前記ノードデバイスが前記暗号化中に送信することと、アービトレーションを介して前記第2のCANバスへの前記ノードデバイスのアクセスを拒否することによって送信することとを防止するように、動作可能である、請求項8に記載の装置。
【請求項10】
前記論理回路が、更に、
前記ノードデバイスが前記メッセージを送信している間に、前記メッセージが前記ノードデバイスに対して許可されているが、前記ノードデバイスが前記第1のバス上の別のメッセージへのアービトレーションに負けたと判定するように、かつ
前記別のメッセージが送信されている間に、前記アービトレーションに負けたことに続いて、前記ノードデバイスが前記第1のバス上に優性ビットを送信することを防止するように、動作可能である、請求項1に記載の装置。
【請求項11】
方法であって、
第1のコントローラエリアネットワーク(CAN)バスインターフェースを介して第1のCANバスと通信するように装置を電気的に結合することと、
前記第1のCANバスインターフェースから電気的に分離可能な前記装置の第2のCANバスインターフェースを介して前記装置にノードデバイスを電気的に結合することと、
各ビットが前記第1のCANバスインターフェース上に送信されるとき前記ノードデバイスから送信されたメッセージの各ビットを読み出すことと、
各ビットの第1の
最小時間単位のビット期間の間に、前記メッセージの現在のビットが前記メッセージは前記ノードデバイスに対して許可されていないことを示していると判定することと、
前記現在のビットが前記バス上で検出できる前に、それに応答して、前記メッセージの前記現在のビット及び続くビットが前記第1のCANバス上に送信されることを防止することと、を含む、方法。
【請求項12】
前記メッセージが前記ノードデバイスに対して許可されていないと判定することが、前記メッセージが前記ノードデバイスに対して許可された最大アービトレーション優先度を超えると判定することを含む、請求項11に記載の方法。
【請求項13】
前記メッセージが前記ノードデバイスに対して許可されていないと判定することが、前記メッセージが前記ノードデバイスに対して許可されていないメッセージ識別子フィールドを有すると判定することを含む、請求項11に記載の方法。
【請求項14】
前記ノードデバイスを制御するコマンドを前記装置において受信することと、それに応答して前記ノードデバイスを制御することとを更に含む、請求項11に記載の方法。
【請求項15】
前記コマンドが、前記第1のCANバスを介して受信される、請求項14に記載の方法。
【請求項16】
前記コマンドが、前記第1のCANバス及び前記第2のCANバスから独立した通信チャネルを介して受信される、請求項14に記載の方法。
【請求項17】
前記ノードデバイスが前記メッセージを送信している間に前記メッセージが前記ノードデバイスに対して許可されているが、前記ノードデバイスが前記第1のCANバス上の別のメッセージへのアービトレーションに負けたことを判定することと、
前記別のメッセージが送信されている間に前記アービトレーションに負けたことに続いて、前記ノードデバイスが前記第1のCANバス上で優性ビットを送信するのを防止することと、を更に含む、請求項11に記載の方法。
【請求項18】
コントローラエリアネットワーク(controller are network、CAN)からノードデバイスを選択的に結合及び分離するように構成された送受信機インターフェース回路と、
前記送受信機インターフェース回路に結合された論理回路であって、前記論理回路が、
SYNCの部分で開始する公称ビット時間の間に送信される、前記ノードデバイスによって送信されるメッセージの各ビットの間に前記ノードデバイスの出力信号を検出するように、
各ビットの前記SYNCの部分の間の前記出力信号の
所定のフィールドの値が許可されていないメッセージの部分を表わすかどうかを判定するように、かつ
前記出力信号の
前記所定のフィールドの前記値のいずれかが前記許可されないメッセージの部分を表わす場合、前記許可されないメッセージの前記CANバス上へのさらなる送信を防ぐため、前記送受信機インターフェースを浮動させるように、動作可能である、論理回路と、を備える、装置。
【請求項19】
前記出力信号の前記値の前記判定は、前記SYNCの部分の終了の後だが前記値が前記CANバス上で検出できる前にさらに起きることを特徴とする、請求項18に記載の装置。
【請求項20】
前記SYNCの部分の期間は前記CANバスの
最小時間単位である、請求項18に記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ノードデバイスが、許可できないメッセージをコントローラエリアネットワークバス上に送信することを防止する装置に関する。一実施形態では、方法、システム及び装置は、第1のコントローラエリアネットワーク(controller area network、CAN)バスと通信するように結合された第1のバスインターフェースを利用することができる。第2のバスインターフェースは、ノードデバイスと通信するように結合されており、ノードデバイスは、第2のCANバスと通信するように構成されている。論理回路は、第1のバスインターフェースと第2のバスインターフェースとの間に結合されており、第2のバスインターフェースを介してノードデバイスによる通信を監視するように動作可能である。論理回路は、ノードデバイスに対して許可されていないメッセージをノードデバイスが送信していると判定する場合、それに応答して、メッセージが第1のCANバス上に送信されることを防止する。
【図面の簡単な説明】
【0002】
【
図1】一実施形態例に従うコントローラエリアネットワークのブロック図である。
【
図4】一実施形態例に従う装置によって使用されるビットタイミングを示す信号図である。
【
図7】一実施形態例に従う装置によって使用されるメッセージのブロック図である。
【
図8】一実施形態例に従うビットチェック手順を例示する図である。
【
図9】一実施形態例に従う装置の機械的特徴を示す上面図である。
【
図10】一実施形態例に従う方法のフローチャートである。
【発明を実施するための形態】
【0003】
本開示は、コントローラエリアネットワーク(CAN)バスを使用するものなどの埋め込み型デバイスネットワークに関する。CANバスは、自動車及び産業制御ネットワークなどのアプリケーションのための低コストシステムデバイス制御及び通信を提供する。CANバスは、バス衝突を管理するために、共通の送信バス及びメッセージ優先順位付けを使用する。CANバス上に送信される各ビットは、劣性又は優性のいずれかである。各ノードは、バスに書き込むのと同時にバスを読み出す。ノードは劣性ビットを送信するが、優性ビットを検出する場合、ノードは、アービトレーションに負け、その後、バス上でリッスンし、再送信を試みる次のメッセージフレームを待つべきである。
【0004】
CANバスに取り付けられたノードは、ヘッダ内のビットの特定の配置でメッセージを送信するように構成される。より大きな先頭の優性ビットを有するノードは、アービトレーションに勝つ傾向があり、送信遅延がより少ない。システム設計者は、一般に、どのメッセージが最も高い優先度を有するべきかを決定し、それに応じてそれらのメッセージをフォーマットする。システムは、各ノードに依存して、システム設計者が指定したメッセージのみを送信するのみならず、アービトレーションルールに従ってアービトレーションに負けると送信を停止する。
【0005】
CANバスは、バス上のノードに作用するエンドデバイス上に提供されるものとは別に、固有の管理又はセキュリティ特徴を有さない。侵入検出は、バス上の「スニファー」デバイスによって提供されてもよいが、これらのデバイスは、どのノードが不正を行っているかを伝えることができない。更に、そこで、これらのデバイスは、一旦検出されると侵入を防止するための限られた手段を有する。CANバスは、高レベルのセキュリティ及び信頼性を必要とするアプリケーションに採用されているため、悪意のあるノード又は誤動作しているノードの影響を追跡及び否定する手法が望まれる。
【0006】
本開示には、CANネットワーク上に分岐又はドロップを作成するCANデバイスが記載される。スマートTコネクタ(Smart T-Connector、STC)と称されるこのデバイスは、CANバスからの各ドロップが管理可能、監視可能及び実施可能となるような管理及びセキュリティ特徴を有する。STCは、各ドロップを管理可能にさせ、各ドロップについての統計を有効化、無効化及び閲覧することができる。STCは、最小優先度の実施、メッセージタイプ、及びペイロードの実施、並びにアービトレーションに負けるポートを禁止することによるサービスの妨害(denial-of-service、DoS)の防止などのセキュリティ方針を監視し、かつ実施することができる。STCはまた、レガシーCANデバイス(例えば、CAN2.0)であっても、CAN FD又はCANCryptなどの強化されたバックボーンを使用することもできる。いくつかのSTCを単一の物理的集信機に組み合わせることができ、ノードデバイスを結合することができる複数のドロップ及び/又は二次CANバスインターフェースを提供することに留意されたい。
【0007】
図1では、図は、一実施形態例に従うCANバスを示す。バス100は、ノード102~104間の差動信号方式を容易にする一対の信号線100a-bを含む。信号線100a-bは、抵抗器106(~130KΩ)を介して終端される。図示しないが、バス100はまた、接地線を含み、任意の+Vcc線を有してもよい。ノード102は、CANコントローラ機能102bを実行するマイクロコントローラ102a(又はデジタル信号プロセッサ)と共に示される。CANコントローラ102bは、CAN送受信機102cを介してバス100上のビットを送受信する。他のノード103、104は、同様に構成されてもよい。図示しないが、ノード102~104は、バス100を介して他のノードにメッセージデータを提供するセンサを含んでもよい。ノード102~104は、ビット同期され、所定のコンテンツベースのアービトレーションプロトコルに従ってメッセージを送信する。ノード102~104は、0秒又は1秒の長期の実行を避けるためにビットスタッフィングを使用する。
【0008】
ノード104は、バス100に直接的に結合されないが、STC106を介して結合される。以下により詳細に示されるように、STC106は、任意のCAN互換性ノードデバイスがSTC106に結合され得るように、バス100の代理として機能する。同様に、STC106は、ノード104の代理としてバス上に現れ、2つ以上のそのようなノードの代理であるように構成されてもよい。ノード104が正常に動作しているとき、STC106は、パススルーとして動作するが、ノード104上で統計を収集し得る。モニタ108として本明細書で示されるコントローラデバイスは、これらの統計をこの及び他のSTC106から収集することができる。統計は、送信されたメッセージの数及び/又は頻度、(バッファサイズに依存する)メッセージ履歴、ノードのバスインターフェースの電気的性能などを含み得る。モニタデバイス108は、バス100を介して帯域内の、又はいくつかの他の通信チャネルを介して帯域外のSTC106と通信してもよい。
【0009】
STC106は、ノード104の許可できる挙動を知るようにプログラムされてもよい。例えば、STC106は、ノードのメッセージについての優先度を定義するメッセージヘッダを少なくとも知ることができる。ノード104が、この許可できる範囲外であるメッセージをバス上で送信しようと試みる場合、STC106は、他のノードをアービトレートすることを可能にする任意の更なる優性ビットを送信しないことによって、少なくともそのメッセージの送信を抑制することができる。STC106は、ノード104を正常に送信することを可能にし得るが、境界外の挙動のパターンが発生した場合、STC106は、ノード104の更なる送信を防止し、アラートをモニタデバイス108に送信してもよい。
【0010】
STC106は、ノード104又はそれが制御しているノードのプロファイルを用いて予めプログラムされてもよい。これは、初期システム設計の一部であってもよく、許可できるメッセージの種類、データ収集デフォルト、不適切な挙動を取るアクションなどの詳細を含んでもよい。他の実施形態では、STC106は、ノードの挙動の通常の境界を決定するために機械学習を使用してもよい。これは、新たに設置されたノードが適切に挙動し、かつ故障又は危殆化が、ある時間の経過後に生じる可能性があると仮定して、受動モードで最初に実行することを含み得る。このことは、依然として、いくつかのシステム知識、例えば、滅多に遭遇することがないがノードによって許可できるであろう特定のエラー又は優先度の高いメッセージなどで、STCが事前構成されることを必要とし得る。
【0011】
図2では、図は、一実施形態例に従うバス206に結合された複数のSTC装置200、201を示す。各STC200、201は、それぞれのノードデバイス204、205へのポートと見なすことができ、別個のポート毎の状態を維持することができる。STC200、201は、
図1に示されるようにコントローラ/モニタデバイスを報告し、かつそれらによって制御されてもよい。STC200、201は、デバイス204、205の代わりに最小優先度を実施することができ、デバイス204、205からの全ての通信、及び/又はデバイス204、205からの選択された破損パケットを遮断することができる。
【0012】
各STC200、201は、侵入検出システム(intrusion detection system、IDS)及び侵入防止システム(intrusion prevention system、IPS)の一方又は両方を含んでもよい。STC200で見られるように、IDS/IPS200aは、ノード204とCANバス206との間に位置する送受信機インターフェース回路200bに結合される。送受信機インターフェース回路200bは、概念的な電気的インターフェースであり、完全な回路を表していなくてもよく、例えば、他の構成要素が、バス206とインターフェースするために追加されてもよい。送受信機インターフェース回路200bは、CANバス206と通信するように構成された第1のCANバスインターフェース200eと、CANバス仕様を使用してノードデバイス204と通信するように構成された第2のCANバスインターフェース200fとを有する。第2のCANバスインターフェース200fは、第1のCANバスインターフェース200eから電気的に分離可能である。
【0013】
IDS/IPS200aは、送受信機インターフェース回路200bに結合された有効化線200cをアクティブ化することによって、ノード204から及びノード204に送信された全てのビットを再書き込みすることができる。送受信機インターフェース回路200bは、「0」を「1」に浮動させ、「1」を「0」に優性化することができる。バス線200dを介してデバイス204の出力を監視することによって、IDS/IPS200aは、ノードデバイス204がオン/オフであるかどうかを感知して、トラップを送信することができる。線200dはまた、デバイスの配線内の中断を検出するために使用することができる。
【0014】
この実施例では、IDS/IPS200aの制御は、バス206を介して帯域内に提供される。これは、例えば、バス206を介してSTC200にクエリメッセージを送信することによって、達成することができ、STC200は、応答メッセージを用いてバス206を介して応答する。あるいは、STC200は、状態メッセージを非同期的に送出することができる。いずれの場合でも、ノードデバイス204は、それらのメッセージを受信してもよく、又はそれらのメッセージから切り離されてもよい。とりわけ、STC200によって通信される制御メッセージは、ノードデバイス204を有効化又は無効化するためのコマンドと、ノードデバイス204の動作を記述する統計の概要と、ノードデバイス204に自己試験を実行させるコマンドとの任意の組み合わせを含んでもよい。IDS/IPS制御/状態メッセージは、回路200bを介してバス206上で送信/受信することができ、あるいは線208によって示されるように、IDS/IPSブロック200aからバスに直接送信することができる。
【0015】
STC200、201は、複数のノードデバイス204、205のためのドロップ毎の管理インターフェースを可能にする。STC200、201は、最小/最大優先度を実施することができ、メッセージタイプ及びペイロードを実施することができ、DoS攻撃を防止することができる。帯域内通信を利用することによって、STC200、201は、STCによって使用される追加のコマンドを、CANネットワーク上で使用されるメッセージに組み込むことによって、既存のCANネットワークに容易に適合させることができる。STC200、201は、自律的に動作することができ、違反が検出された場合にノード204、205からのメッセージを自動的に遮断することができる。他の場合には、STC200、201は、ノードを遮断することなく、エラー状態又はメッセージ違反(例えば、DoS状態を引き起こす可能性がない破損したメッセージ)を報告してもよい。そのような場合、システムメインコントローラなどの別のデバイスは、状態又は違反に対処する手法を決定し、応答をSTC200、201に戻して通信することができる。
【0016】
いくつかの構成では、STCは、CAN FD又はCANCryptで保護されたバックボーンなどの、強化されたインターコネクタバックボーンを使用することができる。
図3では、図は、一実施形態例に従うバス302上のSTC300を示す。バス302は、CAN FD、CANCrypt、又はCANプロトコルの他のそのような後のバージョン若しくは適合物を利用してもよい。STC300は、
図2に記載されたものと同様のIDS/IPS300aを含む。ノードデバイス304は、例えば、CAN2.0などを使用して、STC300のレガシーCANバスインターフェース300bに結合される。バス変換モジュール300cは、バックボーンバス302に結合された第2のバスインターフェース300dを含む。バス変換モジュール300cは、異なるバス302、300bのプロトコル間でデータを翻訳する。この翻訳は、暗号化/復号化、及び送信の速度の変更を含み得る。代替の実施形態では、バスインターフェース300bは、バス304よりも速くてもよいこと、及び/又はバスインターフェース300bは、暗号化をバス304が行わない間に使用してもよいことに留意されたい。
【0017】
暗号化バスと非暗号化バスとの間で変換するとき、STC300は、デバイス304のバッファリング及び/又は遅延を利用してもよい。一般的に、CANCryptは、第1のプリアンブルパケット、続いて固定されたパケットの2つのパケットを使用する。ノードデバイス304が非暗号化プロトコルを介して通信している場合、デバイスは、パケットをIDS/IPS300a及び/又は変換モジュール300cに送信し、その後、アービトレーションに勝つことによってノードデバイス304をビジーに保つ。これにより、データを暗号化し、2つのパケットを形成し、2つのパケットをバス302上で送信するのに十分な時間を変換モジュール300cに与える。ノードデバイス304が暗号化プロトコルを介して通信しており、バス302がそうしない場合、STC300は、データを暗号化し、2つのパケットを形成し、2つのパケットをノードデバイス304に送信してもよい。このプロセスの間にノード304のために受信されたあらゆるメッセージは、STC300のシステムパラメータ及びバッファサイズに応じてバッファ又はドロップされてもよい。
【0018】
インターフェース300bは、バス302が暗号化されている間に暗号化されなくてもよいことに留意されたい。そのような場合、STC300とノード304間のセキュリティは、インターフェース300bのバス線の物理的近接及び機械的/電気的保護、例えば、硬質導管、余分な遮蔽など)によって実施されてもよい。更に、変換モジュール300c及び/又はIDS/IPS300aはまた、もしあれば、ノード304のために直接標的化されたメッセージを除いて、バス302上で送信された任意の暗号化又は復号化されたデータがノード304に到達することも防止することができる。バス302からノード304への有意な数のメッセージが標的化され、バス302がインターフェース300bよりも著しく高速度である場合、翻訳モジュール300c及び/又はIDS/IPS300aは、ノード304に標的化されたメッセージを一時的に待ち行列に入れるのに十分なバッファを備えてもよく、一方で、それらのメッセージは、より遅いインターフェース300b上で転送される。
【0019】
図4では、図が、一実施形態例に従う、STCによって使用されるものとしてCANサンプリングを例示する。方形波400は、CANネットワーク上の全てのノードによって使用されるシステムクロックを表す。値t
Qは、バス上の最小時間単位であり、システムクロック400の1つの期間に等しい時間量を表す。処理回路によって使用される実際の内部クロックは、システムクロック400の周波数の倍数である周波数で実行されてもよい。時間402は、ビットがバス上で送信される期間を表す。システム設計者は、PROP(伝播)、PHASE(位相)1、及びPHASE2の異なる値をプログラムすることができ、したがって、それは、公称ビット時間402に影響を及ぼす。例えば、PROP区分は、1つ~8つの時間t
Qの間に設定されてもよい。
【0020】
矢印404は、実際のビット値を読み取るためにノードによって取られたサンプルを表す。より多くのサンプルを取ってもよく、例えば、2つのサンプルがサンプル404の前に取られる。バス上のノード間に様々な伝搬遅延が存在し、それゆえ、サンプリングは、ビット時間402の後半に取られ、サンプル404によって読み取られる値が、送信されている全てのビットの合計に対応することを確実にする。2つ以上のサンプルが取られる場合、サンプル値の大部分、例えば、3つのサンプルのうちの2つの大部分の値が、サンプリングされた値として使用される。
【0021】
t
Qの実際の値は、特定のCAN実装に応じて、約100~150ナノ秒とすることができる。特定のデバイス送受信機は、約30~130ナノ秒の差動立ち上がり時間を有してもよい。高速デジタルアイソレータは、別の~10ナノ秒の遅延を追加することができる。これにより、SYNCの間に約10~90ナノ秒のSTCは、ノードデバイスが何を送信しているかの結果を計算し、送信を可能にするか否かを決定することができる。PROP及びPHASE1区分が特に長い場合、これは、ノードによって送信された値を検出するための追加の時間を可能にし得る。したがって、
図2に示されるような構成では、STCは、SYNCの間のノード送信のビット毎の検出を行うことができ、それに応じて送受信機を浮動させるか又は優性化することができる。
【0022】
他の実施形態では、STCは、ノードデバイスが何を送信するかを検出せずに、アービトレーション優先度を実施するようにバス送受信機を浮動させてもよい。これにより、バスへの送信時のタイミングマージンの緩和が可能になる。STCによって全メッセージをバッファリングすることができ、次いで、STC論理は、例えば、ノードによって送信されることが試みられたアービトレーションフィールドの実際の値に基づいて、ノードデバイスが許可できるメッセージを送信しているかどうかを決定することができる。その場合、STCは、次の機会にメッセージをバス上に送信することができる。
【0023】
図5には、ブロック図が、一実施形態例に従う、データ及び制御バス506、507上の複数のSTC500、501を示す。各STC500、501は、それぞれのノードデバイス504、505へのポートとして機能し、別個のポート毎の状態を維持する。STC500、501は、制御バス507に結合された単一のコントローラ/モニタデバイス508を報告し、かつそれによって制御されてもよい。制御バス507は、データバス506とは別個かつ独立しており、同じ又は異なるプロトコル及び電気特性を使用してもよい。例えば、制御バス607は、本明細書で言及されるCANプロトコルのいずれかを使用してもよく、又はイーサネット(登録商標)、I
2C、無線ネットワーキングなどの非CANプロトコルを使用してもよい。STC500、501は、前述のように、データバス506上のデバイス504、505の代わりに最小優先度を実施することができる。
【0024】
各STC500、501は、IDS及びIPSの一方又は両方を含む。STC500で見られるように、IDS/IPS500aは、ノード504とCANバス506との間に位置する送受信機インターフェース回路500bに結合される。バス線500dを介してデバイス504の出力を監視することにより、IDS/IPS500aは、ノードデバイス504がオン/オフであるかどうかを感知し、トラップを送信し、有効化線500cを介してデバイス504の配線内の中断を検出することができる。
【0025】
この実施例では、IDS/IPS500aの制御は、制御バス507を介して帯域外に提供される。これは、例えば、バス507を介してSTC500にクエリメッセージを送信することによって達成することができ、STC500は、応答メッセージを用いてバス507を介して応答する。あるいは、STC500は、状態メッセージを非同期的に送出することができ、任意の制御コマンドを許可してもよく、又は許可しなくてもよい。いずれの場合でも、ノードデバイス504は、それらのメッセージから切り離されてもよい。他の構成では、制御バス507は、データバス506上の他のデバイスに送出されないノードデバイス504にのみメッセージを標的化するために使用されてもよい。例えば、モニタ508は、データバス506上のトラフィックを増加させることなく、制御バス507を介して選択されたポート上で自己テストを開始することができる。これらの自己試験要求に応答してノードデバイス504、505によって生成されたあらゆるメッセージもまた、データバス506から切り離すことができる。
【0026】
図6には、ブロック図が、別の実施形態例に従う、データ及び制御バス606、607上の複数のSTC600、601を示す。各STC600、601は、それぞれのノードデバイス604、605へのポートとして機能し、別個のポート毎の状態を維持する。STC600、601は、制御バス607に結合された単一のコントローラ/モニタデバイス608を報告し、かつそれによって制御されてもよい。制御バス607は、データバス606とは別個かつ独立しており、同じ又は異なるプロトコル及び電気特性を使用してもよい。更に、デバイス604、605は、データバス606とは異なる種類のバス600bを使用する。STC600、601は、前述のように、データバス606上のデバイス604、605の代わりに最小優先度を実施することができる。
【0027】
各STC600、601は、IDS及びIPSの一方又は両方を含む。STC600で見られるように、IDS/IPS600aは、ノード604とCANバス606との間に位置するバスコンバータ600cに結合される。バス606、600bは、CAN2.0、CANCrypt及びCAN FDから選択された異なる形式を使用してもよい。
図3に示した実施例で説明したように、コンバータ600cは、暗号化メッセージと非暗号化メッセージとの間で翻訳してもよく、バス600b、606の種類間の伝送の速度を変更してもよい。
【0028】
この実施例では、IDS/IPS600aの制御は、
図5に示した実施形態で説明したように、制御バス607を介して帯域外に提供される。制御バス607は、バス600b、606のいずれかと同じ種類のバスとすることができ、又はそれらのうちの1つと同じであってもよい。制御バス607は、代替的に、イーサネット(登録商標)、I
2Cなどの非CANプロトコルを使用してもよい。制御バス607のデータは、バス600b、606の一方又は両方から切り離され得る。
【0029】
上述のように、STCは、ノードデバイスが、ノードデバイスに対して許可されるメッセージを送信しているか否かを判定し、許可されていない場合には送信を許可しない。
図7には、実施形態例に従うSTCが、メッセージが許可されているか否かを判定することができるいくつかの手法を例示する、メッセージ形式例が示される。
図7に示される形式は、CAN2.0に記載されているベースフレーム形式として知られているものに対応するが、この図に関して記載される概念は、例えば、拡張されたフレーム形式などの他のCAN形式に適用することができる。例示されたメッセージは、メッセージIDフィールド700、データ長フィールド701、データフィールド702、巡回冗長検査(cyclic redundancy check、CRC)フィールド703及びフレーム終了(end of frame、EOF)フィールド704を含む。他のフィールドを
図7に見ることができるが、フレームの開始及び区切りビットなどは、記載されていない。
【0030】
IDフィールド700は、メッセージの識別も、優先度のアービトレートも行う。例えば、特定の送信者及び特定の種類のメッセージペイロードが、固有の識別子を有してもよい。更に、IDフィールド700内のビットの順序は優先度を決定する。典型的なCANの慣例では、ゼロは、バスを優性状態にする、例えば、CANH及びCANLをそれぞれ+5V及び0Vに切り替える、ノードのうちの1つによって送信される優性ビットであると見なされる。送信している各ノードは、それらのメッセージ内の各ゼロについて、バス上の優性状態をアサートする。それらのメッセージのそれぞれについて、ノードはバスを浮動させ(本明細書の他の箇所では劣性ビットの送信としても呼ばれる)、優性状態がアサートされているかどうかを見る。そうである場合、より高い優先度を有するノードは、アービトレーションに勝っており、アービトレーションに負けたノードは、バスが浮動を許可されるリッスンモードに入る。ノードは、現在のメッセージが完了したときに、後でメッセージウィンドウ内で再送信することを試みる。
【0031】
これを念頭に置いて、IDフィールド700内の最も先頭のゼロを有するメッセージは、最も高い優先度を有し、それらのメッセージは送信の最小の遅延に直面する。したがって、STCは、ノードに対して許可される最高最大優先度について知ることができ、この優先度よりも高いメッセージID700を送信しようとするいかなる試みも、STCがそのメッセージをブロックすることをもたらし得る。しかしながら、STCはまた、ノードデバイスによって送信され得る許可できるメッセージID700のフルセットを知ることもできる。したがって、STCはまた、メッセージIDがノードによって許可される最大値よりも低い優先度を有する場合であっても、この範囲内ではないIDフィールド700を有するメッセージをブロックしてもよい。
【0032】
STCはまた、許可されたメッセージ形式の他の態様の知識をIDフィールド700のそれ以外に有してもよい。例えば、ノードデバイスは、データフィールド702のバイトサイズを定義するデータ長フィールド701の最大値よりも下回る(データフィールド702内に含まれる)メッセージペイロードサイズに限定されてもよい。したがって、ノードがこの最大許可値よりも大きいデータ長フィールド702の値を送信する場合、これはまた、ノードが異常に挙動しているというインジケータとすることができる。同様に、EOFフィールド703は、6つの劣性ビットであるべきであり、このフィールド703における優性ビットの送信は、ノードが異常に挙動しているというインジケータとすることができる。ビットスタッフィングなどの他のCANの慣例もまた、STCによって実施されてもよい。
【0033】
ノードデバイスが許可されたメッセージを送信しようと試みて、IDフィールド700に基づいてアービトレーションに負けるときに正しく挙動したと仮定すると、STCは依然として、メッセージ送信の残りの間のノードの活動を監視してもよく、ノードが、それが想定されなかった任意の優性ビットをアサートしようとするインスタンスを記録してもよい。あるいは、STCは、ノードを監視しなくてもよいが、メッセージの残りの間の適切な間隔の間にバスインターフェースを単に浮動させてもよい。いずれの場合でも、STCは、ノードデバイスが、アービトレーションに負けることに続いて優性ビットを送信することを防止する。
【0034】
図8では、図は、一実施形態例に従う、STCロジック802が許可できるメッセージビットをどのように判定できるかの一例を例示する。ノードデバイス800は、STC802とノード802間のバスインターフェースを介してビット806のシーケンスを送信している。この実施例の目的のために、ビット806は、11ビットのメッセージIDフィールドであるが、STC802によって監視されるメッセージフレームのどの部分にも適用可能であり得る。STC802は、CANバス804に結合された別のバスインターフェースを有する。2つのバスインターフェースは、CANバスと同じ又は異なる種類のものであってもよい。ビット806のそれぞれについて、STCは、決定ブロック808によって示されるような決定を行う。各ビットが許可されると、それは、バス804に転送される。決定ブロック808aの戻り値によって示されるように、優性ビット806aは、このノードデバイス800について許可されない。この判定808aは、既にバス804上に送信された前の3つのビットを考慮することができる。判定808aが否定であることにより、STC802は、優性ビットがこれ以上送信されないようにバスを浮動させ、このことは、ノードデバイス800からのメッセージの更なる送信を停止させる。STC802は、任意の送信決定のためにビットを使用しない一方で、ロギング目的のためにビット806aに続くビットを記録してもよい。
【0035】
この実施例では、ビット806aが許可されなかったとの決定は、ノード800がバス804上に送信することを許可されたものよりも高い優先度をそれが有するためであり得る。例えば、許可された最も高い優先度メッセージIDが{1,0,0,1,0,0,0,0,0,0,0}である場合、例示されたビットシーケンス806は、その優先度に違反するであろう。また、ビット内の符号化されたメッセージIDは、最大優先度に違反しないが、ノードによって許可されたメッセージIDのセット内にはないこともあり得る。例えば、ノード800が、先頭のゼロを有する高優先度メッセージを送信することができる場合、ビットシーケンス806は、その高優先度メッセージよりも低い優先度を有するが、シーケンス806は、依然として、ノード800によって送信されることが許可されたメッセージIDセット内にはなくてもよい。
【0036】
決定ブロック808は、いくつかの手法で実装されてもよい。例えば、許可できるメッセージIDを判定するために、有限状態マシンが、ビットのシーケンスについてバイナリ出力(はい又はいいえ)を提供するソフトウェア又はハードウェアで構築されることができる。状態マシンは、許可できないシーケンスに遭遇するまで、各ビットについて「はい」を出力し、次いで、「いいえ」が出力される。別の実施例では、ノード800の許可されたメッセージIDを列挙することができ、各ビットシーケンスは、これらのメッセージIDの全部又は一部に対して比較することができる。この実施例は、5つの11ビットIDについて表1に示され、ビットは左から右に送信される。
【0037】
【0038】
一実施例では、各行をメモリに保持することができ、送信されたIDのnビットは、各行内のIDの先頭のnビットと論理的に比較することができる。この実施例の第1のビットについて、これは、ノードデバイスによって送信された先頭のビットがゼロである場合にのみ否定の結果となる。次に送信されたビットについて、第1の2つの送信されたビットの2つのタプルは、表内の第1の2つのビット列から形成された2つのタプルと比較される。この場合、第1のビットが1であることが既に仮定される(そうでなければ比較は続かない)ので、これは常に真に戻ることになり、そのため、第1の2つの送信されたビットの唯一の可能性は、{1,0}及び{1,1}であり、そのどちらもリスト内にある。第1の3つの送信されたビットで形成された3つのタプルについても同様である。しかしながら、{1,0,0,0}及び{1,1,1,1}などの第1の4ビットの、多くの禁止された組み合わせが存在する。全部のIDの代わりにn個のタプルを見ると、各メッセージIDをマスキング及び比較するのではなく、いくらかの最適化を考慮に入れてもよいが、実装がより複雑である。同様に、場合によっては、単一のビットに基づいて判定を下すことができる。例えば、表1では、第1、第5及び第8の列に対して1つの許可されたビット値のみが存在する。接頭マッチングを行うためのより効率的な手法が存在し得ることが理解されるであろう。例えば、三元検索木又は他の別の接頭マッチングデータ構造が使用されてもよい。別の選択肢は、送信の有効な範囲を表す区間グラフを使用することである。
【0039】
本明細書に記載されるようなSTCは、既存のCAN規格と電気的及びプロトコル互換性があり、それゆえ、既存のCANハードウェア及びバスと共に使用することができる。この互換性は、
図9の上面図に示されるように、機械的互換性へと拡張することができる。2つのSTC900、901が、CANバス902及び2つのノードデバイス904、905に結合されて示されている。STC900、901は、ノードデバイス904、905をバス902に直接結合する標準的なTコネクタと機械的に交換可能なハウジング及びコネクタを含む。これにより、STC900、901の機能を含むようにレガシーシステムの容易な機械的及び電気的な改造を可能にすることができる。
【0040】
図10では、フローチャートが、一実施形態例に従う方法を示す。この方法は、第1のCANバスインターフェースを介してCANバスと通信するように装置を電気的に結合すること1000を含む。ノードデバイスは、第1のCANバスインターフェースから電気的に分離可能な装置の第2のCANバスインターフェースを介して装置に電気的に結合される1001。ブロック1002では、ノードデバイスに対して許可されていない第2のCANバスインターフェースを介してノードデバイスがメッセージを送信しているかどうかを装置を介して判定する。そうである場合、メッセージは、第1のCANバス上に送信されることを防止され1003、そうでなければ、送信されることが許可される1004。
【0041】
上記した様々な実施形態は、特定の結果を提供するように相互作用する回路、ファームウェア及び/又はソフトウェアモジュールを使用して実装されてもよい。当業者は、当該技術分野において一般的に知られている知識を使用して、モジュールレベルで又は全体としてのいずれかで、このように記載した機能を容易に実装することができる。例えば、本明細書に例示されるフローチャート及び制御図は、プロセッサによる実行のためのコンピュータ可読命令/コードを作成するために使用されてもよい。このような命令は、非一時的なコンピュータ可読媒体上に記憶され、当該技術分野において既知のように実行するためにプロセッサに転送されてもよい。上記に示した構造及び手順は、本明細書で上述した機能を提供するために使用することができる実施形態の代表的な実施例に過ぎない。
【0042】
別途指示されない限り、本明細書及び特許請求の範囲で使用される特徴サイズ、量及び物理的特性を表す全ての数は、全ての場合において、「約」という用語によって修飾されるものとして理解されたい。したがって、反対に指示されない限り、前述の明細書及び添付の特許請求の範囲に記載される数値パラメータは、本明細書に開示される教示を利用して当業者が得ようとする所望の特性に応じて変動し得る近似値である。終点による数値範囲の使用は、その範囲内の全ての数(例えば、1~5は、1、1.5、2、2.75、3、3.80、4及び5を含む)、及びその範囲内の任意の範囲を含む。