(57)【要約】【課題】リンクアグリゲーションにおいて、フロー単位でパケットの順序入れ替えを行うことなく、有効な帯域利用を行うこと。【解決手段】ハッシュ演算回路は、受信パケットに対してハッシュ演算を行い、ハッシュ値を用いて、選択回路のいずれか一方を出力先に決定する。選択回路制御部は、新たにパケットを受信する度、あるいは、バッファ回路からの割り込み、物理ＩＦからのリンクダウン情報の割り込みに従って、フロー単位で優先度、ハッシュ演算、ハッシュ値などの選択回路管理テーブルへの登録、削除を行う。選択回路は、選択回路制御部の制御の下、制御情報、優先度に従って、受信パケットをバッファ回路のいずれかに送信する。【選択図】図１
2012205048.tif 000002
【特許請求の範囲】
【請求項１】
主信号経路より受信した受信パケットをバッファリングしてリンクアグリゲーションとして装置外部へ送出するパケット伝送装置であって、
前記受信パケットに対してハッシュ演算を行い、得られたハッシュ値で出力先物理ＩＦを決定するハッシュ演算回路と、
前記ハッシュ演算回路からの受信パケットを後段回路に対して選択的に送出する選択回路と、
出力先物理ＩＦの数と受信パケットの優先度とに対応づけて設けられた複数のバッファ手段からなり、前記選択回路からの受信パケットをバッファリングするバッファ回路と、
前記受信パケットの優先度に従って、前記バッファ回路から受信パケットを受け取る調停回路と、
前記調停回路から受信パケットを受け取り、リンクアグリゲーションとして装置外部へ送出する出力先物理ＩＦと、
前記受信パケットを受け取った前記ハッシュ演算回路でハッシュ演算が行われる度に、少なくとも、前記ハッシュ演算回路でのハッシュ演算で得られたハッシュ値と、前記受信バケットの優先度とを保持しておき、該保持したハッシュ値と前記受信バケットの優先度と前記バッファ回路のバッファリング状態とに基づいて、前記選択回路に対する前記受信パケットの出力先を制御する選択回路制御部と、
を備えるパケット伝送装置。
【請求項２】
前記受信パケットを受け取った前記ハッシュ演算回路でハッシュ演算が行われる度に、前記ハッシュ演算回路からの情報と、当該パケット受信からの経過時間を計時するタイマ値とを、前記受信パケットに対するフロー毎に保持する選択回路管理テーブルを更に備え、
前記選択回路制御部は、前記タイマ値が所定の閾値に達すると、該閾値に達したタイマ値に対応する、前記ハッシュ演算回路でのハッシュ演算で得られたハッシュ値と、前記受信バケットの優先度とを前記選択回路管理テーブルから削除する請求項１に記載のパケット伝送装置。
【請求項３】
前記選択回路制御部は、前記ハッシュ演算回路でハッシュ演算が行われる度に、前記ハッシュ演算回路から受け取った情報が前記選択回路管理テーブルに既に登録されているフローの情報と同一であった場合には、対応するフローのタイマ値を初期値に戻す請求項１または２に記載のパケット伝送装置。
【請求項４】
前記選択回路制御部は、前記バッファ回路でバッファ量が所定の閾値を超えることにより割り込み通知が発生した場合、その時点での出力先である出力先物理ＩＦを変更して、新たなフローとして前記選択回路管理テーブルに登録する請求項１から３のいずれかに記載のパケット伝送装置。
【請求項５】
前記選択回路制御部は、前記出力先物理ＩＦからリンクダウン情報の割り込み通知が発生した場合、前記選択回路管理テーブルから、前記割り込み通知を行った出力先物理ＩＦに対応する情報を削除する請求項１から４のいずれかに記載のパケット伝送装置。
【請求項６】
前記選択回路は、前記選択回路管理テーブルに登録されているフローに対応する情報のうち、ハッシュ値と出力先である出力先物理ＩＦとが異なる情報のみを有する選択回路用テーブルを備える請求項１から５のいずれかに記載のパケット伝送装置。
【請求項７】
前記選択回路制御部は、前記タイマ値に代えてパケット数をカウントするカウンタ値を、前記受信パケットに対するフロー毎に前記選択回路管理テーブルに保持し、前記ハッシュ演算回路にパケットが入る度に、該当フローのカウンタ値をインクリメントし、前記出力先物理ＩＦからパケットが出力されると、該当フローのカウンタ値をデクリメントし、前記カウンタ値が「０」の場合には、該当フローに対応する情報を、前記選択回路管理テーブルから削除する請求項１から６のいずれかに記載のパケット伝送装置。
【請求項８】
主信号経路より受信した受信パケットをバッファリングしてリンクアグリゲーションとして装置外部へ送出するパケット伝送方法であって、
前記受信パケットに対してハッシュ演算を行い、得られたハッシュ値で出力先物理ＩＦを決定するハッシュ演算ステップと、
前記受信パケットを後段回路に対して選択的に送出する選択送出ステップと、
出力先物理ＩＦの数と受信パケットの優先度とに対応づけて設けられた複数のバッファ手段で、前記受信パケットをバッファリングするバッファステップと、
前記受信パケットの優先度に従って、前記バッファリングされた受信パケットを受け取る調停ステップと、
前記受け取った受信パケットを、出力先物理ＩＦによりリンクアグリゲーションとして装置外部へ送出する出力ステップと、
前記ハッシュ演算が行われる度に、少なくとも、前記ハッシュ演算で得られたハッシュ値と、前記受信バケットの優先度とを保持しておき、該保持したハッシュ値と前記受信バケットの優先度と前記バッファ回路のバッファリング状態とに基づいて、前記選択送出ステップでの前記受信パケットの出力先を制御する選択回路制御ステップと、
を有するパケット伝送方法。
【請求項９】
主信号経路より受信した受信パケットをバッファリングしてリンクアグリゲーションとして装置外部へ送出するコンピュータに対し、
前記受信パケットに対してハッシュ演算を行い、得られたハッシュ値で出力先物理ＩＦを決定するハッシュ演算ステップと、
前記受信パケットを後段回路に対して選択的に送出する選択送出ステップと、
出力先物理ＩＦの数と受信パケットの優先度とに対応づけて設けられた複数のバッファ手段で、前記受信パケットをバッファリングするバッファステップと、
前記受信パケットの優先度に従って、前記バッファリングされた受信パケットを受け取る調停ステップと、
前記受け取った受信パケットを、出力先物理ＩＦによりリンクアグリゲーションとして装置外部へ送出する出力ステップと、
前記ハッシュ演算が行われる度に、少なくとも、前記ハッシュ演算で得られたハッシュ値と、前記受信バケットの優先度とを保持しておき、該保持したハッシュ値と前記受信バケットの優先度と前記バッファ回路のバッファリング状態とに基づいて、前記選択送出ステップでの前記受信パケットの出力先を制御する選択回路制御ステップと、
を実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット伝送技術に関する。
【背景技術】
【０００２】
リンクアグリゲーションは、複数の物理回線を束ね、論理的に１つのポートとして帯域を増やすことが可能である（例えば、特許文献１、２、３参照）。しかし、効率的なハッシュ演算を行ったとしても、完全に均等な割り振りを実施することはできない。例えば、ハッシュ値が連続して一致するような場合には、特定の物理ポートの帯域が増え、他の物理ポートの帯域が余っていたとしてもパケットの廃棄が発生する。
【０００３】
パケットが廃棄される場合には、優先制御を行ったとしても、物理ポート単位に行われる。このため、リンクアグリゲーションの論理ポート単位での優先制御を行うことができない。例えば、使用帯域の高い物理ポートで、高優先度のパケットが廃棄される。一方で、使用帯域の低い物理ポートでは、低優先のパケットが送信されることがある。
【０００４】
また、リンクアグリゲーションの論理ポート単位での優先制御を保つ１つの方法としてラウンドロビンを用いて物理ポートの振り分けを実施する方法が挙げられる。しかし、ラウンドロビンを用いた場合には、フロー識別を行わないため、フローの順序性を保つことができないという問題がある。
【０００５】
図２０は、関連する装置出力部の構成を示すブロック図である。図２０において、ハッシュ演算回路１０−１は、主信号経路よりパケットを受信し、受信パケットに対してハッシュ演算を行い、出力先の物理ＩＦ１０−５を決定する。受信パケットは、出力先の物理ＩＦ１０−５に対応するバッファ回路１０−３へ送られる。
【０００６】
バッファ回路１０−３は、物理ＩＦ・優先度単位でバッファを有する。調停回路１０−４は、優先度に従って、バッファ回路１０−３から受信パケットを引き取り、物理ＩＦ１０−５へ送る。物理ＩＦ１０−５は、リンクアグリゲーション１０−８として、装置外部へパケットを送る。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００５−２７７９１５号公報
【特許文献２】特開２００７−０５３５６４号公報
【特許文献３】特開２００７−１８０８９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、従来の装置出力部においては、次のような課題がある。
第１の課題は、ハッシュ値が連続して一致するような場合には、特定の物理ＩＦの帯域が増え、他の物理ＩＦの帯域が余っていたとしても、パケットの廃棄が行われ、帯域の有効活用ができないということである。
【０００９】
第２の課題は、優先制御が物理ＩＦ単位に行われるため、帯域が増えている物理ＩＦで高優先のパケットが廃棄される一方で、帯域の低い物理ＩＦでは、低優先のパケットが送信される場合が発生し、論理ポート単位での優先制御を行うことができないということである。
【００１０】
上記事情に鑑み、本発明は、リンクアグリゲーションにおいても、フロー単位でパケットの順序入れ替えを行うことなく、優先度に従ってパケットの振り分けを実施し有効な帯域利用を行うための技術を提供することを目的としている。
【課題を解決するための手段】
【００１１】
本発明の一態様は、主信号経路より受信した受信パケットをバッファリングしてリンクアグリゲーションとして装置外部へ送出するパケット伝送装置であって、前記受信パケットに対してハッシュ演算を行い、得られたハッシュ値で出力先物理ＩＦを決定するハッシュ演算回路と、前記ハッシュ演算回路からの受信パケットを後段回路に対して選択的に送出する選択回路と、出力先物理ＩＦの数と受信パケットの優先度とに対応づけて設けられた複数のバッファ手段からなり、前記選択回路からの受信パケットをバッファリングするバッファ回路と、前記受信パケットの優先度に従って、前記バッファ回路から受信パケットを受け取る調停回路と、前記調停回路から受信パケットを受け取り、リンクアグリゲーションとして装置外部へ送出する出力先物理ＩＦと、前記受信パケットを受け取った前記ハッシュ演算回路でハッシュ演算が行われる度に、少なくとも、前記ハッシュ演算回路でのハッシュ演算で得られたハッシュ値と、前記受信バケットの優先度とを保持しておき、該保持したハッシュ値と前記受信バケットの優先度と前記バッファ回路のバッファリング状態とに基づいて、前記選択回路に対する前記受信パケットの出力先を制御する選択回路制御部と、を備える。
【００１２】
本発明の一態様は、主信号経路より受信した受信パケットをバッファリングしてリンクアグリゲーションとして装置外部へ送出するパケット伝送方法であって、前記受信パケットに対してハッシュ演算を行い、得られたハッシュ値で出力先物理ＩＦを決定するハッシュ演算ステップと、前記受信パケットを後段回路に対して選択的に送出する選択送出ステップと、出力先物理ＩＦの数と受信パケットの優先度とに対応づけて設けられた複数のバッファ手段で、前記受信パケットをバッファリングするバッファステップと、前記受信パケットの優先度に従って、前記バッファリングされた受信パケットを受け取る調停ステップと、前記受け取った受信パケットを、出力先物理ＩＦによりリンクアグリゲーションとして装置外部へ送出する出力ステップと、前記ハッシュ演算が行われる度に、少なくとも、前記ハッシュ演算で得られたハッシュ値と、前記受信バケットの優先度とを保持しておき、該保持したハッシュ値と前記受信バケットの優先度と前記バッファ回路のバッファリング状態とに基づいて、前記選択送出ステップでの前記受信パケットの出力先を制御する選択回路制御ステップと、を有する。
【００１３】
本発明の一態様は、主信号経路より受信した受信パケットをバッファリングしてリンクアグリゲーションとして装置外部へ送出するコンピュータに対し、前記受信パケットに対してハッシュ演算を行い、得られたハッシュ値で出力先物理ＩＦを決定するハッシュ演算ステップと、前記受信パケットを後段回路に対して選択的に送出する選択送出ステップと、出力先物理ＩＦの数と受信パケットの優先度とに対応づけて設けられた複数のバッファ手段で、前記受信パケットをバッファリングするバッファステップと、前記受信パケットの優先度に従って、前記バッファリングされた受信パケットを受け取る調停ステップと、前記受け取った受信パケットを、出力先物理ＩＦによりリンクアグリゲーションとして装置外部へ送出する出力ステップと、前記ハッシュ演算が行われる度に、少なくとも、前記ハッシュ演算で得られたハッシュ値と、前記受信バケットの優先度とを保持しておき、該保持したハッシュ値と前記受信バケットの優先度と前記バッファ回路のバッファリング状態とに基づいて、前記選択送出ステップでの前記受信パケットの出力先を制御する選択回路制御ステップと、を実行させるためのコンピュータプログラムである。
【発明の効果】
【００１４】
本発明により、リンクアグリゲーションにおいてもフロー単位でパケットの順序入れ替えを行うことなく、優先度に従いパケットの振り分けを実施することができ、有効な帯域利用を行うことが可能となる。
【図面の簡単な説明】
【００１５】
【図１】第一実施形態による装置出力部２の一構成例を示すブロック図である。
【図２】第一実施形態による、選択回路管理テーブル２−８の構成を示す概念図である。
【図３】第一実施形態の動作（主信号の出力先物理ＩＦ決定処理）を説明するためのフローチャートである。
【図４】第一実施形態による選択回路制御部２−７の選択回路管理テーブル２−８へのテーブル登録動作を説明するためのフローチャートである。
【図５】第一実施形態による、選択回路管理テーブル２−８の更新動作（ステップＳ１７）を説明するための概念図である。
【図６】第一実施形態による、選択回路管理テーブル２−８の更新動作（ステップＳ１２）を説明するための概念図である。
【図７】第一実施形態による、選択回路管理テーブル２−８の更新動作（ステップＳ１６）を説明するための概念図である。
【図８】第一実施形態による、物理ＩＦ２−５−ｉから割り込み通知発生時の選択回路管理テーブル２−８の削除動作を説明するための概念図である。
【図９】第一実施形態において、複数の割り込みが発生している場合の動作について説明するための概念図である。
【図１０】第一実施形態の変形例による、選択回路管理テーブル２−８の構成を示す概念図である。
【図１１】第二実施形態による、選択回路管理テーブル２−８、選択回路＃１テーブル、選択回路＃２テーブルの構成を示す概念図である。
【図１２】第二実施形態の動作（主信号の出力先物理ＩＦ決定処理）を説明するためのフローチャートである。
【図１３】第二実施形態の動作（主信号の出力先物理ＩＦ決定処理）を説明するためのフローチャートである。
【図１４】第二実施形態の動作を説明するための選択回路管理テーブル２−８の変化を示す概念図である。
【図１５】第二実施形態の動作を説明するための選択回路管理テーブル２−８の変化を示す概念図である。
【図１６】第二実施形態の動作を説明するための選択回路管理テーブル２−８の変化を示す概念図である。
【図１７】第二実施形態の動作を説明するための選択回路管理テーブル２−８の変化を示す概念図である。
【図１８】第二実施形態の動作を説明するための選択回路管理テーブル２−８の変化を示す概念図である。
【図１９】第二実施形態の動作を説明するための選択回路管理テーブル２−８の変化を示す概念図である。
【図２０】関連する装置出力部の構成を示すブロック図である。
【発明を実施するための形態】
【００１６】
装置出力部は、リンクアグリゲーションを実施する装置において、バッファ回路部の負荷状況を監視することで、転送するパケットの出力物理ＩＦを優先選択制御する。これにより、リンクアグリゲーションにおいても、物理ＩＦの振り分け論理に偏りが発生した場合においても、フロー単位でパケットの順序を入れ替えることなく、有効な帯域利用が可能となる。また、この動作は動的に行われるため、ハッシュ演算の方式変更を必要としない。
【００１７】
［第一実施形態］
まず、装置出力部の第一実施形態について説明する。図１は、第一実施形態による装置出力部２の一構成例を示すブロック図である。装置出力部２は、バスで接続されたＣＰＵ（Central Processing Unit）やメモリや補助記憶装置などを備え、制御プログラムを実行することによって機能する。なお、装置出力部２の各機能の全て又は一部は、ＡＳＩＣ（Application Specific Integrated Circuit）やＰＬＤ（Programmable Logic Device）やＦＰＧＡ（Field Programmable Gate Array）等のハードウェアを用いて実現されても良い。制御プログラムは、コンピュータ読み取り可能な記録媒体に記録されても良い。コンピュータ読み取り可能な記録媒体とは、例えばフレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置である。
【００１８】
図１には、装置出力部２において、物理ＩＦ数を２つ、優先度数を４つとした場合の構成が示されている。図１において、ハッシュ演算回路２−１は、主信号経路よりパケットを受信し、受信パケットに対してハッシュ演算を行い、得られたハッシュ値を用いて、選択回路２−２−１、２−２−２のいずれか一方を出力先に決定する。ハッシュ値は、パケットが送られる選択回路のＩＤを表す。
【００１９】
ハッシュ演算回路２−１は、得られたハッシュ値に従って、受信パケットを、出力先の物理ＩＦ２−５−１、２−５−２に対応する選択回路２−２−１、２−２−２に送出する。また、ハッシュ演算回路２−１は、受信パケットの優先度、ハッシュ演算に使用したハッシュ演算Ｋｅｙ、及びハッシュ値を、選択回路制御部２−７に送出する。
【００２０】
なお、優先度は、パケットの送信先であるバッファ回路のＩＤを表す。また、ハッシュ演算Ｋｅｙは、ハッシュ値を算出する際に用いた値を表す。この例では、ハッシュ演算Ｋｅｙは、同一フローか否かを判断するために用いられているが、必ずしもこの値でなくても良い。
【００２１】
選択回路２−２−１、２−２−２は、論理的に物理ＩＦ２−５−１、２−５−２と同一の数からなる。すなわち、選択回路２−２−１、２−２−２と物理ＩＦ２−５−１、２−５−２とは、１対１の関係にある。選択回路２−２−１、２−２−２において、ハッシュ値が物理ＩＦ２−５−１を示す場合には、選択回路２−２−１側でパケットの受信を行い、ハッシュ値が物理ＩＦ２−５−２を示す場合には、選択回路２−２−２側でパケットの受信を行う。
【００２２】
また、選択回路２−２−１、２−２−２は、各々、選択回路制御部２−７が選択回路管理テーブル２−８からそれぞれの選択回路用に抜き出し、フロー毎に、制御結果、ハッシュ演算Ｋｅｙ、優先度を保持する選択回路＃１テーブル、選択回路＃２テーブルを保持する。選択回路＃１テーブル、選択回路＃２テーブルの詳細については後述する。
【００２３】
選択回路２−２−１、２−２−２は、選択回路制御部２−７からの制御結果（出力先となる物理ＩＦを示すＩＤ）に従って、受信パケットを送信すべきバッファ回路２−３−１−０〜２−３−１−３、または、バッファ回路２−３−２−０〜２−３−２−３を選択する。また、選択回路２−２−１、２−２−２は、選択回路制御部２−７からの受信パケットの優先度に従って、選択したバッファ回路群のうち、受信パケットを送信すべきバッファ回路に選択的に受信パケットを送信する。
【００２４】
次に、バッファ回路２−３−１−０〜２−３−１−３、２−３−２−０〜２−３−２−３は、物理ＩＦ・優先度単位に配置されている。例えば、物理ＩＦが２つ、優先度が４つであれば、合計８個のバッファ回路が配設されることになる。具体的には、第一実施形態では、優先度数を４つとしているため、物理ＩＦ２−５−１に対しては、バッファ回路２−３−１−０〜２−３−１−３までの４つとなり、物理ＩＦ２−５−２に対しては、バッファ回路２−３−２−０〜２−３−２−３までの４つとなる。
【００２５】
また、ここでは、優先度「３」を最高優先として、優先度「０」を最低優先とする。つまり、バッファ回路２−３−１−０〜２−３−１−３、２−３−２−０〜２−３−２−３の末尾の符号が優先度に対応している。例えば、バッファ回路２−３−１−３は、物理ＩＦ２−５−１に対する優先度「３」用のバッファ回路とする。以下、同様に、優先度とバッファ回路とが対応付けられている。
【００２６】
バッファ回路２−３−１−０〜２−３−１−３、２−３−２−０〜２−３−２−３は、物理ＩＦ２−５−１、２−５−２単位に優先度数のバッファを有しており、該バッファを用いて受信パケットのバッファリングを行う。この際、バッファ回路２−３−１−０〜２−３−１−３、２−３−２−０〜２−３−２−３は、バッファ容量の一定値を閾値に設定しており、バッファ容量が該閾値を超えた場合には、バッファ単位で選択回路制御部２−７に割り込み通知を行う。これにより、どの物理ＩＦのどの優先度においてパケットの廃棄が行われようとしているかの判定が可能となる。
【００２７】
次に、調停回路２−４−１、２−４−２は、物理ＩＦ２−５−１、２−５−２と同一の数からなる。調停回路２−４−１、２−４−２と物理ＩＦ２−５−１、２−５−２とは、１対１の関係にある。調停回路２−４−１、２−４−２は、各々、優先度に従って、バッファ回路２−３−１−０〜２−３−１−３、２−３−２−０〜２−３−２−３から受信パケットを引き取り、対応する物理ＩＦ２−５−１、２−５−２へパケットを送る。
【００２８】
物理ＩＦ２−５−１、２−５−２は、リンクアグリゲーション２−６として、装置外部へパケットを送る。また、リンクダウン・リンクアップなどの物理ＩＦ２−５−１、２−５−２の障害・復旧情報を、選択回路制御部２−７へ通知する。
【００２９】
次に、選択回路制御部２−７は、選択回路管理テーブル２−８の情報が更新される度に、ハッシュ値「１」に対応するパケットの優先度、ハッシュ演算Ｋｅｙ、及び制御結果を選択回路２−２−１へ通知し、ハッシュ値「２」に対応するパケットの優先度、ハッシュ演算Ｋｅｙ、及び制御結果を選択回路２−２−２に通知する。すなわち、選択回路２−２−１、２−２−２では、制御結果と優先度とが決まることで、パケットを送るべきバッファ回路が一意に決まる。
【００３０】
また、選択回路制御部２−７は、ハッシュ演算回路２−１から受け取った優先度、ハッシュ演算Ｋｅｙ、ハッシュ値と、選択回路管理テーブル２−８の情報とを比較し、既に選択回路管理テーブル２−８に登録されている場合には、タイマの値を初期値（例えば、「０」）に戻す。
【００３１】
タイマは、パケット受信からカウントアップを始める。選択回路制御部２−７は、既に選択回路管理テーブル２−８に登録されているものと同一フローのパケットを受信した場合には、タイマの値を初期値に戻す。しかし、一定期間受信されなかったフローについては、選択回路管理テーブル２−８へ削除指示を行う。同一フローであるか否かは、パケットの送信先アドレス、及び送信元アドレス（ハッシュ演算Ｋｅｙ）が一致するか否かに基づいて判断する。
【００３２】
選択回路制御部２−７は、テーブル未登録、かつ、バッファ回路２−３−１−０〜２−３−１−３、２−３−２−０〜２−３−２−３からの割り込みがない場合には、制御結果をハッシュ値と同じ値として、選択回路管理テーブル２−８へ登録を行う。ハッシュ値と制御結果との値が一致するため、選択回路２−２−１、２−２−２では、制御結果に従った出力先である物理ＩＦ２−５−１、２−５−２のいずれかへパケット送信を行うことになる。
【００３３】
また、選択回路制御部２−７は、テーブル未登録、かつ、バッファ回路２−３−１−０〜２−３−１−３、２−３−２−０〜２−３−２−３からの割り込み通知があり、その割り込み通知がハッシュ値と一致する場合（割り込み通知の送信元であるバッファ回路が接続された物理ＩＦのＩＤがハッシュ値と一致する場合）、制御結果を、他の割り込み（バッファの優先度を含む）情報を加味した上で、物理ＩＦ２−５−１、２−５−２を指定し、選択回路管理テーブル２−８への登録を行う。
【００３４】
また、選択回路制御部２−７は、テーブル未登録、かつ、バッファ回路２−３−１−０〜２−３−１−３、２−３−２−０〜２−３−２−３からの割り込み通知があり、その割り込み通知がハッシュ値と異なる場合には、制御結果をハッシュ値と同じ値として、選択回路管理テーブル２−８へ登録を行う。この場合には、選択回路２−２−１、２−２−２は、制御結果に従った出力先である物理ＩＦ２−５−１、２−５−２のいずれかへパケット送信を行うことになる。
【００３５】
また、選択回路制御部２−７は、物理ＩＦ２−５−１、２−５−２からリンクダウンの通知を受けた場合には、出力先の物理ＩＦ２−５−１、２−５−２のハッシュ値、制御結果が該当物理ＩＦのものに対して選択回路管理テーブル２−８からテーブル削除する。
選択回路管理テーブル２−８は、選択回路２−２−１、２−２−２の経路選択に必要な情報として、少なくとも、ハッシュ値、制御結果、ハッシュ演算Ｋｅｙ、パケットの優先度、及びタイマ値を保持する。
【００３６】
なお、図１における選択回路２−２−１、２−２−２、バッファ回路２−３−１−０〜２−３−１−３、２−３−２−０〜２−３−２−３、調停回路２−４−１、２−４−２、物理ＩＦ２−５−１、２−５−２の数は例示にすぎず、図示された数に限定されない。例えば、図１では、物理ＩＦ２−５−１、２−５−２を２つとしているが、物理ＩＦは３つ以上としてもよい。また、優先度を４つとしているが、１つ、あるいは２つ以上としてもよく、優先度の数値については任意とする。また、選択回路２−２−１、２−２−２については、論理上２つで記載しているが、機能ブロックとしては１つとしてもよい。
【００３７】
図２は、第一実施形態による、選択回路管理テーブル２−８の構成を示す概念図である。図２において、選択回路管理テーブル２−８は、テーブル情報として、少なくとも、ハッシュ値、制御結果、ハッシュ演算Ｋｅｙ、パケットの優先度、及びタイマを有する。ハッシュ値は、パケットが送られる選択回路のＩＤを表す。制御結果は、選択回路通過後の対象物理ＩＦを示す。ハッシュ演算Ｋｅｙは、一例として送信ＩＰアドレスと受信ＩＰアドレスとしている。ハッシュ演算に使用するＫｅｙは任意とする。
【００３８】
パケットの優先度は、装置内で個別につけた優先度でも、一般的に使用されるＣｏＳやＴｏＳの値（パケットのヘッダに登録されている）を用いてもよい。タイマの値は、テーブルに登録されたフローの最終受信パケットからの時間である。タイマが所定の閾値に達すると、対応する情報（ハッシュ値、制御結果、ハッシュ演算Ｋｅｙ、優先度）は消去される。
【００３９】
また、選択回路＃１テーブル２−８−１は、選択回路管理テーブル２−８の情報から、ハッシュ値が「１」となる情報（制御結果、ハッシュ演算Ｋｅｙ、優先度）を抜き出したものである。選択回路＃２テーブル２−８−２は、選択回路管理テーブル２−８の情報から、ハッシュ値が「２」となる情報（制御結果、ハッシュ演算Ｋｅｙ、優先度）を抜き出したものである。
なお、図２においては、テーブル情報の一例として示されており、フロー識別を行うことが可能であれば、他の実施形態でもよい。
【００４０】
次に、第一実施形態の動作について説明する。
図３は、第一実施形態の動作（主信号の出力先物理ＩＦ決定処理）を説明するためのフローチャートである。図において、ハッシュ演算回路２−１にパケットの受信が行われると（ステップＳ１）、ハッシュ演算回路２−１は、ハッシュ演算Ｋｅｙ（例えば、送信ＩＰアドレスと受信ＩＰアドレス）を用いてハッシュ演算を行い、得られたハッシュ値に対応する、出力先の選択回路２−２−ｉ（ｉ＝１or２）を決定し、対応する制御結果を用いて、出力先の物理ＩＦ２−５−ｉを決定し、受信パケットを該当となる選択回路２−２−ｉへ出力するとともに、ハッシュ演算に使用した演算Ｋｅｙ、優先度、制御情報を、選択回路制御部２−７へ出力する（ステップＳ２）。
【００４１】
次に、選択回路２−２−ｉは、選択回路制御部２−７からの制御結果と優先度とに従って、受信パケットを、対応するバッファ回路２−３−ｉ−ｊ（ｊ＝０〜３：優先度）へ送る（ステップＳ３）。次に、バッファ回路２−３−ｉ−ｊは、受信パケットのバッファリングを行い、バッファ量が閾値を超えた場合には、選択回路制御部２−７へ通知する（ステップＳ４）。調停回路２−４−ｉは、バッファ回路２−３−ｉ−ｊの優先度に従って、バッファ回路２−３−ｉ−ｊのパケットを引き取り、物理ＩＦ２−５−ｉへ送付する（ステップＳ５）。次に、物理ＩＦ２−５−ｉは、調停回路２−４−ｉからパケットを受け取り、外部への出力を行い、また、物理ＩＦ２−５−ｉのリンクダウン、及びリンクアップ時に選択回路制御部２−７への割り込み通知を行う（ステップＳ６、Ｓ７）。
【００４２】
図４は、第一実施形態による選択回路制御部２−７の選択回路管理テーブル２−８へのテーブル登録動作を説明するためのフローチャートである。選択回路制御部２−７は、ハッシュ演算回路２−１から優先度、ハッシュ値、ハッシュ演算Ｋｅｙを受け取る（ステップＳ１０）。選択回路制御部２−７は、ハッシュ演算回路２−１からの情報と選択回路管理テーブル２−８の情報との比較を行い、既にテーブル登録が行われているか否かを判定する（ステップＳ１１）。そして、既にテーブル登録が行われている場合には（ステップＳ１１のＹＥＳ）、該当フローのタイマの値を初期値（一例として「０」）に戻し（ステップＳ１２）、処理終了となる（ステップＳ１３）。
【００４３】
一方、テーブル登録が行われていない場合には（ステップＳ１１のＮＯ）、選択回路制御部２−７は、バッファ回路２−３−ｉ−ｊからの割り込み通知が発生しているか否かを判定する（ステップＳ１４）。そして、割り込み通知が発生している場合には（ステップＳ１４のＹＥＳ）、新しく登録しようとしているハッシュ値と割り込み通知の物理ＩＦ（のＩＤ）とが一致しているか否かを判定する（ステップＳ１５）。
【００４４】
そして、ハッシュ値と割り込み通知の物理ＩＦ（のＩＤ）とが一致している場合には（ステップS１５のＹＥＳ）、選択回路制御部２−７は、他の割り込み通知の優先度との比較を行い、出力先の物理ＩＦの決定を行い、出力先の物理ＩＦ（のＩＤ）を制御結果として、選択回路管理テーブル２−８へ新規テーブル登録を行う（ステップＳ１６）。
【００４５】
一方、バッファ回路２−３−ｉ−ｊからの割り込みがない場合や（ステップＳ１４のＮＯ）、ハッシュ値と割り込み通知の物理ＩＦ（のＩＤ）とが一致しない場合には（ステップＳ１５のＮＯ）、選択回路制御部２−７は、制御結果をハッシュ値と同一の値にして、選択回路管理テーブル２−８へ新規テーブル登録を行う（ステップＳ１７）。
そして、選択回路制御部２−７は、新規テーブル登録を行った後、変更された部分のみ、または全テーブル情報を選択回路２−２−ｉへ通知し（ステップＳ１８）、処理終了となる（ステップS１３）。
【００４６】
図５は、第一実施形態による、選択回路管理テーブル２−８の更新動作（ステップＳ１７）を説明するための概念図である。既にいくつかのフローが選択回路管理テーブル２−８に登録されている場合を想定する（５−１）。ここで、選択回路制御部２−７は、ハッシュ値、ハッシュ演算Ｋｅｙ、優先度情報（５−２）を受け取ると、選択回路管理テーブル２−８への新規登録を行う（５−３）。
【００４７】
図６は、第一実施形態による、選択回路管理テーブル２−８の更新動作（ステップＳ１２）を説明するための概念図である。既にいくつかのフローが選択回路管理テーブル２−８に登録されている場合を想定する（５−４）。ここで、選択回路制御部２−７は、ハッシュ値、ハッシュ演算Ｋｅｙ、優先度情報（５−５）を受け取る。この場合、同一フローが選択回路管理テーブル２−８へ登録済みのため（太枠を参照）、タイマの値を初期値（一例として「０」）に戻す（５−６）。
【００４８】
図７は、第一実施形態による、選択回路管理テーブル２−８の更新動作（ステップＳ１６）を説明するための概念図である。既にいくつかのフローが選択回路管理テーブル２−８に登録されている場合を想定する（６−１）。ここで、選択回路制御部２−７は、バッファ回路２−３−１−３（物理ＩＦ２−５−１、優先度「３」のバッファ）からの割り込み通知が発生した後に、ハッシュ値、ハッシュ演算Ｋｅｙ、優先度情報（６−２）を受け取る。この場合、物理ＩＦ２−５−１側で割り込み通知が上がっていることから、制御結果を「２」として選択回路管理テーブル２−８への新規登録を行う（６−３）。
【００４９】
図８は、第一実施形態による、物理ＩＦ２−５−ｉから割り込み通知発生時の選択回路管理テーブル２−８の削除動作を説明するための概念図である。既にいくつかのフローが選択回路管理テーブル２−８に登録されている場合を想定する（７−１）。ここで、選択回路制御部２−７は、物理ＩＦ２−５−２（物理ＩＦ＃２）からのリンクダウン情報の割り込み通知が発生した場合、選択回路管理テーブル２−８において、出力先物理ＩＦのハッシュ値、制御結果が「２」の情報についてテーブル削除を行う（７−２）。
【００５０】
図９は、第一実施形態において、図４に示すフローチャート（ステップＳ９）において複数の割り込みが発生している場合の動作について説明するための概念図である。物理ＩＦ＃１では、優先度「０」の割り込みが発生（９−１）、物理ＩＦ＃２では、優先度「２」の割り込みが発生（９−２）している場合を想定する。
【００５１】
このとき、物理ＩＦ（＃３で優先度「１」の割り込みが発生した場合（９−３）には、割り込みの発生していない物理ＩＦが存在しないため、割り込み発生の優先度の比較を行う。物理ＩＦ＃１では、優先度「０」、物理ＩＦ＃２では、優先度「２」、物理ＩＦ＃３では、優先度「１」であるため、最も優先度の低い物理ＩＦ＃１を使用可能ポートと判断し、制御結果は、物理ＩＦ＃１を指定する。
【００５２】
なお、図９に示すテーブル登録例は一例であり、例えば、割り込みの発生していない物理ＩＦが存在しない場合には、制御結果をハッシュ値と一致させるようにしてもよい。また、割り込みの発生していない物理ＩＦが存在しない場合には、固定的に特定の物理ＩＦを指定するなど、振り分け論理は任意とする。
【００５３】
上述した第一実施形態によれば、以下に示す効果を奏する。
第１の効果は、物理ＩＦ単位に優先度数分のバッファを持ち、バッファの閾値を越える場合には、優先度に従ったフィードバックを行って出力先ポートの変更を行うことで、リンクアグリゲーションにおいても、優先制御を行うことができる。
第２の効果は、出力先ポートの変更をフロー単位で実施しているので、フローの順序性を守ることができる。
第３の効果は、ハッシュ値に偏りが発生したとしても、動的に出力先ポートの変更をしているので、ハッシュ演算の方式変更を必要としない。
【００５４】
〈変形例〉
次に、第一実施形態の変形例について説明する。
図１０は、第一実施形態の変形例による、選択回路管理テーブル２−８の構成を示す概念図である。第一実施形態の変形例として、その基本的構成は上記の通りであるが、選択回路＃１テーブル２−８−１、選択回路＃２テーブル２−８−２についてさらに工夫している。
【００５５】
図１０において、選択回路＃１テーブル２−８−１は、選択回路管理テーブル２−８において、ハッシュ値と制御結果とが異なる情報のみを有する（選択回路管理テーブル２−８の６行目のみ、ハッシュ値と制御結果とが異なるため、この情報のみ選択回路＃１テーブル２−８−１は保有する）。選択回路２−２−１、２−２−２は、ハッシュ値に従った割り振りが既に行われているため、テーブル情報を持たなくても、出力先物理ＩＦ情報を持っていることになる。
【００５６】
そのため、選択回路２−２−１、２−２−２では、選択回路＃１テーブル２−８−１、＃２テーブル２−８−２の検索を行って、該当する情報があれば、該当となる制御結果で示される出力先へ該当フローを出力する。一方、該当する情報がなければ、ハッシュ値に従った物理ＩＦ（例えば、図１において選択回路２−２−１であれば、物理ＩＦ２−５−１）への送信を行うようにすればよい。
上述した第一実施形態の変形例によれば、選択回路＃１テーブル２−８−１の情報量を少なくすることができ、検索に必要とする時間を短縮することができる。
【００５７】
［第二実施形態］
次に、装置出力部の第二実施形態について説明する。
上述した第一実施形態では、タイマ値「０」を基本として、一定値まで上がった場合には、該当フローが来なくなったものとして選択回路管理テーブル２−８から削除することで管理を実施する。これに対して、第二実施形態では、選択回路管理テーブル２−８のテーブル削除動作を、ハッシュ演算回路２−１通過から物理ＩＦ２−５−１、２−５−２から出力されるまでのパケット数をカウントするカウンタを用いる点を特徴としている。すなわち、以下に示すようなインクリメントからデクリメントの間がカウントの対象となる。
【００５８】
第二実施形態では、選択回路管理テーブル２−８に対するテーブル削除にカウンタ値を用いる。選択回路制御部２−７は、ハッシュ演算回路２−１にパケットが入ると、該当フローのカウンタをインクリメントし、物理ＩＦ２−５−１、２−５−２からパケットが出力されると、該当フローのカウンタをデクリメントする。
【００５９】
カウンタ値が「０」の場合には、既に装置出力部２には該当フローがないことを示すため、テーブル削除が可能になる。また、バッファ回路２−３−１−０〜２−３−１−３、２−３−２−０〜２−３−２−３に空きのない場合（割り込み通知が上がっている場合）には、パケットの廃棄が行われるため、該当フローに対するカウンタのインクリメントを行わない。これは、輻輳が発生した場合に、既にテーブル登録が行われていたとしても、装置出力部２からのパケットがなくなれば、すぐにテーブル削除が可能になり、帯域に余裕のあるポートへの付け替えができることを示している。
【００６０】
図１１は、第二実施形態による、選択回路管理テーブル２−８、選択回路＃１テーブル２−８−１、選択回路＃２テーブル２−８−２の構成を示す概念図である。第二実施形態では、選択回路管理テーブル２−８は、タイマに代えて、カウンタを有する。上述したように、選択回路制御部２−７は、ハッシュ演算回路２−１にパケットが入ると、該当フローのカウンタをインクリメントし、物理ＩＦ２−５−１、２−５−２からパケットが出力されると、該当フローのカウンタをデクリメントする。
【００６１】
図１２及び図１３は、第二実施形態の動作（主信号の出力先物理ＩＦ決定処理）を説明するためのフローチャートである。図１２及び図１３では、選択回路管理テーブル２−８への登録、及びフローカウンタのカウントアップ動作を、ステップＳ２０〜Ｓ２９で示し、選択回路管理テーブル２−８からの削除、及びフローカウンタのカウントダウン動作を、ステップＳ３０〜Ｓ３４で示している。また、図１４から図１９は、第二実施形態の動作を説明するための選択回路管理テーブル２−８の変化を示す概念図である。
【００６２】
まず、ステップＳ２０〜Ｓ２９までの動作について説明する。
選択回路制御部２−７は、ハッシュ演算回路２−１がパケットを受信すると、ハッシュ演算Ｋｅｙ、ハッシュ値、優先度を、ハッシュ演算回路２−１から受け取る（ステップＳ２０）。次に、選択回路制御部２−７は、該当フローが選択回路管理テーブル２−８に登録されているか否かを判定する（ステップＳ２１）。そして、選択回路管理テーブル２−８に登録されている場合には（ステップＳ２１のＹＥＳ）、バッファ回路２−３−１−０〜２−３−１−３、２−３−２−０〜２−３−２−３の割り込み通知があるか否かを判定する（ステップＳ２２）。
【００６３】
そして、バッファ回路２−３−１−０〜２−３−１−３、２−３−２−０〜２−３−２−３の割り込み通知がある場合には（ステップＳ２２のＹＥＳ）、ハッシュ値と割り込み通知の物理ＩＦ（のＩＤ）とが一致しているか否かを判定する（ステップＳ２３）。そして、ハッシュ値と割り込み通知の物理ＩＦ（のＩＤ）とが一致している場合には（ステップＳ２３のＹＥＳ）、該当パケットは、バッファ回路２−３−１−０〜２−３−１−３、２−３−２−０〜２−３−２−３への書き込みが行えず廃棄される。このため、該当フローへのカウントアップは行わない。この場合には、図１４に示すように、選択回路管理テーブル２−８の更新は行わない。
【００６４】
一方、バッファ回路２−３−１−０〜２−３−１−３、２−３−２−０〜２−３−２−３の割り込み通知がない場合（ステップＳ２２のＮＯ）、あるいは、割り込み通知があったものの、ハッシュ値と割り込み通知の物理ＩＦ（のＩＤ）とが一致していない場合には（ステップＳ２３のＮＯ）、該当パケットは、バッファ回路２−３−１−０〜２−３−１−３、２−３−２−０〜２−３−２−３への書き込みが行え、装置出力部２の該当フローのパケット数が増えることから、図１５に示すように、該当フローのカウントアップを行う（ステップＳ２４）。この場合、選択回路管理テーブル２−８の更新は行われるが、新規テーブルの追加、及びテーブル削除ではないため、選択回路２−２−１、２−２−２への通知は行わない。
【００６５】
また、該当フローが選択回路管理テーブル２−８に登録されていない場合には（ステップＳ２１のＮＯ）、バッファ回路２−３−１−０〜２−３−１−３、２−３−２−０〜２−３−２−３の割り込み通知があるか否かを判定する（ステップＳ２５）。そして、バッファ回路２−３−１−０〜２−３−１−３、２−３−２−０〜２−３−２−３の割り込み通知がある場合には（ステップＳ２５のＹＥＳ）、ハッシュ値と物理ＩＦ（のＩＤ）とが一致しているか否かを判定する（ステップＳ２６）。
【００６６】
そして、ハッシュ値と物理ＩＦ（のＩＤ）とが一致している場合には（ステップＳ２６のＹＥＳ）、他の割り込み通知の優先度との比較を行い、出力先の物理ＩＦを決定し、図１６に示すように、得られた出力先の物理ＩＦ（のＩＤ）を、制御結果として新規テーブル登録を行う（ステップＳ２７）。このとき、図１６に示すように、カウンタ値に「１」を登録する。また、新規テーブル登録が行われたため、選択回路２−２−１、２−２−２へテーブル登録の通知を行う（ステップＳ２９）。
【００６７】
一方、バッファ回路２−３−１−０〜２−３−１−３、２−３−２−０〜２−３−２−３の割り込み通知がない場合（ステップＳ２５のＮＯ）、あるいは、割り込み通知があったものの、ハッシュ値と物理ＩＦ（のＩＤ）とが一致していない場合には（ステップＳ２６のＮＯ）、該当パケットは、バッファ回路２−３−１−０〜２−３−１−３、２−３−２−０〜２−３−２−３への書き込みが行えることから、図１７に示すように、制御結果をハッシュ値と同一の値にして新規テーブル登録を行う（ステップＳ２８）。このとき、図１７に示すように、カウンタ値に「１」を登録する。また、新規テーブル登録が行われたため、選択回路２−２−１、２−２−２へテーブル登録の通知を行う（ステップＳ２９）。
【００６８】
次に、図１３のステップＳ３０〜Ｓ３４までの動作について説明する。
選択回路制御部２−７は、物理ＩＦ２−５−１、２−５−２からパケットの送信が行われると、送信情報を受け取る（ステップＳ３０）。選択回路制御部２−７は、受け取った情報に従って、図１８、図１９に示すように、該当フローのカウンタ値のデクリメントを行う（ステップＳ３１）。このとき、該当フローのカウンタ値が「０」になったか否かを判定する（ステップＳ３２）。
【００６９】
そして、該当フローのカウンタ値が「０」の場合には（ステップＳ３２のＹＥＳ）、図１８に示すように、選択回路管理テーブル２−８から該当フローの削除を行い、選択回路２−２−１、２−２−２への通知を行う（ステップＳ３３）。このとき、図１８に示すように、選択回路＃１テーブル２−８−１からも削除を行い、処理終了となる（ステップＳ３４）。
一方、該当フローのカウンタ値が「０」でない場合には（ステップＳ３２のＮＯ）、図１９に示すように、選択回路管理テーブル２−８の更新を行わず、処理終了となる（ステップＳ３４）。
【００７０】
上述した第二実施形態によれば、装置出力部２のパケットの有無で行うことができるため、選択回路管理テーブル２−８に登録するフロー数を少なくすることができる。また、テーブル削除をフローの入れ替わりなく実現することが可能であり、かつ、テーブル削除後には、新規フローとして取り扱うことができ、帯域に余裕のあるポートへの割り当てを迅速に行うことができる。
〈変形例〉
第二実施形態は、第一実施形態と同様に変形して構成されても良い。
【００７１】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【００７２】
２…装置出力部，  ２−１…ハッシュ演算回路，  ２−２−１，２−２−２…選択回路，  ２−３−１−０〜２−３−１−３，２−３−２−０〜２−３−２−３…バッファ回路，  ２−４−１，２−４−２…調停回路，  ２−５−１，２−５−２…物理ＩＦ，  ２−６…リンクアグリゲーション，  ２−７…選択回路制御部，  ２−８…選択回路管理テーブル，  ２−８−１…選択回路＃１テーブル，  ２−８−２…選択回路＃２テーブル
【図１】
2012205048.tif 000003
【図２】
2012205048.tif 000004
【図３】
2012205048.tif 000005
【図４】
2012205048.tif 000006
【図５】
2012205048.tif 000007
【図６】
2012205048.tif 000008
【図７】
2012205048.tif 000009
【図８】
2012205048.tif 000010
【図９】
2012205048.tif 000011
【図１０】
2012205048.tif 000012
【図１１】
2012205048.tif 000013
【図１２】
2012205048.tif 000014
【図１３】
2012205048.tif 000015
【図１４】
2012205048.tif 000016
【図１５】
2012205048.tif 000017
【図１６】
2012205048.tif 000018
【図１７】
2012205048.tif 000019
【図１８】
2012205048.tif 000020
【図１９】
2012205048.tif 000021
【図２０】
2012205048.tif 000022