(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-05
(45)【発行日】2024-01-16
(54)【発明の名称】車両内データ転送のための、エンドポイントおよびダイレクトメモリアクセスコントローラを有するネットワークスイッチ
(51)【国際特許分類】
G06F 13/28 20060101AFI20240109BHJP
G06F 13/24 20060101ALI20240109BHJP
G06F 13/38 20060101ALI20240109BHJP
【FI】
G06F13/28 310A
G06F13/28 310J
G06F13/24 310A
G06F13/38 340Z
(21)【出願番号】P 2021530242
(86)(22)【出願日】2019-11-27
(86)【国際出願番号】 US2019063626
(87)【国際公開番号】W WO2020113015
(87)【国際公開日】2020-06-04
【審査請求日】2022-08-26
(32)【優先日】2018-11-28
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-11-27
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520078248
【氏名又は名称】マーベル アジア ピーティーイー、リミテッド
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】クンツ、マンフレッド
(72)【発明者】
【氏名】アルトフ、マルクス
(72)【発明者】
【氏名】ニン、ションジ
【審査官】田中 啓介
(56)【参考文献】
【文献】米国特許出願公開第2013/0111077(US,A1)
【文献】米国特許第06055583(US,A)
【文献】特表2004-516698(JP,A)
【文献】特開2011-070372(JP,A)
【文献】米国特許出願公開第2009/0304002(US,A1)
【文献】国際公開第2010/050092(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F13/20-13/42
G06F21/12-21/16
G06F21/50-21/57
H04L12/00-12/22
H04L12/50-12/66
H04L45/00-51/58
H04L67/00-67/75
(57)【特許請求の範囲】
【請求項1】
ネットワークスイッチであって、
データバスと、
i)ホストシステムのデバイスドライバによって生成され、ii)前記ホストシステムから前記ネットワークスイッチに送信される記述子を格納するように構成されたレジスタであって、前記記述子は、前記ホストシステムのメモリ内のバッファのアドレスを特定し、前記ネットワークスイッチは、前記ホストシステムから分離されている、レジスタと、
前記記述子を受信
するために前記ホストシステムのルートコンプレックスコントローラと通信し、前記レジスタ内に
前記記述子を格納し、
前記ルートコンプレックスコントローラと
前記データバスとの間でデータを転送するように構成されたエンドポイントコントローラ
と、
受信ダイレクトメモリアクセスコントローラまたは送信ダイレクトメモリアクセスコントローラとして機能するダイレクトメモリアクセスコントローラであって、前記エンドポイントコントローラまたは前記レジスタから前記バッファの前記アドレスを受信し、前記アドレス
と、前記デバイスドライバにより生成された
前記ホストシステムの前記バッファの制御を前記ネットワークスイッチに与えるインジケーションとに基づいて、
i)前記ホストシステムの前記メモリと、
ii)前記ネットワークスイッチ
および前記ホストシステムから分離されたネットワークデバイスとの間での前記データの転送を独立制御するように構成され
る、ダイレクトメモリアクセスコントローラと
を備えるネットワークスイッチ。
【請求項2】
前記エンドポイントコントローラは、ペリフェラルコンポーネントインターコネクトエクスプレスプロトコルに応じて前記データを転送する、ペリフェラルコンポーネントインターコネクトエクスプレスデバイスである、請求項1に記載のネットワークスイッチ。
【請求項3】
前記ネットワークデバイスは、センサ、アクチュエータ、またはエンドポイントデバイスである、請求項1または2に記載のネットワークスイッチ。
【請求項4】
前記ダイレクトメモリアクセスコントローラは、前記データの転送前に、前記デバイスドライバから前記メモリの前記バッファの制御を得て、前記データの転送後に、前記デバイスドライバに前記バッファの制御を返すために割り込みを生成するように構成された、請求項1から3のいずれか一項に記載のネットワークスイッチ。
【請求項5】
前記メモリに格納されたルールを受信し、前記ルールに基づいて、前記ネットワークスイッチで前記ネットワークデバイスから受信されたフレームを検査し、前記フレームをドロップするか、前記フレームを前記デバイスドライバ、前記ホストシステムのアプリケーションコントローラ、または前記ホストシステムのサービス拒否コントローラに送るように構成された別のコントローラをさらに備え
、
前記デバイスドライバは、前記フレームを受信することに応答して、インターネットプロトコルルーティングおよびサービス拒否攻撃防止を動的に構成するために、前記フレームおよびインターネットプロトコルルーティングテーブルを評価するように構成されている、請求項1から4のいずれか一項に記載のネットワークスイッチ。
【請求項6】
前記ネットワークスイッチの前記ダイレクトメモリアクセスコントローラは、前記受信したアドレスに基づいて、前記バッファにアクセスし、前記ホストシステムの前記デバイスドライバまたはホストコントローラの少なくとも1つから独立して、前記ホストシステムと、前記ネットワークデバイスとの間で前記データを転送するように構成された、請求項1から5のいずれか一項に記載のネットワークスイッチ。
【請求項7】
別のメモリをさらに備え、
前記ネットワークスイッチは、前記ホストシステムのホストコントローラに対してペリフェラルコンポーネントインターコネクトエクスプレスエンドポイントとして構成され、前記ホストコントローラにより、ペリフェラルコンポーネントインターコネクトエクスプレスプロトコルおよびペリフェラルコンポーネントインターコネクトエクスプレスリンクを使用して制御され、
前記ダイレクトメモリアクセスコントローラは、前記ホストコントローラにより、前記バッファの制御が与えられ、
前記別のメモリは、前記ホストコントローラから受信したルールに基づいて動作する、請求項1から
5のいずれか一項に記載のネットワークスイッチ。
【請求項8】
別のメモリをさらに備え、前記別のメモリは、
前記ホストシステムのホストコントローラからルールを受信し、
前記ネットワークデバイスから受信されたフレームを検査し、
前記ルールと前記フレームの前記検査に基づいて、
前記ホストシステムの前記メモリ内の、前記フレームのダイレクトメモリアクセス格納を防止すること、または
前記ホストシステムの前記
メモリに前記フレームを送る代わりに、前記フレームを、前記デバイスドライバ、アプリケーションコントローラ、およびサービス拒否コントローラのうちの1つにリダイレクトすることのうちの少なくとも一方を実行するように構成され
、
前記デバイスドライバは、前記フレームを受信することに応答して、インターネットプロトコルルーティングおよびサービス拒否攻撃防止を動的に構成するために、前記フレームおよびインターネットプロトコルルーティングテーブルを評価するように構成されている、請求項1から
4のいずれか一項に記載のネットワークスイッチ。
【請求項9】
前記ダイレクトメモリアクセスコントローラへ、または前記ダイレクトメモリアクセスコントローラから前記データを転送するように構成された媒体アクセス制御デバイスと、
前記媒体アクセス制御デバイスと、前記ネットワークスイッチに接続された前記ネットワークデバイスとの間で前記データを転送するように構成されたイーサネットスイッチと
をさらに備える、請求項1から
5、7及び8のいずれか一項に記載のネットワークスイッチ。
【請求項10】
前記ネットワークデバイスは、第1ネットワークデバイスであり、
前記ネットワークスイッチは、前記イーサネットスイッチを介して第2ネットワークデバイスに接続され、
前記イーサネットスイッチは、前記媒体アクセス制御デバイスと、前記第2ネットワークデバイスとの間で他のデータを転送するように構成され、
前記イーサネットスイッチを含む前記ネットワークスイッチは、前記第1ネットワークデバイスおよび前記第2ネットワークデバイスから分離しており、
前記第1ネットワークデバイスおよび前記第2ネットワークデバイスは、前記ホストシステムから分離している、請求項
9に記載のネットワークスイッチ。
【請求項11】
請求項1から
5、9および10のいずれか一項に記載のネットワークスイッチと、
前記メモリと、
前記デバイスドライバを実装するホストコントローラと、
前記ホストコントローラおよび前記ダイレクトメモリアクセスコントローラに、前記メモリへのアクセスを提供するように構成された前記ルートコンプレックスコントローラと
を備えるデータ転送システム。
【請求項12】
前記デバイスドライバは、前記ダイレクトメモリアクセスコントローラに、前記バッファの制御を移行するように構成され、
前記ダイレクトメモリアクセスコントローラは、前記バッファの制御を前記デバイスドライバに戻すように構成された、請求項
11に記載のデータ転送システム。
【請求項13】
前記ルートコンプレックスコントローラは、前記デバイスドライバと、前記メモリとの間の、制御情報の転送を制御するように構成され、
前記ルートコンプレックスコントローラと、前記エンドポイントコントローラとは、ペリフェラルコンポーネントインターコネクトエクスプレスプロトコルに応じて動作する、ペリフェラルコンポーネントインターコネクトエクスプレスデバイスである、請求項
11または
12に記載のデータ転送システム。
【請求項14】
前記ネットワークスイッチからフレームを受信し、前記フレームが攻撃に関連付けられている可能性が高いか判定し、前記メモリ内に格納されたルールを変更し、別のフレームまたは前記ネットワークデバイスとの接続をドロップするために、前記変更されたルールを前記ネットワークスイッチに送るように構成されたサービス拒否コントローラをさらに備える、請求項
11から
13のいずれか一項に記載のデータ転送システム。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願の相互参照]
本願は、2018年11月28日に出願された米国仮出願第62/772,506号の利益を主張する、2019年11月27日に出願された米国特許出願第16/697,361号の優先権を主張する。上述の出願の開示全体は、参照によって本明細書に組み込まれる。
【0002】
本開示は、車両内のデバイス間のデータ転送に関し、より具体的には、車両内のホストコントローラにセンサデータを転送する自動車用イーサネット(登録商標)スイッチデバイスに関する。
【背景技術】
【0003】
本明細書で提供する背景説明は、本開示の文脈を一般的に提示することを目的としている。ここに名を挙げられた発明者らの研究は、この背景技術の項において当該研究が説明される範囲において、出願時において先行技術として別途みなし得ない説明の複数の態様と共に、明示的にも暗示的にも本開示に対する先行技術としては認められない。
【0004】
自律走行車両などの自動車用途において、データトラフィックの高帯域幅が今までになく求められている。自律走行車両は、完全および半自律走行車両を含む。これは、ビデオ、音声、LIDAR、RADAR、近接および/またはその他センサデータの転送を含む。例として、車両内のセンサは、車両外の環境を監視し、処理用にホストシステムにデータを戻すように提供するように構成され得る。データはホストシステムにより処理され、車両内で動作を実行するために使用される(例えば、ブレーキ、ステアリング、加速などの自律動作)。データはさらにまたはあるいは、車両内および/または外部のネットワークデバイスおよび/またはコンポーネントにルーティングされ得る。
【発明の概要】
【0005】
ネットワークスイッチが提供され、上記ネットワークスイッチは、データバスと、レジスタと、エンドポイントコントローラと、ダイレクトメモリアクセスコントローラとを備える。エンドポイントコントローラは、ホストシステムのデバイスドライバにより生成された記述子を受信し、上記レジスタ内に、上記記述子を格納し、上記ホストシステムのルートコンプレックスコントローラと、上記データバスとの間でデータを転送するように構成される。上記記述子は、上記ホストシステムのメモリ内のバッファのアドレスを特定する。上記ダイレクトメモリアクセスコントローラは、上記エンドポイントコントローラまたは上記レジスタから上記バッファの上記アドレスを受信し、上記アドレスと上記デバイスドライバにより生成されたインジケーションに基づいて、上記ホストシステムの上記メモリと、上記ネットワークスイッチに接続されたネットワークデバイスとの間での上記データの転送を独立制御するように構成される。上記ダイレクトメモリアクセスコントローラは、受信ダイレクトメモリアクセスコントローラまたは送信ダイレクトメモリアクセスコントローラである。
【0006】
別の特徴では、上記エンドポイントコントローラは、ペリフェラルコンポーネントインターコネクトエクスプレスプロトコルに応じて上記データを転送する、ペリフェラルコンポーネントインターコネクトエクスプレスデバイスである。別の特徴では、上記インジケーションは、上記メモリに格納されたフラグ、割り込み、または信号である。
【0007】
別の特徴では、項目1に記載のネットワークスイッチは、上記ダイレクトメモリアクセスコントローラへ、または上記ダイレクトメモリアクセスコントローラから上記データを転送するように構成された媒体アクセス制御デバイスと、上記媒体アクセス制御デバイスと、上記ネットワークスイッチに接続された上記ネットワークデバイスとの間で上記データを転送するように構成されたイーサネットスイッチとをさらに備える。別の特徴では、上記ネットワークデバイスは、センサ、アクチュエータ、ペリフェラルコンポーネントインターコネクトエクスプレスデバイス、またはエンドポイントデバイスである。
【0008】
別の特徴では、上記ネットワークスイッチは、媒体アクセス制御デバイスをさらに備え、上記データの転送を独立制御しながら、上記ダイレクトメモリアクセスコントローラは、上記データバスと、上記媒体アクセス制御デバイスとの間で、上記ホストシステムのホストコントローラとの相互作用なしに、上記データを転送するように構成される。
【0009】
別の特徴では、上記ダイレクトメモリアクセスコントローラは、上記データの転送前に、上記デバイスドライバから上記メモリの上記バッファの制御を得て、上記データの転送後に、上記デバイスドライバに上記バッファの制御を返すために割り込みを生成するように構成される。
【0010】
別の特徴では、上記ネットワークスイッチは、上記メモリに格納されたルールを受信し、上記ルールに基づいて、上記ネットワークスイッチで上記ネットワークデバイスから受信されたフレームを検査し、上記フレームをドロップするか、上記フレームを上記デバイスドライバ、上記ホストシステムのアプリケーションコントローラ、または上記ホストシステムのサービス拒否コントローラに送るように構成された別のコントローラをさらに備える。
【0011】
別の特徴では、データ転送システムが提供され、上記データ転送システムは、項目1に記載の上記ネットワークスイッチと、上記メモリと、上記デバイスドライバを実装するホストコントローラと、上記ホストコントローラおよび上記ダイレクトメモリアクセスコントローラに、上記メモリへのアクセスを提供するように構成された上記ルートコンプレックスコントローラとを備える。
【0012】
別の特徴では、上記デバイスドライバは、上記ダイレクトメモリアクセスコントローラに、上記バッファの制御を移行するように構成され、上記ダイレクトメモリアクセスコントローラは、上記バッファの制御を上記デバイスドライバに戻すように構成される。別の特徴では、上記ルートコンプレックスコントローラは、上記デバイスドライバと、上記メモリとの間の、制御情報の転送を制御するように構成される。別の特徴では、上記ルートコンプレックスコントローラと、上記エンドポイントコントローラとは、ペリフェラルコンポーネントインターコネクトエクスプレスプロトコルに応じて動作する、ペリフェラルコンポーネントインターコネクトエクスプレスデバイスである。
【0013】
別の特徴では、上記データ転送システムは、上記ネットワークスイッチからフレームを受信し、上記フレームが攻撃に関連付けられている可能性が高いか判定し、上記メモリ内に格納されたルールを変更し、別のフレームまたは上記ネットワークデバイスとの接続をドロップするために、上記変更されたルールを上記ネットワークスイッチに送るように構成されたサービス拒否コントローラをさらに備える。
【0014】
別の特徴では、ネットワークスイッチを動作させる方法が提供され、上記方法は、上記ネットワークスイッチのエンドポイントコントローラにおいて、ホストシステムのデバイスドライバにより生成された記述子を受信する段階であって、上記記述子は、上記ホストシステムのメモリ内のバッファのアドレスを特定する、受信する段階と、レジスタ内に、上記記述子を格納する段階と、上記ホストシステムのルートコンプレックスコントローラと、上記ネットワークスイッチのデータバスとの間でデータを転送する段階と、ダイレクトメモリアクセスコントローラにおいて、上記エンドポイントコントローラまたは上記レジスタから上記バッファの上記アドレスを受信する段階と、上記アドレスと上記デバイスドライバにより生成されたインジケーションとに基づいて、上記ホストシステムの上記メモリと、上記ネットワークスイッチに接続されたネットワークデバイスとの間での上記データの転送を独立制御する段階とを備える。
【0015】
別の特徴では、上記方法は、上記エンドポイントコントローラを介して、ペリフェラルコンポーネントインターコネクトエクスプレスプロトコルに応じて上記データを転送する段階をさらに備える。別の特徴では、上記方法は、媒体アクセス制御デバイスを介して、上記ダイレクトメモリアクセスコントローラへ、または上記ダイレクトメモリアクセスコントローラから上記データを転送する段階と、イーサネットスイッチを介して、上記媒体アクセス制御デバイスと、上記ネットワークスイッチに接続された上記ネットワークデバイスとの間で上記データを転送する段階とをさらに備える。
【0016】
別の特徴では、上記方法は、上記データの転送を独立制御しながら、上記ダイレクトメモリアクセスコントローラを介して、上記データバスと、媒体アクセス制御デバイスとの間で、上記ホストシステムのホストコントローラとの相互作用なしに、上記データを転送する段階をさらに備える。
【0017】
別の特徴では、上記方法は、上記ダイレクトメモリアクセスコントローラにおいて、上記データの転送前に、上記デバイスドライバから上記メモリの上記バッファの制御を得る段階と、上記データの転送後に、上記デバイスドライバに上記バッファの制御を返すために割り込みを生成する段階とをさらに備える。
【0018】
別の特徴では、上記方法は、上記メモリに格納されたルールを受信する段階と、上記ルールに基づいて、上記ネットワークスイッチで上記ネットワークデバイスから受信されたフレームを検査し、上記フレームをドロップするか、上記フレームを上記デバイスドライバ、上記ホストシステムのアプリケーションコントローラ、または上記ホストシステムのサービス拒否コントローラに送る段階とをさらに備える。
【0019】
別の特徴では、上記方法は、上記ネットワークスイッチからフレームを受信する段階と、上記フレームが攻撃に関連付けられている可能性が高いか判定する段階と、上記メモリ内に格納されたルールを変更する段階と、別のフレームまたは上記ネットワークデバイスとの接続をドロップするために、上記変更されたルールを上記ネットワークスイッチに送る段階とをさらに備える。
【0020】
本開示の適用可能性のさらなる領域が、詳細な説明、特許請求の範囲及び図面から明らかになろう。詳細な説明および具体的な例は、例示のみを目的とすることが意図されており、本開示の範囲を限定することは意図されていない。
【図面の簡単な説明】
【0021】
【
図1】本開示に係る、ホストシステムと、1または複数のネットワークスイッチとを備える、車両のデータ転送システムの機能ブロック図である。
【0022】
【
図2】
図1のホストシステムと、ネットワークスイッチの1つの機能ブロック図である。
【0023】
【
図3】
図2のネットワークスイッチの機能ブロック図である。
【0024】
【0025】
【
図5】本開示に係る、ネットワークスイッチおよびホストシステムの、例示的な半または完全自律走行車両における実装の機能ブロック図である。
【0026】
【
図6】本開示に係る、ホストシステムがアプリケーションコントローラと、サービス拒否検出コントローラとを備える車両内で実装される、
図2のホストシステムおよびネットワークスイッチの、ペリフェラルコンポーネントインターコネクトエクスプレス実装の機能ブロック図である。
【0027】
【
図7】本開示に係る、ネットワークスイッチにより実行される攻撃対策方法を示す。
【0028】
【
図8】本開示に係る、ホストシステムのサービス拒否検出コントローラにより実行されるサービス拒否方法を示す。
【0029】
図面において、参照番号は、同様のおよび/または同一の要素を特定するために再利用されることがある。
【発明を実施するための形態】
【0030】
車両は、車両コンポーネント、並びに車両の内部および外部環境の状態を監視するための多数のセンサを有し得る。車両のホストシステムはさらに、センサからデータを受信し、受信したセンサデータに応じて各種動作を実行する、複数のコントローラを備え得る。特定の用途において、データは近傍の車両、遠隔局、および/または車両内のネットワークデバイスと共有される。コントローラのいくつかの例は、エンジンコントローラ、送信コントローラ、暖房、換気、および空調(HVAC)コントローラ、半または完全自律走行車両コントローラ、インフォテイメントコントローラ、照明コントローラなどを含む。
【0031】
本明細書で上述した例は、ホストシステムと、ホストシステムと車両内および/または外部のその他ネットワークデバイスとの間でデータをルーティングするための、1または複数のネットワークスイッチとを含む、データ転送システムを含む。様々な実施形態において、ネットワークスイッチはそれぞれ、エンドポイントデバイスとして構成され、ホストシステムルートコンプレックスコントローラと通信するためのエンドポイントコントローラを有する。この結果、ネットワークスイッチはそれぞれ、ホストシステムに対する単一のエンドポイントデバイス(例えば、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)エンドポイント)とみなされる。このように、ネットワークスイッチはそれぞれ、例えばPCIeプロトコルおよびPCIeリンクを使用して、ホストシステムにより制御可能な単一のデバイスとしてみなされる。
【0032】
ネットワークスイッチは、ネットワークスイッチ内のレジスタと、ホストシステムのホストメモリ内のバッファとの間のデータ転送を制御する、ダイレクトメモリアクセス(DMA)コントローラをさらに含む。ホストシステムの1または複数のデバイスドライバは、ネットワークスイッチによるホストメモリへのアクセスを可能にするように、ホストメモリおよびネットワークスイッチを事前構成することを含む、初期化手順に従う。これは、ホストメモリのバッファおよび記述子を事前割り当てすることを含む。記述子の一部は、初期化手順中に事前構成される。初期化手順が完了すると、1または複数のデバイスドライバは、ネットワークスイッチに対するホストメモリのアクセス制御を提供する。その後、ネットワークスイッチは、バッファを事前割り当てし、記述子を事前構成することで、ホストコントローラから独立して、ホストメモリへの、およびホストメモリからのデータ転送を制御できる。エンドポイントコントローラは、1または複数のデバイスドライバに、DMAコントローラ、媒体アクセス制御(MAC)レシーバおよびトランスミッタ、および/またはターナリ―コンテンツアドレッサブルメモリ(TCAM)コントローラの動作を含むネットワークスイッチの内部動作を制御可能にする。
【0033】
一例において、ルートコンプレックスと、エンドポイントコントローラとは、ポイントツーポイント接続であるPCIeリンクを通じて通信するPCIeデバイスである。ルートコンプレックスコントローラと、エンドポイントコントローラとの間のPCIeリンクは、PCIe third generation(GEN3)で流れる2つのレーンを含み、単一のイーサネットポートから、まとめて最大5から10ギガバイト/秒(Gbps)を送信可能である。
【0034】
ネットワークスイッチは、インターネットプロトコル(IP)ルーティングおよび攻撃対策(attack prevention)などのスマート機能を有する。一実施形態において、ネットワークスイッチはそれぞれ、IPルーティングおよび攻撃対策を実装するTCAMコントローラを含む。別の実施形態において、ホストシステムのデバイスドライバのうちの1または複数と、TCAMコントローラとが協働して、攻撃対策を提供する。ホストシステムは、サービス拒否(denial of service(DoS))ファームウェアを含み、TCAMコントローラはIPルーティングファームウェアを含む。IPルーティングファームウェアは、各フレームについて、ポートの発信元および宛先アドレス、キュー、レジスタ、ホストバッファ、DMAエンジンなどを決定し、それに応じてフレームをルーティングする。DoSファームウェアは、入ってくるフレームを監視し、所定のルールに基づき、IPルーティングファームウェアに指定されたフレームのルーティングを許可するかの判定、さらなる分析のためのフレーム再ルーティング、および/またはフレームのドロップを行う。ポート、キュー、レジスタ、およびDMAエンジンは、ネットワークスイッチのうちの特定のものの中に配置されている。一例において、IPルーティングおよび攻撃対策ファームウェアは、ホストシステムの1または複数のデバイスドライバおよび/またはホストコントローラにより動的に構成、および/または制御される。
【0035】
図1は、ホストコントローラと、ネットワークデバイス(例えば、センサおよびその他ネットワークデバイス)との間でデータ(例えばセンサデータ)を転送する、車両102のデータ転送システム100を示す。データ転送システム100は、PCIeリンクなどのリンク107を介して相互通信する、ホストシステム104と、1または複数のネットワークスイッチ(1つのネットワークスイッチ106が図示される)とを含む。ホストシステム104は、1または複数のホストコントローラ108と、ホストメモリ110と、ルートコンプレックスコントローラ112とを含む。ホストコントローラ108は、ホストコントローラ108のうちの1つに実装される、デバイスドライバ114を含む。例として、ホストコントローラ108は、中央処理装置として実装され、センサデータおよび/またはその他受信データに応じて車両102の動作を制御する。デバイスドライバ114は、ホストコントローラ108から独立して、ネットワークスイッチ106と、ホストメモリ110との間でデータを転送するように、ホストメモリ110と、ネットワークスイッチ106とを構成する。ホストメモリ110は、受信したデータ、および/または車両ステータスデータなどの、ネットワークスイッチ106の下流のネットワークデバイスに送信されるデータを格納するための、ソリッドステートメモリ、および/またはその他メモリを含み得る。ルートコンプレックスコントローラ112は、(i)ホストコントローラ108と、ホストメモリ110との間、(ii)ホストコントローラ108と、ネットワークスイッチ106との間、および(iii)ホストメモリ110と、ネットワークスイッチ106との間のデータおよび制御情報の転送を制御する。
【0036】
ネットワークスイッチはそれぞれ、エンドポイントコントローラ120と、制御バス121と、データバス122と、受信(RX)DMAコントローラ124と、送信(TX)DMAコントローラ126と、MACレシーバ128と、MACトランスミッタ130と、イーサネットスイッチ132とを備える。エンドポイントコントローラ120は、リンク107を介したルートコンプレックスコントローラ112への、およびルートコンプレックスコントローラ112からの、およびバス121、122を介したDMAコントローラ124、126への、およびDMAコントローラ124、126からのデータおよび制御情報の転送を制御する。制御バス121はレジスタ133に接続される。制御情報は、レジスタ133に格納され、データ転送前に適用される。レジスタ133は、イーサネットスイッチ132内に実装される。エンドポイントコントローラ120は、例えば、ホストシステム104と、ネットワークスイッチ106との間の全二重通信、およびネットワークスイッチ106全体の制御に対応する、PCIeエンドポイントデバイスとしてのPCIeリンクを通じて通信することで、ネットワークスイッチ106を、ホストシステム104に対してエンドポイントデバイスとして動作可能とする。
【0037】
実施形態において、ルートコンプレックスコントローラ112、リンク107、およびエンドポイントコントローラ120は、PCIeプロトコルに従って動作するPCIeシステムのPCIeコンポーネントとして実装される。ルートコンプレックスコントローラ112は、ホストコントローラ108と、ホストメモリ110とを、ネットワークスイッチのPCIeスイッチファブリックに接続するPCIeルートコンプレックスとして実装される。実施形態において、リンク107は、PCIeリンクとして実装される。エンドポイントコントローラ120は、PCIeエンドポイントとして実装される。
【0038】
制御バス121は、記述子情報を含む制御情報を転送するのに使用される。ホストシステム104内で記述子が用意されていると、デバイスドライバ114は、制御バスを通じてネットワークスイッチ106をトリガする。ネットワークスイッチ106は、記述子と、対応するアプリケーションデータを取得するために、DMAコントローラ124、126の1つを起動する。記述子情報の例としては、発信元および宛先アドレス、発信元および宛先識別子(ID)、並びにフレームサイズおよびタイプが挙げられる。データバス122は、ホストメモリ110への、およびホストメモリ110からのデータ転送に使用される。DMAコントローラ124、126は、デバイスドライバ114から受信した記述子情報に基づいて、ホストメモリ110への、およびホストメモリ110からのデータ転送を制御する。ネットワークスイッチ106は、任意の適切な数のRX DMAコントローラ124と、任意の適切な数のTX DMAコントローラ126とを含む。図示の例において、ネットワークスイッチ106は、10個の受信DMAコントローラ124と、10個の送信DMAコントローラ126とを含む。データ転送を制御するDMAコントローラ124、126を複数有することで、実施形態において1または複数のPCIeリンクを提供するリンク107を介して、ホストシステム104と、ネットワークスイッチ106との間で高帯域幅が実現される。ホストメモリ110で受信され、受信DMAコントローラ124を介してネットワークスイッチ106により提供されたデータは、ホストコントローラ108により処理される。得られた処理済みデータはその後、送信DMAコントローラ126を使用してネットワークスイッチ106に送信可能である。これらデータ転送は、例えばホストシステム104のアプリケーション、プレゼンテーション、セッション、トランスポート、およびネットワーク層間の、ホストシステム104内でのデータの多層転送、処理、および切り替えを含む。
【0039】
MACレシーバ128は、物理リンク制御の複雑さが、論理リンク制御と、対応するネットワークスタックの上層から不可視となるように、物理層の制御抽象化を提供する。物理層は、少なくとも部分的にイーサネットスイッチ132により実装される。MACレシーバ128は、受信されたフレームを、RX DMAコントローラ124へと通過するフレームに変換する。この変換は、用途によっては、受信されたフレームから同期ワードプレアンブル、パディング、および/またはフレームチェックシーケンスを除去することを含む。MACレシーバ128は、入ってくるフレームを、受信DMAコントローラ124に分配するフィルタ133を含む。MACトランスミッタ130は、フレームを物理層における送信に適したフォーマットに変換する。この変換は、用途によっては、送信エラー特定のため、同期ワードプレアンブル、パディング、および/またはフレームチェックシーケンスを追加することを含む。
【0040】
イーサネットスイッチ132は、(i)MACレシーバ128およびMACトランスミッタ130の間、および(ii)センサ140、アクチュエータ142、および別のネットワークデバイス144の間のデータ転送を制御する。センサ140の例は、1または複数のRADARセンサ、LIDARセンサ、近接センサ、カメラ、温度センサ、圧力センサ、電圧センサ、電流センサ、流量センサなどを含む。アクチュエータ142の例は、エンジン、モータ、ポンプ、およびバルブを含む。別のネットワークデバイス144の例は、トランシーバ、テレマティクスコントローラ、インフォテイメントコントローラ、全地球測位システム(GPS)コントローラ、ナビゲーションコントローラ、照明コントローラ、ブレーキコントローラ、ステアリングコントローラ、加速コントローラなどを含む。
【0041】
ネットワークスイッチ106は、典型的なネットワークインタフェースカード(NIC)および従来のPCIeスイッチと構造が異なり、異なる動作を行い、その革新的なアーキテクチャおよび機能により、ホストコントローラ108が実装する異なる用途に対して、柔軟性および適合性を提供する。NICは、単一のイーサネットポートを介した、ホストシステムと、ネットワークとの間のインタフェースを提供する。例えば、NICは、PCIeルートコンプレックスに接続されたPCIeリンクと、ローカルエリアネットワーク(LAN)との間のインタフェースとして使用され得る。従来のPCIeスイッチは、PCIeエンドポイントデバイスではなく、むしろPCIeリンクと、複数のPCIeエンドポイントデバイスとの間のフレームの切り替えに使用される。ネットワークスイッチ106は、NICと同様のフレームの転送および変換が可能で、ホストコントローラ108により、ネットワークスイッチ106をエンドポイントデバイスとしてみなすことが可能とする、統合エンドポイントコントローラ120をさらに含む。ネットワークスイッチ106は、特定の実装において、1または複数のPCIeエンドポイントデバイスに接続される。ネットワークスイッチ106に統合されたコンポーネントとして、エンドポイントコントローラ120は、デバイスドライバ114に、DMAコントローラ124、126、MACレシーバ128、MACトランスミッタ130、およびイーサネットスイッチ132を含む、ネットワークスイッチ106の要素に対する構成、および完全なアクセスを可能とする。デバイスドライバ114は、DMAコントローラ124、126の特定のトラフィックを、ホストコントローラ108の1つに結合するように、ホストシステム104およびネットワークスイッチ106を構成可能である。これにより、送受信負荷が複数のホストコントローラに分散可能となる。実施形態において、ネットワークスイッチ106は、ネットワークデバイス間で送信制御プロトコル 通信をサポートするように構成される。
【0042】
図2は、リンク107を通じてデータおよび制御情報を転送する、ホストシステム104およびネットワークスイッチ106をより詳細に示す。ホストシステム104は、ホストコントローラ108と、ホストメモリ110と、ルートコンプレックスコントローラ112とを備える。一実施形態において、単一のデバイスドライバのみが含まれる。別の実施形態において、2つ以上のホストコントローラ108が、それぞれデバイスドライバを含む。それぞれのデバイスドライバ(114'で示す)は、同様に構成されおよび/または動作し得る。
【0043】
ホストメモリ110は、受信バッファ200と、送信バッファ202と、受信記述子204と、送信記述子206とを備える。受信バッファ200は、ネットワークスイッチ106からデータを受信する。送信バッファ202は、ネットワークスイッチからイーサネットスイッチを介して、
図1のアクチュエータ142および/またはネットワークデバイス144に送信されるデータを格納する。受信記述子204は、受信バッファ200に格納されるデータに関連する制御情報を格納する。送信記述子206は、送信バッファ202に格納されるデータに関連する制御情報を格納する。記述子204、206内の制御情報は、発信元および宛先アドレス、発信元および宛先ID、格納されるフレームのタイプ、格納されるフレームのサイズを含む。実施形態において、記述子204、206はそれぞれ、ホストコントローラ108の1つと、DMAコントローラの1つと、イーサネットスイッチ132のレジスタ133の1つと、イーサネットスイッチ132のポートと、センサ140、アクチュエータ142、およびネットワークデバイス144の1つのIDとを特定する。
【0044】
ネットワークスイッチ106は、エンドポイントコントローラ120と、制御バス121と、データバス122と、RX DMAコントローラ124と、TX DMAコントローラ126と、MACレシーバ128と、MACトランスミッタ130と、イーサネットスイッチ132とを備える。制御バス121は、レジスタ133に接続される。制御情報は、レジスタ133に格納され、データ転送前に適用される。受信データは、ホストメモリ110、またはセンサ140、アクチュエータ142、およびネットワークデバイス144などのイーサネットスイッチ132に外部接続されたデバイスに送信される前に、TCAM230内など、イーサネットスイッチ132のメモリ内に格納され得る。記述子204、206は、レジスタ133、および/またはネットワークスイッチ106内の別のバッファ/メモリに関連付けられ得る。レジスタアクセスは、デバイスドライバ114により開始され、より狭い帯域を要する。受信DMAコントローラ124は、受信バッファ200から受信データを取得するのと同様にして、受信記述子を取得する。送信DMAコントローラ126は、送信バッファ202から送信データを取得するのと同様にして、送信記述子を取得する。ネットワークスイッチ106が開始するこれらタスクには、大量の帯域が関連付けられる。
【0045】
ルートコンプレックスコントローラ112は、ホストメモリ110のアドレス空間に、レジスタ133をマッピングする機能を提供する。これによりデバイスドライバ114'は、メモリにマッピングされたレジスタアクセスを介して、MACレシーバ128、MACトランスミッタ、およびDMAコントローラ124、126を初期化および維持可能となる。DMAコントローラ124、126は、記述子204、206を使用して、デバイスドライバ114'と相互運用する。これは、記述子204、206の一部として格納された情報を共有することを含む。
【0046】
ルートコンプレックスコントローラ112およびエンドポイントコントローラ120は、ランタイム時にネットワークスイッチ106の要素に対するアクセスを動的に提供する管理インタフェースを提供する。ルートコンプレックスコントローラ112およびエンドポイントコントローラ120がPCIeデバイスとして実装されると、ネットワークスイッチ106は、ホストシステムによりPCIeイーサネットデバイスとみなされる。デバイスドライバ114'は、DMAコントローラ124、126、MACレシーバ128、MACトランスミッタ130、レジスタ133、およびTCAM230のTCAMコントローラ232に対して完全なアクセスを有する。
【0047】
イーサネットスイッチ132は、実施形態において、レジスタ133と、TCAM230と、TCAMコントローラ232とを備える。TCAMコントローラ232は、レジスタ133内の制御情報と、TCAMルール(例えば、
図6のTCAMルール604)に基づいて、(i)イーサネットスイッチ132に外部接続されたデバイスと、および(ii)MACレシーバ128と、MACトランスミッタ130との間のフレーム転送を制御する。
実施形態において、イーサネットスイッチ132は、実施形態において最大5から10Gbpsのデータを送信および/または受信する。
【0048】
図3は、エンドポイントコントローラ120と、制御バス121と、データバス122と、RX DMAコントローラ124と、TX DMAコントローラ126と、MACレシーバ128と、MACトランスミッタ130と、イーサネットスイッチ132と、レジスタ133とを備えるネットワークスイッチ106を示す。イーサネットスイッチ132は、レジスタ133と、TCAM230と、TCAMコントローラ232と、イングレスポート300と、エグレスポート302と、インタフェースポート304と、イングレスファーストインファーストアウト(FIFO)バッファ310とを備える。
【0049】
TCAMコントローラ232は、レジスタ133内の制御情報に基づいて、(i)ポート300および302と、(ii)インタフェースポート304と間のフレーム転送を制御する。実施形態において、TCAMコントローラ232は、レジスタ133に直接接続される、または制御バス121を介してレジスタにアクセスする。TCAMコントローラ232は、レジスタ133に格納された制御情報にアクセスする。ポート304は、イーサネットスイッチ132に外部接続されたデバイスに接続される。実施形態において、ポート300、302は一方向ポートであり、一部のポート304は一方向で、ポート304のその他のものは双方向である。一方向ポートは、センサからホストシステム104にセンサデータを転送するのに使用される。双方向ポートは、例えば、ホストコントローラ108およびホストメモリ110を含むホストシステム104と、イーサネットスイッチ132の下流のネットワークデバイスとの間の、データおよび制御情報の双方向転送に使用される。バッファ310は、受信したデータが、TCAMルール(例えば、
図6のTCAMルール604)を満たすかを確認するために比較するバイトを保持するようなサイズとなる。フレームは、ネットワークスイッチ外部のデバイスから受信される際に、スキャニングおよびフィルタリングされる。バッファ310は、TCAMルールがイーサネットスイッチ132の対応するポートに割り当てられると、イネーブルされる。フレームは、受信後に確認されるのではなく、受信時に確認される。フレームを受信時に確認することで、フレーム確認に関連付けられた処理時間が最短に抑えられる。実施形態において、インタフェースポート304は、物理層(PHY)回路として実装される。別の実施形態において、インタフェースポート304は、イーサネットスイッチ132の外部のPHY回路に接続される。PHY回路は、デバイス140、142、144に接続される。別の実施形態において、インタフェースポート304の一部は、シリアルインタフェースとして実装され、それぞれのセンサに接続される。
図5に、例示的PHY回路を示す。例示的実施形態において、インタフェースポート304の一部は、シリアライザ/デシリアライザ(SERDES)インタフェースおよび縮小ギガビット媒体独立インタフェース(RGMII)である。
【0050】
図4は、データ転送方法を示す。以下の動作は、主に
図1から
図3の実装に対して説明されるが、動作は、本開示の別の実装に適用するように、容易に変更され得る。動作は繰り返し実行され得る。以下の動作は、主に単一のデバイスドライバの使用に関連して説明されるが、動作は、複数のデバイスドライバに関連して変更され、実装され得る。
【0051】
400において、ホストコントローラ108の1つが、例えばホストメモリ110からデバイスドライバ114をロードし、デバイスドライバ114を実行する。一実施形態において、デバイスドライバ114はイーサネットデバイスドライバである。
【0052】
402において、デバイスドライバ114は、DMAコントローラ124、126にバッファ200、202を割り当て、送信記述子206を空にしたまま、受信記述子204を構成する。受信記述子は、各受信バッファに対して事前に分類および構成され、ホストコントローラ108の1つに割り当てられる。ホストコントローラ108の1つは、実施形態において、デバイスドライバ114により生成された割り込みを使用して変更される。DMAコントローラ124、126はそれぞれ、バッファ200、202のうちの1または複数に割り当てられる。受信バッファ200は、受信DMAコントローラ124に割り当てられ、送信バッファ202は、送信DMAコントローラ126に割り当てられる。実施形態において、バッファ200、202は、DMAコントローラ124、126により共有される。受信バッファ200のうちの2つ以上は、受信DMAコントローラ124のうちの2つ以上により共有される。同様に、送信バッファ202のうちの2つ以上は、送信DMAコントローラ126のうちの2つ以上により共有される。受信記述子204は、発信元および宛先アドレス、発信元および宛先ID、および/または構成されると利用可能になるその他制御情報を含むように、上述のように生成および構成される。発信元および宛先アドレスは、受信バッファ200、受信DMAコントローラ124、レジスタ133、イーサネットスイッチ132のポート、および/またはスイッチ106外部の最終宛先デバイスのアドレスを含む。発信元および宛先IDは、受信バッファ200、受信DMAコントローラ124、レジスタ133、スイッチ106外部の最終宛先デバイス、イーサネットスイッチ132のポート、および/またはルートコンプレックスコントローラ112およびエンドポイントコントローラ120などの中間デバイスの識別子を含む。
【0053】
実施形態において、データが送信されると判定された後にセットアップされると以下に記載されるが、送信記述子206少なくとも部分的に事前にセットアップされる。デバイスドライバ114は、送信記述子206のうちの1または複数を、送信DMAコントローラ126のうちの1または複数に割り当てる。デバイスドライバ114は、送信バッファ202および/または送信DMAコントローラ126のアドレスとIDを含むように、送信記述子206を生成する。この時点で、送信記述子206は、最終宛先デバイスのアドレスおよび/またはIDを含まない。利用できる制御情報がなければ、送信記述子は空のままとなる。
【0054】
以下の動作406、408、410、412は、フレーム送信時に実行される。動作420、422、424は、フレーム受信時に実行される。ホストシステム104およびネットワークスイッチ106は、動作406、408、410、412を実行中に、動作420、422、424を実行する。
【0055】
404において、デバイスドライバ114はフレームが送信されるか判定する。例として、ホストコントローラ108のうちの1つが割り込みを生成する、メモリ内にフラグを設定する、またはフレームが送信されることをデバイスドライバ114にシグナリングする。実施形態において、フレームが転送されることをデバイスドライバ114にシグナリングするネットワークスイッチ106により割り込みが生成される。これは、フレームの受信または送信転送が完了した際にも同様に生じ得る。別の例としてこれは、記述子204、206がリフィルされた(即ち、新たな、および/または更新された制御情報が、記述子として格納された)際に生じ得る。デバイスドライバ114は、ホストコントローラ108のうちの1または複数の動作を制御していれば、デバイスドライバ114はいつフレームが送信されるか把握している。406において、デバイスドライバ114は送信記述子206を構成する。これは、送信記述子206の生成および送信記述子206の格納が既になされていなければ、それを生成して、ホストメモリ110内に格納することを含む。送信記述子206は、ホストコントローラ108の対応するものに割り当てられる。実施形態において対応するものは、デバイスドライバ114により生成された割り込みにより変更される。送信記述子206は、対応するフレームが送信される、宛先デバイスのアドレスおよび/またはIDを含むように構成される。
【0056】
408において、デバイスドライバ114は、送信バッファ202および送信記述子206の制御を送信DMAコントローラ126に移行する。これは、デバイスドライバ114が、制御が移行されることを示すように送信DMAコントローラ126にシグナリングすること、送信DMAコントローラ126によりアクセス可能で監視されるホストメモリ110および/またはレジスタ133内に制御フラグを設定すること、または送信DMAコントローラ126に検出される割り込みを生成することのうち少なくとも1つを含む。以下の動作410、412は、ホストコントローラ108および/またはホストコントローラ108によりホストシステム104内で実装されるソフトウェア相互作用から独立して実行される。この結果、ホストコントローラ108の中央処理サイクルは、これら動作の実行に使用されない。410において、送信DMAコントローラ126はフレーム送信を制御する。これは、送信記述子206の対応するものの内の制御情報に応じて、送信バッファ202に格納されたデータにアクセスするように、ルートコンプレックスコントローラ112に指示するように、エンドポイントコントローラ120にシグナリングすることを含む。送信DMAコントローラ126は、送信バッファ202に格納されたデータにアクセスして、イーサネットスイッチ132を介して、ネットワークスイッチ106の外部のデバイスにデータを送信する。
【0057】
制御情報およびステータス情報の一部は、レジスタ133内に格納される。ステータス情報は、データが受信されているか送信されているか、および転送が実行されるか、現在実行されるか、または完了したかを含む。制御およびステータス情報は、制御バス121を通じてDMAコントローラ124、126によりアクセスされる。エンドポイントコントローラ133は、DMAコントローラ124、126への、およびDMAコントローラ124、126からのデータ転送に対する、デバイスを通じたパスとして動作する。受信データは、ホストシステム104に送られる前に、受信DMAコントローラ124内に格納され、送信データは、イーサネットスイッチ132の外部ポートを介して送出される前に、送信DMAコントローラ126内に格納される。DMAコントローラ124、126は、一時的にデータを格納するためのバッファおよび/またはメモリを含む。DMAコントローラ124、126のバッファおよび/またはメモリは、レジスタ133よりもかなり大量のデータを格納可能である。これにより、DMAコントローラ124、126は転送中のデータと対応する記述子を格納可能となる。データと記述子の転送は、データバス122を介して実現される。
【0058】
412において、送信DMAコントローラ126は、デバイスドライバ114に制御が移行されることを示す1または複数の割り込みを生成する。その結果、送信バッファ202および送信記述子206の制御は、デバイスドライバ114に戻される。
【0059】
420において、デバイスドライバ114は、受信バッファ200および受信記述子204の制御を受信DMAコントローラ124に移行する。これは、制御が移行されることを示すように受信DMAコントローラ124にシグナリングすること、受信DMAコントローラ124によりアクセス可能で監視されるホストメモリ110および/またはレジスタ133内に制御フラグを設定すること、または受信DMAコントローラ124により検出される割り込みを生成することのうち少なくとも1つを含む。
【0060】
以下の動作422、424は、ホストコントローラ108および/またはホストコントローラ108によりホストシステム104内で実装されるソフトウェア相互作用から独立して実行される。この結果、ホストコントローラ108の中央処理サイクルは、これら動作の実行に使用されない。422において、受信DMAコントローラ124は、フレームの送信を制御する。これは、イーサネットスイッチ132からデータを受信するおよび/またはアクセスすることと、データを受信バッファ200に格納することを含む。受信DMAコントローラ124は、受信バッファ200にデータを転送することを指示するようにエンドポイントコントローラ120にシグナリングし、それに応じて受信バッファ200はルートコンプレックスコントローラ112に、受信バッファ200にデータを格納するように指示する。これら動作は、受信記述子204の対応するものの内の制御情報に応じて実行される。
【0061】
424において、受信DMAコントローラ124は、デバイスドライバ114に制御が移行されることを示す1または複数の割り込みを生成する。その結果、受信バッファ200および受信記述子204の制御は、デバイスドライバ114に戻される。
【0062】
図5は、ネットワークスイッチ502およびホストシステム504の、例示的な半または完全自律走行車両500における実装を示す。ネットワークスイッチ502およびホストシステム504は、
図1から
図3に示す例を含む、上述のネットワークスイッチおよびホストシステムと同様に実装される。ネットワークスイッチ502は、PCIeエンドポイントコントローラ506と、イーサネットスイッチ508とを備える。ホストシステム504は、例として提供される、PCIeルートコンプレックスコントローラ510と、ホストコントローラ512と、カメラシリアルインタフェース(CSI)514、516などの媒体インタフェースとを備える。イーサネットスイッチ508は、PHY回路520、522、524に接続されるものとして示されている。PHY回路520、522、524は、1または複数のカメラ526と、1または複数のRADARセンサ528と、1または複数のLIDARセンサ530とに接続される。実施形態において、PHY回路520、522、524は、ネットワークスイッチ502内および/またはイーサネットスイッチ508内に実装される。図示の例において、ホストコントローラ512は、それぞれのCSI514、516を介して、1または複数のカメラ532および1または複数のカメラ534に接続される。イーサネットスイッチ508と、カメラ526およびセンサ528、530との間の接続は、イーサネット接続である。同様に、ホストコントローラ512と、カメラ532、534との間の接続はイーサネット接続である。
【0063】
図6は、
図2のホストシステム104およびネットワークスイッチ106のPCIe実装を示し、これは、ホストシステム104が、ホストコントローラ108と、ホストメモリ110と、PCIeルートコンプレックスコントローラ112と、アプリケーションコントローラ601と、DoS検出コントローラ602とを備える、車両600において実装される。ホストコントローラ108は、デバイスドライバ114を備える。アプリケーションコントローラ601は、1または複数のソフトウェアアプリケーションを実行し、第1チャネルを介して、PCIeルートコンプレックスコントローラ112に接続される、および/またはそれと通信する。アプリケーションコントローラ601およびPCIeルートコンプレックスコントローラ112は、ホストメモリ110に格納された第1組の受信および送信記述子へのアクセスを有する。DoS検出コントローラ602は、第2チャネルを介して、PCIeルートコンプレックスコントローラ112に接続される、および/またはそれと通信する。実施形態において、第1組の受信および送信記述子は、アプリケーションコントローラ601により構成され、例えばネットワークスイッチのDMAコントローラにより、上述のようにデータ(例えば、アプリケーションデータ)を転送するのに使用される。DoS検出コントローラ602およびPCIeルートコンプレックスコントローラ112は、ホストメモリ110に格納された第2組の受信および送信記述子へのアクセスを有する。第2組の受信および送信記述子は、第1組の受信および送信記述子を除いたものである。実施形態において、第2組の受信および送信記述子は、DoS検出コントローラ602により構成され、例えばネットワークスイッチのDMAコントローラにより、上述のようにデータ(例えば、制御情報)を転送するのに使用される。一実施形態において、第1および第2チャネルは、第1および第2組の受信および送信記述子に含まれた受信および送信記述子を指す。
【0064】
DoS検出コントローラ602は、ルール604を設定および調整し、構成をレジスタ133に適用して、フレームおよび/または接続がドロップされる条件が調整される。構成への変更は、レジスタアクセスを介して実行される。コントローラ601、602は、デバイスドライバ114と同じホストコントローラ内で実装され得、または別のホストコントローラおよび/またはホストシステム104内のどこか別の箇所において実装され得る。一実施形態において、デバイスドライバ114は、DoS検出コントローラ602に対して、本明細書に記載の動作を代替的に実行する。別の実施形態において、デバイスドライバ114は、DoS検出コントローラ602に対するインタフェースを提供する。これにより、IPルーティングおよびDoS攻撃対策機能を動的に構成するように、フレームと、TCAM230に格納された静的インターネットプロトコル(IP)ルーティングテーブルが評価される。上述のように、DoS検出コントローラ602および/またはデバイスドライバ114が、フレームと、TCAMに格納された静的IPルーティングテーブルを評価することで、この評価が専用の制御バス(例えば、
図2の制御バス121)により実現されることから、記載のデータ転送システムは向上したロバスト性を有する。制御バス121は、ネットワークスイッチ106の外部のネットワークデバイスから受信され、ネットワークスイッチ106のポートで受信されたデータトラフィックにより受ける影響が極めて少ない、または影響されない。制御バス121は、主にエンドポイントコントローラ120と、DMAコントローラ124、126との間の制御情報の転送に使用され、制御バス121はイーサネットスイッチ132の外部ポートから隔離されているため、イーサネットスイッチ132と、外部ネットワークデバイスとの間のデータトラフィックは、制御バス121上の制御情報の転送に影響しない。
【0065】
ホストメモリ110は、バッファ200、202 と、記述子204、206とを含む。ネットワークスイッチ106は、リンク107を介してホストシステム104と通信し、エンドポイントコントローラ120と、レジスタ133と、TCAM230とを含む。ネットワークスイッチ106の一部のポート(例えば、ネットワークスイッチ106内のイーサネットスイッチの一部のポート)は、車両の外部のネットワークデバイスに接続され、攻撃から保護されている。
【0066】
TCAM230は、ルール604とそのバージョンを格納する。ルール604に基づいて、TCAM230は、(i)ネットワークスイッチ106および/または車両600の外部のデバイスとの接続を維持またはドロップし、(ii)フレームの通過およびドロップを制御する。ルール604は、フレームおよび/または接続がドロップされる条件を提供する。ホストメモリ110は、DoS検出コントローラ602によりアクセスおよび変更されるルール604のバージョンを格納する。
【0067】
図7は、主にTCAM230により実装される、攻撃対策方法を示す。700において、DoS検出コントローラ602は、アプリケーションコントローラ601により実装されたアプリケーション(例えば、顧客アプリケーション)に応じてレジスタ133にアクセスする。
【0068】
702において、TCAMコントローラ232は、ネットワークスイッチの外部の発信元デバイスからフレームを受信する。フレームは、車両の外部のネットワークにおける1または複数の発信元デバイスから受信され、および/または1または複数のフレームは、車両内のネットワーク内の発信元デバイスから受信される。
【0069】
704において、TCAMコントローラ232は、フレームの受信時に、受信フレームのうちの1または複数を検査する。TCAMコントローラ232は、検査用に、受信フレームの少なくとも一部を選択する。検査はルール604に基づいて実行される。705において、TCAMコントローラ232は、検査の結果に基づいて、攻撃の確率を判定する。確率が所定のレベルより高ければ、動作706が実行され、そうでなければ動作702が実行される。一実施形態において、TCAMコントローラ232は、IPチェックサムオフロード値を計算する。これはフレームの完全性を確認し、フレームがエラーを有するか否か判定するために実行される。IPチェックサムオフロード値は、フレームが汚染されているかを判定するのに使用される。例として、IPチェックサムオフロード値を含むように、フレームのヘッダが変更される。
【0070】
706において、TCAMコントローラ232は、検査結果に基づいて、受信フレームのうちの1または複数をアプリケーションコントローラ601に送り、受信フレームのうちの1または複数を破棄し、および/または受信フレームのうちの1または複数をDoS検出コントローラ602に送る。一実施形態において、動作706に続いて動作708が実行される。
【0071】
708において、TCAMコントローラ232は、レジスタ133内に格納されたDoS検出コントローラ602からの更新されたルールにアクセスする。DoS検出コントローラ602は、ルールをレジスタ133内に格納する。710において、TCAMコントローラ232は、接続が維持されていると、動作712に進み、接続がドロップされていると、動作714に進む。実施形態において、動作700、702、704、706、708、710、712、714、716、718、720は、ネットワークスイッチ106の外部の発信元デバイスそれぞれに対して、車両内のネットワークまたは車両の外部のネットワーク内で実行される。TCAMコントローラは、これら動作のイテレーションを並行に複数実行し得る。この結果、例として、動作712が第1デバイスに対して実行され、動作714が第2デバイスに対して実行されることが可能である。TCAMコントローラ232は、接続がドロップされてからの経過時間を測定し、第2デバイスとの接続を再確立すべきか判定しながら、第1デバイスに対して、後述のようにログを生成する、および/またはアラームをセットする。
【0072】
712において、TCAMコントローラ232はログエントリを生成する、および/またはアラームをセットする。ログはTCAM230に格納され、受信されたフレーム、フレームの発信元、発信元のアドレス、フレームの受信日時の記録を保持する。ログは、あり得る攻撃に関連付けられた、および/または攻撃の確率が所定のレベルを超えるフレームに対するものである。実施形態において、フレームが受信され、フレームが攻撃に関連付けられているかについての確率レベルを示すため、アラームが生成される。例として、アラームは、車両のディスプレイに示されたビデオ信号、音声警告、車両内のモバイルデバイスに送信される警告信号、車両の外部のネットワークデバイス(例えば、中央監視局)に送信される警告信号、および/または車両外部の診断コントローラに送信される警告信号を含む。
【0073】
714において、TCAMコントローラ232はタイマを開始する。一実施形態において、タイマは、攻撃に関連付けられた、および/または関連付けられている可能性が高いフレームが受信または検査された場合に開始される。図示の実施形態において、タイマは、フレームに関連する接続がドロップされた場合に開始される。716において、TCAMコントローラ232は、タイマが開始してから所定の期間が経過したか判定する。所定の期間が経過した場合、動作718が実行される。
【0074】
718において、TCAMコントローラ232はドロップした接続を再確立するか判定する。これは、ルール、攻撃が発生した確率、フレームを送信した発信元デバイスの識別および/または位置、および/または発信元デバイスが攻撃者ではないことを示す受信情報など、フレームが攻撃に関連付けられているかを示すその他情報に基づいて判定される。720において、TCAMコントローラ232は、攻撃に関連付けられている可能性があると以前に判定されていたフレームを送信した発信元デバイスに再接続する。
【0075】
図8は、DoS検出コントローラ602により実装されるサービス拒否方法を示す。800において、起動時のDoS検出コントローラ602は、アプリケーションコントローラ601により実装されたアプリケーション(例えば、顧客アプリケーション)に応じてTCAMコントローラ232をプログラミングする。
【0076】
801において、DoS検出コントローラ602は、PCIeルートコンプレックスコントローラ112を介してTCAMコントローラ232からフレームを受信する。802において、DoS検出コントローラ602は、受信されたフレームを分析して、受信されたフレームが実際の攻撃に関連付けているか、または攻撃と関連付けられた確率が高いかを判定する。
【0077】
804において、DoS検出コントローラ602は、さらにフレームおよび/または接続をドロップするため、受信されたフレームに基づいて、ルール604を変更する。一実施形態において、これは、フレームが攻撃に関連付けられている確率が所定の閾値よりも高い場合に生じる。フレームをドロップするか否かの判定は、さらにまたはあるいは、受信フレームのタイプ、フレームのヘッダ内の情報(例えば、IPチェックサムオフロード値)、および/またはルール604にも応じる。806において、DoS検出コントローラ602は、更新されたルール604を、TCAM230内の格納、およびTCAMコントローラ232による使用のために、ネットワークスイッチ106に送信する。
【0078】
図5と
図7および
図8の上述の動作は、例示的であることを意図する。動作は、アプリケーションに応じて、順次、同期的に、同時に、連続的に、重複期間中、または異なる順序で実行され得る。また、実装、および/またはイベントのシーケンスに応じて、動作のうちの任意のものが実行されない、またはスキップされ得る。
【0079】
上述の例は、ルートコンプレックスコントローラと、スイッチとの間のネットワークインタフェースカードを不要とする、エンドポイントコントローラ付きネットワークスイッチを含む。提供されるネットワークスイッチは、最小限の電力を消費し、ネットワークスイッチのエンドポイントコントローラ、DMAコントローラ、MACレシーバおよびトランスミッタ、TCAMおよび対応するレジスタに対する制御を含む、ネットワークスイッチのコア全体の制御を有するホストシステムのデバイスドライバを提供する。例としては、攻撃を検出し、攻撃を止めるために、ネットワークスイッチ内に配置されたTCAMの動作を間接的に制御するDoSコントローラを有するホストシステムを含む。TCAMは、攻撃に関連付けられたフレーム、および/またはエラーを含むフレームをフィルタリングして除去可能である。フィルタリングは、フレームの受信および検査時に、「オンザフライ」で生じることができる。これは、車両の外部のネットワークデバイスが、車両のホストシステムを攻撃し、車両の動作を制御することを防止する。
【0080】
要素間(例えば、回路要素間)における空間的および機能的関係が、「接続された(connected)」、「係合された(engaged)」、「結合された(coupled)」、および「隣接した(adjacent)」等の様々な用語を用いて説明されている。上述の開示において第1要素および第2要素間の関係が説明される場合、その関係は、第1要素および第2要素の間に他の要素が介在しない直接的関係であり得るが、「直接的」であると明示的に説明されない限り、第1要素および第2要素の間に1または複数の要素が(空間的、または機能的に)介在する間接的関係でもあり得る。本明細書で使用しているように、A、B、およびCのうち少なくとも1つという言い回しは、非排他的論理ORを使用する論理(AまたはBまたはC)を意味するものと解釈されるべきであり、「Aの少なくとも1つ、Bの少なくとも1つ、Cの少なくとも1つ」を意味するものと解釈されるべきではない。
【0081】
本出願と、下記の定義を含むいくつかの例において、「コントローラ」という用語は「回路」という用語と置き換え可能である。いくつかの例において、「コントローラ」という用語は次のものを指してよく、または次のものの一部であってよく、または次のものを含んでよい。すなわち、特定用途向け集積回路(ASIC)、上記の機能を提供する他の好適なハードウェアコンポーネント、またはシステムオンチップなどにおけるような上記のうちのいくつかまたは全ての組み合わせである。
[他の考え得る項目]
(項目1)
ネットワークスイッチであって、
データバスと、
レジスタと、
ホストシステムのデバイスドライバにより生成された記述子を受信し、上記レジスタ内に、上記記述子を格納し、上記ホストシステムのルートコンプレックスコントローラと、上記データバスとの間でデータを転送するように構成されたエンドポイントコントローラであって、上記記述子は、上記ホストシステムのメモリ内のバッファのアドレスを特定する、エンドポイントコントローラと、
上記エンドポイントコントローラまたは上記レジスタから上記バッファの上記アドレスを受信し、上記アドレスと上記デバイスドライバにより生成されたインジケーションとに基づいて、上記ホストシステムの上記メモリと、上記ネットワークスイッチに接続されたネットワークデバイスとの間での上記データの転送を独立制御するように構成され、受信ダイレクトメモリアクセスコントローラまたは送信ダイレクトメモリアクセスコントローラである、ダイレクトメモリアクセスコントローラと
を備えるネットワークスイッチ。
(項目2)
上記エンドポイントコントローラは、ペリフェラルコンポーネントインターコネクトエクスプレスプロトコルに応じて上記データを転送する、ペリフェラルコンポーネントインターコネクトエクスプレスデバイスである、項目1に記載のネットワークスイッチ。
(項目3)
上記インジケーションは、上記メモリに格納されたフラグ、割り込み、または信号である、項目1に記載のネットワークスイッチ。
(項目4)
上記ダイレクトメモリアクセスコントローラへ、または上記ダイレクトメモリアクセスコントローラから上記データを転送するように構成された媒体アクセス制御デバイスと、
上記媒体アクセス制御デバイスと、上記ネットワークスイッチに接続された上記ネットワークデバイスとの間で上記データを転送するように構成されたイーサネットスイッチと
をさらに備える、項目1に記載のネットワークスイッチ。
(項目5)
上記ネットワークデバイスは、センサ、アクチュエータ、ペリフェラルコンポーネントインターコネクトエクスプレスデバイス、またはエンドポイントデバイスである、項目1に記載のネットワークスイッチ。
(項目6)
媒体アクセス制御デバイスをさらに備え、上記データの転送を独立制御しながら、上記ダイレクトメモリアクセスコントローラは、上記データバスと、上記媒体アクセス制御デバイスとの間で、上記ホストシステムのホストコントローラとの相互作用なしに、上記データを転送するように構成された、項目1に記載のネットワークスイッチ。
(項目7)
上記ダイレクトメモリアクセスコントローラは、上記データの転送前に、上記デバイスドライバから上記メモリの上記バッファの制御を得て、上記データの転送後に、上記デバイスドライバに上記バッファの制御を返すために割り込みを生成するように構成された、項目1に記載のネットワークスイッチ。
(項目8)
上記メモリに格納されたルールを受信し、上記ルールに基づいて、上記ネットワークスイッチで上記ネットワークデバイスから受信されたフレームを検査し、上記フレームをドロップするか、上記フレームを上記デバイスドライバ、上記ホストシステムのアプリケーションコントローラ、または上記ホストシステムのサービス拒否コントローラに送るように構成された別のコントローラをさらに備える、項目1に記載のネットワークスイッチ。
(項目9)
項目1に記載の上記ネットワークスイッチと、
上記メモリと、
上記デバイスドライバを実装するホストコントローラと、
上記ホストコントローラおよび上記ダイレクトメモリアクセスコントローラに、上記メモリへのアクセスを提供するように構成された上記ルートコンプレックスコントローラと
を備えるデータ転送システム。
(項目10)
上記デバイスドライバは、上記ダイレクトメモリアクセスコントローラに、上記バッファの制御を移行するように構成され、上記ダイレクトメモリアクセスコントローラは、上記バッファの制御を上記デバイスドライバに戻すように構成された、項目9に記載のデータ転送システム。
(項目11)
上記ルートコンプレックスコントローラは、上記デバイスドライバと、上記メモリとの間の、制御情報の転送を制御するように構成された、項目9に記載のデータ転送システム。
(項目12)
上記ルートコンプレックスコントローラと、上記エンドポイントコントローラとは、ペリフェラルコンポーネントインターコネクトエクスプレスプロトコルに応じて動作する、ペリフェラルコンポーネントインターコネクトエクスプレスデバイスである、項目9に記載のデータ転送システム。
(項目13)
上記ネットワークスイッチからフレームを受信し、上記フレームが攻撃に関連付けられている可能性が高いか判定し、上記メモリ内に格納されたルールを変更し、別のフレームまたは上記ネットワークデバイスとの接続をドロップするために、上記変更されたルールを上記ネットワークスイッチに送るように構成されたサービス拒否コントローラをさらに備える、項目9に記載のデータ転送システム。
(項目14)
ネットワークスイッチを動作させる方法であって、
上記ネットワークスイッチのエンドポイントコントローラにおいて、ホストシステムのデバイスドライバにより生成された記述子を受信する段階であって、上記記述子は、上記ホストシステムのメモリ内のバッファのアドレスを特定する、受信する段階と、
レジスタ内に、上記記述子を格納する段階と、
上記ホストシステムのルートコンプレックスコントローラと、上記ネットワークスイッチのデータバスとの間でデータを転送する段階と、
ダイレクトメモリアクセスコントローラにおいて、上記エンドポイントコントローラまたは上記レジスタから上記バッファの上記アドレスを受信する段階であって、上記ダイレクトメモリアクセスコントローラは、受信ダイレクトメモリアクセスコントローラまたは送信ダイレクトメモリアクセスコントローラである、受信する段階と、
上記アドレスと上記デバイスドライバにより生成されたインジケーションとに基づいて、上記ホストシステムの上記メモリと、上記ネットワークスイッチに接続されたネットワークデバイスとの間での上記データの転送を独立制御する段階と
を備えるネットワークスイッチを動作させる方法。
(項目15)
上記エンドポイントコントローラを介して、ペリフェラルコンポーネントインターコネクトエクスプレスプロトコルに応じて上記データを転送する段階をさらに備える、項目14に記載の方法。
(項目16)
媒体アクセス制御デバイスを介して、上記ダイレクトメモリアクセスコントローラへ、または上記ダイレクトメモリアクセスコントローラから上記データを転送する段階と、
イーサネットスイッチを介して、上記媒体アクセス制御デバイスと、上記ネットワークスイッチに接続された上記ネットワークデバイスとの間で上記データを転送する段階と
をさらに備える、項目14に記載の方法。
(項目17)
上記データの転送を独立制御しながら、上記ダイレクトメモリアクセスコントローラを介して、上記データバスと、媒体アクセス制御デバイスとの間で、上記ホストシステムのホストコントローラとの相互作用なしに、上記データを転送する段階をさらに備える、項目14に記載の方法。
(項目18)
上記ダイレクトメモリアクセスコントローラにおいて、上記データの転送前に、上記デバイスドライバから上記メモリの上記バッファの制御を得る段階と、
上記データの転送後に、上記デバイスドライバに上記バッファの制御を返すために割り込みを生成する段階と
をさらに備える、項目14に記載の方法。
(項目19)
上記メモリに格納されたルールを受信する段階と、
上記ルールに基づいて、上記ネットワークスイッチで上記ネットワークデバイスから受信されたフレームを検査し、上記フレームをドロップするか、上記フレームを上記デバイスドライバ、上記ホストシステムのアプリケーションコントローラ、または上記ホストシステムのサービス拒否コントローラに送る段階と
をさらに備える、項目14に記載の方法。
(項目20)
上記ネットワークスイッチからフレームを受信する段階と、
上記フレームが攻撃に関連付けられている可能性が高いか判定する段階と、
上記メモリ内に格納されたルールを変更する段階と、
別のフレームまたは上記ネットワークデバイスとの接続をドロップするために、上記変更されたルールを上記ネットワークスイッチに送る段階と
をさらに備える、項目14に記載の方法。