(57)【要約】【課題】パケットのフロー内での順序逆転が起きないことを保証し、かつ、負荷情報に応じてパケット振り分け先を移すことを可能とするネットワーク中継装置を提供する。【解決手段】入力されるパケットを振り分けることによりパケット処理の負荷分散を図るパケット振り分け処理部と、各パケット処理部の負荷状況を定期的に収集する統計情報収集部と、パケットを振り分ける際に振り分け先を特定するための情報を保持する、振り分け情報とを備える。各パケット処理部の負荷情報を集計し、最も負荷の少ないパケット処理部に振り分ける。パケット振り分け先を変更するタイミングは、処理待ちキューにそのフローのパケットがないときとする。【選択図】図３
2010161546.tif 000002
【特許請求の範囲】
【請求項１】
受信キューと、この受信キューからパケットを取り出すパケット振り分け処理部と、複数の処理待ちキューと、これらの処理待ちキューとに対応する複数のパケット処理部と、送信キューとからなるネットワーク中継装置において、
前記複数のパケット処理部の負荷状態を定期的に収集する統計情報収集部と、
この統計情報収集部が収集した負荷状況と、ハッシュ値とパケット処理部とカウンタとを対応付ける振り分け情報テーブルとを保持する振り分け情報保持部とをさらに備え、
前記パケット振り分け部は、前記処理待ちキューにパケットを送信した後、前記振り分け情報テーブルの該当するハッシュ値のカウンタをインクリメントし、
前記パケット処理部は、前記送信キューにパケットを送信した後、前記振り分け情報テーブルの該当するハッシュ値のカウンタをデクリメントし、
前記前記パケット振り分け部は、前記受信キューからパケットを取得したとき、前記振り分け情報テーブルの該当するハッシュ値のカウンタを参照し、カウンタ値が予め定めた値のとき、前記振り分け情報テーブルの該当するハッシュ値のパケット処理部を更新することを特徴とするネットワーク中継装置。
【請求項２】
入力されたパケットをハッシュ値に基づいて振り分けることによりパケット処理の負荷分散を図るパケット振り分け部と、パケット振り分け先を特定するために用いる各パケット処理部の負荷状態を定期的に収集する統計情報収集部と、パケットを振り分ける際に振り分け先を特定するための情報を管理する振り分け情報保持部と、振り分けられたパケットを処理する複数のパケット処理部を備えるネットワーク中継装置において、
前記情報保持部は、ハッシュ値とパケット処理部とカウンタとを対応付ける振り分け情報テーブルを備え、
前記パケット振り分け部は、パケット処理が終了した後、前記振り分け情報テーブルの該当するハッシュ値のカウンタをインクリメントし、
前記パケット処理部は、パケット処理が終了した後、前記振り分け情報テーブルの該当するハッシュ値のカウンタをデクリメントすることを特徴とするネットワーク中継装置。
【請求項３】
請求項２に記載のネットワーク中継装置であって、
前記前記パケット振り分け部は、パケットを取得したとき、前記振り分け情報テーブルの該当するハッシュ値のカウンタを参照し、カウンタ値が予め定めた値のとき、前記振り分け情報テーブルの該当するハッシュ値のパケット処理部を更新することを特徴とするネットワーク中継装置。
【請求項４】
受信キューからパケットを取り出すステップと、
このパケットのハッシュ値を計算するステップと、
このハッシュ値に基づいて、振り分け情報テーブルを参照するステップと、
この振り分け情報テーブルのカウンタ値が予め定めた値か確認するステップと、
前記パケットを処理待ちキューに振り分けるステップと、
前記カウンタ値をインクリメントするステップと、
前記処理待ちキューから前記パケットを取り出すステップと、
前記パケットを出力するステップと、
前記カウンタ値をインクリメントするステップと、
からなるパケット振り分け方法。
【請求項５】
請求項４に記載のパケット振り分け方法であって、
前記確認するステップで、前記カウンタ値が前記予め定めた値のとき、前記振り分け情報テーブルを更新するステップをさらに含むパケット振り分け方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク中継装置およびパケット振り分け方法に係り、特に、入力されたパケットを複数のパケット処理部に振り分けることで並列に処理し、高速にパケットを転送するネットワーク中継装置およびパケット振り分け方法に関する。
【背景技術】
【０００２】
近時、映像配信、Ｐ２Ｐ（Peer to Peer）を用いたデータ共有等、インターネットを用いた通信サービスの高度化により、トラフィック量の増加が急激に進行している。また、通信速度の高速化は今まで以上に要求されており、ネットワーク内におけるルータや、ゲートウェイ等のネットワーク中継装置の処理負荷が一層大きくなってきている。このため、ネットワーク中継装置の処理能力向上が急務となっている。
【０００３】
ネットワーク中継装置にてパケット処理能力を向上する手法の一つとして、並列処理方法がある。並列処理技術は、複数のパケット処理部と、これらの前段に配置されるパケット振り分け部とを設け、複数のパケット処理部にパケットを振り分けて並列処理させることにより、装置全体でのパケット処理能力を向上させる手法である。
【０００４】
パケットの振り分けを実現する第一の方法として、ラウンドロビン法がある。ラウンドロビン法とは、パケットを到着した順番で振り分ける方法である。この方式では、パケット長またはパケット処理内容によって処理速度が異なる場合があり、処理負荷を均等に分散できないという問題がある。
【０００５】
そこで、第二の方法として、アウトオブオーダ法がある。アウトオブオーダ法は、空いているパケット処理部にパケットを振り分ける方法である。この方法では、均等な負荷分散がされるが、ラウンドロビン法も含め、パケットの転送元から転送先に連続して送られる一連のパケットの間で処理負荷の低いパケット処理部を通過したパケットが処理負荷の高いパケット処理部を通過したパケットを追い越して順序が逆転することが有り得る。
【０００６】
そのため、第三の方法として、ハッシュ法がある。ハッシュ法は、ヘッダ情報を元に計算したハッシュ値にしたがって、パケットを振り分ける方法である。例えば、フローを表すヘッダ情報となるパケットの送信元ＩＰアドレスや宛先ＩＰアドレス、プロトコル番号等の組を引数として、ハッシュ関数を計算し、得られた値（ハッシュ値）にしたがって、パケットの振り分け先を決定する方法であり、この方法によれば同一フロー内のパケットの順序性が保証される。
【０００７】
特許文献１では上記三つの方法を挙げている。また、ラウンドロビン法、アウトオブオーダ法を用いて負荷を分散する際は、パケットの順序逆転を防止するために、出力段に転送パケット再配列処理部を設けて、パケット振り分け時の順序に並べ直してから出力している。
【０００８】
特許文献２は、ネットワーク装置に於けるパケット処理を開示している。特許文献２のネットワーク装置は、並列処理による負荷分散を開示しているが、パケットが順序逆転しないことは保証していない。
【０００９】
特許文献３は、パケット通信処理部に於ける負荷分散を開示している。特許文献３に記載の負荷分散は、統計情報に基づいた負荷分散である。しかし、パケットの順序逆転しないことに付いて保証していない。
【００１０】
特許文献４は、パケット転送装置を開示している。しかし、このパケット転送装置は、ヘッダ処理の並列化に関するのみである。
【００１１】
図１を参照して、ハッシュ法を用いたパケット振り分け方法を説明する。ここで、図１はハッシュ法を用いたパケット振り分け方法を説明するブロック図である。図１において、図示の簡便のため、パケット処理部１０５は、２個のみ記載する。また、ネットワーク中継装置の、パケット振り分け処理部１０３、処理待ちキュー１４０、パケット処理部１０５のみ抜きで出している。図１Ａの処理待ちキュー１０４−１を参照して、円形で示すパケットを説明する。処理キュー１０４−１には、パケットＡ１、Ｃ１、Ａ２、Ｃ２がこの順に保持されている。ＡはフローＡ、ＣはフローＣを意味する。ＡまたはＣに続く数字は、フローのシーケンス番号である。また処理待ちキュー１０４は、いわゆるＦＩＦＯ（First In First Out）メモリであり、左から入力され、右から出力される。
【００１２】
図１において、パケット振り分け処理部１０３は、受信パケットのヘッダ情報を基にハッシュ値を求める。パケット振り分け処理部１０３は、さらにハッシュ値から振り分け先パケット処理部１０５−１〜２を特定する。ここでは、フローＡとフローＣに属すパケットは処理待ちキュー１０４−１に振り分けられ、フローＢに属すパケットは処理待ちキュー１０４−２に振り分けられる。
【００１３】
図１Ｂは、図１Ａから比べて少し時間が経過し、フローＡのトラヒックが増加した様子を表している。ハッシュ法では、一度割り振られたパケットは同一のパケット処理部１０５−１で処理され続け、他のパケット処理部１０５−２で処理されることはない。このため、パケット処理部１０５−２は比較的負荷が軽いにもかかわらず、フローＣを処理することはない。よって、フローＣはフローＡの影響で、遅延や、パケットをロストしてしまう可能性がある。
【００１４】
【特許文献１】特開２００１−２１１２０３号公報
【特許文献２】特開２００８−１６７３０５号公報
【特許文献３】特開２００４−２２１８０５号公報
【特許文献４】特開２００３−０１８１９８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
ラウンドロビン法、アウトオブオーダ法の単純な実装ではパケットの順序逆転が起きてしまう問題がある。前述したとおり、出力段に転送パケット再配列処理部を設けることでこの問題を回避することも可能であるが、この処理は、パケット受信時にパケットに付与する内部ヘッダにおいてシーケンス番号を付与し、パケット送信時にシーケンス番号の順序再配列をしてからパケットを送信することで解決しているため、遅延時間の発生や、実装のコストが増す。
【００１６】
一方ハッシュ法では、生成されるハッシュ値によって、同一フローのパケットは同一のパケット処理部に割り振られる。このため、ハッシュ法では、フロー内での順序逆転は発生しない。しかし、複数のフローにおいてハッシュ値から求められる振り分け先パケット処理部が同一になるなど、特定パケット処理部に集中することが有り得る。この場合、空いているパケット処理部を有効に利用できない。
【００１７】
本発明では、上記に鑑みて、特別なパケット再配列処理部を必要とせずにパケットのフロー内での順序逆転が起きないことを保証し、かつ、負荷状況に応じてパケット振り分け先を移すことを可能とするパケット振り分け方法と、複数のパケット処理部を有し、上記パケット振り分け方法によって、パケットを並列に処理可能なネットワーク中継装置を得ることを目的とする。
【課題を解決するための手段】
【００１８】
上述した課題は、受信キューと、この受信キューからパケットを取り出すパケット振り分け処理部と、複数の処理待ちキューと、これらの処理待ちキューとに対応する複数のパケット処理部と、送信キューとからなり、複数のパケット処理部の負荷状態を定期的に収集する統計情報収集部と、この統計情報収集部が収集した負荷状況と、ハッシュ値とパケット処理部とカウンタとを対応付ける振り分け情報テーブルとを保持する振り分け情報保持部とをさらに備え、パケット振り分け部は、処理待ちキューにパケットを送信した後、振り分け情報テーブルの該当するハッシュ値のカウンタをインクリメントし、パケット処理部は、送信キューにパケットを送信した後、振り分け情報テーブルの該当するハッシュ値のカウンタをデクリメントし、パケット振り分け部は、受信キューからパケットを取得したとき、振り分け情報テーブルの該当するハッシュ値のカウンタを参照し、カウンタ値が予め定めた値のとき、振り分け情報テーブルの該当するハッシュ値のパケット処理部を更新するネットワーク中継装置により、達成できる。
【００１９】
また、入力されたパケットをハッシュ値に基づいて振り分けることによりパケット処理の負荷分散を図るパケット振り分け部と、パケット振り分け先を特定するために用いる各パケット処理部の負荷状態を定期的に収集する統計情報収集部と、パケットを振り分ける際に振り分け先を特定するための情報を管理する振り分け情報保持部と、振り分けられたパケットを処理する複数のパケット処理部を備え、情報保持部は、ハッシュ値とパケット処理部とカウンタとを対応付ける振り分け情報テーブルを備え、パケット振り分け部は、パケット処理が終了した後、振り分け情報テーブルの該当するハッシュ値のカウンタをインクリメントし、パケット処理部は、パケット処理が終了した後、振り分け情報テーブルの該当するハッシュ値のカウンタをデクリメントするネットワーク中継装置により、達成できる。
【００２０】
さらに、受信キューからパケットを取り出すステップと、このパケットのハッシュ値を計算するステップと、このハッシュ値に基づいて、振り分け情報テーブルを参照するステップと、この振り分け情報テーブルのカウンタ値が予め定めた値か確認するステップと、パケットを処理待ちキューに振り分けるステップと、カウンタ値をインクリメントするステップと、処理待ちキューからパケットを取り出すステップと、パケットを出力するステップと、カウンタ値をインクリメントするステップと、からなるパケット振り分け方法により、達成できる。
【発明の効果】
【００２１】
本発明によれば、パケット中継装置において、フローごとのパケットの振り分け先を、実際のトラヒックの状況に応じて、動的に変更することが可能になる。
【発明を実施するための最良の形態】
【００２２】
以下、本発明の実施の形態について、実施例を用い図面を参照しながら、詳細に説明する。なお、実質同一部位には同じ参照番号を振り、説明は繰り返さない。
まず、図２を参照して、ネットワーク中継装置が適用されるネットワークシステムを説明する。ここで、図２はネットワークシステムのハードウェアブロック図である。
【００２３】
図２において、ネットワークシステム５００は、住宅に設置されたホームゲートウェイ（ＨＧＷ）５２０と、ＨＧＷ５２０と接続された地域ＩＰ網５３０と、インターネット５５０と、地域ＩＰ網５３０とインターネット５５０を接続するゲートウェイ５４０とで構成される。ＨＧＷ５２０には、端末１０が接続される。インターネット５５０にはサーバ６０が接続される。地域ＩＰ網５３０と、インターネット５５０とは、それぞれメッシュ状に接続されたルータで構成する。ＨＧＷ５２０、ＧＷ５４０、ルータ５０は、いずれもネットワーク中継装置である。
【００２４】
図３を参照して、ネットワーク中継装置の構成を説明する。ここで、図３はネットワーク中継装置の機能ブロック図である。図３において、ネットワーク中継装置４００は、受信キュー１０２と、パケット振り分け処理部１０３と、Ｎ台の処理待ちキュー１０４と、Ｎ台のパケット処理部１０５と、送信キュー１０８と、統計情報収集部１０７と、振り分け情報保持部１０６とから構成される。
【００２５】
パケット中継装置４００がパケットを受信したとき、受信キュー１０２は、パケットを一時的に保持する。パケット振り分け処理部１０３は、受信キュー１０２からパケットを一つ取り出す。パケット振り分け処理部１０３は、振り分け情報保持部１０６を参照して、振り分け先パケット処理部１０５−１〜Ｎの一つを特定する。パケット振り分け処理部１０３は、特定した振り分け先パケット処理部１０５に対応する処理待ちキュー１０４にパケットを振り分ける。なお、パケット振り分け処理部１０３は、ハッシュ演算により、振り分け先パケット処理部１０５を特定する。また、パケット振り分け処理部１０３は、パケットを振り分けた後、振り分け情報テーブル２００の当該ハッシュ値の参照カウンタをインクリメントする。
【００２６】
各パケット処理部１０５は、処理待ちキュー１０４からパケットを取り出す。パケット処理部１０５は、ルーティング処理や、プロトコル処理など、当該中継装置に要求される処理を行なう。処理が完了したパケットは、順次送信キュー１０８に渡され送信される。またパケット処理部１０５は、単位時間あたりの処理パケット数などにより負荷状態を示すカウンタ情報を計数する。なお、各パケット処理部１０５は、パケットを送信キュー１０８に送信した後、振り分け情報テーブル２００の当該ハッシュ値の参照カウンタをデクリメントする。ハッシュ値は、パケット処理部１０５で再計算してもよいし、パケット振り分け処理部１０３がパケットに付与してもよい。
【００２７】
統計情報収集部１０７は、各パケット処理部１０５が計数する単位時間当たりのパケット処理数など、パケット処理部１０５の負荷状態を表すカウンタ情報を定期的に収集する。その情報を基に、統計情報収集部１０７は、負荷の軽い順にパケット処理部１０５−１〜Ｎを特定するインデックスを並べて、負荷状態リスト３００を作成、更新する。振り分け情報保持部１０６は、振り分け情報テーブル２００と、負荷状態リスト３００を保持する。
【００２８】
図４と図５を参照して、振り分け情報テーブルと、負荷状態リストを説明する。ここで、図４は振り分け情報テーブルを説明する図である。また、図５は負荷状態リストを説明する図である。
【００２９】
図４において、振り分け情報テーブル２００は、フローを特定するハッシュ値２０１と、パケットの振り分け先パケット処理部１０５−１〜Ｎを示すインデックス２０２と、処理待ちキュー１０４に当該フローに属するパケットがいくつ存在するかを示す参照カウンタ２０３からなる。
【００３０】
フローを特定するためのハッシュ値２０１は、受信したパケットのヘッダ情報にある情報を基にハッシュ計算を行ない求める。具体的には、送信元ＩＰアドレス、送信先ＩＰアドレス、送信元ポート番号、送信先ポート番号、プロトコル番号を組み合わせて用いてハッシュ計算を行なう。
【００３１】
振り分け先パケット処理部のインデックス２０２は、パケットを受信し、フローを特定した際に参照し、対応するフローをどのパケット処理部１０５に振り分けるかを示している。参照カウンタ２０３は、パケット振り分け処理部１０３にてパケットを処理待ちキュー１０４に送った時点で加算し、振り分け先の各パケット処理部１０５で処理が完了した際に減算を行う。
【００３２】
図５において、負荷状態リスト３００は、負荷順序３０１と、パケット処理部インデックス３０２とから構成される。負荷状態リスト３００において、負荷順序３０１が小さいほど、負荷が軽いことを意味し、該当するパケット処理部１０５は、そのインデックス３０２で判定される。
【００３３】
図６を参照して、ネットワーク中継装置のハードウェア構成を説明する。ここで、図６はネットワーク中継装置のハードウェアブロック図である。図６において、ネットワーク中継装置４００は、バス４０４で相互接続されたマルチコアＣＰＵ４０５と、入力ＩＦ４０１と、出力ＩＦ４０２と、メモリ４０３とで構成される。さらに、マルチコアＣＰＵ４０５のコア１は、パケット振り分け処理部１０３として動作する。また、マルチコアＣＰＵ４０５のコア２は、パケット処理部１０５−１として動作する。同様に、マルチコアＣＰＵ４０５のコアＮ＋１は、パケット処理部１０５−Ｎとして動作する。さらに、マルチコアＣＰＵ４０５のコアＮ＋２は、統計情報収集部１０７として動作する。
【００３４】
入力ＩＦ４０１は、外部から受信した信号を装置内部で扱う信号形式に変換し、パケットとして受信キュー１０２に入力する。出力ＩＦ４０２は、送信キュー１０８よりパケットを取り出し、外部回線で扱う信号形式へ変換し出力する。なお、図６で示す入力ＩＦ４０１、出力ＩＦ４０２の数は各々一つであるが、ＩＦ４０１、４０２の数は、複数でもよい。
【００３５】
メモリ４０３は、受信キュー１０２と、送信キュー１０８と、処理待ちキュー１０４と、振り分け情報保持部１０６が割当てられている。
図３と図６との対比から明らかなように、パケット振り分け処理部１０３、パケット処理部１０５、統計情報収集部１０７は、メモリ上のプログラムを、各コアが実行することで実現している。しかし、パケット振り分け処理部１０３、パケット処理部１０５および統計情報処理部１０７は、それぞれＬＳＩでハードウェアとして実現することも可能である。
【００３６】
図７を参照して、パケット振り分け処理部の処理内容について、説明する。ここで、図７はパケット振り分け処理部の動作のフローチャートである。図７において、受信キュー１０２にパケットがあるとき、パケット振り分け処理部１０３は、まず、受信キュー１０２からパケットを取り出す（Ｓ５０１）。パケット振り分け処理部１０３は、次にパケットのヘッダ情報を基にハッシュ計算を行ない（Ｓ５０２）、フローを特定するハッシュ値を得る。そのハッシュ値を基にパケット振り分け処理部１０３は、振り分け情報テーブル２００を参照し（Ｓ５０３）、パケット振り分け処理部１０３は、そのフローに対応する参照カウンタ２０３が０で有るか否かを見る（Ｓ５０４）。０でなかった場合（ＮＯ）、パケット振り分け処理部１０３は、同じく振り分け情報テーブル２００を参照し、振り分け先パケット処理部１０５−１〜Ｎに対応する処理待ちキュー１０４−１〜Ｎにパケットを移す（Ｓ５０８）。パケット振り分け処理部１０３は、振り分け情報テーブル２００上のフローに対応する参照カウンタ２０３の値を加算して（Ｓ５０９）、終了する。
【００３７】
一方、ステップ５０４で参照カウンタの値が０であった場合、パケット振り分け処理部１０３は、負荷状態リスト３００を参照する（Ｓ５０５）。パケット振り分け処理部１０３は、負荷の軽いパケット処理部１０５−１〜Ｎを特定する（Ｓ５０６）。このとき、パケット振り分け処理部１０３は、特定した振り分け先のパケット処理部１０５−１〜Ｎを示すインデックスで、振り分け情報テーブル２００上の当該フローの振り分け先を更新して（Ｓ５０７）、ステップ５０８に遷移する。ここまでが一連の処理であり、パケット振り分け処理部１０３は、パケットを受信するたびに、この処理を繰り返し行なう。
【００３８】
図８を参照して、パケット処理部の処理内容について、説明する。ここで、図８はパケット処理部の動作フローチャートである。図８において、パケット処理部１０５は、処理待ちキュー１０４からパケットを取り出す（Ｓ６０１）。パケット処理部１０５は、そのパケットに対して必要な、ルーティング処理、プロトコル処理等の、パケット処理を行なう（Ｓ６０２）。パケット処理が完了した後、パケット処理部１０５は、パケットを出力するため、送信キュー１０８にパケットを移す（Ｓ６０３）。またその際、パケット処理部１０５は、振り分け情報テーブル２００上のフローに対応する参照カウンタの値を減算する（Ｓ６０４）。ここまでが一連の処理であり、パケット処理部１０５は、パケットを受信キュー１０２から取り出すたびに、この処理を繰り返し行なう。
【００３９】
図９を参照して、統計情報収集部の処理内容を、説明する。ここで、図９は統計情報収集部の動作のフローチャートである。図９において、統計情報収集部１０７は、まず、各パケット処理部１０５−１〜Ｎで計数している負荷状態を示すカウンタ情報を収集する（Ｓ７０１）。次に、統計情報収集部１０７は、収集した情報を基に、負荷状態の軽い順にパケット処理部１０５−１〜Ｎを示すインデックスを並べて、負荷状態リスト３００を更新する（Ｓ７０２）。統計情報の収集は定期的に行うため、統計情報収集部１０７は、一定時間経過するのを待って（Ｓ７０３）、再びステップ７０１に戻る。統計情報収集部１０７は、ここまでの処理を繰り返し行なう。
【００４０】
図１０を参照して、本実施例でのパケットの振り分け先の動的に変更を説明する。ここで、図１０はパケット振り分け方法を説明するブロック図および振り分け情報テーブルを説明する図である。
【００４１】
図１０Ａは、比較のため、図１Ａと同様にパケット振り分けられている様子を表している。右側にはその時点での振り分け情報テーブル２００の様子を示している。説明のため、各フローに対応するハッシュ値を次のように定めている。フローＡに対応するハッシュ値を１２５６、フローＢに対応するハッシュ値を２１９、フローＣに対応するハッシュ値を２３７８とする。振り分け先のパケット処理部１０５はこの時点で、フローＡ、Ｂがパケット処理部１０５−１であり、フローＣはパケット処理部１０５−２である。参照カウンタは、フローＡが２、フローＢが３、フローＣが２である。
【００４２】
図１０Ｂはフローを他のパケット処理部１０５に移す契機となる、フローＣの参照カウンタが０となった状態を示している。処理待ちキュー１０４−１からフローＣのパケットが無くなり、それに併せて、振り分け情報テーブル２００上の参照カウンタも０を示している。
【００４３】
この状態で次にフローＣのパケット受信した際に、負荷状態リスト３００を基にパケットの振り分け先を移す。ここでは、パケット処理部１０５−１に比べて、パケット処理部１０５−２の負荷が軽い。よって、フローＣはパケット処理部１０５−２で処理されるように、振り分け先を移す。図１０ＣはフローＡのトラヒックが増した様子であるが、フローＣはすでにパケット処理部１０５−２に振り分け先を移しているため、パケット処理に関して、フローＡの影響を受けることなく処理することが可能である。
【００４４】
このように、パケットの振り分け先を変えることで、複数個あるパケット処理部１０５を有効に利用することが可能となり、パケット処理を並列化することで、パケット転送処理を高めることができる。
【００４５】
振り分け先を変更した場合においても、フロー内でのパケット順序逆転が起きないことを図１１を参照して説明する。ここで、図１１はパケットの送信順序を説明するブロック図である。図１１において、図１０で示したと同様にパケット処理部１０５は２つに限定して説明する。また、扱うフローもフローＡ、Ｂ、Ｃの３つとする。ただし、図１０に加えて送信キュー１０８も図示する。
【００４６】
図１１において、初めに、フローＡ、Ｃは、パケット処理部１０５−１で処理されるように処理待ちキュー１０４−１に入れられている。フローＢは、処理待ちキュー１０４−２に入っている。この状態でパケットＣ２が処理待ちキュー１０４−１からパケット処理部１０５−１に移り、パケット処理を施して、送信キュー１０８に入れられたとする。
【００４７】
この時点でフローＣの参照カウンタは、０となる。この場合、フローＣのパケットはどの処理待ちキュー１０４、パケット処理部１０５にも存在しない状態となる。参照カウンタ０の状態で、再度フローＣのパケットを受信した場合、どのパケット処理部１０５で処理を行っても、順序逆転が起きない。なぜならば、処理待ちキュー１０４−１〜２とパケット処理部１０５−１〜２の並列処理区間で同一フローが並列に処理されることがないため、パケットの追越しによる順序逆転が起きないことが保証される。
【００４８】
一つのフローだけに着目すると、一つのパケット処理部１０５で順序処理されるのと変わりないことになる。よって、参照カウンタが０の状態であれば、順序逆転することなく、パケット処理部１０５−１から、パケット処理部１０５−２へ、振り分け先を移すことが可能である。
【００４９】
本実施例によるネットワーク中継装置は、複数種の多数フローを扱うネットワーク上の中継装置において、より高速な転送処理が要求される場合に有用である。本実施例によれば、パケット中継装置において、フローごとのパケットの振り分け先を、実際のトラヒックの状況に応じて、動的に変更することが可能になる。これにより、トラヒックの変動によって、負荷に偏りが生じた場合も、パケットの振り分け先を動的に変更することで、複数のパケット処理部を有効に使用することができ、装置全体として、パケット処理能力が向上するという効果がある。また、本実施例のパケット振り分け方法を用いることで、内部でシーケンス番号を付与し、出力段で再配列を行うようなパケット再配列処理部を必要とせずにフロー内のパケット順序逆転が起きないことを保証できる。
【図面の簡単な説明】
【００５０】
【図１Ａ】ハッシュ法を用いたパケット振り分け方法を説明するブロック図である（その１）。
【図１Ｂ】ハッシュ法を用いたパケット振り分け方法を説明するブロック図である（その２）。
【図２】ネットワークシステムのハードウェアブロック図である。
【図３】ネットワーク中継装置の機能ブロック図である。
【図４】振り分け情報テーブルを説明する図である。
【図５】負荷状態リストを説明する図である。
【図６】ネットワーク中継装置のハードウェアブロック図である。
【図７】パケット振り分け処理部の動作のフローチャートである。
【図８】パケット処理部の動作フローチャートである。
【図９】統計情報収集部の動作のフローチャートである。
【図１０Ａ】パケット振り分け方法を説明するブロック図および振り分け情報テーブルを説明する図である（その１）。
【図１０Ｂ】パケット振り分け方法を説明するブロック図および振り分け情報テーブルを説明する図である（その２）。
【図１０Ｃ】パケット振り分け方法を説明するブロック図および振り分け情報テーブルを説明する図である（その３）。
【図１１】パケットの送信順序を説明するブロック図である。
【符号の説明】
【００５１】
１０…端末、５０…ルータ、６０…サーバ、１０１…パケット、１０２…受信キュー、１０３…パケット振り分け処理部、１０４…処理待ちキュー、１０５…パケット処理部、１０６…振り分け情報、１０７…統計情報収集部、１０８…送信キュー、２００…振り分け情報テーブル、３００…負荷状態リスト、４０１…入力ＩＦ、４０２…出力ＩＦ、４０３…メモリ、４０４…バス、５００…ネットワークシステム、５２０…ＨＧＷ、５３０…地域ＩＰ網、５４０…ＧＷ、５５０…インターネット。
【図１Ａ】
2010161546.tif 000003
【図１Ｂ】
2010161546.tif 000004
【図２】
2010161546.tif 000005
【図３】
2010161546.tif 000006
【図４】
2010161546.tif 000007
【図５】
2010161546.tif 000008
【図６】
2010161546.tif 000009
【図７】
2010161546.tif 000010
【図８】
2010161546.tif 000011
【図９】
2010161546.tif 000012
【図１０Ａ】
2010161546.tif 000013
【図１０Ｂ】
2010161546.tif 000014
【図１０Ｃ】
2010161546.tif 000015
【図１１】
2010161546.tif 000016