(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022032974
(43)【公開日】2022-02-25
(54)【発明の名称】ネットワークによる攻撃からの保護
(51)【国際特許分類】
H04L 47/38 20220101AFI20220217BHJP
G06F 1/04 20060101ALI20220217BHJP
G06F 21/55 20130101ALI20220217BHJP
【FI】
H04L12/811
G06F1/04 571
G06F21/55
【審査請求】未請求
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2021114042
(22)【出願日】2021-07-09
(31)【優先権主張番号】16/990,684
(32)【優先日】2020-08-11
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.FIREWIRE
2.3GPP
(71)【出願人】
【識別番号】593096712
【氏名又は名称】インテル コーポレイション
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(74)【代理人】
【識別番号】100112759
【弁理士】
【氏名又は名称】藤村 直樹
(72)【発明者】
【氏名】アムルータ ミスラ
(72)【発明者】
【氏名】ジョン ジェイ.ブラウン
(72)【発明者】
【氏名】クリス マクナマラ
【テーマコード(参考)】
5K030
【Fターム(参考)】
5K030GA13
5K030HB28
5K030JT06
5K030KA01
5K030KA11
5K030KA13
5K030KA21
5K030LC01
5K030MA13
5K030MB11
(57)【要約】 (修正有)
【課題】ネットワーク氾濫(flooding)によるネットワーク機能(NF)や仮想ネットワーク機能(VNF)の過負荷、輻輳を防止する装置、方法及びプログラムを提供する。
【解決手段】ネットワーク・インターフェース・カードとプロセッサとの間の周辺デバイス・インターフェースの動作周波数を、トラフィック違反の検出に基づいて減らす方法であって、トラフィック違反を検出することは、ネットワーク・アプライアンス、ネットワーク・インターフェース・カード、非コア部分、システム・エージェント、オペレーティング・システム、アプリケーション又はコンピューティング・プラットフォームのうちの1つ以上における、IPパケット・フラグメントの検出に基づいている。周辺デバイス・インターフェースは、システム・エージェント、非コア部分、バス、デバイス・インターフェース、及びキャッシュのうちの1つ以上を含む。
【選択図】
図1
【特許請求の範囲】
【請求項1】
ネットワーク・インターフェース・カードとプロセッサとの間の周辺デバイス・インターフェースの動作周波数を、トラフィック違反の検出に基づいて変更すること
を含む方法。
【請求項2】
インターネット・プロトコル(IP)パケット・フラグメントの検出に基づいてトラフィック違反を検出することを更に含み、
ネットワーク・インターフェース・カードとプロセッサとの間の周辺デバイス・インターフェースの動作周波数を、トラフィック違反の検出に基づいて変更することは、
ネットワーク・インターフェース・カードとプロセッサとの間の周辺デバイス・インターフェースの動作周波数を、トラフィック違反の検出に基づいて減らすことを含む、
請求項1に記載の方法。
【請求項3】
IPパケット・フラグメントは、不完全なパケットであるIPパケット・フラグメント、小さすぎるIPパケット・フラグメント、過剰なパケットをもたらすIPパケット・フラグメント、又はIPパケット・フラグメント・バッファが一杯であること、のうちの1つ以上を含む、
請求項2に記載の方法。
【請求項4】
IPパケット・フラグメントの検出に基づいてトラフィック違反を検出することは、
ネットワーク・アプライアンス、前記ネットワーク・インターフェース・カード、非コア部分、システム・エージェント、オペレーティング・システム、アプリケーション、又はコンピューティング・プラットフォームのうちの1つ以上において、IPパケット・フラグメントの検出に基づいてトラフィック違反を検出することを含む、
請求項2に記載の方法。
【請求項5】
前記周辺デバイス・インターフェースは、システム・エージェント、非コア部分、バス、周辺コンポーネント相互接続エクスプレス(PCIe)インターフェース、及びキャッシュのうちの1つ以上を含む、
請求項1に記載の方法。
【請求項6】
前記周辺デバイス・インターフェースはシステム・オン・チップ(SoC)の一部であり、前記SoCは、コア、システム・エージェント、又は非コア部分のうちの1つ以上を含む、
請求項1に記載の方法。
【請求項7】
前記プロセッサは、中央処理ユニット(CPU)コア、アクセラレータ、又はグラフィックス処理ユニット(GPU)のうちの1つ以上を含む、
請求項1に記載の方法。
【請求項8】
ネットワーク・インターフェース・カードとプロセッサとの間の周辺デバイス・インターフェースの動作周波数を、トラフィック違反の検出に基づいて変更することは、
前記プロセッサにおける前記トラフィック違反を管理すること、又はトラフィック違反を検出していないことのうちの1つ以上に基づいて、前記周辺デバイス・インターフェースの動作周波数を増やすこと、及び
前記プロセッサ及び前記周辺デバイス・インターフェースに割り当てられる電力バジェットが、前記プロセッサの前記動作周波数を増やすことを許容する場合に、前記プロセッサの動作周波数を増やすことを含む、
請求項1に記載の方法。
【請求項9】
ネットワーク・インターフェース・カードとプロセッサとの間の周辺デバイス・インターフェースの動作周波数を、トラフィック違反の検出に基づいて変更することは、
コア以外の回路に提供されるクロックの周波数をネットワーク・トラフィックに基づいて変更することを含む、
請求項1-8のうちの何れか1項に記載の方法。
【請求項10】
1つ以上のプロセッサに、
インターネット・プロトコル(IP)パケット・フラグメントの検出に基づいてトラフィック違反を検出すること、及び
ネットワーク・インターフェース・カードとプロセッサとの間の周辺デバイス・インターフェースの動作周波数を、トラフィック違反の検出に基づいて減らすこと
を行わせるコンピュータ・プログラム。
【請求項11】
IPパケット・フラグメントは、不完全なパケットであるIPパケット・フラグメント、小さすぎるIPパケット・フラグメント、過剰なパケットをもたらすIPパケット・フラグメント、又はIPパケット・フラグメント・バッファが一杯であること、のうちの1つ以上を含む、
請求項10に記載のコンピュータ・プログラム。
【請求項12】
前記1つ以上のプロセッサに、
ネットワーク・アプライアンス、前記ネットワーク・インターフェース・カード、非コア部分、システム・エージェント、オペレーティング・システム、アプリケーション、又はコンピューティング・プラットフォームのうちの1つ以上において、IPパケット・フラグメントの検出に基づいてトラフィック違反を検出することを更に行わせる、
請求項11に記載のコンピュータ・プログラム。
【請求項13】
前記周辺デバイス・インターフェースは、システム・エージェント又は非コア部分を含む、
請求項10に記載のコンピュータ・プログラム。
【請求項14】
前記周辺デバイス・インターフェースは、バス、周辺コンポーネント相互接続エクスプレス(PCIe)インターフェース、及びキャッシュを含む、
請求項10に記載のコンピュータ・プログラム。
【請求項15】
前記プロセッサは、中央処理ユニット(CPU)コア、アクセラレータ、又はグラフィックス処理ユニット(GPU)を含む、
請求項10に記載のコンピュータ・プログラム。
【請求項16】
前記1つ以上のプロセッサに、
コアにおけるトラフィック違反を管理すること、又はトラフィック違反を検出していないことのうちの1つ以上に基づいて、前記周辺デバイス・インターフェースの動作周波数を増やすことを更に行わせる、
請求項10に記載のコンピュータ・プログラム。
【請求項17】
前記1つ以上のプロセッサに、
前記周辺デバイス・インターフェース及び前記プロセッサに対する電力バジェットが、前記プロセッサの前記動作周波数を増やすことを許容する場合に、前記プロセッサの動作周波数を増やすことを更に行わせる、
請求項10-16のうちの何れか1項に記載のコンピュータ・プログラム。
【請求項18】
少なくとも1つのコアと、
ネットワーク・インターフェースからパケットを受信し、受信した前記パケットをコアによる処理のために提供するように結合されたシステム・エージェントと、
前記システム・エージェントの動作周波数をリクエストに基づいて減らす電力マネジャであって、前記リクエストはトラフィック違反の検出に基づいている、電力マネジャと、
を含む装置。
【請求項19】
インターネット・プロトコル(IP)パケット・フラグメントの検出に基づいてトラフィック違反を検出するプロセッサであって、IPパケット・フラグメントは、不完全なパケットであるIPパケット・フラグメント、小さすぎるIPパケット・フラグメント、過剰なパケットをもたらすIPパケット・フラグメント、又はIPパケット・フラグメント・バッファが一杯であること、のうちの1つ以上を含む、プロセッサ
を含む請求項18に記載の装置。
【請求項20】
コアにおけるトラフィック違反を管理すること、又はトラフィック違反を検出していないことのうちの1つ以上に基づいて、前記システム・エージェントの動作周波数を増やし、及び
前記システム・エージェントの動作周波数を増やすことを前記電力マネジャに要求するプロセッサ
を含む請求項18又は19に記載の装置。
【発明の詳細な説明】
【背景技術】
【0001】
高速データ・プレーンやシグナリング処理を行うネットワーク機能(NF)や仮想ネットワーク機能(VNF)は、ネットワーク・トラフィックで氾濫する可能性があり、それはVNFが過負荷になることを引き起こし、仮想化されたアプリケーションが輻輳したり応答しなくなったりすることを引き起こす。ネットワーク氾濫(flooding)の原因は、ネットワークで生成されるシグナリング・ストーム(signaling storms)を含むかもしれない。シグナリング・ストームを処理するためには、高い計算リソースが必要とされ、これは、プロセッサが過負荷になったり、他の作業を実行することに利用できなくなったりすることを引き起こす可能性がある。ネットワーク・フラッディングの幾つかの原因は、悪意のあるネットワーク攻撃ベクトルを含む可能性があり、フラグメント攻撃とバッファ・ベース攻撃を使用するディナイアル・オブ・サービス(Denial of Service,DoS)攻撃と、これらのタイプの攻撃の分散バージョン(例えば、分散ディナイアル・オブ・サービス(DDoS))を含む。
【図面の簡単な説明】
【0002】
【0003】
【0004】
【0005】
【
図3B】パケット・フラグメントのパケット・フィルタリングのための例示的なパイプラインを示す。
【0006】
【0007】
【0008】
【
図5B】非コア部分又はシステム・エージェントの動作周波数を変更する方法例を示す。
【0009】
【0010】
【0011】
【
図8】例示的なネットワーク・インターフェースを示す。
【発明を実施するための形態】
【0012】
幾つかの解決策では、受信パケットのオーバーフローに関連して、中央処理ユニット(CPU)によって処理される受信キューは一杯になることが受け入れられ、CPUはパケットを処理することができる。パケットは、場合によっては、破棄され又はブロックされる可能性があり、入/出力(I/O)デバイスの入力ポートは、より多くのトラフィックの受信を防ぐために、ディセーブルにされる可能性がある。幾つかの解決策では、アクセス制御リスト(ACL)ポリシーが、ネットワーク・インターフェース・カード(NIC)又はホスト・ソフトウェアで適用されることが可能である。しかしながら、深刻な過負荷が発生した場合に、受信パケットを処理したり又はACLを適用したりするために、追加のプロセッサ・リソースは利用可能でない可能性がある。更に、過負荷が検出された時と廃棄ポリシーが適用される時との間のタイミング・ウィンドウに起因して、(例えば、フェイルオーバー・プロトコル・トラフィック、ルーティング・テーブル更新、ハートビートのような)高優先の又は重要なパケットの無差別的な廃棄が生じる可能性がある。
【0013】
ネットワーク・セキュリティ攻撃の場合、悪意の入力はアプリケーションやサービスをターゲットにする。攻撃者は、アプリケーションやマシンをインタラプトしたり、それらのコントロールを獲得したりする可能性がある。攻撃者は、首尾よく突破した後に、ターゲット・アプリケーションをディセーブルにし(結果としてディナイアル・オブ・サービス状態になる)、ルーターやスイッチの場合には物理ポートや仮想ポートをディセーブルにし、メモリ・バッファのようなリソースを使い果たしたり、キュー深度を超えたりする可能性があり、或いは不正アクセスを受けたアプリケーションに対して利用可能なすべての権利及び権限に潜在的にアクセスする可能性がある。
【0014】
侵入防止システム(Intrusion Prevention System,IPS)のようなネットワーク機器やソフトウェアは、ネットワーク・トラフィック・フローを調査し、脆弱性の悪用を検知して防止する。IPSは、送信元と宛先の間の通信経路で実行することが可能であり、IPSは受信したパケットを積極的に分析し、ネットワークに入るすべてのトラフィック・フローに対して、自動化されたアクションをとることが可能である。悪意の攻撃が検出された場合、アラームをデータ・センター管理者に送信するために、独立したメッセージングを使用することができる。CPUの過負荷に関連して、IPSは、悪意があると思われるパケットを破棄したり、送信元アドレスからトラフィックをブロックしたり、或いは送信元や送信者との接続をリセットしたりすることが可能である。緩和努力が不成功であったり、許容できない結果を招いたりした場合に、システム管理者は、システムをシャットダウンせざるを得ない可能性がある。しかしながら、緩和アクションは、ネットワーク・パフォーマンスを落とし、システムの停滞を招き、リアルタイムの活動に十分速やかには応じない可能性がある。
【0015】
様々な実施形態は、プロセッサによる処理のためのパケットのエントリ・ポイントにおける輻輳コントローラとして、非コア部分(uncore)又はシステム・エージェントの周波数を修正することにより、受信パケットのフラッディングに対処することを試みる。例えば、受信パケットのフラッディングのイベントにおいて、非コア部分又はシステム・エージェントに割り当てられる電力又は周波数は低減させられる可能性があり、オプションとして、パケットのバックログのようなパケットを処理するために、追加の電力又は周波数をCPUコアに利用可能にすることができる。幾つかの実施形態では、非コア部分又はシステム・エージェントは、1つ以上のCPUコアとネットワーク・インターフェース・カードとの間のデバイス・インターフェースを提供することができる。非コア部分又はシステム・エージェントの動作周波数を減らすことは、CPUコア又は他のデバイス(例えば、アクセラレータ又はグラフィックス処理ユニット(GPU))による処理のために、受信パケットがネットワーク・インターフェース・カード(NIC)からキャッシュ又は他のメモリへ、コピー又は転送される速度を落とすことが可能である。例えば、NIC又は他のインターフェースは、任意のバージョンの周辺コンポーネント相互接続エクスプレス(PCIe)インターフェースを使用して、非コア部分又はシステム・エージェントを介してCPUコアに接続されことが可能である。非コア部分又はシステム・エージェントの周波数を遅くすることは、受信したパケットがNICからコピーされる速度を遅くすることが可能であるが、パケット送信レートを遅くすることが可能である。パケット・フラッディングが軽減される場合、又はプロセッサがパケット・フラッディングを適切に処理できる場合、動作についての非コア部分又はシステム・エージェントの周波数は、より高いがデフォルト周波数より低いレベルまで、又はデフォルト周波数まで増やすことができる。様々な実施形態は、5Gネットワーク・コア及びエッジにおけるDDoS攻撃を使用する攻撃に対して、追加の保護を提供し、ネットワーク・ベースの攻撃の最中でもCPUの可用性を維持することができる。
【0016】
幾つかの実施例では、非コア部分又はシステム・エージェントの動作周波数は、レジスタ(例えば、モデル固有レジスタ(MSR))を使用して設定することができる。例えば、電力管理コントローラ(例えば、ファームウェア)は、非コア部分又はシステム・エージェントの動作周波数を調整することができる。非コア部分又はシステム・エージェントの動作周波数を減らすことが、コアに利用可能な電力の量を増やすか、又は1つ以上のコアに供給するために利用可能な電力が存在する場合、電力管理コントローラは、コアに割り当てられる電力を増加させることができる。例えば、IPSは、非コア部分又はシステム・エージェントの動作周波数を減らすように、電力管理コントローラに要求することができる。
【0017】
図1は、ネットワーク・インターフェース・カード(NIC)からコアへのネットワーク・トラフィックの例示的な経路を示す。システム100では、NIC 102で受信されたネットワーク・パケットは、コア120による処理の前に、非コア部分104とNIC 102との間のメッセージ・トランザクションを使用して送ることが可能である。NIC 102とコア120との間のメッセージ・トランザクションは、非コア部分104の構成要素を使用することができる。非コア部分104は、CPUコア120の外側にあるが同一のダイの上に存在する回路、例えばL3キャッシュ、集積されたメモリ・コントローラ、ウルトラパス相互接続(UltraPath Interconnect,UPI)、及び相互接続メッシュを含むことが可能である。
【0018】
例えば、PCIeインターフェースが使用される場合、PCIeインターフェース106は、NIC 102から少なくとも最終レベル・キャッシュ(LLC)並びにキャッシング及びホーム・エージェント(CHA)108への受信パケットの通信を提供することができる。LLC及びCHAは、統合された又は別々の構成要素であるとすることが可能であることに留意されたい。CHAは、ローカル・コヒーレンス及びキャッシュ・コントローラとして機能し、且つメモリ・コントローラ110に対するコヒーレンス及びインターフェースとして機能することが可能である。幾つかの実施形態では、CHAはLLCに結合し、CHAは、他のクラスタ又はCPUソケット内の様々なメモリ及びキャッシュ・デバイスの中でキャッシュ・コヒーレンスを維持することを試みることが可能である。例えば、コアはメモリ・アクセス・リクエストをそのCHAへ送信することが可能であり、CHAはそのキャッシュ・スライスからデータを提供するか、又は別のコアのキャッシュからデータのコピーを取得することができる。
【0019】
様々な実施形態は、パケット・フラッディングを検出し、コア120、LLC及びCHA 108の利用の過負荷を防止又は軽減するために、様々な実施形態は、非コア部分の周波数を減らして、コア120による処理のために、NIC 102からのパケットの入口ポイントでの混雑を管理することができる。例えば、パケット・フラッディングの可能性の検出に応答して、IPS(図示せず)は、非コア部分104の動作周波数を低減することを電力コントローラ140に要求することができる。幾つかの例において、電力コントローラ140は、利用可能な電力バジェットが存在する場合には、パケットのバックログを処理するために、何らかのコア120の動作周波数を増やすることができる。
【0020】
幾つかの実施例において、何れのコア120も、データ・プレーン開発キット(Data Plane Development Kit,DPDK)、ストレージ・パフォーマンス開発キット(Storage Performance Development Kit,SPDK)、オープンデータプレーン(OpenDataPlane)、ネットワーク機能仮想化(Network Function Virtualization,NFV)、ソフトウェア定義ネットワーキング(software-defined networking,SDN)、エボルブド・パケット・コア(Evolved Packet Core,EPC)、又は5Gネットワーク・スライシングのうちの1つ以上に基づいて、パケット処理を実行するアプリケーション、ワークロード、又はソフトウェアを実行することができる。NFVの幾つかの実装例は、ETSI(European Telecommunications Standards Institute)仕様、又はETSIのオープン・ソース・ナノ(Open Source Mano,OSM)グループからのオープン・ソースNFVマネジメント及びオーケストレーション(Open Source NFV Management and Orchestration,MANO)に記載されている。仮想ネットワーク機能(VNF)は、ファイアウォール、ドメイン・ネーム・システム(DSN)、キャッシング又はネットワーク・アドレス変換(NAT)のような一般的な設定可能なハードウェアで実行される仮想化タスクのシーケンス又はサービス・チェーンを含むことが可能であり、仮想化実行環境(VEE)(例えば、コンテナ又は仮想マシン)で実行することが可能である。VNFは、サービス・チェーンとして一緒にリンクすることが可能である。幾つかの例において、EPCは、少なくともロング・ターム・エボリューション(LTE)アクセスのために3GPPで仕様化されているコア・アーキテクチャである。5Gネットワーク・スライシングは、同じ物理ネットワーク・インフラストラクチャで仮想化された独立した論理ネットワークの多重化を提供することができる。幾つかのアプリケーションは、ビデオ処理又はメディア・トランスコーディング(オーディオ、画像、ビデオ・ファイルの符号化を変更すること)を行うことが可能である。
【0021】
図2は例示的なシステムを示す。システム200は、LLC/CHA(例えば、非コア部分)及びコア、並びにメモリ・コントローラ(MC)を有するインターフェース(例えば、UPI及びPCIe)の例示的なレイアウトを示す。システム200の種々のデバイス間で接続を提供するために、メッシュを使用することができる。インターフェース、非コア部分、及びコアの任意のレイアウトを使用することが可能であり、任意の数のインターフェース、非コア部分、コア及びMCを使用することが可能である。
【0022】
図3Aは例示的なシステムを示す。この例では、ネットワーク要素302-0~302-N(ここで、Nは整数であり、1以上である)は、コネクション304を介してネットワーク・インターフェース308を使用してサーバー310に通信可能に結合することが可能である。任意のネットワーク要素302-0~302-N及びネットワーク・インターフェース308は、ネットワーク・インターフェース(例えば、ネットワーク・インターフェース・カード又はネットワーク・インターフェース・コントローラ)、バス・インターフェース、ファブリック・インターフェース、スイッチ、ルーター、転送要素などを含むことが可能である。コネクション304は、Ethernet,InfiniBand,Compute Express Link(CXL),HyperTransport,任意の高速ファブリック、PCIe,NVLink,アドバンスト・マイクロコントローラ・バス・アーキテクチャ(AMBA)相互接続,OpenCAPI,Gen-Z,CCIX,Intel(登録商標)QuickPath Interconnect(QPI),Intel(登録商標)Ultra Path Interconnect(UPI),Intel(登録商標)On-Chip System Fabric (IOSF),Omnipath等を含む、任意のネットワーキング又は通信規格と少なくとも互換性がある可能性がある。サーバー310は、サーバー、ラック、エッジ・コンピューティング・ノード、又はデータ・センターのような任意のコンピューティング・プラットフォームを指す可能性がある。
【0023】
幾つかの実施例では、侵入検知システム350は、処理するパケットを用いて、ネットワーク・インターフェース308又はコア316を氾濫させるための脆弱性悪用又はその他の試みを検出するために、ネットワーク・トラフィック・フローを検査する。侵入検知システム350は、フラグメント化されたパケットに基づくディナイアル・オブ・サービス(DoS)攻撃及び分散ディナイアル・オブ・サービス(DDoS)攻撃から、重要なネットワーキング・インフラストラクチャを保護することが可能であり、アップタイム及びネットワーク・サービスレベル・アグリーメント(SLA)を改善する。例えば、侵入検知システム350は、少なくとも以下のタイプの攻撃:タイニー・フラグメント攻撃、バッファ・オーバーフロー攻撃、又はオーバーラッピング・フラグメント攻撃を検出し、防御を試みることができる。
【0024】
タイニー・フラグメント攻撃は、レイヤ4(例えば、TCP及びUDP)ヘッダ・フィールドを第2フラグメント内に押し込むのに十分小さなフラグメント・サイズを設定する攻撃者又は送信者に係わる可能性がある。バッファ・オーバーフロー攻撃は、ディナイアル・オブ・サービス(DoS)攻撃であるとすることが可能であり、攻撃者又は送信者は多数の不完全なIPフラグメントを連続的に送信して時間及びメモリを消費させる可能性があり、なぜならサーバー310はフェイク・パケットを再構築しようと試みてしまうからである。オーバーラッピング・フラグメント攻撃は、攻撃者や送信者が、先頭以外のIPフラグメント・パケットにフラグメント・オフセットを上書きすることに係わる可能性があり、その結果、転送プレーンがIPパケットを再構築する際に、誤ったIPパケットを生成する可能性があり、メモリがオーバーフローしたり、或いはシステムが再ロードしたりすることを引き起こす。
【0025】
例えば、RFC1858(1995)は、IP フラグメント・フィルタリングのためのセキュリティの考察を論じており、TCPパケットのIPフラグメントを含むホストに対する2つの攻撃:タイニー・フラグメント攻撃とオーバーラッピング・フラグメント攻撃を強調している。これらの攻撃をブロックすることが望ましく、なぜならそれらはホストに不正アクセスしたり、内部リソースのすべてを身動きできなくしたりする可能性があるからである。RFC1858はまた、これらの攻撃に対する直接的及び間接的な2つの防御方法を述べている。直接的な方法では、最小長より小さい初期フラグメントが破棄される。間接的な方法は、フラグメント・セットの2番目のフラグメントを、それが元のIPデータグラム内の8バイトで始まる場合に破棄することに係わる。
【0026】
侵入検知システム350は、(例えば、OSにおける)フラグメント処理の前に、IPフィルタ・ルールを適用することができる。タイニー・フラグメントを検出した場合、侵入検知システム350は、そのパケットを破棄することができる。オーバーラッピング・フラグメント攻撃を検出した場合、侵入検知システム350は、オーバーラップ・フラグメントが検出された場合に、フラグメント・チェーン内のすべてのフラグメントを破棄することができる。
【0027】
バッファ・オーバーフロー攻撃を検出するために、侵入検知システム350は、再構築されるIPデータグラムの数、及びデータグラム当たりのフラグメントの数に対する最大閾値を追跡し、以下を実行することができる:(1)データグラム当たりのフラグメントの最大数に到達した場合に、後続のフラグメントは破棄され、グローバル統計値COUNTERが1つだけインクリメントされる;(2)最大閾値が設定されることに加えて、各IPデータグラムは、管理されるタイマに関連付けられる;(3)IPデータグラムが指定された時間内にすべてのフラグメントを受信しない場合、タイマは満了し、IPデータグラム及びそのすべてのフラグメントは破棄される;(4)所与の任意の時間に再構築されることが可能なデータグラムの最大数に達した場合に、すべての後続のフラグメントは破棄され、グローバル統計値COUNTERが1つだけインクリメントされる。
【0028】
幾つかの実施例では、侵入検知システム350は、ネットワーク機器306、ネットワーク・インターフェース308、及び/又はサーバー310(例えば、オペレーティング・システム、アプリケーション、又はコア・インターフェース314)の何れにおいても実行することができる。例えば、ネットワーク機器306は、ネットワーク・インターフェース308へ転送されるべきパケットをコネクション304から受信することができる。幾つかの例において、ネットワーク機器306は侵入検知システム350を実行し、ネットワーク・インターフェース308又はサーバー310を意図するDoS又はDDoS攻撃を検出し、ネットワーク・インターフェース308及びサーバー310における攻撃から生じるパケット・オーバーフローを緩和することを試みることができる。
【0029】
幾つかの実施例において、侵入検知システム350は、悪意があると思われる特定のフローに関連するパケットを破棄するために、アクセス制御リスト(ALC)を強いることができる。フローは、2つのエンドポイント間で転送されるパケットのシーケンスであるとすることが可能であり、一般に、既知のプロトコルを使用する単一のセッションを表す。従って、フローは、所定のN個のタプルのセットによって識別されることが可能であり、ルーティングの目的のために、フローは、エンドポイント、例えば送信元及び宛先アドレスを識別するタプルによって識別されることが可能である。コンテンツ・ベースのサービス(例えば、ロード・バランサー、ファイアウォール、侵入検知システムなど)の場合に、フローは、5つ以上のタプル(例えば、送信元アドレス、宛先アドレス、IPプロトコル、トランスポート層の送信元ポート、宛先ポート)を使用することによって、より細かい粒度で識別されることが可能である。フロー中のパケットは、パケット・ヘッダにおいて同じタプルのセットを有するように期待される。
【0030】
様々な実施形態によれば、侵入の企ての検出に応答して、侵入検知システム350(例えば、IPS)は、周波数変更通知、フラグ、インジケータ又はメッセージを電力管理部312に発行して、ネットワーク・インターフェース314とコア316との間のコア・インターフェース314の周波数の調整を要求することができる。例えば、コア・インターフェース314は、ネットワーク・インターフェース308とコア316との間のインターフェースを提供する非コア部分又はシステム・エージェントを含むことが可能である。幾つかの実施例において、非コア部分又はシステム・エージェントは、バス・インターフェース(例えば、PCIe)、キャッシュ、キャッシュ及びホーム・エージェントを含むことが可能である。侵入検知システム350によって識別される脆弱性の検出の場合、侵入検知システム350は、ネットワーク・インターフェース308とコア316との間のメッセージング速度を制御するためのゲートとして、コア・インターフェース314の動作周波数を低減するように電力管理部312に要求することが可能である。例えば、非コア部分の動作周波数を低下させることは、サーバー310及びコア316が受信メッセージによって過負荷になってしまうことから保護し、コア316とネットワーク・インターフェース308との間のメッセージ転送を遅らせることができる。
【0031】
侵入検知システム350が特定のフロー又は複数のフローに対して弱体化させる攻撃(例えば、DoS又はDDoS)を検出するシナリオにおいて、侵入検知システム350は、周波数変更メッセージ、インジケータ又はフラグにより、コア・インターフェース314の周波数を増やすように、電力管理312に通知することができる。もはやアクティブではない脆弱性を検出した場合、侵入検知システム350は、コア・インターフェース314の動作周波数を段階的に、又は事前の周波数レベルまで増加させることを試みることができる。例えば、侵入検知システム350が、CPUはバックログ内のパケットの処理を完了したことを検出した場合、コア・インターフェース314の動作周波数は増やされることが可能である。コア・インターフェース314の周波数を増加させる要求に応答して、電力管理部312は、コア・インターフェース314の周波数を増やすことに電力バジェットが利用可能でない場合には、コアの周波数を減らすように試みることができる。電力管理部312は、アクセラレータ、メディア・プロセッサ、ビデオ・オフロード・エンジン、暗号解読/暗号化オフロード・エンジン、ネットワーク・インターフェース・カード、グラフィックス処理ユニット(GPU)等のようなコア以外のデバイスに利用可能な電力を調整(例えば、増加又は減少)することができることに留意されたい。
【0032】
幾つかの実施例では、コア・インターフェース314及びコア316は、別個の可変電圧及び周波数ドメインで動作することが可能である。これにより、システムは、改善された電力効率を許容しつつ、可変の非コア・ドメインのすべての利点を活用することができる。所与の電力バジェットに対して、コア・インターフェース314の周波数を下げることは、コア316のより高い動作周波数のための追加のヘッド・ルームを許容することができる。より高いコア周波数は、侵入検知システム350又はオペレーティング・システム(OS)により規定される予防措置の実行を支援することができる。
【0033】
一部の例では、コアは命令を実行することが可能な実行コア又は計算エンジンであるとすることが可能である。コアは、自身のキャッシュ及び読み取り専用メモリにアクセスすることができ、或いは複数のコアがキャッシュ又はROMを共有することができる。コアは、ホモジーニアス及び/又はヘテロジーニアス・デバイスであるとすることが可能である。任意のタイプのプロセッサ間通信技術を使用することが可能であり、それらはメッセージング、プロセッサ間インタラプト(IPI)、プロセッサ間通信などであるが、これらに限定されない。コアは、任意の種類の方法で接続されることが可能であり、その方法はバス、リング、又はメッシュなどであるが、これらに限定されない。
【0034】
幾つかの実施例では、非コア部分又はシステム・エージェントは、メモリ・コントローラ、共有キャッシュ(例えば、LLC)、キャッシュ・コヒーレンシ・マネジャ、算術論理ユニット、浮動小数点ユニット、コア又はプロセッサ相互接続、又はバス若しくはリンク・コントローラ(例えば、PCIeインターフェース)のうちの1つ以上を含むことが可能である。システム・エージェントは、ダイレクト・メモリ・アクセス(DMA)エンジン接続、非キャッシュ・コヒーレント・マスター接続、コア間のデータ・キャッシュ・コヒーレンス、アービトレーション・キャッシュ・リクエスト、又はアドバンスト・マイクロコントローラ・バス・アーキテクチャ(AMBA)能力のうちの1つ以上を提供することができる。
【0035】
幾つかの実施例では、電力管理部312は、モデル固有レジスタ(model specific register,MSR)のようなレジスタに値を設定することによって独立に、コア316、コア・インターフェース314、及びその他のデバイスの動作周波数を調整することができる。例えば、MSRは、プログラム実行トレーシング、計算機能のトグリング、及び/又はパフォーマンス・モニタリングのために使用される制御レジスタを含むことができる。MSRは、メモリ・オーダー・バッファ(MOB)コントロール及びステータス;ページ・フォールト・エラー・コード;ページ・ディレクトリ・キャッシュ及び変換ルックアサイド・バッファエントリ(TLB)のクリア;キャッシュの全部又は一部分のディセーブリング、キャッシュの全部又は一部分からの電力の除去、及びキャッシュ・タグの無効化のような、マイクロプロセッサのキャッシュ階層における各種キャッシュ・メモリの制御;マイクロコード・パッチ・メカニズム制御;デバッグ制御;プロセッサ・バス制御;ハードウェア・データ及び命令プリフェッチ制御;スリープ及びウェイクアップ制御、ACPI(Advanced Configuration and Power Interface)業界標準(例えば、P状態及びC状態)により定義される状態遷移、及び各種機能ブロックへのクロック又は電力の無効化のような電力管理制御;命令マージの制御及び状態;エラー訂正コード(ECC)メモリ・エラー状態;バス・パリティ・エラー状態;熱管理制御及び状態;サービス・プロセッサ制御及び状態;コア間通信;ダイ間通信;マイクロプロセッサのヒューズに関する機能;電圧レギュレータ・モジュール電圧識別子制御;位相ロック・ループ(PLL)制御;キャッシュ・スヌープ制御;ライト・コンバイン・バッファ制御及び状態;オーバークロッキング機能制御;割込みコントローラ制御及び状態;温度センサ制御及び状態;暗号化/復号化、MSRパスワード保護、L2キャッシュ及びプロセッサ・バスへの並列要求、個々の分岐予測機能、命令マージング、マイクロ命令タイムアウト、パフォーマンス・カウンタ、ストア・フォワーディング、投機テーブル・ウォークのような様々な機能の有効化及び無効化;ロード・キュー・サイズ;キャッシュ・メモリサイズ;未定義MSRへのアクセスがどのように取り扱われるかの制御;マルチコア・コンフィギュレーション;キャッシュ・メモリの設定(例えば、キャッシュ内のビット・セル列の選択解除、及びビット・セルの冗長列で列を置換すること)、マイクロプロセッサの位相ロック・ループ(PLL)のデューティ・サイクル及び/又はクロック比、及びマイクロプロセッサへの電圧源を制御する設定電圧識別子(VID)のうちの1つ以上を含むことができる。
【0036】
図3Bは、パケット・フラグメントのパケット・フィルタリングのための例示的なパイプラインを示す。NIC、スイッチ、他のデバイス又はソフトウェア(例えば、IPS)は、パケット・フラグメントを検出することができる。共同して分類部362、IPフィルタ364、フラグメントIPフィルタ366、及びIP再構築部368は、パケットが、タイニー・フラグメント攻撃、バッファ・オーバーフロー攻撃、又はオーバーラッピング・フラグメント攻撃の一部であるかどうかを識別し、そのパケットが、タイニー・フラグメント攻撃、バッファ・オーバーフロー攻撃、又はオーバーラッピング・フラグメント攻撃の一部であると考えられる場合、そのパケットを破棄することができる。パケットが、タイニー・フラグメント攻撃、バッファ・オーバーフロー攻撃、又はオーバーラッピング・フラグメント攻撃の一部であるとは考えられない場合、IP再構築部368は、パケットを再構築し、再構築したパケットをNIC又はスイッチへ提供するか、又は再構築したパケットをサーバーに転送することができる。
【0037】
図4は、例示的なプロセスを示す。402において、ネットワーク・インターフェース(例えば、NIC、ネットワーク・インターフェース・コントローラ、ファブリック・インターフェースなど)は、コネクションからパケットを受信することができる。システム・エージェント又は非コア部分は、ネットワーク・インターフェースから1つ以上のコアへ、パケット・コンテンツを通信可能につなげて転送することが可能である。404において、輻輳管理システムからの指示に基づいて、非コア部分の周波数を調整することができる。非コア部分の動作周波数を減らすことにより、受信パケットがコアに提供される速度を減らすことができる。非コア部分の動作周波数を増やすことにより、受信パケットがコアに提供される速度を増やすことができる。406において、何らかのDoS又はDDoS攻撃が生じたか否かを、ある時間インターバルにわたって検出されたフラグメント化されたパケットの数に基づいて判定するために、パケット分類を行うことが可能である。例えば、DoS又はDDoS攻撃は、フロー又は複数のフローに対して時間ウィンドウ内で発生する、タイニー・フラグメント攻撃、バッファ・オーバーフロー攻撃、又はオーバーラッピング・フラグメント攻撃の数に基づいて検出されることが可能である。
【0038】
DoSやDDoS攻撃が検出された場合に、輻輳管理を要求するために、408において、輻輳回避スキームが生じる可能性がある。輻輳管理は、非コア部分の周波数を減らすこと、コア又はプロセッサの動作周波数を増やすこと、メモリ内の受信パケットのために追加バッファ・スペースを割り当てること等を含むことができる。410において、輻輳管理が、攻撃に起因して周波数調整が行われるべきであると決定した場合、非コア周波数制御に対する周波数制御をシグナリングすることによって、非コア周波数は低減させられることが可能である。410において、輻輳管理が、攻撃の終了又は攻撃が検出されないことに起因して、周波数調整が行われるべきであると決定した場合、非コア周波数制御に対する周波数制御をシグナリングすることによって、非コア周波数は増加又は維持されることが可能である。
【0039】
412において、トラフィック・バーストを規制するために、トラフィック取り締まり処理が生じる可能性がある。トラフィック・レートが、設定された最大レートに達すると、過剰なトラフィックは破棄(又はリマーク)される。414において、トラフィック・シェーピングが生じる可能性があり、それにより、余分なパケットはキューに保持され、余分なパケットは、時間のインクリメントにわたって後の送信のためにスケジューリングされ、平滑化されたパケット出力レートを提供する。トラフィック・シェーピングは、インターフェース又はサブ・インターフェースから出て行くパケットの流れを規制し、モジュラー・クオリティ・オブ・サービス(QoS)コマンド・ライン・インターフェース(CLI)コマンドを使用して、パケット・フローを、インターフェースの速度、フレーム・リレー・トラフィック・シェーピング(FRTS)を設定する能力にマッチングさせ、又はインターフェースから出て行くパケットの流れを(トラフィック・クラス毎に)規制し、パケット・フローをインターフェースの速度にマッチさせることができる。1つ以上のコア又は他のデバイスによる処理のために、パケットはバッファ又はキャッシュに提供されることが可能である。
【0040】
図5Aは例示的なプロセスを示す。502において、ワークロードは、実行のために1つ又は複数のコア又はデバイスに分配されることが可能である。例えば、デバイスは、アクセラレータ、メディア・プロセッサ、ビデオ・オフロード・エンジン、復号化/暗号化オフロード・エンジン、ネットワーク・インターフェース・カード、グラフィックス処理ユニット(GPU)を含むことができる。504において、周辺デバイス・インターフェースのデフォルト周波数を設定することができる。例えば、周辺デバイス・インターフェースは、PCIeインターフェース、CXLインターフェース、DDRインターフェース、バス・インターフェース、システム・エージェント、非コア部分、及び/又はキャッシュのうちの1つ以上を含むことができる。幾つかの実施例では、周辺デバイス・インターフェースは、通信インターフェースと、コア、プロセッサ、又はアクセラレータとの間の通信を提供することができる。通信インターフェースは、ネットワーク・インターフェース・カード、ホスト・インターフェース、バス・インターフェース、又はその他の通信デバイス(悪意のある又は悪意のないトラフィック・フラッディングにさらされる可能性があるもの)を含むことができる。幾つかの実施例では、データが通信インターフェースからコア、プロセッサ、又はアクセラレータへ転送されるレートを制御することが可能な周辺デバイス・インターフェースのために、デフォルト・クロック周波数を設定することが可能である。幾つかの実施例では、周辺デバイス・インターフェースのデフォルト動作周波数を増加させることは、より少ない電力バジェットしかコア又はデバイスに利用可能でないことを招く可能性があり、及びコア又はデバイスの動作周波数は低減される可能性があり、その結果、周辺デバイス・インターフェース及びコア及びデバイスの全体的な電力バジェットは超過しない。
【0041】
506において、通信インターフェースで受信されるトラフィックは、トラフィック・フラッディングを検出するために観察されることが可能である。トラフィック・フラッディングは、ネットワーク・インターフェース又はサーバーにおけるDoS又はDDoS攻撃から生じる可能性がある。例えば、IPS又は輻輳モニタは、(1)不完全なパケットであるIPパケット・フラグメント、(2)小さすぎるIPパケット・フラグメント、(3)過剰なパケットを生じるIPパケット・フラグメント、(4)IPパケット・フラグメント・バッファが満杯であること、又は(5)入口で報告される何らかのディナイアル・オブ・サービス(DoS)のようなパケットの特徴を観察することが可能である。例えば、IPSは、(1)~(5)のうちの何れかが、特定のフロー又は複数のフローについて時間インターバルにわたって十分な回数発生した場合に、トラフィック・フラッディングを識別することができる。例えば、トラフィック・フラッディングは、特定のフロー又は複数のフローについての時間インターバルにわたる(1)~(4)の特定の出現回数によって検出されることが可能である。
【0042】
508において、トラフィック違反が生じたか否かの判定が行われる。トラフィック・フラッディングが検出される場合には、トラフィック違反が発生している可能性がある。トラフィック違反が観察されない場合、プロセスは506に戻ることが可能である。トラフィック違反が観察された場合、プロセスは510に続ことが可能である。
【0043】
510において、トラフィック違反が是正されたか否かの判定が行われる。OSがIPパケットを処理し、上記(1)~(4)の何れかであると考えられるIPパケットを破棄する一方、受信パケットの十分な処理速度を維持し(例えば、適用可能なサービス・レベル・アグリーメント(SLA)の下で)、受信パケットについての許容可能な量のパケット・バッファ・スペース(例えば、バッファ・スペースの量はSLAに違反していない)を利用する場合に、IP違反の是正が生じる可能性がある。オペレーティング・システム又はネットワーキング・ソフトウェア、例えばTCP/IPスタック又はBerkleyパケット・フィルタ、又はネットワーキング・ソフトウェア・アプリケーション(DPDK(Data Plane Development Kit)又はSPDK(Storage Performance Development Kit)ベースのアプリケーションのような、NICポートから直接的にパケットを処理するもの)は、トラフィック違反が是正されたか否かを判定することができる。トラフィック違反が是正されている場合、プロセスは504に続き、そこでは、周辺デバイス・インターフェースの周波数は、周辺デバイス・インターフェースのデフォルト動作周波数に戻されるか、又は段階的に増やされるが、周辺デバイス・インターフェースのデフォルト動作周波数までは増やされない。
【0044】
幾つかの実施例では、504、506、508、又は510の何れもが、ネットワーク・アプライアンス、NIC、ACL、非コア部分又はシステム・エージェントのプロセッサ又は回路、又はプロセッサで実行されるソフトウェア(例えば、Linux(登録商標)ネットワーキング・スタック、DPDKアプリケーション、又はSPDKアプリケーション)によって実行される。
【0045】
トラフィック違反が是正されていない場合、プロセスは512に続く。512において、周辺デバイス・インターフェースの動作周波数は低減させられることが可能である。周波数の低減は、段階的である可能性がある。周波数の低減量は、是正なしでのトラフィック違反回数に依存することが可能である。修正なしでの最初に観測されるトラフィック違反に関し、低減は段階的(ステップ)であるとすることが可能である。是正なしで観察された2回目のトラフィック違反に関し(例えば、510の2回目の反復がNoを示す場合)、インターフェースの周波数は、上記ステップより大きな第2ステップだけ低減されることが可能である。是正なしで観察された3回目のトラフィック違反に関し(例えば、510の3回目の反復がNoを示す場合)、インターフェースの周波数は、第2ステップよりも大きな量だけ低減されることが可能である。しかしながら、インターフェースの動作周波数の下限は、例えばインターフェースが非コア部分又はシステム・エージェントである場合に、設定されることが可能である。周辺デバイス・インターフェースの動作周波数を低下させることに加えて、コア又はデバイスの動作周波数を増大させるために利用可能な十分な電力バジェットが存在するならば、コア又はデバイスの動作周波数を増加させることが可能である。プロセスは510に続く。
【0046】
図5Bは、非コア部分又はシステム・エージェントの動作周波数を変更する方法例を示す。シナリオ550では、NIC、FPGA、ASIC、ACL、及びフラグメンテーション・デバイスのようなデバイスは、攻撃に相当するパケット・フラグメントを検出し、(1)周波数を調整するために非コア周波数コントローラに要求するか、又は(2)非コア部分の周波数を調整するためにOSに要求することができる。シナリオ552では、デバイスは、攻撃に相当するパケット・フラグメントを検出し、オペレーティング・システム(OS)ネットワーク・スタック(例えば、Linux(登録商標)eBPF又はACL及びフラグメンテーション・ロジック)に、非コア部分の周波数を調整するように要求することができる。
【0047】
シナリオ554では、デバイスは攻撃に相当するパケット・フラグメントを検出し、DPDKアプリケーション(例えば、ACL及びフラグメンテーション・ロジック)に、非コア部分の周波数を調整するように要求することができる。シナリオ556では、デバイスは、攻撃に相当するパケット・フラグメントを検出し、仮想スイッチ(例えば、ACL及びフラグメンテーション・ロジック)に、非コア部分の周波数を調整するように要求することができる。仮想スイッチは、vSwitch、VMware(登録商標)仮想スイッチ(例えば、ESXi)、Microsoft(登録商標)Hyper-V、又はOpen vSwitchを含むことが可能である。
【0048】
図6はシステムを示す。システムは、検出された攻撃又は検出されなかった攻撃に応答して、周辺デバイス・インターフェース、システム・エージェント、非コア部分、コア、又はデバイスの動作周波数を調整するために、本願で説明された実施形態を使用することができる。システム600は、システム600に対する命令の処理、動作管理、及び実行を提供するプロセッサ610を含む。プロセッサ610は、任意のタイプのマイクロプロセッサ、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、処理コア、又はシステム600のための処理を提供する他の処理ハードウェア、又はプロセッサの組み合わせを含む可能性がある。プロセッサ610は、システム600の全体的な動作を制御し、1つ以上のプログラマブル汎用又は専用マイクロプロセッサ、デジタル信号プロセッサ(DSP)、プログラマブル・コントローラ、特定用途向け集積回路(ASIC)、プログラマブル論理デバイス(PLD)など、又はこれらのデバイスの組み合わせであるとすることが可能であり、又はそれらを含むことも可能である。
【0049】
一例では、システム600は、プロセッサ610に結合されたインターフェース612を含み、これは、メモリ・サブシステム620又はグラフィックス・インターフェース構成要素640、又はアクセラレータ642のような、より高い帯域幅のコネクションを必要とするシステム構成要素のための、より高速のインターフェース又は高スループットのインターフェースを表すことが可能である。インターフェース612は、スタンドアロン構成要素であるとすることが可能な、又はプロセッサダイ上に集積されることが可能なインターフェース回路を表す。存在する場合、グラフィックス・インターフェース640は、システム600のユーザーに視覚的な表示を提供するグラフィックス構成要素に対するインターフェースを成す。一例では、グラフィックス・インターフェース640は、ユーザーに出力を提供する高解像度(HD)ディスプレイを駆動することができる。高精細度とは、約100 PPI(インチ当たりのピクセル)以上のピクセル密度を有するディスプレイであって、フルHD(例えば、1080p)、網膜ディスプレイ、4K(超高精細度又はUHD)等のようなフォーマットを含むことが可能なディスプレイを指すことが可能である。一例において、ディスプレイは、タッチスクリーン・ディスプレイを含むことが可能である。一例では、グラフィックス・インターフェース640は、メモリ630に記憶されたデータに基づいて、又はプロセッサ610によって実行された動作に基づいて、又はその両方に基づいて、表示を生成する。一例では、グラフィックス・インターフェース640は、メモリ630に記憶されたデータに基づいて、又はプロセッサ610によって実行された動作に基づいて、又はその両方に基づいて、表示を生成する。
【0050】
アクセラレータ642は、プロセッサ610によってアクセス又は使用することが可能なプログラム可能な又は固定された機能オフロード・エンジンであるとすることができる。例えば、アクセラレータ642の間のアクセラレータは、圧縮(DC)能力、公開鍵暗号化(PKE)のような暗号サービス、暗号化、ハッシュ/認証能力、暗号解読、又は他の能力又はサービスを提供することができる。幾つかの実施形態では、追加的又は代替的に、アクセラレータ642の間のアクセラレータは、本願で説明されるようなフィールド選択コントローラ機能を提供する。幾つかのケースでは、アクセラレータ642は、CPUソケット(例えば、CPUを含み且つCPUとの電気的インターフェースを提供するマザーボード又は回路基板へのコネクタ)に統合されることが可能である。例えば、アクセラレータ642は、シングル又はマルチ・コア・プロセッサ、グラフィックス処理ユニット、論理実行ユニット、シングル又はマルチ・レベル・キャッシュ、プログラム又はスレッドを独立に実行するために使用可能な機能ユニット、特定用途向け集積回路(ASIC)、ニューラル・ネットワーク・プロセッサ(NNP)、プログラマブル制御ロジック、及びフィールド・プログラマブル・ゲート・アレイ(FPGA)のようなプログラマブル処理要素を含むことが可能である。アクセラレータ642は、複数のニューラル・ネットワーク、CPU、プロセッサ・コア、汎用グラフィックス処理ユニットを提供することが可能であり、又はグラフィックス処理ユニットは、人工知能(AI)又は機械学習(ML)モデルによる用途に使用可能にすることが可能である。例えば、AIモデルは、強化学習スキーム、Q学習スキーム、ディープQ学習、又は非同期アドバンテージ・アクター・クリティック(A3C)、連想ニューラル・ネットワーク、リカレント連想ニューラル・ネットワーク、又は他のAI又はMLモデルの内の何れか又は組み合わせを使用することができるか、又は含むことができる。複数のニューラル・ネットワーク、プロセッサ・コア、又はグラフィックス処理ユニットが、AI又はMLモデルによる用途に使用可能にされることが可能である。
【0051】
メモリ・サブシステム620は、システム600のメイン・メモリを表し、プロセッサ610によって実行されるコード、又はルーチンを実行する際に使用されるデータ値に対するストレージを提供する。メモリ・サブシステム620は、リード・オンリ・メモリ(ROM)、フラッシュ・メモリのような1つ以上のメモリ・デバイス630、DRAMのような1つ以上の種類のランダム・アクセス・メモリ(RAM)、又は他のメモリ・デバイス、又はそのようなデバイスの組み合わせを含むことができる。メモリ630は、特に、システム600内で命令を実行するためのソフトウェア・プラットフォームを提供するために、オペレーティング・システム632を記憶して応対する。更に、アプリケーション634は、メモリ630のOS632のソフトウェア・プラットフォーム上で実行することができる。アプリケーション634は、1つ以上の機能の発揮を実行するために独自の動作ロジックを有するプログラムを表す。プロセス636は、OS632、1つ以上のアプリケーション634、又はその組み合わせに対して補助機能を提供するエージェント又はルーチンを表す。OS632、アプリケーション634、及びプロセス636は、システム600のために機能を提供するソフトウェア・ロジックを提供する。一例では、メモリ・サブシステム620は、メモリ・コントローラ622を含み、これは、メモリ630に対してコマンドを生成及び発行するためのメモリ・コントローラである。メモリ・コントローラ622は、プロセッサ610の物理的な部分又はインターフェース612の物理的な部分であり得ることが理解されるであろう。例えば、メモリ・コントローラ622は、プロセッサ610を有する回路に集積された集積メモリ・コントローラであるとすることが可能である。
【0052】
具体的に示されてはいないが、システム600は、メモリ・バス、グラフィックス・バス、インターフェース・バス、又はその他のようなデバイス間の1つ以上のバス又はバス・システムを含むことが可能であることが理解されるであろう。バス又は他の信号ラインは、通信可能に又は電気的に構成要素を一緒に結合することが可能であり、又は通信可能に且つ電気的に構成要素を結合することが可能である。バスは、物理的な通信回線、ポイント・ツー・ポイント接続、ブリッジ、アダプタ、コントローラ、又は他の回路又は組み合わせを含むことが可能である。バスは、例えば、システム・バス、周辺コンポーネント・インターコネクト(PCI)バス、ハイパー・トランスポート又は業界標準アーキテクチャ(ISA)バス、小型コンピュータ・システム・インターフェース(SCSI)バス、ユニバーサル・シリアル・バス(USB)、又は電気電子技術者協会(IEEE)標準1394バス(Firewire)のうちの1つ以上を含むことが可能である。
【0053】
一例では、システム600は、インターフェース612に結合されることが可能なインターフェース614を含む。一例では、インターフェース614は、スタンドアロン構成要素及び集積回路を含むことが可能なインターフェース回路を表す。一例では、複数のユーザー・インターフェース構成要素又は周辺構成要素、又はその両方が、インターフェース614に結合する。ネットワーク・インターフェース650は、1つ以上のネットワークを介してリモート・デバイス(例えば、サーバー又は他のコンピューティング・デバイス)と通信する能力をシステム600に提供する。ネットワーク・インターフェース650は、イーサーネット・アダプタ、無線相互接続コンポーネント、セルラー・ネットワーク相互接続コンポーネント、USB(universal serial bus)、又は他の有線若しくは無線規格ベースの又はプロプライエタリ・インターフェースを含むことができる。ネットワーク・インターフェース650は、同じデータ・センター又はラック又はリモート・デバイスにあるデバイスへデータを送信することが可能であり、これはメモリに記憶されたデータを送信することを含む。ネットワーク・インターフェース650は、リモート・デバイスからデータを受信することが可能であり、これは受信データをメモリに記憶することを含むことが可能である。ネットワーク・インターフェース650、プロセッサ610、及びメモリ・サブシステム620に関連して、様々な実施形態を使用することが可能である。
【0054】
一例では、システム600は、1つ以上の入力/出力(I/O)インターフェース660を含む。I/Oインターフェース660は、ユーザーがシステム600(例えば、オーディオ、英数字、触覚/タッチ、又は他のインターフェース)と相互作用する1つ以上のインターフェース構成要素を含むことができる。周辺インターフェース670は、具体的には言及されていない任意のハードウェア・インターフェースを含むことが可能である。周辺とは、一般に、システム600に従属的に接続するデバイスをいう。従属的な接続は、動作が実行され且つユーザーが相互作用するソフトウェア・プラットフォーム又はハードウェア・プラットフォーム又はその両方を、システム600が提供しているものである
【0055】
一例では、システム600は、不揮発的な方法でデータを記憶するための記憶サブシステム680を含む。一例において、特定のシステム実装では、ストレージ680の少なくとも特定の構成要素は、メモリ・サブシステム620の構成要素と重複することが可能である。ストレージ・サブシステム680は、ストレージ・デバイス684を含み、これは、1つ以上の磁気ディスク、ソリッド・ステート、又は光学式のディスク、又はその組み合わせのような、不揮発的な方法で大量のデータを記憶する任意の従来の媒体であるとすることが可能であり、或いはそれらを含むことが可能である。ストレージ684は、コード又は命令及びデータ686を永続的な状態で保持する(例えば、値は、システム600への電力の中断でさえ保持される)。ストレージ684は、一般に「メモリ」と考えることが可能であるが、メモリ630は、典型的には、プロセッサ610に命令を提供するための実行又は動作メモリである。ストレージ684は不揮発性であるが、メモリ630は揮発性メモリを含むことができる(例えば、システム600に対して電力が中断された場合、データの値又は状態は不確定になる)。一例では、ストレージ・サブシステム680は、ストレージ684とのインターフェースとなるコントローラ682を含む。一例において、コントローラ682は、インターフェース614又はプロセッサ610の物理的な部分であるか、又はプロセッサ610及びインターフェース614の両方において回路又はロジックを含むことができる。
【0056】
揮発性メモリは、デバイスに対する電力が中断された場合に、その状態(即ち、そこに記憶されていたデータ)が不確定となるメモリである。ダイナミック揮発性メモリは、状態を維持するために、デバイスに記憶されたデータをリフレッシュすることを必要とする。ダイナミック揮発性メモリの1例は、DRAM(Dynamic Random Access Memory)、又はSDRAM(Synchronous DRAM)のような変形を含む。揮発性メモリの別の例は、キャッシュ又はスタティック・ランダム・アクセス・メモリ(SRAM)を含む。本願で説明されるようなメモリ・サブシステムは、DDR3(Double Data Rate version 3,オリジナルのリリースは、2007年6月27日、JEDEC(Joint Electronic Device Engineering Council)によるものである),DDR4(DDRバージョン4,初期仕様はJEDECにより2012年9月に公表されている),DDR4E(DDRバージョン4),LPDDR3(Low Power DDR バージョン3,JESD209-3B,2014年8月、JEDECによるもの),LPDDR4(LPDDRバージョン4,JESD209-4,オリジナルは2014年8月に公表されている),WIO2(Wide入力/出力バージョン2,JESD229-2,オリジナルは2014年8月にJEDECにより公表されている),HBM(High Bandwidth Memory,JESD325,オリジナルは2013年10月にJEDECにより公表されている),LPDDR5(JEDECにより現在議論されている),HBM2(HBMバージョン2,JEDECにより現在議論されている),又はその他又はメモリ技術の組み合わせ、そのような仕様の派生又は拡張に基づく技術のような多くのメモリ技術と互換性がある可能性がある。JEDEC規格は、www.jedec.orgにて入手可能である。
【0057】
不揮発性メモリ(NVM)デバイスは、デバイスへの電力が中断されても状態が確定しているメモリである。幾つかの実施形態において、NVMデバイスは、NAND技術、より具体的には、マルチ閾値レベルのNANDフラッシュ・メモリ(例えば、シングル・レベル・セル(“SLC”)、マルチ・レベル・セル(“MLC”)、クワッド・レベル・セル(“QLC”)、トライ・レベル・セル(“TLC”)、又は幾つかの他のNAND)のような、ブロック・アドレス指定可能なメモリ・デバイスを含むことが可能である。また、NVMデバイスは、バイト・アドレス可能なライト・イン・プレイス3次元クロス・ポイント・メモリ・デバイス、又はその他のバイト・アドレス指定可能なライト・イン・プレイスNVMデバイス(永続的なメモリとも言及される)を有することが可能であり、例えば、シングル又はマルチ・レベル位相変化メモリ(PCM)又はスイッチを備えた位相変化メモリ(PCMS),Intel(登録商標)Optane(登録商標)メモリ,
カルコゲナイド相変化材料(例えば、カルコゲナイド・ガラス)を使用するNVMデバイス,金属酸化物ベース、酸素空格子点ベースを含む抵抗性メモリ,及び導電性ブリッジランダムアクセスメモリ(CB-RAM),ナノワイヤ・メモリ,強誘電体ランダム・アクセス・メモリ(FeRAM,FRAM(登録商標)),メモリスタ技術を組み込む磁気抵抗ランダム・アクセス・メモリ(MRAM),スピン転送トルク(STT)-MRAM,スピントロン磁気接合メモリ・ベース・デバイス,磁気トンネル接合(MTJ)ベース・デバイス,DW (ドメイン・ウォール)及びSOT(スピン軌道転送)ベース・デバイス,サイリスタ・ベース・メモリ・デバイス、又はこれらの任意の組み合わせ、又はその他のメモリである。
【0058】
電源(図示せず)は、システム600の構成要素に電力を提供する。より具体的には、電源は、典型的には、システム600の構成要素に電力を提供するために、システム600内の1つ又は複数の電源に対するインターフェースを成す。一例では、電源は、壁コンセントに差し込むためのAC-DC(交流-直流)アダプタを含む。このようなAC電力は、再生可能なエネルギー(例えば、太陽光発電)電力源であるとすることが可能である。一例では、電源は、外部AC-DCコンバータのようなDC電源を含む。一例では、電源又は電力供給部は、充電電磁界の近傍で充電するための無線充電ハードウェアを含む。一例では、電源は、内部バッテリ、交流電源、運動ベース電源、太陽光電源、又は燃料セル電源を含むことができる。
【0059】
一例では、システム600は、プロセッサ、メモリ、ストレージ、ネットワーク・インターフェース、及び他の構成要素の相互接続された計算スレッドを使用して実装することができる。PCIe、イーサーネット、又は光相互接続(又はそれらの組み合わせ)のような高速相互接続を使用することができる。
【0060】
図7は、複数のコンピューティング・ラック702を含む環境700を示し、ラック各々は、トップ・オブ・ラック(ToR)スイッチ704、ポッド・マネジャ706、及び複数のプールされたシステム・ドロワーを含む。環境は、攻撃の検出又は攻撃の不検出に応答して、周辺デバイス・インターフェース、システム・エージェント、非コア部分、コア、又はデバイスの動作周波数を調整するために、本願で説明される実施形態を使用することができる。一般に、プールされたシステム・ドロワーは、プールされたコンピューティング・ドロワー及びプールされたストレージ・ドロワーを含むことができる。オプションとして、プールされたシステム・ドロワーは、プールされたメモリ・ドロワー及びプールされた入力/出力(I/O)ドロワーを含んでもよい。図示の実施形態では、プールされたシステム・ドロワーは、Intel(登録商標)XEON(登録商標)のプールされたコンピュータ・ドロワー708と、Intel(登録商標)ATOM(登録商標)のプールされたコンピュータ・ドロワー710と、プールされたストレージ・ドロワー712と、プールされたメモリ・ドロワー714と、プールされたI/Oドロワー716とを含む。プールされたシステム・ドロワーの各々は、40ギガビット/秒(Gb/s)又は100Gb/sイーサーネット・リンク又は100+Gb/sシリコン・フォトニクス(SiPh)光リンクのような、高速リンク718を介してToRスイッチ704に接続される。幾つかの実施態様において、高速リンク718は、800Gb/s SiPh光リンクを含む。
【0061】
複数のコンピューティング・ラック702は、ネットワーク720への接続によって示されるように、それらのToRスイッチ704(例えば、ポッド・レベル・スイッチ又はデータ・センター・スイッチ)を介して相互接続されてもよい。幾つかの実施態様において、コンピューティング・ラック702のグループは、ポッド・マネジャ706を介して別個のポッドとして管理される。幾つかの実施態様において、ポッド内の全てのラックを管理するために、単独のポッド・マネジャが使用される。代替的に、分散されたポッド・マネジャが、ポッド管理動作に使用されてもよい。
【0062】
環境700は、更に、環境の様々な側面を管理するために使用される管理インターフェース722を含む。これは、ラック構成データ724として記憶される対応するパラメータと共に、ラック構成を管理することを含む。環境700は、コンピューティング・ラックのために使用されることが可能である。
【0063】
本願における実施形態は、スイッチ、ルーター、ラック、及びブレード・サーバー(データ・センター及び/又はサーバー・ファーム環境で使用されるようなもの)のような、種々のタイプのコンピューティング及びネットワーキング装置で実施することができる。データ・センター及びサーバー・ファームで使用されるサーバーは、ラック・ベースのサーバー又はブレード・サーバーのようなアレイ化されたサーバー構成を含む。これらのサーバーは、LANの間の適切なスイッチング及びルーティング機能を備えたローカル・エリア・ネットワーク(LAN)に、サーバーのセットを区分けして、プライベート・イントラネットを形成するように、種々のネットワーク設備を介する通信で相互接続される。例えば、クラウド・ホスティング機能は、典型的には、多数のサーバーを備えた大規模なデータ・センターを使用することができる。ブレードは、サーバー・タイプの機能、すなわち“サーバー・オン・カード”を実行するように構成された別個のコンピューティング・プラットフォームを含む。従って、各ブレードは、適切な集積回路(IC)を結合するための内部配線(例えば、バス)を提供するメイン・プリント回路基板(メイン基板)と、基板に実装される他の構成要素とを含む、従来のサーバーに共通の構成要素を含む。
【0064】
図8は、実施形態を使用することが可能な、又は実施形態によって使用されることが可能なネットワーク・インターフェースを示す。ネットワーク・インターフェースは、検出された攻撃又は検出されなかった攻撃に応答して、周辺デバイス・インターフェース、システム・エージェント、非コア部分、コア、又はデバイスの動作周波数を調整するために、本願で説明される実施形態を使用することができる。ネットワーク・インターフェース800は、トランシーバ802、プロセッサ804、送信キュー806、受信キュー808、メモリ810、バス・インターフェース812、及びDMAエンジン852を含むことが可能である。トランシーバ802は、IEEE 802.3に記載されているように、イーサーネットのような適用可能なプロトコルに準拠してパケットを送受信することが可能であるが、他のプロトコルが使用されてもよい。トランシーバ802は、ネットワーク媒体(図示せず)を介して、ネットワークからパケットを受信し、ネットワークへパケットを送信することができる。トランシーバ802は、PHY回路814及び媒体アクセス制御(MAC)回路816を含むことができる。PHY回路814は、適用可能な物理層の仕様又は標準に従ってデータ・パケットを符号化及び復号化するための符号化及び復号化回路(図示せず)を含むことができる。MAC回路816は、送信されるべきデータをパケットに構築するように構成されることが可能であり、パケットは、ネットワーク制御情報及び誤り検出ハッシュ値と共に宛先及び送信元アドレスを含む。プロセッサ804は、プロセッサ、コア、グラフィックス処理ユニット(GPU)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、特定用途向け集積回路(ASIC)、又はネットワーク・インターフェース800のプログラミングを可能にする他のプログラマブル・ハードウェア・デバイスの任意の組み合わせとすることが可能である。例えば、プロセッサ804は、ワークロードを実行するために使用するリソースの識別、及び選択されたリソース上で実行するためのビットストリームの生成をもたらすことができる。例えば、「スマート・ネットワーク・インターフェース」は、プロセッサ804を使用して、ネットワーク・インターフェース内のパケット処理能力を提供することができる。
【0065】
パケット割り当て部824は、本願で説明されるタイムスロット割り当て又はRSSを使用して、複数のCPU又はコアによる処理のために受信パケットの分配をもたらすことが可能である。パケット割り当て部824がRSSを使用する場合、パケット割り当て部824は、どのCPU又はコアがパケットを処理すべきかを決定するために、受信したパケットの内容に基づいて、ハッシュを計算するか、又は別の決定を行うことができる。
【0066】
割り込みコアレス部822は、割り込みモデレーションを実行することができ、それにより、ネットワーク・インターフェース割り込みコアレス部822は、受信パケットを処理するためにホスト・システムへの割り込みを生成する前に、複数のパケットが到着するのを待機するか、又はタイムアウトの満了を待機する。受信セグメント融合(Receive Segment Coalescing,RSC)は、ネットワーク・インターフェース800によって実行されることが可能であり、それにより、到来するパケットの一部がパケットのセグメントに結合される。ネットワーク・インターフェース800は、この融合したパケットをアプリケーションに提供する。
【0067】
直接メモリ・アクセス(DMA)エンジン852は、パケットをホストの中間バッファにコピーし、次いで中間バッファから宛先バッファへの別のコピー動作を使用する代わりに、パケット・ヘッダ、パケット・ペイロード、及び/又はディスクリプタを、ホスト・メモリからネットワーク・インターフェースへ又はその逆向きに直接的にコピーすることができる。
【0068】
メモリ810は、任意のタイプの揮発性又は不揮発性メモリ・デバイスであるとすることが可能であり、ネットワーク・インターフェース800をプログラムするために使用される任意のキュー又は命令を記憶することが可能である。送信キュー806は、ネットワーク・インターフェースによる送信のためのデータ、又はデータに対する参照を含むことができる。受信キュー808は、ネットワークからネットワーク・インターフェースによって受信されたデータ、又はデータに対する参照を含むことができる。記述子キュー820は、送信キュー806又は受信キュー808内のデータ又はパケットを参照する記述子を含むことができる。バス・インターフェース812は、ホスト・デバイス(図示せず)にインターフェースを提供することができる。例えば、バス・インターフェース812は、PCI、PCI Express、PCI-x、Serial ATA、及び/又はUSB互換インターフェースと互換性を有する可能性がある(但し、他の相互接続規格が使用されてもよい)。
【0069】
幾つかの実施例では、プロセッサ804は:ラージ・レシーブ・オフロード(LRO)、ラージ・センド/セグメンテーション・オフロード(LSO)、TCPセグメンテーション・オフロード(TSO)、トランスポート層セキュリティ(TLS)オフロード、ペイロードを処理するためにキュー又はコアを割り当てるための受信サイド・スケーリング(RSS)のうちの1つ以上を実行することができる。LROは、到来するネットワーク・パケットを再構築し、パケットのコンテンツ(ペイロードなど)をより大きなコンテンツに転送し、その結果のより大きなコンテンツを転送するが、ホスト・システム又はVEEによるアクセスのためのパケットはより少なくなる。
【0070】
LSOは、マルチパケット・バッファを生成し、送信用のバッファのコンテンツを提供することを指す可能性がある。ホスト・デバイスは、より大きなTCPメッセージ(又は他のトランスポート層)(例えば、64KBの長さ)を構築することが可能であり、プロセッサ804は、メッセージを、送信用のより小さなデータ・パケットにセグメント化することができる。
【0071】
TLSは少なくともTLS(Transport Layer Security)プロトコル・バージョン1.3,RFC 8446(2018年8月)で定義されている。TLSオフロードは、プロセッサ804内のTLSに従うコンテンツの暗号化又は復号化のオフロードを指す可能性がある。ネットワーク・インターフェース800は、1つ以上のパケットにおける暗号化されたデータの送信に先立って、暗号化のためのデータを受信し、データの暗号化を実行することができる。ネットワーク・インターフェース800は、ホスト・システムへの復号化されたデータの転送前に、パケットを受信し、パケットの内容を復号化することができる。幾つかの実施例では、セキュア・ソケット・レイヤ(SSL)のような任意のタイプの暗号化又は復号化が実行されるが、それに限定されない。
【0072】
幾つかの実施例において、本願で説明されるネットワーク・インターフェース及び他の実施形態は、基地局(例えば、3G、4G、5Gなど)、マクロ基地局(例えば、5Gネットワーク)、ピコ・ステーション(例えば、IEEE 802.11対応のアクセス・ポイント)、ナノ・ステーション(例えば、ポイント・ツー・マルチポイント(PtMP)アプリケーション)、オンプレミス・データ・センター、オフプレミス・データ・センター、エッジ・ネットワーク要素、fogネットワーク要素、及び/又はハイブリッド・データ・センター(例えば、物理データ・センター及び分散マルチ・クラウド環境にわたるアプリケーション・ワークロードを分配するために、仮想化、クラウド、及びソフトウェア定義ネットワーキングを使用するデータ・センター)と接続して使用されることが可能である。
【0073】
ハードウェア要素、ソフトウェア要素、又はそれらの組み合わせを使用して、様々な実施例を実装することができる。幾つかの実施例において、ハードウェア要素は、デバイス、構成要素、プロセッサ、マイクロプロセッサ、回路、回路要素(例えば、トランジスタ、抵抗、キャパシタ、インダクタなど)、集積回路、ASIC、PLD、DSP、FPGA、メモリ・ユニット、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップ・セットなどを含むことができる。幾つかの実施例において、ソフトウェア要素は、
ソフトウェア構成要素、プログラム、アプリケーション、コンピュータ・プログラム、アプリケーション・プログラム、システム・プログラム、マシン・プログラム、オペレーティング・システム・ソフトウェア、ミドルウェア、ファームウェア、ソフトウェア・モジュール、ルーチン、サブルーチン、ファンクション、メソッド、プロシジャ、ソフトウェア・インターフェース、API、命令セット、コンピューティング・コード、コンピュータ・コード、コード・セグメント、コンピュータ・コード・セグメント、ワード、値、シンボル、又はそれらの任意の組み合せを含むことが可能である。実施例がハードウェア要素及び/又はソフトウェア要素を用いて実装するかどうかの決定は、所与の実装のために望まれるように、所望の計算速度、電力レベル、熱耐性、処理サイクル・バジェット、入力データ速度、出力データ速度、メモリ・リソース、データ・バス速度、及びその他の設計又はパフォーマンス制約のような、任意数の要因に従って変化する可能性がある。ハードウェア、ファームウェア、及び/又はソフトウェア要素は、集合的又は個別的に、本願では「モジュール」又は「ロジック」して言及される場合があることに留意されたい。プロセッサは、ハードウェア状態マシン、デジタル制御ロジック、中央処理ユニット、又は任意のハードウェア、ファームウェア、及び/又はソフトウェア要素の1つ以上の組み合わせとすることが可能である。
【0074】
幾つかの実施例は、製造品又は少なくとも1つのコンピュータ読み取り可能な媒体を用いて又はそれらとして実施することができる。コンピュータ読み取り可能な媒体は、ロジックを記憶するための非一時的な記憶媒体を含んでもよい。幾つかの実施例において、非一時的な記憶媒体は、揮発性メモリ又は不揮発性メモリ、リムーバブル又は非リムーバブル・メモリ、消去可能又は非消去可能なメモリ、書き込み可能又は再書き込み可能なメモリなどを含む、電子データを記憶することが可能な1つ以上のタイプのコンピュータ読み取り可能な記憶媒体を含んでもよい。幾つかの実施例において、ロジックは、ソフトウェア構成要素、プログラム、アプリケーション、コンピュータ・プログラム、アプリケーション・プログラム、システム・プログラム、マシン・プログラム、オペレーティング・システム・ソフトウェア、ミドルウェア、ファームウェア、ソフトウェア・モジュール、ルーチン、サブルーチン、ファンクション、メソッド、プロシジャ、ソフトウェア・インターフェース、API、命令セット、コンピューティング・コード、コンピュータ・コード、コード・セグメント、コンピュータ・コード・セグメント、ワード、値、シンボル、又はそれらの任意の組み合せのような種々のソフトウェア要素を含んでもよい。
【0075】
幾つかの実施例によれば、コンピュータ読み取り可能な媒体は、マシン、コンピューティング・デバイス又はシステムによって実行されると、マシン、コンピューティング・デバイス又はシステムに、説明済みの実施例による方法及び/又は動作を実行させる命令を記憶又は維持する非一時的な記憶媒体を含むことが可能である。命令は、ソース・コード、コンパイルされたコード、解釈されたコード、実行可能なコード、静的なコード、動的なコード等のような任意の適切なタイプのコードを含むことが可能である。命令は、所定の機能を実行するようにマシン、コンピューティング・デバイス、又はシステムに指図するために、所定のコンピュータ言語、方法又は構文に従って実装されることが可能である。命令は、任意の適切なハイ・レベル、ロー・レベル、オブジェクト指向、ビジュアル、コンパイル、及び/又は解釈されたプログラミング言語を使用して実装することができる。
【0076】
少なくとも1つの実施例の1つ以上の態様は、少なくとも1つのマシン読み取り可能媒体に記憶された代表命令によって実現することが可能であり、命令は、プロセッサ内の種々のロジックを表現し、マシン、コンピューティング・デバイス、又はシステムにより読み込まれると、マシン、コンピューティング・デバイス、又はシステムが本願で説明される技術を実行することを引き起こす。「IPコア」として知られるこのような表現は、有形のマシン読み取り可能な媒体に記憶され、ロジック又はプロセッサを実際に作成する製造マシンにロードするために、様々な顧客又は製造施設に供給されることが可能である。
【0077】
「一実施例」又は「例」という言い回しの登場は、必ずしも全てが同一の実施例又は実施形態を指すとは限らない。本願で説明される任意の態様は、本願で説明される他の任意の態様又は類似の態様と組み合わせることが可能であり、それらの態様が同一の図面又は要素に関連して説明されているか否かによらない。添付の図面に描かれているブロック機能の分割、省略、又は包含は、これらの機能を実現するためのハードウェア構成要素、回路、ソフトウェア、及び/又は要素が、実施形態の中で必然的に分割、省略、又は包含されるであろうということを暗示していない。
【0078】
幾つかの実施例は、「結合された」及び「接続された」という表現をそれらの派生語とともに使用して説明されるかもしれない。これらの用語は必ずしも互いの同義語として意図されていない。例えば、「接続された」及び/又は「結合された」という用語を使用する説明は、2つ以上の要素が互いに直接的に物理的又は電気的に接触していることを示す可能性がある。しかしながら、「結合された」という用語はまた、2つ以上の要素が互いに直接的に接触してはいないが、それでも互いに協働又は相互作用することを意味する場合がある。
【0079】
本願において、「第1」、「第2」等の用語は、何らかの順序、数量、又は重要度を示してはおらず、むしろ1つの要素を他の要素から区別するために使用される。「ある」(“a” and “an”)という用語は、数量の限定を示してはおらず、むしろ参照されるアイテムのうちの少なくとも1つが存在することを示す。信号に関連して本願で使用される「アサートされる」という用語は、その信号がアクティブであるという信号の状態を示し、状態は論理0又は論理1の何れかの任意の論理レベルを信号に適用することによって達成されることが可能である。「~に続く」又は「~の後」という用語は、何らかの他の事象又は複数の事象の直後又はその後を示すことが可能である。代替的な実施形態に従って、他の一連のステップが実行されてもよい。更に、特定の用途に応じて、追加のステップが追加されてもよいし、又は削除されてもよい。変更の任意の組み合わせを使用することが可能であり、本開示の恩恵を享受する当業者は、その多くの変形、修正、及び代替の実施形態を理解するであろう。
【0080】
「X、Y、又はZのうちの少なくとも1つ」という言い回しのような離接的な語は、特に別意に言及されない限り、用語やアイテム等がX、Y、又はZの何れかであるか、又はそれらの任意の組み合わせであってもよいこと(例えば、X、Y、及び/又はZ)を示す一般的に使用される文脈の中で理解される。従って、このような離接的な語は、一般に、Xのうちの少なくとも1つ、Yのうちの少なくとも1つ、又はZのうちの少なくとも1つがそれぞれ存在することを特定の実施形態が要求していることを示すようには意図されておらず、且つそのようなことを示すはずもない。更に、「X、Y、及びZのうちの少なくとも1つ」という言い回しのような結合的な語は、特に別意に言及されない限り、「X、Y、及び/又はZ」を含めて、X、Y、Z、又はそれらの任意の組み合わせを意味するものと理解されるべきである。
【0081】
本願で開示されるデバイス、システム、及び方法の例示的な例が以下に与えられている。デバイス、システム、及び方法の実施形態は、以下に記載される実施例のうちの任意の1つ以上及び任意の組み合わせを含む可能性がある。
【0082】
本願に示されるようなフロー・ダイアグラムは、様々なプロセス動作のシーケンスの例を提供する。フロー・ダイアグラムは、物理的な動作だけでなく、ソフトウェア又はファームウェア・ルーチンにより実行されるべき動作も示すことが可能である。幾つかの実施形態では、フロー・ダイアグラムは、ハードウェア及び/又はソフトウェアで実装することが可能な有限状態マシン(FSM)の状態を示すことができる。特定のシーケンス又は順序で示されているが、特に言及しない限り、動作の順序は変更することが可能である。従って、説明される実施形態は、一例にすぎないものとして理解されるべきであり、プロセスは、異なる順序で実行することが可能であり、幾つかの動作は、並行して実行することが可能である。更に、1つ以上の動作は、様々な実施形態において省略することが可能であり;従って、すべての動作がすべての実施形態で必要とされるわけではない。他のプロセス・フローが可能である。
【0083】
本願で説明される種々の構成要素は、説明される動作又は機能を実行するための手段であり得る。本願で説明される各構成要素は、ソフトウェア、ハードウェア、又はこれらの組み合わせを含む。構成要素は、ソフトウェア・モジュール、ハードウェア・モジュール、特定用途ハードウェア(例えば、特定用途向けハードウェア、特定用途向け集積回路(ASIC)、デジタル信号プロセッサなど)、内蔵コントローラ、配線回路などとして実装することができる。
【0084】
具体例1は方法を含み、方法は、ネットワーク・インターフェース・カードとプロセッサとの間の周辺デバイス・インターフェースの動作周波数を、トラフィック違反の検出に基づいて変更することを含む。
【0085】
具体例2は任意の具体例を含み、IPパケット・フラグメントの検出に基づいてトラフィック違反を検出することを含み、ネットワーク・インターフェース・カードとプロセッサとの間の周辺デバイス・インターフェースの動作周波数を、トラフィック違反の検出に基づいて変更することは、ネットワーク・インターフェース・カードとプロセッサとの間の周辺デバイス・インターフェースの動作周波数を、トラフィック違反の検出に基づいて減らすことを含む。
【0086】
具体例3は任意の具体例を含み、IPパケット・フラグメントは、不完全なパケットであるIPパケット・フラグメント、小さすぎるIPパケット・フラグメント、過剰なパケットをもたらすIPパケット・フラグメント、又はIPパケット・フラグメント・バッファが一杯であること、のうちの1つ以上を含む。
【0087】
具体例4は任意の具体例を含み、IPパケット・フラグメントの検出に基づいてトラフィック違反を検出することは、
ネットワーク・アプライアンス、ネットワーク・インターフェース・カード、非コア部分、システム・エージェント、オペレーティング・システム、アプリケーション、又はコンピューティング・プラットフォームのうちの1つ以上において、IPパケット・フラグメントの検出に基づいてトラフィック違反を検出することを含む。
【0088】
具体例5は任意の具体例を含み、周辺デバイス・インターフェースは、システム・エージェント、非コア部分、バス、周辺コンポーネント相互接続エクスプレス(PCIe)インターフェース、及びキャッシュのうちの1つ以上を含む。
【0089】
具体例6は任意の具体例を含み、周辺デバイス・インターフェースはシステム・オン・チップ(SoC)の一部であり、SoCは、コア、システム・エージェント、又は非コア部分のうちの1つ以上を含む。
【0090】
具体例7は任意の具体例を含み、プロセッサは、コア、アクセラレータ、又はグラフィックス処理ユニット(GPU)のうちの1つ以上を含む。
【0091】
pは任意の具体例を含み、ネットワーク・インターフェース・カードとプロセッサとの間の周辺デバイス・インターフェースの動作周波数を、トラフィック違反の検出に基づいて変更することは、プロセッサにおけるトラフィック違反を管理すること、又はトラフィック違反を検出していないことのうちの1つ以上に基づいて、周辺デバイス・インターフェースの動作周波数を増やすこと、及びプロセッサ及び周辺デバイス・インターフェースに割り当てられる電力バジェットが、プロセッサの動作周波数を増やすことを許容する場合に、プロセッサの動作周波数を増やすことを含む。
【0092】
具体例9は任意の具体例を含み、ネットワーク・インターフェース・カードとプロセッサとの間の周辺デバイス・インターフェースの動作周波数を、トラフィック違反の検出に基づいて変更することは、コア以外の回路に提供されるクロックの周波数をネットワーク・トラフィックに基づいて変更することを含む。
【0093】
具体例10は任意の具体例を含み、命令を記憶する非一時的なコンピュータ読み取り可能な媒体を含み、命令は、1つ以上のプロセッサにより実行されると、1つ以上のプロセッサに、IPパケット・フラグメントの検出に基づいてトラフィック違反を検出すること、及びネットワーク・インターフェース・カードとプロセッサとの間の周辺デバイス・インターフェースの動作周波数を、トラフィック違反の検出に基づいて減らすことを行わせる。
【0094】
具体例11は任意の具体例を含み、IPパケット・フラグメントは、不完全なパケットであるIPパケット・フラグメント、小さすぎるIPパケット・フラグメント、過剰なパケットをもたらすIPパケット・フラグメント、又はIPパケット・フラグメント・バッファが一杯であること、のうちの1つ以上を含む。
【0095】
具体例12は任意の具体例を含み、そこに記憶される命令を含み、命令は、1つ以上のプロセッサにより実行されると、1つ以上のプロセッサに、ネットワーク・アプライアンス、ネットワーク・インターフェース・カード、非コア部分、システム・エージェント、オペレーティング・システム、アプリケーション、又はコンピューティング・プラットフォームのうちの1つ以上において、IPパケット・フラグメントの検出に基づいてトラフィック違反を検出することを行わせる。
【0096】
具体例13は任意の具体例を含み、周辺デバイス・インターフェースは、システム・エージェント又は非コア部分を含む。
【0097】
具体例14は任意の具体例を含み、周辺デバイス・インターフェースは、バス、周辺コンポーネント相互接続エクスプレス(PCIe)インターフェース、及びキャッシュを含む。
【0098】
具体例15は任意の具体例を含み、プロセッサは、コア、アクセラレータ、又はグラフィックス処理ユニット(GPU)を含む。
【0099】
具体例16は任意の具体例を含み、そこに記憶される命令を含み、命令は、1つ以上のプロセッサにより実行されると、1つ以上のプロセッサに、コアにおけるトラフィック違反を管理すること、又はトラフィック違反を検出していないことのうちの1つ以上に基づいて、周辺デバイス・インターフェースの動作周波数を増やすことを行わせる。
【0100】
具体例17は任意の具体例を含み、そこに記憶される命令を含み、命令は、1つ以上のプロセッサにより実行されると、1つ以上のプロセッサに、周辺デバイス・インターフェース及びプロセッサに対する電力バジェットが、プロセッサの動作周波数を増やすことを許容する場合に、プロセッサの動作周波数を増やすことを行わせる。
【0101】
具体例18は任意の具体例を含み、装置を含み、装置は、少なくとも1つのコアと、ネットワーク・インターフェースからパケットを受信し、受信したパケットをコアによる処理のために提供するように結合されたシステム・エージェントと、システム・エージェントの動作周波数をリクエストに基づいて減らす電力マネジャであって、リクエストはトラフィック違反の検出に基づいている、電力マネジャとを含む。
【0102】
具体例19は任意の具体例を含み、IPパケット・フラグメントの検出に基づいてトラフィック違反を検出するプロセッサを含み、IPパケット・フラグメントは、不完全なパケットであるIPパケット・フラグメント、小さすぎるIPパケット・フラグメント、過剰なパケットをもたらすIPパケット・フラグメント、又はIPパケット・フラグメント・バッファが一杯であること、のうちの1つ以上を含む。
【0103】
具体例20は任意の具体例を含み、コアにおけるトラフィック違反を管理すること、又はトラフィック違反を検出していないことのうちの1つ以上に基づいて、システム・エージェントの動作周波数を増やし、及びシステム・エージェントの動作周波数を増やすことを電力マネジャに要求するプロセッサを含む。
【外国語明細書】