JP2023544780A - プログラマブルトラフィック管理エンジン - Google Patents
プログラマブルトラフィック管理エンジン Download PDFInfo
- Publication number
- JP2023544780A JP2023544780A JP2023521056A JP2023521056A JP2023544780A JP 2023544780 A JP2023544780 A JP 2023544780A JP 2023521056 A JP2023521056 A JP 2023521056A JP 2023521056 A JP2023521056 A JP 2023521056A JP 2023544780 A JP2023544780 A JP 2023544780A
- Authority
- JP
- Japan
- Prior art keywords
- programmable
- component
- programmable hardware
- hardware component
- algorithm
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 69
- 238000007618 network scheduling algorithm Methods 0.000 claims description 33
- 238000000034 method Methods 0.000 claims description 21
- 241001522296 Erithacus rubecula Species 0.000 claims description 17
- 238000012545 processing Methods 0.000 claims description 10
- 230000006855 networking Effects 0.000 claims 2
- 238000010586 diagram Methods 0.000 abstract description 13
- 238000004590 computer program Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 230000008901 benefit Effects 0.000 description 7
- 230000006735 deficit Effects 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000007493 shaping process Methods 0.000 description 3
- 239000000872 buffer Substances 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 102100026413 Branched-chain-amino-acid aminotransferase, mitochondrial Human genes 0.000 description 1
- 101000935638 Homo sapiens Basal cell adhesion molecule Proteins 0.000 description 1
- 101000766294 Homo sapiens Branched-chain-amino-acid aminotransferase, mitochondrial Proteins 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/20—Network management software packages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/04—Processing captured monitoring data, e.g. for logfile generation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/215—Flow control; Congestion control using token-bucket
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/22—Traffic shaping
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/622—Queue service order
- H04L47/623—Weighted service order
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本明細書の実施例は、プログラマブルハードウェアコンポーネント及び非プログラマブルハードウェアコンポーネントの両方を含むプログラマブルトラフィック管理エンジンを説明する。非プログラマブルハードウェアコンポーネントは、特徴を生成するために使用され、特徴は、次いで、異なるトラフィック管理アルゴリズムを実施するために使用することができる。PTMエンジンがどのトラフィック管理アルゴリズムを実施するように構成されているかに応じて、PTMエンジンは、特徴のサブセット(又は全て)を使用して、アルゴリズムを実行し得る。PTMエンジン内のプログラマブルハードウェアコンポーネントは、非プログラマブルハードウェアコンポーネントによって提供される特徴のいくつか又は全部を使用して、選択されたアルゴリズムを実施するように、ユーザによってプログラム可能(例えば、カスタマイズ可能)である。
【選択図】図2
【選択図】図2
Description
本開示の実施例は、概して、異なるトラフィック管理サービス(例えば、パケットスケジューリング、シェーピング、及びポリシング)を実施するようにプログラムすることができるハードウェアコンポーネントを含むプログラマブルトラフィック管理エンジンに関する。
データセンタは、何千ものサーバを含むインフラストラクチャを提供し、ウェブサービス、ウェブインデックス付け、バッチ分析、ストレージサービス、機械学習アプリケーション、ビデオストリーミング、及び金融サービスなどの多種多様なサービスを運営する多くの同時テナントに対応する。これらのアプリケーション又はサービスは、通常、異なる特性及びスループット/レイテンシ要件を有する。サービス品質(quality of service、QoS)を提供し、リソースを公平に共有し、ネットワーク利用を改善するために、データセンタは、パケットスケジューリング、シェーピング、及びポリシングなどのトラフィック管理サービスを要求して、テナント用のネットワークリソースを調整する。
しかしながら、これらのトラフィック管理サービスは、現在、サーバ内の中央処理装置(central processing unit、CPU)上で実行されるソフトウェアアプリケーションによって提供されており、これは、高いCPU使用率を招き、他のタスクのために利用可能なCPU処理能力を低下させる。これは、特に高速回線速度(40Gbps~100Gbps)クラウドアーキテクチャの場合、データセンタサービスを運営するコストを増加させ、公平性、トラフィックレイテンシ、及びスループットに関してQoSを低下させる。これらのトラフィック管理サービスのうちのいくつかをハードウェアで実施することは、CPUの負担を軽減するが、現在の既製の高速ネットワークインターフェースカード(network interface card、NIC)は、いかなるトラフィック管理サービスも実施しない。回線速度スイッチは、いくつかのトラフィック管理サービスをサポートするが、それらは典型的には、不足ラウンドロビン、及び特定用途向け集積回路(application specific integrated circuit、ASIC)への絶対優先を含むスケジューリングアルゴリズムの非常に限られた組合せを提供する。回線速度スイッチは、ネットワークオペレータが、それらのスイッチに提供される既存のアルゴリズムを修正及び置換することができないため、プログラマブル性及びカスタマイゼーションを欠いている。
プログラマブルトラフィック管理(programmable traffic management、PTM)エンジンを実装するための技法が説明される。一例は、ネットワークスケジューリングアルゴリズムを実行するための入力として使用するための所定数の特徴を生成するように構成された非プログラマブルハードウェアコンポーネントと、異なるタイプのネットワークスケジューリングアルゴリズムを実行するように構成されたプログラマブルハードウェアコンポーネントと、を含むチップ内に配置された集積回路であり、動作中、プログラマブルハードウェアコンポーネントは、非プログラマブルハードウェアコンポーネントによって提供される所定数の特徴のうちの少なくとも1つを使用してネットワークスケジューリングアルゴリズムを実行するように構成されており、集積回路は完全にチップ内に配置されている。
本明細書で説明される一例は、非プログラマブルハードウェアコンポーネント及びプログラマブルハードウェアコンポーネントを備えるPTMエンジンによって実施されるネットワークスケジューリングアルゴリズムを提供することと、ネットワークスケジューリングアルゴリズムへの入力として使用される特徴を識別することと、プログラマブルハードウェアコンポーネントに特徴を提供するように非プログラマブルハードウェアコンポーネントを構成することと、特徴を使用してネットワークスケジューリングアルゴリズムを実行するようにプログラマブルハードウェアコンポーネントを構成することと、を含む方法である。
上記の特徴が詳細に理解され得るように、上記で簡単に要約されたより具体的な説明が、例示的な実装形態を参照することによって行われ得、それらの実装形態のうちのいくつかが添付の図面に例解される。しかしながら、添付の図面は、典型的な例示的な実装形態のみを例解しており、したがって、その範囲を限定するものと見なされるべきではないことに留意されたい。
一例による、プログラマブルトラフィック管理エンジンを有する通信システムのブロック図である。
一例による、プログラマブルトラフィック管理エンジンを例解する。
一例による、プログラマブルトラフィック管理エンジン内のパケット分類器を例解する。
一例による、プログラマブルトラフィック管理エンジン内のキューマネージャを例解する。
例による、プログラマブルトラフィック管理エンジン内のキューディスパッチャを例解する。
一例による、プログラマブルトラフィック管理エンジン内のシェーパを例解する。
一例による、プログラマブルトラフィック管理エンジンによって生成される特徴によってサポートすることができる例示的なディスパッチ時間アルゴリズムの表である。
一例による、プログラマブルトラフィック管理エンジンによって生成される特徴によってサポートすることができる例示的なラウンドロビンアルゴリズムの表である。
一例による、PTMエンジンにおいてDTアルゴリズム又はRRアルゴリズムをプログラム又は置換するためのフローチャートである。
一例による、PTMエンジンを構成するためのフローチャートである。
理解を容易にするために、可能な場合には、図面に共通する同一の要素を示すために同一の参照番号が使用されている。一例の要素は、他の例に有益に組み込まれ得ることが企図される。
様々な特徴が、図面を参照して以下に説明される。図面は縮尺通りに描かれている場合もあり、又は描かれていない場合もあり、同様の構造又は機能の要素は図面全体を通して同様の参照番号によって表されていることに留意されたい。図面は、特徴の説明を容易にすることのみを意図していることに留意されたい。それらは、網羅的な説明として、又は特許請求の範囲に対する限定として意図されていない。更に、例解された例は、示された全ての態様又は利点を有する必要はない。特定の例に関連して説明される態様又は利点は、必ずしもその例に限定されず、そのように例解されていない場合、又はそのように明示的に説明されていない場合であっても、任意の他の例において行うことができる。
本明細書の説明は、上記の課題に対処するための高速回線速度アーキテクチャのためのプログラマブルトラフィック管理(PTM)エンジンを説明する。PTMエンジンの利点は、少なくとも2要素:(i)NIC(smartNICを含む)、スイッチ、及びミドルボックスなどの高速回線速度プログラマブルプラットフォーム上で容易に展開することができる柔軟なトラフィック管理オフローディングフレームワークを提供することと、(ii)PTMエンジンは、パケットスケジューリングアルゴリズムを抽象化し、開発者が、提案されたトラフィック管理アーキテクチャにおいてC/C++又はVerilog/VHDLを使用したレジスタ転送レベル(register transfer level、RTL)設計などの高レベル仕様を有するアルゴリズムをプログラム及びカスタマイズすることを可能にすることと、である。PTMエンジンは、ハードウェア上のカスタマイズされたトラフィック管理の開発を単純化し、開発者は、カスタマイズされたネットワークスケジューリングアルゴリズムを設計することにより集中することができる。
一実施形態では、PTMエンジンは、プログラマブルハードウェアコンポーネント及び非プログラマブルハードウェアコンポーネントの両方を含む。非プログラマブル(又は共有)ハードウェアコンポーネントは、出発時間(departure time、DT)アルゴリズム及びラウンドロビン(round robin、RR)アルゴリズムなどの異なるトラフィック管理アルゴリズムを実施するために使用することができる所定数の特徴を生成するために使用される。PTMエンジンがどのトラフィック管理アルゴリズムを実行するように構成されているかに応じて、PTMエンジンは、特徴のサブセット(又は全て)を使用して、アルゴリズムを実施し得る。
PTMエンジン内のプログラマブルハードウェアコンポーネントは、非プログラマブルハードウェアコンポーネントによって提供される特徴のいくつか又は全部を使用して、選択されたアルゴリズムを実施するように、ユーザによってプログラム可能(例えば、カスタマイズ可能)である。プログラマブルハードウェアコンポーネントは、所望のアルゴリズムを実施するために、C/C++又はRTLを使用してユーザによってプログラムすることができるプログラマブルロジック又は領域特化型エンジンを含み得る。このようにして、ユーザは、アルゴリズムが、提供される特徴に依存する限り、任意の既知の又は将来のネットワークトラフィックアルゴリズムを実施するように、PTMエンジンを選択し、変更し、カスタマイズすることができる。PTMエンジンは、サービスを完全にハードウェアで実施するという利点を有する純粋なソフトウェアトラフィック管理サービスの柔軟性を有し、それによってサーバ内のCPUの負担を軽減する。
図1は、一例による、PTMエンジン135を有する通信システム100のブロック図である。通信システム100は、ネットワーク180(例えば、インターネット又はローカルエリアネットワーク(local area network、LAN))に接続されたホスト105(例えば、スタンドアロンサーバ、ブレードサーバ、ラップトップなどのコンピューティングシステム)を含む。ホスト105は、プロセッサ110、メモリ115、及びNIC125を含む。プロセッサ110は、任意の数の処理コアを有する任意の数の処理要素(例えば、CPU)を表す。メモリ115(ホストメモリとも称される)は、揮発性及び不揮発性メモリ要素を含むことができる。この例では、メモリ115は、ユーザが、PTMエンジン135を構成することを可能にするPTMドライバ120(例えば、プロセッサ110上で実行されるソフトウェアアプリケーション)を記憶している。例えば、C/C++、python、又はP4を使用して、PTMドライバ120は、ユーザが、マッチングテーブル315にアクセスし、実装されたDTアルゴリズムとRRアルゴリズムとの間で切り替え、PTMエンジン135内の量子及びタイムアウトなどのパラメータを更新することを可能にする。PTMエンジン135をプログラミングするための詳細は、以下で詳細に説明される。
NIC125は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(field programmable gate array、FPGA)、又は強化回路、プログラマブルロジック、若しくはこれらの組み合わせを含むシステムオンチップ(system on a chip、SoC)であり得る集積回路(IC)130を含む。更に、IC130は、NIC125内にあるものとして示されているが、他の実施形態では、ICは、NIC125の外部にあり得、プロセッサ110/メモリ115とNIC125との間のインターフェースとして機能し得る。更に、IC130(及びその中に具体化されたPTMエンジン135)がホスト105内にあるのではなく、IC130は、スイッチ及びミドルボックス内で使用され得る。
IC130は、PTMエンジン135が、非プログラマブルハードウェアコンポーネント140及びプログラマブルハードウェアコンポーネント165を含むことを例解する。非プログラマブルハードウェアコンポーネント140は、PTMエンジン135によって実装され得る全てのネットワークスケジュールアルゴリズムによって共有される。言い換えれば、非プログラマブルハードウェアコンポーネント140は、PTMエンジン135が実施するように現在プログラムされている特定のネットワークスケジューリングアルゴリズムにかかわらず使用される。したがって、PTMエンジン135が、異なるネットワークスケジューリングアルゴリズムを実施するようにプログラムされている場合、非プログラマブルハードウェアコンポーネントが再使用される。しかしながら、以下で説明するように、非プログラマブルハードウェアコンポーネント140によって提供される特徴のいくつかは、特定のアルゴリズムによって使用されない場合がある。すなわち、選択されたアルゴリズムは、非プログラマブルハードウェアコンポーネント140によって提供される特徴のサブセットのみを必要とし得る。
この例では、非プログラマブルハードウェアコンポーネント140は、IC130内の回路内に実装されたパケット分類器145、キューマネージャ150、キューディスパッチャ155、及びシェーパ160を含む。コンポーネントの詳細は、以下の図面においてより詳細に説明される。
プログラマブルハードウェアコンポーネント165は、IC130、及びPTMドライバ120を使用して構成可能なPTMエンジン135内の回路を含む。この例では、プログラマブルハードウェアコンポーネント165は、2つの異なるタイプのネットワークスケジューリングアルゴリズム:DTモジュール170を使用するDTアルゴリズム、及びRRモジュール175を使用するRRアルゴリズムを実装するためのコンポーネントを有する。例えば、DTモジュール170及びRRモジュール175は、プログラマブルロジック(例えば、FPGA又はSoCの一部として)又は領域特化型エンジン(例えば、ASICの一部として)を使用して実装され得る。いずれの場合も、DTモジュール170又はRRモジュール175は、非プログラマブルハードウェアコンポーネント140によって提供される特徴を活用して、所望のネットワークスケジューリングアルゴリズムを実施する。DTモジュール又はRRモジュールの選択は、PTMドライバ120を介して構成される。本開示は、DT及びRRアルゴリズムのためのプログラマブルモジュールを説明するが、他のタイプのネットワークスケジューリングアルゴリズムのための他のタイプのモジュールも可能である。
図2は、一例による、図1で紹介されたPTMエンジン135の詳細バージョンを例解する。上述したように、PTMエンジン135は、異なるネットワークスケジューリングアルゴリズムにわたってPTMエンジンの共通(共有)かつ再利用可能な部分である非プログラマブルハードウェアコンポーネントを有する一方、プログラマブルハードウェアコンポーネントは、設計者によって選択されたネットワークスケジューリングアルゴリズムを実施するようにプログラム可能である。
非プログラマブルハードウェアコンポーネント(PTMエンジン135のシェルとも称される)は、キーとして所与のネットワークパケットのフローIDを抽出し、キーに関連付けられた重み及びレートをルックアップするために使用されるパケット分類器145と、キューリソースの利用可能性及びアクティブキューの集約された重みを追跡するキューマネージャ150と、パケット及びメタデータをバッファリングし、各フローの送信順序を決定するキューディスパッチャ155と、帯域幅スロットリングのために各フローの送信レートを制御するシェーパ160と、を含む。
一実施形態では、これらの非プログラマブルハードウェアコンポーネントとプログラマブルハードウェアコンポーネント(例えば、DTモジュール170及びRRモジュール175)との間のインターフェースは固定されている。重み付き公平キューイング及び絶対優先などのDTに関連するトラフィックスケジューリングアルゴリズムは、DTモジュール170において実装される一方、不足ラウンドロビン及び重み付けされたラウンドロビンアルゴリズムなどのRRアルゴリズム及びそれらの変形は、RRモジュール175によって実施される。PTMエンジン135はまた、PTMエンジン135内のコンポーネントを構成するためにPTMドライバ120によって使用される制御プレーン205とインターフェースする。この構成は、ホストからローカルに、又はリモートプロシージャコール(remote procedure call、RPC)、P4Runtime、シンプルネットワーク管理プロトコル(simple network management protocol、SNMP)などの通信プロトコルを介して、暗号化/非暗号化チャネル上で外部サーバからリモートに行うことができる。PTMエンジン135のアーキテクチャは、DTモジュール170及びRRモジュール175における高レベル記述又は低レベル記述のいずれかを用いて様々なネットワークスケジューリングアルゴリズムをカスタマイズ及びプログラムするための柔軟性を設計者に提供する。
パケットがPTMに到着すると、パケット分類器(PC)モジュールは、構文解析を介してパケットのキーとしてフローID(fid)を導出する。導出されたキーを用いてその事前構成されたフローテーブルを検索することによって、パケット分類器145は、要求の重み及びレートを含む対応するテーブル値を提供する。フローテーブルは、制御プレーン205によってローカル又はリモートに構成することができるマッピングのセット(fid-><重み、レート>)を含む。パケット分類器145はまた、パケットの長さを計算し、キューマネージャ150への出力として<fid、重み、レート、パケット長>を含む制御データ(すなわち、メタデータ)を構築する。
キューマネージャ150は、パケット分類器145から受信したfidが既存のレコード<fid、qid>と一致するかどうかをチェックし、ここで、qidは、受信されたパケットのネットワークフローに割り当てられた一意のキューIDである。一致するレコードがない場合、これは、フローが新しいエントリであることを示し、このフローの新しいqidが割り当てられ、マッピング<fid、qid>がキューマネージャ150に登録される。加えて、キューマネージャ150は、新たに割り当てられた各キューの重みを更新し、アクティブキューの集約された重みを追跡し得る。ある期間キューに到着するパケットがないとき(すなわち、フローが非アクティブになるとき)、そのフローに割り当てられた対応するqidが請求され、qid(及び対応するキュー)を異なるフローに割り当てることができる。DTモジュール170の入力データは、パケットのDTを計算するためにキューマネージャ150において構築される。キューマネージャ150は、更なる処理のためにキューディスパッチャ155に提供される制御データ及びメタデータを生成する。
パケットデータ及びそのメタデータは、キューディスパッチャ155のパケットキュー及びメタデータキューにそれぞれ記憶される。キューディスパッチャ155は、(利用可能なキューリソースがないために)割り当てられたqidがない場合、又は割り振られたキューがフルである場合、パケット及びそのメタデータをドロップし得る。図2に示される例では、このモジュールにおいてサポートされる2つのディスパッチングモード:ユーザ又は開発者によって構成することができるDTモード及びRRモードがある。DTモードでは、キューディスパッチャ155は、最小DT値を有するqidを出力する一方、RRモードでは、各非空キューのqidを循環順序で送信する。キューディスパッチャ155は、フローのパケット長及びレートとともに出力qidを伝送し、制御データを形成し、レート制御のためにシェーパ160にメタデータを伝送する。
シェーパ160におけるトラフィック規制は、トークンバケットに基づく。トークンサイズは、キューディスパッチャ155によって提供されるメタデータから抽出された所与のレートで増加される。一実施形態において、シェーパ160は、そのパケット長がそのトークンサイズ未満である場合にのみパケットを送出する。
図3~図6は、図2で紹介されたパケット分類器145、キューマネージャ150、キューディスパッチャ155、及びシェーパ160に関する詳細な説明を提供する。
図3は、一例による、PTMエンジン内のパケット分類器145を例解する。パケット分類器145は、パケットをフローに分類し、各フローの要求の重み及びレートなどの構成データを取得するために使用される。パケット分類器145は、構文解析モジュール305と、テーブル315を含むマッチングモジュール310とを含む。テーブル315は、ハッシング、トライベースの方法、バイナリ/ターナリコンテントアドレッサブルメモリ(binary/ternary content addressable memory、BCAM/TCAM)、及び他のフロー/トラフィック分類方法を用いて設計することができる。パケット分類器145は、P4、C/C++などを使用する高水準合成ツール、又はVerilog/VHDLを使用するRTLを用いて設計することができる。
パケットがパケット分類器145に到着すると、構文解析モジュール305は、パケットから情報を抽出して、テーブル315を検索するためのキーとして使用されるfidを構築する。fid(又はキー)は、ソース/宛先IPアドレス、IP番号、ソース/宛先ポート、及びペイロードなどのパケット内の任意のデータによって構築することができる。導出されたfid/キーを用いて、マッチングモジュール310は、fid/キーに対応するテーブル項目値に記憶された重み及びレートについてテーブル315を調べる。一実施形態では、重みは、パケットの対応するフローの優先度を定義する一方、レートは、フローの出力(送信又は受信)レートを決定するために使用される。fidが一致しない場合、マッチングモジュール310はデフォルト値を使用し得る。すなわち、ユーザは、PTMエンジンによって処理され得るフロー(他のフローとは異なるように扱いたい)のサブセットのみに対する重み及びレートを有するようにテーブルを構成し得る。テーブル内のエントリと一致しないパケットが受信された場合、そのパケットにはデフォルト重み及びレート値が割り当てられる。
重み及びレートの両方は、テーブル315内のエントリを追加するために、config_tbインターフェース及び制御プレーン(図示せず)を介してユーザによって構成される。config_tbインターフェースは、例えば、AXI-Lite(Advanced eXtensible Interface-Lite)インターフェースを用いて実装することができる。
各パケットについての重み及びレートを識別することに加えて、パケット分類器145は、各パケットのパケット長(pktlen)を計算し、制御データ(すなわち、
図4は、一例による、PTMエンジン内のキューマネージャ150を例解する。キューマネージャ150は、キューリソースの利用可能性及びアクティブキューの集約された重みを追跡し、重みマネージャモジュール405及びキューマネージャモジュール425を含む。キューマネージャモジュール425は、新しいフローに一意のqidを割り当て、期限切れ/非アクティブフローに割り当てられたqidを請求することによってキューリソースを維持する。重みマネージャ405は、各アクティブキューの重みを累積し、各キューの重みを記録する。キューマネージャモジュール425は、PTMエンジンが、物理キューリソースよりもはるかに多くのいくつかのフローをサポートすることを可能にする。すなわち、可能なフローのサブセットのみが、所与の時間ウィンドウにおいてPTMエンジンにパケットをアクティブに送信している可能性がある。これらのアクティブなフローは、qidを割り当てることができる一方、アクティブにパケットを生成していないフローはそうではない。キューマネージャモジュール425は、以前のアクティブなフローが、現在、非アクティブになったか、又は期限切れになった(例えば、PTMエンジンが、所定の期間の間、フローに対応するパケットを受信しなかった)ときを判定するために、フローを、絶えず、又は間隔を置いて評価することができる。次いで、キューマネージャモジュール425は、qidを異なるフローに再割り当てすることができる。このようにして、フローにサービスを提供するために使用されるキューの数を減らすことができる。
キューマネージャ150はまた、接続されたモジュールにおける出発時間(DT)を計算するために使用され得る、システム全体の仮想時間(virtual time、VT)を記録するためのタイマカウンタを有する。
キューマネージャモジュール425は、3つのコンポーネント:キューアロケータ435、アイドルプール430、及びpre_DTキュー440を含む。パケット分類器から制御データ(
pre_DTキュー440は、DTモジュール(図4には図示せず)から計算された各アクティブキュー内の先頭要素のDTを記憶するために使用される。pre_DTキュー440は、通信のためにDTモジュールへの要求/更新インターフェースを提供する。このインターフェースは、ランダムアクセスメモリ(random access memory、RAM)読取り/書込みインターフェースを用いて実装することができる。
重みマネージャモジュール405は、3つのコンポーネント:重みキュー410、重みコントローラ415、及び重みアキュムレータ420から構成される。重みキュー410は、各アクティブキュー、すなわち、そのqidがフローに割り当てられたキューの重みを記録する。他のコンポーネントからqid及び重みを取得するとき、重みコントローラ415は、最初に、読取り要求を送ることによって、重みキュー410がキューのためのデータを有するかどうかをチェックし得る。重みキュー410にレコードが存在し、戻されたデータが、キューマネージャモジュール425から受け取った重みと一致しない場合、重みコントローラ415は、書き込み要求を発行して、重みキュー410を更新し、重みアキュムレータ420をアクティブ化して、全てのアクティブなキューの集約された重みを再計算する。集約された重みは、DTモジュールにおいて使用される。
DTモジュールと通信するために、キューマネージャ150は、DT_role_inインターフェース、DT_role_outインターフェース、及びメモリアクセス(pre_DT)インターフェースを提供する。一実施形態では、DT_role_inインターフェース及びDT_role_outインターフェースは、<qid、pktlen、VT、DT、重み、weight_sum、new_flow、qids_all_occupied>を含む同じデータ構造を有し、new_flowは、フローが新しいエントリであることを示し、qids_all_occupiedは、キューリソースが利用可能でないことを示すフラグである。
キューマネージャ150は、制御データ(すなわち
図5は、例による、PTMエンジン内のキューディスパッチャ155を例解する。キューディスパッチャ155は、異なるフローに属するパケットの送信順序を決定し、3つのコンポーネント:メタデータキュー505、パケットキュー515、及びDTコンパレータ510から構成される。キューマネージャ150から受信したパケットデータ及び制御データ(
図5のキューディスパッチャ155は、2つのディスパッチングモード:DTモード及びRRモードをサポートするためのハードウェアを含む。開発者は、制御インターフェースconfig_rrを使用して、これらのモードのうちのどれが現在アクティブであるかを選択することができる。一実施形態では、これらのモード(及び対応するDT/RRモジュール)のうちの1つだけが、任意の所与の時間にPTMエンジンにおいてアクティブである。DTモードでは、キューディスパッチャ155は,最小DT値を有するqidを出力する一方、RRモードでは、キューディスパッチャ155は、各非空キューのqidを循環順序で送信する。シェーパへのキューディスパッチャ155の制御出力(すなわち、
DTモードで動作するとき、メタデータキュー505は、全ての非空キューの先頭メタデータ要素(dtstop)を選んで、最小DT値を有するqidを取得するようにDTコンパレータ510に命令する。図6で説明したように、最小DT値を有するパケットの
RRモードで動作するとき、非空キューのqidは、RRモジュール175において実施されるラウンドロビンスケジューリングアルゴリズムに従って循環順序で選択される。キューディスパッチャ155の残りの動作は、DTモードで動作しているときと同じである。
RRモジュール175と通信するために、キューディスパッチャ155は、RR_role_inインターフェース及びRR_role_outインターフェースを提供する。RR_role_inインターフェースは、VLD、qid、重み、pktlen、及びレートを含む一方、RR_role_outインターフェースは、qid、pktlen、及びレートを含む。制御インターフェースconfig_rrは、config_qtiを用いてDT/RRモード及びキューの量子値を構成する。この制御インターフェースは、AXI-Liteインターフェースを用いて実装することができる。量子値は、不足ラウンドロビン及び不足重み付けラウンドロビンなど、RRモジュール175における様々なRRスケジューリングアルゴリズムを開発するために活用することができる。
図6は、一例による、PTMエンジン内のシェーパ160を例解する。シェーパ160は、帯域幅スロットリングのための各フローの送信レートを制御し、rdy_FIFO605、トークンバケット615(すなわち、トークンバケットクラスタ)、及びアービタ620を含む。rdy_FIFO605は、キューディスパッチャ155から受信したメタデータをバッファリングする。rdy_FIFO605におけるデータの受信順序は、DTモジュール又はRRモジュールにおけるパケットスケジューリングアルゴリズムの結果を示す。示されるように、qidは、トークンバケット615のうちのどれが、FIFO605によって出力されている対応するパケットのpktlen及びレートを受信すべきかを選択するために、マルチプレクサ(mux)610のための選択信号として使用される。
一実施形態では、トークンバケット615の各々は、図5のパケットキュー515のうちの1つに対応する。トークンバケット615は、フローのパケットデータを調整して、ネットワークポリシング及びシェーピングを実施する。トークンは、異なる回線速度システムのデータバスの幅に依存するバイトの単位を表す。各トークンバケット615の深さは、記憶することができるトークンの最大数を示す一方、サイズは、バケット615内の現在利用可能なトークンを示す。一実施形態では、トークンは、固定レートでバケット615に追加され、固定レートは、ユーザによってパケット分類器に設定され得る。
データを受信したトークンバケット615は、rdy_FIFO605からmux610を介して先頭要素<pktlen’、qid’、レート’>を取得すると、まず、レート’が現在のレート設定、レートqid’に等しいか否かをチェックする。2つのレートが同じ値を有する場合、これは、パケットが以前に構成された古いフローに属することを示す。pktlen’が利用可能なトークンサイズ、サイズqid’より小さい場合、対応するトークンバケット615は、qid’をアービタ620に解放する。別の言い方をすれば、トークンバケット615は、パケットの長さよりも多くのトークンをそのバケット内に有する。そうでない場合、トークンバケット615は、pktlen’がサイズqid’未満になるまでqid’をブロックする。すなわち、トークンバケット615は、より多くのトークンが所定のレートに従って追加されるまで待機する。バケット615がパケット長よりも多くのトークンを有すると、qid’がアービタ620に転送される。
レート’がレートqid’と異なる場合、トークンバケット615は、そのレートをレート’で置き換え、サイズqid’を0にリセットする。いくつかのトークンバケット615が同時にqidをアービタ620に解放することができるため、異なるフローのパケットが同じデータバスを共有するので、これは輻輳につながる。この輻輳問題を解決するために、レディステータスを有する全てのqidがアービタ620内にバッファリングされる。複数のqidが受信された場合、アービタ620は、伝送のためにqid(及び対応するパケット)のうちの1つを選択する。一実施形態では、アービタ620は、循環順序でqidを選択し、図5のキューディスパッチャ155内のどのパケットキュー515がパケットを伝送することができるかを示すpopqid信号を生成する。すなわち、シェーパ160は、popqid信号をキューディスパッチャ155に送信し、共有データバスを使用して、どのパケットキュー515が伝送されるべきかを知る。
一実施形態では、フローに割り当てられたトークンバケット615が、所定の期間アイドル状態のままである場合、その利用可能なトークンサイズは、ユーザによって設定されたトークンタイムアウトに従ってリセットすることができる。トークンタイムアウト値は、AXI-Liteインターフェースを用いて実装することができる制御インターフェースconfig_spを介して構成することができる。
上述したように、PTMエンジンは、ネットワークスケジューリングアルゴリズムをカスタマイズするために開発者の役割を確保する。図2のDTモジュール170及びRRモジュール175は、(例えば、CIC++などの高レベル仕様を有するHLSを使用して、又はVerilog/VHDLを有するRTLを使用して)FPGA上で設計することができ、又はRISC(Reduced-Instruction-Set-Computer、縮小命令セットコンピュータ)コアなどのコプロセッサとインターフェースすることができる。DTモジュール170は、各パケット/フローの出発時間又は優先度を計算するために必要なアルゴリズムを開発するために使用することができる一方、RRモジュール175は、出発時間に関連しない多くのラウンドロビン変形を設計するために利用することができる。DTモジュール170及びRRモジュール175を活用して、開発者は、時間のかかるシステム統合の代わりに、ネットワークスケジューリングアルゴリズムを開発することに集中することができる。
両方のDTベース及びRRベースのアルゴリズムは、アルゴリズムへの入力である特徴のセットの関数として抽象化及び定義することができる。図7は、一例による、PTMエンジンによって生成される特徴によってサポートすることができる例示的なDTアルゴリズムの表である。表700内の特徴は、キューID(qid)、パケット長(pklen)、仮想時間(VT)、前回の出発時間(pre_DT)、重み、及び集約された重み(weight_sum)を含む。それらの特徴を用いて、開発者は、表700に列挙されるアルゴリズムを含むが、それに限定されない、DT関連アルゴリズムの大きなセットを設計及び実装することができる。PTMエンジンのプログラマビリティ及びカスタマイゼーションをサポートするために、DTモジュール170のインターフェースは、qid、pktlen、VT、DT、重み、weight_sum、new_flow、及びqids_all_occupiedを受信することができる。DTモジュール170はまた、フローのパケットの計算された出発時間を記録するために、図4のpre_DTキュー440と通信することもできる。DTモジュール170のためのインターフェースは、RAM読取り/書込みインターフェースを用いて実装され得る。
図8は、一例による、PTMエンジンによって生成される特徴によってサポートすることができる例示的なラウンドロビンアルゴリズムの表800である。表800は、3つの代表的なRR関連アルゴリズムの必要な特徴(又は入力)を示す。特徴は、qid、重み、pktlen、及び量子を含む。これらの特徴を利用して、ラウンドロビン(RR)、重み付けラウンドロビン(Weighted Round Robin、WRR)、不足ラウンドロビン(Deficit Round Robin、DRR)、優先度付き不足ラウンドロビン(Deficit Round Robin with priority、DRR+及びDRR++)、及び修正不足ラウンドロビン(Modified Deficit Round Robin、MDRR)を含むがこれらに限定されない多くのラウンドロビンアルゴリズム変形を表現することができる。
様々なラウンドロビンアルゴリズムをサポートし、PTMにおけるカスタマイゼーションを提供するために、図2のRRモジュール175のインターフェースは、表800に列挙された特徴を受信又は生成することができる。RRモジュール175のインターフェースは、qid、pktlen、及びレートを出力しながら、vld、qid、重み、pktlen、及びレートを入力として受信することができる。vld信号は、新しいパケットが来るたびにハイにアサートされ得る。
図9は、一例による、PTMエンジンにおいてDTアルゴリズム又はRRアルゴリズムをプログラム又は置換するための方法900のフローチャートである。ブロック905において、ユーザは、PTMエンジンにおいて実装するためのネットワークスケジューリングアルゴリズムを定義する。例えば、ユーザは、アルゴリズムを定義するために、HLSツール又はRTLを有する高レベルプログラミング言語(例えば、C/C++)を使用し得る。
上述したように、アルゴリズムは、DTタイプのアルゴリズム又はRRタイプのアルゴリズムであり得る。しかしながら、実施形態は、これらのタイプのアルゴリズムに限定されない。他のタイプのアルゴリズムもPTMエンジンによってサポートすることができ、これは、PTMエンジンが(DTモジュール及びRRモジュールに加えて、又はその代わりに)追加のプログラマブルコンポーネントを有することができることを意味し得る。
ブロック910において、開発者は、ネットワークスケジューリングアルゴリズムによって使用される特徴を識別する。図7及び8に示されるように、DT及びRRベースのアルゴリズムのいくつかは、非プログラマブルハードウェアコンポーネント(例えば、パケット分類器、キューマネージャ、キューディスパッチャ、及びシェーパ)によって提供される特徴のサブセットのみを使用する一方、他のアルゴリズムは、全ての特徴を使用する。例えば、図7では、先入れ先出しDTアルゴリズムは、qid及びVTのみを入力として使用する一方、重み付き公平キューイングDTアルゴリズムは、全ての特徴を入力として使用する。
アルゴリズムを定義するとき、開発者は、どの特徴が入力として必要とされ、PTMエンジンによって提供されるどの特徴が必要とされないかを規定し得る。
ブロック915において、開発者は、識別された特徴をPTMエンジン内のプログラマブルハードウェアコンポーネント(又は複数のコンポーネント)に提供するように、非プログラマブルハードウェアコンポーネントを構成する。一実施形態では、開発者は、PTMドライバ120を介して制御プレーン205を使用して、非プログラマブルハードウェアコンポーネントを構成する。例えば、アルゴリズムがRRベースのアルゴリズムである場合、開発者は、識別された特徴をPTMエンジン内のRRモジュールに提供するように、非プログラマブルハードウェアコンポーネントを構成し得る。逆に、アルゴリズムがDTアルゴリズムである場合、開発者は、識別された特徴をPTMエンジン内のDTモジュールに提供するように、非プログラマブルハードウェアコンポーネントを構成する。
ブロック920で、開発者は、識別された特徴を使用してアルゴリズムを実行するように、プログラマブルハードウェアコンポーネントを構成する。すなわち、非プログラマブルハードウェアコンポーネントによって提供される特徴を使用して、開発者は、特徴を入力として使用してアルゴリズムを実行するように、プログラマブルコンポーネント(例えば、DTモジュール又はRRモジュール)を構成する。一実施形態では、(選択されたネットワークスケジューリングアルゴリズムのタイプに応じて)PTMエンジンが動作している所与の時間に、DTモジュール又はRRモジュールのうちの一方のみがアクティブである一方、他方は非アクティブ又は使用されない。上述したように、これらのモジュールは、プログラマブルロジック又は領域特化型エンジンを使用して実装し得る。構成されると、PTMエンジンは、次いで、上記の図2~6で説明したように実行することができる。
図10は、一例による、PTMエンジンを構成するための方法1000のフローチャートである。ブロック1005において、PTMドライバは、ネットワークフローの所望の実施パラメータを受信する。実施パラメータは、優先度、重み、所望のレートなどを含むことができる。一実施形態では、PTMドライバは、フローのIDも構築する。
ブロック1010で、PTMドライバは、フローIDをブロック1005で受信された実施パラメータの値にマッピングするキー-値ペアを構築する。
ブロック1015において、PTMドライバは、PTMエンジンにおいてマッチングテーブルを構成する。すなわち、PTMドライバは、図3に例解されるマッチングモジュール310のテーブル315(すなわち、マッチングテーブル)にキー-値を記憶する。
上記では、本開示において提示される実施形態が参照される。しかしながら、本開示の範囲は、特定の記載された実施形態に限定されない。代わりに、説明される特徴及び要素の任意の組み合わせは、異なる実施形態に関連するか否かにかかわらず、企図される実施形態を実装し行うために企図される。更に、本明細書に開示される実施形態は、他の可能な解決策又は従来技術に勝る利点を達成し得るが、特定の利点が所与の実施形態によって達成されるか否かは、本開示の範囲を限定するものではない。したがって、前述の態様、特徴、実施形態、及び利点は、単に例示的なものであり、特許請求の範囲に明示的に記載されている場合を除き、添付の特許請求の範囲の要素又は限定とは見なされない。
当業者によって理解されるように、本明細書に開示される実施形態は、システム、方法、又はコンピュータプログラム製品として具現化され得る。したがって、態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、又は本明細書では全て一般に「回路」、「モジュール」、若しくは「システム」と呼ばれ得るソフトウェア態様とハードウェア態様とを組み合わせた実施形態の形態をとり得る。更に、態様は、コンピュータ可読プログラムコードが具現化された1つ以上のコンピュータ可読媒体において具現化されたコンピュータプログラム製品の形態をとり得る。
1つ以上のコンピュータ可読媒体の任意の組合せを利用し得る。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読記憶媒体であり得る。コンピュータ可読記憶媒体は、例えば、電子、磁気、光学、電磁気、赤外線、若しくは半導体のシステム、装置、若しくはデバイス、又は前述の任意の好適な組み合わせであり得るが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例(非網羅的なリスト)は、1つ以上のワイヤを有する電気接続、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(read-only memory、ROM)、消去可能プログラマブル読み出し専用メモリ(erasable programmable read-only memory、EPROM又はフラッシュメモリ)、光ファイバ、ポータブルコンパクトディスク読み出し専用メモリ(compact disc read-only memory、CD-ROM)、光記憶デバイス、磁気記憶デバイス、又は前述の任意の適切な組み合わせを含む。本明細書の文脈では、コンピュータ可読記憶媒体は、命令実行システム、装置、又はデバイスによって、又はそれに関連して使用するためのプログラムを含むか、又は記憶することができる任意の有形媒体である。
コンピュータ可読信号媒体は、例えば、ベースバンドにおいて、又は搬送波の一部として、コンピュータ可読プログラムコードが具現化された伝搬データ信号を含み得る。そのような伝搬信号は、電磁気、光学、又はそれらの任意の好適な組み合わせを含むが、それらに限定されない、種々の形態のうちのいずれかをとり得る。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなく、命令実行システム、装置、又はデバイスによって、又はそれに関連して使用するためのプログラムを通信、伝搬、又は移送することができる任意のコンピュータ可読媒体であり得る。
コンピュータ可読媒体上に具現化されたプログラムコードは、ワイヤレス、ワイヤライン、光ファイバケーブル、RFなど、又は前述の任意の好適な組合せを含むが、それらに限定されない、任意の適切な媒体を使用して伝送され得る。
本開示の態様の動作を実行するためのコンピュータプログラムコードは、例えば、Java、Smalltalk、C++などのオブジェクト指向プログラミング言語、及び「C」プログラミング言語又は同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組合せで書かれ得る。プログラムコードは、ユーザのコンピュータ上で完全に、ユーザのコンピュータ上で部分的に、スタンドアロンソフトウェアパッケージとして、ユーザのコンピュータ上で部分的に、リモートコンピュータ上で部分的に、又はリモートコンピュータ若しくはサーバ上で完全に実行し得る。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)若しくは広域ネットワーク(wide area network、WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続し得るか、又は外部コンピュータ(例えば、インターネットサービスプロバイダを使用するインターネットを介して)に接続し得る。
本開示の態様は、本開示に提示された実施形態による方法、装置(システム)、及びコンピュータプログラム製品のフローチャート例解図及び/又はブロック図を参照して以下に記載されている。フローチャート例解図及び/又はブロック図の各ブロック、並びにフローチャート例解図及び/又はブロック図におけるブロックの組み合わせは、コンピュータプログラム命令によって実装することができることが理解されよう。これらのコンピュータプログラム命令は、コンピュータ又は他のプログラマブルデータ処理装置のプロセッサを介して実行される命令が、フローチャート及び/又はブロック図のブロックで指定された機能/行為を実施するための手段を作成するような機械をもたらすように、汎用コンピュータ、専用コンピュータ、又は他のプログラマブルデータ処理装置のプロセッサに提供し得る。
これらのコンピュータプログラム命令はまた、コンピュータ可読媒体に記憶された命令が、フローチャート及び/又はブロック図のブロックで指定された機能/行為の態様を実装する命令を含む製造物品を生成するように、コンピュータ、他のプログラマブルデータ処理装置、又は他のデバイスに、特定の方法で機能するように指示することができる、コンピュータ可読媒体に記憶し得る。
コンピュータプログラム命令はまた、コンピュータ、他のプログラマブルデータ処理装置、又は他のデバイスにロードされて、コンピュータ、他のプログラマブル装置、又は他のデバイス上で実施される一連の動作ステップを行わせて、コンピュータ実装プロセスを生成し得、そのため、コンピュータ又は他のプログラマブル装置上で実行される命令は、フローチャート及び/又はブロック図のブロックに指定される機能/行為を実装するためのプロセスを提供する。
図中のフローチャート及びブロック図は、本発明の様々な実施例によるシステム、方法、及びコンピュータプログラム製品の可能な実装形態のアーキテクチャ、機能、及び動作を例解する。これに関して、フローチャート又はブロック図の各ブロックは、指定された論理機能を実装するための1つ以上の実行可能命令を含む、命令のモジュール、セグメント、又は部分を表し得る。いくつかの代替的な実装形態では、ブロックに記載されている機能は、図に記載された順序から外れて発生し得る。例えば、連続して示される2つのブロックは、実際には実質的に同時に実行され得、又はブロックは、関与する機能に応じて、逆の順序で実行され得ることがある。ブロック図及び/又はフローチャート例解図の各ブロック、並びにブロック図及び/又はフローチャート例解図におけるブロックの組み合わせは、指定された機能若しくは行為を実施するか、又は専用ハードウェアとコンピュータ命令との組み合わせを行う、専用ハードウェアベースのシステムによって実装することができることにも留意されたい。
前述は特定の実施例を対象とするが、他の実施例及び更なる実施例が、その基本的な範囲から逸脱することなく考案され得、その範囲は、以下の特許請求の範囲によって決定される。
Claims (15)
- チップ内に配置された集積回路であって、
ネットワークスケジューリングアルゴリズムを実行するための入力として使用するための所定数の特徴を生成するように構成された非プログラマブルハードウェアコンポーネントと、
異なるタイプのネットワークスケジューリングアルゴリズムを実行するように構成されたプログラマブルハードウェアコンポーネントであって、動作中に、前記プログラマブルハードウェアコンポーネントが、前記非プログラマブルハードウェアコンポーネントによって提供される前記所定数の特徴のうちの少なくとも1つを使用して、前記ネットワークスケジューリングアルゴリズムを実行するように構成されており、前記集積回路が、完全に前記チップ内に配置されている、プログラマブルハードウェアコンポーネントと、を備える、集積回路。 - 動作中に、前記プログラマブルハードウェアコンポーネントが、1つのネットワークスケジューリングアルゴリズムのみを実行するように構成されている、請求項1に記載の集積回路。
- 前記プログラマブルハードウェアコンポーネントが、第1のプログラマブルコンポーネント及び第2のプログラマブルコンポーネントを備え、動作中、前記第1のプログラマブルコンポーネント及び第2のプログラマブルコンポーネントのうちの一方のみが、前記ネットワークスケジューリングアルゴリズムを実行するために使用される一方、他方のプログラマブルコンポーネントは、無視されるか、又は使用されない、請求項2に記載の集積回路。
- 前記第1のプログラマブルコンポーネントが、出発時間(DT)アルゴリズムを実施するように特化されており、前記第2のプログラマブルコンポーネントが、ラウンドロビン(RR)アルゴリズムを実施するように特化されている、請求項3に記載の集積回路。
- 前記ネットワークスケジューリングアルゴリズムは、所定数の特徴のサブセットのみを入力として使用する、請求項1に記載の集積回路。
- 前記非プログラマブルハードウェアコンポーネント及び前記プログラマブルハードウェアコンポーネントが、同じ集積回路上に実装されている、請求項1に記載の集積回路。
- 前記プログラマブルハードウェアコンポーネントが、前記同じ集積回路上のプログラマブルロジック又は領域特化型エンジンのうちの1つを使用して実装されている、請求項6に記載の集積回路。
- 前記プログラマブルハードウェアコンポーネントが、動作中、出発時間(DT)アルゴリズムを実施するように特化された第1のプログラマブルコンポーネント、及びラウンドロビン(RR)アルゴリズムを実施するように特化された第2のプログラマブルコンポーネントを備え、前記非プログラマブルハードウェアコンポーネント及び前記プログラマブルハードウェアコンポーネントが、同じ集積回路上に実装されている、請求項1に記載の集積回路。
- 方法であって、
非プログラマブルハードウェアコンポーネント及びプログラマブルハードウェアコンポーネントを備えるプログラマブルトラフィック管理(PTM)回路によって実施されるためのネットワークスケジューリングアルゴリズムを提供することと、
前記ネットワークスケジューリングアルゴリズムへの入力として使用される特徴を識別することと、
前記プログラマブルハードウェアコンポーネントに前記特徴を提供するように、前記非プログラマブルハードウェアコンポーネントを構成することと、
前記特徴を使用して前記ネットワークスケジューリングアルゴリズムを実行するように、前記プログラマブルハードウェアコンポーネントを構成することと、を含む、方法。 - 前記プログラマブルハードウェアコンポーネントが、異なるタイプのネットワーキングトラフィックアルゴリズムを実行することが可能であり、前記方法が、
前記プログラマブルハードウェアコンポーネントを使用して、前記ネットワーキングスケジューリングアルゴリズムのみを実行することを更に含む、請求項9に記載の方法。 - 前記プログラマブルハードウェアコンポーネントが、第1のプログラマブルコンポーネント及び第2のプログラマブルコンポーネントを備え、前記第1のプログラマブルコンポーネント及び第2のプログラマブルコンポーネントのうちの一方のみが、前記ネットワークスケジューリングアルゴリズムを実行するために使用される一方、他方のプログラマブルコンポーネントは、無視されるか、又は使用されない、請求項10に記載の方法。
- 前記第1のプログラマブルコンポーネントが、出発時間(DT)アルゴリズムを実施するように特化されており、前記第2のプログラマブルコンポーネントが、ラウンドロビン(RR)アルゴリズムを実施するように特化されている、請求項11に記載の方法。
- 前記非プログラマブルハードウェアコンポーネントが、所定数の特徴を生成するように構成されており、前記プログラマブルハードウェアコンポーネントに前記特徴を提供するように、前記非プログラマブルハードウェアコンポーネントを構成することが、
前記ネットワークスケジューリングアルゴリズムを実行するときに、前記プログラマブルハードウェアコンポーネントに提供するための、前記所定数の特徴のサブセットを選択することを含む、請求項9に記載の方法。 - 前記プログラマブルハードウェアコンポーネント及び前記非プログラマブルハードウェアコンポーネントを構成することが、データプレーンとは別個の制御プレーンを使用して、前記PTM迂遠に通信するソフトウェアアプリケーションを使用して実施され、前記方法が、
前記ネットワークスケジューリングアルゴリズムに従って、前記PTM迂遠において前記データプレーン上で受信されたパケットを処理することを更に含む、請求項9に記載の方法。 - 前記非プログラマブルハードウェアコンポーネント及び前記プログラマブルハードウェアコンポーネントが、同じ集積回路上に実装されている、請求項9に記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/065,438 US11743134B2 (en) | 2020-10-07 | 2020-10-07 | Programmable traffic management engine |
US17/065,438 | 2020-10-07 | ||
PCT/US2021/039196 WO2022076047A1 (en) | 2020-10-07 | 2021-06-25 | Programmable traffic management engine |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023544780A true JP2023544780A (ja) | 2023-10-25 |
Family
ID=76972023
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023521056A Pending JP2023544780A (ja) | 2020-10-07 | 2021-06-25 | プログラマブルトラフィック管理エンジン |
Country Status (6)
Country | Link |
---|---|
US (1) | US11743134B2 (ja) |
EP (1) | EP4208799A1 (ja) |
JP (1) | JP2023544780A (ja) |
KR (1) | KR20230078744A (ja) |
CN (1) | CN116324752A (ja) |
WO (1) | WO2022076047A1 (ja) |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008058088A1 (en) * | 2006-11-03 | 2008-05-15 | Bay Microsystems, Inc. | Highly-scalable hardware-based traffic management within a network processor integrated circuit |
WO2010076671A1 (en) * | 2009-01-05 | 2010-07-08 | Freescale Semiconductor, Inc. | Current sensing circuitry and integrated circuit and method for sensing a current |
US8619787B2 (en) * | 2010-05-18 | 2013-12-31 | Lsi Corporation | Byte-accurate scheduling in a network processor |
US8595362B2 (en) * | 2009-12-10 | 2013-11-26 | Hewlett-Packard Development Company, L.P. | Managing hardware resources for soft partitioning |
WO2011071498A1 (en) * | 2009-12-10 | 2011-06-16 | Hewlett-Packard Development Company, L.P. | Managing hardware resources for soft partitioning |
CN103931148B (zh) * | 2012-02-02 | 2017-06-09 | 华为技术有限公司 | 流量调度设备 |
US9426124B2 (en) | 2013-04-08 | 2016-08-23 | Solarflare Communications, Inc. | Locked down network interface |
US10042659B1 (en) | 2013-10-30 | 2018-08-07 | Xilinx, Inc. | Caching virtual contexts for sharing of physical instances of a hardware resource |
FR3013177A1 (fr) * | 2013-11-12 | 2015-05-15 | Orange | Technique de configuration d'acces securise d'un terminal invite a un reseau hote |
US10686731B2 (en) | 2017-12-19 | 2020-06-16 | Xilinx, Inc. | Network interface device |
US10659555B2 (en) | 2018-07-17 | 2020-05-19 | Xilinx, Inc. | Network interface device and host processing device |
-
2020
- 2020-10-07 US US17/065,438 patent/US11743134B2/en active Active
-
2021
- 2021-06-25 EP EP21743352.3A patent/EP4208799A1/en active Pending
- 2021-06-25 CN CN202180063983.1A patent/CN116324752A/zh active Pending
- 2021-06-25 JP JP2023521056A patent/JP2023544780A/ja active Pending
- 2021-06-25 KR KR1020237014263A patent/KR20230078744A/ko active Search and Examination
- 2021-06-25 WO PCT/US2021/039196 patent/WO2022076047A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
KR20230078744A (ko) | 2023-06-02 |
US11743134B2 (en) | 2023-08-29 |
EP4208799A1 (en) | 2023-07-12 |
CN116324752A (zh) | 2023-06-23 |
WO2022076047A1 (en) | 2022-04-14 |
US20220109613A1 (en) | 2022-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11575607B2 (en) | Dynamic load balancing for multi-core computing environments | |
EP3563533B1 (en) | Intelligent packet aggregation | |
US10986041B2 (en) | Method and apparatus for virtual network functions and packet forwarding | |
CN109313618B (zh) | 用于分组传递的图形处理单元(gpu) | |
US8831025B2 (en) | Parallel processing using multi-core processor | |
CN106817317B (zh) | 具有入口控制的业务量管理 | |
US20170237672A1 (en) | Network server systems, architectures, components and related methods | |
US20200259763A1 (en) | Intelligent resource selection for received content | |
EP3563532B1 (en) | A multi-core lock-free rate limiting apparatus and method | |
CN103873550B (zh) | 用于ecu和/或测量设备之间的数据传输的方法 | |
US20140307554A1 (en) | Virtual enhanced transmission selection (vets) for lossless ethernet | |
US20150215226A1 (en) | Device and Method for Packet Processing with Memories Having Different Latencies | |
US20230300075A1 (en) | Methods and apparatus for performance scaling with parallel processing of sliding window management on multi-core architecture | |
US20050172058A1 (en) | Multi-protocol bus system and method of operation thereof | |
US20120263181A1 (en) | System and method for split ring first in first out buffer memory with priority | |
US10616116B1 (en) | Network traffic load balancing using rotating hash | |
US11743134B2 (en) | Programmable traffic management engine | |
KR20190048924A (ko) | 플로우 기반 데이터 병렬 처리 시스템 및 이의 동작 방법 | |
US20230396555A1 (en) | Split packet router for time sensitive networking | |
CN113746890A (zh) | 用于利用边缘平台进行的自适应对等通信的系统、装置和方法 | |
Salman | Scheduling techniques in 5Gsystem on chip |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20240510 |