JP2023544780A - プログラマブルトラフィック管理エンジン - Google Patents

プログラマブルトラフィック管理エンジン Download PDF

Info

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
Application number
JP2023521056A
Other languages
English (en)
Inventor
コアンウェン チョン,
チョンチェン フー,
ゴードン ジョン ブレブナー,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xilinx Inc
Original Assignee
Xilinx Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xilinx Inc filed Critical Xilinx Inc
Publication of JP2023544780A publication Critical patent/JP2023544780A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/20Network management software packages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/04Processing captured monitoring data, e.g. for logfile generation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/215Flow control; Congestion control using token-bucket
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/22Traffic shaping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/622Queue service order
    • H04L47/623Weighted 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

Figure 2023544780000001
本明細書の実施例は、プログラマブルハードウェアコンポーネント及び非プログラマブルハードウェアコンポーネントの両方を含むプログラマブルトラフィック管理エンジンを説明する。非プログラマブルハードウェアコンポーネントは、特徴を生成するために使用され、特徴は、次いで、異なるトラフィック管理アルゴリズムを実施するために使用することができる。PTMエンジンがどのトラフィック管理アルゴリズムを実施するように構成されているかに応じて、PTMエンジンは、特徴のサブセット(又は全て)を使用して、アルゴリズムを実行し得る。PTMエンジン内のプログラマブルハードウェアコンポーネントは、非プログラマブルハードウェアコンポーネントによって提供される特徴のいくつか又は全部を使用して、選択されたアルゴリズムを実施するように、ユーザによってプログラム可能(例えば、カスタマイズ可能)である。
【選択図】図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)を計算し、制御データ(すなわち、
Figure 2023544780000002
)をキューマネージャに出力する。この例では、制御データは、fid、重み、レート、及びパケット長を含む。
図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を含む。パケット分類器から制御データ(
Figure 2023544780000003
)を受信すると、キューマネージャモジュール425は、fid及び重みを抽出する。次いで、キューアロケータ435は、まず、レコード<fid、qid>をキャッシュしたかどうかをチェックする。レコードがない場合、これはフローが新しいエントリであることを示し、キューアロケータ435は、新しい利用可能なqidを求める要求をアイドルプール430に発行する。アイドルプール430は、アイドル状態を有するキューのqidを追跡する。新しいqidを取得した後、又はすでに割り当てられたqidを識別した後、キューマネージャモジュール425は、対応するキューの重み及び集約された重み(weight_sum)を更新するために、重みを、重みマネージャ405に転送する。キューマネージャモジュール425はまた、現在非アクティブであるか又は期限切れになっているフローに割り当てられたqidをいつ請求するかを決定するためのタイムアウトロジックを有する。ある期間に到来するフローのパケットが存在しない場合、タイムアウトロジックがトリガされ、キューマネージャモジュール425は、qidをアイドルプール430に戻し、対応するキャッシュされたエントリをクリアする。タイムアウト時間は、AXI-Liteインターフェースを用いて実装することができる制御インターフェースconfig_qmを介して構成することができる。
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は、制御データ(すなわち
Figure 2023544780000004
)を出力し、これは、ダウンストリームキューディスパッチャへの<qid、DT、pktlen、レート、qids_all_occupied>を含む。
図5は、例による、PTMエンジン内のキューディスパッチャ155を例解する。キューディスパッチャ155は、異なるフローに属するパケットの送信順序を決定し、3つのコンポーネント:メタデータキュー505、パケットキュー515、及びDTコンパレータ510から構成される。キューマネージャ150から受信したパケットデータ及び制御データ(
Figure 2023544780000005
)は、対応するqidを使用して、パケットキュー515及びメタデータキュー505にそれぞれ記憶される。qids_all_occupiedがハイにアサートされる場合、一実施形態では、キューディスパッチャ155は、新しいフローのためのキューリソースがないため、パケット及びそのメタデータをドロップする。同様に、特定のキューがパケットキュー515内でフルである場合、そのフローについての全てのパケット及びそれらのメタデータは、破棄される。
図5のキューディスパッチャ155は、2つのディスパッチングモード:DTモード及びRRモードをサポートするためのハードウェアを含む。開発者は、制御インターフェースconfig_rrを使用して、これらのモードのうちのどれが現在アクティブであるかを選択することができる。一実施形態では、これらのモード(及び対応するDT/RRモジュール)のうちの1つだけが、任意の所与の時間にPTMエンジンにおいてアクティブである。DTモードでは、キューディスパッチャ155は,最小DT値を有するqidを出力する一方、RRモードでは、キューディスパッチャ155は、各非空キューのqidを循環順序で送信する。シェーパへのキューディスパッチャ155の制御出力(すなわち、
Figure 2023544780000006
)は、pktlen、qid、及びレートを含む。
DTモードで動作するとき、メタデータキュー505は、全ての非空キューの先頭メタデータ要素(dtstop)を選んで、最小DT値を有するqidを取得するようにDTコンパレータ510に命令する。図6で説明したように、最小DT値を有するパケットの
Figure 2023544780000007
を使用して、シェーパは、パケットキュー515に記憶された実際のパケットデータをいつ送信するかを決定し、読み出し信号(popqid)を発行して、対応するキュー内のデータを得る。
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_qtを用いて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つを使用して、前記ネットワークスケジューリングアルゴリズムを実行するように構成されており、前記集積回路が、完全に前記チップ内に配置されている、プログラマブルハードウェアコンポーネントと、を備える、集積回路。
  2. 動作中に、前記プログラマブルハードウェアコンポーネントが、1つのネットワークスケジューリングアルゴリズムのみを実行するように構成されている、請求項1に記載の集積回路。
  3. 前記プログラマブルハードウェアコンポーネントが、第1のプログラマブルコンポーネント及び第2のプログラマブルコンポーネントを備え、動作中、前記第1のプログラマブルコンポーネント及び第2のプログラマブルコンポーネントのうちの一方のみが、前記ネットワークスケジューリングアルゴリズムを実行するために使用される一方、他方のプログラマブルコンポーネントは、無視されるか、又は使用されない、請求項2に記載の集積回路。
  4. 前記第1のプログラマブルコンポーネントが、出発時間(DT)アルゴリズムを実施するように特化されており、前記第2のプログラマブルコンポーネントが、ラウンドロビン(RR)アルゴリズムを実施するように特化されている、請求項3に記載の集積回路。
  5. 前記ネットワークスケジューリングアルゴリズムは、所定数の特徴のサブセットのみを入力として使用する、請求項1に記載の集積回路。
  6. 前記非プログラマブルハードウェアコンポーネント及び前記プログラマブルハードウェアコンポーネントが、同じ集積回路上に実装されている、請求項1に記載の集積回路。
  7. 前記プログラマブルハードウェアコンポーネントが、前記同じ集積回路上のプログラマブルロジック又は領域特化型エンジンのうちの1つを使用して実装されている、請求項6に記載の集積回路。
  8. 前記プログラマブルハードウェアコンポーネントが、動作中、出発時間(DT)アルゴリズムを実施するように特化された第1のプログラマブルコンポーネント、及びラウンドロビン(RR)アルゴリズムを実施するように特化された第2のプログラマブルコンポーネントを備え、前記非プログラマブルハードウェアコンポーネント及び前記プログラマブルハードウェアコンポーネントが、同じ集積回路上に実装されている、請求項1に記載の集積回路。
  9. 方法であって、
    非プログラマブルハードウェアコンポーネント及びプログラマブルハードウェアコンポーネントを備えるプログラマブルトラフィック管理(PTM)回路によって実施されるためのネットワークスケジューリングアルゴリズムを提供することと、
    前記ネットワークスケジューリングアルゴリズムへの入力として使用される特徴を識別することと、
    前記プログラマブルハードウェアコンポーネントに前記特徴を提供するように、前記非プログラマブルハードウェアコンポーネントを構成することと、
    前記特徴を使用して前記ネットワークスケジューリングアルゴリズムを実行するように、前記プログラマブルハードウェアコンポーネントを構成することと、を含む、方法。
  10. 前記プログラマブルハードウェアコンポーネントが、異なるタイプのネットワーキングトラフィックアルゴリズムを実行することが可能であり、前記方法が、
    前記プログラマブルハードウェアコンポーネントを使用して、前記ネットワーキングスケジューリングアルゴリズムのみを実行することを更に含む、請求項9に記載の方法。
  11. 前記プログラマブルハードウェアコンポーネントが、第1のプログラマブルコンポーネント及び第2のプログラマブルコンポーネントを備え、前記第1のプログラマブルコンポーネント及び第2のプログラマブルコンポーネントのうちの一方のみが、前記ネットワークスケジューリングアルゴリズムを実行するために使用される一方、他方のプログラマブルコンポーネントは、無視されるか、又は使用されない、請求項10に記載の方法。
  12. 前記第1のプログラマブルコンポーネントが、出発時間(DT)アルゴリズムを実施するように特化されており、前記第2のプログラマブルコンポーネントが、ラウンドロビン(RR)アルゴリズムを実施するように特化されている、請求項11に記載の方法。
  13. 前記非プログラマブルハードウェアコンポーネントが、所定数の特徴を生成するように構成されており、前記プログラマブルハードウェアコンポーネントに前記特徴を提供するように、前記非プログラマブルハードウェアコンポーネントを構成することが、
    前記ネットワークスケジューリングアルゴリズムを実行するときに、前記プログラマブルハードウェアコンポーネントに提供するための、前記所定数の特徴のサブセットを選択することを含む、請求項9に記載の方法。
  14. 前記プログラマブルハードウェアコンポーネント及び前記非プログラマブルハードウェアコンポーネントを構成することが、データプレーンとは別個の制御プレーンを使用して、前記PTM迂遠に通信するソフトウェアアプリケーションを使用して実施され、前記方法が、
    前記ネットワークスケジューリングアルゴリズムに従って、前記PTM迂遠において前記データプレーン上で受信されたパケットを処理することを更に含む、請求項9に記載の方法。
  15. 前記非プログラマブルハードウェアコンポーネント及び前記プログラマブルハードウェアコンポーネントが、同じ集積回路上に実装されている、請求項9に記載の方法。
JP2023521056A 2020-10-07 2021-06-25 プログラマブルトラフィック管理エンジン Pending JP2023544780A (ja)

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)

* Cited by examiner, † Cited by third party
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

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