JP3753070B2 - ノード装置 - Google Patents
ノード装置 Download PDFInfo
- Publication number
- JP3753070B2 JP3753070B2 JP2002000479A JP2002000479A JP3753070B2 JP 3753070 B2 JP3753070 B2 JP 3753070B2 JP 2002000479 A JP2002000479 A JP 2002000479A JP 2002000479 A JP2002000479 A JP 2002000479A JP 3753070 B2 JP3753070 B2 JP 3753070B2
- Authority
- JP
- Japan
- Prior art keywords
- queue
- packet
- state variable
- list
- queues
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2408—Traffic characterised by specific attributes, e.g. priority or QoS for supporting different services, e.g. a differentiated services [DiffServ] type of service
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Description
【発明の属する技術分野】
本発明は、受信したパケットあるいはセルをその属性に基づいていずれかの待ち行列へと格納し、各待ち行列に設定された送出条件に基づいてパケットの送出を制御するルータあるいはスイッチ等のノード装置に関し、特に、非常に多くの待ち行列から高速でパケットを送出するノード装置に関する。
【0002】
【従来の技術】
パケット通信では可変長のパケットにより通信が行われ、ATM通信では固定長のセルにより通信が行われる。そして、これらパケットおよびセルには、その中に含まれる情報等によりそれぞれ属性が与えられている。ルータやスイッチは、パケットやセルをその属性に応じて処理する。
【0003】
以下、本明細書では簡単化のため、ルータまたはスイッチ等のノード装置を単にノード装置と称し、パケットまたはセルを単にパケットと称することとする。
【0004】
一般に、ノード装置は、パケットの属性に対応する複数の待ち行列を有しており、各待ち行列には送出条件が設定されている。ノード装置は、受信したパケットをその属性に応じて、いずれかの待ち行列に格納し、各待ち行列に設定された送出条件に従って送出する。待ち行列は、キューとも呼ばれる。
【0005】
従来のパケット送出制御方法として、Weighted Round Robin方式(M.Katavenis他,"Weighted round−robin cell multiplexing a general−purpose ATM switch chip",IEEE Journals on Salectec Areas in Communication,Col.9,No.8,1991、以下WRR方式と称す)がある。WRR方式では、各待ち行列に重みが設定され、設定された重みの比に従って各待ち行列からパケットが送出される。
【0006】
WRR方式のノード装置には待ち行列毎にウエイトが設定されている。ウエイトは各待ち行列に与えられた重みである。各待ち行列は、回線の帯域をウエイトに応じて分け合ってパケットを送出する。また、WRR方式のノード装置は、待ち行列毎のカウンタを持っている。各カウンタには、それぞれに対応した待ち行列から送出可能なパケットの数が記録されている。カウンタの初期値はウエイトの値である。また、各待ち行列には巡回順所が定めれている。
【0007】
本方式では、ノード装置は、1つ以上のパケットが格納されており、かつカウンタが1以上の待ち行列を巡回順序に従って探す。ノード装置は、1つ以上のパケットが格納されておりかつカウンタが1以上の待ち行列を見つけると、その待ち行列から1つのパケットを送出し、そのカウンタを1つ減じる。そして、ノード装置は、パケットを送出した待ち行列の次の待ち行列から巡回順序に従って、再度、1つ以上のパケットが格納されておりかつカウンタが1以上の待ち行列を探す。
【0008】
待ち行列を一巡しても、1つ以上のパケットが格納されておりかつカウンタが1以上の待ち行列、すなわちパケットを送出可能な待ち行列がなければ、ノード装置は、全ての待ち行列のカウンタを初期値、すなわちウエイトの値に戻した後に再び処理を開始する。カウンタを初期値に戻す動作を、以下リセット動作と称する。
【0009】
したがって、WRR方式では、1つの待ち行列だけがパケットを送出可能なとき、その待ち行列からパケットが送出されると、その後ノード装置は他の全ての待ち行列についてパケットの送出が可能か否か検査する。ノード装置は、1つのパケットを送出するために、最大で、全ての待ち行列を検査する必要がある。その処理量は待ち行列数に比例するので、待ち行列数が多くなれば、ノード装置のパケット処理速度を上げることができなくなる。
【0010】
WRR方式においてパケット処理を高速化するための第1の従来方法が、特開2001−053798号公報に記載されている。特開2001−053798号公報に記載された方法では、連想メモリ(Content Addressable Memory;CAM)がノード装置に備えられ、パケットの送出が可能な待ち行列の選択に利用される。連想メモリには各待ち行列の状態が記録されており、検索語と一致する待ち行列を高速に検索することができる。ノード装置は、パケットを送出可能な状態を示す検索語で連想メモリを検索することにより、次にパケットを送出する待ち行列を見つける。
【0011】
本方法のノード装置は、待ち行列数に関係なく、常に一定時間で、高速に、パケットの送出が可能な待ち行列を検索できるので、待ち行列の数が多い場合の高速処理に有効である。
【0012】
WRR方式においてパケット処理を高速化するための第2の従来方法が、特開平11−041316号公報に記載されている。特開平11−041316号公報に記載された方法では、ノード装置は、第1および第2のリストを管理している。第1のリストは、パケットを送出可能な待ち行列、すなわちカウンタが1以上でかつ1つ以上のパケットが格納されている待ち行列の番号を管理する。第2のリストは、1つ以上のパケットが格納されているが、カウンタがゼロであるためパケットを送出できないでいる待ち行列の番号を管理する。
【0013】
ノード装置は、第1のリストの先頭にある待ち行列の番号を取りだし、その番号の待ち行列からパケットを送出する。パケットを送出した待ち行列がまだパケットを送出可能な状態のとき、ノード装置は、その待ち行列の番号を第1のリストの最後に追加する。また、パケットを送出した待ち行列にまだパケットが残っているが、カウンタがゼロになったとき、ノード装置は、その待ち行列を第2のリストに追加する。また、パケットを送出した待ち行列のカウンタがゼロになると、ノード装置は、その待ち行列をいずれのリストにも追加しない。
【0014】
そして、ノード装置は、パケットを送出可能な待ち行列がなくなったとき、すなわち第1のリストが空になったとき、全ての待ち行列のカウンタに対してリセット動作を行い、第2のリスト内の待ち行列番号を全て第1のリストに追加して、再びパケット処理を開始する。
【0015】
第3の従来方法として、従来の他のパケット送出制御方法であるDeficit Round Robin方式(M.Shreedhar and G.Varghese,Efficient Fair Queueing usingDeficit Round Robin,IEEE/ACM Transactions on Networking、以下DRR方式と称す)がある。DRR方式は、ノード装置がウェイトとカウンタを有する点ではWRR方式と同様である。
【0016】
しかし、DRR方式は、各待ち行列からパケットを1つずつ巡回的に送出するWRR方式と異なり、1つの待ち行列の送出可能なパケットが連続して送出される。また、DRR方式では、カウンタの値は、送出可能な、パケットのデータ量(例えば、バイト)である点でWRR方式と異なる。また、ウェイトもデータ量の単位で定められる。さらに、カウンタのリセット動作では、カウンタにウエイトが加算される。
【0017】
そのため、ノード装置は、上述された第1のリストを管理している。そして、ノード装置は、第1のリストの先頭にある待ち行列の番号を取り出し、その番号の待ち行列に格納されているパケットが無くなるか、あるいはカウンタの値が先頭パケットのパケット長よりも小さくなるまで、連続してパケットを送出する。ノード装置は、1つのパケットを送出すると、そのパケット長をカウンタから減算する。
【0018】
ノード装置は、1つの待ち行列からパケットを送信可能なだけ送信すると、その待ち行列のカウンタに対してリセット動作を行った後、その待ち行列に1つ以上のパケットが蓄積されていれば、その待ち行列を第1のリストの最後に追加する。
【0019】
従来のさらに他のパケット送出制御方法では、WRR方式やDRR方式のようにカウンタは用いられず、送信時刻が用いられる。その一例として、Weighted Fair Queueing方式(A.K.Parekh and R.G.Gallager,A Generalized processor sharing approach to flow control in integrated services networks ‐ The single node case,IEEE INFOCOM92,Vol2,1992、以下WFQ方式と称す)や、WFQ方式から派生した様々な方式がある。
【0020】
WFQ方式では、ノード装置は、各待ち行列から最後に送出されたパケットの仮想的な送信終了時刻を記録しており、最も送信終了時刻が早い待ち行列から順番にパケットを送出する。したがって、WFQ方式では、ノード装置は、パケットを送出するとき、全ての待ち行列の中から最も送信終了時刻の早いものを探す必要がある。送信終了時刻の最も早い待ち行列を探す処理の計算量は、通常、待ち行列数に比例する。したがって、待ち行列数が多くなれば、ノード装置のパケット処理速度を上げることができなくなる。
【0021】
WFQ方式においてパケット処理を高速化した従来方法は、パケットの送信予定を示すカレンダが用いられる。なお、このカレンダは、タイムホイールや、その他の様々な呼び方で呼ばれる。カレンダは複数のエントリを含む。各エントリはそれぞれ時刻を示すテーブルであり、時系列に並んでいる。各エントリには、それに対応した時刻にパケットを送信する予定の待ち行列の番号が記録されている。
【0022】
ノード装置は、送信終了時刻に基づいてカレンダを作成し、パケットを送信するときにそのカレンダを用いる。各待ち行列の送信時刻に対応したエントリには、その待ち行列の番号が記されている。パケットを送出するとき、ノード装置は、カレンダのエントリを時系列順に読み出すことにより、パケットを送出する待ち行列を得る。これにより、ノード装置は、パケットを送出するとき、全ての待ち行列の中から最も送信終了時間の早いものを見つけるのに、待ち行列の数に比例した大量の処理を行う必要がない。
【0023】
また、WFQ方式に類似した様々な方式が提案されており、その一例である第4の従来方法が特開2000−183959号公報に記載されている。特開2000−183959号公報に記載されている方法によれば、ノード装置は、カレンダの各エントリに、そのエントリに対応した時刻にパケットを送信する待ち行列を記録する。その際、ノード装置は、各エントリに複数の待ち行列をリスト形式で記録することができる。
【0024】
【発明が解決しようとする課題】
第1の従来方式では、ノード装置は連想メモリを持つ必要がある。連想メモリは通常のメモリに比べて非常に高価なため、第1の従来方式のノード装置のコストは非常に高くなっていた。また、第1の従来方式のノード装置は、連想メモリの他にカウンタなどのために通常のメモリをも持つ必要があり、そのため、さらにコストが上がっていた。
【0025】
第2の従来方式では、第1または第2のリストは図14のように、各データがポインタで連結された構造をとるのが一般的である。この構造では、直前のポインタが読み出されるまで、次のポインタを読出すことができない。そのため、ノード装置は、ポインタの読み出し間隔よりも、パケットの送信間隔を短くすることはできない。したがって、第2の従来方式によれば、超高速回線に適用可能なノード装置を作れなかった。
【0026】
また、第3の従来方式においても、ノード装置は、リストで待ち行列番号を管理するので、第2の従来方式と同様に超高速回線に適用することはできなかった。
【0027】
第2の従来方式のノード装置において、待ち行列の番号を記録するリストを、図15に示されたように待ち行列番号を順番に並べたテーブルで管理すると、前の待ち行列の番号の読み出し前に次の待ち行列の番号を読み出せるため、高速化が可能である。しかし、リストの数だけテーブルが必要なので、第2の従来方式のノード装置のように複数のリストを管理するには大きなメモリが必要であった。
【0028】
第4の従来方式では、ノード装置は、送信時刻毎に待ち行列番号をリストで管理している。そのため、各データがポインタで連結された一般的な構造でリストを管理すると、メモリから待ち行列番号を読み出すのにかかる時間よりも、パケット送出間隔を短くできず、ノード装置は高速回線に対応できない。
【0029】
第2〜第4の従来方式では、ノード装置は、リストから待ち行列の番号を取り出し、取その番号の待ち行列に関する状態変数を読み出した後に、パケットを送信する。パケットを送信すると、ノード装置は状態変数を更新し、その結果に従って待ち行列の番号を適切なリストに再び追加する。メモリからのデータの読み出しは、他の処理に比べて時間がかかるため、状態変数のメモリからの読み出しがノード装置の高速化を妨げていた。
【0030】
本発明の目的は、その属性により多数の待ち行列に分配したパケットを、各待ち行列に設定された送出条件に従って送出する制御を高速で行うノード装置を提供することである。
【0031】
【課題を解決するための手段】
上記目的を達成するために、本発明のノード装置は、受信されたパケットを複数の待ち行列のいずれかに格納し、前記各待ち行列がパケットを送信可能な状態であるか否かを、前記待ち行列毎の状態変数により判断し、パケットを送信可能な状態の前記待ち行列から前記パケットを送出するノード装置であって、
パケットを送信可能な状態の待ち行列の番号が書き込まれ、該番号の書き込まれた順序を管理するリスト手段と、
全ての待ち行列に関する状態変数を保存する状態変数保存手段と、
前記リストの先頭から所定範囲内に番号のある待ち行列に関する状態変数だけを一時的に保存する、前記状態変数保存手段よりもデータ量の少ない状態変数一時保存手段と、
前記リスト手段の先頭から取り出された番号の待ち行列からパケットを送出し、前記状態変数一時保存手段にある該待ち行列の状態変数を更新する制御手段を有している。
【0032】
したがって、本発明のノード装置は、リスト手段の先頭付近の待ち行列の状態変数を状態変数保存手段から、それよりデータ量の小さい状態変数一時保存手段に先読みしているので、パケットを送出するときに、状態変数に関する処理を高速で行うことができる。
【0033】
なお、前記制御手段は、前記リスト手段の先頭から取り出された待ち行列からパケットを送出するときに更新した前記状態変数から、該待ち行列がまだパケットを送信可能な状態であれば前記リスト手段に該待ち行列の番号を追加し、
前記状態変数一時保存手段は、前記制御手段が前記リスト手段から番号を取り出したとき、前記リスト手段の先頭から前記所定範囲となった待ち行列に関する状態変数を新たに保存し、また、前記リスト手段に待ち行列の番号が追加されたとき、前記リスト手段内の番号の数が前記所定範囲内であれば、該待ち行列に関する状態変数を保存してもよい。
【0034】
したがって、本発明のノード装置は、待ち行列の状態変数を状態変数保存手段から状態変数一時保存手段に常時先読みしている状態となるので、パケットを送出するときに、状態変数に関する処理を高速で行うことができる。
【0035】
本発明の他のノード装置は、受信されたパケットを複数の待ち行列のいずれかに格納し、前記各待ち行列がパケットを送信可能な状態であるか否かを、前記待ち行列毎の状態変数により判断し、パケットを送信可能な状態の前記待ち行列から前記パケットを送出するノード装置であって、
パケットを送信可能な状態の待ち行列の番号が書き込まれ、該番号の書き込まれた順序を管理するリスト手段と、
全ての待ち行列に関する状態変数を保存する状態変数保存手段と、
所定数以下の待ち行列に関する状態変数を一時的に保存する、前記状態変数保存手段よりもデータ量の少ない状態変数一時保存手段と、
前記状態変数一時保存手段に状態変数が保存されている各待ち行列の番号を、前記リスト手段の代わりに保持する少なくとも1つの送信候補手段と、
前記送信候補手段に保持されている番号の待ち行列のうち、パケットを送信可能なものからパケットを送出し、前記状態変数一時保存手段にある該待ち行列の状態変数を更新する制御手段を有している。
【0036】
なお、前記状態変数一時保存手段は、該状態変数一時保存手段に空きが生じると、前記リスト手段の先頭にある番号の待ち行列に関する状態変数を新たに保存し、また、新たに、パケットを送信可能な状態となった待ち行列があるときに前記状態変数一時保存手段に空きがあれば、該待ち行列に関する状態変数を新たに保存し、
前記制御手段は、いずれかの待ち行列からパケットを送出したときに更新した状態変数から、該待ち行列がまだパケットを送信可能な状態の場合、前記リスト手段が空ならば、該状態変数を前記状態変数一時保存手段に戻し、前記リスト手段が空でなければ、該状態変数を前記状態変数保存手段へ戻してもよい。
【0037】
また、前記パケットが、その属性に応じて、いずれかの待ち行列に格納され、
前記状態変数は、前記属性と関連付けて各待ち行列に付与されたウエイトあるいは帯域と、該待ち行列から送出されたパケットとから算出される、該待ち行列から送出可能なパケット数、あるいは該待ち行列からパケットとして送出可能なデータ量であってもよい。
【0038】
また、前記待ち行列は、少なくとも1つのパケットを格納しており、前記状態変数によりパケットの送出が許容されているとき、パケットを送出可能な状態であるとしてよい。
【0039】
また、前記リスト手段が複数のリストからなってもよい。
【0040】
その場合、前記リスト手段内の複数のリストが巡回的に選択されてもよい。
【0041】
また、前記リスト手段内の複数のリストが、番号が書き込まれるときには格納されている待ち行列の数の少ないものが選択され、番号が取り出されるときには格納されている待ち行列の数の多いものが選択されてもよい。
【0042】
したがって、本発明のノード装置は、リスト手段が複数のリストに分離されているので、各リストのデータがポインタで連結された構造であっても、待ち行列番号をポインタの読み出し時間より短い間隔で読出すことが可能である。
【0043】
なお、待ち行列の番号が、該待ち行列に割り当てられた帯域から判断されたパケットを送出すべき時刻毎に、記録されるカレンダ手段をさらに有し、
前記制御手段が、前記カレンダ手段において現在の時刻にパケットを送出すべきとされる待ち行列の番号を該カレンダ手段から前記リスト手段に移してもよい。
【0044】
本発明のさらに他のノード装置は、受信されたパケットを複数の待ち行列のいずれかに格納し、前記各待ち行列がパケットを送信可能な状態であるか否かを、前記待ち行列毎の状態変数により判断し、パケットを送信可能な状態の前記待ち行列から前記パケットを送出するノード装置であって、パケットを送信可能な状態の待ち行列の番号が書き込まれ、該番号の書き込まれた順序を管理する第1のリスト手段と、送信待ちの状態の待ち行列の番号が書き込まれ、該番号の書き込まれた順序を管理する第2のリスト手段と、全ての待ち行列に関する状態変数を保存する状態変数保存手段と、前記第1のリストの先頭から所定範囲内に番号のある待ち行列に関する状態変数を一時的に保存し、さらに、前記第1のリストに前記所定範囲を満たす待ち行列の番号がないとき、足りない分を前記第2のリストの先頭からとって一時的に保存する、前記状態変数保存手段よりもデータ量の少ない状態変数一時保存手段と、前記第1のリストの先頭から取り出された番号の待ち行列からパケットを送出し、前記状態変数一時保存手段にある該待ち行列の状態変数を更新する制御手段を有している。
【0045】
なお、前記制御手段は、前記リスト手段の先頭から取り出された待ち行列からパケットを送出するときに更新した前記状態変数から、該待ち行列がまだパケットを送信可能な状態であれば前記第1のリスト手段に該待ち行列の番号を追加し、該待ち行列が送信待ちの状態であれば前記第2のリスト手段に該待ち行列の番号を追加し、
前記状態変数一時保存手段は、前記制御手段が前記第1のリスト手段から番号を取り出したとき、前記第1のリスト手段の先頭から前記所定範囲となった待ち行列に関する状態変数を新たに保存し、また、前記第1のリスト手段に待ち行列の番号が追加されたとき、前記第1のリスト手段内の番号の数が前記所定範囲内であれば、該待ち行列に関する状態変数を保存し、また、前記第2のリスト手段に待ち行列の番号が追加されたとき、前記第1のリスト手段内の番号数と前記第2のリスト手段内の番号の数との和が前記所定範囲内であれば、該待ち行列に関する状態変数を保存してもよい。
【0046】
本発明のさらに他のノード装置は、受信されたパケットを複数の待ち行列のいずれかに格納し、前記各待ち行列がパケットを送信可能な状態であるか否かを、前記待ち行列毎の状態変数により判断し、パケットを送信可能な状態の前記待ち行列から前記パケットを送出するノード装置であって、
パケットを送信可能な状態の待ち行列の番号が書き込まれ、該番号の書き込まれた順番を管理する第1のリスト手段と、
送信待ちの状態の待ち行列の番号が書き込まれ、該番号の書き込まれた順序を管理する第2のリスト手段と、
全ての待ち行列に関する状態変数を保存する状態変数保存手段と、
所定数以下の待ち行列に関する状態変数を一時的に保存する、前記状態変数保存手段よりもデータ量の少ない状態変数一時保存手段と、
前記状態変数一時保存手段に状態変数が保存されている各待ち行列の番号を、前記第1または第2のリスト手段の代わりに保持する少なくとも1つの送信候補手段と、
前記送信候補手段に保持されている番号の待ち行列のうち、パケットを送信可能なものからパケットを送信し、前記状態変数一時保存手段にある該待ち行列の状態変数を更新する制御手段を有している。
【0047】
なお、状態変数一時保存手段は、該状態変数一時保存手段に空きが生じると、前記第1のリスト手段の先頭にある番号の待ち行列に関する状態変数を新たに保存し、前記第1のリスト手段が空ならば、前記第2のリスト手段の先頭にある番号の待ち行列に関する状態変数を新たに保存し、また、新たに、パケットを送信可能な状態あるいは送信待ちの状態となった待ち行列があるときに前記状態変数一時保存手段に空きがあれば、該待ち行列に関する状態変数を新たに保存し、
前記制御手段は、いずれかの待ち行列からパケットを送出したときに更新した状態変数から、該待ち行列がパケットを送信可能な状態の場合、前記第1のリスト手段が空ならば、該状態変数を前記状態変数一時保存手段に戻し、前記第1のリスト手段が空でなければ、該状態変数を前記状態変数保存手段へ戻し、また、いずれかの待ち行列からパケットを送出したときに更新した状態変数から、該待ち行列が送信待ちの状態の場合、前記第1および第2のリスト手段が空ならば、該状態変数を前記状態変数一時保存手段へ戻し、前記第1または第2のリスト手段が空でなければ、該状態変数を前記状態変数保存手段へ戻してもよい。
【0048】
また、前記パケットは、その属性に応じて、いずれかの待ち行列に格納され、
前記状態変数は、前記属性と関連付けて各待ち行列に付与されたウエイトあるいは帯域と、該待ち行列から送出されたパケットとから算出される、該待ち行列から送出可能なパケット数、あるいは該待ち行列からパケットとして送出可能なデータ量であってもよい。
【0049】
また、前記待ち行列は、少なくとも1つのパケットを格納しており、前記状態変数によりパケットの送出が許容されているとき、パケットを送出可能な状態であるとしてもよい。
【0050】
また、前記待ち行列は、少なくとも1つのパケットを格納しているが、前記状態変数からパケットを送信可能でないとき、送信待ちの状態であるとしてもよい。
【0051】
また、前記第1および第2のリスト手段が、それぞれ複数のリストからなってもよい。
【0052】
その場合、前記第1および第2のリスト手段内の複数のリストは、それぞれ巡回的に選択されてもよい。
【0053】
また、前記第1および第2のリスト手段内の複数のリストは、それぞれ、番号が書き込まれるときには格納されている待ち行列の数の少ないものが選択され、番号が取り出されるときには格納されている待ち行列の数の多いものが選択されてもよい。
【0054】
【発明の実施の形態】
本発明の一実施形態について図面を参照して詳細に説明する。
【0055】
図1は、本実施形態のノード装置の構成を示すブロック図である。
【0056】
図1を参照すると、ノード装置100は、パケット振り分け部101、待ち行列102−1〜102−n、パケット出力部103、送信可能リスト104−1,104−2、送信待ちリスト105−1,105−2、リセット制御部106、入力制御部107、出力制御部108、状態変数保存部109および状態変数一時保存部110を有している。
【0057】
パケット振り分け部101は、回線L1からパケットを受信し、そのパケットの属性を調べて格納すべき待ち行列を選択する。ノード装置の一例として、ルータは、受信パケットの送信元IPアドレス、送信先IPアドレス、第4層プロトコル番号、送信元ポート番号、送信先ボート番号、TOS(Type of Service)情報等の属性から待ち行列を決定する。ノード装置の他の例として、イーサスイッチは、受信パケットの送信元MACアドレス、送信先MACアドレス、IEEE802.1p優先度、VLAN−ID等の属性から待ち行列を決定する。
【0058】
待ち行列102−1〜102−nは、パケット振り分け部101により属性毎に振り分けられたパケットを一時格納する。ここでは、待ち行列の数はnであり、本実施形態は待ち行列数nが多数の場合に有効である。
【0059】
パケット出力部103は、出力制御部108からの指示された待ち行列の先頭から1つのパケットを取り出して回線L2に送出する。
【0060】
送信可能リスト104−1,104−2は、パケットの送信が可能な待ち行列の番号を保持する。パケットの送信が可能な待ち行列とは、カウンタが1以上であり、かつ1つ以上のパケットが格納されている待ち行列である。なお、基本的に、送信可能な待ち行列の番号の書き込みは、送信可能リスト104−1および送信可能リスト104−2に交互に行われ、番号の取り出しも交互に行なわれる。
【0061】
送信待ちリスト105−1,105−2は、パケットの送信待ち状態の待ち行列の番号を保持する。パケットの送信待ち状態とは、1つ以上のパケットが格納されているがカウンタがゼロ以下の状態である。なお、基本的に、送信待ちの待ち行列の番号の書き込みも、送信待ちリスト105−1および送信待ちリスト105−2に交互に行われる。
【0062】
リセット制御部106は出力制御部108から指示があると、リセット動作として、送信待ちリスト105−1の内容を送信可能リスト104−1に移し、送信待ちリスト105−2の内容を送信可能リスト104−2に移す。
【0063】
入力制御部107は、受信したパケットを格納すべき待ち行列の状態変数を状態変数保存部109または状態変数一時保存部110から読み出す。そして、入力制御部107は、その状態変数に従って、待ち行列番号を、送信可能リスト104−1,104−2または送信待ちリスト105−1,105−2のうちいずれかに追加する。
【0064】
出力制御部108は、各待ち行列からのパケットの送出を制御するために、まず、送信可能リスト104−1または104−2の先頭から待ち行列番号を取り出し、その番号の待ち行列に関する状態変数を状態変数一時保存部110から読み出す。なお、このとき出力制御部108は、送信可能リスト104−1または送信可能リスト104−2から交互に待ち行列番号を読出す。そして、出力制御部108は、その待ち行列のパケットの送出をパケット出力部203に指示する。また、出力制御部108は、状態変数を更新し、更新された状態変数により待ち行列番号をリストに追加する。また、出力制御部108は、パケットの送出をパケット出力部203に指示したとき、送信可能リスト104−1,104−2の双方が空になったら、リセット制御部106にリセット動作を指示する。
【0065】
状態変数保存部109は、各待ち行列に関する状態変数を保持する。状態変数とは、ウエイトおよびカウンタの値や、リセット状態、待ち行列長等の情報である。ウエイトは、各待ち行列に与えられた重みである。各待ち行列は、回線の帯域をウエイトに応じて分け合ってパケットを送出する。カウンタは、待ち行列毎にあり、各待ち行列から送出可能なパケットのデータ量を管理している。リセット状態とは、リセットの指示がされた後に、リセット制御部106が実際にカウンタをリセットしたか否かを示す。リセットの指示がされ、カウンタがリセットされていなければ、その待ち行列のカウンタはリセット未実施の状態であり、リセットされていれば、リセット実施済である。
【0066】
状態変数一時保存部110は、状態変数保存部109に保存されている状態変数のうち、送信可能リスト104−1,104−2および送信待ちリスト105−1,105−2の先頭からm個以内の待ち行列に関する状態変数を一時的に保持する。状態変数一次保存部110に保持された状態変数は、パケットを高速に送出処理するために一部の情報を先読みされた情報である。
【0067】
図2は、本実施形態のノード装置におけるパケット受信動作を示すフローチャートである。
【0068】
図2を参照すると、パケット振り分け部101は、ステップS101に、回線L1からパケットを受信すると、そのパケットを格納すべき待ち行列を決定する。ステップS102に、パケット振り分け部101は、その決定に従ってパケットをいずれかの待ち行列に格納する。
【0069】
次に、入力制御部107は、ステップS103に、受信パケットが格納される待ち行列に他のパケットが格納されているか否か判定する。受信パケットが格納される待ち行列に他のパケットが格納されていれば、ノード装置100はパケット受信動作を終了する。
【0070】
受信パケットを格納する待ち行列に他のパケットが格納されていなければ、入力制御部102は、ステップS104に、その待ち行列のカウンタとリセット状態を状態変数保存部109または状態変数一時保存部110より読出す。
【0071】
入力制御部107は、ステップS105に、その待ち行列のカウンタがリセット実施済で、かつカウンタの値がゼロ以下であるか否か判定する。
【0072】
その待ち行列のカウンタの値が1以上であるか、または、その待ち行列がリセット未実施の状態であれば、入力制御部107は、ステップS107に、その待ち行列番号をいずれかの送信可能リスト104−1,104−2に追加する。なお、待ち行列番号の追加は、送信可能リスト104−1または送信可能リスト104−2へ交互にされる。あるいは、送信可能リスト104−1または送信可能リスト104−2のうち、記録されている待ち行列の数が少ない方に待ち行列番号を追加してもよい。ありいは、送信可能リスト104−1または送信可能リスト104−2のうち、待ち行列番号の書き込みや読み出しの動作が行われていない方に待ち行列番号を追加してもよい。
【0073】
また、その待ち行列のカウンタがリセット済で、かつカウンタの値がゼロ以下であれば、入力制御部107は、ステップS106に、その待ち行列番号をいずれかの送信待ちリスト105−1,105−2に追加する。なお、待ち行列番号の追加は、送信待ちリスト105−1または送信待ちリスト105−2へ交互にされる。あるいは、送信待ちリスト105−1または送信待ちリスト105−2のうち、記録されている待ち行列の数が少ない方に待ち行列を追加してもよい。あるいは、送信待ちリスト105−1または送信待ちリスト105−2のうち、待ち行列番号の書き込みや読み出しの動作が行われていない方に待ち行列番号を追加してもよい。
【0074】
ステップS108に、入力制御部107は、追加した待ち行列がリストの先頭からm番以内であるか否か判定する。
【0075】
追加した待ち行列がリストの先頭からm番以内であれば、ステップS109に、入力制御部107は、その待ち行列の状態変数を状態変数保存部109から状態変数一時保存部110へと移し、ノード装置100はパケット受信動作を終了する。
【0076】
追加した待ち行列がリストの先頭からm番以内でなければ、ノード装置100はそのままパケット受信動作を終了する。
【0077】
図3は、本実施形態のノード装置におけるパケット送出動作を示すフローチャートである。
【0078】
図3を参照すると、まず、出力制御部108は、ステップS201に、送信可能リスト104−1および送信可能リスト104−2の双方が空であるか否か判定する。
【0079】
送信可能リスト104−1および送信可能リスト104−2の双方が空であれば、ステップS202に、出力制御部108はリセット制御部106に全ての待ち行列のリセットを指示する。リセット制御部106は、ステップS203に、送信待ちリスト105−1,105−2の内容をそれぞれ対応する送信可能リスト105−1,105−2へ移す。
【0080】
なお、出力制御部108は、このときに全てのカウンタにウエイト値を加算して、カウンタをリセットしてもよいが、それには長時間かかる。そのため、本実施形態では、出力制御部108は、各待ち行列のパケットが送出されるときに、その待ち行列のカウンタをリセットする。したがって、ここでは出力制御部108から指示を受けたリセット制御部106がリセット動作をするだけである。そのため、出力制御部108は、待ち行列毎にリセット指示時刻およびリセット処理時刻を記録している。リセット指示時刻とは、リセット制御部106へリセットを指示した時刻である。リセット処理時刻とは、最後にその待ち行列のカウンタがリセットされた時刻である。したがって、リセット処理時刻がリセット指示時刻より早ければ、リセット未実施の状態であり、リセット指示時刻がリセット処理時刻より遅ければ、リセット実施済の状態である。
【0081】
次に、出力制御部108は、ステップS204に、双方の送信可能リスト104−1,104−2が空であるか否か判定する。双方の送信可能リスト104−1,104−2が空であれば、ノード装置100はパケット送出動作を終了する。
【0082】
ステップS201またはステップS204の判定で、送信可能リスト104−1,104−2のうち少なくとも一方が空でなければ、出力制御部108は、ステップS205に、いずれかの送信可能リストの先頭から待ち行列番号を取り出す。なお、待ち行列番号の取り出しは、送信可能リスト104−1または送信可能リスト14−2から交互にされる。あるいは、送信可能リスト104−1または送信可能リスト104−2のうち、記録されている待ち行列の数が多い方から待ち行列番号を取り出してもよい。
【0083】
ステップS206にて、出力制御部108は、ステップS205の処理により、新たに、送信可能リストの先頭からm番目となった待ち行列があるか否か判定する。
【0084】
送信可能リストの先頭からm番目となった待ち行列があれば、出力制御部108は、ステップS207に、その待ち行列の状態変数を状態変数保存部109から状態変数一時保存部110へ移す。
【0085】
ステップS206の判定で送信可能リストの先頭からm番目となった待ち行列がなかったとき、あるいはステップS207の処理の後、ステップS208に、出力制御部108は、ステップS205で取り出された番号の待ち行列のパケットの送出をパケット出力部103に指示する。パケット出力部103は、出力制御部108から指示された待ち行列の先頭のパケットを送出する。
【0086】
次に、出力制御部108は、ステップS209に、状態変数一時保存部110から、その待ち行列のウエイトおよびカウンタの値とリセット状態を読み出す。
【0087】
次に、出力制御部108は、ステップS210に、その待ち行列がリセット未実施の状態か否か判定する。
【0088】
その待ち行列がリセット未実施であれば、出力制御部108は、ステップS211に、カウンタをリセットしてリセット状態をリセット実施済にする。リセット状態をリセット実施済にするとは、リセット処理時刻を記録することである。カウンタのリセットでは、カウンタ値にウエイト値が加算される。ただし、カウンタ値がウェイト値より大きければ、ウエイト値がカウンタ値に代入される。
【0089】
ステップS212にて、出力制御部108は、ステップS208で送出されたパケットの長さ分だけカウンタから減算し、ステップS213に、カウンタおよびウエイトの値とリセット状態を状態変数一時保存部110に戻す。そして、出力制御部108は、ステップS214に、パケットを送出した待ち行列にパケットが残っているか否か判定する。その待ち行列にパケットが残っていなければ、ノード装置100はパケット送出動作を終了する。
【0090】
その待ち行列にパケットが残っていれば、出力制御部108は、ステップS215に、その待ち行列のカウンタの値がゼロ以下であるか否か判定する。
【0091】
カウンタの値がゼロ以下であれば、出力制御部108は、ステップS216に、その待ち行列番号をいずれかの送信待ちリスト105−1,105−2に追加する。また、カウンタの値が1以上であれば、出力制御部108は、ステップS217に、その待ち行列番号をいずれかの送信可能リスト104−1,104−2に追加する。
【0092】
ステップS218に、出力制御部108は、追加した待ち行列がリストの先頭からm番目以内であるか否か判定する。追加した待ち行列がリストの先頭からm番以内であれば、ノード装置100は、そのままパケット送出動作を終了する。追加した待ち行列がリストの先頭からm番以内でなければ、出力制御部108は、ステップS219に、その待ち行列の状態変数を状態変数一時保存部110から状態変数保存部109に戻す。
【0093】
本実施形態のノード装置100は、送信可能リストおよび送信待ちリストが、それぞれ2つに分離されているので、リストのデータがポインタで連結された構造であっても、待ち行列番号をポインタの読み出し時間より短い間隔で読出すことが可能であり、超高速回線に適用可能である。
【0094】
また、本実施形態のノード装置100は、通常のメモリによるリストから高速で待ち行列番号を読出せるので、連想メモリが不要であり、低コストで超高速回線に適用可能である。
【0095】
また、本実施形態のノード装置100は、各データがポインタで順次連結された構造のリストを作れるので、待ち行列番号を順番に並べたテーブル構造のリストで管理する必要がなく大量のメモリが不要であり、低コストで超高速回線に適用可能である。
【0096】
また、本実施形態のノード装置100は、リストの先頭付近の待ち行列の状態変数をメモリから先読みしているので、パケットの送出処理を高速で行うことができ、超高速回線に適用可能である。
【0097】
また、本実施形態のノード装置100は、各待ち行列のカウンタのリセットを一括して行わず、パケットを送出するときに待ち行列毎に個別にカウンタをリセットするので、リセットにかかる時間によりパケット送出の速度が制限されず、超高速回線に適用可能である。
【0098】
なお、本実施形態では、送信可能リストおよび送信待ちリストが、それぞれ2つの場合を例示したが、それぞれが3つ以上あってもよい。その場合、送信可能リストおよび送信待ちリストがそれぞれ2つの場合と同様に、待ち行列番号の格納、取り出しは、巡回的に行われてもよい。また、すでに格納されている待ち行列番号の最も少ないリストに新たな待ち行列番号を追加し、格納されている待ち行列番号の最も多いリストから待ち行列番号を取り出すこととしてもよい。
【0099】
また、本実施形態では、ウエイトに応じて各待ち行列からパケットを送出する場合を例示したが、各待ち行列に所定の帯域が予め割り当てられ、各待ち行列のパケットが送信可能な状態であるか、送信待ちの状態であるかが、各待ち行列の帯域により決められてもよい。その場合、ウエイトの代わりに、各待ち行列に割り当てられた帯域を示すデータが用いられればよい。
【0100】
本発明の他の実施形態について図面を参照して説明する。本実施形態のノード装置は、ある待ち行列からパケットの送出を開始すると、その待ち行列からパケットを送出できなくなるまで、連続して送出する。
【0101】
図4は本発明の他の実施形態のノード装置の構成を示すブロック図である。
【0102】
図4を参照すると、ノード装置200は、パケット振り分け部201、待ち行列202−1〜202−n、パケット出力部203、送信可能リスト204−1,204−2、入力制御部207、出力制御部208、状態変数保存部209および状態変数一時保存部210を有している。
【0103】
パケット振り分け部201の構成および動作は、図1のパケット振り分け部101とおなじである。待ち行列202−1〜202−nの構成および動作は、図1の待ち行列102−1〜102−nの構成および動作と同じである。パケット出力部203の構成および動作は、図1のパケット出力部103と同じである。送信可能リスト204−1,204−2の構成および動作は、図1の送信可能リスト104−1,104−2と同じである。状態変数保存部209の構成および動作は図1の状態変数保存部109と同じである。状態変数一時保存部210の構成及び動作は図1の状態変数一時保存部110と同じである。
【0104】
図4のノード装置200は、入力制御部207、出力制御部208の動作が図1のノード装置100と異なる。また、ノード装置200は、送信待ちリストおよびリセット制御部がない点が図1のノード装置100と異なる。
【0105】
入力制御部207は、回線L1から受信したパケットを格納すべき待ち行列の状態変数を状態変数保存部209または状態変数一時保存部210から読み出す。そして、入力制御部207は、その状態変数に従って、待ち行列番号を、送信可能リスト204−1,204−2のうちいずれかに追加する。
【0106】
ノード装置200は、図1のノード装置100と異なり、送信待ちリストから送信可能リストへ待ち行列番号を移す必要がないので、リセット状態の管理が不要である。したがって、入力制御部207は、リセット状態の判定およびそれに伴われる処理の区別をしない。
【0107】
出力制御部208は、現在パケットを送信中の待ち行列があれば、その待ち行列からパケットを送出させる。また、出力制御部208は、現在パケットを送信中の待ち行列がなければ、送信可能リスト204−1または送信可能リスト204−2のいずれかの先頭から待ち行列番号を取り出し、その番号の待ち行列からパケットを送出させる。そして、出力制御部208は、パケットを送出した待ち行列にまだ送信可能なパケットがあれば、その待ち行列を引き続き送信中とし、送信可能なパケットがなければ、送信可能リストに追加する。出力制御部208は、パケットを連続して送信するために、待ち行列について送信中の状態を管理する。
【0108】
図5は、図4に示されたノード装置におけるパケット受信動作を示すフローチャートである。
【0109】
図5を参照すると、パケット振り分け部201は、ステップS301に、回線L1からパケットを受信すると、そのパケットを格納すべき待ち行列を決定する。ステップS302に、パケット振り分け部201は、その決定に従ってパケットをいずれかの待ち行列に格納する。
【0110】
次に、入力制御部207は、ステップS303に、受信パケットが格納される待ち行列に他のパケットが格納されているか否か判定する。受信パケットが格納される待ち行列に他のパケットが格納されていれば、ノード装置200はパケット受信動作を終了する。
【0111】
受信パケットを格納する待ち行列に他のパケットが格納されていなければ、入力制御部207は、ステップS304に、その待ち行列の番号をいずれかの送信待ちリスト205−1,205−2に追加する。
【0112】
ステップS305に、入力制御部207は、追加した待ち行列がリストの先頭から、番以内であるか否か判定する。
【0113】
追加した待ち行列がリストの先頭からm番以内であれば、ステップS306に、入力制御部207は、その待ち行列の状態変数を状態変数保存部209から状態変数一時保存部210へと移し、ノード装置20はパケット受信動作を終了する。
【0114】
追加した待ち行列がリストの先頭からm番以内でなければ、ノード装置200はそのままパケット受信動作を終了する。
【0115】
図6は、図4に示されたノード装置におけるパケット送出動作を示すフローチャートである。
【0116】
図6を参照すると、まず、出力制御部208は、ステップS401に、送信可能リスト204−1および送信可能リスト204−2の双方が空であるか否か判定する。
【0117】
送信可能リスト204−1および送信可能リスト204−2の双方が空であれば、ノード装置200はそのままパケット送出動作を終了する。
【0118】
送信可能リスト204−1,204−2のうち少なくとも一方が空でなければ、出力制御部208は、ステップ402にて、パケットを送信中の待ち行列があるか否か判定する。パケットを送信中の待ち行列が無ければ、いずれかの送信可能リストの先頭から待ち行列番号を取り出す。
【0119】
ステップS404にて、出力制御部208は、ステップS403の処理により、新たに、送信可能リストの先頭からm番目となった待ち行列があるか否か判定する。
【0120】
送信可能リストの先頭からm番目となった待ち行列があれば、出力制御部208は、ステップS405に、その待ち行列の状態変数を状態変数保存部209から状態変数一時保存部210へ移す。
【0121】
ステップS404の判定で送信可能リストの先頭からm番目となった待ち行列がなかったとき、あるいはステップS405の処理の後、ステップS406に、出力制御部208は、ステップS403で取り出された番号の待ち行列を送信中の状態にする。
【0122】
ステップS407に、出力制御部208は、状態変数一時保存部210から、その待ち行列のウエイトおよびカウンタの値を読出す。
【0123】
そして、ステップS402の判定で送信中の待ち行列があったとき、あるいはステップS407の処理の後、出力制御部208は、ステップS408に、送信中の待ち行列のパケットを送出するように、パケット出力部203に指示する。パケット出力部203は、出力制御部208から指示された待ち行列の先頭のパケットを送出する。
【0124】
ステップS409にて、出力制御部208は、ステップS408で送出されたパケットの長さ分だけカウンタから減算する。
【0125】
ステップS410にて、出力制御部208は、送信中の状態の待ち行列にまだパケットが残っており、かつカウンタの値が1以上であるか否か判定する。その待ち行列にパケットが残っており、かつカウンタの値が1以上であれば、ノード装置200はそのまま送信動作を終了し、次の送信動作に移行する。
【0126】
その待ち行列にパケットが残っていないか、またはカウンタの値がゼロ以下であれば、出力制御部208は、ステップS411に、カウンタをリセットする。ステップS412に、出力制御部208は、カウンタおよびウエイトの値を状態変数一時保存部210に戻す。そして、出力制御部208は、ステップS413に、その待ち行列の送信中の状態を解除する。
【0127】
ステップS414にて、出力制御部208は、その待ち行列にまだパケットが残っているか否か判定する。その待ち行列にパケットが残っていなければ、ノード装置200は送信動作を終了し、次の送信動作に移行する。
【0128】
その待ち行列にパケットが残っていれば、出力制御部208は、ステップS415に、その待ち行列番号をいずれかの送信待ちリスト205−1,205−2に追加する。
【0129】
ステップS416に、出力制御部208は、追加した待ち行列がリストの先頭からm番目以内であるか否か判定する。追加した待ち行列がリストの先頭からm番目以内であれば、ノード装置200は、そのまま送信処理を終了し、次の送信動作に移行する。
【0130】
追加した待ち行列がリストの先頭からm番以内でなければ、出力制御部208は、ステップ417に、その待ち行列の状態変数を状態変数一時保存部210から状態変数保存部209に戻す。
【0131】
本発明のさらに他の実施形態について図面を参照して説明する。本実施形態のノード装置は、カレンダを用いてパケットの送信予定を管理する。カレンダは、時系列に並んだ複数のリストを含んでいる。各リストは、それぞれに対応した時刻にパケットの送出を終了する予定の待ち行列の番号が記録されている。パケットを送出するための帯域が各待ち行列に割り当てられている場合、パケットの送出が可能な待ち行列であっても、所定時間間隔より短い間隔でパケットを送出できない。その場合に、待ち行列から送出されるパケットが所定時間間隔となるように、その待ち行列はカレンダのリストに記録される。そして、リストの示す時刻になると、待ち行列の番号がカレンダから取り出され、その待ち行列からパケットが送出される。
【0132】
図7は、本実施形態のノード装置の構成を示すブロック図である。
【0133】
図7を参照すると、ノード装置300は、パケット振り分け部301、待ち行列302−1〜302−n、パケット出力部303、送信可能リスト304−1,304−2、入力制御部307、出力制御部308、状態変数保存部309、状態変数一時保存部310およびカレンダ311を有している。
【0134】
パケット振り分け部301の構成および動作は、図1のパケット振り分け部101と同じである。待ち行列302−1〜302−2の構成および動作は、図1の待ち行列202−1〜202−2と同じである。パケット出力部303の構成および動作は、図1のパケット出力部103と同じである。送信可能リスト304−1,304−2の構成および動作は、図1の送信可能リスト104−1,104−2と同じである。状態変数保存部309の構成および動作は、図1の状態変数保存部109と同じである。状態変数一時保存部310の構成および動作は、図1の状態変数一時保存部110と同じである。ただし、ノード装置300は、カレンダ311でパケットの送信予定を管理するので、状態変数には、各待ち行列からのパケットの送出の終了予定時刻が含まれている。また、各待ち行列には、パケットを送出するための帯域が割り当てられる。この各待ち行列の設定帯域も状態変数に含まれている。
【0135】
図7のノード装置300は、入力制御部307、出力制御部308の動作が図1のノード装置100と異なる。また、ノード装置300は、送信待ちリストおよびリセット制御部がない点と、カレンダ311を有する点が図1のノード装置100と異なる。
【0136】
入力制御部307は、回線L1から受信したパケットを格納すべき待ち行列の状態変数を状態変数保存部309または状態変数一時保存部310から読み出す。そして、入力制御部307は、その状態変数に従って、待ち行列番号を、送信可能リスト304−1,304−2またはカレンダ311のいずれかに追加する。
【0137】
出力制御部308は、各待ち行列からのパケットの送出を制御するために、まず、送信可能リスト304−1または304−2の先頭から待ち行列番号を取り出し、その番号の待ち行列に関する状態変数を状態変数一時保存部310から読み出す。そして、出力制御部308は、その待ち行列のパケットの送出をパケット出力部303に指示する。そして、出力制御部308は、パケットの送出をパケット出力部303に指示した後、その待ち行列の状態変数に従って、待ち行列番号を送信可能リスト304−1,304−2またはカレンダ311のいずれかに追加する。
【0138】
カレンダ311は、所定間隔の時刻毎のリストを時系列に保持している。各リストには、それぞれに対応した時刻にパケットの送出を終了する予定の待ち行列の番号が記録される。
【0139】
図8は、図7のノード装置300のパケット受信動作を示すフローチャートである。
【0140】
図8を参照すると、パケット振り分け部301は、ステップS501に、回線L1からパケットを受信すると、そのパケットを格納すべき待ち行列を決定する。ステップS502に、パケット振り分け部301は、その決定に従ってパケットをいずれかの待ち行列に格納する。
【0141】
次に、入力制御部307は、ステップS503に、受信パケットが格納される待ち行列に他のパケットが格納されているか否か判定する。受信パケットが格納される待ち行列に他のパケットが格納されていれば、ノード装置300はパケット受信動作を終了する。
【0142】
受信パケットを格納する待ち行列に他のパケットが格納されていなければ、入力制御部302は、ステップS504に、その待ち行列のパケットの送出を終了する予定時刻を状態変数保存部309または状態変数一時保存部310より読出す。
【0143】
ステップS505に、入力制御部307は、読み出された送出終了予定時刻に、現在の時刻が達しているか否か判定する。送出終了予定時刻に達していなければ、ステップS507に、入力制御部307は、カレンダ311の送出終了予定時刻に対応したリストにその待ち行列番号を記録し、ノード装置300はパケット受信動作を終了する。
【0144】
送出終了予定時刻に達していれば、ステップS506に、入力制御部307は、その待ち行列番号を、いずれかの送信可能リスト304−1,304−2に追加する。
【0145】
ステップS508に、入力制御部307は、追加した待ち行列がリストの先頭からm番目以内であるか否か判定する。
【0146】
追加した待ち行列がリストの先頭からm番以内であれば、ステップS509に、入力制御部307は、その待ち行列の状態変数を状態変数保存部309から状態変数一時保存部310へと移す。
【0147】
追加した待ち行列がリストの先頭からm番目以内でないとき、あるいはステップS509の処理の後、入力制御部307は、ステップS510に、現在の時刻を送出終了予定時刻に代入する。ステップS511に、入力制御部307は、送出終了予定時刻を状態変数保存部309もしくは状態変数一時保存部310に書き戻す。
【0148】
図9は、図7のノード装置300におけるパケット送出動作を示すブロック図である。
【0149】
図9を参照すると、まず、ノード装置300は、ステップS601に、現在時刻を更新する。ステップS602に、出力制御部308は、カレンダ311内の現在時刻に対応するリストの内容の全てを、いずれかの送信可能リスト304−1,304−2へと移す。
【0150】
ステップS603に、出力制御部308は、送信可能リスト304−1,304−2の双方が空であるか否か判定する。双方の送信可能リスト304−1,304−2が空であれば、ノード装置300はパケット送出動作を終了する。
【0151】
送信可能リスト304−1,304−2の少なくとも一方が空でなければ、出力制御部308は、ステップS604に、いずれかの送信可能リストの先頭から待ち行列番号を取り出す。
【0152】
ステップS605にて、出力制御部308は、ステップS604の処理により、新たに、送信可能リストの先頭からm番目となった待ち行列があるか否か判定する。
【0153】
送信可能リストの先頭からm番目となった待ち行列があれば、出力制御部308は、ステップS606に、その待ち行列の状態変数を状態変数保存部109から状態変数一時保存部110へ移す。
【0154】
ステップS605の判定で送信可能リストの先頭からm番目となった待ち行列がなかったとき、あるいはステップS606の処理の後、ステップS607に、出力制御部308は、ステップS604で取り出された番号の待ち行列のパケットの送出をパケット出力部303に指示する。パケット出力部303は、出力制御部308から指示された待ち行列の先頭のパケットを送出する。
【0155】
ステップS608にて、出力制御部308は、状態変数一時保存部310から、待ち行列の設定帯域および送出終了予定時刻を読出す。ステップS609に、出力制御部308は、読み出された設定帯域と送出するパケットのデータ量とから送出終了予定時刻を算出する。そして、ステップS610に、出力制御部308は、設定帯域および送出終了予定時刻を状態変数一時保存部310に書き戻す。
【0156】
ステップ611に、出力制御部308は、パケットの送出した待ち行列にパケットが残っているか否か判定する。その待ち行列にパケットが残っていなければ、ノード装置300はパケット送出動作を終了する。
【0157】
その待ち行列にパケットが残っていれば、出力制御部308は、ステップS612に、送出終了予定時刻に現在の時刻が達しているか否か判定する。送出終了時刻に達していなければ、ステップS614に、出力制御部308は、カレンダ311の送出終了予定時刻に対応したリストに、その待ち行列番号を記録する。次に、ステップS616にて、出力制御部308は、その待ち行列の状態変数を状態変数保存部309から状態変数一時保存部310へと移し、ノード装置300はパケット送出動作を終了する。
【0158】
ステップS612の判定において現在の時刻が送出終了時刻に達していれば、ステップS613に、出力制御部308は、その待ち行列の番号を送信可能リスト304−1,304−2のいずれかに追加する。
【0159】
ステップS615に、出力制御部308は、追加した待ち行列がリストの先頭からm番以内であるか否か判定する。追加した待ち行列がリストの先頭からm番目以内であれば、ステップS616の処理に移る。追加した待ち行列がリストの先頭からm番名以内でなければ、ノード装置300はそのままパケット送出動作を終了する。
【0160】
本発明のさらに他の実施形態について図面を参照して説明する。
【0161】
図10は、本実施形態のノード装置の構成を示すブロック図である。
【0162】
図10を参照すると、ノード装置400は、パケット振り分け部401、待ち行列402−1〜402−n、パケット出力部403、送信可能リスト404−1,404−2、送信待ちリスト405−1,405−2、リセット制御部406、入力制御部407、出力制御部408、状態変数保存部409、状態変数一時保存部410および送信候補411−1〜411−mを有している。
【0163】
パケット振り分け部401の構成および動作は図1のパケット振り分け部101と同じである。待ち行列402−1〜402−nの構成および動作は、図1の待ち行列101−1〜101−nと同じである。パケット出力部403の構成及び動作は、図1のパケット出力部103と同じである。
【0164】
本実施形態では、送信可能リスト404−1,404−2、送信待ちリスト405−1,405−2の他に、送信候補411−1〜411−mが設けられている。送信候補411−1〜411−mは、送信可能リスト及び送信待ちリストとは別に一部の待ち行列を送信準備中の待ち行列として管理する。
【0165】
送信候補411−1〜411−mは、状態変数が一時保存部410に保存されている待ち行列の番号をそれぞれ1つづつ格納する。したがって、送信候補の数mと、状態変数一時保存部410が保存できる状態変数の数は同じである。パケットを送出する待ち行列は、この送信候補411−1〜411−mに番号が格納された、パケットを送信可能な待ち行列の中から巡回的に選択される。いずれかの送信候補からパケットが送出され、空きが生じると、いずれかの送信可能リスト404−1,404−2に番号が格納されていた待ち行列が、新たに送信候補に格納されることとなり、それに伴って、その待ち行列の状態変数が状態変数保存部409から状態変数一時保存部410に移される。送信候補411−1〜411−mに番号が格納される待ち行列は、通常、パケットを送信可能な待ち行列である。しかし、パケットを送信可能な待ち行列の数が送信候補数mより少ないときには、送信待ちの待ち行列の番号が送信候補に格納される。
【0166】
したがって、送信可能リスト404−1,404−2および送信待ちリスト405−1,405−2の構成および動作は、図1の送信可能リスト104−1,104−2および送信待ちリスト105−1,105−2とほぼ同様であるが、出力制御部408へ直接に待ち行列番号を送らず、送信候補411−1〜411−mに一旦格納する点で図1のものと異なる。
【0167】
状態変数保存部409、状態変数一時保存部410の構成及び動作は図1のものと同様であるが、待ち行列番号が送信候補411−1〜411−mに格納された待ち行列の状態変数が状態変数一時保存部410に格納される点で異なる。
【0168】
入力制御部407の構成および動作は、図1のものとほぼ同様である。しかし、送信可能リスト404−1,404−2または送信待ちリスト405−1,405−2に待ち行列番号を追加するとき、送信候補に空きがあれば、入力制御部407は、その待ち行列番号を送信候補に格納する。
【0169】
出力制御部408は、送信候補411−1〜411−mに番号が格納されている待ち行列のうち、送信可能な待ち行列から巡回的にパケットを送出するようにパケット出力部403に指示する。また、ある待ち行列のパケットの送出をパケット出力部403に指示した後、出力制御部408は、その待ち行列の状態等により、その待ち行列の番号を送信可能リスト404−1,404−2、送信待ちリスト405−1,405−2に追加するか、あるいは送信候補411−1〜411−mに残す。
【0170】
図11は、図10のノード装置400のパケット受信動作を示すフローチャートである。
【0171】
図11を参照すると、パケット振り分け部401は、ステップS701に、回線L1からパケットを受信すると、そのパケットを格納すべき待ち行列を決定する。ステップS702に、パケット振り分け部401は、その決定に従ってパケットをいずれかの待ち行列に格納する。
【0172】
次に、入力制御部407は、ステップS703に、受信パケットが格納される待ち行列に他のパケットが格納されているか否か判定する。受信パケットが格納される待ち行列に他のパケットが格納されていれば、ノード装置400はパケット受信動作を終了する。
【0173】
受信パケットを格納する待ち行列に他のパケットが格納されていなければ、入力制御部407は、ステップS704に、その待ち行列のカウンタとリセット状態を状態変数保存部409または状態変数一時保存部410より読出す。
【0174】
ステップS705に、入力制御部407は、送信候補411−1〜411−mのすくなくとも1つが空きであるか否か判定する。空きがなければ、ステップS706に、入力制御部407は、その待ち行列のカウンタがリセット実施済で、かつカウンタの値がゼロ以下であるか否か判定する。
【0175】
その待ち行列のカウンタがリセット済で、かつカウンタの値がゼロ以下であれば、入力制御部407は、ステップS707に、その待ち行列番号をいずれかの送信待ちリスト505−1,505−2に追加し、ノード装置400はパケット受信動作を終了する。
【0176】
また、その待ち行列のカウンタの値が1以上であるか、または、その待ち行列がリセット未実施の状態であれば、ステップS708に、入力制御部407は、送信候補411−1〜411−mに送信待ちの状態の待ち行列があるか否か判定する。
【0177】
送信候補411−1〜411−mに送信待ちの状態の待ち行列があれば、ステップS710に、入力制御部407は、その送信候補に格納されている待ち行列番号をいずれかの送信待ちリスト505−1,505−2に移す。
【0178】
送信候補411−1〜411−mに送信待ちの状態の待ち行列がなければ、ステップS709に、入力制御部407は待ち行列番号をいずれかの送信可能リスト404−1,404−2に追加し、ノード装置400はパケット受信動作を終了する。
【0179】
ステップS705の判定で送信候補に空きがあるとき、またはステップS710の処理の後、ステップS711に、入力制御部407は、待ち行列番号を空いている送信候補に格納する。そして、ステップS712に、入力制御部407は、その番号の待ち行列の状態変数を状態変数保存部409から状態変数一時保存部410に移し、ノード装置400はパケット受信動作を終了する。
【0180】
図12は、図10のノード装置400のパケット送出動作を示すフローチャートである。
【0181】
図12を参照すると、まず、出力制御部408は、ステップS801に、送信候補411−1〜411−mの全てが空であるか否か判定する。全ての送信候補411−1〜411−mが空であれば、ノード装置400はそのままパケット送出動作を終了する。
【0182】
送信候補411−1〜411−mのうち少なくとも1つが空でなければ、出力制御部408は、ステップ802にて、パケットを送信可能な待ち行列が送信候補にあるか否か判定する。
【0183】
パケットを送信可能な待ち行列が送信候補になければ、ステップS803に、出力制御部408は、全ての待ち行列をリセットするように、リセット制御部409に指示する。そして、ステップS804に、リセット制御部406は、全ての送信待ちリストの内容を、それぞれに対応する送信可能リストに移す。
【0184】
ステップS802の判定でパケットを送信可能な待ち行列が送信候補にあったとき、またはステップS804の処理の後、出力制御部408は、各送信候補にある、パケットを送信可能な待ち行列のパケットを送出するように、パケット出力部403に指示する。パケット出力部403は、出力制御部408から指示された待ち行列の先頭のパケットを送出する。
【0185】
そして、ステップS807に、出力制御部408は、パケット出力部403にパケットの送出を指示した待ち行列のカウンタおよびウエイトの値とリセット状態を状態変数一時保存部410から読み出す。
【0186】
次に、出力制御部408は、ステップS808に、その待ち行列がリセット未実施の状態か否か判定する。
【0187】
その待ち行列がリセット未実施であれば、出力制御部406は、ステップS809に、カウンタをリセットしてリセット状態をリセット実施済にする。
【0188】
ステップS810にて、出力制御部408は、ステップS806で送出されたパケットの長さ分だけカウンタから減算し、ステップS811に、カウンタおよびウエイトの値とリセット状態を状態変数一時保存部810に戻す。
【0189】
そして、ステップS812に、出力制御部408は、その待ち行列にパケットが残っており、かつ送信可能リスト404−1,404−2の双方が空であるか否か判定する。その待ち行列にパケットが残っておらず、かつ送信可能リスト404−1,404−2の双方が空であれば、ノード装置400はパケット送出動作を終了する。
【0190】
その待ち行列にパケットが残っていないか、または送信可能リスト404−1,404−2の少なくとも一方が空でなければ、ステップS813に、出力制御部408は、その待ち行列の状態変数を状態変数一時保存部410から状態変数保存部409に戻す。そして、ステップS814に、出力制御部408は、その待ち行列を送信候補から削除する。
【0191】
ステップS815に、出力制御部408は、その待ち行列にパケットが残っているか否か判定する。その待ち行列にパケットが残っていれば、ステップS816に、出力制御部408は、その待ち行列のカウンタの値がゼロ以下であるか否か判定する。
【0192】
カウンタがゼロ以下であれば、出力制御部408は、その待ち行列番号を送信待ちリストのいずれかに追加する。カウンタが1以上であれば、その待ち行列番号を送信可能リストに追加する。
【0193】
ステップS815の判定でその待ち行列内にパケットが残っていなかったとき、あるいはステップS817またはステップS818の処理の後、ステップS819に、出力制御部408は、送信可能リストの双方が空であるか否か判定する。少なくとも一方の送信可能リストが空でなければ、出力制御部408は、ステップS820に、いずれかの送信可能リストの先頭から待ち行列番号を取り出し、送信候補のいずれかに格納する。
【0194】
また、あ送信可能リストの双方が空であれば、出力制御部408は、ステップS821に、いずれかの送信候補リストの先頭から待ち行列番号を取り出し、送信候補のいずれかに格納する。
【0195】
ステップS820またはステップS821の処理の後、出力制御部408は、ステップS822に、新たに送信候補に格納された待ち行列の状態変数を状態変数保存部409から状態変数一時保存部410に移し、ノード装置400はパケット送出動作を終了する。
【0196】
したがって、ノード装置400は、送信候補411−1〜411−mのいずれかからパケットを送出し、それでもまだその待ち行列がパケットを送信可能なとき、送信可能リスト404−1,404−2の双方が空であれば、その待ち行列を送信候補に直接戻すことができる。また、ノード装置400は、送信可能リスト404−1,404−2の少なくともいずれか一方が空でなければ、その待ち行列を送信候補に直接戻すことができないので、いずれかの送信可能リストに戻し、それに伴って、状態変数も状態変数保存部409に戻される。
【0197】
本発明のさらに他の実施形態について図面を参照して説明する。
【0198】
本実施形態のノード装置の構成およびパケット受信動作は図10のものと同じであり、パケット送出動作における送信候補の入れ替え方法のみが異なる。
【0199】
図13は、本実施形態のノード装置におけるパケット送出動作を示すフローチャートである。
【0200】
図13を参照すると、まず、出力制御部408は、ステップS901に、送信候補411−1〜411−mの全てが空であるか否か判定する。全ての送信候補411−1〜411−mが空であれば、ノード装置400はそのままパケット送出動作を終了する。
【0201】
送信候補411−1〜411−mのうち少なくとも1つが空でなければ、出力制御部408は、ステップS902にて、パケットを送信可能な待ち行列が送信候補にあるか否か判定する。
【0202】
パケットを送信可能な待ち行列が送信候補になければ、ステップS903に、出力制御部408は、全ての待ち行列をリセットするように、リセット制御部409に指示する。そして、ステップS904に、リセット制御部406は、全ての送信待ちリストの内容を、それぞれに対応する送信可能リストに移す。
【0203】
ステップS902の判定でパケットを送信可能な待ち行列が送信候補にあったとき、またはステップS904の処理の後、出力制御部408は、各送信候補にある、パケットを送信可能な待ち行列のパケットを送出するように、パケット出力部403に指示する。パケット出力部403は、出力制御部408から指示された待ち行列の先頭のパケットを送出する。
【0204】
そして、ステップS907に、出力制御部408は、パケット出力部403にパケットの送出を指示した待ち行列のカウンタおよびウエイトの値とリセット状態を状態変数一時保存部410から読出す。
【0205】
次に、出力制御部408は、ステップS908に、その待ち行列がリセット未実施の状態か否か判定する。
【0206】
その待ち行列がリセット未実施であれば、出力制御部408は、ステップS909に、カウンタをリセットしてリセット状態をリセット実施済にする。
【0207】
ステップS910にて、出力制御部408は、ステップS906で送出されたパケットの長さ分だけカウンタから減算し、ステップS911に、カウンタおよびウエイトの値とリセット状態を状態変数一時保存部410に戻す。
【0208】
ここまでは図12におけるステップS801からステップS811までと同じ処理である。
【0209】
ステップS911にて、出力制御部408は、カウンタおよびウエイトの値とリセット状態を状態変数一時保存部410に書き戻す。そして、出力制御部408は、ステップS912に、パケットが格納されていない待ち行列の番号が送信候補411−1〜411−mに格納されているか否か判定する。
【0210】
パケットが格納されていない待ち行列の番号が送信候補411−1〜411−mに格納されていなければ、ステップS913に、出力制御部408は、送信候補411−1〜411−mに、カウンタがゼロ以下の待ち行列の番号が格納されているか否か判定する。カウンタがゼロ以下の待ち行列の番号が格納されている送信候補がなければ、ステップS914に、出力制御部408は、送信候補の中からmin(カウンタ値,待ち行列長)が最小の待ち行列を選択する。なお、min(A,B)は、AとBのうちの最小値を求める関数である。
【0211】
ステップS915に、出力制御部408は、その待ち行列の状態変数を状態変数一時保存部410から状態変数保存部409へ移す。そして、出力制御部408は、ステップS916に、その待ち行列の番号を送信候補から取り除き、ステップS917に、その待ち行列の番号をいずれかの送信可能リスト404−1,404−2に追加する。
【0212】
ステップS913の判定で、カウンタがゼロ以下の待ち行列の番号が格納されている送信候補があれば、出力制御部408は、ステップS918に、カウンタ値がゼロ以下であり、min(ウエイト値,待ち行列長)が最小の待ち行列を送信候補の中から選択する。
【0213】
ステップS919に、出力制御部408は、その待ち行列の状態変数を状態変数一時保存部410から状態変数保存部409へ移す。そして、出力制御部408は、ステップS420に、その待ち行列の番号を送信候補から取り除き、ステップS421に、その待ち行列の番号をいずれかの送信待ちリスト405−1,405−2に追加する。
【0214】
ステップS912の判定で、パケットが格納されていない待ち行列の番号が送信候補411−1〜411−mに格納されていれば、ステップS922に、出力制御部408は、その待ち行列を送信候補の中から選択する。そして、出力制御部408は、ステップS923に、その待ち行列の状態変数を状態変数一時保存部410から状態変数保存部409に移し、ステップS924に、その待ち行列を送信候補から取り除く。
【0215】
ステップS917、ステップS921またはステップS924の処理の後、出力制御部408は、ステップS925に、送信可能リスト404−1,404−2の双方が空であるか否か判定する。
【0216】
少なくとも一方の送信可能リスト404−1,404−2が空でなければ、ステップS925に、出力制御部408は、いずれかの送信可能リストの先頭から待ち行列番号を取り出して送信候補に格納する。ステップS926に、出力制御部408は、新たに送信候補に格納された番号の待ち行列の状態変数を状態変数保存部409から状態変数一時保存部410へ移し、ノード装置400はパケット送出動作を終了する。
【0217】
ステップS925の判定で、双方の送信可能リスト404−1,404−2が空であれば、ステップS927に、出力制御部408は、いずれかの送信待ちリストの先頭から待ち行列番号を取り出して送信候補に格納し、ステップS928の処理に移る。
【0218】
【発明の効果】
本発明のノード装置は、リスト手段の先頭付近の待ち行列の状態変数を状態変数保存手段から、それよりデータ量の小さい状態変数一時保存手段に先読みしているので、パケットを送出するときに、状態変数に関する処理を高速で行うことができ、超高速回線に適用可能である。
【0219】
また、本発明のノード装置は、待ち行列の状態変数を状態変数保存手段から状態変数一時保存手段に常時先読みしている状態となるので、パケットを送出するときに、状態変数に関する処理を高速で行うことができ、超高速回線に適用可能である。
【0220】
また、本発明のノード装置は、リスト手段が複数のリストに分離されているので、各リストのデータがポインタで連結された構造であっても、待ち行列番号をポインタの読み出し時間より短い間隔で読出すことが可能であり、超高速回線に適用可能である。
【図面の簡単な説明】
【図1】本発明の一実施形態のノード装置の構成を示すブロック図である。
【図2】図1のノード装置におけるパケット受信動作を示すフローチャートである。
【図3】図1のノード装置におけるパケット送出動作を示すフローチャートである。
【図4】本発明の他の実施形態のノード装置の構成を示すブロック図である。
【図5】図4のノード装置におけるパケット受信動作を示すフローチャートである。
【図6】図4のノード装置におけるパケット送出動作を示すフローチャートである。
【図7】本発明のさらに他の実施形態のノード装置の構成を示すブロック図である。
【図8】図7のノード装置のパケット受信動作を示すフローチャートである。
【図9】図7のノード装置におけるパケット送出動作を示すブロック図である。
【図10】本発明のさらに他の実施形態のノード装置の構成を示すブロック図である。
【図11】図10のノード装置のパケット受信動作を示すフローチャートである。
【図12】図10のノード装置のパケット送出動作を示すフローチャートである。
【図13】図10のノード装置の他のパケット送出動作を示すフローチャートである。
【図14】従来技術における一般的なリストの構造を示す図である。
【図15】従来技術における、他のリストの構造を示す図である。
【符号の説明】
100,200,300,400 ノード装置
101,201,301,401 パケット振り分け部
102−1〜102−n,202−1〜202−n,302−1〜302−n,402−1〜402−n 待ち行列
103,203,303,403 パケット出力部
104−1,104−2,204−1,204−2,304−1,304−2,404−1,404−2 送信可能リスト
105−1,105−2,405−1,405−2 送信待ちリスト
106,406 リセット制御部
107,207,307,407 入力制御部
108,208,308,408 出力制御部
109,209,309,409 状態変数保存部
110,210,310,410 状態変数一時保存部
311 カレンダ
411−1〜411−m 送信候補
L1,L2 回線
S101〜S109,S201〜S219,S301〜S306,S401〜S417,S501〜S511,S601〜S616,S701〜S712,S801〜S822,S901〜S928 ステップ
Claims (20)
- 受信されたパケットを複数の待ち行列のいずれかに格納し、前記各待ち行列がパケットを送信可能な状態であるか否かを、前記待ち行列毎の状態変数により判断し、パケットを送信可能な状態の前記待ち行列から前記パケットを送出するノード装置であって、
パケットを送信可能な状態の待ち行列の番号が書き込まれ、該番号の書き込まれた順序を管理するリスト手段と、
全ての待ち行列に関する状態変数を保存する状態変数保存手段と、
前記リストの先頭から所定範囲内に番号のある待ち行列に関する状態変数だけを一時的に保存する、前記状態変数保存手段よりもデータ量の少ない状態変数一時保存手段と、
前記リスト手段の先頭から取り出された番号の待ち行列からパケットを送出し、前記状態変数一時保存手段にある該待ち行列の状態変数を更新する制御手段を有するノード装置。 - 前記制御手段は、前記リスト手段の先頭から取り出された待ち行列からパケットを送出するときに更新した前記状態変数から、該待ち行列がまだパケットを送信可能な状態であれば前記リスト手段に該待ち行列の番号を追加し、
前記状態変数一時保存手段は、前記制御手段が前記リスト手段から番号を取り出したとき、前記リスト手段の先頭から前記所定範囲となった待ち行列に関する状態変数を新たに保存し、また、前記リスト手段に待ち行列の番号が追加されたとき、前記リスト手段内の番号の数が前記所定範囲内であれば、該待ち行列に関する状態変数を保存する、請求項1記載のノード装置。 - 受信されたパケットを複数の待ち行列のいずれかに格納し、前記各待ち行列がパケットを送信可能な状態であるか否かを、前記待ち行列毎の状態変数により判断し、パケットを送信可能な状態の前記待ち行列から前記パケットを送出するノード装置であって、
パケットを送信可能な状態の待ち行列の番号が書き込まれ、該番号の書き込まれた順序を管理するリスト手段と、
全ての待ち行列に関する状態変数を保存する状態変数保存手段と、
所定数以下の待ち行列に関する状態変数を一時的に保存する、前記状態変数保存手段よりもデータ量の少ない状態変数一時保存手段と、
前記状態変数一時保存手段に状態変数が保存されている各待ち行列の番号を、前記リスト手段の代わりに保持する少なくとも1つの送信候補手段と、
前記送信候補手段に保持されている番号の待ち行列のうち、パケットを送信可能なものからパケットを送出し、前記状態変数一時保存手段にある該待ち行列の状態変数を更新する制御手段を有するノード装置。 - 前記状態変数一時保存手段は、該状態変数一時保存手段に空きが生じると、前記リスト手段の先頭にある番号の待ち行列に関する状態変数を新たに保存し、また、新たに、パケットを送信可能な状態となった待ち行列があるときに前記状態変数一時保存手段に空きがあれば、該待ち行列に関する状態変数を新たに保存し、
前記制御手段は、いずれかの待ち行列からパケットを送出したときに更新した状態変数から、該待ち行列がまだパケットを送信可能な状態の場合、前記リスト手段が空ならば、該状態変数を前記状態変数一時保存手段に戻し、前記リスト手段が空でなければ、該状態変数を前記状態変数保存手段へ戻す、請求項1〜3のいずれか1項に記載のノード装置。 - 前記パケットは、その属性に応じて、いずれかの待ち行列に格納され、
前記状態変数は、前記属性と関連付けて各待ち行列に付与されたウエイトあるいは帯域と、該待ち行列から送出されたパケットとから算出される、該待ち行列から送出可能なパケット数、あるいは該待ち行列からパケットとして送出可能なデータ量である、請求項1〜4のいずれか1項に記載されたノード装置。 - 前記待ち行列は、少なくとも1つのパケットを格納しており、前記状態変数によりパケットの送出が許容されているとき、パケットを送出可能な状態である、請求項5記載のノード装置。
- 前記リスト手段が複数のリストからなる、請求項1〜6のいずれか1項に記載のノード装置。
- 前記リスト手段内の複数のリストが巡回的に選択される、請求項7記載のノード装置。
- 前記リスト手段内の複数のリストが、番号が書き込まれるときには格納されている待ち行列の数の少ないものが選択され、番号が取り出されるときには格納されている待ち行列の数の多いものが選択される、請求項7記載のノード装置。
- 待ち行列の番号が、該待ち行列に割り当てられた帯域から判断されたパケットを送出すべき時刻毎に、記録されるカレンダ手段をさらに有し、
前記制御手段が、前記カレンダ手段において現在の時刻にパケットを送出すべきとされる待ち行列の番号を該カレンダ手段から前記リスト手段に移す、請求項1〜9のいずれか1項に記載のノード装置。 - 受信されたパケットを複数の待ち行列のいずれかに格納し、前記各待ち行列がパケットを送信可能な状態であるか否かを、前記待ち行列毎の状態変数により判断し、パケットを送信可能な状態の前記待ち行列から前記パケットを送出するノード装置であって、
パケットを送信可能な状態の待ち行列の番号が書き込まれ、該番号の書き込まれた順序を管理する第1のリスト手段と、
送信待ちの状態の待ち行列の番号が書き込まれ、該番号の書き込まれた順序を管理する第2のリスト手段と、
全ての待ち行列に関する状態変数を保存する状態変数保存手段と、
前記第1のリストの先頭から所定範囲内に番号のある待ち行列に関する状態変数を一時的に保存し、さらに、前記第1のリストに前記所定範囲を満たす待ち行列の番号がないとき、足りない分を前記第2のリストの先頭からとって一時的に保存する、前記状態変数保存手段よりもデータ量の少ない状態変数一時保存手段と、
前記第1のリストの先頭から取り出された番号の待ち行列からパケットを送出し、前記状態変数一時保存手段にある該待ち行列の状態変数を更新する制御手段を有するノード装置。 - 前記制御手段は、前記リスト手段の先頭から取り出された待ち行列からパケットを送出するときに更新した前記状態変数から、該待ち行列がまだパケットを送信可能な状態であれば前記第1のリスト手段に該待ち行列の番号を追加し、該待ち行列が送信待ちの状態であれば前記第2のリスト手段に該待ち行列の番号を追加し、
前記状態変数一時保存手段は、前記制御手段が前記第1のリスト手段から番号を取り出したとき、前記第1のリスト手段の先頭から前記所定範囲となった待ち行列に関する状態変数を新たに保存し、また、前記第1のリスト手段に待ち行列の番号が追加されたとき、前記第1のリスト手段内の番号の数が前記所定範囲内であれば、該待ち行列に関する状態変数を保存し、また、前記第2のリスト手段に待ち行列の番号が追加されたとき、前記第1のリスト手段内の番号数と前記第2のリスト手段内の番号の数との和が前記所定範囲内であれば、該待ち行列に関する状態変数を保存する、請求項11記載のノード装置。 - 受信されたパケットを複数の待ち行列のいずれかに格納し、前記各待ち行列がパケットを送信可能な状態であるか否かを、前記待ち行列毎の状態変数により判断し、パケットを送信可能な状態の前記待ち行列から前記パケットを送出するノード装置であって、
パケットを送信可能な状態の待ち行列の番号が書き込まれ、該番号の書き込まれた順番を管理する第1のリスト手段と、
送信待ちの状態の待ち行列の番号が書き込まれ、該番号の書き込まれた順序を管理する第2のリスト手段と、
全ての待ち行列に関する状態変数を保存する状態変数保存手段と、
所定数以下の待ち行列に関する状態変数を一時的に保存する、前記状態変数保存手段よりもデータ量の少ない状態変数一時保存手段と、
前記状態変数一時保存手段に状態変数が保存されている各待ち行列の番号を、前記第1または第2のリスト手段の代わりに保持する少なくとも1つの送信候補手段と、
前記送信候補手段に保持されている番号の待ち行列のうち、パケットを送信可能なものからパケットを送信し、前記状態変数一時保存手段にある該待ち行列の状態変数を更新する制御手段を有するノード装置。 - 状態変数一時保存手段は、該状態変数一時保存手段に空きが生じると、前記第1のリスト手段の先頭にある番号の待ち行列に関する状態変数を新たに保存し、前記第1のリスト手段が空ならば、前記第2のリスト手段の先頭にある番号の待ち行列に関する状態変数を新たに保存し、また、新たに、パケットを送信可能な状態あるいは送信待ちの状態となった待ち行列があるときに前記状態変数一時保存手段に空きがあれば、該待ち行列に関する状態変数を新たに保存し、
前記制御手段は、いずれかの待ち行列からパケットを送出したときに更新した状態変数から、該待ち行列がパケットを送信可能な状態の場合、前記第1のリスト手段が空ならば、該状態変数を前記状態変数一時保存手段に戻し、前記第1のリスト手段が空でなければ、該状態変数を前記状態変数保存手段へ戻し、また、いずれかの待ち行列からパケットを送出したときに更新した状態変数から、該待ち行列が送信待ちの状態の場合、前記第1および第2のリスト手段が空ならば、該状態変数を前記状態変数一時保存手段へ戻し、前記第1または第2のリスト手段が空でなければ、該状態変数を前記状態変数保存手段へ戻す、請求項13記載のノード装置。 - 前記パケットは、その属性に応じて、いずれかの待ち行列に格納され、
前記状態変数は、前記属性と関連付けて各待ち行列に付与されたウエイトあるいは帯域と、該待ち行列から送出されたパケットとから算出される、該待ち行列から送出可能なパケット数、あるいは該待ち行列からパケットとして送出可能なデータ量である、請求項11〜14のいずれか1項に記載のノード装置。 - 前記待ち行列は、少なくとも1つのパケットを格納しており、前記状態変数によりパケットの送出が許容されているとき、パケットを送出可能な状態である、請求項15記載のノード装置。
- 前記待ち行列は、少なくとも1つのパケットを格納しているが、前記状態変数からパケットを送信可能でないとき、送信待ちの状態である、請求項15または16に記載のノード装置。
- 前記第1および第2のリスト手段が、それぞれ複数のリストからなる、請求項11〜17のいずれか1項に記載のノード装置。
- 前記第1および第2のリスト手段内の複数のリストは、それぞれ巡回的に選択される、請求項18記載のノード装置。
- 前記第1および第2のリスト手段内の複数のリストは、それぞれ、番号が書き込まれるときには格納されている待ち行列の数の少ないものが選択され、番号が取り出されるときには格納されている待ち行列の数の多いものが選択される、請求項18記載のノード装置。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002000479A JP3753070B2 (ja) | 2002-01-07 | 2002-01-07 | ノード装置 |
CA 2415188 CA2415188C (en) | 2002-01-07 | 2002-12-27 | Node apparatus and packet transmission control method |
US10/330,500 US7310346B2 (en) | 2002-01-07 | 2002-12-30 | Node apparatus and packet transmission control method |
CNB031009557A CN1254058C (zh) | 2002-01-07 | 2003-01-07 | 节点装置和分组传输控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002000479A JP3753070B2 (ja) | 2002-01-07 | 2002-01-07 | ノード装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003204352A JP2003204352A (ja) | 2003-07-18 |
JP3753070B2 true JP3753070B2 (ja) | 2006-03-08 |
Family
ID=19190498
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002000479A Expired - Fee Related JP3753070B2 (ja) | 2002-01-07 | 2002-01-07 | ノード装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7310346B2 (ja) |
JP (1) | JP3753070B2 (ja) |
CN (1) | CN1254058C (ja) |
CA (1) | CA2415188C (ja) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7369489B1 (en) * | 2002-03-12 | 2008-05-06 | Cisco Technology, Inc. | Unbiased token bucket |
JP4394988B2 (ja) * | 2004-03-19 | 2010-01-06 | 富士通株式会社 | パケット読出し制御方法及び装置 |
US7889645B2 (en) * | 2004-06-17 | 2011-02-15 | Qualcomm Incorporated | Hybrid coordination function implementation |
CN100345404C (zh) * | 2004-06-28 | 2007-10-24 | 华为技术有限公司 | 一种利用局部状态机来保障接口消息发送时序的方法 |
US20060203824A1 (en) * | 2005-02-18 | 2006-09-14 | Song-Huo Yu | Passing values through a memory management unit of a network device |
KR100656473B1 (ko) * | 2005-11-09 | 2006-12-11 | 삼성전자주식회사 | Lan 인터페이스를 구비한 교환망 시스템과 그시스템에서의 과부하 제어방법 |
US8923124B1 (en) * | 2006-01-31 | 2014-12-30 | Juniper Networks, Inc. | Data unit counter |
KR100809424B1 (ko) * | 2006-09-29 | 2008-03-07 | 한국전자통신연구원 | 광가입자망을 위한 동적 대역폭 할당 장치 및 그 방법 |
GB2452913B (en) * | 2007-09-18 | 2011-06-15 | Virtensys Ltd | Queuing method |
KR100950337B1 (ko) * | 2007-11-27 | 2010-03-31 | 한국전자통신연구원 | Tdma 기반 수동 광가입자망을 위한 효율적인 동적대역폭 할당 장치 및 방법 |
JP5088237B2 (ja) * | 2008-05-28 | 2012-12-05 | 日本電気株式会社 | パケット通信装置及びそれに用いる帯域制御方法並びにそのプログラム |
JP5682391B2 (ja) * | 2011-03-22 | 2015-03-11 | 富士通株式会社 | データ転送装置、並列計算機システムおよびデータ転送装置の制御方法 |
US8903925B2 (en) * | 2012-05-14 | 2014-12-02 | Microsoft Corporation | Scheduled messages in a scalable messaging system |
US9565032B2 (en) * | 2014-12-03 | 2017-02-07 | Qualcomm Incorporated | Monitoring and controlling bus ring performance |
CN104407820B (zh) * | 2014-12-12 | 2016-08-17 | 华为技术有限公司 | 基于固态硬盘存储系统的数据处理方法、装置以及系统 |
US10862617B2 (en) * | 2017-05-30 | 2020-12-08 | Marvell Asia Pte, Ltd. | Flowlet scheduler for multicore network processors |
CN109271347B (zh) * | 2018-09-04 | 2022-04-22 | 郑州云海信息技术有限公司 | 一种分布式文件系统存储单元的启动方法、装置及设备 |
CN110764745B (zh) * | 2019-09-16 | 2024-02-02 | 平安科技(深圳)有限公司 | 变量的传输和收集方法、装置及计算机可读存储介质 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6452933B1 (en) * | 1997-02-07 | 2002-09-17 | Lucent Technologies Inc. | Fair queuing system with adaptive bandwidth redistribution |
JP3285514B2 (ja) | 1997-06-12 | 2002-05-27 | 松下電器産業株式会社 | 利得制御装置 |
JP3216582B2 (ja) | 1997-07-18 | 2001-10-09 | 日本電気株式会社 | データ出力制御方法 |
JP3063726B2 (ja) * | 1998-03-06 | 2000-07-12 | 日本電気株式会社 | トラヒックシェーパ |
JP2000183959A (ja) | 1998-12-11 | 2000-06-30 | Nec Corp | スケジューリング管理装置 |
JP3485037B2 (ja) | 1999-08-11 | 2004-01-13 | 日本電気株式会社 | スケジューリング処理回路及びそのスケジューリング処理方法 |
ATE362684T1 (de) * | 2000-03-02 | 2007-06-15 | Alcatel Lucent | Gekennzeichneter prioritätswarteschlangescheduler |
EP1220494B1 (en) * | 2000-12-28 | 2004-02-11 | Alcatel | Method for allocating a bandwidth between network terminals in a communication network and network including a medium access controller for performing such a method |
JP4489308B2 (ja) * | 2001-01-05 | 2010-06-23 | 富士通株式会社 | パケットスイッチ |
-
2002
- 2002-01-07 JP JP2002000479A patent/JP3753070B2/ja not_active Expired - Fee Related
- 2002-12-27 CA CA 2415188 patent/CA2415188C/en not_active Expired - Fee Related
- 2002-12-30 US US10/330,500 patent/US7310346B2/en not_active Expired - Fee Related
-
2003
- 2003-01-07 CN CNB031009557A patent/CN1254058C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2003204352A (ja) | 2003-07-18 |
US20030133466A1 (en) | 2003-07-17 |
CN1254058C (zh) | 2006-04-26 |
CN1431803A (zh) | 2003-07-23 |
CA2415188C (en) | 2007-09-11 |
US7310346B2 (en) | 2007-12-18 |
CA2415188A1 (en) | 2003-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3753070B2 (ja) | ノード装置 | |
EP2993837B1 (en) | Methods and apparatus for path selection within a network based on flow duration | |
EP3678326B1 (en) | Communication system, control device and communication method | |
US8699491B2 (en) | Network element with shared buffers | |
US20080267206A1 (en) | Cam based system and method for re-sequencing data packets | |
JP5967222B2 (ja) | パケット処理装置、フローエントリの配置方法及びプログラム | |
KR101577926B1 (ko) | 통신 노드, 패킷 처리 방법 및 프로그램 | |
CN113890860A (zh) | 用于支持时延受限的数据交换的方法、设备及介质 | |
EP3334101B1 (en) | Load balancing eligible packets in response to a policing drop decision | |
US7586911B2 (en) | Method and apparatus for packet transmit queue control | |
US20150043585A1 (en) | Communication apparatus, communication method, communication system and program | |
CN113454957A (zh) | 一种存储器的管理方法及装置 | |
US20100316062A1 (en) | Scalable packet-switch | |
JP2012155650A (ja) | ルータ及びメニーコアシステム | |
US7269158B2 (en) | Method of operating a crossbar switch | |
US6621825B1 (en) | Method and apparatus for per connection queuing of multicast transmissions | |
Wang et al. | Efficient designs of optical LIFO buffer with switches and fiber delay lines | |
JPH09284297A (ja) | トラフィックシェーパのセル出力競合制御方式 | |
US7586917B1 (en) | Systems and methods for re-ordering data in distributed data forwarding | |
JP5618912B2 (ja) | 中継装置、通信システムおよび中継方法 | |
JP3822595B2 (ja) | ラベルスイッチングネットワーク、ルートサーバ、およびラベルエッジルータ | |
US20020107974A1 (en) | Data traffic manager | |
CN109639581B (zh) | 交换芯片的表项维护方法和装置 | |
JP6148546B2 (ja) | パケット転送装置及びプログラム | |
KR100396916B1 (ko) | 고속 라우터를 위한 입출력 포트간의 패킷 연결 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20041209 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20041209 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050131 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050216 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050411 |
|
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: 20051122 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20051205 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091222 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091222 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101222 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101222 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111222 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111222 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121222 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121222 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131222 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |