JP5672504B2 - 振分先を切り替える並列パケット処理方法および装置 - Google Patents

振分先を切り替える並列パケット処理方法および装置 Download PDF

Info

Publication number
JP5672504B2
JP5672504B2 JP2012041507A JP2012041507A JP5672504B2 JP 5672504 B2 JP5672504 B2 JP 5672504B2 JP 2012041507 A JP2012041507 A JP 2012041507A JP 2012041507 A JP2012041507 A JP 2012041507A JP 5672504 B2 JP5672504 B2 JP 5672504B2
Authority
JP
Japan
Prior art keywords
packet processing
distribution
flow
unit
packet
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
JP2012041507A
Other languages
English (en)
Other versions
JP2013179429A (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 JP2012041507A priority Critical patent/JP5672504B2/ja
Publication of JP2013179429A publication Critical patent/JP2013179429A/ja
Application granted granted Critical
Publication of JP5672504B2 publication Critical patent/JP5672504B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)

Description

本発明は、ネットワーク内でデータを送受信および中継する方法及び装置に関し、特に、L7(レイヤ7)/L4(レイヤ4)スイッチのような、転送データでの広い範囲を参照して転送データを修正する処理や参照データの情報に基づきデータをある方路へ転送または廃棄する処理での、並列処理による性能向上の方法と、そのような方法に基づいて構成された装置に関する。
パケット転送は、一般に、ネットワーク内に設けられるノード装置によって処理される。パケット転送処理に対する要求の多様化と高度化により、パケット転送処理をソフトウェアベースで柔軟に実現しながらも、複数のノード装置を設けたり、ノード装置をマルチプロセッサ構成としたり、ノード装置内のプロセッサとして1チップに複数のコアが集積されたマルチコア構成のものを用いたりして並列処理によるスケールアウトを行い、性能向上を図ることが重要となっている。さらに、仮想化に合わせた柔軟な処理割当てなどを実現するために、動的に各処理プログラムに対する並列数を変更する、または、低消費電力化のために並列数を変化させて電源のオン/オフ制御を実行するという要求も高まってきている。ルータやL7スイッチでのパケット処理のように、短時間に大量の単純処理を実行しなければならない場合には、並列処理が特に有効である。
パケット転送処理での一般的な並列処理は、実際に処理を行う複数のパケット処理部と、それらのパケット処理部に対して負荷分散などを考慮してパケットあるいはデータを振り分ける振分部で実現される。マルチコア構成のプロセッサが用いられるとすれば、パケット処理部は、パケット処理用のプログラムをロードしたコアによって実現され、振分部は振分用のプログラムをロードしたコアによって実現される。したがって、パケット処理部は処理コアとも呼ばれ、振分部は振分コアとも呼ばれる。
図1は、上述した並列処理を実行するパケット処理装置101の一般的な構成を示している。ネットワークとの接続に用いられる2つのインタフェース(I/F)部102,103が設けられており、インタフェース部102,103は、いずれもパケット入力部104とパケット出力部105とに接続している。パケット入力部104は、パケット処理の対象となるパケットを外部から受信するための受信インタフェース回路であり、パケット出力部105は、パケット処理がなされたパケットを外部に送信するための送信インタフェース回路である。パケット入力部104とパケット出力部105は、内部バス106に接続し、内部バス106には、振分部(振分コア)107と複数のパケット処理部(処理コア)108も接続している。パケット処理の実施において必要とするためにデータを保持するデータ保持部109が外部メモリとして設けられており、複数のパケット処理部108は、メモリバス110を介してデータ保持部109に接続する。データ保持部109は、複数のパケット処理部108に対する共有メモリとして機能するものである。この構成においてパケット入力部104、パケット出力部105、内部バス106、振分部107、パケット処理部108及びメモリバス110は、マルチコア構成のプロセッサ(例えばマルチコア構成のCPU(中央演算ユニット))111内に形成されている。
以下の説明において、個々のパケット処理部108を区別して説明する場合には、コア1、コア2、…などのように「コア」の用語に数字を付したものを使用するものとする。
各パケット処理部108で実行されるパケット処理は、例えば、ファイアウォール(FW)処理、QoS(Quality of Service)処理、NAPT(Network Address Port Translation)処理、暗号/複号処理などが挙げられ、各パケット処理部108には、これらの処理を実行するためのプログラムが実装される。この構成では、ネットワーク側から受信したパケットは、パケット入力部104を介して、振分部107によって指定されたパケット処理部108に送られる。パケットが送られてきたパケット処理部108は、そのパケットに対してパケット処理を実行し、パケット処理がなされたパケットは、パケット出力部105を介してネットワーク側に送信される。
各パケット処理部108は、パケット処理の実施に際して、転送テーブルやアドレス変換テーブルなどのデータを参照するためにデータ保持部109にアクセスするが、このデータ保持部109は、複数のパケット処理部108からのアクセスが集中するため、ボトルネックとなりやすく、また、そもそも外部メモリであるデータ保持部109にアクセスする時間自体も性能低下を引き起こす。このボトルネックを回避するために、各パケット処理部108では、データコピー部として機能するキャッシュメモリが設けられており、このキャッシュメモリにデータのコピーの一部を保持することで高速な処理を実現している。ここでのキャッシュメモリは、例えば、マルチコアのプロセッサ111における各コアごとのキャッシュメモリとして設けられているものである。しかしキャッシュメモリの容量は限られていて必要な全データのコピーをキャッシュメモリ上に置くことはできず、キャッシュにおけるミスヒットが発生する。このようなミスヒットが発生すると、パケット処理部108がデータ保持部109へのアクセスを行う必要が生じて性能が低下する。図2は、上述したパケット処理装置における並列処理動作を示している。図2に示したものでは、各パケット処理部108(処理コア1〜4)は同一プログラムの実行が可能であるとし、振分部107は、ハッシュ関数などを用いた単純なアルゴリズムで後述するフロー単位で振分先を決定するものとしている。図2は、キャッシュミスヒットが発生した場合に、データ保持部109への問い合わせが発生することを示している。
できるかぎりキャッシュミスヒットを低減させるためには、振分部107において、同じ処理が施されることになるパケットを可能な限り同じパケット処理部へ振り分けるようにすればよい。このため振分部107は、パケットのヘッダ(5-tuple等)を参照し、同じパケット処理の対象となる一連のパケット群(フロー)を特定して、フロー単位に振り分けを行う。
また、複数のパケット処理部108で処理することになるパケットの振り分けを行うことから、振分部107には負荷が集中しやすい。振分処理がボトルネックとなることを防ぐためには、振分部107での振分処理として、単純な動作のものを用いる必要がある。個々のフローとそれらのフローに対して割り当てる処理コア(割当処理コア)のID(識別番号)とをメモリ上のテーブルで管理し、割当処理コアをメモリアクセスを伴う検索により特定するような振分動作は、メモリアクセスが多くてボトルネックとなりやすい。それよりも、非特許文献1に記載されるように、パケットヘッダでのフローを特定する領域からハッシュ関数などによりハッシュ値を算出して、そのハッシュ値に基づき、割当処理コアのIDが記述されたメモリアドレス番地を引く、もしくは、ハッシュ値からある程度まとめたフロー群で割当処理コアIDを検索する、といった動作から割当コアを求める動作の方が好ましく、これらの動作を用いることによって、メモリアクセス数を削減し、高速に処理可能とすることが可能である。
このようにハッシュ関数を用いて振分を行う場合、柔軟な処理割当や省電力化のためにパケット処理部108の並列数を増減させると、新たに加えたパケット処理部108にも処理割当が行われ、あるいは、削減したパケット処理部には処理割当が行われないように、振分アルゴリズム(振分条件)を変更する。具体的には、ハッシュ値を求めるために使用するハッシュ関数の変更、ハッシュ値からフローをまとめる際に用いるしきい値の変更、まとまったフロー群と割当処理コアIDとの対応関係の変更などを行う必要がある。このような振分条件の変更を行うと、並列数の変更前後で多くのフローが異なったパケット処理部へ割り当てられることとなり、その結果、短時間にキャッシュミスヒットが集中して発生し、処理遅延が大きくなる。例えば、並列数を1つ増加させた場合は、新しいパケット処理部108に割り当てられたフローの処理では、全て、キャッシュミスヒットが発生することから、データ保持部109へのアクセス所要時間が長いことに起因して、パケット処理部108での処理遅延が発生する。
図3は、パケット処理部108を1つ追加したときのキャッシュミスヒットの発生を説明する図である。(A)に示すように、コア1〜コア3までの3個のパケット処理部(処理コア)108が設けられており、振分部107はそれらの処理コアに対してフローA〜Dを振分けているものとする。ここで新たにコア4を処理コアとして追加したとすると、振分部107は、振分アルゴリズムを3分割用のものから4分割用のものに切り替えて、フローA〜Dを4個のコア1〜4に改めて振分ける。その結果、(B)に示すように、各コアには従前のフローとは異なるフローが割り当てられることとなって、各コアにおいてキャッシュミスヒットが発生することになる。その結果、(C)に示すように、変更タイミングの直後に、処理遅延が急増することになる。
もう一例として、並列数を1つ減少させた場合は、残ったパケット処理部の全てに、減らしたパケット処理部の担当してたフローが割り当てられ、その結果、キャッシュミスヒットが複数のパケット処理部で発生し、データ保持部へのアクセス競合による待ち時間に起因して、各パケット処理部での処理遅延が発生する。個々のパケットに対する処理量は小さいものの多数のパケットに対して低遅延で順序逆転なく処理を実行することが求められるパケット転送処理において、このような振分先の変更時に発生する遅延は大きな課題である。
特表2002−538724号公報
パケット転送処理において並列処理を採用する場合、並列数の変更に伴って振分先を変更する際に大きな遅延が発生する。このような遅延の発生は、パケットの正常な転送を阻害する恐れがある。
本発明の目的は、並列処理によってパケットを処理する際に振分先が変更可能であって、かつ、振分先の変更時に発生する処理遅延の影響を低減した並列パケット処理方法を提供することにある。
本発明の別の目的は、並列処理によってパケットを処理する際に振分先が変更可能であって、かつ、振分先の変更時に発生する処理遅延の影響を低減した並列パケット処理装置を提供することにある。
本発明の第1の並列パケット処理方法は、複数のパケット処理手段に対してフローを振り分けて複数のパケット処理手段間で並列にフローに対するパケット処理を実行する並列パケット処理方法であって、複数のパケット処理手段に対してフローを振り分ける、相互に異なる第1及び第2の振分アルゴリズムを用意し、第1の振分アルゴリズムをフローに適用している状態から、フローごとにそのフローに対して第2の振分アルゴリズムが適用される確率が時間経過とともに高くなるようにして、第2の振分アルゴリズムがフローに適用される状態に切り替える。第1の並列パケット処理方法の例示的な態様においては、第1の振分アルゴリズムによって振分先となるパケット処理手段の数と第2の振分アルゴリズムによって振分先となるパケット処理手段の数とが異なるようにしてもよい。
本発明の第2の並列パケット処理方法は、複数のパケット処理手段に対してフローを振り分けて複数のパケット処理手段間で並列にフローに対するパケット処理を実行する並列パケット処理方法であって、複数のパケット処理手段に対してフローを振り分ける、相互に異なる第1及び第2の振分アルゴリズムを用意し、第1の振分アルゴリズムを用いてフローを複数のパケット処理手段に振り分け、振り分けられたフローのうち、特定のパケット処理手段に振り分けられることとなったフローに対して第2の振分アルゴリズムを適用して再振分を実行する。第2の並列パケット処理方法の例示的な態様においては、第2の振分アルゴリズムは、特定のパケット処理手段を除いた複数のパケット処理手段にフローを振り分ける振分アルゴリズムであるようにしてもよい。
本発明の第3の並列パケット処理方法は、複数のパケット処理手段に対してフローを振り分けて複数のパケット処理手段間で並列にフローに対するパケット処理を実行する並列パケット処理方法であって、複数のパケット処理手段に対してフローを振り分ける振分アルゴリズムを変更可能とし、振分アルゴリズムを変更する前に、その変更によって各フローが複数のパケット処理手段のいずれにおいて処理されるように変化するかを判断し、判断の結果に基づいて事前に、変更後の各フローの処理に必要なデータを対応するパケット処理手段に保持させ、その後、振分アルゴリズムの変更を行う。
本発明の第1の並列パケット処理装置は、フローに対してパケット処理を行う複数のパケット処理手段と、相互に異なる第1及び第2の振分アルゴリズムにより複数のパケット処理手段にフローを振り分ける振分手段と、第1の振分アルゴリズムをフローに適用している状態から、フローごとにそのフローに対して第2の振分アルゴリズムが適用される確率が時間経過とともに高くなるようにして第2の振分アルゴリズムがフローに適用される状態に切り替えるように、振分手段を制御する制御手段と、を有する。第1の並列パケット処理装置の例示的な態様においては、第1の振分アルゴリズムによって振分先となるパケット処理手段の数と第2の振分アルゴリズムによって振分先となるパケット処理手段の数とが異なっており、制御手段は、複数のパケット処理手段での並列数の変更を契機として、振分手段に状態の切り替えを指示するようにしてもよい。
本発明の第2の並列パケット処理装置は、フローに対してパケット処理を行う複数のパケット処理手段と、第1の振分アルゴリズムにより複数のパケット処理手段にフローを振り分る振分手段と、振分手段を制御する制御手段と、を備え、振分手段は、第1の振分アルゴリズムを適用して振り分けられたフローについてそのフローの振分先に基づいて再振分の要否を判断する再振分判断部を有し、再振分が必要と判断したときに、第1の振分アルゴリズムとは異なる第2の振分アルゴリズムでそのフローを複数のパケット処理手段に再振分し、制御手段は、第1の振分アルゴリズムによって特定のパケット処理手段に割り振られることとなったフローの再振分を振分手段に指示する。第2の並列パケット処理装置の例示的な態様においては、第2の振分アルゴリズムは、特定のパケット処理手段を除いた複数のパケット処理手段にフローを振り分ける振分アルゴリズムであるようにしてもよい。
本発明の第3の並列パケット処理装置は、フローに対してパケット処理を行う複数のパケット処理手段と、変更可能な振分アルゴリズムにより複数のパケット処理手段にフローを振り分ける振分手段と、振分アルゴリズム情報と振り分け対象となるパケット処理手段の数と各フロー情報を保持し、振分アルゴリズムの変更後に各フローがいずれのパケット処理手段により処理されるように変化するかを判断し、判断の結果に基づいて必要なデータを予め保持するよう各パケット処理手段に指示した後、振分先を変更するように振分手段を制御する制御手段と、を有する。
本発明では、振分先の変更に時間の要素を取り入れ、少数のフロー単位に時間的に分散させて第1の振分アルゴリズムが適用される状態から第2の振分アルゴリズムが適用される状態へと振分先変更を行うことで、キャッシュミスヒットの発生の集中を防ぎ、振分先変更時の処理遅延の発生の低減が可能となる。また本発明では、特定の振分先に振り分けられたフローに対して再振分を行うことで、振分処理におけるフローとパケット処理コアの割当管理の負担を軽減しつつ、キャッシュミスヒットの発生の集中を防ぎ、振分先変更時の処理遅延の発生を低減することが可能となる。また本発明では、振分先の変更により各フローがいずれのパケット処理手段で処理されるようになるかを予測し、その予測結果に基づいて各フローのパケット処理に必要なデータを予め各パケット処理手段にキャッシュさせることで、キャッシュミスヒットの発生を防ぎ、振分先変更時の処理遅延の発生を低減することが可能となる。
パケット処理装置の一般的な構成の一例を示すブロック図である。 マルチコア構成のパケット処理装置における並列処理動作を説明する図である。 並列数を増加させたときのフローの再振分とキャッシュミスヒットの発生とを説明する図である。 本発明の実施の一形態のパケット処理装置におけるパケット処理を説明する図である。 振分部での判断ロジックを説明する図である。 特定のコアにおいて障害が発生した場合のフローの再振分を説明する図である。 特定のコアにおいて処理の偏りが発生した場合のフローの再振分を説明する図である。 パケット処理装置の第1の構成例を示すブロック図である。 パケット処理装置の第2の構成例を示すブロック図である。 パケット処理装置の第3の構成例を示すブロック図である。 パケット処理装置の第4の構成例を示すブロック図である。 パケット処理装置の第5の構成例を示すブロック図である。 パケット処理装置の第6の構成例を示すブロック図である。 マルチプロセッサ構成としたパケット処理装置の一例を示すブロック図である。 マルチノード構成によるパケット処理システムの一例を示すブロック図である。
次に、本発明の好ましい実施の形態について、図面を参照して説明する。
図4は本発明の実施の一形態のパケット処理装置におけるパケット処理を示す図であって、(A)は実施の一形態のパケット処理装置の要部を示すブロック図、(B)は新旧振分処理を説明する図、(C)はパケット処理における遅延の時間変化を示すグラフである。
本実施形態のパケット処理装置は、図1に示したものと同様に、ネットワークとの接続に用いられる複数のインタフェース部と、パケット処理を並列に実行するマルチコア構成のプロセッサ111と、パケット処理の実施において必要とするためにデータを保持する外部メモリとしてデータ保持部109とを備えたものである。図1に示したものとの相違点は、プロセッサ111における各プロセッサコアがどのように使用されるかという点であるので、図4の(A)では、本実施形態のパケット処理装置のうち、プロセッサ111とデータ保持部(外部メモリ)109の部分だけが示されている。
プロセッサ111には、図1に示したものと同様に、パケット入力部104、パケット出力部105、内部バス106、振分部(振分コア)107、複数のパケット処理部(処理コア)108、及びメモリバス110が設けられ、さらに、各パケット処理部108でのパケット処理と振分部107でのフローの振分とを制御するために、制御部112が設けられている。制御部112は、マルチコア構成のプロセッサ111において、制御用のプログラムをロードしたコアによって実現されるのものであり、制御コアとも呼ばれるものである。制御部112は、内部バス106を介して各パケット処理部108と振分部107とに接続しており、各パケット処理部108における処理プログラムを動的に変更し、さらに、振分部107に対して振分方法の変更を指示することで、プログラムのロード状況などに合わせて並列処理数を動的に変更することができ、また、外的要因で並列処理数が変化した場合にその変化にパケット処理装置が対応できるようにする。各パケット処理部108での処理プログラムの動的な変更は、例えば、処理プログラムのロードやリロードによって行われる。特に、本実施形態のパケット処理装置では、複数のパケット処理部108に対するフローの振分での振分先の変更を行う際に、時間の要素を取り入れ、少数のフロー単位に時間的に分散させて振分先変更を行うことで、キャッシュミスヒットの発生の集中を防ぎ、振分先変更時の処理遅延の発生の低減を可能としている。時間の要素を取り入れた振分先の変更を時間変動切替と呼ぶ。また、このパケット処理装置では、特定のパケット処理部に割り当てられていたフローのみを対象として、再度、振分の処理を実行することによって、振分処理におけるフローとパケット処理部の割当管理の負担を軽減しつつ、キャッシュミスヒットの発生の集中を防ぎ、振分先変更時の処理遅延の発生の低減を可能としている。特定のパケット処理部に割り当てられていたフローに対して再度、振分の処理を行うことを再振分と呼ぶ。また、このパケット処理装置では、振分先の変更により各フローがいずれのパケット処理手段で処理されるようになるかを予測し、予測結果に応じて各フローのパケット処理に必要なデータを予め各パケット処理手段にキャッシュさせることでキャッシュミスヒットの発生を防ぎ、振分先変更時の処理遅延の発生を低減することを可能としている。以下、本実施形態での振分先の変更について説明する。
まず、時間変動切替による振分アルゴリズムの切替について説明する。
図4(A)に示した構成において、当初は3個のパケット処理部108、具体的にはコア1〜3のみがパケット処理に用いられていたとする。その状態では、振分部107は、入力したフローを3つのコアに振り分けるアルゴリズムを使用して、コア1〜コア3にフローを振り分けている。ここで、制御部112が、並列処理に参加するパケット処理部(処理コア)の数を並列数変更指示を出力することによって、コア4の新規起動あるいは割当変更を行い、あるいは、並列数の変更を検出してコア4が新たに加わったことを認識したものとする(図4の[1])。このとき制御部112は、振分部107に対して、振分先切替の開始と、利用する振分アルゴリズムとを指示する(図4の[2])。振分アルゴリズムの指示は、具体的には、利用するハッシュ関数の指示などである。
振分部107は、制御部112からの制御によって、フローを3つのコアに振り分ける振分アルゴリズム(3分割用振分アルゴリズム)と、フローを4つのコアに振り分ける振分アルゴリズム(4分割用振分アルゴリズム)とを実行可能であるとともに、フローごとに2つの振分アルゴリズムのどちらを適用するかを決定する振分アルゴリズム(新旧振分アルゴリズム)を実行可能である。特に新旧振分アルゴリズムは、切替開始指示からの時間経過をしきい値に利用して、新しい振分に対応する振分アルゴリズム(ここでは4分割用振分アルゴリズム)に渡されるフローが徐々に大きくなるように、2つの振分アルゴリズム(3分割用振分アルゴリズムと4分割用振分アルゴリズム)に対してフローを割り当てる。具体的には、図4(B)に示すように、フローからハッシュ値を計算し、ハッシュ値に応じてそのフローを(旧)3分割用振分アルゴリズムに振り分けるか(新)4分割用振分アルゴリズムに振り分けるかを決定し、この決定のしきい値を時間の経過に応じて変化させている。3分割用振分アルゴリズムと4分割用振分アルゴリズムは、新旧振分アルゴリズムよって振り分けられたフローをパケット処理部(処理コア)に振り分ける。このように、新しい振分に対応する振分アルゴリズムが適用されるフロー数を徐々に増やすようにすることにより、コア1〜4から外部メモリへのアクセスの集中を防ぎながら、振分先の変更を行うことができる。
図4(C)は、本実施形態でのパケットの処理遅延の時間変化を示すグラフである。このグラフからも分かるように、フローに対して新しい振分を徐々に適用しているので、変更タイミングの直後に処理遅延が急増することはなく、パケット処理性能への振分先変更の影響が小さく、パケット処理に要求される時間的制約を十分に満たすことが可能となる。
図5は、振分部における判断ロジックの具体的な例を示している。切替開始指示の時刻をt0とし、現在の時刻をtとすると、切替開始からの経過時間Δtは、
Δt=t−t0
で表される。そこで、経過時間Δtの関数F(Δt)として、しきい値を表すことにする。フローから求められるハッシュ値(出力Index値)がハッシュ空間においてIndex 0とIndex Xとの間をとるものとすると、出力Indexと、時間変化するしきい値F(Δt)とによって、フローを新旧いずれの振分アルゴリズムに振り分けるかを判断する。しきい値を表す関数Fとしては、F(0)では値がIndex 0であり、所定の時間をTとしてF(T)では値がIndex Xであり、その間は経過時間Δtに応じて例えば直線的に変化するものを用いることができる。
時間変動切替では、柔軟な処理割当や省電力化のためにパケット処理部の並列数を動的に増減させることを、パケット処理性能への影響を少なく実施することができる。
また、時間変動切替は、パケット処理部への振分フロー数に偏りが発生した場合に、振分処理におけるフローとパケット処理部の割当変更の負担を軽減しつつ、より偏りのない振分方法へと変更するために用いることができる。パケット処理部間で処理量の偏りが生じた時、その偏りは制御部112によって検出される。その検出に基づいて制御部112は、より偏りが生じないように、フロー振分におけるアルゴリズムの変更(例えば、ハッシュ値を求めるために用いられるハッシュ関数の変更、ハッシュ値からフローをまとめる際に用いられるしきい値の変更、など)を振分部107に指示する。振分部107は、この指示に応じて、時間変化するしきい値を用いて、新振分アルゴリズムに振り分けられるフローが徐々に増加するように、フローを新旧の振分アルゴリズムの間で振り分ける。
図4に示した構成では、並列数変更指示による振分の切替を行う際、制御部112は、処理コアの並列数を変更するためのパケット処理用のプログラムをプロセッサ111にリロードするときに、振分部107に対して振分先変更の契機を指示している。処理コアの数を減少させる場合には、振分先の変更が完了してからプログラムのリロードを行い、処理コアの数を増やす橋には、プログラムのリロードの完了後に振分先変更を開始させる。
フローの偏りが発生したことに基づいて振分の切替を行う場合には、振分部107が各処理コアに振り分けたフローの数を制御部112にフィードバックし、制御部112は、そのフィードバック情報に例えばしきい値を適用して偏りを検出し、偏りを検出したこによって振分先変更を開始させる。あるいは、各コアの負荷状況(例えばCPU使用率)を制御部112が収集し、負荷状況に対して例えばしきい値を適用して偏りを検出するようにしてもよい。
次に、再振分による振分アルゴリズムの切替について説明する。
図6は、特定のパケット処理装置(処理コア)において障害が発生した場合のフローの再振分を説明する図である。図6(A)は、図4に示したパケット処理装置において、4個のパケット処理部(コア1〜4)がパケット処理を行っている状態を示している。このとき、図6(B)に示すように、フローは、例えば、コア1、コア2及びコア4に振り分けられている。ここで、コア4において障害が発生したとする。すると、制御部112は、障害発生を検出し(図6の[1])、障害発生の検出に応じて、振分部107に対し、再振分の開始と、利用する振分アルゴリズムとを指示する(図6の[2])。具体的には、既存の振分アルゴリズムで振り分けたフローに対して再振分を要するかどうかの再振分判断を行い、障害を発生したパケット処理部(ここではコア4)に振り分けられたフローについて、障害を発生していないパケット処理部(ここではコア1〜3)に振り分けるように、制御部112は振分部107に指示する。その結果、図6の(C)に示すように、振分部107は、コア4に行くとされていたフローについて、再振分判断の結果、再振分を要するものとして、コア4以外の別のコアに振り分けるようにする。障害発生前に図6の(B)に示すようにフローが振り分けられていたとして、再振分の結果、図6の(D)に示すように、コア4あてのフローをコア3に振り分ける。なお、障害の発生の検出は、制御部112が処理コアの正常性を常時監視することによって、容易に行うことができる。
このように、特定のパケット処理部に障害が発生した場合に、その障害が発生したパケット処理部を除いてフローを振り返るような振分に切り替えることにより、振分処理におけるフローとパケット処理部の割当変更の負担を軽減しつつ、パケット処理性能への影響を低く抑えたまま、すべてのフローに対するパケット処理を継続することができるようになる。再振分での振分アルゴリズムとしては、1つを除くパケット処理部に振分が行われるような振分関数が用いられる。振分関数は、例えば、並列処理に参加するすべてのパケット処理部からある1つのパケット処理部を除き、残ったパケット処理部をハッシュ関数から導出されるアドレス番地に保存することによって構成される。どのパケット処理部が除かれたかだけが異なるこのような振分関数をパケット処理部の数だけ用意し、障害が発生したパケット処理部に応じてそれらの振分関数の中から該当するものを選択して再振分に使用することによって、障害が発生したパケット処理部に振り分けられたフローを正常なパケット処理部に再振分することができる。
また、再振分による振分アルゴリズムの切替は、複数のパケット処理部のうちの特定のパケット処理部にフローが集中するような偏りが発生した場合に、その偏りを解消するためにも用いることができる。図7は、偏りの解消のための振分先変更の一例を示している。図7の(A)は、コア1〜コア4のうち、コア4に大量のフローが割り当てられている状態を示している。このような偏りを制御部112が検出すると、障害発生の場合と同様に制御部112は、振分部107に対し、再振分の開始と、利用する振分アルゴリズムとを指示する。その結果、振分部107は、図7の(B)に示すように、コア4に行くとされていたフローについて、再振分判断の結果、再振分を要するものとして、コア4での偏りが解消するように、コア1〜コア4の全体にフローが分散するようにフローの再振分を実行する。再振分のアルゴリズムとしては、例えば、異なるハッシュ関数によりフローからハッシュ値を求めて再振分するものが挙げられる。コア4で障害が起きているわけではないので、再振分により一部のフローは依然としてコア4に振り分けられ続けることになる。再振分による振分アルゴリズム切替を行うことにより、パケット処理部への振分フロー数に偏りが発生した場合において、振分処理におけるフローとパケット処理部の割当変更の負担を軽減しつつ、パケット処理性能への影響を低く抑えたまま、より偏りのない振分方法へと変更することができる。
フローの偏りの発生の検出は、例えば、振分部107が各処理コアに振り分けたフローの数を制御部112にフィードバックし、制御部112が、そのフィードバック情報に例えばしきい値を適用することによって実現できる。あるいは、各コアの負荷状況(例えばCPU使用率)を制御部112が収集し、負荷状況に対して例えばしきい値を適用するようにしてもよい。
次に、各フローの振分先の変更後のパケット処理部108を予測し、その予測に基づいて予め各フローのパケット処理に必要なデータを各パケット処理部108に保持させる切替について説明する。これは振分アルゴリズムには依らないが、ここでは図4(A)を例に説明する。
制御部112が、データ保持部109の各フローのフロー情報と、振分アルゴリズム、振り分け対象となるパケット処理部108の数とから、振分アルゴリズムまたは振分先となるパケット処理部108の数の変更により各フローがどのパケット処理部108に振り分けられるように変更されるかを予測し、振分部107に対して振分アルゴリズムの変更の実施を指示する前に、予め、各パケット処理部108のキャッシュ内に、変更後に処理することとなる各フローのパケット処理に必要なデータを保持させる。例えば、パケットのヘッダの5-tupleからハッシュを計算しそのハッシュ値から振分先のパケット処理部を決めている場合には、データ保持部109内の各フローの5-tupleとハッシュ計算に用いるハッシュ関数とハッシュ値からパケット処理部108を決定する割り当て方法とが分かれば、各フローがどのパケット処理部108で処理されることになるかが判断可能である。
さらに、時間変動振分や再振分によって同時に振分先が変更されることとなるフロー数を削減することで、予めパケット処理部108が保持すべきデータ量を削減することができ、パケット処理部108のキャッシュの必要サイズを削減することができる。
なお、QoS処理のシェイピングのように、パケットごとにテーブル情報が更新される処理に関するデータについては、各パケット処理部108のキャッシュとデータ保持部109との間での情報同期を行い、振分先変更時の情報不整合を防ぐようにする。
次に、本発明に基づくパケット処理装置の具体的な構成について説明する。図8〜図13は、それぞれ、パケット処理装置の構成例を示している。これらのパケット処理装置は、図4に示したものと同様のものであり、振分部107、複数のパケット処理部108及び制御部112の具体的な構成がそれぞれ明らかになっている点で図4に示したものと異なっているから、図8〜図12では、パケット処理装置のうち、パケット入力部103、パケット出力部104、振分部107、複数のパケット処理部108及び制御部112の部分のみが示されている。図13では、パケット入力部103、パケット出力部104、振分部107、複数のパケット処理部108及び制御部112に加え、データ保持部109も示されている。なお、複数のパケット処理部108によって並列処理部113が構成されている。また、パケット処理部(処理コア)108ごとにそのコアを特定するコアID(識別番号)が付与されているものとする。
図8は、時間変動切替を実行するパケット処理装置の構成の一例を示している。
振分部107は、それぞれ異なった振分アルゴリズムでフローを振り分ける第1振分処理部122及び第2振分処理部123と、パケット入力部104に入力したパケットをフロー単位で第1振分処理部122及び第2振分処理部123に振り分けて受け渡す振分切替部121と、を備えている。振分切替部121は、振分数の変更などを行っていない定常時には、第1振分処理部122及び第2振分処理部123のいずれか一方にのみ、フローを受け渡す。特に振分切替部121は、図4及び図5に示した振分部107において新旧振分を行うものに相当し、制御部112からの指示により、第1振分処理部122及び第2振分処理部123のうちの一方にフローを受け渡す状態から、徐々に、それらのうちの他方にフローを受け渡す状態に遷移する。
ここに示す例では、パケット処理部へのフローの振分のために、ハッシュ値から直接導出されるアドレス番地にコアIDを格納するものとする。各振分処理部122,123は、フローに対してハッシュ関数を適用してハッシュ値を求め、そのハッシュ値で表されるアドレス番地に格納されたコアIDに対応するパケット処理部108にそのフローを振り分けるようになっている。第1振分処理部122は、例えば、3つのアドレス番地のいずれかがフローに応じて導出されるようなハッシュ関数を使用し、第2振分処理部123は、例えば、4つのアドレス番地のいずれかがフローに応じて導出されるようなハッシュ関数を使用する。この場合、第1振分処理部122は3分割用振分アルゴリズムによるフロー振分を行い、第2振分処理部123は4分割用振分アルゴリズムによるフロー振分を行うことになる。振分部107においてこれらのハッシュ関数や振分先数、利用するアドレス番地、コアIDは、制御部112から指示・設定される。
制御部112は、情報収集部141と振分指示部142とから構成されている。情報収集部141は、各パケット処理部108の情報を収集・管理し、振分の切替契機を抽出し(図8の[1])、切替契機とパケット処理部108との状況とを振分切替契機通知として振分指示部142に通知する(図8の[2])。振分の切替契機としては、例えば、並列処理数の変動、各パケット処理部での処理フロー数の偏りなどが挙げられ、また、制御部112から並列処理部113に対して並列数変更指示を出したことも含まれる。振分指示部142は、情報収集部141の振分切替契機通知から振分方法(例えば、振分先、ハッシュ関数など)を判断し、第1振分処理部122及び第2振分処理部123のうちの動作していない方に新しい振分方法(振分アルゴリズム)を指示し(図8の[3])、振分切替部121に対して振分切替開始を指示する(図8の[4])。その際に、振分指示部142は、新しい振分アルゴリズムに対して一定時間ごとに少数のフローずつ移っていくように、タイマを参照し、判断しきい値の変更を逐次指示する。
このように振分指示部142から指示を受けると、振分切替部121は、図5に示したように、パケットデータからハッシュ関数により求められるハッシュ値と、時間変動する判断しきい値から、フローのパケット処理部108への振分を第1振分処理部122で実施するか第2振分処理部123で実施するかをフローごとに判断し、該当する振分処理部にそのフローを受け渡す。上述したように、振分切替部121は、制御部112からの振分先切替の開始指示から振分先の切り替えを開始する。判断しきい値は、一定時間ごとに少数フローずつ振分先のコアが変更されるように変動し、これによって、フローの受け渡し先は、動作中だった振分処理部からそれまで動作していなかった振分処理部へと徐々に変化し、最終的には、それまで動作していなかった方の振分処理部に全フローが受け渡されることになる。
第1振分処理部122が3分割用振分アルゴリズムに対応し、第2振分処理部123が4分割用振分アルゴリズムに対応する場合、パケット処理に関する並列数が3であれば、第1振分処理部122のみにフローが受け渡されている。ここで例えば、パケット処理に関する並列数が3から4に増えると、制御部112は新しいパケット処理部を用意し、振分部107に振分の切替開始を指示する。それにより、振分切替部121による切替が開始され、まず、少数のフローのみが第2振分処理部123に渡されるようになる。制御部112は、一定時間経過後に、第2振分処理部123へ渡されるフローが増えるようにしきい値を変更させ、このしきい値の変更を繰り返す。その結果、最終的には全フローが第2振分処理部123に渡されるようになり、3並列から4並列への移行が完了する。
図9は、時間変動切替を実行するパケット処理装置の構成の別の例を示している。図9に示すものは、図8に示すものと同様のものであるが、制御部112の振分指示部142は振分部107に対して、判断しきい値の逐次指示を行わず、その代わり、振分部107内に振分変更部124が設けられている点で図8のものと異なっている。振分変更部124は、振分指示部142から切替開始指示を受けると(図9の[4])、その内蔵するタイマを参照し、一定時間経過ごとに、振分切替部121に対して判断しきい値の変更を指示する(図9の[5])。この判断しきい値の変更は、フローの受け渡し先が、動作中だった振分処理部からそれまで動作していなかった振分処理部へと徐々に変化し、最終的にはそれまで動作していなかった方の振分処理部に全フローが受け渡されるように行われる。図8に示したものでは判断しきい値が制御部112からの逐一の指示により変更されるのに対し、図9に示したものでは、振分部107において、タイマ参照により自律的に変更されることになる。
図10は、時間変動切替によるパケット処理装置であるが、パケット処理部の数に比べて十分に大きい数の仮想ノードを想定し、各仮想ノードに対してコアIDを割り当てておき、フローの振分に対しては、フローのハッシュ値から仮想ノードを導出し、導出された仮想ノードがどのコアIDに対応しているかに応じて、そのフローをパケット処理部に振り分けるようにしたものである。この構成では、振分部107は、仮想ノード振分部125と実ノード振分部126を備えている。仮想ノード振分部125は、パケットデータにハッシュ関数を適用してハッシュ値を求め、そのハッシュ値から、仮想ノードに対応づけられたアドレス番地を導出する。仮想ノードの数は、振分対象となるパケット処理部108の数よりも十分に多いが、それでも、複数のフローが同一の仮想ノードに振り分けられる。実ノード振分部126は、パケットデータが仮想ノードに振り分けられると、その仮想ノードに対応づけられたアドレス番地に保存されているコアIDを検索し、そのパケットデータのフローを検索されたコアIDのパケット処理部108(すなわち実ノード)へ受け渡す。上述した仮想ノードとコアIDとの対応関係は、実ノード振分部126内に記録されている。
制御部112としては、図8に示したものと同様のものが用いられており、割当変更部142は、実ノード振分部126に対し、仮想ノードとコアIDとの割り当ての変更を指示する(図10の[3])。このとき割当変更部142は、タイマを参照し、一定時間ごとに1つの仮想ノードずつ振分先の処理コアを変更するように、実ノード振分部126に指示する。これにより、振分部107は、振分先の切り替えを開始し、切替開始指示からの時間経過に応じて新しい振分に基づいて振り分けられるフローが徐々に多くなるように、フローの各パケット処理部108への振分が実行されることになる。
図10に示したものでは、実ノード振分部126での割当変更は、制御部112からの逐次の指示によって行われていたが、振分部107自体が自律的に割当変更を行うようにしてもよい。図11は、振分部107自体が自律的に割当変更を行うようにした構成を示している。図11に示すものでは、制御部112には割当変更部は設けられず、その代わり、振分部107に割当変更部127が設けられている。制御部112から振分部107に対して振分切替契機通知が直接送られており(図11の[2])、振分部107の割当変更部127は、振分切替契機通知を受けて、実ノード振分部126に割当変更を指示する(図11の[3])。
図12は、特定のパケット処理部にあてたフローを再振分するように構成したパケット処理装置の構成の一例を示している。
図12に示す装置では、制御部112には、図8及び図9に示すものと同様に、情報収集部141と振分指示部142が設けられている。振分部107には、第1振分処理部128と第2振分処理部129と再振分判断部130が設けられている。
制御部112において情報収集部141は、各パケット処理部108の情報を収集・管理し、再振分を実施する契機を抽出するものである。情報収集部141は、各パケット処理部108から情報収集を行い、障害発生やフロー数の偏りなどの変化を検出し(図12の[1])、フローの再振分を行うべきかどうかを判断して、各パケット処理部108の状況に関する情報とともに再振分契機通知を振分指示部142に通知する(図12の[2])。振分指示部142は、再振分契機通知を受け取ると振分指示部142は、再振分契機通知から振分方法(例えば、振分先、ハッシュ関数など)を判断し、第1振分処理部128及び第2振分処理部129に振分方法(振分アルゴリズム)を指示し(図12の[3])、再振分判断部130に対して、再振分の対象となるコアIDと再振分の開始指示などを送る(図12の[4])。
第1振分処理部128は、振分指示部142からの指示に基づく振分アルゴリズム(振分先、ハッシュ関数など)でパケットデータをフロー単位に各パケット処理機能へ振り分け、そのフローのコアIDを対応付けるものであるが、データそのものは再振分判断部130に渡す。第2振分処理部129は、振分指示部142からの指示に基いて、第1振分処理部128におけるものとな異なる振分アルゴリズム(振分先、ハッシュ関数など)で、パケットデータをフロー単位に各パケット処理部108へ振り分ける機能を有する。再振分判断部130は、振分指示部142からの指示により再振分を行う状態となっている場合には、第1振分処理部128から受け取ったフローについて、そのフローに関連づけられているコアIDから、そのフローが再振分の対象となっているパケット処理部108に振り分けられているか否かを判断する。再振分の対象となっているパケット処理部に振り分けられたフローでなければ、再振分判断部130は、そのフローを、フローに関連付けられたコアIDで示すパケット処理部108に受け渡す。一方、第1振分処理部128から受け取ったフローが再振分の対象となるものである場合には、再振分判断部130は、そのフローを第2振分処理部129に受け渡す。
図12に示したパケット処理装置に関し、具体的な動作を説明する。
まず、いずれかのパケット処理部(処理コア)108において障害が発生した場合を説明する。第2振分処理部129には、あらかじめ、並列処理部113内の複数のパケット処理部108のうち、1つを除くパケット処理部にフローの振分が行われるような振分関数が組み込まれている。いずれかのパケット処理部108での障害発生を制御部112が検出すると、再振分の対象とする処理コアを特定しその処理コアを除くように再振分を開始する指示が振分指示部142から再振分判断部130と第2振分処理部129とに送られる。第1振分処理部128での振分により障害発生コアに振り分けられたフローは、再振分判断部130と第2振分処理部129とによって、障害が発生していない処理コアに再振分されることになる。このような再振分は、例えば、障害が発生した処理コアのコアIDが保存されていたアドレス番地に、再振分関数を呼び出す命令へのポインタを格納することにより実現できる。
次に、いずれかのパケット処理部108に対してフローが偏った場合の再振分を説明する。第2振分処理部は、第1振分処理部とは異なるハッシュ関数及びパケットデータの参照範囲などによる振分関数を保持している。再振分の指示が振分指示部142から再振分判断部130と第2振分処理部129とに送られると、偏りが発生した処理コアに割り振られたフローを再振分判断部130が検出し、検出したフローを第2振分処理部129が再度、振り分けることによって、フローの偏りが是正された振分が行われるようになる。
図13は、図8に示したパケット処理装置と同様のものであるが、振分先変更を行う場合に、その変更後に各フローがどのパケット処理部108に振り分けられるかを予測し、予測結果に基づき、変更後の各フローのパケット処理に必要なデータを各パケット処理部108に予め保持させる切替を行うように構成したパケット処理装置の構成の一例を示している。
制御部112は、まず、データ保持部109に保持されているフロー情報を参照し、制御部112において管理している振分アルゴリズムと、振分先となるパケット処理部108の数とから、振分アルゴリズムの変更または振分先となるパケット処理部108の数の変更により、各フローがどのパケット処理部108に振り分けられるようになるかを予測する。そして、制御部112は、振分部112に対して振分アルゴリズムの変更の実施を指示する前に、各パケット処理部108に対し、変更後に処理することになる各フローのパケット処理に必要なデータ(特定データ)を予め保持するよう指示する。その結果、各パケット処理部108は、データ保持部109から事前の情報取得を行う。
また、制御部112は、時間変動振分や再振分を実行する際に、そのような振分切替によって同時に振分先が変更されることとなるフローの数が多くならないような振分指示を行い、それに合わせて各パケット処理部108に特定データの取得指示を行うことで、パケット処理部108が予め保持しなければならないデータ量を削減することができ、パケット処理部108のキャッシュの必要サイズを削減することができる。
なお、QoS処理のシェイピングのように、パケットごとにテーブル情報が更新される処理に関するデータについては、各パケット処理部108のキャッシュとデータ保持部109との間での情報同期を行い、振分先変更時の情報不整合を防ぐようにする。
以上、本発明の実施形態について、パケット処理が単一のプロセッサ内の複数の処理コア(パケット処理部)によて行われる場合を例に挙げて説明した。しかしながら、本発明の実施の形態は上記のものに限られるのものではない。例えば、図14に示すように、パケット処理装置内に複数のプロセッサを設けてこれらの複数のプロセッサにおいてパケット処理を並列に実行するようにした場合にも、本発明の並列パケット処理方法を適用することができる。図14に示したパケット処理装置151は、図4に示したパケット処理装置における処理コア(パケット処理部108)をそれぞれパケット処理用プロセッサ153に置き換え、また、振分部107及び制御部112についても、それぞれ独立のプロセッサ(振分用プロセッサ152及び制御用プロセッサ155)に置き換えたものである。この構成は、マルチプロセッサ構成のものであり、内部バス106及びメモリバス110は、いわゆるプロセッサ内バスではなく、プロセッサ間バスとして、パケット処理装置151内に設けられることになる。また、データ保持部154は、複数のプロセッサ153に対して共通の共有メモリとして設けられている。さらに、本発明の並列パケット処理方法は、ネットワークに設けられた複数のノードに分散させてパケット処理を行う場合にも適用できる。図15は、ネットワークを含むシステムとして構成されたパケット処理システムを示している。図15に示すシステムでは、ネットワーク161に対して、振分ノード162と、複数のパケット処理ノード163と、データサーバ164と、制御ノード165とが設けられている。パケット処理の対象となるパケットはネットワーク161に対して、直接、入出力している。ここで、振分ノード162は振分部107と同様の処理を行い、パケット処理ノード163はパケット処理部108と同様の処理を行い、データサーバ164はデータ保持部109と同等の機能を有し、制御ノード165は制御部112と同様の機能を有している。図15に示すようなシステムも、本発明の並列パケット処理装置の範疇に含まれるものである。
101,151 パケット処理装置
102,103 インタフェース部
104 パケット入力部
105 パケット出力部
106 内部バス
107 振分部
108 パケット処理部
109,154 データ保持部
110 メモリバス
111 プロセッサ
112 制御部
113 並列処理部
121 振分切替部
122,128 第1振分処理部
123,129 第2振分処理部
124 振分変更部
125 仮想ノード振分部
126 実ノード振分部
127,143 割当変更部
130 再振分判断部
141 情報収集部
142 振分指示部
152 振分用プロセッサ
153 パケット処理用プロセッサ
155 制御用プロセッサ
161 ネットワーク
162 振分ノード
163 パケット処理ノード
164 データサーバ
165 制御ノード

Claims (8)

  1. 複数のパケット処理手段に対してフローを振り分けて前記複数のパケット処理手段間で並列に前記フローに対するパケット処理を実行する並列パケット処理方法であって、
    前記複数のパケット処理手段に対して前記フローを振り分ける、相互に異なる第1及び第2の振分アルゴリズムを用意し、
    前記第1の振分アルゴリズムを前記フローに適用している状態から、フローごとに当該フローからハッシュ値を計算し、時間経過に対して変化するしきい値と前記ハッシュ値とを比較した結果に基づいて当該フローに前記第1の振分アルゴリズムと前記第2の振分アルゴリズムのいずれかを適用するかを決定することにより、前記第2の振分アルゴリズムが前記フローに適用される状態に切り替える、並列パケット処理方法。
  2. 前記第1の振分アルゴリズムによって振分先となる前記パケット処理手段の数と前記第2の振分アルゴリズムによって振分先となる前記パケット処理手段の数とが異なっている、請求項1に記載の並列パケット処理方法。
  3. 前記振分アルゴリズムにおける変更の前に、当該変更によって各フローが前記複数のパケット処理手段のいずれにおいて処理されるように変化するかを判断し、
    前記判断の結果に基づいて事前に、変更後の前記各フローの処理に必要なデータを対応するパケット処理手段に保持させ、その後、前記変更を行う、請求項1または2に記載の並列パケット処理方法。
  4. 複数のパケット処理手段に対してフローを振り分けて前記複数のパケット処理手段間で並列に前記フローに対するパケット処理を実行する並列パケット処理方法であって、
    前記複数のパケット処理手段に対して前記フローを振り分ける振分アルゴリズムを変更可能とし、
    前記振分アルゴリズムを変更する前に、当該変更によって各フローが前記複数のパケット処理手段のいずれにおいて処理されるように変化するかを判断し、
    前記判断の結果に基づいて事前に、変更後の前記各フローの処理に必要なデータを対応するパケット処理手段に保持させ、その後、前記変更を行う、並列パケット処理方法。
  5. フローに対してパケット処理を行う複数のパケット処理手段と、
    相互に異なる第1及び第2の振分アルゴリズムにより前記複数のパケット処理手段にフローを振り分ける振分手段と、
    前記第1の振分アルゴリズムを前記フローに適用している状態から、フローごとに当該フローからハッシュ値を計算し、時間経過に対して変化するしきい値と前記ハッシュ値とを比較した結果に基づいて当該フローに前記第1の振分アルゴリズムと前記第2の振分アルゴリズムのいずれかを適用するかを決定することにより前記第2の振分アルゴリズムが前記フローに適用される状態に切り替えるように、前記振分手段を制御する制御手段と、
    を有する、並列パケット処理装置。
  6. 前記第1の振分アルゴリズムによって振分先となる前記パケット処理手段の数と前記第2の振分アルゴリズムによって振分先となる前記パケット処理手段の数とが異なっており、前記制御手段は、前記複数のパケット処理手段での並列数の変更を契機として、前記振分手段に状態の切り替えを指示する、請求項に記載の並列パケット処理装置。
  7. 前記制御手段は、振分アルゴリズム情報と振り分け対象となる前記パケット処理手段の数と各フロー情報を保持し、前記振分アルゴリズムの変更後に前記各フローがいずれのパケット処理手段により処理されるように変化するかを判断し、前記判断の結果に基づいて必要なデータを予め保持するよう前記各パケット処理手段に指示した後、振分先を変更するように前記振分手段を制御する、請求項5または6に記載の並列パケット処理装置。
  8. フローに対してパケット処理を行う複数のパケット処理手段と、
    変更可能な振分アルゴリズムにより前記複数のパケット処理手段に前記フローを振り分ける振分手段と、
    振分アルゴリズム情報と振り分け対象となる前記パケット処理手段の数と各フロー情報を保持し、前記振分アルゴリズムの変更後に前記各フローがいずれのパケット処理手段により処理されるように変化するかを判断し、前記判断の結果に基づいて必要なデータを予め保持するよう前記各パケット処理手段に指示した後、振分先を変更するように前記振分手段を制御する制御手段と、
    を有する、並列パケット処理装置。
JP2012041507A 2012-02-28 2012-02-28 振分先を切り替える並列パケット処理方法および装置 Expired - Fee Related JP5672504B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012041507A JP5672504B2 (ja) 2012-02-28 2012-02-28 振分先を切り替える並列パケット処理方法および装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012041507A JP5672504B2 (ja) 2012-02-28 2012-02-28 振分先を切り替える並列パケット処理方法および装置

Publications (2)

Publication Number Publication Date
JP2013179429A JP2013179429A (ja) 2013-09-09
JP5672504B2 true JP5672504B2 (ja) 2015-02-18

Family

ID=49270706

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012041507A Expired - Fee Related JP5672504B2 (ja) 2012-02-28 2012-02-28 振分先を切り替える並列パケット処理方法および装置

Country Status (1)

Country Link
JP (1) JP5672504B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6606875B2 (ja) * 2014-06-19 2019-11-20 富士通株式会社 情報処理装置及び情報処理方法
JP2016010017A (ja) * 2014-06-25 2016-01-18 株式会社日立製作所 通信装置、及び、通信方法
US20170264500A1 (en) * 2014-09-09 2017-09-14 Nec Corporation Number-of-scales estimation apparatus, number-of-scales management system, number-of-scales estimation method, number-of-scales management method, and storage medium
JP5917678B1 (ja) * 2014-12-26 2016-05-18 株式会社Pfu 情報処理装置、方法およびプログラム
WO2017072782A1 (en) * 2015-10-27 2017-05-04 Centre For Development Of Telematics A real- time distributed engine framework of ethernet virtual connections
US11294688B2 (en) * 2017-06-16 2022-04-05 Drivenets Ltd. Parallel information processing on multi-core computing platforms

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3372455B2 (ja) * 1997-07-03 2003-02-04 富士通株式会社 パケット中継制御方法,パケット中継装置およびプログラム記憶媒体
JP2003318953A (ja) * 2002-04-19 2003-11-07 Fujitsu Ltd パケット処理装置
JPWO2003103233A1 (ja) * 2002-05-31 2005-10-06 富士通株式会社 パケット中継装置、ネットワーク接続デバイス、パケット中継方法、記録媒体、プログラム
JP4196732B2 (ja) * 2003-05-26 2008-12-17 日本電気株式会社 データ転送装置及びプログラム
JP2008257642A (ja) * 2007-04-09 2008-10-23 Mitsubishi Electric Corp パケット処理装置
JP2010226543A (ja) * 2009-03-25 2010-10-07 Nec Corp パケット処理装置、パケット処理システム及びそれらに用いるパケット処理効率化方法並びにそのプログラム
JP5477187B2 (ja) * 2010-06-18 2014-04-23 株式会社リコー 通信装置
JP5682233B2 (ja) * 2010-11-01 2015-03-11 富士通株式会社 解析処理装置、解析処理プログラム、及び解析処理方法

Also Published As

Publication number Publication date
JP2013179429A (ja) 2013-09-09

Similar Documents

Publication Publication Date Title
JP5672504B2 (ja) 振分先を切り替える並列パケット処理方法および装置
CN100392602C (zh) 用于在网络处理器中动态排序的***和方法
JP6169251B2 (ja) 分散型ロードバランサにおける非対称パケットフロー
US8898505B2 (en) Dynamically configureable placement engine
US9237093B2 (en) Bandwidth on-demand adaptive routing
KR101455899B1 (ko) 다수의 가상 서버들 사이에 공유 자원들의 할당을 통한 소프트웨어 제어기능을 갖는 마이크로 프로세서
US9218203B2 (en) Packet scheduling in a multiprocessor system using inter-core switchover policy
CN111190745B (zh) 一种数据处理方法、装置及计算机可读存储介质
US10263809B2 (en) Selecting an optimal network device for reporting flow table misses upon expiry of a flow in a software defined network
US11228488B2 (en) Software implementation of network switch/router
CN106909310B (zh) 用于存储***的路径选择的方法和装置
JP2011517903A (ja) パケット交換オンチップ相互接続ネットワークの高速仮想チャネル
Yildirim et al. End-to-end data-flow parallelism for throughput optimization in high-speed networks
JP5609730B2 (ja) 情報処理プログラム及び方法、転送処理装置
US9954771B1 (en) Packet distribution with prefetch in a parallel processing network device
JP2018185624A (ja) スイッチプログラム、スイッチング方法及び情報処理装置
Dai et al. Two-choice randomized dynamic I/O scheduler for object storage systems
Aleyadeh et al. Optimal container migration/re-instantiation in hybrid computing environments
CN106059940A (zh) 一种流量控制方法及装置
JP5704567B2 (ja) ノード装置、システム、及び、パケット処理方法
US10585598B2 (en) Modifying accessibility based on memory access patterns
WO2014101502A1 (zh) 基于内存芯片互连的内存访问处理方法、内存芯片及***
JP2007328413A (ja) 負荷分散方法
Ruia et al. Flowcache: A cache-based approach for improving SDN scalability
US11182325B1 (en) Memory centric computing storage controller system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140128

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140926

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141007

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20141027

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20141031

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141120

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

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20141211

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141210

R150 Certificate of patent or registration of utility model

Ref document number: 5672504

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees