JP2006197235A - パケットシェーピング装置 - Google Patents

パケットシェーピング装置 Download PDF

Info

Publication number
JP2006197235A
JP2006197235A JP2005006554A JP2005006554A JP2006197235A JP 2006197235 A JP2006197235 A JP 2006197235A JP 2005006554 A JP2005006554 A JP 2005006554A JP 2005006554 A JP2005006554 A JP 2005006554A JP 2006197235 A JP2006197235 A JP 2006197235A
Authority
JP
Japan
Prior art keywords
packet
time
unit
scheduler
entry
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.)
Withdrawn
Application number
JP2005006554A
Other languages
English (en)
Inventor
Hiroshi Tokai
博史 渡海
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2005006554A priority Critical patent/JP2006197235A/ja
Publication of JP2006197235A publication Critical patent/JP2006197235A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】可変長のパケットを予め設定されたレートに高精度で出力し、しかも装置規模および複雑性を抑えることができるパケットシェーピング装置を提供する。
【解決手段】入力パケットを格納するパケット格納領域を有するバッファ部から与えられたフロー毎の入力パケットの長さと前回のパケット出力終了時間と所望送信レートを規定するパケット出力間隔とに基づいて該入力パケットの理想出力終了時間を算出して記憶するとともに、内部の固定単位時間スロットで刻まれるタイムテーブルにおける該前回のパケット出力終了時間の次の時間スロットに該入力パケットのエントリを登録し、該タイムテーブルに登録したエントリに対応する該出力終了時間に該入力パケットを該パケット格納領域から出力する。
【選択図】図1

Description

本発明は、パケットシェーピング装置に関し、特にIPネットワーク等におけるパケットを予め設定されたレートで出力するためのスケジューリングを行うパケットシェーピング装置に関するものである。
近年、IPネットワーク等においては、多種多量のデータ転送能力及び多量データに対する品質の向上が求められて来ており、その多種多量のパケットデータを効率よく制御するための手法がシェーピング技術である。
図27は、2つのタイムテーブルA及びBを交互に切り替えることで固定長パケットデータのシェーピング機構を実現する従来例の原理を示した図である。2つのタイムテーブルA及びBにはそれぞれn+1個の格納領域(以下、時間スロットと称する。)を有しており、各時間スロットに対応して固定長パケットデータの出力時刻(以下、時間ということがある。)が設定されている。
まず、或るフローに対して固定長パケットデータの出力時刻が算出され、その算出された時刻に対応した時間スロットにこのフローを特定するための情報等がリングを組まれて格納される。
一方、スロットに格納されている情報を巡回的に読み出すことにより、この固定長パケットデータの送出間隔すなわちデータレートの制御が行える。また同時に、2つのタイムテーブルA及びBの範囲外時刻に設定された固定長パケットに対しては範囲外テーブルCを用意し、巡回的に上述したタイムテーブルに登録して行くことで低速なデータレートに対しても対応するようにしたデータシェーピング装置がある(例えば、特許文献1参照。)。
特開2001−313669号公報
上述した従来のシェーピング装置は、各スロットに対応した固定長のパケットデータを制御対象とするものであり、可変長のパケットデータに対しては前段にて固定長のパケットデータに分割する機構が必要である。仮にパケットを分割する機構を設けたとしても、その分割による出力レートの揺らぎが発生することにより、データ品質の劣化を招くことになる。
また2つのタイムテーブルを交互に切り替える機構のため、タイムテーブル切り替え時の動作および処理が複雑になることや、出力ポート毎にタイムテーブルが必要となり、装置規模が大きくなるという問題点がある。
本発明はこのような課題を解決すべく成されたものであり、その目的は可変長のパケットを予め設定されたレートで高精度で出力し、しかも動作や処理が複雑性でないパケットシェーピング装置を提供することにある。
(1)上述した課題を解決するため、本発明に係るパケットシェーピング装置は、入力パケットを格納するパケット格納領域を有するバッファ部と、内部の固定単位時間スロットで刻まれるタイムテーブルを有し、該バッファ部から与えられたフロー毎の入力パケットの長さと前回のパケット出力終了時間と所望送信レートを規定するパケット出力間隔とに基づいて該入力パケットの理想出力終了時間を算出して記憶するとともに該タイムテーブルにおける該前回のパケット出力終了時間の次の時間スロットに該入力パケットのエントリを登録するスケジューラ部と、を備え、該バッファ部が、該タイムテーブルに登録したエントリに対応する該出力終了時間を該スケジューラ部から受けて該入力パケットをその出力終了時間に該パケット格納領域から出力することを特徴としている。
本発明の原理を図1を参照して説明する。図1は、本発明のパケットシェーピング装置を構成するスケジューラ部に設けられているタイムテーブルを時間軸(時間スロット)で示したものであり、この例では、3つのフローID1〜ID3のパケットが入力されてスケジューリングが行なわれたことを示している。
この中で特にフローID3のパケットに着目して説明すると、今、現在時間スロットt0においてフローID3のパケット長MのパケットPKTが到着したとすると(ステップS1)、このパケットPKTの前回入力したパケット(図示せず)が時間スロットt1において「前LCT」で示される前回のパケットの出力終了時間スロットの次の時間スロットにおいて現在入力したパケットPKT(点線で示す)のエントリ(番号)をタイムテーブルに登録する(ステップS2)。
そして、このエントリを登録する際に、この入力パケットPKTの長さと前回のパケット終了時間(前LCT)と所望送信レートを規定するためのパケット出力間隔ICIとに基づいて、この入力パケットPKTの理想出力終了時間t2(新LCT)=前LCT+1+ICI×(M/64)(イーサの最小パケット長=64バイト)を求めて記憶しておく。これは、図1に示す白抜きの右側のパケットPKTが出力を終了することを示している(ステップS3)。
従って、バッファ部は、このタイムテーブルに登録したエントリに対応するパケットPKTの出力終了時間(新LCT)をスケジューラ部から受けて、この入力パケットPKTをこの出力終了時間(新LCT)においてバッファ部に設けたパケット格納領域から出力させる。
このように、入力パケットの長さを考慮して、入力パケットの出力タイミングをスケジューリングしているので、可変長パケットに対するシェーピングを実現することが可能となる。
(2)また、上記のバッファ部は、該パケット格納領域から実際にパケットを出力する際に該スケジューラ部に該パケットのフロー識別子を通知し、該スケジューラ部では、該フロー識別子のパケットに関し、該算出した理想出力終了時間と該実際にパケットを出力した時間との差分をレート補正値として計算し、次パケットの理想出力終了時間から該レート補正値分だけ減算することができる。
すなわち、図1に示したフローID3のパケットPKTは新LCTの時間タイムスロットt2において出力が終了する筈であるが、実際には、図2(1)に示す2つのパケットPKT1及びPKT2があったとき、これらがパケット格納領域から読み出される時刻は、同図2に示すようにパケットPKT2が出力されるべき時間タイムスロットt+3より遅れて時間タイムスロットt+6になってしまうことがあり、この結果、パケットPKTの出力レートは設定レートよりも低くなってしまうことになる。
この対策として、バッファ部がパケット格納領域から実際にパケットを出力(読出)する際に、スケジューラ部にこのパケットのフロー識別子を通知し、パケット処理部においては、上記の新LCTの時間スロットと実際にパケット格納領域から読み出された時間スロットの差分を計算し、これをレート補正値としておく。そして、次のパケットの新LCTを計算するときに、この新LCTからレート補正値を減算することにより、図2(3)に示すように、入力パケットの理想出力時間TATを求めることができる。この出力時間TATは、新LCTを入力パケット(現パケット)の理想出力終了時間とすれば、実質的にこの現パケットの理想出力開始時間に相当することになる。
このように、パケットの理想出力終了時間より早目にパケットの理想出力を実質的に開始することになり、パケットの出力レートの低下を抑えることが可能となる。
(3)上記のスケジューラ部は、該レート補正値を積算し、一度に使用できるレート補正値を規制することができる。
すなわち、スケジューラ部では、レート補正値を貯金しておき、その使用できるレート補正値を適宜変化させることにより、レート補正値が大き過ぎたり小さ過ぎたりすることに伴なう出力レートの変動を低減し、高精度で可変長パケットの安定したシェーピングを行うことが可能となる。
(4)該スケジューラ部と該バッファ部との間に出力すべき、パケット情報を受け渡すためのFIFOをさらに設け、該バッファ部は内部の固定単位時間毎に該FIFOを巡回的に読み出すことにより該パケット格納領域からパケットの送出を行うことができる。
すなわち、図3に示すように、パケット到着時に完全にパケット情報(例えばパケット番号=アドレス)を、受け渡し用FIFOに登録しておき、このパケット情報を読み出す場合も例えばパケット読み出し制御部14が64バイトの転送時間のタイミングでアクセスし(ステップS4)、1パケット時間に1フロー分のパラメータのみ更新すればよく、スケジューリング済であるので読出側の処理も簡単になると共にフロー数の増加に容易に対応が可能となる。
(5)上記のスケジューラ部は、該FIFOに読み出すべきパケット情報が存在しない場合は、スケジューリング対象でないパケットの送出を行うことができる。
(6)また、上記のスケジューラ部は、該タイムテーブルへのエントリ登録を行うとき、同一の時間スロットにおいて複数のエントリが発生しても、登録することができる。なお、エントリ番号は常に付与されている。
すなわち、上記の図1は同一のフローIDにつき、一つの時間タイムスロットにおいて一つの可変長パケットを想定して示したが、実際には同一のフローで一つの時間タイムスロットにおいて重複して複数のエントリが発生することがあり、この場合、図4(1)で示したように空いている時間スロットを探すことになるので、時間スロットの空塞を判定しながら永遠と空き時間スロットを探すことになる(ステップS5)。
そこで、同図(2)に示すように、同一の時間スロットに複数エントリ可能なようにし、エントリ番号で同一の時間スロットにおいて縦方向のリンクを形成するようにしている(ステップS6)。
(7)また、上記のバッファ部は、該複数のエントリに対し、一番最初にエントリされた番号のパケットのみに対して読出処理を行い、残りは後続の時間スロットのエントリにリンクを行ってもよい。
(8)また、上記のスケジューラ部は、該タイムテーブルより未来の時間スロットにエントリ登録が必要なパケットのエントリ番号は別のテーブルに登録しておき(図4(2)のステップS7)、該タイムテーブルの1/2周期毎に再スケジューリングを行うことも可能である。
すなわち、図5(1)に示すように、現LCTの位置がタイムテーブルの範囲を超えている場合、このフローのパケットが到着してもエントリすることはできない。
そこで同図(2)に示すように、タイムテーブルの2分の1時間毎に再スケジューリングを行うと共に、通常のパケットのエントリ登録と平行して処理を行い、再スケジューリング不可能なパケットは再度別のテーブルにエントリを行うようにしている。これにより、永久的にスケジューリングが可能となる。
(9)また、上記のスケジューラ部は、該タイムテーブルを該固定時間スロット毎にスライディングする構成とし、上記の再スケジューリングと合わせることで永久的なエントリ登録を可能にすることができる。
すなわち、図6に示すように、スケジューラ部において、1時間スロット単位にスライディングするようにタイムテーブルを構成し、常に現在時間のスロットからタイムテーブル分エントリが可能にしている。
(10)また、上記のスケジューラ部は、該タイムテーブルのエントリ登録と読出処理に時間差を設けることにより、内部での処理時間差のマージンを確保することができる。
(11)さらに上記のパケットは可変長パケットでもよい。
本発明によれば、可変長パケットに対して、理想的な出力時間を算出し、更には実際に出力される時間からレートの補正を行うことで高精度のパケットスケジューリングを行うことができる。また、内部の単位固定時間(64バイト転送時間)に一つのスケジューリングを行えばよく、装置規模が収容フロー数に依存しないため多くのフローに対応可能となる。
図7は、本発明に係るパケットシェーピング装置の一実施例を示したものである。この実施例では、パケットシェーピング装置は、概略的に、バッファ部1とバッファ番号管理FIFO2とスケジューラ部3とで構成されている。バッファ部1は入力パケットPKTを入力するパケット書込制御部11と、このパケット書込制御部11を経由して入力パケットPKTを順次格納するバッファとしてのパケット格納領域12と、このパケット格納領域12のアドレス管理を行うバッファ管理メモリ13と、パケット格納領域12及びバッファ管理メモリ13に接続されたパケット読出制御部14とで構成されている。
また、スケジューラ部3は、バッファ部1のパケット書込制御部11に接続されたスケジューラエントリ部31と、このスケジューラエントリ部31に相互接続されたフローテーブル32、スケジューラ管理テーブル33及びタイムテーブル34と、フローテーブル32、スケジューラ管理テーブル33、及びタイムテーブル34、バッファ番号管理FIFO2、及びパケット読出制御部14に接続されたスケジューラ読出部35とで構成されている。
このようなパケットシェーピング装置の概略的な動作をまず説明する。
入力されたパケットPKTを、パケット書込制御部11がバッファ12に一旦バッファリングすると同時にパケット識別子(フローID、バッファ番号、パケット長)をヘッダから抽出してスケジューラ部3に通知する。
スケジューラ部3では、通知されたフローIDおよびパケット長に対してスケジューラエントリ部31にて理想的なパケット出力(開始/終了)時間を算出し、入力パケットPKTのエントリ番号をタイムテーブル34に登録する。ここでタイムテーブル34はT個の時間スロットを有しており、各時間スロットはイーサーネットの最小パケット長(64バイト)の転送時間分であり、パケットの出力時刻に対応している。
スケジューラ読出部35では、上述したタイムテーブル34のエントリを順番に読み出すことにより、出力対象となるエントリ番号が特定され、そのエントリ番号に対応したフローID、バッファ番号、パケット長をバッファ部1に通知することで、バッファ部1はバッファ12からパケットを出力する。
またバッファ部1ではスケジューラ部3に対して、バッファ12からパケットが実際に読み出された際にフローIDの通知を行い、スケジューラ部3ではそのフローIDに対応したパケットをエントリした時間と、実際にパケットが読み出された時間の差分を計算し、次パケットのエントリ時にその差分だけ早くエントリすることでレートの補正を行っている。
ここで上述したタイムテーブル34は図6に示したように、1スロット単位時間毎にスライディングする構成とし、常に現在時間のスロットからタイムテーブル分エントリが可能としている。
一方、スケジューラエントリ部31にて算出されたパケット理想出力開始時間(TAT)がタイムテーブル34の範囲外になった場合、未登録レジスタが用いられる。まず未登録レジスタに該当パケットのフローID、バッファ番号、パケット長を登録する。スケジューラエントリ部31ではタイムテーブルの1/2周期で未登録レジスタにあるパケットの再配置(スケジューリング)処理を行う。これにより永久的なスケジューリングが可能となる。
以下、IPルータに上述したパケットシェーピング機構を適用した場合の具体例について概略的に説明する。
図8はIPルータ内のシェーピング機構を示す図である。パケット書込制御部11は、入力されたパケットPKTを受信してパケット格納領域(バッファ)12に格納するとともに、そのパケットPKTを識別するためのフローID、格納された場所を特定するためのバッファ番号およびパケット長を抽出し、スケジューラ部3に通知する。
上述したフローID、バッファ番号およびパケット長を受信したスケジューラ部3では、スケジューラエントリ部31により、予め設定されたレート(パケット出力間隔ICI)でタイムテーブル34にエントリを行い、スケジューラ読出部35にてそのタイムテーブル34の出力制御を行うことでシェーピング動作を実現する。このためスケジューラ部3は、上述したタイムテーブル34、フローを管理するためのフローテーブル32、バッファ番号を管理するためのスケジューラ管理テーブル33を含んでいる。
図9はタイムテーブル34、図10はフローテーブル32、図11はスケジューラ管理テーブル33の具体例を示す図である。タイムテーブル34はスロット分のアドレスを有しており、出力されるパケットのエントリ番号が時間順に設定される。フローテーブル32はパケットのフローIDに対して、前パケット出力終了時間(LCT)、パケットのスケジューリング対象判定ビット(Enable)、パケット出力間隔(ICI)、出力補正値(L)、出力補正積算値(L')が設定される。
また、スケジューラ管理テーブル33はエントリ番号に対して、パケット理想出力開始時間(TAT)、フローID、バッファ番号、次エントリ番号が設定される。具体的には、図12(1)に示すように時間スロット(k)にエントリ番号「3」、「5」、「6」のパケットがエントリされている場合、図(2)に示すように、タイムテーブル34のアドレス(k)には開始エントリ番号「3」、終了エントリ番号「6」、エントリ数「3」が設定され、同図(3)に示すように、スケジューラ管理テーブル33には、アドレス3にパケット出力時刻“k”、次エントリ「5」が設定される。
またスロット(k+1)に着目すると1パケットしかエントリされていないので、タイムテーブル34のアドレス(k+1)には開始エントリ「4」、終了エントリも「4」、エントリ数「1」が設定され、スケジューラ管理テーブル33の次エントリには“D.C(Don't Care)”が設定される。
ここでパケットがエントリされていないスロットに対しては、タイムテーブル34のエントリ数に“0”が設定される。このように、タイムテーブル34およびスケジューラ管理テーブル33を用いることで、各時間スロットに対応してどのエントリ番号のパケットを出力すればよいかが分かるようになっている。
またフローテーブル32には、個々のフローに対して予め設定する出力間隔(出力レート)ICIが設定されており、スケジューラエントリ部31ではこの出力間隔ICIおよび補正値L、補正積算値L'からエントリすべきスロットを算出し、所定のエントリ登録処理が行われる。
例えば、可変長パケットPKTがいずれかの時間スロットにエントリされる場合、その時間スロットに対応したタイムテーブル34、およびそのエントリ番号に対応したスケジューラ管理テーブル33が更新される。具体的には、該当スロット時間のタイムテーブル34のエントリ数が「0」の場合には、開始エントリ番号および終了エントリ番号に該当パケットのエントリ番号が設定される。また該当時間スロットのタイムテーブル34のエントリ数が「1」以上の場合には、終了エントリ番号に該当パケットのエントリ番号を設定し、またそれまでの終了エントリ番号に対応したスケジューラ管理テーブル33の次エントリ番号を該当パケットのエントリ番号に更新する。
また可変長パケットのエントリ時間がエントリ範囲外の場合、タイムテーブル34内の未登録レジスタR0の開始エントリ番号と終了エントリ番号およびスケジューラ管理テーブル33の次エントリ番号を上述したように更新する。未登録レジスタR0はタイムテーブル34の1/2周期(T/2)毎に未登録レジスタR1にコピーされ、同時に初期化される。コピーされた未登録レジスタR1は、スケジューラエントリ部31にて上述したのと同様の処理を用いて順次タイムテーブル34にエントリ処理を行う。
スケジューリング(テーブル書込)手順例:図13〜18
上記のようなテーブル構成を有するIPルータの具体的なスケジューリング手順を図13〜18を参照して以下に説明する。
まず、図13はスケジューリング手順の全体を示すものであり、図14〜18はこの図13に示したスケジューリング手順の各ステップを詳細に示したものであり、以下の説明ではステップ毎に順次説明をして行く。
ステップS100:
可変長パケットPKTがパケット書込制御部11に入力して来ると、パケット書込制御部11は、バッファ番号管理FIFO2から空きバッファ番号を収得すると共に、そのバッファ番号ではパケット格納領域12にパケットを書き込む(ステップS122)。なお、空きバッファ番号とは、実際にパケットがパケット格納領域12に格納する際のアドレス値を示している。
ステップS101:
(1)可変長パケットPKTのヘッダ等からパケット情報(フローID、パケット長)を抽出する。
(2)その後、パケット書込制御部11は、そのフローID、パケット長、及びバッファ番号をスケジューラエントリ部31に通知する。
(3)この例では、フローID=5、パケット長=320、バッファ番号=100がパケット書込制御部11からスケジューラエントリ部31へ通知されるものとする。
ステップS102:
(1)スケジューラエントリ部31において、上記のステップS101で抽出したフローIDをアドレスとしてフローテーブル32から、以下の情報を収得する。
・前パケット出力終了時間(LCT)
・パケット出力間隔(ICI)
・パケットEnable (Enable)
・補正値(L)
・積算補正値(L')
(2)この場合、LCT=50.0、Enable=1、ICI=2、L=2、L'=8がフローテーブル32からスケジューラエントリ部31へ与えられるものとする。なお、前パケット出力終了時間LCTは、図10に示したフローテーブルに示す如く、32ビットの整数部分と16ビットの小数部分とから成っている。
(3)上記の前パケット出力終了時間LCTとは、前回のパケットPKT0が出力終了する時間スロットt=50を示しており、パケット出力間隔ICIはそのフローに関してユーザが設定する送信レートに対応するものである。
ステップS103:
(1)ステップS102で得たEnable情報から、スケジューラエントリ部31は入力パケットPKTがスケジューリング対象であるか否かを判定する。
(2)この結果、フローID=5のパケットは既に収得した情報からEnable=1であるのでスケジューリング対象パケットであることが分かる。
なお、スケジューリング対象でなければ、バッファ番号管理FIFO2に該当するバッファ番号を書込み、以後の処理は行わない(ステップS123)。
ステップS104:
(1)上記の通り、スケジューリング対象であると判定されたのでスケジューラエントリ部31内に設けられているエントリ番号管理FIFO(図示せず)からエントリ番号を収得する。
(2)スケジューラエントリ部31は、エントリ番号管理FIFOからエントリ番号「5」を収得する。
以後、タイムテーブル34へのエントリ処理を実行する。ここでタイムテーブル34へのアクセスは内部の固定単位時間スロット毎に順次移動するポインタによって行われ、その着目ポインタ値がタイムテーブル34の着目スロットに対応している。さらに、上記の如く、1つの時間スロットづつステイディングしていく(図6参照)。
ステップS105:
(1)まず、スケジューラエントリ部31はステップS102に示した補正値L、及び積算補正値L'(前回出力終了時間LCTと実際に出力した時間との差分で初期値は0)から現パケットのレート補正値L"を算出する。なお、補正値Lは、ユーザーが規制している補正値(上限値)を示す。
(2)この場合、L>L'の場合はL"=L'であり、L<L'の場合はL"=Lであるので、レート補正値L"=2となる。これは、レート補正値L"として、補正値Lと積算補正値L'の内小さい方を選択し、レート補正のゆらぎを抑えて送信レートを安定化させている。これは、図2(3)に示したようにタイムテーブル34へのエントリ動作の具体例として示したように、到着したフローID1のパケットは、前パケット出力終了時間LCT、パケット出力間隔ICI、及びパケット長Mから現パケット出力終了時間を算出する。このパケット出力終了時間は理想的な出力時間であり、実際にバッファ部1からパケットが出力される差分時間を考慮に入れる必要があるので、上記で算出したパケット出力時間からレート補正値を引き算した値が実際にそのパケットの出力時間となる。
ステップS106:
(1)入力パケットの出力時間を算出する。この場合の出力時間は、パケット理想出力開始時間(TAT)である。
(2)この例では、スケジューラエントリ部31はTAT=前パケット出力時間終了時間+1−(レート補正値)=LCT+1-L"=50+1-2=49としてパケット理想出力開始時間(TAT)を算出する。すなわち、このレート補正値は、スケジューラ部3がバッファ部1から順次受信するためにクレジット(貯金)をして行く。ただし、そのクレジットされた積算補正値を、パケット出力時間算出時に一度に使用すると単一フローで見た場合にバースト性が増し、出力レートに揺らぎが発生する可能性があるので、一度に使用できる補正値パラメータを導入して補正値を規制するような構成をしている。
(3)これをタイムテーブル34の時間軸で見ると、前回パケットPKT0の出力終了時間LCTのスロットt=50の次の時間スロット(同一フロー)に関してレート補正値2を減算したので、パケット理想出力開始時間TAT=49であることが示されている。
ここで、タイムテーブル34へのエントリは、算出された時間の整数部のみを用いるわけであるが、実際の算出時には固定小数点を用いることでフロー全体で見ると高精度のレートを実現することができる。
ステップS107:
(1)スケジューラエントリ部31は、パケット理想出力開始時間TATが現在時刻よりも過去か未来かを判定する。
(2)この例では、TAT=49>現在時間W_Time=48であるので、現在時間から未来の時間へエントリする。
ステップS108a:
(1)スケジューラエントリ部31は、現在のパケット理想出力終了時間(NewLCT)及び積算補正値(NewL')を算出する。
(2)その後、新しく算出されたNewLCT及びNewL'でフローデーブル32を更新する。
(3)この例では、NewLCT=TAT+ICI×(パケット長/64)=LCT+1+ICI×(パケット長/64)-L"=50+1-2+2(320/64)=59であり、NewL'=L'-L"=6となる。
(4)この結果、図示のように、上記のように求めた現パケットPKT1の理想出力開始時間TAT((b)参照)に基づき、その理想出力終了時間(NewLCT)は(c)に示すようにt=59である。時間スロットt=49のパケットPKT1のエントリは、(a)に示すように固定長パケットをタイムテーブル34にエントリすることになる(ステップS110以降参照)。
なお、ステップS107において判定結果が“NO”であった場合には、図13のステップS108bに示すように、前パケット出力終了時間の代わりに現在時間を置き換えると共に、積算補正値L'に現在時間を足したものとなる点が異なっている。
すなわち、出力開始時間TATが現在時間よりも過去であれば前パケット出力時間、すなわちパケット出力終了時間はパケット長及びパケット出力間隔から算出した値からレート値を減じた値を現在時間に足した値となり(ステップS108b)、未来であれば前パケット出力時間は、パケット長及びパケット出力間隔から算出した値からレート値を減じた値を前パケット出力終了時間に足した値となる(ステップS108a)。また、同時に積算補正値に関しても、過去時間であれば積算補正値に現在時間からパケット出力時間を引いた値を積算し、未来時間であれば積算補正値からレート補正した値を引いた値となる。
ステップS109:
(1)上記のステップS108で算出した出力時間がタイムテーブル34においてスケジューリング可能か否かの判定を行う。
(2)この場合、TAT-W_Time=49-48>2000であり、スケジューリング可能と判定する。すなわち、タイムテーブル34は或る決められた時間スロット分のアドレスを保有しており、パケットの出力時間が現在時間から所定の範囲内であるか否かの判定を行っている。
ステップS110:
(1)スケジューリング可能な場合、パケット出力時間でタイムテーブル34にアクセスし、開始エントリ番号、終了エントリ番号、及びエントリ数を収得する。
(2)この場合、開始エントリ番号とは該当するスロットの一番下にあるパケットのエントリ番号を示し、終了エントリ番号とは一番上にあるパケットのエントリ番号を示し、さらにエントリ数とはそのスロットにエントリされているパケットの数を示している。
(3)この結果、スケジューラエントリ部31は、タイムテーブル34からt=TAT=49において、開始エントリ番号=1、終了エントリ番号=3、エントリ数=2のパケットエントリを収集し、時間スロットt=TAT=50においては開始エントリ番号=終了エントリ番号=2、及びエントリ数=1のパケットエントリが収得されることになる。
ステップS111:
(1)スケジューラエントリ部31は、タイムテーブル34のエントリ数が‘0’か否か判定する。
(2)この結果エントリ数=2>0と判定する。
ステップS112:
エントリ数=0の場合、タイムテーブル34の開始エントリ番号と終了エントリ番号を該当するパケットのエントリ番号に更新する。
ステップS113:
(1)また、エントリ数≠0の場合、終了エントリ番号でスケジューラ管理テーブル33の次エントリ番号を該当パケットのエントリ番号に更新する。
(2)この結果、時間スロットt=TAT=49において、次エントリ番号=5のパケットが積み重ねられることになる。
ステップS114, S115:
(1)スケジューラエントリ部31は、パケット理想出力時間TATでタイムテーブル34にアクセスし、終了エントリ番号、及びエントリ数を更新する。
(2)この結果、t=TAT=49で終了エントリ番号及びエントリ数を更新することになる。
ステップS116:
一方、ステップS109においてスケジューリングが不可であることが判定された場合には、未登録レジスタR0のエントリ数が、エントリ数=0であるか否かの判定を行う。
ステップS117:
エントリ数=0の場合、未登録レジスタR0の開始エントリ番号及び終了エントリ番号を該当パケットのエントリ番号に更新する。
ステップS118:
また、エントリ数≠0の場合は、未登録レジスタR0の終了エントリ番号でスケジューラ管理テーブル33の次エントリ番号を該当パケットのエントリ番号に更新する。
ステップS119:
続いて未登録レジスタR0の終了エントリ番号を該当パケットのエントリ番号に更新する。
ステップS120:
また、未登録レジスタR0のエントリ数をインクリメントする。
ステップS121:
(1)スケジューラエントリ部31は、現パケットのエントリ番号でスケジューラ管理テーブル33にアクセスし、バッファ番号を更新する。
(2)この場合、エントリ番号=5に基いてバッファ番号を更新する。
パケット読出手順例:図19〜24
図19〜図24はバッファ部1からのパケットの出力(バッファ読出)手順を示したもので、図19はその読出手順の全体を示しており、図20〜図24は図19における各ステップの詳細を示している。以下、各ステップについて順に説明を行う。
ステップS200:
(1)スケジューラ読出部35は読出ポインタ値をアドレスにしてタイムテーブル34にアクセスし、開始エントリ番号と終了エントリ番号とエントリ数を収得する。
(2)この場合、スケジューラ読出部35は、タイムテーブル34から上記の例に従い、開始エントリ番号=1、終了エントリ番号=5、エントリ数=3を収得する。
ここで上述した読出ポインタは、スケジューラエントリ部31の書込ポインタとは同一のものとせず、少しずらした構成をとることとする。これにより、内部処理時間差のマージンを設けることができ誤動作を防止することができる。
ステップS201:
(1)上記のように収得したエントリ番号から、スケジューラ読出部35は読み出すパケットの有無の判定を行う。
(2)この結果、スケジューラ読出部35はR_Time=49のタイムスロットはエントリ番号=3なので読出対象パケットが存在するという判定を行う。すなわち、読出ポインタは内部の固定単位時間スロット毎に順次タイムテーブル34にアクセスし、着目時間スロットにパケットがエントリされているか否かの判定を行い、エントリ数=0の場合には以後の処理は行わない。
ステップS202:
(1)エントリ数≠0の場合には、スケジューラ読出部35は上記で得た開始エントリ番号をアドレスとしてスケジューラ管理テーブル33及びフローテーブル32にアクセスして以下の情報を収得する。
・パケット理想出力開始時間(TAT)
・フローID
・バッファ番号
・次エントリ番号
・積算補正値(L')
(2)この結果、スケジューラ読出部35はスケジューラ管理テーブル33及びフローテーブル32から、TAT=49、フローID=25、バッファ番号=250、次エントリ番号=3、L'=6を得る。
ステップS203:
(1)スケジューラ読出部35は読出ポインタ値+1をアドレスとして、タイムテーブル34にアクセスし、開始エントリ番号と終了エントリ番号とエントリ数を収得する。
(2)この場合、スケジューラ読出部35は、タイムテーブル34から、開始エントリ番号=終了エントリ番号=2及びエントリ数=1を得る。
ステップS204:
(1)スケジューラ読出部35は積算補正値L'を算出する。
(2)この場合、スケジューラ読出部35は、L'=L'+R_Time-TAT=6+49-47=8を算出する。
ステップS205:
(1)上記で得たエントリ番号からスケジューラ読出部35は読み出すパケット数=1か否かを判定する。
(2)この場合、スケジューラ読出部35はR_Time=49のタイムスロットはエントリ数=3なので‘1’ではないと判定する。
ステップS206:
(1)上記で得たエントリ数をスケジューラ読出部35がデクリメントする。
(2)この結果、エントリ数-1=3-1=2となる。
ステップS207, S208:
(1)スケジューラ読出部35において、読出ポインタ値+1をアドレスとしてタイムテーブル34にアクセスし、エントリ数及び開始エントリ番号を更新する。
(2)この結果、スケジューラ読出部35は、タイムテーブル34よりにR_Time+1=50で開始エントリ番号及びエントリ数を更新する。
具体的には、着目スロットのステップS206で更新されたエントリ数を次スロットのエントリ数に足すことになる。
ステップS209:
(1)スケジューラ読出部35は、終了エントリ番号をアドレスとしてスケジューラ管理テーブル33にアクセスし、次エントリ番号を次スロットの開始エントリ番号に更新する。
(2)この結果、スケジューラ読出部35は、スケジューラ管理テーブル33から終了エントリ番号=5で次エントリ番号を更新する。
ステップS210:
(1)スケジューラ読出部35は、読出ポインタ値をアドレスとしてタイムテーブル34にアクセスし、タイムテーブル34をクリアする。これは、エントリ番号“1”のパケットの読出が終ったことを示している。
(2)この結果、スケジューラ読出部35は、終了エントリ番号=5で次エントリ番号を更新する。
なお、ステップS205において、エントリ数=1の場合には、上記のステップS206〜S209の処理は行わず、このステップS210にスキップする。
以上がタイムテーブル34からの読出処理となる。
ステップS211:
(1)スケジューラエントリ部31内にあるエントリ番号管理FIFOに該当パケットのエントリ番号を返却する。
(2)この結果、スケジューラエントリ部31は内部エントリ番号管理FIFOにエントリ数=1を返却する。
ステップS212:
(1)スケジューラ読出部35は読出ポインタ値をインクリメントする。
(2)この結果、スケジューラ読出部35は、R_Time=R_Time+1として、読出ポインタをインクリメントし、時間スロットt=50においてパケット番号=3,5,2がエントリされることになる。
ステップS213:
(1)スケジューラ読出部35は、バッファ番号管理FIFO2に該当パケットのバッファ番号を書き込む。これは読出が終了したパケットの番号(アドレス)を返却することを示している。
(2)次にパケット読出制御部14が上記のバッファ番号に対応したパケットをパケット格納領域12から読み出す。
(3)この結果、スケジューラ読出部35からバッファ番号=250がバッファ番号管理FIFO2とパケット読出制御部14に通知され、パケット読出制御部14はこれに対応したパケットをパケット格納領域12から読出して出力パケットとする。
ここで、パケット読出制御部14では内部固定時間スロット毎にスケジューラ部3からバッファ番号管理FIFO2に通知されるバッファ番号を周期的に読み出すことでバッファ部1からパケットの出力を行う。この場合に、FIFO2に読み出すべきパケットが存在しない場合には非スケジュールとなったパケットの読出を行う。これにより、物理的に無駄を与えずにパケットの送信が可能となる。
未登録レジスタの再スケジューリング(再配置)処理動作
次に未登録レジスタからの再スケジューリング手順について図25及び26を参照して説明する。なお、図25はこの再スケジューリング手順の全体を示しており、図26はそのステップの詳細を示したものである。
ステップS300:
スケジューラエントリ部31では、着目スロットがタイムテーブル34の最大値、若しくはその1/2のときに未登録レジスタR0を未登録レジスタR1にコピーする。具体的には、タイムテーブル34がT時間分保有しているとすると、着目スロットがT時及びT/2のときに未登録レジスタR0の値を未登録レジスタR1にコピーする。
ステップS301:
未登録レジスタR0をクリアする。
ステップS302:
未登録レジスタR1のエントリ数=0であるか否かの判定を行う。この場合、エントリ数=40なので未登録レジスタR1にパケットがあることが分かる。
ステップS303:
(1)未登録レジスタR1の開始エントリ番号でスケジューラ管理テーブル33にアクセスし、該当パケットのTATを収得する。
(2)この結果、スケジューラエントリ部は、開始エントリ番号=30でTATを収得する。
以下、スケジューリング手順のステップS109以降と同様の処理を実行することになる。
このように、2つの未登録レジスタR0、R1を用いることにより、タイムテーブル34の範囲を越えて行う場合でも、半周期毎に他方の未登録レジスタR1にコピーして通常のスケジューリングと平行したスケジューリングを行うので、常にタイムテーブル34の範囲内と同等のスケジューリングを実現していることになる。
(付記1)
入力パケットを格納するパケット格納領域を有するバッファ部と、
内部の固定単位時間スロットで刻まれるタイムテーブルを有し、該バッファ部から与えられたフロー毎の入力パケットの長さと前回のパケット出力終了時間と所望送信レートを規定するパケット出力間隔とに基づいて該入力パケットの理想出力終了時間を算出して記憶するとともに該タイムテーブルにおける該前回のパケット出力終了時間の次の時間スロットに該入力パケットのエントリを登録するスケジューラ部と、
を備え、該バッファ部が、該タイムテーブルに登録したエントリに対応する該出力終了時間を該スケジューラ部から受けて該入力パケットをその出力終了時間に該パケット格納領域から出力することを特徴としたパケットシェーピング装置。
(付記2)付記1において、
該バッファ部が、該パケット格納領域から実際にパケットを出力する際に該スケジューラ部に該パケットのフロー識別子を通知し、該スケジューラ部では、該フロー識別子のパケットに関し、該算出した理想出力終了時間と該実際にパケットを出力した時間との差分をレート補正値として計算し、次パケットの理想出力終了時間から該レート補正値分だけ減算することを特徴としたパケットシェーピング装置。
(付記3)付記2において、
該スケジューラ部が、該レート補正値を積算し、一度に使用できるレート補正値を規制することを特徴としたパケットシェーピング装置。
(付記4)付記1において、
該スケジューラ部と該バッファ部との間に出力すべきパケットの情報を受け渡しするためのFIFOをさらに設け、該バッファ部は内部の固定単位時間毎に該FIFOを巡回的に読み出すことにより該パケット格納領域からパケットの送出を行うことを特徴としたパケットシェーピング装置。
(付記5)付記4において、
該スケジューリング部が、該FIFOに読み出すべきパケット情報が存在しない場合は、スケジューリング対象でないパケットを該パケット格納領域から送出することを特徴としたパケットシェーピング装置。
(付記6)付記1において、
該スケジューラ部が、該タイムテーブルへのエントリ登録を行うとき、同一の時間スロットにおいて複数のエントリが発生したとき、該エントリを登録することを特徴としたパケットシェーピング装置。
(付記7)付記6において、
該バッファ部が、該複数のエントリに対し、一番最初にエントリされた番号のパケットのみに対して読出処理を行い、残りは後続の時間スロットのエントリにリンクすることを特徴としたパケットシェーピング装置。
(付記8)付記1において、
該スケジューラ部が、該タイムテーブルより未来の時間スロットにエントリ登録が必要なパケットのエントリ番号は別のテーブルに登録しておき、該タイムテーブルの1/2周期毎に再スケジューリングを行うことを特徴としたパケットシェーピング装置。
(付記9)付記8において、
該スケジューラ部が、該タイムテーブルを該固定時間スロット毎にスライディングする構成とし、該再スケジューリングと合わせることで永久的なエントリ登録を可能にしたことを特徴としたパケットシェーピング装置。
(付記10)付記1において、
該スケジューラ部が、該タイムテーブルのエントリ登録と読出処理に時間差を設けることにより、内部での処理時間差のマージンを確保することを特徴としたパケットシェーピング装置。
(付記11)付記1において、
該パケットが可変長パケットであることを特徴としたパケットシェーピング装置。
本発明に係るパケットシェーピング装置のスケジューリング方式概要(1)を示した図である。 本発明に係るパケットシェーピング装置のレート補正処理の概要を示した図である。 本発明に係るパケットシェーピング装置のスケジューリング方式概要(2)を示した図である。 本発明に係るパケットシェーピング装置のエントリ競合時の処理概要を示した図である。 本発明に係るパケットシェーピング装置のテーブル超過時の処理概要を示した図である。 本発明に係るパケットシェーピング装置におけるエントリスライディング処理の概要を示した図である。 本発明に係るパケットシェーピング装置の一実施例を示したブロック図である。 図7に示したパケットシェーピング装置をIPルータに適用したときの動作を概略的に示したブロック図である。 本発明に係るパケットシェーピング装置に用いるタイムテーブルの構成例を示した図である。 本発明に係るパケットシェーピング装置に用いるフローテーブルの構成例を示した図である。 本発明に係るパケットシェーピング装置に用いるスケジューラ管理テーブルの構成例を示した図である。 本発明に係るパケットシェーピング装置で用いる各テーブル間の動作例を示した図である。 本発明に係るパケットシェーピング装置においてタイムテーブルにエントリするまでのスケジューリング手順例を示したフローチャート図である。 図13に示したスケジューリング手順の詳細を示したフローチャート図(その1)である。 図13に示したスケジューリング手順の詳細を示したフローチャート図(その2)である。 図13に示したスケジューリング手順の詳細を示したフローチャート図(その3)である。 図13に示したスケジューリング手順の詳細を示したフローチャート図(その4)である。 図13に示したスケジューリング手順の詳細を示したフローチャート図(その5)である。 本発明に係るパケットシェーピング装置におけるバッファからの読出手順例を示したフローチャート図である。 図19に示した読出手順の詳細を示したフローチャート図(その1)である。 図19に示した読出手順の詳細を示したフローチャート図(その2)である。 図19に示した読出手順の詳細を示したフローチャート図(その3)である。 図19に示した読出手順の詳細を示したフローチャート図(その4)である。 図19に示した読出手順の詳細を示したフローチャート図(その5)である。 本発明に係るパケットシェーピング装置においてタイムテーブルへの再スケジューリング手順例を示したフローチャート図である。 図25に示した再スケジューリング手順の詳細例を示したフローチャート図である。 従来例を示したブロック図である。
符号の説明
1 バッファ部
11 パケット書込制御部
12 パケット格納領域(バッファ)
13 バッファ管理メモリ
14 パケット読出制御部
2 バッファ番号管理FIFO
3 スケジューラ部
31 スケジューラエントリ部
32 フローテーブル
33 スケジューラ管理テーブル
34 タイムテーブル
35 スケジューラ読出部
LCT 前パケット出力終了時間
ICI パケット出力間隔
Enable パケットEnable
L 補正値
L' 積算補正値
TAT パケット理想出力開始時間
図中、同一符号は同一又は相当部分を示す。

Claims (5)

  1. 入力パケットを格納するパケット格納領域を有するバッファ部と、
    内部の固定単位時間スロットで刻まれるタイムテーブルを有し、該バッファ部から与えられたフロー毎の入力パケットの長さと前回のパケット出力終了時間と所望送信レートを規定するパケット出力間隔とに基づいて該入力パケットの理想出力終了時間を算出して記憶するとともに該タイムテーブルにおける該前回のパケット出力終了時間の次の時間スロットに該入力パケットのエントリを登録するスケジューラ部と、
    を備え、該バッファ部が、該タイムテーブルに登録したエントリに対応する該出力終了時間を該スケジューラ部から受けて該入力パケットをその出力終了時間に該パケット格納領域から出力することを特徴としたパケットシェーピング装置。
  2. 請求項1において、
    該バッファ部が、該パケット格納領域から実際にパケットを出力する際に該スケジューラ部に該パケットのフロー識別子を通知し、該スケジューラ部では、該フロー識別子のパケットに関し、該算出した理想出力終了時間と該実際にパケットを出力した時間との差分をレート補正値として計算し、次パケットの理想出力終了時間から該レート補正値分だけ減算することを特徴としたパケットシェーピング装置。
  3. 請求項2において、
    該スケジューラ部が、該レート補正値を積算し、一度に使用できるレート補正値を規制することを特徴としたパケットシェーピング装置。
  4. 請求項1において、
    該スケジューラ部と該バッファ部との間に出力すべきパケットの情報を受け渡しするためのFIFOをさらに設け、該バッファ部は内部の固定単位時間毎に該FIFOを巡回的に読み出すことにより該パケット格納領域からパケットの送出を行うことを特徴としたパケットシェーピング装置。
  5. 請求項4において、
    該スケジューリング部が、該FIFOに読み出すべきパケット情報が存在しない場合は、スケジューリング対象でないパケットを該パケット格納領域から送出することを特徴としたパケットシェーピング装置。
JP2005006554A 2005-01-13 2005-01-13 パケットシェーピング装置 Withdrawn JP2006197235A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005006554A JP2006197235A (ja) 2005-01-13 2005-01-13 パケットシェーピング装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005006554A JP2006197235A (ja) 2005-01-13 2005-01-13 パケットシェーピング装置

Publications (1)

Publication Number Publication Date
JP2006197235A true JP2006197235A (ja) 2006-07-27

Family

ID=36802953

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005006554A Withdrawn JP2006197235A (ja) 2005-01-13 2005-01-13 パケットシェーピング装置

Country Status (1)

Country Link
JP (1) JP2006197235A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011049983A (ja) * 2009-08-28 2011-03-10 Fujitsu Ltd フレーム出力方法及びフレーム出力装置
JP2011103568A (ja) * 2009-11-11 2011-05-26 Nippon Hoso Kyokai <Nhk> 可変長パケットの送信装置、受信装置及びプログラム
JP2012075074A (ja) * 2010-08-30 2012-04-12 Fujitsu Ltd シェーピング装置及び方法
US9143453B2 (en) 2012-12-21 2015-09-22 Fujitsu Limited Relay apparatus and buffer control method

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011049983A (ja) * 2009-08-28 2011-03-10 Fujitsu Ltd フレーム出力方法及びフレーム出力装置
JP2011103568A (ja) * 2009-11-11 2011-05-26 Nippon Hoso Kyokai <Nhk> 可変長パケットの送信装置、受信装置及びプログラム
JP2012075074A (ja) * 2010-08-30 2012-04-12 Fujitsu Ltd シェーピング装置及び方法
US8717891B2 (en) 2010-08-30 2014-05-06 Fujitsu Limited Shaping apparatus and method
US9143453B2 (en) 2012-12-21 2015-09-22 Fujitsu Limited Relay apparatus and buffer control method

Similar Documents

Publication Publication Date Title
US8306045B2 (en) Packet forwarding apparatus and method for discarding packets
JP4394988B2 (ja) パケット読出し制御方法及び装置
US6661774B1 (en) System and method for traffic shaping packet-based signals
EP1662725A1 (en) Cut-through switching in a network device
JP5025506B2 (ja) 中継装置と、ネットワークシステムと、ネットワークシステムの制御方法
DK2668753T3 (en) DEVICE AND PROCEDURE FOR RECEIVING AND FORWARDING PACKAGES
US20120134371A1 (en) Queue scheduling method and apparatus
JP2007181085A (ja) 帯域管理装置
JP2006197235A (ja) パケットシェーピング装置
JP2010200264A (ja) バッファ管理方法、及びパケット通信装置
JP2008167305A (ja) パケット並列処理装置およびパケット並列処理方法
JP5609584B2 (ja) シェーピング装置及び方法
TWI435574B (zh) 處理裝置及其操作方法
JP2006101510A (ja) トラフィック重み係数を用いてトラフィックをルーティングするための方法
SE453142B (sv) Signaleringssystem for utbyte av data mellan signaleringsenheter medelst datameddelanden
US7822034B2 (en) Path controls apparatus and table updating method
US8363653B2 (en) Packet forwarding method and device
US7782780B1 (en) System and method for arbitration of multicast data packets using holds
CN114553881A (zh) 多数据中心流量调度方法及系统
JP6933815B2 (ja) 通信制御システム及び通信制御方法
JP5359692B2 (ja) フレーム出力方法及びフレーム出力装置
US8289989B1 (en) System and method for arbitration using availability signals
JP4607003B2 (ja) パケット処理装置
US7729242B2 (en) 3-level queuing scheduler supporting flexible configuration and etherchannel
JP3838501B2 (ja) 光バースト信号ルーチング方式

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20080401