JP4648290B2 - パケット転送装置、パケット分配方法、グループ所属プロセッサ変更方法、およびコンピュータプログラム - Google Patents

パケット転送装置、パケット分配方法、グループ所属プロセッサ変更方法、およびコンピュータプログラム Download PDF

Info

Publication number
JP4648290B2
JP4648290B2 JP2006314234A JP2006314234A JP4648290B2 JP 4648290 B2 JP4648290 B2 JP 4648290B2 JP 2006314234 A JP2006314234 A JP 2006314234A JP 2006314234 A JP2006314234 A JP 2006314234A JP 4648290 B2 JP4648290 B2 JP 4648290B2
Authority
JP
Japan
Prior art keywords
processor
packet
group
processors
packets
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
Application number
JP2006314234A
Other languages
English (en)
Other versions
JP2008131350A (ja
Inventor
幸司 杉園
貴文 濱野
道宏 青木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2006314234A priority Critical patent/JP4648290B2/ja
Publication of JP2008131350A publication Critical patent/JP2008131350A/ja
Application granted granted Critical
Publication of JP4648290B2 publication Critical patent/JP4648290B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明はデータ通信におけるパケット転送装置に関し、特にパケット処理プロセッサが複数の処理を並列に処理することができるパケット転送装置に関するものである。
データ通信において、データパケットをあて先に送り届けるための装置として、スイッチなどのパケット転送装置がある。これらのパケット転送装置はネットワークと回線で接続され、ネットワークから到着したパケットをそのあて先に応じてあて先のネットワークへと送信する作業を行う。ネットワークを利用したアプリケーションの増加により処理するデータ量は増加する傾向にある。パケットを処理するプロセッサはデータ量の増加に伴い処理能力を向上させる必要があるが、処理能力の向上に伴い消費電力量が指数関数的に増加するというデメリットが存在する。この消費電力量の増加は、プロセッサ単体の処理能力を増加させずにプロセッサの数を増加させて複数のパケットを同時に処理することで制限することが可能となる。
通常同じフローに属するパケットは送信した時と同じ順番で受信者に到着したときのみデータは正しく受信される。よって、パケット転送装置は同一フローに属するパケットに対しては到着した順番に送信する必要がある。パケットの処理時間はパケットごとに異なり、かつ同じプロセッサで複数のパケットを処理する場合、同時に処理するパケット数に応じて負荷が異なるため負荷状況によっても処理時間は異なる。これにより同一フローのパケットの送信順は負荷の状況に応じて必ずしも到着した順番にはならない。そこで、これに対処するために、現在次に示す2つの方法が考案されている。
非特許文献1ではパケットの送信元アドレスや宛先アドレスをハッシュ関数に入れることにより計算されるIDと同じIDを持つプロセッサにパケットを処理させる方式である。この方式では同一フローに属するパケットは常に同じIDが計算されるため、このフローに属するパケットを処理するプロセッサはいつも同じになり、順序逆転はおこらない。非特許文献2では同一フローに属するパケットをフローごとに用意したFIFOキューで順番を管理し、プロセッサで処理されたパケットのうちFIFOのキューに先頭に存在するものからパケットを転送する方法が紹介されている。この方法では到着順序がFIFOキューによって管理されていることから、処理するプロセッサの負荷の違いで処理時間が異なっていてもパケットを到着順に送信することができる。
L. Kencl, J. Boudec, "Adaptive Load Sharing for Network Processors," IEEE Infocom2002, pp.545−554, 2002 B. Wo, et al., "An Efficient Scheduling Mechanism with Flow−Based Packet Reordering in a High−Speed Network Processor," IEEE HPSR2005, pp.481−485, 2005
非特許文献1の問題点はハッシュ関数の計算結果はプロセッサ間の負荷が均等になるようにIDを計算する保証がないため、一部のプロセッサに負荷が集中する問題が存在することである。このため、フローに対応するプロセッサの負荷が上がるときでも空いているプロセッサにパケットの処理を行わせることはできない。
非特許文献2の問題点は、フローの数だけFIFOキューを用意しないといけない点である。このため、FIFOキューを格納するバッファの容量が増加し、かつフローのIDに相当するFIFOキューを探索する処理が負荷となり、プロセッサの性能を劣化させる。
本発明の目的は、パケットの送信順序を到着順序と同じ順番に保ちつつ、パケットの処理が特定のプロセッサで行われる状況を回避し、ならびに到着するパケット量に応じてパケットを処理するグループ所属プロセッサを変更することで、キャッシュによるデータ処理の高速化を向上させ、かつパケットの到着順を管理する情報を検索する時間を短縮する、パケット転送装置、パケット分配方法、パケットソート方法、グループ所属プロセッサ変更方法を提供することにある。
本発明のパケット転送装置は、パケットを処理するプロセッサが複数存在するパケット転送装置において、
パケットごとに処理させるプロセッサを決定し、そのプロセッサにパケットを渡す第1のモジュールと、プロセッサでの処理後にパケットを到着順に並べ直す第2のモジュールとを有し、
前記第1のモジュールは、パケット処理を行うプロセッサをまとめたプロセッサグループと、各プロセッサグループに属するプロセッサを管理する手段と、パケットのフロー識別子からパケット処理を行うプロセッサが属するプロセッサグループを、前記プロセッサを管理する手段から選択する手段と、プロセッサグループ毎に単位時間当たりのパケット到着数をカウントし、カウント結果に対応するプロセッサ数を検索し、検索されたプロセッサ数に合うようにプロセッサグループに所属するプロセッサを決定する手段と、該プロセッサグループに属するプロセッサからパケットを処理してもらうプロセッサを選択する手段と、選択したプロセッサにパケットを送る手段と、プロセッサグループごとにパケットの到着順を表わすシーケンス番号を管理する手段と、シーケンス番号をパケット情報としてプロセッサに渡した後、前記シーケンス番号を管理する手段中のシーケンス番号を増加させる手段とを有し、
前記第2のモジュールは、先にフロー情報から計算されたIDごとに次に送信するパケットの番号を管理する手段と、処理されたパケットのシーケンス番号と前記パケットの番号を管理する手段で管理している次に転送するパケットのシーケンス番号を比較し、両者が一致する時パケットを送信し、合致しない場合はバッファに格納して、送信する順番になるまで待機させる手段とを有する。
したがって、同一フローに属するパケットを特定多数のプロセッサに処理させることができ、かつパケットの到着順を管理することで、パケットの送信順序を到着順序と同じ状態に保ちつつパケットを転送することが可能になる。
本発明の、パケット転送装置におけるパケットを処理させるプロセッサにパケットを分配する方法は、
異なるフローのフロー情報から計算される値が同じになる場合を許可する関数を用いてプロセッサグループIDを計算するステップと、
プロセッサグループ毎に単位時間当たりのパケット到着数をカウントし、カウント結果に対応するプロセッサ数を検索し、検索されたプロセッサ数に合うようにプロセッサグループに所属するプロセッサを決定するステップと、
前記プロセッサグループIDをインデックスとして、プロセッサグループID-プロセッサ番号管理テーブルからパケットを処理させるプロセッサグループの番号を検索するステップと、
前記プロセッサグループIDをインデックスとして、プロセッサグループID-シーケンス番号管理テーブルからパケットのシーケンス番号を検索するステップと、
検索されたプロセッサグループに属するプロセッサからパケットを処理してもらうプロセッサを選択するステップと、
選択したプロセッサにパケットを、前記プロセッサグループIDと前記シーケンス番号とともに送るステップと、
前記プロセッサグループID-シーケンス番号管理テーブルの前記計算されたプロセッサグループIDのシーケンス番号を増加させるステップと、
を有する。
したがって、パケットの到着順序を管理するエントリの数を減らすことが可能になり、その結果、パケットの到着順を示すシーケンス番号が格納されている場所を検索する時間を短縮できる。
本発明の、パケット転送装置においてパケットを処理するプロセッサの負荷を均等にするグループ所属プロセッサ変更方法は、
前記プロセッサグループに属するプロセッサに処理してもらうパケットが単位時間内に到着する数をプロセッサグループごとに計算するステップと、
プロセッサごとの単位時間当たりのパケット受付数を計算するステップと、
プロセッサグループに属するプロセッサ数を数えるステップと、
該プロセッサグループに属するプロセッサに処理してもらうパケットの単位時間当たりの到着率を計算するステップと、
プロセッサのパケット受付数が第1の閾値を超えると、該プロセッサをグループに加えているプロセッサグループのうち、最も単位時間当たりのパケット到着数の多いグループに、その時点で最も受付数の少なかったプロセッサを追加し、プロセッサのパケット受付数が第1の閾値を下回ると、該プロセッサをグループに加えているプロセッサグループのうち、最も単位時間当たりのパケット到着数の少ないグループから、その時点で最も受付数の多かったプロセッサを削除するステップと、
プロセッサグループに対応するパケットの到着率が、前回測定時よりも増加し、かつ前記到着率に関する複数の第2の閾値とプロセッサ数の関係を記載する表におけるグループに属するプロセッサ数を変更しない上限の第2の閾値を超える場合、その時点で最も受付数の少なかったプロセッサを該プロセッサグループに追加し、プロセッサグループに対応するパケットの到着率が、前回測定時よりも減少し、かつ前記第2の閾値とプロセッサ数の関係を記載する表において、到着率がグループに属するプロセッサ数を変更しない下限の第2の閾値を下回る場合、プロセッサグループに属しているプロセッサのうち、最も単位時間当たりのパケット処理数の大きいものをプロセッサグループから削除するステップと
を有する。
グループ毎に到着するパケット量に応じてグループに属するグループ所属プロセッサを変更することが可能になり、負荷分散を実現しつつ同一のフローのパケットを特定のプロセッサに送ることが可能となるため、全プロセッサに処理を分散させる場合と比較して同一フローの処理データがキャッシュされているプロセッサにパケットの処理を任せやすくなる。
本発明によれば、パケットの処理が特定のプロセッサで行われる状況を緩和することが可能になり、かつ非特許文献2の方式のようにパケットの到着順のソートのために、フローIDごとにFIFOのエントリーを用意しないため、シーケンス番号を検索する時間を短縮することが可能となる。結果として、パケット待機用のバッファ量の削減やパケット処理時間の短縮を実現することが可能となる。
次に、本発明の実施の形態について図面を参照して説明する。
図1は本発明の一実施形態のパケット転送装置の構成図である。
パケット転送装置には複数のプロセッサ1〜5が存在し、それらに異なる機能を割り当てることでパケット処理を実現する。存在するプロセッサとして、パケットを受信するプロセッサ1、パケットを処理するプロセッサ31〜3n、パケットを転送するプロセッサ5、さらに、パケットを分配するプロセッサを決定するディストリビュータ2と、プロセッサ31〜3nにより処理されたパケットを到着順に並べ直すソーター4が存在する。パケットを処理するプロセッサ31〜3nはグループ化されており、1つのグループに1つ以上のプロセッサが属する。
次に、ディストリビュータ2とソーター4の構成について詳しく説明する。
ディストリビュータ2はパケットのヘッダからプロセッサグループを特定するためのIDを計算し、そのIDをもとにパケットグループを選択した後、グループに属するプロセッサからプロセッサを1つ選んでパケットを処理させる機能を持つ。また、同一フローに属するパケットは到着順に送信する必要がある。到着順を特定するために、ディストリビュータ2はパケットの到着順を示すシーケンス番号をプロセッサグループIDごとに管理し、パケットに添付する。このシーケンス番号はパケットが到着するたびに決まった数だけ増加するものである。これらを実現するために、ディストリビュータ2は図2に示すように構成されている。すなわち、ディストリビュータ2は、パケットのヘッダからプロセッサグループIDを計算するプロセッサグループID計算部11と、プロセッサグループIDを計算するための関数を記録する関数記録テーブル12と、プロセッサグループIDから割り当てるプロセッサを決定するためのプロセッサ選択アルゴリズム13と、プロセッサグループに属するプロセッサを管理するデータベースであるプロセッサグループID−プロセッサ番号管理テーブル14と、到着順を示すシーケンス番号を添付するシーケンス番号添付部17と、プロセッサグループIDごとのシーケンス番号を管理するプロセッサグループID−シーケンス番号管理テーブル15と、プロセッサグループ毎に単位時間当たりのパケット数を決定し、計測結果に応じてプロセッサグループに属するプロセッサを決定するグループ所属プロセッサ決定部18と、プロセッサグループに属するプロセッサの中からパケットを処理してもらうプロセッサを選択するプロセッサ検索部16を有している。プロセッサ検索部16で用いられるアルゴリズムにはラウンドロビンや重み付けラウンドロビンがある。本発明では異なるフローに同一のプロセッサグループIDを添付することを許容している。これにより管理するプロセッサグループIDの数を減らすことができる。このため、プロセッサグループIDの計算にはハッシュ関数を用いる。
グループ所属プロセッサ決定部18は、図3に示すように、単位時間を計測するタイマー31と、単位時間当たりのパケット数を計測するパケット計測部32と、プロセッサグループ毎に計測した単位時間当たりのパケット数を記録するプロセッサグループ−パケット数管理テーブル33と、パケット数の計測結果からプロセッサ数およびグループの所属プロセッサを決定するプロセッサ決定部34と、単位時間当たりのパケット数とプロセッサ数を対応付けるプロセッサ数−パケット到着率対応表35と、プロセッサの処理負荷を計測し、プロセッサ決定部34に通知するプロセッサ負荷計測部36を有する。
ソーター4はプロセッサ31〜3nによって処理されたパケットを到着順に並べ直す機能を持つ。パケットにはシーケンス番号によって到着の順番が記載されている。このシーケンス番号を用いて到着順に並べ直すために、ソーター4は、図4に示すように、プロセッサグループIDごとの次に送信するパケットのシーケンス番号を管理するプロセッサグループID−シーケンス番号管理テーブル21と、プロセッサ31〜3nから送られてきたパケットの情報内に記載されているシーケンス番号と、テーブル21内の次に転送するパケットのシーケンス番号を比較するシーケンス番号比較部22と、送られてきたパケットが次に送信するパケットでなかったときにパケットをバッファリングするパケット待機用バッファ23を有する。
次に、ディストリビュータ2の動作を図5により説明する。
プロセッサグループID計算部11はヘッダに記載されているソースアドレスやディスティネーションアドレスなどの情報からプロセッサグループIDを計算する(ステップ101)。この計算は、関数管理テーブル12に管理されている関数に、ヘッダに記載されている情報を引数として入力することで行う。次に、グループ所属プロセッサ決定部18内に存在するパケット計測部32において計算されたプロセッサグループIDをインデックスとして、プロセッサグループ−パケット数管理テーブル33においてプロセッサグループごとに管理しているパケット数を1増加させる(ステップ102)。次に、プロセッサ検索部16は計算されたプロセッサグループIDをインデックスとして、パケットを処理させるプロセッサの番号とパケットのシーケンス番号を、それぞれプロセッサグループID−プロセッサ番号管理テーブル14とプロセッサグループID−シーケンス番号管理テーブル15から検索する(ステップ103、104)。次に、シーケンス番号添付部17は検索されたプロセッサグループに属しているプロセッサを、プロセッサ選択アルゴリズム13を用いて選択し、パケットを選択したプロセッサに処理してもらうため、パケットを処理するための情報を作成、もしくはプロセッサ1からもたらされたものを利用し、その中にプロセッサグループIDとシーケンス番号を記載する(ステップ105)。プロセッサ選択アルゴリズム13の例として、グループ内の処理を行わないプロセッサを、ラウンドロビンや重み付けラウンドで選択する、一様分布に従って選択する、などのアルゴリズムがある。次に、プロセッサにこの情報を渡す(ステップ106)。最後に、次に到着したパケットの順番を示すため、プロセッサグループID−シーケンス番号管理テーブル15中のシーケンス番号を増加させる(ステップ107)。
次に、ディストリビュータ2で行なわれるグループ所属プロセッサ変更を、図6を用いて説明する。
グループ所属プロセッサ変更では、パケット処理を行うプロセッサの処理数や、プロセッサグループに対応するパケットの到着数に応じて、プロセッサグループに属するプロセッサ数を変更する。変更タイミングを決めるために、プロセッサグループごとに表1に示すようなプロセッサ数−パケット到着率対応表35が設けられている。
Figure 0004648290
プロセッサ数−パケット到着率対応表35は、パケット到着率のある範囲ごとに、パケットグループが持つプロセッサの数を割り当てている。表1の例では、パケット到着率がT1(packet/s)からT2(packet/s)の間であれば、このプロセッサグループが持つプロセッサの数は2つであり、Tn−2(packet/s)からTn−1(packet/s)の間であれば、プロセッサグループにはn−1(nはプロセッサの最大数)個割り当てることを示す。
グループ所属プロセッサ決定部18で行われるグループ所属プロセッサ変更動作を図6により説明する。この動作は、パケット計測部32とプロセッサ決定部34が連携しながら行う。すなわち、パケット計測部32で単位時間あたりのパケット数を計測し、プロセッサ決定部34はその値とプロセッサ数−パケット到着率対応表35を見ながらパケット数を決定し、アルゴリズムにしたがって、プロセッサグループに属するプロセッサを決定する。
まず、単位時間当たりのプロセッサグループごとの到着パケット数と、プロセッサごとの処理数を定期的にカウントする(ステップ201)。このカウント結果に応じて、プロセッサグループに属するプロセッサ数の増減を行う。まず、プロセッサグループに属するプロセッサ数を増やすパターンについて説明する。このパターンは、あるプロセッサの負荷が高くなる時、例では単位時間内にプロセッサが処理のためパケットを受け付けた数が、あらかじめ設けられた閾値Pを超える、もしくはプロセッサグループに対応するパケットの到着率が表1のプロセッサ数−パケット到着率対応表18が示す現行のプロセッサ数の領域の上限の閾値を超える場合に発生する。それぞれの場合についての処理を述べる。
まず、単位時間内にプロセッサが処理のためにパケットを受け付けた数が、あらかじめ設けられた閾値Pを超える場合(ステップ202のY)は、該プロセッサにパケットを処理してもらうプロセッサグループのうち、最も到着パケットの多いグループに、該グループに属していないプロセッサのうち、最も単位時間当たりの受付パケット数の少ないプロセッサを追加する(ステップ203)。こうすることで、該グループに属するプロセッサに処理してもらうパケットが、新たに追加されたプロセッサでも処理してもらえるようになる。ついで、プロセッサグループに属するプロセッサに処理してもらうパケットの到着率が、プロセッサ数−パケット到着率対応表18における、現行のプロセッサ数kに対応する領域の上限閾値Tkを超える場合(ステップ205のY)、グループに属していないプロセッサのうち、単位時間当たりの受付パケット数が少ないプロセッサを該グループに追加する(ステップ206)。次に、プロセッサグループに属するプロセッサの数を減らすパターンについて説明する。このパターンはプロセッサの負荷が低くなる(ステップ202のN)、もしくはプロセッサグループに属するプロセッサにパケットを処理してもらうパケットの到着率が、プロセッサ数−パケット到着率対応表18が示す現行のプロセッサ数に対応する領域の下限の閾値Tk−1を下回る場合に発生する(ステップ205のN)。前者の場合はそのプロセッサにパケットを処理してもらうプロセッサグループのうち、最も到着パケットの少ないグループから該プロセッサを削除する(ステップ204)。後者の場合、プロセッサグループに属するプロセッサのうち、最も単位時間当たりの受付パケット処理数の大きいものをプロセッサグループから削除する(ステップ207)。
次に、ソーター4の動作を図7により説明する。
ソーター4のシーケンス番号比較部22は、プロセッサによって処理されたパケットの情報を受信すると(ステップ301)、該情報に記載されているプロセッサグループIDを用いて、プロセッサグループID−シーケンス番号管理テーブル21から次に送信するパケットのシーケンス番号を検索する(ステップ302)。次に、検索した番号と受け取ったパケットの番号を比較し、受け取ったパケットが次に送信するパケットかどうかを判断する(ステップ303)。両者が一致する場合は次に送信できるパケットを受信したことがわかるため、パケットをプロセッサ5に送る(ステップ304)。もし両者が異なっていれば送信する順番が来るまで該パケットをパケット待機用バッファ23でパケットを待機させる(ステップ306)。プロセッサ5がパケットを転送するたびに転送されたパケットと同じプロセッサグループIDに対応した、プロセッサグループID−シーケンス番号管理テーブル21中の、次に送信する順番を示すシーケンス番号を1増加させる(ステップ305)。
次に、ディストリビュータ2の動作を図8から図10により、具体例を挙げて説明する。
図8にプロセッサグループIDの計算(ステップ101)の様子を示す。プロセッサグループIDを計算する関数は、パケットヘッダに添付されているディスティネーションアドレスを10進数変換し、3で割った時の余りであるとする。例として、パケットのディスティネーションアドレスが192.168.1.2であるとすると、あまりは2となるため、プロセッサグループIDは2となる。計算する関数は、引数として取るディスティネーションアドレスの値が異なる場合でも、同じ値を計算するものを使用することができる。本例で示した関数である、引数の3で割った余りをプロセッサグループIDとする関数もそのような関数の1つである。この場合、192.168.1.2だけでなく、192.168.1.5も余りが2となるため、両者のプロセッサグループIDは共に2となる。
図9にプロセッサグループID−プロセッサ番号管理テーブル14とプロセッサグループID−シーケンス番号管理テーブル15の検索(ステップ102,103)の様子を示す。例では、プロセッサグループID−プロセッサ番号管理テーブル14に、プロセッサグループIDが2番であるパケットを処理するプロセッサとして、プロセッサ3,4が記載されている。これよりパケットを処理するプロセッサはプロセッサ3もしくは4であることがわかる。次に、プロセッサグループID−シーケンス番号管理テーブル15から、プロセッサグループIDが2番であるパケットのシーケンス番号が1354であることがわかる。パケットをプロセッサに処理させるにはパケットに関する情報を作成してプロセッサに渡すことになる。パケットに関する情報にはパケットが格納されているメモリの位置やパケットのソースアドレス、ディスティネーションアドレスなど、パケット処理に必要な情報が記載されている。この情報の中に、プロセッサグループIDとシーケンス番号を追記し、ソーター4でパケット到着順にパケットをソートすることができるようにする。パケット情報を渡すプロセッサであるが、パケットの処理が終了したプロセッサが順にとる方法や、ラウンドロビン形式で処理するプロセッサが決まる方式などが存在する。
図10はパケット情報をプロセッサに渡す様子を示している。パケットをプロセッサに転送する際、シーケンス番号が到着順を表わすように、プロセッサグループID−シーケンス番号管理テーブル15内の、プロセッサグループID=2に対応するシーケンス番号を1増加させ、次にプロセッサグループID=2のパケットが到着した時にその番号を割り当てる。
次に、ソーター4の動作を図11から13により説明する。
ソーター4はプロセッサによって処理されたパケットの情報を受け取ると、パケットの情報の中に入っているプロセッサグループIDとシーケンス番号を調べる(図11)。次に、得られたプロセッサグループIDをもとにプロセッサグループID−シーケンス番号管理テーブル21から、次に送信するパケットのシーケンス番号を得る(図12)。この例では、次に送信するパケットのシーケンス番号が1354で、プロセッサ32から送られてきたパケット情報に記載しているシーケンス番号が1354であるため、次に送信するパケットであると判断される。その後、パケット情報はプロセッサ5へと送られ、プロセッサ5によってパケットは転送される。プロセッサ5はパケットを送信すると、ソーター4のプロセッサグループID−シーケンス番号管理テーブル21で管理される、次に送信するパケットのシーケンス番号の値を1増加させる(図13)。もし、ソーター4が持つパケット待機用バッファ23内のキューの中にパケットが待機させられているならば、シーケンス番号が増加するたびに待機しているパケットのシーケンス番号をチェックし、次に転送するパケットが存在するならばそのパケットをプロセッサ5に送る。ソーター4は待機するパケットを収納するためにプロセッサグループIDごとにキューを用意している。シーケンス番号をチェックする際には、キューを先頭から探索し、次に送信するシーケンス番号と同じものを持つパケットを検索する。
最後に、プロセッサグループに属するプロセッサ数を変更する時の動作を説明する。このとき、プロセッサ数−パケット到着率対応表35を表2に示す。
Figure 0004648290
まず、図14を用いてプロセッサ数を増加させる時の様子を説明する。プロセッサグループ2(プロセッサグループID=2)に属するプロセッサの処理してもらうパケットがディストリビュータ2に1900 packet per secondの割合で到着しているとする。このとき、プロセッサ数−到着率対応表18から、プロセッサグループ2にはプロセッサが2つ割り当てられていることになる。その後、パケットの到着率を計測したところ、プロセッサグループ2に属する2100ppsにパケットの到着率が上昇したとする。2100ppsはプロセッサ数−到着率対応表18によると、グループに属するプロセッサ数が3である領域から、負荷分散部19はパケットグループ2に属するプロセッサの数を増加させる。このとき、プロセッサごとに取っている、プロセッサが処理のために受け付けたパケット数を見て、最もパケット数の少ないプロセッサを新たにパケットグループ2に加える。例では、それぞれのプロセッサ31、32、33、34の受付パケット数の比がプロセッサ31:プロセッサ32:プロセッサ33:プロセッサ34=3:5:10:10であるため、プロセッサ31をプロセッサグループ2に加える。今後、プロセッサグループ2に属するプロセッサにパケットを処理してもらうパケットは、プロセッサ33,34のほかにプロセッサ31にも処理してもらうことが可能となる。
次に、図15を用いてプロセッサ数を減少させる時の様子を説明する。プロセッサグループ2に属するプロセッサに処理してもらうパケットがディストリビュータ2に2100ppsで到着していた状態から1800ppsに減少したとする。この場合、プロセッサ数−到着率対応表18から、プロセッサグループ2に属するプロセッサ数は2であることがわかるため、それまで3個使用していたプロセッサのうち、1つグループから削除する。このとき、プロセッサごとに取っている、プロセッサが処理のため受け付けたパケット数を見て、最もパケット数の多いプロセッサをパケットグループ2から削除する。例では、それぞれのプロセッサ31、32、33、34の受付パケット数の比がプロセッサ31:プロセッサ32:プロセッサ33:プロセッサ34=3:5:10:10であるため、プロセッサ33もしくは34をプロセッサグループ2から削除することが可能となる。候補が2つ存在する場合はどちらかを選択するが、選択手法としては、IDの最も小さいプロセッサから削除する方法や等確率で選択する方法がある。ここでは前者のポリシーを使用することを想定する。これより、プロセッサ33がプロセッサグループ2から削除される。これ以後、プロセッサグループ2に属するプロセッサに処理されるパケットはプロセッサ31,34のみにより処理される。
なお、ディストリビュータ2およびソーター4の機能は、その機能を実現するためのプログラムを、コンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませ、実行するものであってもよい。コンピュータ読み取り可能な記録媒体とは、フレキシブルディスク、光磁気ディスク、CD−ROM等の記録媒体、コンピュータシステムに内蔵されるハードディスク装置等の記憶装置を指す。さらに、コンピュータ読み取り可能な記録媒体は、インターネットを介してプログラムを送信する場合のように、短時間、動的にプログラムを保持するもの(伝送媒体もしくは伝送波)、その場合のサーバとなるコンピュータ内の揮発性メモリのように、一定時間プログラムを保持しているものを含む。
本発明の一実施形態によるパケット転送装置のブロック図である。 ディストリビュータのブロック図である。 グループ所属プロセッサ決定部のブロック図である。 ソーターのブロック図である。 ディストリビュータの動作を示すフローチャートである。 ディストリビュータで行なわれる負荷分散動作を示すフローチャートである。 ソーターの動作を示すフローチャートである。 ディストリビュータでのプロセッサグループIDの計算の様子を示す図である。 プロセッサグループID−プロセッサ番号管理テーブルとプロセッサグループID−シーケンス番号管理テーブルの検索の様子を示す図である。 パケット情報をプロセッサに渡す様子を示す図である。 ソーターの動作の具体例の説明図である。 ソーターの動作の具体例の説明図である。 ソーターの動作の具体例の説明図である。 プロセッサグループに属するプロセッサ数を変更するときの動作の具体例の説明図である。 プロセッサグループに属するプロセッサ数を減少させるときの具体例の動作を示す説明図である。
符号の説明
1 プロセッサ(Rx)
2 ディストリビュータ
1〜3n プロセッサ
4 ソーター
5 プロセッサ(Tx)
11 プロセッサグループID計算部
12 関数記録テーブル
13 プロセッサ選択アルゴリズム
14 プロセッサグループID−プロセッサ番号管理テーブル
15 プロセッサグループID−シーケンス番号管理テーブル
16 プロセッサ検索部
17 シーケンス番号添付部
18 グループ所属プロセッサ決定部
21 プロセッサグループID−シーケンス番号管理テーブル
22 シーケンス番号比較部
23 パケット待機用バッファ
31 タイマー
32 パケット計測部
33 プロセッサグループ−プロセッサ数管理テーブル
34 プロセッサ決定部
35 プロセッサ数−パケット到着率対応表
36 プロセッサ負荷計測部
101〜107,201〜207,301〜306 ステップ

Claims (5)

  1. パケットを処理するプロセッサが複数存在するパケット転送装置において、
    パケットごとに処理させるプロセッサを決定し、そのプロセッサにパケットを渡す第1のモジュールと、プロセッサでの処理後にパケットを到着順に並べ直す第2のモジュールとを有し、
    前記第1のモジュールは、パケット処理を行うプロセッサをまとめたプロセッサグループと、各プロセッサグループに属するプロセッサを管理する手段と、パケットのフロー識別子からパケット処理を行うプロセッサが属するプロセッサグループを、前記プロセッサを管理する手段から選択する手段と、プロセッサグループ毎に単位時間当たりのパケット到着数をカウントし、カウント結果に対応するプロセッサ数を検索し、検索されたプロセッサ数に合うようにプロセッサグループに所属するプロセッサを決定する手段と、該プロセッサグループに属するプロセッサからパケットを処理してもらうプロセッサを選択する手段と、選択したプロセッサにパケットを送る手段と、プロセッサグループごとにパケットの到着順を表わすシーケンス番号を管理する手段と、シーケンス番号をパケット情報としてプロセッサに渡した後、前記シーケンス番号を管理する手段中のシーケンス番号を増加させる手段とを有し、
    前記第2のモジュールは、先にフロー情報から計算されたIDごとに次に送信するパケットの番号を管理する手段と、処理されたパケットのシーケンス番号と前記パケットの番号を管理する手段で管理している次に転送するパケットのシーケンス番号を比較し、両者が一致する時パケットを送信し、合致しない場合はバッファに格納して、送信する順番になるまで待機させる手段とを有する
    パケット転送装置。
  2. パケット転送装置におけるパケットを処理させるプロセッサにパケットを分配する方法であって、
    異なるフローのフロー情報から計算される値が同じになる場合を許可する関数を用いてプロセッサグループIDを計算するステップと、
    プロセッサグループ毎に単位時間当たりのパケット到着数をカウントし、カウント結果に対応するプロセッサ数を検索し、検索されたプロセッサ数に合うようにプロセッサグループに所属するプロセッサを決定するステップと、
    前記プロセッサグループIDをインデックスとして、プロセッサグループID-プロセッサ番号管理テーブルからパケットを処理させるプロセッサグループの番号を検索するステップと、
    前記プロセッサグループIDをインデックスとして、プロセッサグループID-シーケンス番号管理テーブルからパケットのシーケンス番号を検索するステップと、
    検索されたプロセッサグループに属するプロセッサからパケットを処理してもらうプロセッサを選択する手段と、
    選択したプロセッサにパケットを、前記プロセッサグループIDと前記シーケンス番号とともに送るステップと、
    前記プロセッサグループID-シーケンス番号管理テーブルの前記計算されたプロセッサグループIDのシーケンス番号を増加させるステップと、
    を有するパケット分配方法。
  3. パケット転送装置においてパケットを処理するプロセッサの負荷を均等にするグループ所属プロセッサ変更方法であって、
    前記プロセッサグループに属するプロセッサに処理してもらうパケットが単位時間内に到着する数をプロセッサグループごとに計算するステップと、
    プロセッサごとの単位時間当たりのパケット受付数を計算するステップと、
    プロセッサグループに属するプロセッサ数を数えるステップと、
    該プロセッサグループに属するプロセッサに処理してもらうパケットの単位時間当たりの到着率を計算するステップと、
    プロセッサのパケット受付数が第1の閾値を超えると、該プロセッサをグループに加えているプロセッサグループのうち、最も単位時間当たりのパケット到着数の多いグループに、その時点で最も受付数の少なかったプロセッサを追加し、プロセッサのパケット受付数が第1の閾値を下回ると、該プロセッサをグループに加えているプロセッサグループのうち、最も単位時間当たりのパケット到着数の少ないグループから、その時点で最も受付数の多かったプロセッサを削除するステップと、
    プロセッサグループに対応するパケットの到着率が、前回測定時よりも増加し、かつ前記到着率に関する複数の第2の閾値とプロセッサ数の関係を記載する表におけるグループに属するプロセッサ数を変更しない上限の第2の閾値を超える場合、その時点で最も受付数の少なかったプロセッサを該プロセッサグループに追加し、プロセッサグループに対応するパケットの到着率が、前回測定時よりも減少し、かつ前記第2の閾値とプロセッサ数の関係を記載する表において、到着率がグループに属するプロセッサ数を変更しない下限の第2の閾値を下回る場合、プロセッサグループに属しているプロセッサのうち、最も単位時間当たりのパケット処理数の大きいものをプロセッサグループから削除するステップと
    を有するグループ所属プロセッサ変更方法。
  4. 請求項2に記載のパケット分配方法をコンピュータに実行させるためのプログラム。
  5. 請求項に記載のグループ所属プロセッサ変更方法をコンピュータに実行させるためのプログラム。
JP2006314234A 2006-11-21 2006-11-21 パケット転送装置、パケット分配方法、グループ所属プロセッサ変更方法、およびコンピュータプログラム Expired - Fee Related JP4648290B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006314234A JP4648290B2 (ja) 2006-11-21 2006-11-21 パケット転送装置、パケット分配方法、グループ所属プロセッサ変更方法、およびコンピュータプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006314234A JP4648290B2 (ja) 2006-11-21 2006-11-21 パケット転送装置、パケット分配方法、グループ所属プロセッサ変更方法、およびコンピュータプログラム

Publications (2)

Publication Number Publication Date
JP2008131350A JP2008131350A (ja) 2008-06-05
JP4648290B2 true JP4648290B2 (ja) 2011-03-09

Family

ID=39556766

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006314234A Expired - Fee Related JP4648290B2 (ja) 2006-11-21 2006-11-21 パケット転送装置、パケット分配方法、グループ所属プロセッサ変更方法、およびコンピュータプログラム

Country Status (1)

Country Link
JP (1) JP4648290B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5028431B2 (ja) * 2009-01-07 2012-09-19 株式会社日立製作所 ネットワーク中継装置およびパケット振り分け方法
JP5325731B2 (ja) * 2009-09-30 2013-10-23 株式会社日立製作所 ネットワーク中継装置
KR101583325B1 (ko) * 2014-08-12 2016-01-07 주식회사 구버넷 가상 패킷을 처리하는 네트워크 인터페이스 장치 및 그 방법
JP6482296B2 (ja) * 2015-01-28 2019-03-13 エヌ・ティ・ティ・コミュニケーションズ株式会社 パケット処理システム、通信システム、パケット処理装置、パケット処理方法、及びプログラム

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04235662A (ja) * 1991-01-11 1992-08-24 Nec Corp マルチプロセッサ間の負荷分散方式
JPH0774754A (ja) * 1993-09-06 1995-03-17 Nec Corp パケット交換機の負荷分散制御方式
WO2000004494A1 (en) * 1998-07-17 2000-01-27 Intergraph Corporation Graphics processing system with multiple strip breakers
JP2001339382A (ja) * 2000-05-29 2001-12-07 Matsushita Electric Works Ltd 暗号処理制御方法及びそのプログラムを記録した記録媒体及び暗号処理制御装置及び暗号処理システム
JP2004524598A (ja) * 2000-09-25 2004-08-12 クロスビーム システムズ, インク. ネットワークアプリケーション装置のためのフロースケジューリング及びアーキテクチャ
JP2004350188A (ja) * 2003-05-26 2004-12-09 Nec Corp データ転送装置及びプログラム
JP2005507614A (ja) * 2001-10-30 2005-03-17 エイチアイ/エフエヌ,インコーポレイテッド パケットの順序付けを行う並列パケット変換処理のための方法、システムおよびコンピュータプログラム製品

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04235662A (ja) * 1991-01-11 1992-08-24 Nec Corp マルチプロセッサ間の負荷分散方式
JPH0774754A (ja) * 1993-09-06 1995-03-17 Nec Corp パケット交換機の負荷分散制御方式
WO2000004494A1 (en) * 1998-07-17 2000-01-27 Intergraph Corporation Graphics processing system with multiple strip breakers
JP2001339382A (ja) * 2000-05-29 2001-12-07 Matsushita Electric Works Ltd 暗号処理制御方法及びそのプログラムを記録した記録媒体及び暗号処理制御装置及び暗号処理システム
JP2004524598A (ja) * 2000-09-25 2004-08-12 クロスビーム システムズ, インク. ネットワークアプリケーション装置のためのフロースケジューリング及びアーキテクチャ
JP2005507614A (ja) * 2001-10-30 2005-03-17 エイチアイ/エフエヌ,インコーポレイテッド パケットの順序付けを行う並列パケット変換処理のための方法、システムおよびコンピュータプログラム製品
JP2004350188A (ja) * 2003-05-26 2004-12-09 Nec Corp データ転送装置及びプログラム

Also Published As

Publication number Publication date
JP2008131350A (ja) 2008-06-05

Similar Documents

Publication Publication Date Title
Shi et al. Load balancing for parallel forwarding
US11824764B1 (en) Auto load balancing
CN102170396B (zh) 一种基于区分服务的云存储系统QoS控制方法
US9185047B2 (en) Hierarchical profiled scheduling and shaping
US7751404B2 (en) Method, system, and computer program product for high performance bonding resequencing
US9106545B2 (en) Hierarchical occupancy-based congestion management
US20140075036A1 (en) Queue Scheduling Method and Apparatus
US20080101233A1 (en) Method and apparatus for load balancing internet traffic
CN111107000B (zh) 一种基于网络编码的命名数据网络中内容缓存方法
US12068972B1 (en) Shared traffic manager
CN116114233A (zh) 自动流管理
CN113518130B (zh) 一种基于多核处理器的分组突发负载均衡方法及系统
JP4648290B2 (ja) パケット転送装置、パケット分配方法、グループ所属プロセッサ変更方法、およびコンピュータプログラム
US7792129B2 (en) Multi-queue packet processing using Patricia tree
JP2013196389A (ja) 情報処理装置、情報処理プログラム及び情報処理方法
US10291540B2 (en) Method and apparatus for performing a weighted queue scheduling using a set of fairness factors
WO2020200307A1 (zh) 数据包标记方法及设备、数据传输系统
US10742558B1 (en) Traffic manager resource sharing
JP2000083055A (ja) ルータ
CN111444183B (zh) 一种键值存储系统中的分布式自适应用户请求调度方法
CN114285790A (zh) 数据处理方法、装置、电子设备和计算机可读存储介质
CN110661731B (zh) 一种报文处理方法及其装置
JP7251060B2 (ja) 情報処理装置、情報処理システム及び情報処理プログラム
CN115297122B (zh) 基于负载自动监测的政务运维方法和系统
WO2023193689A1 (zh) 报文传输方法、装置、设备及计算机可读存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081225

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100917

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101006

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101112

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: 20101201

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101209

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131217

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees