JP6943942B2 - 順次パケット処理アルゴリズム及び並列パケット処理アルゴリズムを用いることによってトラフィックシェーピングを行う方法 - Google Patents

順次パケット処理アルゴリズム及び並列パケット処理アルゴリズムを用いることによってトラフィックシェーピングを行う方法 Download PDF

Info

Publication number
JP6943942B2
JP6943942B2 JP2019501905A JP2019501905A JP6943942B2 JP 6943942 B2 JP6943942 B2 JP 6943942B2 JP 2019501905 A JP2019501905 A JP 2019501905A JP 2019501905 A JP2019501905 A JP 2019501905A JP 6943942 B2 JP6943942 B2 JP 6943942B2
Authority
JP
Japan
Prior art keywords
processing
packet
tot
algorithm
processing unit
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.)
Active
Application number
JP2019501905A
Other languages
English (en)
Other versions
JP2019510448A (ja
Inventor
スバンバリ レベッカ
スバンバリ レベッカ
Original Assignee
クラビスター アクティエボラーグ
クラビスター アクティエボラーグ
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 クラビスター アクティエボラーグ, クラビスター アクティエボラーグ filed Critical クラビスター アクティエボラーグ
Priority claimed from PCT/SE2017/050279 external-priority patent/WO2017164804A1/en
Publication of JP2019510448A publication Critical patent/JP2019510448A/ja
Application granted granted Critical
Publication of JP6943942B2 publication Critical patent/JP6943942B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/10Flow control; Congestion control
    • H04L47/32Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/76Admission control; Resource allocation using dynamic resource allocation, e.g. in-call renegotiation requested by the user or requested by the network in response to changing network conditions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/82Miscellaneous aspects
    • H04L47/828Allocation of resources per group of connections, e.g. per group of users
    • 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

Description

本発明は、パケット交換ネットワークのネットワークノードを用いることによってトラフィックシェーピングを行う方法に関する。また、本発明は、トラフィックシェーピングのために配置されたパケット交換ネットワークのネットワークノードに関する。さらに、本発明は、方法を実現するコンピュータプログラム及びコンピュータプログラム製品に関する。
トラフィックシェーピングを、パケット交換コンピュータネットワークのようなパケット交換ネットワークのネットワークリソースの制限、優先順位付け及び/又は公正な分担(fair sharing)を行うために用いることができる。大抵のトラフィックシェーピング方法は、トークンバケットアルゴリズム、(例えば、Linux(登録商標)によって用いられる)階層型トークンバケットアルゴリズム又は同様なアルゴリズムに基づく。また、一部のトラフィックシェーピング方法は、ジェネリックセルアルゴリズム(GCRA)に基づく。パケット交換ネットワークトラフィックの優先順位付けを行う既存の方法は、異なる優先レベルに対して異なるパケットキューを用いた後に優先順位の順番にパケットをキューから送出する。デキューイング(dequeuing)デバイスから送出されるパケットの数は、トークンバケットアルゴリズム又は同様なアルゴリズムによってしばしば制御される。
トラフィックシェーピングアルゴリズムを、ネットワークノード、例えば、ファイアウォール装置、ルータ装置、メディアゲートウェイ装置又はネットワークのパケットが通過する他の適切な装置において実行することができる。一般的には、トラフィックシェーピングを、ネットワークノードの基本的にあらゆる種類のトラフィック、例えば、クライアントからサーバへのトラフィック、ピアツーピアトラフィック、サーバからサーバへのトラフィック又は基本的に他の任意の種類のネットワークトラフィックのパケットにおいて行うことができる。
計算能力についての現代の要求の増大及びネットワーク負荷の増大に従って、ネットワークノードのパケットを処理するために利用されるCPU及び/又はCPUコアの数が増大する。基本的な考えは、パケットを処理する際にCPU及び/又はCPUコアの数を増やすことによって高くなった計算能力を活用することである。しかしながら、そのような複数のCPU及び/又は複数のCPUコアの解決を有効利用するのは困難である。
しかしながら、上述した既知のトラフィックシェーピングアルゴリズムは全てパケット処理効率問題を有する。既知のアルゴリズムのこれらの問題は、単一のCPU及び/又は単一のCPUコアを有するネットワークノードに対するシングルスレッドの使用のためにアルゴリズムが開発されるとともに最適化されるという事実に少なくとも部分的に関連する。したがって、現在の既知のトラフィックシェーピングアルゴリズムは、ネットワークのパケットトラフィックが増大するに従って益々顕著になる効率問題を有する。
本発明の実施の形態の目的は、上述した欠点及び問題を軽減又は解決する解決策を提供することである。
上述した目的及び他の目的は、独立項の主題によって達成される。本発明の別の有利な実現形態は、従属項によって規定される。
本発明の第1の態様によれば、例えば、パケット交換ネットワークのトラフィックシェーピングを行う方法を提供する。パケットを、少なくとも一つの処理ユニットPU,PU,...,PUのセットSPUの同期した利用を提供する順次パケット処理アルゴリズムAser及び少なくとも一つの処理ユニットPU,PU,...,PUのセットSPUの少なくとも部分的に同期しない利用を提供する並列パケット処理アルゴリズムAparに少なくとも従ってネットワークに送信されるように処理してもよく、パケットの処理は、少なくとも一つの処理ユニットPU,PU,...,PU;151,152,...,15nのセットSPU;150によって協力的に負担される総パケットコストCtotに対応する。方法は、
並列パケット処理アルゴリズムAparに従う処理がパケットを処理するために用いられるとき、少なくとも一つの処理ユニットPU,PU,...,PUの一つ以上に対する総パケットコストCtotの負担C,C,...,Cが少なくとも一つの処理ユニットPU,PU,...,PU,;151,152,...,15nのパケットを処理する容量を超えているか否かを判定することであって、容量は、一つ以上のパケットに対応することと、
少なくとも一つの処理ユニットPU,PU,...,PUの一つ以上に対する総パケットコストCtotの負担C,C,...,Cが容量を超えていると判定された場合、並列パケット処理アルゴリズムAparに従う処理から順次パケット処理アルゴリズムAserに従う処理に切り替えることと、
を更に含む。
したがって、パケットを、並列モード/アルゴリズムAparに少なくとも部分的に従って処理/実行/算出/計算してもよい。本発明は、非常に有利である複数のCPUコアのような複数の(少なくとも二つの)処理ユニットで並列に実行する作業に非常に適している。原理的には、制限されない数の処理ユニット、例えば、CPUコアを、本発明を利用するときにデータ/情報/パケット/トラフィックを処理するのに用いてもよい。
段階(phase)の自由度/可変性が十分である場合、すなわち、並列モード/アルゴリズムAparに従ってパケットを少なくとも部分的に処理できる場合、本発明を用いるときに、同期した順次処理ユニットによって従来実行された方法/アルゴリズムを、少なくとも部分的に同期しない並列モード/アルゴリズムAparを用いるセットSPUの処理ユニットに分割/分割/分配してもよい。
一般的に記述すると、並列/非同期処理ユニットが、それに割り当てられた方法/アルゴリズムの適切/正確な実行を保証できない場合、並列/非同期処理ユニットによって実行されるべきであった残りのパケットに対応する残りの方法/アルゴリズムを、一実施の形態によって再び収穫/収集/招集することができる。残りの方法/アルゴリズム、すなわち、収穫/収集/招集された残りのパケットを、順次パケット処理アルゴリズムAserに従って処理/実行/算出/計算することができる。
これは、例えば、パケットが順次モード/アルゴリズム処理によって取り扱われる間に段階の自由度/可変性を累算することができる場合に良好に機能する。順次パケット処理アルゴリズムAserが処理ユニットのセットSPUにおいて良好にバランスがとられる場合、並列モードAparにおいて継続することができる処理の可能性が増大する。例えば、並列アルゴリズムAparに従うパケット処理が完全にバランスがとられた場合、順次モード/アルゴリズムAserに戻る(return/go back)必要がなく、これによって順次モード処理に対する要求が低くなる。しかしながら、実用的な実現において、並列モード/アルゴリズムに対する処理ユニットのトラフィック/作業負荷/処理のバランスに基づいて順次Aserと並列Aparの間の切り替えを行う必要が生じることがある。
第1の態様の実施の形態によれば、少なくとも部分的に同期しない並列パケット処理アルゴリズムAparは、
セットSPUの少なくとも一つの処理ユニットPU,PU,...,PUに関連した優先レベルPhigh:Plowに基づいて処理の優先順位付けを行うことを更に含み、これによって、
高い優先順位Phighに関連した処理ユニットPUhighは、パケットを処理するとともにパケットの処理に対応する部分デット(fractional debt)D1_frac,D2_frac,...,Dn_fracを低い優先順位Plowに関連するセットSPUの一つ以上の処理ユニットPUlowにチャージすることを許容され、
少なくとも一つの処理ユニットPU,PU,...,PUに対する総パケットコストCtotの負担C,C,...,Cはそれぞれ、部分パケットコストC1_frac,C2_frac,...,Cn_frac及び部分デットD1_frac,D2_frac,...,Dn_frac;C=C1_frac+D1_frac,C=C2_frac+D2_frac,...,C=Cn_frac+Dn_fracを含む。
換言すれば、優先順位付けされたパケット処理が、トークン及び/又はトークンバケットのような少なくとも部分的に独立した制限/制限されたユニットを用いることによって優先順位付けされたステップ/タスク/課題(issue)を取り扱う実施の形態によって提供される。これらの制限/制限されたユニットの各々を、特定/所定の優先順位が割り当てられたパケットのみが特定/所定の優先順位、例えば、低い優先順位Plowが割り当てられた特定の制限/制限されたユニットをパスするように特定の優先順位、例えば、低い優先順位Plowに割り当てる/関連付けることができる。
高い優先順位Phighが割り当てられたパケットが特定/所定の優先順位位Phighが割り当てられた特定/所定の制限/制限されたユニットをパスするようにしてもよいが、この高い優先順位のパケット/処理のコストは、低い優先順位Plowが割り当てられた/関連付けられたユニットに保持/デビットされる(carried/debited)。これによって、制限/制限されたユニットは、同様であり、例えば、多かれ少なかれ同一であり、及び/又は、独立しており、これによって、低い優先順位Plowが割り当てられた/関連付けられたユニットの正確なデビット(debiting)を並列に実行することができる。例えば、このような並列デットを、デットを実行するように構成された仮想パケットを送信することによって実現することができる。これを、結果を完全に並列処理するように実現してもよい。
第1の態様の一実施の形態によれば、並列パケット処理アルゴリズムAparに従う処理が用いられるときに部分デットD1_frac,D2_frac,...,Dn_fracを経時的に減少させる。
第1の態様の一実施の形態によれば、並列パケット処理アルゴリズムAparに従ってパケットを処理するとともに総パケットコストCtotの負担C,C,...,Cがパケットを処理する容量を超える少なくとも部分的に同期しない処理ユニットPU,PU,...,PUは、少なくとも一つの処理ユニットPU,PU,...,PUのセットSPUが全体としてパケットを処理することができるか否かを判定することができず、
少なくとも部分的に同期しない処理ユニットPU,PU,...,PUは、少なくとも一つの処理ユニットPU,PU,...,PUのセットSPUが全体としてパケットを処理することができるか否かを判定することができない結果として順次パケット処理アルゴリズムAserに従う処理に切り替えることを要求する。
第1の態様の一実施の形態によれば、少なくとも一つの処理ユニットPU,PU,...,PUの一つ以上は、
中央処理装置(CPU)及び
中央処理装置コアの群の一つである。
第1の態様の一実施の形態によれば、並列パケット処理アルゴリズムAparは、少なくとも部分的に同期しないトークンバケットアルゴリズムであり、
総パケットコストCtotは、トークンの総数Ntotに関連し、
トークンの総数Ntotは、少なくとも部分的に同期しない少なくとも一つの処理ユニットPU,PU,...,PUに対するトークンの一部の数N,N,...,NとしてセットSPUに対してそれぞれ分けられ、
総パケットコストCtotの負担C,C,...,Cは、トークンの一部の数N,N,...,Nにそれぞれ関連する。
第1の態様の一実施の形態によれば、処理ユニットPU,PU,...,PUに対する総パケットコストCtotの負担C,C,...,Cは、
処理ユニットPU,PU,...,PUの負担C,C,...,C(C>N,C>N,...,C>N)がトークンの一部の数N,N,...,Nを超えること及び
処理ユニットPU,PU,...,PUがゼロ(0)のトークンの一部の数N=0,N=0,...,N=0を有することの群の一つ以上が真である場合にパケットを処理する容量を超えたと判定される。
一実施の形態によれば、段階の自由度/可変性は、トークンバケットのトークンの数に関連する。トークンバケットが、並列パケット算出/アルゴリズム処理ユニットごとに少なくとも一つのトークンを分配するために並列パケット算出/アルゴリズム処理ユニットごとに十分なトークンを含む、すなわち、満たしている場合、段階の十分な自由度/可変性がある。したがって、一実施の形態によれば、並列パケット処理を提供する処理ユニットのセットSPUがトークンを有する限り、すなわち、トークンの一部の数N,N,...,Nを使い切らない限り、並列パケット処理を提供する処理ユニットのセットSPUは、適切なパケット処理を保証/提供する。
一実施の形態によれば、段階の自由度/可変性は、一般的アルゴリズムに関連してもよい。受信したトラフィックが、許容されるトラフィック制限を表すしきい値/制限を超える場合、及び/又は、受信したトラフィックがしきい値/制限を超える限りにおいて並列アルゴリズムAparに従ってパケットを処理する処理ユニットのセットSPUが適切なパケット処理を保証/提供することができる場合、段階の十分な自由度/可変性がある。トラフィックシェーピングに対して、しきい値/制限は、ネットワークアドミニストレータによってしばしば設定され、しきい値/制限を適切な値に選択することができる。例えば、ある種類/タイプのネットワークトラフィックを、例えば、ビット/秒で測定/決定することができ、しきい値/制限は、最大の決定/測定されたトラフィック値、例えば、ある種類/タイプのトラフィックの使用を許容する最大のビット/秒に設定される。一般的には、ある種類/タイプのトラフィックを制限することによって、他のタイプのトラフィックに利用できるリソースが更に多くなる。ここではトークンバケットアルゴリズムについて説明するとしても本明細書で説明する実施の形態が一般的アルゴリズムを用いて実現されてもよいことに留意されたい。
本明細書で主に説明する一実施の形態によれば、ここで説明するパケットの処理/実行/算出/計算を行うトラフィックシェーピング方法は、少なくとも一時的に及び少なくとも部分的に並列モードAparで実行されるとともにトークンバケット方法/アルゴリズムと組み合わされる。トークンバケットアルゴリズムは、ここで説明するようにネットワークの制限を実現する方法/アルゴリズムである。トークンバケット方法/アルゴリズムを、計算の複雑性をほとんど加えることなく実現することができる。したがって、トークンバケット方法/アルゴリズムを、ここで説明するパケット処理方法に適用してもよい。この結果、トークンバケット方法/アルゴリズムの原理に従ってパケットを処理/実行/算出/計算するパケット処理/実行/算出/計算方法/アルゴリズムが効率的であるとともに少なくとも部分的に並列となる。
第1の態様の一実施の形態によれば、並列パケット処理アルゴリズムAparに従う処理を用いるときにトークンの一部の数N,N,...,Nを経時的に増加させる。
第1の態様の一実施の形態によれば、トークンの一部の数N,N,...,Nの全てをトークンの累算した総数Ntot;Ntot=N+N+...+Nに足し合わせることと、
全ての負担C,C,...,Cを累算した総コストCtotに足し合わせることと、
順次パケット処理アルゴリズムAserに従う処理に切り替えるとき及び/又はドロップモードアルゴリズムAdropに従う処理に切り替えるときにトークンの総数Ntot及び/又は総コストCtotを利用することと、
を更に有する。
第1の態様の一実施の形態によれば、順次パケット処理アルゴリズムAserは、
順次パケット処理アルゴリズムAserによって費やされるトークンより迅速にトークンの総数Ntotを増加させることと、
トークンの総数Ntotが並列処理しきい値Ntot_parより大きい(Ntot>Ntot_par)ときに順次パケット処理アルゴリズムAserに従う処理から並列パケット処理アルゴリズムAparに従う処理に切り替えることと、
を含む。
第1の態様の一実施の形態によれば、総コストCtotが総デットDtotを含むときに並列処理しきい値Ntot_parを総デットDtotに対応する値Ndebt_sumだけ増加させる。
第1の態様の一実施の形態によれば、順次パケット処理アルゴリズムAserに従う処理からドロップモードアルゴリズムAdropに従う処理に切り替えることと、
トークンの総数Ntotがゼロ(0)の値を有すること(Ntot=0)及び
総コストCtotがトークンの総数Ntotを超えること(Ctot>Ntot)の群において少なくとも一つが真である場合に少なくとも部分的に同期しない少なくとも一つの処理ユニットPU,PU,...,PUのセットSPUを用いることによってドロップモードアルゴリズムAdropに従ってパケットを処理することと、
を更に含む。
第1の態様の一実施の形態によれば、ドロップモードアルゴリズムAdropに従う処理は、
少なくとも一つのパケットをドロップすること、
少なくとも一つのパケットをキューイングすること及び
不適合のラベルを付した少なくとも一つのパケットを送信することの群の少なくとも一つの動作を含む。
順次モード/アルゴリズムAserパケット処理を、パケットをキューイングするのに用いてもよい。並列モード/アルゴリズムAparパケット処理を用いるとき、パケットをキューイングする必要がない。その理由は、ビット/秒及び/又はパケット/秒のような少なくとも一つのトラフィック特性が設定されたしきい値/制限より低いからである。設定されたしきい値/制限を超えるとき、パケットを、パケットを送出することができる速度より速く受信する。これが起こるとともにパケットキューが充填されている場合、アルゴリズムは、少なくとも一つのネットワークパケットを送出することができるまでに要する時間を計算する。この時間中、到達する全てのパケットを廃棄/処分する必要がある又はキューイングする、すなわち、ドロップモードAdropにする必要がある。パケットキューが充填されている、すなわち、設定されたしきい値/制限を超えるとき、ドロップモードAdropにおいてパケットをキューイングする必要がない。その理由は、いずれにしてもパケットが廃棄されるからである。したがって、パケットキューの利点が実現されるが、方法/アルゴリズム/キューイングは、順次モード/アルゴリズムAserが有効である/用いられるとき、すなわち、いずれにしてもアクセスが同期されるときに同期をとるだけでよい。
第1の態様の一実施の形態によれば、トークンの総数Ntotが総コストCtotを超える(Ntot>Ctot)場合、
ドロップモードアルゴリズムAdropに従う処理から順次パケット処理アルゴリズムAserに従う処理に切り替えることと、
順次パケット処理アルゴリズムAserに従ってパケットを処理することと、
を更に含む。
したがって、パケット処理を、ドロップモードアルゴリズムAdropから順次パケット処理アルゴリズムAserに切り替えることができる。
トラフィック量が設定されたしきい値/制限より上であるとき、パケット処理は、一部の状況において、単一のパケットを処理するだけのために一時的に順次パケット処理Aserに切り替わる。単一のパケットが処理された後、パケット処理は、ドロップモード処理Adropにすぐに戻る。最適化として、セットSPUの処理ユニットの一つを正確に順次モード処理Aserに切り替えることができるようにするためにアルゴリズムを一実施の形態に従って実行することができる。例えば、順次モード/アルゴリズムAserへの一時的な切替を、場合によっては順次モード/アルゴリズムAserを実現する方法に応じてトライロックミューテックス(try−lock mutex)及び/又はアトミックコンペアアンドセット(atomic compare and set)(CAS)によって行うことができる。CAS動作によれば、既知の値がコンピュータ/プロセッサメモリの位置/空間と比較され、既知の値がメモリに格納される場合、既知の値から他の値へのアトミックな置換/書換が行われる。既知の値が記憶位置に存在しない/格納されていない場合、メモリに何も書き込まれず、動作信号が生じない。例えば、既知の値を、現在の時間表示を上書きするタイムスタンプとしてもよい。したがって、一つの処理ユニットのみが順次モード処理Aserへの一時的な切替をうまく行うことができる。これによって、設定されたしきい値/制限より上のトラフィック量を並列に取り扱うことができ、同時に、パケットキュー及び/又はトークンの順次の更新を行うことができる。一つの処理ユニットのみが順次モード処理Aserへの一時的な切替をうまく行うことができるが、ここでは、これを、一つのパケットを送出するときにのみ行う。これによって、セットSPUの全ての処理ユニットは、とにかく進展し、待機のない/ブロックのないアルゴリズムの拡張を実現する。
第1の態様の一実施の形態によれば、各々がネットワークノードを介してパケットを受信する一つ以上の装置に関連した少なくとも一つのアクティブ群G,G,...,Gを規定することと、
セットの少なくとも一つのアクティブ群G,G,...,Gに対してネットワークの利用できる帯域幅の少なくとも一つの帯域幅部分を割り当てることと、を更に含み、割り当てることは、並列に実行されるとともに少なくとも一つのアクティブ群G,G,...,Gに対して少なくとも部分的に同期しない。
第1の態様の一実施の形態によれば、少なくとも一つのクライアント群G,G,...,Gは、
少なくとも一つの発信元インターネットプロトコル(IP)アドレス、
少なくとも一つの宛先インターネットプロトコル(IP)アドレス、
少なくとも一つの発信元ネットワーク、
少なくとも一つの宛先ネットワーク、
少なくとも一つの発信元ポート、
少なくとも一つの宛先ポート、
少なくとも一つの受信インタフェース、
少なくとも一つの転送インタフェース、
アプリケーション層データに関連した少なくとも一つのパラメータ及び
ネットワークトラフィックの少なくとも一つのパーティションの群の一つ以上に関連する。
第1の態様の一実施の形態によれば、利用できる帯域幅が少なくとも一つの群G,G,...,Gの間で略均等に分割されるように少なくとも一つの帯域幅部分の割当てを行う。
第1の態様の一実施の形態によれば、少なくとも一つの帯域幅部分の割当ては、少なくとも一つの群G,G,...,Gの一つ以上の帯域幅部分が使用されていないか否かを判定することと、
一つ以上の使用されていない帯域幅部分を、更なる帯域幅を必要としている少なくとも一つの群G,G,...,Gの他の一つ以上に再割り当てすることと、
を更に含む。
第1の態様の一実施の形態によれば、更なる帯域幅を必要としている少なくとも一つの群G,G,...,Gは、再割り当てされた一つ以上の帯域幅部分に対して互いに競合する。
本発明の第2の態様によれば、ネットワークノードを提供し、ネットワークノードは、少なくとも一つの処理ユニットPU,PU,...,PUのセットSPUの同期した利用を提供する順次パケット処理アルゴリズムAser及び少なくとも一つの処理ユニットPU,PU,...,PUのセットSPUの少なくとも部分的に同期しない利用を提供する並列パケット処理アルゴリズムAparに少なくとも従ってネットワークに送信されるパケットの処理を行うために配置された処理装置を含み、
パケットの処理は、少なくとも一つの処理ユニットPU,PU,...,PUのセットSPUによって協力的に負担される総パケットコストCtotに対応する。処理装置は、並列パケット処理アルゴリズムAparに従う処理がパケットを処理するために用いられるとき、少なくとも一つの処理ユニットPU,PU,...,PUの一つ以上に対する総パケットコストCtotの負担C,C,...,Cが少なくとも一つの処理ユニットPU,PU,...,PUのパケットを処理する容量を超えているか否かを判定し、容量は、一つ以上のパケットに対応し、
少なくとも一つの処理ユニットPU,PU,...,PUの一つ以上に対する総パケットコストCtotの負担C,C,...,Cが容量を超えていると判定された場合、並列パケット処理アルゴリズムAparに従う処理から順次パケット処理アルゴリズムAserに従う処理に切り替えるために配置される。
第2の態様の一実施の形態によれば、処理装置は、少なくとも部分的に同期しない並列パケット処理アルゴリズムAparに対して配置され、少なくとも部分的に同期しない並列パケット処理アルゴリズムAparは、
セットSPUの少なくとも一つの処理ユニットPU,PU,...,PUに関連した優先レベルPhigh:Plowに基づいて処理の優先順位付けを行うことを更に含み、これによって、
高い優先順位Phighに関連した処理ユニットPUhighは、パケットを処理するとともにパケットの処理に対応する部分デットD1_frac,D2_frac,...,Dn_fracを低い優先順位Plowに関連するセットSPUの一つ以上の処理ユニットPUlowにチャージすることを許容され、
少なくとも一つの処理ユニットPU,PU,...,PUに対する総パケットコストCtotの負担C,C,...,Cはそれぞれ、部分パケットコストC1_frac,C2_frac,...,Cn_frac及び部分デットD1_frac,D2_frac,...,Dn_frac;C=C1_frac+D1_frac,C=C2_frac+D2_frac,...,C=Cn_frac+Dn_fracを含む。
第2の態様の一実施の形態によれば、処理装置は、並列パケット処理アルゴリズムAparに従う処理が用いられるときに部分デットD1_frac,D2_frac,...,Dn_fracを経時的に減少させるために配置される。
第2の態様の一実施の形態によれば、処理装置は、
少なくとも一つの処理ユニットPU,PU,...,PUのセットSPUが全体としてパケットを処理することができるか否かを判定することができないために、並列パケット処理アルゴリズムAparに従ってパケットを処理するとともに総パケットコストCtotの負担C,C,...,Cがパケットを処理する容量を超える少なくとも部分的に同期しない処理ユニットPU,PU,...,PUを判定し、
少なくとも部分的に同期しない処理ユニットPU,PU,...,PUを用いることによって、少なくとも一つの処理ユニットPU,PU,...,PUのセットSPUが全体としてパケットを処理することができるか否かを判定することができない結果として順次パケット処理アルゴリズムAserに従う処理に切り替えることを要求するために配置される。
第2の態様の一実施の形態によれば、少なくとも一つの処理ユニットPU,PU,...,PUの一つ以上は、
中央処理装置(CPU)及び
中央処理装置コアの群の一つである。
第2の態様の一実施の形態によれば、並列パケット処理アルゴリズムAparは、少なくとも部分的に同期しないトークンバケットアルゴリズムであり、
総パケットコストCtotは、トークンの総数Ntotに関連し、
トークンの総数Ntotは、少なくとも部分的に同期しない少なくとも一つの処理ユニットPU,PU,...,PUに対するトークンの一部の数N,N,...,NとしてセットSPUに対してそれぞれ分けられ、
総パケットコストCtotの負担C,C,...,Cは、トークンの一部の数N,N,...,Nにそれぞれ関連する。
第2の態様の一実施の形態によれば、処理装置は、
処理ユニットPU,PU,...,PUの負担C,C,...,C;C>N,C>N,...,C>Nがトークンの一部の数N,N,...,Nを超えること及び
処理ユニットPU,PU,...,PUがゼロ(0)のトークンの一部の数N=0,N=0,...,N=0を有することの群の一つ以上が真である場合に、処理ユニットPU,PU,...,PUに対する総パケットコストCtotの負担C,C,...,Cがパケットを処理する容量を超えたと判定するために配置される。
第2の態様の一実施の形態によれば、処理装置は、並列パケット処理アルゴリズムAparに従う処理を用いるときにトークンの一部の数N,N,...,Nを経時的に増加させるために配置される。
第2の態様の一実施の形態によれば、処理装置は、トークンの一部の数N,N,...,Nの全てをトークンの累算した総数Ntot;Ntot=N+N+...+Nに足し合わせることと、
累算した総コストCtotに全ての負担C,C,...,Cを足し合わせることと、
順次パケット処理アルゴリズムAserに従う処理に切り替えるとき及び/又はドロップモードアルゴリズムAdropに従う処理に切り替えるときにトークンの総数Ntot及び/又は総コストCtotを利用することと、
を行うために更に配置される。
第2の態様の一実施の形態によれば、処理装置は、順次パケット処理アルゴリズムAserにおいて配置され、順次パケット処理アルゴリズムAserは、
順次パケット処理アルゴリズムAserによって費やされるトークンより迅速にトークンの総数Ntotを増加させることと、
トークンの総数Ntot)が並列処理しきい値Ntot_parより大きい(Ntot>Ntot_par)ときに順次パケット処理アルゴリズムAserに従う処理から並列パケット処理アルゴリズムAparに従う処理に切り替えることと、
を含む。
第2の態様の一実施の形態によれば、処理装置は、総コストCtotが総デットDtotを含むときに並列処理しきい値Ntot_parを総デットDtotに対応する値Ndebt_sumだけ増加させるために配置される。
第2の態様の一実施の形態によれば、処理装置は、順次パケット処理アルゴリズムAserに従う処理からドロップモードアルゴリズムAdropに従う処理に切り替えることと、
トークンの総数Ntotがゼロ(0)の値を有すること(Ntot=0)及び
総コストCtotがトークンの総数Ntotを超えること(Ctot>Ntot)の群において少なくとも一つが真である場合に少なくとも部分的に同期しない少なくとも一つの理ユニットPU,PU,...,PUのセットSPUを用いることによってドロップモードアルゴリズムAdropに従ってパケットを処理することと、
を行うために更に配置される。
第2の態様の一実施の形態によれば、処理装置は、ドロップモードアルゴリズムAdropに従う処理において配置され、ドロップモードアルゴリズムAdropに従う処理は、
少なくとも一つのパケットをドロップすること、
少なくとも一つのパケットをキューイングすること及び
不適合のラベルを付した少なくとも一つのパケットを送信することの群の少なくとも一つの動作を含む。
第2の態様の一実施の形態によれば、処理装置は、トークンの総数Ntotが総コストCtotを超える(Ntot>Ctot)場合、
ドロップモードアルゴリズムAdropに従う処理から順次パケット処理アルゴリズムAserに従う処理に切り替えることと、
順次パケット処理アルゴリズムAserに従ってパケットを処理することと、
を行うために更に配置される。
第2の態様の一実施の形態によれば、処理装置は、各々がネットワークノードを介してパケットを受信する一つ以上の装置に関連した少なくとも一つのアクティブ群G,G,...,Gを規定することと、
セットの少なくとも一つのアクティブ群G,G,...,Gに対してネットワークの利用できる帯域幅の少なくとも一つの帯域幅部分を割り当てることと、を行うために更に配置され、割り当てることは、並列に実行されるとともに少なくとも一つのアクティブ群G,G,...,Gに対して少なくとも部分的に同期しない。
第2の態様の一実施の形態によれば、処理装置は、少なくとも一つのクライアント群G,G,...,Gを、
少なくとも一つの発信元インターネットプロトコル(IP)アドレス、
少なくとも一つの宛先インターネットプロトコル(IP)アドレス、
少なくとも一つの発信元ネットワーク、
少なくとも一つの宛先ネットワーク、
少なくとも一つの発信元ポート、
少なくとも一つの宛先ポート、
少なくとも一つの受信インタフェース、
少なくとも一つの転送インタフェース、
アプリケーション層データに関連した少なくとも一つのパラメータ及び
ネットワークトラフィックの少なくとも一つのパーティションの群の一つ以上に関連させるために配置される。
第2の態様の一実施の形態によれば、処理装置は、利用できる帯域幅が少なくとも一つの群G,G,...,Gの間で略均等に分割されるように少なくとも一つの帯域幅部分の割当てを行うために配置される。
第2の態様の一実施の形態によれば、処理装置は、少なくとも一つの帯域幅部分の割当てに対して、少なくとも一つの群G,G,...,Gの一つ以上の帯域幅部分が使用されていないか否かを判定することと、
一つ以上の使用されていない帯域幅部分を、更なる帯域幅を必要としている少なくとも一つの群G,G,...,Gの他の一つ以上に再割り当てすることと、
を行うために配置される。
第2の態様の一実施の形態によれば、処理装置は、再割り当てされた一つ以上の帯域幅部分に対して互いに競合する更なる帯域幅を必要としている少なくとも一つの群G,G,...,Gを有するために配置される。
本発明の第2の態様によるネットワークノードの利点は、第1の態様による対応する方法の利点と同一である。
また、本発明の実施の形態は、処理手段によって実行するときに処理手段に本発明による方法を実行させるコード手段において特徴付けられるコンピュータプログラムに関する。さらに、本発明は、コンピュータ可読媒体及び上述したコンピュータプログラムを備え、上記コンピュータプログラムがコンピュータ可読媒体に含まれ、ROM(リードオンリーメモリ)、PROM(プログラマブルROM)、EPROM(消去可能PROM)、フラッシュメモリ、EEPROM(電気的EPROM)及びハードディスクドライブの群からの一つ以上を備えるコンピュータプログラム製品に関する。
本発明の他の用途及び利点は、以下の詳細な説明から明らかになる。
添付図面は、本発明の種々の実施の形態を明瞭にするとともに説明することを意図するものである。
ネットワーク及びネットワークノードを線形的に示す。 本発明の方法の種々の実施の形態のフローチャートを示す。 本発明の方法の種々の実施の形態のフローチャートを示す。 本発明の方法の種々の実施の形態のフローチャートを示す。 本発明の方法の種々の実施の形態のフローチャートを示す。 本発明の方法の種々の実施の形態のフローチャートを示す。 本発明の方法の種々の実施の形態のフローチャートを示す。 処理構造及び一部のパラメータを線形的に示す。 優先順位付けした処理及びデットを線形的に示す。 種々のパケット処理アルゴリズム及びこれらの間の切替を線形的に示す。
図1は、パケット交換ネットワーク500を線形的に示し、示されたエンドポイントエンティティ/ユーザ/クライアントとすることもできる複数の通信エンティティ111,112,...,11jは、ネットワークノード100を介して接続され、一部の実施の形態によれば、場合によっては他のネットワークに接続される一つ以上のルータ161,162を介して接続される。通信エンティティ111,112,...,11jを、少なくとも一つのワイドエリアネットワーク(WAN)及び/又は少なくとも一つのローカルエリアネットワーク(LAN)を介してネットワークノード100及び/又はルータ161,162に接続してもよい。
ネットワークノード100は、ファイアウォール装置、ルータ装置、ゲートウェイ装置、メディアゲートウェイ装置又はパケットが送出される他の適切な装置の一つ以上を含んでもよい。本発明によるネットワークノード100を、ネットワークノードを流れる実質的にありとあらゆる種類のトラフィックのパケットにおいてトラフィックシェーピングを行うために配置される。
本発明によるネットワークノード100は、例えば、方法のステップを実行するために配置した手段/制御装置121,122によって本発明の種々の実施の形態の方法を実行するために配置された処理装置120を含む。簡単にするために、二つの手段/制御装置121,122のみを図1に示すが、当然、処理装置120の三つ以上のそうような手段/制御装置が存在してもよい。個別に示す手段/制御装置121,122を含むものとして処理装置120を図1に示す。しかしながら、これらの装置121,122を、同一の物理的な装置において少なくともある程度論理的に分離して実現することができる。これらの手段/制御装置121,122を、少なくとも二つの異なる物理的なユニット/装置で実現される単一の論理ユニット/装置の一部としてもよい。これらの手段/制御装置121,122を、少なくとも二つの異なる物理的なユニット/装置において少なくともある程度論理的に分離して実現してもよい。さらに、これらの手段/制御装置121,122を、互いに論理的及び物理的に配置してもよい、すなわち、単一の物理ユニット/装置において実現される単一の論理ユニットの一部としてもよい。これらの手段/制御装置121,122は、例えば、プログラムコードの形態とすることができる命令の群に対応してもよく、命令の群は、手段/制御ユニットが有効である及び/又は方法ステップを実行するために利用されるときに少なくとも一つのプロセッサに入力されるとともに少なくとも一つのプロセッサによって利用される。
処理装置120は、少なくとも一つの処理ユニットPU,PU,...,PU;151,152,...,15nのセットSPU;150の同期した利用を提供する順次パケット処理アルゴリズムAserを実行するために配置される。本明細書において、少なくとも一つの処理ユニットPU,PU,...,PU;151,152,...,15nの各々を、中央処理装置(CPU)及び/又は中央処理装置コアとしてもよい。また、ネットワークノード100は、少なくとも一つの処理ユニットPU,PU,...,PU;151,152,...,15nのセットSPU;150の少なくとも部分的に同期しない利用を提供する並列パケット処理アルゴリズムAparを実行するために配置される。
ネットワークノード100を通過するパケットの処理は、総パケットコストCtotに対応する。この総パケットコストCtotは、少なくとも一つの処理ユニットPU,PU,...,PU;151,152,...,15nのセットSPU;150によって協力的に負担される。
図2aは、本発明の一実施の形態による方法を示す。
第1のステップ205において、並列パケット処理アルゴリズムAparが上記パケットを処理するために用いられる。
第2のステップ210において、少なくとも一つの処理ユニットPU,PU,...,PU;151,152,...,15nの一つ以上に対する総パケットコストCtotの負担(share)C,C,...,Cが少なくとも一つの処理ユニットPU,PU,...,PU;151,152,...,15nのパケットを処理する容量を超えているか否かを判定する。ここでは、負担C,C,...,Cの各々は、一つ以上のパケットに対応する。各パケットは、処理ユニットPU,PU,...,PU;151,152,...,15nの一つによって完全に(in its entirety)処理される。したがって、処理ユニットPU,PU,...,PU;151,152,...,15nの一つ以上がパケットを処理できないか否かを決定する。しかしながら、当然、異なる処理ユニットが全パケットを同時に処理してもよい、すなわち、全体の/完全なパケットを並列に処理してもよい。
第3のステップ220において、少なくとも一つの処理ユニットPU,PU,...,PU;151,152,...,15nの一つ以上に対する総パケットコストCtotの負担C,C,...,Cが容量を超えていると第2のステップ210で判定された場合、パケット処理を、並列パケット処理アルゴリズムAparに従う処理から順次パケット処理アルゴリズムAserに従う処理に切り替える。したがって、処理ユニットPU,PU,...,PU;151,152,...,15nの一つ以上がパケットを処理できない場合、パケット処理を、並列パケット処理アルゴリズムAparに従う処理から順次パケット処理アルゴリズムAserに従う処理に切り替える。
第4のステップ230において、順次パケット処理アルゴリズムAserを利用するパケット処理を用いる。
並列パケット処理アルゴリズムAparに従う処理を行うとき、少なくとも部分的に同期しない一つ以上の処理ユニットPU,PU,...,PU;151,152,...,15nは、並列パケット処理アルゴリズムAparに従ってパケットを処理し、したがって、総パケットコストCtotの対応する負担C,C,...,Cに関連させる。同期しない処理ユニットPU,PU,...,PU;151,152,...,15nの一つがパケットを処理する容量を超える場合、当該処理ユニットは、処理すべきパケットの総数の一部(part/fraction)を処理できないことを知る。しかしながら、処理ユニットが少なくとも部分的に同期していないので、当該処理ユニットは、少なくとも一つの処理ユニットPU,PU,...,PU;151,152,...,15nのセットSPU;150が全体としてパケットを処理することができるか否かを判定することができない。したがって、本実施の形態によれば、パケットを処理する容量を超える処理ユニットPU,PU,...,PU;151,152,...,15nは、順次パケット処理アルゴリズムAserに従う処理に切り替えることを要求する。したがって、容量を超える処理ユニットPU,PU,...,PU;151,152,...,15nは、セットSPU;150が全体としてパケットを処理することができるか否かを判定することができないので、当該処理ユニットは、処理アルゴリズムの切替を要求する。
本発明の一実施の形態によれば、並列パケット処理アルゴリズムAparは、少なくとも部分的に同期しないトークンバケットアルゴリズムである。総パケットコストCtotは、トークンの総数Ntotに関連する。トークンの総数Ntotは、少なくとも部分的に同期しない少なくとも一つの処理ユニットPU,PU,...,PU;151,152,...,15nに対するトークンの一部の数N,N,...,NとしてセットSPU;150に対してそれぞれ分けられてもよい。同様に、総パケットコストCtotの負担C,C,...,Cは、トークンの一部の数N,N,...,Nにそれぞれ関連する。
本発明の一実施の形態によれば、処理ユニットPU,PU,...,PU;151,152,...,15nに対する総パケットコストCtotの負担C,C,...,Cは、処理ユニットPU,PU,...,PU;151,152,...,15nの負担C,C,...,Cがトークンの一部の数N,N,...,Nを超える(C>N,C>N,...,C>N)こと及び処理ユニットPU,PU,...,PU;151,152,...,15nがゼロ(0)のトークンの一部の数を有する(N=0,N=0,...,N=0)ことの群の一つ以上が真である場合にパケットを処理する容量を超えたと判定される。
並列パケット処理アルゴリズムAparに従う処理を用いるときにトークンの一部の数N,N,...,Nを経時的に増加させる。当然、トークンのこれらの一部の数N,N,...,Nは、パケットを処理するときに費やされる、すなわち、処理される一つ以上のパケットのコストは、一部の数N,N,...,Nから差し引かれる。
図3は、総パケットコストCtotの負担C,C,...,C、一部の数N,N,...,N及び対応するタイムスタンプT,T,...,T、関連の処理ユニットPU,PU,...,PU並びにトークン構造を線形的に示す。また、概念を表したパイプを線形的に示し、この場合、例えば、第1のパイプ(パイプ1)は、トークン構造/モード/アルゴリズムの少なくとも一部、トークンの一部の数N、総パケットコストCtotの負担C及びタイムスタンプTを含む。
漏洩バケットアルゴリズム(leaky bucket algorithm)としても知られているトークンバケットアルゴリズムは、時間単位ごとに所定の数のトークンを充填する概念バケット(conceptual bucket)を用いる。バケットがトークンを累算するレートは、しばしばクオータ(quota)と称され、しばしばトークン/秒で測定される。さらに、バケットは、限定された数のトークンだけを保持し、その後、一つ以上のトークンが廃棄される。どんなときにもバケットが保持することができるトークンの最大数は、バケット深度(bucket depth)として知られている。従来のトークンバケットアルゴリズムの問題は、従来のトークンバケットアルゴリズムが単一状態/モードの使用に基づくことである。本発明の実施の形態による並列処理アルゴリズムに対して、部分バケット(fractional bucket)、トークンの一部の数N,N,...,N、総パケットコストCtotの負担C,C,...,C及び/又は部分トークンクオータ(fractional token quotas)が並列パケットフローに関連して規定される。
換言すれば、順次アルゴリズムAserパケット処理の間に処理ユニットPUごとに十分な数のトークンが累算されるとき、例えば、トークンの総数Ntotが並列処理しきい値Ntot_parより大きいとき(Ntot>Ntot_par)、後に詳しく説明するように、トラフィックシェーピングは、順次モード/アルゴリズムAser処理から並列モード/アルゴリズムApar処理に遷移する/切り替わる。並列モード/アルゴリズムApar処理によれば、上述したように、単一のバケットが、複数の、少なくとも二つの同一サイズのper−PUバケットに分割される。各per−PUバケットは、トークンの総数Ntotの均等な負担から始まる、すなわち、一部の数N,N,...,Nは、クオータの均一の負担及び所定のバケット深度が許容される。各処理ユニットPUが専用の(private)per−PUバケットを有するので、並列モードは、同期をとることなく専用バケットを自由に更新することができる。したがって、各per−PUバケットは、クオータの一部のみが与えられ、各per−PUバケットの深度は等しい。また、各per−PUバケットの全てのトークンの総和は、単一のバケットのトークンに等しい、すなわち、順次モード/アルゴリズムAser処理によって用いられるトークンの総数Ntotに等しい。上述したように、例えば、per−PUバケットの一つ以上がトークンの負担すなわちトークンの一部の数N,N,...,Nを使い尽くす場合、順次モード/アルゴリズムAser処理に戻る。
図2bは、並列アルゴリズムAparから順次アルゴリズムAser又はドロップモードアルゴリズムAdropへのパケット処理の切替220に関連した本発明の方法200の一実施の形態を示す。
切替220の第1のステップ221において、トークンの一部の数N,N,...,Nの全てを、トークンの累算された総数Ntotに合算/加算/累算する(Ntot=N+N+...+N)。
切替220の第2のステップ222において、コストの全ての負担C,C,...,Cを累算した総コストCtotに合算/加算/累算する。
切替220の第3のステップ223において、並列パケット処理アルゴリズムAparによる処理への切替220を行う(done/effected)ときに及び/又はドロップモードアルゴリズムAdropによる処理への切替を行うときに、トークンの総数Ntot及び/又は総コストCtotを用いる。
したがって、本発明の一実施の形態によれば、並列モード/アルゴリズムApar処理から順次モード/アルゴリズムAser処理への遷移/切替の間にパケットコストが外れる(slip through)ことができないことが保証される。トークンの総和Ntotが保存されるので、処理ユニットは、全体として設定されたレートに対応するコストより高いパケットコストを送り出すことができない。
これを、最初のパケットが同期した順次モード/アルゴリズムAserによって処理されるときに漂遊パケットが処理されないことを保証することが並列モード/アルゴリズムApar処理から順次モード/アルゴリズムAser処理への切替を実行(executing/performing)する機能、例えば、プログラムコードの責任であるものとして見ることができる。
一実施の形態によれば、この問題の一つの解決は、並列モード/アルゴリズムAparを用いてパケットを処理する間に並列モードAparで単一のパケットを処理するのに要する最長時間より長い所定の時間が並列モード処理の終了から順次モード/アルゴリズムAserに従うパケット処理の開始まで経過すると仮定する“run to completion”概念を用いることである。最適化された機能/プログラミングコードに対して、所定の時間は、典型的には、非常に短い。しかしながら、実施の形態の実現は、この解決に限定されない。
トークンの部分per−PU数N,N,...,Nが、一つ以上の処理ユニットが並列モード/アルゴリズムAparに従ってパケットを処理した後の潜在的に長時間に亘って順次モード/アルゴリズムAser処理において合計されるとき、コード/アルゴリズムは、個別の時間T,T,...,Tを考慮する。個別の時間T,T,...,Tは、部分per−PUバケットが更新されてから考慮される。これによって、同期をとりながら又は同期をとることなく最終パケットが処理されたときが決定される。これによって、コード/アルゴリズムは、全ての累算されたトークンNtotを合計することができるとともに対応する処理ユニットによってパケットが処理される頻度を補償することができる。
図2cは、本発明の一実施の形態を示す。
第1のステップ230において、同期した順次パケット処理アルゴリズムAserを利用する。順次パケット処理アルゴリズムAserは、例えば、トークンバケットアルゴリズムに対応してもよい。
第2のステップ250において、順次パケット処理アルゴリズムAserによって費やされるトークンより迅速にトークンの総数Ntotを増加させる。これは、トークンの総数Ntotを経時的に増加させる効果を有する。その理由は、トークンの数が、パケット処理のためにバケットからトークンが差し引かれるのより迅速に増加するからである。
第3のステップ260において、トークンの総数Ntotが並列処理しきい値Ntot_parより大きい(Ntot>Ntot_par)ときに順次パケット処理アルゴリズムAserに従う処理から並列パケット処理アルゴリズムAparに従う処理に切り替える。
第4のステップ205において、少なくとも部分的に同期しない並列パケット処理アルゴリズムAparを、パケットを処理するために用いる。
一般的には、トークンバケットアルゴリズムに対して、バケットにトークンが充填される。バケットに充填されるトークンの数を、最後のパケットが処理ユニットによって処理されてからの時間に基づいて、入力パケットの各々に対して計算することができる。これは、パフォーマンスを犠牲にしながら高い精度を与える。その理由は、大抵の実現がタイマによって与えられる規則的な間隔でトークンが加えるからである。順次モードAserは、処理ユニットの少なくとも部分的に同期しない利用を提供し、複数の処理ユニットの恩恵を受けない。その理由は、一つの処理ユニットが順次モード/アルゴリズムAserのパケットを処理することができるからである。したがって、パケットは、処理ユニットによって同期をとりながら一つずつ処理される。パケットを処理ユニットによって処理するために、当該処理ユニットに対してバケットに少なくとも一つのトークンが残っている必要がある。処理されるとともに送信されるパケットのそれぞれに対して、パケットのトークンコストがバケットから差し引かれる。
図2dは、本発明による方法200の一実施の形態を示す。
第1のステップ230において、少なくとも部分的に同期しない順次パケット処理アルゴリズムAserを用いてパケットを処理する。
第2のステップ271において、トークンの総数Ntotがゼロ(0)の値を有する(Ntot=0)場合又は総コストCtotがトークンの総数Ntotを超える(Ctot>Ntot)場合、順次パケット処理アルゴリズムAserからドロップモードアルゴリズムAdropに切り替える。
第3のステップ272において、例えば、少なくとも一つのパケットをドロップすること(273)、少なくとも一つのパケットをキューイングすること(274)及び/又は不適合のラベルを付した少なくとも一つのパケットを送信すること(275)を含むことができるドロップモードアルゴリズムAdropに従ってパケットを処理する。
例えば、バケットの残りのトークンが非常に少ない場合、例えば、バケットのトークンがゼロである場合、例えば、パケットをFIFO(先入先出)キューに入れるとともに累算のためにトークンを待機してもよい。
図2eは、本発明による方法200の一実施の形態を示す。
第2のステップ272において、ドロップモードアルゴリズムAdropに従ってパケットを処理する。
第2のステップ281において、総コストCtotがトークンの総数Ntotを超える(Ctot>Ntot)場合、ドロップモードアルゴリズムAdropに従う処理から順次パケット処理アルゴリズムAserに従う処理に切り替える。
第3のステップ230において、順次パケット処理アルゴリズムAserに従ってパケットを処理する。
並列パケット処理アルゴリズムAparに従うパケット処理205、順次パケット処理アルゴリズムAserに従うパケット処理230、ドロップモードアルゴリズムAdropに従うパケット処理272及びこれらの処理アルゴリズムの間の切替220,260,271,281を含む上述した実施の形態を、線形的かつ一般的に図5に示す。
ドロップモード/状態/アルゴリズムAdropによれば、処理されるパケットは、ドロップされる、キューイングされる及び/又はラベルを付して送信される。処理されるパケットのそれぞれに対して、バケットの累算されたトークンの数が計算されるが、ドロップモードを終了するために十分なトークンが累算されたとき、すなわち、トークンの総数Ntotが総コストCtotを超える(Ctot>Ntot)場合にのみ計算が行われる。実質的には、これを、例えば、Ctot>Ntotとするのに要する時間、例えば、バケットの一つ以上のトークンが測定/推定される時間として見ることができ、パケットキュー/アルゴリズムは、ドロップモード/アルゴリズムAdropによる処理の間、すなわち、トークンの総数Ntotが総コストCtotを超える(Ctot>Ntot)まで更新されない。
ドロップモード/アルゴリズムAdropが更新を行わないので、処理ユニットのセットSPUは、完全に並列に同期をとることなく実行することができる。トークンの総数Ntotが総コストCtotを超える(Ctot>Ntot)と、トラフィックシェーピングは、ドロップモードアルゴリズムAdropに従う処理を終了する(281)とともに順次パケット処理アルゴリズムAserに従う処理を再び開始する。
ドロップAdropに従うパケット処理から順次Aserに従うパケット処理への遷移281は、場合によってはパケットの漏洩を許容する競争/競合に潜在的に満ちている。しかしながら、ドロップモード/アルゴリズムAdropに従う処理は、典型的には、例えば、順次Aser又は並列Aparアルゴリズムに従うパケット処理より著しく低い頻度で起こるイベントであることに留意されたい。その理由は、遷移281の複雑性及びコストがトラフィックシェーピングの全パフォーマンスにとって重大でないからである。また、ドロップモード/アルゴリズムAdropに従う処理から順次モード/アルゴリズムAserに従う処理への遷移/切替281は、作業負荷/総パケット処理が増大するに従って頻度が低くなる。
ドロップモード/アルゴリズムAdropに従うパケット処理に対する処理ユニットの同期が全くない。また、ドロップモード/アルゴリズムAdropに従うパケット処理は並列に実行される。したがって、ドロップモード/アルゴリズムAdrop処理及び並列モード/アルゴリズムApar処理の共通の特徴が存在する。しかしながら、並列モード/アルゴリズムAparは、上限によって制限され、ドロップモード/アルゴリズムAdropは、下限によって制限され、これらの制限の両方は、実際には同一の制限であり、かつ、トラフィックが制限される設定されたパケットトラフィックレートに関連する。
ドロップモード/アルゴリズムAdropから順次モード/アルゴリズムAserへの切替281があるとき、処理ユニットSPU;150の二つ以上が幾分同時に切替281の開始を試みることがある。したがって、このようなあり得る問題を取り扱う必要がある。
したがって、ドロップモード/アルゴリズムAdrop処理が全く同期しないので、所定の負荷において、ドロップモード/アルゴリズムAdropの同時の開始及び終了の複数の重複する試みが存在する可能性が高い。本発明の一実施の形態によれば、単一(唯一)の処理ユニットPUがドロップモード/アルゴリズムAdrop処理を首尾よく終了するとともにドロップモード/アルゴリズムAdrop処理を終了する全ての試みがドロップモード/アルゴリズムの終了後に再び行うことを保証するのを確実にするのが終了コード/方法ステップの責任である。これを、例えば、複数の比較交換動作を用いることによって実現することができ、この場合、タイムスタンプとモード/アルゴリズムの両方がアトミックに検証されるとともに更新される。これによって、一つの処理ユニットだけが切替を行うことが保証される。また、ドロップモードの開始及び/又は終了の複数のあり得る重複する試みの中から最後の試みのみが成功する。
例えば、バケットのトークンを所定のレートで累算することを実現することによって上述した問題を取り扱う他の解決が存在する。したがって、単一のトークンを累算するために所定の時間を要する。トークンバケットアルゴリズムの大抵の実現が微積分を用いるので、これより短い時間の選択は、ゼロトークンとなり、複数の同時の更新は同一結果となる。一例として、ドロップモード/アルゴリズム終了を危険域(critical section)で行い、セットSPU;150の一つ以上のPUは、集中して仕事を行う(run−to−completion)。アルゴリズムは、終了タイミングを必要とする。その理由は、PUがCPU移行(CPU migration)、コンテキストスイッチ等の中断によって妨害されないからである。ここで説明する個別の時間T,T,...,Tの一つ以上に含めることができる又は他の時間パラメータに含めることができる規定したタイムスタンプTが存在し、これは、ドロップモードAdropに従う処理を行うときから経過した時間、例えば、順次モード/アルゴリズムAserからドロップモード/アルゴリズムAdropへのパケット処理の切替271から経過した時間を表す。
PUは、一つ以上のタイムスタンプT、バケットのトークンの数、デット及び/又はモード/アルゴリズムがしばらくの間変更されなかったかを検証する。検証を、トークンの元の数及び/又は元々のデット及び関連の一つ以上のタイムスタンプTと現在の値とを比較することによって行う。したがって、例えば、ここでは、一つ以上のタイムスタンプTが変更されなかったことチェックすることができる。少なくとも一つのタイムスタンプTが変更された場合、これは、タイムスタンプTをチェックする処理ユニットが最初に切替を開始した処理ユニットでないことを表し、run−to−completion作業/処理を終了するとともにドロップモード/アルゴリズムAdropに従う処理を処理ユニットに対して継続する。しかしながら、一つ以上のタイムスタンプTが変更された場合、例えば、トークンの数が関係するとともにチェックされる必要がある。その理由は、run−to−completion作業/処理が順次モード/アルゴリズムAserに対するモード/アルゴリズムのコンペアアンドセット(CAS)更新を継続するからである。CAS更新がモード/アルゴリズム切替に用いられるので、一つの処理ユニットのみが更新/切替に成功する。このように成功した処理ユニットは、タイムスタンプTを更新する。その後、同期した順次モード/アルゴリズムAserに従うパケット処理が用いられる。そして、CAS更新が処理ユニットに対して成功したか否かに関係なくrun−to−completion作業/処理を終了する。
本発明の一実施の形態によれば、少なくとも部分的に同期しない並列パケット処理アルゴリズムAparは、優先順位付けを行うことを含む。優先順位付けを行うことは、セットSPU;150の少なくとも一つの処理ユニットPU,PU,...,PUに関連した優先レベルPhigh:Plowに基づく。優先レベルを、例えば、処理すべきパケットに割り当ててもよい。例えば、一つのパケットに高い優先レベルPhighを割り当ててもよい。したがって、高い優先順位のパケットが処理ユニットPUによって処理されるときに高い優先順位のパケットを処理する処理ユニットPUhighに当該高い優先レベルPhighが割り当てられる/関連付けられる。同様に、他の時点で同一の処理ユニットPUが低い優先レベルPlowが割り当てられたパケットを処理するときに、パケットに割り当てられる低い優先レベルPlowが処理ユニットPUlowに割り当てられる/関連付けられる。
優先順位付けを行うとき、高い優先順位Phighが割り当てられた/高い優先順位Phighに関連した処理ユニットPUhighは、パケットを処理するとともにパケットの処理に対応する部分デットD1_frac,D2_frac,...,Dn_fracを低い優先順位Plowが割り当てられた/低い優先順位Plowに関連するセットSPU;150の一つ以上の処理ユニットPUlowにチャージ/デビットすることを許容される。
したがって、高い優先レベルのパケットを、高い優先順位が一時的に割り当てられた少なくとも一つの処理ユニットPUhighによって処理することができ、当該処理のための部分コストは、低い優先順位Plowが割り当てられた一つ以上の処理ユニットPUlowにデットされる。
優先順位付けが用いられるとき、少なくとも一つの処理ユニットPU,PU,...,PU;151,152,...,15nに対する総パケットコストCtotの負担C,C,...,Cはそれぞれ、部分パケットコストC1_frac,C2_frac,...,Cn_frac及び部分デットD1_frac,D2_frac,...,Dn_fracを含み、デットは、他の高い優先順位の処理ユニットPUhighによって作成される(C=C1_frac+D1_frac,C=C2_frac+D2_frac,...,C=Cn_frac+Dn_frac)。本発明の実施の形態によれば、パケットが処理の際に分割されず、各パケットが全体として一つの処理ユニットPUによって処理されることに留意されたい。これは、単一のパケットのそれぞれの処理コストが一つの処理ユニットによって支持されることも意味する。しかしながら、処理ユニットPU,PU,...,PU;151,152,...,15nの各々が一つ以上の全パケットを処理するために、処理すべきパケットの総数が処理ユニットPU,PU,...,PU;151,152,...,15nのセットSPU;150の間で分割/分散される。同様に、部分デットD1_frac,D2_frac,...,Dn_fracは、全パケットの処理に関連付けられる。
並列パケット処理アルゴリズムAparに従う処理が用いられるときに部分デットD1_frac,D2_frac,...,Dn_fracを経時的に、例えば、ゼロの最小値まで減少させる。一般的には、処理すべきパケットが存在しない場合でも、部分デットD1_frac,D2_frac,...,Dn_fracを、トークンの(一部の)数が経時的に増加するクオータに対応するレートで減少させる。
異なる処理モード/アルゴリズムの間の切替を行うときの上述した規則はしばしば、モード/アルゴリズムの切替を決定するために総コストCtot及び/又はコストの負担C,C,...,Cとしきい値又は他の値とを比較する。優先順位付けを行うために、負担C,C,...,Cは、処理すべきパケットのための部分パケットコストC1_frac,C2_frac,...,Cn_fracと部分デットD1_frac,D2_frac,...,Dn_fracの両方を含む。これによって、切替決定を行うときにデットも考察されるすなわち考慮される。同様に、総コストCtotは、全ての優先順位付けされたパケットに対するデットDtotを含む。したがって、トークンの総数Ntotが並列処理しきい値Ntot_parより大きい(Ntot>Ntot_par)ときに順次パケット処理アルゴリズムAserに従う処理から並列パケット処理アルゴリズムAparに従う処理への切替を決定し、並列処理しきい値Ntot_parを総デットDtotに対応する値Ndebt_sumだけ増加させる。これを、並列処理しきい値Ntot_parを総デットDtotに対応する値Ndebt_sumだけ減少させるときにも見ることができる。
図4は、高い優先レベルPhighのパケットを高い優先レベルPhighが一時的に割り当てられた少なくとも一つの処理ユニットPUhighによって処理することができ、当該処理に対する部分パケットコストC2_fracにD2_fracがデットされ、一つ以上のコスト負担C2が低い優先レベルPlowが割り当てられた処理ユニットPUlowに関連することを示す。
一般的には、ネットワークノード100が、最短のあり得るレイテンシーで単一のパケットを取り扱う/処理するのに十分なリソースを有する限り、トラフィック優先順位に意味がない。トラフィックに優先順位付けを行うことは、トラフィックすなわち処理すべきパケットの数がネットワークノード100の処理容量を超えるときにのみ有利である。これは、パケットを処理する総処理コストCtotが総コスト制限Ctot_limを超える(Ctot>Ctot_lim)ことに対応する。その状況において、すなわち、処理容量を超えるとき、実質的にはトラフィック送出/処理を減少させることしかできない。したがって、本実施の形態による優先順位付けを行う処理は、ネットワークノード100が高い優先順位のトラフィック/処理を取り扱うことができるように低い優先順位のトラフィックを制御しながら十分に減少させる方法である。
概念的には、一般的にトラフィックコストに対する総コスト制限Ctot_lim及び高い優先順位のトラフィックコストに対する優先コスト制限Cprio_high_limを規定することができる。高い優先順位のトラフィックコストCprio_highが優先コストCprioに含まれるので、高い優先順位のパケット/トラフィックは、総コストCtotの第1の負担及を取得し、ベストエフォートトラフィックすなわち低い優先順位のパケットに残りの負担が割り当てられる。高い優先順位のトラフィック/パケットとベストエフォートトラフィック/パケットのいずれも総コスト制限Ctot_limを超えない。したがって、総コスト制限Ctot_limより高い優先順位の制限Cprio_high_limは無意味である。総コスト制限Ctot_limより低い優先コスト制限Cprio_high_limを設定することは、優先コスト制限Cprio_high_limを超えるようにするコストを有する高い優先順位のパケットを別に取り扱う/処理する必要があることを意味する。典型的には、これは、高い優先順位のパケットが降格/廃棄される、すなわち、その状態/優先順位をベストエフォート状況/レベルPlowまで減少させることを意味する。
高い優先順位PhighとベストエフォートPlowのいずれでパケットを取り扱うかを選択するための優先順位付けされたトラフィックの追跡を、総コスト制限Ctot_limを超えるときにパケットをドロップしないように変更した制限パケット処理によって行うことができる。代わりに、パケット処理は、パケットを送出/パスするか否かの決定しか行わない。送出/パスされるパケットは、総コスト制限Ctot_lim内であり、送出/パスされないパケットは、ベストエフォートレベルPlowまで降格させる。この機能を、追跡パイプ又はパケット分類器に付し、シグナリング/セキュリティゲートウェイ(SGW)コード/アルゴリズムにおいて、ベースパイプと対照をなすように優先パイプに付す。
一般的には、パイプは、モード/アルゴリズムを処理する少なくとも一つのトークンバケット処理構造、少なくとも一つのタイムスタンプ、(トークンの一部の数とすることができる)バケットのトークンの少なくとも一つの数及び/又は(部分デットとすることができる)少なくとも一つのデットを含む概念的なオブジェクトとして規定することができる。
トークンデット及び部分デットの概念を含む上述した実施の形態による処理によって、制限パケット処理を、高い優先順位のトラフィック/パケット処理により要求される量を有しながら低い優先順位のトラフィック/パケット処理を減少させることができるものにすることができる。デットの概念は、バケット又は部分バケットをゼロ未満のトークンを有することが許容されるバケットとして概念的に見ることができる。バケットが有するそのような概念的な負のトークンが多くなるに従って、制限処理がドロップモードAdropのままでいる時間が長くなる。原理的には、高い優先順位のパケットが送信されるとき、高い優先順位のパケットの仮想的なコピーが低い優先順位のパケットが流れる、すなわち、低い優先順位のパケットに対応する部分デットが低い優先順位のトラフィック/パケット処理ユニットによって引き受けられた処理ユニットPUにアカウント/関連付けすると振る舞う/仮定することもできる。一実施の形態によれば、パケットの仮想的なコピーを用いることができる。その理由は、高いパフォーマンス/優先順位のパケットのコストが実際には低い優先順位の処理ユニットにのみチャージ/デビットされるとともに高い優先順位のパケットが低い優先順位のトラフィック/パケット処理のために帯域幅を使い尽くすからである。
優先順位付けの一つのあり得る問題は、高い優先順位のトラフィック/パケットが低い優先順位のパケットの処理のために同期を待機する必要がないことである。したがって、一実施の形態によれば、デットを、pre−PU変数として、すなわち、上述した部分デットD1_frac,D2_frac,...,Dn_fracとして表す。技術的には、部分デットD1_frac,D2_frac,...,Dn_fracは、並列モード/アルゴリズムAparパケット処理によって用いられるような同一のper−PUバケットすなわち同一の部分バケットを用いることができる。その理由は、いずれにしても並列モード/アルゴリズムAparを並列に更新することができるからである。しかしながら、実用的な実現において、これがパケット処理をモード/アルゴリズム間で迅速に切り替えるときに競合状態及び例外(anomalies)を導入することが確認された。したがって、本発明の実施の形態によれば、個別のper−PUパラメータは、デットすなわち部分デットD1_frac,D2_frac,...,Dn_fracを制御するために用いられ、これによって、全く同期しない部分デットD1_frac,D2_frac,...,Dn_fracの追加を許容する。
さらに、未処理の(outstanding)デット、すなわち、パケット処理アルゴリズムがまだ認められていない総デットDtotを、全てのper−PUデットの総和、すなわち、部分デットD1_frac,D2_frac,...,Dn_fracの総和から最後の既知のテッドを差し引いたものとして規定してもよい。これによって、パケット処理アルゴリズムを、per−PUデットすなわち部分デットD1_frac,D2_frac,...,Dn_fracの進行中の同時の更新があるとしても取扱後に未処理の総デットDtotをリセットすることができる。
したがって、総未処理デットDtotの合計は、比較的不経済な動作(relatively expensive operation)である。その理由は、それが必要なときのみ行われるからである。そのような必要なイベントが消失した場合、総未処理デットDtotは、後にイベントが生じるまで残存する。これによって未処理デットの合算を行うことを決定するときにパケット処理コード/アルゴリズムを少し柔軟にすることができる。その理由は、これを頻繁に行うのではなくめったに行わないのが有利であるからである。最終結果は同一である。
例えば、複数の優先レベルPhigh:Plowを利用するパケット処理を取り扱うために、優先パイプは、デット概念の利用のサポートの下で複数の制限/優先順位付パイプのシーケンスをセットアップすることができる。これらのパイプを、例えば、表されたベースパイプとしてもよい。全てのそのようなベースパイプを、例えば、全体の優先順位付けパイプの総コスト制限Ctotに関連した同一のクオータ及びバケット深度で構成することができる。限定されない例として、ベストエフォートすなわち低い優先順位のPlowパケットとして分類されたトラフィック/パケットを、例えば、ベストエフォートベースパイプを介して送信することができる。最高の優先順位として分類されたトラフィック/パケットを、最上位の優先順位のベースパイプを介して送信することができる。パケットがドロップした場合、何も起こらない。しかしながら、パケットがパイプコスト制限にあっていることを最上位の優先順位のベースパイプが宣言すると仮定すると、既に送信されたパケットのコストを、低い優先順位の全てのベースパイプからベストエフォートの/低い優先順位のPlowパイプまで適用することもできる。その影響は、高い優先順位のPhighパケットが全ての低い優先順位レベルのPlowパケットに対する帯域幅を使い尽くすことである。二つ以上の規定された優先レベルが存在してもよいこと、すなわち、ベストエフォート優先レベルと最上位の優先レベルの間に一つ以上の規定された優先レベルが存在してもよいことに留意されたい。
図2fは、本発明の一実施の形態による方法200を示す。
第1のステップ230/272において、パケットを、上述した順次パケット処理アルゴリズムAser及び/又は上述したロップモードアルゴリズムAdropを用いて処理する。
第2のステップ291において、少なくとも一つのアクティブ群G,G,...,Gを規定し、各群は、ネットワークノードを介してパケットを受信する一つ以上のデバイスに関連する。
第3のステップ292において、例えば、ネットワーク500及び/又はネットワークノード100の利用できる帯域幅の少なくとも一つの帯域幅部分を、セットの少なくとも一つのアクティブ群G,G,...,Gに割り当てる。この割当て292は、並列に行われ、少なくとも一つのアクティブ群G,G,...,Gに対して少なくとも部分的に同期しない。
一実施の形態によれば、利用できる帯域幅が少なくとも一つの群G,G,...,Gの間で略均等に分割されるように少なくとも一つの帯域幅部分を割り当てる(292)。
本発明の一実施の形態によれば、方法の第3のステップ292は、少なくとも一つの群G,G,...,Gの一つ以上の帯域幅部分が使用されていないか否かを判定するステップ293を含んでもよい。第3のステップ292は、一つ以上の使用されていない帯域幅部分を、更なる帯域幅を必要としている少なくとも一つの群G,G,...,Gの他の一つ以上に再割り当てする第5のステップ294を含んでもよい。一実施の形態によれば、更なる帯域幅を必要としている少なくとも一つの群G,G,...,Gは、再割り当て(294)された一つ以上の帯域幅部分に対して互いに競合する。
本発明の一実施の形態によれば、少なくとも一つの群G,G,...,Gは、ネットワークトラフィックの重なり合わない/分離した一つ以上のサブセットS,S,...,Sに関連する。ここでは、トラフィックを、決定した適切な規則/規定によって、例えば、ネットワークアドミニストレータによって一つ以上のサブセットS,S,...,Sに分割してもよい。一つ以上のサブセットS,S,...,Sを、例えば、次のように規定してもよい。
各クライアント群G,G,...,Gは、所定のIPアドレス又はネットワーク範囲からのネットワークトラフィックに対応する/当該ネットワークトラフィックを含む。
各クライアント群G,G,...,Gは、所定のIPアドレス又はネットワーク範囲へのネットワークトラフィックに対応する/当該ネットワークトラフィックを含む。
各クライアント群G,G,...,Gは、検証されたユーザ及び/又は送信されるデータのタイプのような上位層データに関連したネットワークトラフィックに対応する/当該ネットワークトラフィックを含む。
これを、
少なくとも一つの発信元インターネットプロトコル(IP)アドレス、
少なくとも一つの宛先インターネットプロトコル(IP)アドレス、
少なくとも一つの発信元ネットワーク、
少なくとも一つの宛先ネットワーク、
少なくとも一つの発信元ポート、
少なくとも一つの宛先ポート、
少なくとも一つの受信インタフェース、
少なくとも一つの転送インタフェース、
アプリケーション層データに関連した少なくとも一つのパラメータ及び
ネットワークトラフィックの少なくとも一つのパーティションの群の一つ以上に関連した少なくとも一つのクライアント群G,G,...,Gとして説明することもできる。
グループ分けを、ダイナミックパイプ/パケット処理フローのセットの形態の実質的な処理として見ることができる。各群G,G,...,Gは、グループごとの制限及び負担を追跡する群カウンタ/パラメータのセットを割り当てることができる。群G,G,...,Gが必要とされる場合に群G,G,...,Gが割り当てられ、無活動(inactivity)の期間tinactiveが閾値tinactive_thを超えるとき(tinactive>tinactive_th)に群G,G,...,Gが解放される(もはや割り当てられない)。アクティブ群G,G,...,Gの各々が制限/割当ての均等な負担を保証されるように公平な負担が群G,G,...,Gの間に適用される。しかしながら、全ての群G,G,...,Gが全体的に保証された負担を終始用いるとは限らず、他の群が使用されていないトークン/部分トークンを得るために競争することがある場合、群G,G,...,Gは、この保証に制限されない。全体的なパイプ/処理制限Ctotの重み付けされた負担が群に与えられた場合に公平性の高い負担を得ることができるとしても、通常、使用されていないトークン/部分トークンの公平な負担が存在しない。
したがって、本発明の本実施の形態の一つの基本的な原理は、所定の全体的なパイプ/処理制限Ctotの公平な負担をカウントすることである。これを群G,G,...,Gごとに行うことができるとともに対応する全体的なパイプ/処理制限Ctotのクリアランスとみなすことができる。群の負担に十分なトークンが存在する限り、パケットがパスされるとともに送出され、部分コストが全体的なパイプ/処理制限Ctotにデットされる。群の負担の総和が対応する全体的なパイプ/処理制限Ctotを超えることがないことに留意されたい。その理由は、これによって全体的なパイプ/処理制限Ctotにアンダーフローが生じることがないからである。全体的なパイプ/処理カウンタとは異なり、群の負担カウンタがグループごとの制限を超えたときにパケットをドロップ又は降格させない。代わりに、パケットを全体的なパイプ/処理カウンタにパスし、用いられるグループ分けが存在しない場合のように過度のグループごとの制限がそれ相応に取り扱われる。
本発明の第2の態様によれば、図1に示すようなネットワークノード100を提供する。ネットワークノードは、本発明の方法の実施の形態を実行するように配置された処理装置120を含む。
一実施の形態によれば、処理装置120は、少なくとも一つの処理ユニットPU,PU,...,PU;151,152,...,15nのセットSPU;150の同期した利用を提供する順次パケット処理アルゴリズムAser及び少なくとも一つの処理ユニットPU,PU,...,PU;151,152,...,15nのセットSPU;150の少なくとも部分的に同期しない利用を提供する並列パケット処理アルゴリズムAparに少なくとも従ってネットワーク500に送信されるパケットの処理を行うために配置される。
処理装置120は、少なくとも一つの処理ユニットPU,PU,...,PU;151,152,...,15nのセットSPU;150によって協力的に負担されるようにパケットの処理に対応する総パケットコストCtotを負担するように更に配置される。
また、処理装置120は、並列パケット処理アルゴリズムAparに従う処理がパケットを処理するために用いられるとき、少なくとも一つの処理ユニットPU,PU,...,PU;151,152,...,15nの一つ以上に対する総パケットコストCtotの負担C,C,...,Cが少なくとも一つの処理ユニットPU,PU,...,PU;151,152,...,15nのパケットを処理する容量を超えているか否かを判定(210)し、容量は、一つ以上のパケットに対応し、
少なくとも一つの処理ユニットPU,PU,...,PU;151,152,...,15nの一つ以上に対する総パケットコストCtotの負担C,C,...,Cが容量を超えていると判定された(210)場合、並列パケット処理アルゴリズムAparに従う処理から順次パケット処理アルゴリズムAserに従う処理に切り替える(220)ために配置される。
これを、上述した決定210を行うために配置された決定部121及び上述した切替122を行うために配置された切替部122を含むネットワークノード100及び/又は処理装置120として説明することもできる。
ネットワークノード100及び処理装置120を、本発明のここで説明する実施の形態のいずれかを実現するために配置することができ、ネットワークノード100及び処理装置120に、これらの実施の形態を実現する対応するユニットを設けてもよい。
さらに、本発明の実施の形態によるあらゆる方法を、処理手段によって実行するときに処理手段に方法のステップを実行させるコード手段を有するコンピュータプログラムで実現してもよい。コンピュータプログラムは、コンピュータプログラム製品のコンピュータ可読媒体に含まれる。コンピュータ可読媒体は、ROM(リードオンリーメモリ)、PROM(プログラマブルROM)、EPROM(消去可能PROM)、フラッシュメモリ、EEPROM(電気的EPROM)及びハードディスクドライブのような実質的にあらゆるメモリを備えてもよい。
ここで説明する処理装置120は、一実施の形態において、例えば、中央処理装置(CPU)、処理装置、処理回路、プロセッサ、特定用途向け集積回路(ASIC)、マイクロプロセッサ又は命令を解釈するとともに実行することができる他のプロセス論理の一つ以上の例を備えてもよい。語句「プロセッサ」は、上述したものの一部又は全てのような複数の処理回路を備える処理回路構成(circuitry)を表す。処理回路構成は、入力、出力及びデータバッファリングを備えるデータの処理のためのデータ処理機能並びに呼処理制御、ユーザインタフェース制御等のような装置制御機能を実行してもよい。
最後に、本発明は、上述した実施の形態に限定されず、添付した独立項の範囲内の全ての実施の形態に関連するとともに当該実施の形態を包含する。

Claims (22)

  1. パケット交換ネットワーク(500)のトラフィックシェーピングを行う方法(200)であって、
    少なくとも一つの処理ユニット(PU,PU,...,PU;151,152,...,15n)のセット(SPU;150)の同期した利用を提供する順次パケット処理アルゴリズム(Aser)及び少なくとも一つの処理ユニット(PU,PU,...,PU;151,152,...,15n)のセット(SPU;150)の少なくとも部分的に同期しない利用を提供する並列パケット処理アルゴリズム(Apar)に少なくとも従って前記ネットワーク(500)に送信されるパケットの処理を行うことを含み、
    前記パケットの前記処理は、前記少なくとも一つの処理ユニット(PU,PU,...,PU;151,152,...,15n)のセット(SPU;150)によって協力的に負担される総パケットコスト(Ctot)に対応する方法(200)において、
    前記並列パケット処理アルゴリズム(Apar)に従う前記処理が前記パケットを処理するために用いられるとき、前記少なくとも一つの処理ユニット(PU,PU,...,PU;151,152,...,15n)の一つ以上に対する前記総パケットコスト(Ctot)の負担(C,C,...,C)が前記少なくとも一つの処理ユニット(PU,PU,...,PU;151,152,...,15n)のパケットを処理する容量を超えているか否かを判定すること(210)であって、前記負担(C,C,...,C)の各々は、一つ以上のパケットに対応することと、
    前記少なくとも一つの処理ユニット(PU,PU,...,PU;151,152,...,15n)の一つ以上に対する前記総パケットコスト(Ctot)の前記負担(C,C,...,C)が前記容量を超えていると判定された(210)場合、前記並列パケット処理アルゴリズム(Apar)に従う前記処理から前記順次パケット処理アルゴリズム(Aser)に従う前記処理に切り替える(220)ことと、
    を備えることを特徴とする方法(200)。
  2. 前記少なくとも部分的に同期しない並列パケット処理アルゴリズム(Apar)は、
    前記セット(SPU;150)の前記少なくとも一つの処理ユニット(PU,PU,...,PU;151,152,...,15n)に関連した優先レベル(Phigh:Plow)に基づいて処理の優先順位付けを行うことを更に含み、これによって、
    高い優先順位(Phigh)に関連した処理ユニット(PUhigh)は、パケットを処理するとともに前記パケットの処理に対応する部分デット(D1_frac,D2_frac,...,Dn_frac)を低い優先順位(Plow)に関連する前記セット(SPU;150)の一つ以上の処理ユニット(PUlow)にチャージすることを許容され、
    前記少なくとも一つの処理ユニット(PU,PU,...,PU;151,152,...,15n)に対する前記総パケットコスト(Ctot)の前記負担(C,C,...,C)はそれぞれ、部分パケットコスト(C1_frac,C2_frac,...,Cn_frac)及び部分デット(D1_frac,D2_frac,...,Dn_frac;C=C1_frac+D1_frac,C=C2_frac+D2_frac,...,C=Cn_frac+Dn_frac)を含む請求項1に記載の方法(200)。
  3. 前記並列パケット処理アルゴリズム(Apar)に従う処理が用いられるときに前記部分デット(D1_frac,D2_frac,...,Dn_frac)を経時的に減少させる請求項2に記載の方法(200)。
  4. 前記並列パケット処理アルゴリズム(Apar)に従ってパケットを処理するとともに前記総パケットコスト(Ctot)の前記負担(C,C,...,C)がパケットを処理する容量を超える少なくとも部分的に同期しない処理ユニット(PU,PU,...,PU;151,152,...,15n)は、少なくとも一つの処理ユニット(PU,PU,...,PU;151,152,...,15n)の前記セット(SPU;150)が全体として前記パケットを処理することができるか否かを判定することができず、
    前記少なくとも部分的に同期しない処理ユニット(PU,PU,...,PU;151,152,...,15n)は、少なくとも一つの処理ユニット(PU,PU,...,PU;151,152,...,15n)の前記セット(SPU;150)が全体として前記パケットを処理することができるか否かを判定することができない結果として前記順次パケット処理アルゴリズム(Aser)に従う前記処理に切り替えることを要求する請求項1〜3のいずれか一項に記載の方法(200)。
  5. 前記少なくとも一つの処理ユニット(PU,PU,...,PU;151,152,...,15n)の各々は、
    中央処理装置(CPU)又は
    中央処理装置コアの群の一つである請求項1〜4のいずれか一項に記載の方法(200)。
  6. 前記並列パケット処理アルゴリズム(Apar)は、少なくとも部分的に同期しないトークンバケットアルゴリズムであり、
    前記総パケットコスト(Ctot)は、トークンの総数(Ntot)に関連し、
    前記トークンの総数(Ntot)は、前記少なくとも部分的に同期しない少なくとも一つの処理ユニット(PU,PU,...,PU;151,152,...,15n)に対するトークンの一部の数(N,N,...,N)として前記セット(SPU;150)に対してそれぞれ分けられ、
    前記総パケットコスト(Ctot)の前記負担(C,C,...,C)は、前記トークンの一部の数(N,N,...,N)にそれぞれ関連する請求項1〜5のいずれか一項に記載の方法(200)。
  7. 処理ユニット(PU,PU,...,PU;151,152,...,15n)に対する前記総パケットコスト(Ctot)の前記負担(C,C,...,C)は、
    前記処理ユニット(PU,PU,...,PU;151,152,...,15n)の前記負担(C,C,...,C;C>N,C>N,...,C>N)が前記トークンの一部の数(N,N,...,N)を超えること及び
    前記処理ユニット(PU,PU,...,PU;151,152,...,15n)がゼロ(0)のトークンの一部の数(N=0,N=0,...,N=0)を有することの群の一つ以上が真である場合にパケットを処理する容量を超えたと判定される請求項6に記載の方法(200)。
  8. 前記並列パケット処理アルゴリズム(Apar)に従う処理を用いるときに前記トークンの一部の数(N,N,...,N)を経時的に増加させる請求項6〜7のいずれか一項に記載の方法(200)。
  9. 前記トークンの一部の数(N,N,...,N)の全てを累算したトークンの総数(Ntot;Ntot=N+N+...+N)に足し合わせること(221)と、
    全ての負担(C,C,...,C)を累算した総コスト(Ctot)に足し合わせること(222)と、
    前記順次パケット処理アルゴリズム(Aser)に従う処理に切り替えるとき及び/又はドロップモードアルゴリズム(Adrop)に従う処理に切り替えるときにトークンの総数(Ntot)及び/又は総コスト(Ctot)を利用すること(223)と、
    を更に有する請求項6〜8のいずれか一項に記載の方法(200)。
  10. 前記順次パケット処理アルゴリズム(Aser)は、
    前記順次パケット処理アルゴリズム(Aser)によって費やされるトークンより迅速にトークンの総数(Ntot)を増加させること(250)と、
    前記トークンの総数(Ntot)が並列処理しきい値(Ntot_par)より大きい(Ntot>Ntot_par)ときに前記順次パケット処理アルゴリズム(Aser)に従う前記処理から前記並列パケット処理アルゴリズム(Apar)に従う前記処理に切り替えること(260)と、
    を含む請求項9に記載の方法(200)。
  11. 前記総コスト(Ctot)が総デット(Dtot)を含むときに並列処理しきい値(Ntot_par)を前記総デット(Dtot)に対応する値(Ndebt_sum)だけ増加させる請求項10に記載の方法(200)。
  12. 前記順次パケット処理アルゴリズム(Aser)に従う処理からドロップモードアルゴリズム(Adrop)に従う処理に切り替えること(271)と、
    前記トークンの総数(Ntot)がゼロ(0)の値を有すること(Ntot=0)及び
    前記総コスト(Ctot)が前記トークンの総数(Ntot)を超えること(Ctot>Ntot)の群において少なくとも一つが真である場合に前記少なくとも部分的に同期しない少なくとも一つの処理ユニット(PU,PU,...,PU;151,152,...,15n)の前記セット(SPU;150)を用いることによって前記ドロップモードアルゴリズム(Adrop)に従って前記パケットを処理すること(272)と、
    を更に含む請求項〜11のいずれか一項に記載の方法(200)。
  13. 前記ドロップモードアルゴリズム(Adrop)に従う処理は、
    少なくとも一つのパケットをドロップすること(273)、
    少なくとも一つのパケットをキューイングすること(274)及び
    不適合のラベルを付した少なくとも一つのパケットを送信すること(275)の群の少なくとも一つの動作を含む請求項12に記載の方法(200)。
  14. 前記トークンの総数(Ntot)が前記総コスト(Ctot)を超える(Ntot>Ctot)場合、
    前記ドロップモードアルゴリズム(Adrop)に従う処理から前記順次パケット処理アルゴリズム(Aser)に従う処理に切り替えること(271)と、
    前記順次パケット処理アルゴリズム(Aser)に従って前記パケットを処理すること(230)と、
    を更に含む請求項〜13のいずれか一項に記載の方法(200)。
  15. 各々がネットワークノード(100)を介してパケットを受信する一つ以上の装置に関連した少なくとも一つのアクティブ群(G,G,...,G)を規定すること(291)と、
    前記セットの前記少なくとも一つのアクティブ群(G,G,...,G)に対して前記ネットワーク(500)の利用できる帯域幅の少なくとも一つの帯域幅部分を割り当てること(292)と、を更に含み、前記割り当てること(292)は、並列に実行されるとともに前記少なくとも一つのアクティブ群(G,G,...,G)に対して少なくとも部分的に同期しない請求項1〜14のいずれか一項に記載の方法(200)。
  16. 前記少なくとも一つのアクティブ群(G,G,...,G)は、
    少なくとも一つの発信元インターネットプロトコル(IP)アドレス、
    少なくとも一つの宛先インターネットプロトコル(IP)アドレス、
    少なくとも一つの発信元ネットワーク、
    少なくとも一つの宛先ネットワーク、
    少なくとも一つの発信元ポート、
    少なくとも一つの宛先ポート、
    少なくとも一つの受信インタフェース、
    少なくとも一つの転送インタフェース、
    アプリケーション層データに関連した少なくとも一つのパラメータ及び
    ネットワークトラフィックの少なくとも一つのパーティションの群の一つ以上に関連した請求項15に記載の方法(200)。
  17. 前記利用できる帯域幅が前記少なくとも一つのアクティブ群(G,G,...,G)の間で略均等に分割されるように前記少なくとも一つの帯域幅部分の割当て(292)を行う請求項15〜16のいずれか一項に記載の方法(200)。
  18. 前記少なくとも一つの帯域幅部分の割当て(292)は、前記少なくとも一つのアクティブ群(G,G,...,G)の一つ以上の帯域幅部分が使用されていないか否かを判定すること(293)と、
    一つ以上の使用されていない帯域幅部分を、更なる帯域幅を必要としている前記少なくとも一つのアクティブ群(G,G,...,G)の他の一つ以上に再割り当てすること(294)と、
    を更に含む請求項15〜17のいずれか一項に記載の方法(200)。
  19. 更なる帯域幅を必要としている前記少なくとも一つのアクティブ群(G,G,...,G)は、再割り当てされた一つ以上の帯域幅部分に対して互いに競合する請求項18に記載の方法(200)。
  20. コンピュータで実行するときに請求項1〜19のいずれか一項に記載の方法を実行するプログラムコードを有するコンピュータプログラム。
  21. 少なくとも一つの処理ユニット(PU,PU,...,PU;151,152,...,15n)のセット(SPU;150)の同期した利用を提供する順次パケット処理アルゴリズム(Aser)及び少なくとも一つの処理ユニット(PU,PU,...,PU;151,152,...,15n)のセット(SPU;150)の少なくとも部分的に同期しない利用を提供する並列パケット処理アルゴリズム(Apar)に少なくとも従ってパケット交換ネットワーク(500)に送信されるパケットの処理を行うために配置された処理装置(120)を含む前記ネットワーク(500)のネットワークノード(100)であって、
    前記パケットの前記処理は、前記少なくとも一つの処理ユニット(PU,PU,...,PU;151,152,...,15n)のセット(SPU;150)によって協力的に負担される総パケットコスト(Ctot)に対応するネットワークノード(100)において、
    前記処理装置(120)は、
    前記並列パケット処理アルゴリズム(Apar)に従う前記処理が前記パケットを処理するために用いられるとき、前記少なくとも一つの処理ユニット(PU,PU,...,PU;151,152,...,15n)の一つ以上に対する前記総パケットコスト(Ctot)の負担(C,C,...,C)が前記少なくとも一つの処理ユニット(PU,PU,...,PU;151,152,...,15n)のパケットを処理する容量を超えているか否かを判定(210)し、前記負担(C ,C ,...,C )の各々は、一つ以上のパケットに対応し、
    前記少なくとも一つの処理ユニット(PU,PU,...,PU;151,152,...,15n)の一つ以上に対する前記総パケットコスト(Ctot)の前記負担(C,C,...,C)が前記容量を超えていると判定された(210)場合、前記並列パケット処理アルゴリズム(Apar)に従う前記処理から前記順次パケット処理アルゴリズム(Aser)に従う前記処理に切り替える(220)ために配置されたネットワークノード(100)。
  22. 前記少なくとも一つの処理ユニット(PU,PU,...,PU;151,152,...,15n)の各々は、
    中央処理装置(CPU)又は
    中央処理装置コアの群の一つである請求項21に記載のネットワークノード(100)。
JP2019501905A 2016-03-23 2017-03-23 順次パケット処理アルゴリズム及び並列パケット処理アルゴリズムを用いることによってトラフィックシェーピングを行う方法 Active JP6943942B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662312146P 2016-03-23 2016-03-23
SE1600105-9 2016-03-23
US62/312,146 2016-03-23
SE1600105 2016-03-23
PCT/SE2017/050279 WO2017164804A1 (en) 2016-03-23 2017-03-23 Method for traffic shaping using a serial packet processing algorithm and a parallel packet processing algorithm

Publications (2)

Publication Number Publication Date
JP2019510448A JP2019510448A (ja) 2019-04-11
JP6943942B2 true JP6943942B2 (ja) 2021-10-06

Family

ID=66106645

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019501905A Active JP6943942B2 (ja) 2016-03-23 2017-03-23 順次パケット処理アルゴリズム及び並列パケット処理アルゴリズムを用いることによってトラフィックシェーピングを行う方法

Country Status (2)

Country Link
US (1) US10924416B2 (ja)
JP (1) JP6943942B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111740743B (zh) * 2020-06-17 2023-07-14 西安微电子技术研究所 一种支持串行和并行模式的低开销ad控制器电路

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5913443A (ja) * 1982-07-14 1984-01-24 Fuji Xerox Co Ltd 非同期接続装置
US8032653B1 (en) 2000-09-08 2011-10-04 Juniper Networks, Inc. Guaranteed bandwidth sharing in a traffic shaping system
US7072970B2 (en) 2001-10-05 2006-07-04 International Business Machines Corporation Programmable network protocol handler architecture
GB0226249D0 (en) 2002-11-11 2002-12-18 Clearspeed Technology Ltd Traffic handling system
DE102007025397B4 (de) 2007-05-31 2010-07-15 Advanced Micro Devices, Inc., Sunnyvale System mit mehreren Prozessoren und Verfahren zu seinem Betrieb
EP2446590B1 (en) 2009-06-22 2015-11-25 Citrix Systems, Inc. Systems and methods for platform rate limiting
FR2979444A1 (fr) * 2011-08-23 2013-03-01 Kalray Reseau sur puce extensible
CN104885422B (zh) 2012-12-17 2019-03-22 马维尔以色列(M.I.S.L.)有限公司 在并行处理网络设备中维持分组顺序的方法和设备
US9430239B2 (en) 2013-03-12 2016-08-30 Qualcomm Incorporated Configurable multicore network processor

Also Published As

Publication number Publication date
US20200220817A1 (en) 2020-07-09
US10924416B2 (en) 2021-02-16
JP2019510448A (ja) 2019-04-11

Similar Documents

Publication Publication Date Title
US8681614B1 (en) Quality of service for inbound network traffic flows
WO2017133351A1 (zh) 一种资源分配方法及资源管理器
US8645592B2 (en) Balancing usage of hardware devices among clients
US9112809B2 (en) Method and apparatus for controlling utilization in a horizontally scaled software application
Srinivasan et al. The case for fair multiprocessor scheduling
US20130074091A1 (en) Techniques for ensuring resources achieve performance metrics in a multi-tenant storage controller
JP6783850B2 (ja) データトラフィックを制限するための方法及びシステム
JP2017521806A (ja) 多重プロセッシング環境でのスケジューリングの方法及びその装置
CN111258745B (zh) 一种任务处理方法及设备
CN109564528A (zh) 分布式计算中计算资源分配的系统和方法
US20090183166A1 (en) Algorithm to share physical processors to maximize processor cache usage and topologies
CN111290841A (zh) 任务调度方法、装置、计算设备及存储介质
Maiti et al. Internet of Things applications placement to minimize latency in multi-tier fog computing framework
JP6943942B2 (ja) 順次パケット処理アルゴリズム及び並列パケット処理アルゴリズムを用いることによってトラフィックシェーピングを行う方法
EP3814912B1 (en) Techniques to support a holistic view of cache class of service for a processor cache
US10691495B2 (en) Virtual processor allocation with execution guarantee
CN113010309B (zh) 集群资源调度方法、装置、存储介质、设备和程序产品
Lin et al. {RingLeader}: Efficiently Offloading {Intra-Server} Orchestration to {NICs}
KR20120055946A (ko) 공평한 대역 할당 기반 패킷 스케줄링 방법 및 장치
Wu et al. Abp scheduler: Speeding up service spread in docker swarm
Li et al. Co-Scheduler: A coflow-aware data-parallel job scheduler in hybrid electrical/optical datacenter networks
WO2024022142A1 (zh) 资源使用方法和装置
Jajoo et al. Saath: Speeding up coflows by exploiting the spatial dimension
EP3433985B1 (en) Method for traffic shaping using a serial packet processing algorithm and a parallel packet processing algorithm
Cucinotta et al. Virtual network functions as real-time containers in private clouds

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200309

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210226

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210316

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210615

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210810

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210909

R150 Certificate of patent or registration of utility model

Ref document number: 6943942

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150