(57)【特許請求の範囲】
【請求項１】
受信したパケットをその優先度別に分配するパケット分配部と、
前記優先度ごとに対応して備えられ、前記パケット分配部により分配されたパケットのうち、自己に対応する優先度のパケットを格納する複数のバッファと、
前記複数のバッファごとに対応し、自己に対応するバッファから転送されるパケットを保持する複数の優先制御用バケットと、
自己に対して転送されるパケットを保持する少なくとも１つの廃棄処理用バケットと、
複数のプロセッサコアを備えて成るマルチコアプロセッサとを備え、
前記マルチコアプロセッサは、
前記バッファにおけるパケットの格納状態に基づいて、輻輳状態に至らないようにするための輻輳回避処理が必要であるか否かについて判定し、前記輻輳回避処理が必要であると判定された場合に、前記複数のバッファのうちの輻輳回避処理対応バッファに格納されたパケットの転送先を、当該輻輳回避処理対応バッファに対応の前記優先制御用バケットから前記廃棄処理用バケットに切り替えるバッファ状態監視プロセッサコアと、
前記優先制御用バケットにて保持されているパケットを取り込んで分配する優先制御プロセッサコアと、
前記廃棄処理用バケットにパケットが保持されていない場合には、前記優先制御プロセッサコアから分配されたパケットのフォワーディング処理のみを実行し、前記廃棄処理用バケットにパケットが保持されている場合には、前記フォワーディング処理と前記廃棄処理用バケットに保持されたパケットを廃棄するパケット廃棄処理を実行する複数のフォワーディング処理プロセッサコアとを備える、
ことを特徴とするパケット交換装置。
【請求項２】
前記バッファ状態監視プロセッサコアは、前記廃棄処理用バケットにパケットが保持されている場合には、前記複数のフォワーディング処理プロセッサコアとともに、前記廃棄処理用バケットに保持されたパケットを廃棄するパケット廃棄処理を実行する、
ことを特徴とする請求項１に記載のパケット交換装置。
【請求項３】
前記輻輳回避処理対応バッファは、前記複数のバッファにおいて優先度の低い順に選択された少なくとも１つのバッファである、
ことを特徴とする請求項１または請求項２に記載のパケット交換装置。
【請求項４】
前記バッファ状態監視プロセッサコアは、前記輻輳回避処理対応バッファにおけるパケットの格納状態に基づいて前記輻輳回避処理が必要であるか否かについて判定する、
ことを特徴とする請求項３に記載のパケット交換装置。
【請求項５】
前記フォワーディング処理プロセッサコアは、予め設定された実行比率に応じた頻度で前記フォワーディング処理と前記パケット廃棄処理を実行する、
ことを特徴とする請求項１乃至請求項４のいずれかに記載のパケット交換装置。
【請求項６】
受信されたパケットが優先度別に格納されるバッファにおけるパケットの格納状態に基づいて、輻輳状態に至らないようにするための輻輳回避処理が必要であるか否かについて判定し、前記輻輳回避処理が必要であると判定された場合に、複数の前記バッファのうちの輻輳回避処理対応バッファに格納されたパケットの転送先を、当該輻輳回避処理対応バッファ対応の優先制御用バケットから廃棄処理用バケットに切り替えるバッファ状態監視プロセッサコアと、
前記優先制御用バケットにて保持されているパケットを取り込んで分配する優先制御プロセッサコアと、
前記廃棄処理用バケットにパケットが保持されていない場合には、前記優先制御プロセッサコアから自己に対して分配されたパケットのフォワーディング処理のみを実行し、前記廃棄処理用バケットにパケットが保持されている場合には、前記フォワーディング処理と前記廃棄処理用バケットに保持されたパケットを廃棄するパケット廃棄処理を実行する複数のフォワーディング処理プロセッサコアと、
を備えることを特徴とするマルチコアプロセッサ。
【請求項７】
受信したパケットをその優先度別に分配させる受信パケット分配手順と、
前記優先度ごとに対応して備えられる複数のバッファの各々に、前記受信パケット分配手順により分配された対応の優先度のパケットを格納するバッファリング手順と、
前記複数のバッファごとに対応して備えられる複数の優先制御用バケットに、対応のバッファから転送されるパケットを保持させる優先制御対応パケット保持手順と、
廃棄処理用バケットに転送されてきたパケットを保持させる廃棄処理対応パケット保持手順と、
マルチコアプロセッサにおけるバッファ状態監視プロセッサコによって、前記バッファにおけるパケットの格納状態に基づいて、輻輳状態に至らないようにするための輻輳回避処理が必要であるか否かについて判定し、前記輻輳回避処理が必要であると判定された場合に、前記複数のバッファのうちの輻輳回避処理対応バッファに格納されたパケットの転送先を、当該輻輳回避処理対応バッファに対応の前記優先制御用バケットから前記廃棄処理用バケットに切り替える輻輳回避制御手順と、
前記マルチコアプロセッサにおける優先制御プロセッサコアによって、前記優先制御用バケットにて保持されているパケットを取り込んだ後に分配する優先制御対応分配手順と、
前記マルチコアプロセッサにおける複数のフォワーディング処理プロセッサコアによって、前記廃棄処理用バケットにパケットが保持されていない場合には、前記優先制御プロセッサコアから分配されたパケットのフォワーディング処理のみを実行し、前記廃棄処理用バケットにパケットが保持されている場合には、前記フォワーディング処理と前記廃棄処理用バケットに保持されたパケットを廃棄するパケット廃棄処理を実行するパケット処理手順と、
を備えることを特徴とするパケット交換方法。
【請求項８】
マルチコアプロセッサのパケット制御方法であって、
前記マルチコアプロセッサにおけるバッファ状態監視プロセッサコアによって、受信されたパケットが優先度別に格納されるバッファにおけるパケットの格納状態に基づいて、輻輳状態に至らないようにするための輻輳回避処理が必要であるか否かについて判定し、前記輻輳回避処理が必要であると判定された場合に、複数の前記バッファのうちの輻輳回避処理対応バッファに格納されたパケットの転送先を、当該輻輳回避処理対応バッファ対応の優先制御用バケットから廃棄処理用バケットに切り替える輻輳回避制御手順と、
前記マルチコアプロセッサにおける優先制御プロセッサコアによって、前記優先制御用バケットにて保持されているパケットを取り込んだ後に分配する優先制御対応分配手順と、
前記マルチコアプロセッサにおける複数のフォワーディング処理プロセッサコアによって、前記廃棄処理用バケットにパケットが保持されていない場合には、前記優先制御プロセッサコアから分配されたパケットのフォワーディング処理のみを実行し、前記廃棄処理用バケットにパケットが保持されている場合には、前記フォワーディング処理と前記廃棄処理用バケットに保持されたパケットを廃棄するパケット廃棄処理を実行するパケット処理手順と、
を備えることを特徴とするパケット制御方法。
【請求項９】
マルチコアプロセッサにおけるバッファ状態監視プロセッサコアに、受信されたパケットが優先度別に格納されるバッファにおけるパケットの格納状態に基づいて、輻輳状態に至らないようにするための輻輳回避処理が必要であるか否かについて判定し、前記輻輳回避処理が必要であると判定された場合に、複数の前記バッファのうちの輻輳回避処理対応バッファに格納されたパケットの転送先を、当該輻輳回避処理対応バッファ対応の優先制御用バケットから廃棄処理用バケットに切り替える輻輳回避制御手順を実行させ、
前記マルチコアプロセッサにおける優先制御プロセッサコアに、前記優先制御用バケットにて保持されているパケットを取り込んだ後に分配する優先制御対応分配手順を実行させ、
前記マルチコアプロセッサにおける複数のフォワーディング処理プロセッサコアに、前記廃棄処理用バケットにパケットが保持されていない場合には、前記優先制御プロセッサコアから分配されたパケットのフォワーディング処理のみを実行し、前記廃棄処理用バケットにパケットが保持されている場合には、前記フォワーディング処理と前記廃棄処理用バケットに保持されたパケットを廃棄するパケット廃棄処理を行うパケット処理手順を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケットを中継するパケット交換装置と、当該パケット交換装置において備えられるマルチコアプロセッサに関する。また、パケット交換装置におけるパケット交換方法と、マルチコアプロセッサにおけるパケット制御方法に関する。さらに、当該マルチコアプロセッサに実行させるプログラムに関する。当該パケット制御装置に実行させるプログラムに関する。
【背景技術】
【０００２】
プロセッサとして、複数のプロセッサコアを１つのパッケージに集積したマルチプロセッサコアが知られている。マルチプロセッサコアにおける各プロセッサコアは、基本的に他のプロセッサコアには影響されることなく動作可能とされている。これにより、特定の処理を多数のプロセッサコアで分担させるように処理を実行させることで、処理性能が向上するという利点を有している。
【０００３】
例えば特許文献１においては次のような技術が記載されている。つまり、マルチプロセッサシステムにおいて機能的に関連づけられる複数個のプロセッサごとに複数の障害検出グループに分けるとともに、１つの障害情報処理装置をシステムバス経由で接続する。そのうえで、障害検出グループで中枢となるプロセッサが自己およびグループ内の他のプロセッサの障害検出を行い、障害が検出された場合には障害情報を障害情報処理装置に送る。これに応じて、障害情報処理装置は、システムにおけるすべてのプロセッサについての障害を検出して処理を行うというものである。
【０００４】
ルータなどのようにパケット交換を行う装置においては、ＱｏＳ（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）機能の１つとして優先制御が行われる。例えば、ファームウェアにより優先制御を行う構成を採るにあたっては、パケットの優先度ごとに対応させるようにして複数のバッファを備える。そのうえで、例えばＷＲＲ（Ｗｅｉｇｈｔｅｄ  Ｒｏｕｎｄ  Ｒｏｂｉｎ：加重ラウンドロビン)方式にしたがって各バッファからパケットを取り込むようにする。これによって優先制御が実現されるようになっている。
【０００５】
しかし、上記の優先制御の構成においては、複数のバッファのうち少なくとも１つが輻輳状態となった場合には、輻輳状態から回復させるために、すべてのバッファに対してパケットを転送することなく廃棄するようにハードウェアが動作する。この動作では、少なくとも１つの受信パケットバッファに輻輳が発生すると、ファームウェアによりパケットを取り込むより以前の段階でパケットの廃棄が発生することになる。このため、ファームウェアによる優先制御が実行できなくなってしまうという不具合が生じる。
【０００６】
この問題を回避するための対策として、ファームウェアによって受信パケットバッファの輻輳状態を回避するように構成することが考えられ、具体的には次のような構成が知られている。つまり、パケットフォワーディング処理を実行させるプロセッサとしてマルチコアプロセッサを採用する。そして、マルチコアプロセッサにおける複数のプロセッサコアのうち、特定のプロセッサコアに輻輳回避処理を実行させ、これ以外の他のプロセッサコアにパケットフォワーディング処理を実行させるように構成するというものである。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平５−１３４９９８号公報（図１）
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、優先制御に関して上記のようにマルチコアプロセッサにおけるプロセッサコアの役割を分担させる構成を採る場合には、次のような問題を抱えることになる。例えば、マルチコアプロセッサにおいて、パケットフォワーディング処理用のプロセッサコアの数を多くし、輻輳回避処理用のプロセッサコアの数を少なくするように構成したとする。この場合、パケットフォワーディング処理については良好な性能を得ることが可能になるが、輻輳回避処理用のプロセッサの負荷が増加して必要な輻輳回避性能を満足できなくなる可能性がある。これに対して、パケットフォワーディング処理用のプロセッサコアの数を少なくし、輻輳回避処理用のプロセッサコアの数を多く構成したとする。この場合には、十分な輻輳回避処理性能が得られるが、パケットフォワーディング処理の性能が低下してしまう可能性が高くなってしまう。このように、優先制御に関しては、マルチコアプロセッサの利点を十分に発揮させることが難しい。つまり、パケットフォワーディング処理性能と輻輳回避処理性能がトレードオフの関係となり、両者について高い性能を得ることが非常に難しいという問題を抱えている。
【０００９】
そこで本発明は、上述の課題を解決することのできる、パケット交換装置、マルチコアプロセッサ、パケット交換方法、パケット制御方法、プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、受信したパケットをその優先度別に分配するパケット分配部と、前記優先度ごとに対応して備えられ、前記パケット分配部により分配されたパケットのうち、自己に対応する優先度のパケットを格納する複数のバッファと、前記複数のバッファごとに対応し、自己に対応するバッファから転送されるパケットを保持する複数の優先制御用バケットと、自己に対して転送されるパケットを保持する少なくとも１つの廃棄処理用バケットと、複数のプロセッサコアを備えて成るマルチコアプロセッサとを備え、前記マルチコアプロセッサは、前記バッファにおけるパケットの格納状態に基づいて、輻輳状態に至らないようにするための輻輳回避処理が必要であるか否かについて判定し、前記輻輳回避処理が必要であると判定された場合に、前記複数のバッファのうちの輻輳回避処理対応バッファに格納されたパケットの転送先を、当該輻輳回避処理対応バッファに対応の前記優先制御用バケットから前記廃棄処理用バケットに切り替えるバッファ状態監視プロセッサコアと、前記優先制御用バケットにて保持されているパケットを取り込んで分配する優先制御プロセッサコアと、前記廃棄処理用バケットにパケットが保持されていない場合には、前記優先制御プロセッサコアから分配されたパケットのフォワーディング処理のみを実行し、前記廃棄処理用バケットにパケットが保持されている場合には、前記フォワーディング処理と前記廃棄処理用バケットに保持されたパケットを廃棄するパケット廃棄処理を実行する複数のフォワーディング処理プロセッサコアとを備えることを特徴とするパケット交換装置である。
【００１１】
また、本発明は、受信されたパケットが優先度別に格納されるバッファにおけるパケットの格納状態に基づいて、輻輳状態に至らないようにするための輻輳回避処理が必要であるか否かについて判定し、前記輻輳回避処理が必要であると判定された場合に、複数の前記バッファのうちの輻輳回避処理対応バッファに格納されたパケットの転送先を、当該輻輳回避処理対応バッファ対応の優先制御用バケットから廃棄処理用バケットに切り替えるバッファ状態監視プロセッサコアと、前記優先制御用バケットにて保持されているパケットを取り込んで分配する優先制御プロセッサコアと、前記廃棄処理用バケットにパケットが保持されていない場合には、前記優先制御プロセッサコアから自己に対して分配されたパケットのフォワーディング処理のみを実行し、前記廃棄処理用バケットにパケットが保持されている場合には、前記フォワーディング処理と前記廃棄処理用バケットに保持されたパケットを廃棄するパケット廃棄処理を実行する複数のフォワーディング処理プロセッサコアとを備えることを特徴とするマルチコアプロセッサである。
【００１２】
また、本発明は、受信したパケットをその優先度別に分配させる受信パケット分配手順と、前記優先度ごとに対応して備えられる複数のバッファの各々に、前記受信パケット分配手順により分配された対応の優先度のパケットを格納するバッファリング手順と、前記複数のバッファごとに対応して備えられる複数の優先制御用バケットに、対応のバッファから転送されるパケットを保持させる優先制御対応パケット保持手順と、廃棄処理用バケットに転送されてきたパケットを保持させる廃棄処理対応パケット保持手順と、マルチコアプロセッサにおけるバッファ状態監視プロセッサコによって、前記バッファにおけるパケットの格納状態に基づいて、輻輳状態に至らないようにするための輻輳回避処理が必要であるか否かについて判定し、前記輻輳回避処理が必要であると判定された場合に、前記複数のバッファのうちの輻輳回避処理対応バッファに格納されたパケットの転送先を、当該輻輳回避処理対応バッファに対応の前記優先制御用バケットから前記廃棄処理用バケットに切り替える輻輳回避制御手順と、前記マルチコアプロセッサにおける優先制御プロセッサコアによって、前記優先制御用バケットにて保持されているパケットを取り込んだ後に分配する優先制御対応分配手順と、前記マルチコアプロセッサにおける複数のフォワーディング処理プロセッサコアによって、前記廃棄処理用バケットにパケットが保持されていない場合には、前記優先制御プロセッサコアから分配されたパケットのフォワーディング処理のみを実行し、前記廃棄処理用バケットにパケットが保持されている場合には、前記フォワーディング処理と前記廃棄処理用バケットに保持されたパケットを廃棄するパケット廃棄処理を実行するパケット処理手順とを備えることを特徴とするパケット交換方法である。
【００１３】
また、本発明は、マルチコアプロセッサのパケット制御方法であって、前記マルチコアプロセッサにおけるバッファ状態監視プロセッサコアによって、受信されたパケットが優先度別に格納されるバッファにおけるパケットの格納状態に基づいて、輻輳状態に至らないようにするための輻輳回避処理が必要であるか否かについて判定し、前記輻輳回避処理が必要であると判定された場合に、複数の前記バッファのうちの輻輳回避処理対応バッファに格納されたパケットの転送先を、当該輻輳回避処理対応バッファ対応の優先制御用バケットから廃棄処理用バケットに切り替える輻輳回避制御手順と、前記マルチコアプロセッサにおける優先制御プロセッサコアによって、前記優先制御用バケットにて保持されているパケットを取り込んだ後に分配する優先制御対応分配手順と、前記マルチコアプロセッサにおける複数のフォワーディング処理プロセッサコアによって、前記廃棄処理用バケットにパケットが保持されていない場合には、前記優先制御プロセッサコアから分配されたパケットのフォワーディング処理のみを実行し、前記廃棄処理用バケットにパケットが保持されている場合には、前記フォワーディング処理と前記廃棄処理用バケットに保持されたパケットを廃棄するパケット廃棄処理を実行するパケット処理手順とを備えることを特徴とするパケット制御方法である。
【００１４】
また、本発明は、マルチコアプロセッサにおけるバッファ状態監視プロセッサコアに、受信されたパケットが優先度別に格納されるバッファにおけるパケットの格納状態に基づいて、輻輳状態に至らないようにするための輻輳回避処理が必要であるか否かについて判定し、前記輻輳回避処理が必要であると判定された場合に、複数の前記バッファのうちの輻輳回避処理対応バッファに格納されたパケットの転送先を、当該輻輳回避処理対応バッファ対応の優先制御用バケットから廃棄処理用バケットに切り替える輻輳回避制御手順を実行させ、前記マルチコアプロセッサにおける優先制御プロセッサコアに、前記優先制御用バケットにて保持されているパケットを取り込んだ後に分配する優先制御対応分配手順を実行させ、前記マルチコアプロセッサにおける複数のフォワーディング処理プロセッサコアに、前記廃棄処理用バケットにパケットが保持されていない場合には、前記優先制御プロセッサコアから分配されたパケットのフォワーディング処理のみを実行し、前記廃棄処理用バケットにパケットが保持されている場合には、前記フォワーディング処理と前記廃棄処理用バケットに保持されたパケットを廃棄するパケット廃棄処理を行うパケット処理手順を実行させるためのプログラムである。
【発明の効果】
【００１５】
本発明によれば、マルチコアプロセッサを用いて優先制御を行うにあたり、パケットフォワーディング処理性能と輻輳回避処理性能の両者について良好な性能が得られ、マルチコアプロセッサの利点が十分に発揮される。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施の形態としてのパケット交換装置の構成例を示す図である。
【図２】本発明の実施の形態としてのパケット交換装置における、輻輳状態のときの動作例を示す図である。
【図３】本発明の実施の形態におけるパケット分散デバイスが実行する処理手順例を示す図である。
【図４】本発明の実施の形態におけるバッファ状態監視プロセッサコアが実行する処理手順例を示す図である。
【図５】受信パケットバッファが実行する処理手順例を示す図である。
【図６】パケット優先制御プロセッサコアの処理手順例を示す図である。
【図７】フォワーディング処理プロセッサコアの処理手順例を示す図である。
【発明を実施するための形態】
【００１７】
［パケット交換装置の構成］
図１は、本発明を実施するための形態（以下、実施の形態という）としてのパケット交換装置１の構成例を示すブロック図である。以降において、本実施の形態のパケット交換機１は、例えばルータなどに適用され、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）パケットの交換、中継を行うものであることを前提とする。なお、以降においてパケット交換装置１において入出力されるＩＰパケットについては単にパケットと称する。
【００１８】
図１に示すパケット交換装置１は、パケット分散デバイス（パケット分配部）１０、受信パケットバッファ２０、バケット部３０およびマルチコアプロセッサ４０を備えて成る。
【００１９】
パケット分散デバイス１０は、入力インターフェースから受信したパケットを受信パケットバッファ２０における複数のバッファ２１（第０バッファ２１−０乃至第Ｍバッファ２１−Ｍ）に分散するように受け渡す。この際、パケット分散デバイス１０は、受信したパケットに格納される優先情報が示す優先度にしたがって、パケットを受け渡すべきバッファ２１を決定する。
【００２０】
受信パケットバッファ２０は、図示するように（Ｍ＋１）個のバッファ２１（第０バッファ２１−０乃至第Ｍバッファ２１−Ｍ）を備え、パケット分散デバイス１０から受け渡されたパケットを格納する。第０バッファ２１−０乃至第Ｍバッファ２１−Ｍは、それぞれ、パケットに設定され優先度に対応付けられている。ここでは、第０バッファ２１−０が最高の優先度に対応しており、以降、第１バッファ２１−１から第Ｍバッファ２１−Ｍの順で優先度が低くなっていく。したがって、第Ｍバッファ２１−Ｍが最も低い優先度に対応することになる。
【００２１】
例えばパケット分散デバイス１０により、複数の入力インターフェースから入力された複数のパケット０、１・・・Ｍを受信しており、これらのパケットは、優先度の高い方から低い方にかけてパケット０、１・・・Ｍの順となっているものとする。この場合、パケット分散デバイス１０は、優先度が最も高いパケット０を第０バッファ２１−０に受け渡し、２番目の優先度のパケット１を第１バッファ２１−１に受け渡す。同様にして優先度に対応した順で他のパケットを対応の各バッファに受け渡していく。優先度が最も低いパケットＭは第Ｍバッファ２１−Ｍに受け渡される。
【００２２】
受信パケットバッファ２０におけるバッファ２１は、受信パケットが相当に増加したような場合に輻輳状態となる可能性がある。バッファ２１−０乃至２１−Ｍの各々は、その容量に応じて複数のパケットを格納可能であり、対応の優先制御用のバケット３１−０乃至３１−Ｍの各々からパケットが取り出される都度、格納順にしたがって、対応の優先制御用のバケット３１に対して格納していたパケットを転送している。ここで、優先制御プロセッサコア４１−０によるバケット３１−０乃至３１−Ｍからのパケット取込処理速度を越えて受信パケット数が増加すると、バッファ２１が格納するパケットの数が蓄積されていく。すなわち、パケットが滞留していく。そして、このままの状態が継続すれば、バッファ２１においてパケットが最大数まで格納されてしまい、パケット分散デバイス１０からパケットが転送されてきてもこれ以上パケットを格納できない状態に至る。ここでは、このような状態を輻輳状態として扱う。そして、パケット分散デバイス１０は、バッファ２１のうちの１つでも輻輳状態となっているときにパケットを受信すると、その受信したパケットを受信パケットバッファ２０に受け渡すことなく廃棄する仕様となっている。
【００２３】
バケット部３０は、Ｎ個のバケット３１（第０バケット３１−０乃至第Ｎバケット３１−Ｎを備える。これらのバケット３１のうち、第０バケット３１−０乃至第Ｎバケット３１−Ｍは優先制御に対応して備えられ、それぞれ、受信パケットバッファ２０における第０バッファ２１−０乃至第Ｍバッファ２１−Ｍと一対一で対応している。第０バッファ２１−０は、パケットが格納されると、このパケットを対応する第０バケット３１−０に対して転送する。同様に、第１バッファ２１−１乃至第Ｍバッファ２１−Ｍは、それぞれ、第１バケット３１−１乃至第Ｎバケット３１−Ｍに対して、格納したパケットを転送する。バケット３１は、転送されたパケットを、次に説明するマルチコアプロセッサ４０が取り込むまで一時保持する。
【００２４】
また、バケット３１のうち、第Ｎバケット３１−Ｎは、パケット廃棄処理に対応して設けられ、後述するように輻輳状態において廃棄対象として受信パケットバッファ２０から転送されるパケットを一時保持する。なお、バッファ２１およびバケット３１のパケット格納最大数は、コンフィグレーションで設定可能とされている。
【００２５】
マルチコアプロセッサ４０は、ｎ＋１個のプロセッサコア４１として、１つの優先制御プロセッサコア４１−０と、１つのバッファ状態監視プロセッサコア４１−１と、ｎ−１個のフォワーディング処理プロセッサコア４１−２乃至４１−ｎを備える。
【００２６】
優先制御プロセッサコア４１−０は、パケット優先制御処理を実行する。このために優先制御プロセッサコア４１−０は、例えばＲＷＷ（Ｗｅｉｇｈｔｅｄ  Ｒｏｕｎｄ  Ｒｏｂｉｎ）方式により設定された重み付けにしたがったタイミングで、優先制御用の第０バケット３１−０乃至第Ｎバケット３１−Ｍにて保持されているパケットを取り込む処理を実行する。さらに、優先制御プロセッサコア４１−０は、取り込んだパケットをラウンドロビン方式によりフォワーディング処理プロセッサコア４１−２乃至４１−ｎに対して分配していく。
【００２７】
フォワーディング処理プロセッサコア４１−２乃至４１−ｎは、優先制御プロセッサコア４１−０によって分配されたパケットのフォワーディング処理を実行する。また、本実施の形態におけるフォワーディング処理プロセッサコア４１−２乃至４１−ｎは、輻輳状態のときには、後述するように、所定の実行比率にしたがって、パケットフォワーディング処理に加えて、廃棄処理用の第Ｎバケット３１−Ｎに転送された保持されたパケットの廃棄処理を実行するようにもされている。
【００２８】
バッファ状態監視プロセッサコア４１−１は、一定周期ごとにバッファ２１のパケット滞留数を監視する。この監視アルゴリズムとしては、例えばすべてのバッファ２１ごとにパケット滞留数を監視するようにしてもよい。しかし、受信パケットバッファ２０においてパケットが滞留していくときには、通常、優先度の低いバッファから滞留数が増加していくため、第Ｍバッファ２１−Ｍが最初に輻輳状態に陥ることになる。そこで、本実施の形態においては最低の優先度に対応する第Ｍバッファ２１−Ｍのみのパケット滞留数を監視する。これにより、例えばすべてのバッファ２１を監視しなくとも、受信パケットバッファ２０の状態を的確に認識することができ、監視処理の負荷が軽減される。そして、これまでの説明から理解されるように、ここでのパケットの滞留数とは、すなわち、現在におけるバッファ２１のパケット格納数となる。パケット滞留数が少ないほど輻輳状態となりにくく、輻輳回避のための対策を採る必要はないといえる。これに対して、パケット滞留数が多くなるほど輻輳状態に近づいており、輻輳回避のための対策を採るべき必要性が高いといえる。
【００２９】
そこで、バッファ状態監視プロセッサコア４１−１は、認識されたパケット滞留数が所定の閾値を越えていなければ輻輳回避処理の必要性がない状態であると判定する。これに対して、閾値を越えていれば輻輳回避処理の必要がある状態であると判定する。
【００３０】
本実施の形態のパケット交換装置１は、次に説明するように、バッファ状態監視プロセッサコア４１−１により輻輳回避処理が不要であると判定された場合には、輻輳回避処理を伴わない通常の動作を実行する。また、輻輳回避処理が必要であると判定した場合には、輻輳回避処理を伴う動作を実行する。
【００３１】
［パケット交換装置の動作（輻輳回避処理が不要と判定された場合）］
まず、バッファ状態監視プロセッサコア４１−１により輻輳回避処理が不要であると判定された場合に対応したパケット交換装置１の動作例について、図１を参照して説明する。この説明にあたり、パケット分散デバイス１０においてパケット０、１・・・Ｍまでの（Ｍ＋１）個の入力インターフェースからのパケットが受信されているものとする。また、パケットの優先度は、パケット０＞１・・・＞Ｍの順で設定されているものとする。パケット分散デバイス１０は、これらのパケット０、１・・・Ｍを、それぞれの優先度にしたがって、受信パケットバッファ２０の第０バッファ２１−０乃至第Ｍバッファ２１−Ｍに適宜分配する。
【００３２】
そのうえで、バッファ状態監視プロセッサコア４１−１は、受信パケットバッファ２０において通常の優先制御に対応した動作が実行されるように制御する。すなわち、第０バッファ２１−０乃至第Ｍバッファ２１−Ｍに格納されたパケットを、それぞれ、バケット部３０における優先制御用の第０バケット３１−０乃至第Ｍバケット３１−Ｍに対して転送させるように制御する。これにより、パケット０、１・・・Ｍは、それぞれ、第０バケット３１−０乃至第Ｍバケット３１−Ｍに転送されて保持される。この際、バケット部３０における廃棄処理用の第Ｎバケット３１−Ｎに対してパケットは転送されておらず、したがって、第Ｎバケット３１−Ｎはパケットを保持することがない状態である。
【００３３】
マルチコアプロセッサ４０における優先制御プロセッサコア４１−０は、優先制御用の第０バケット３１−０乃至第Ｍバケット３１−Ｍに格納されているパケット０、１・・・Ｍを、前述のＷＲＲ方式にしたがった順序で取り込む。そして、取り込んだパケットをラウンドロビン方式によりフォワーディング処理プロセッサコア４１−２乃至４１−ｎに対して転送する。この場合には、パケット０、１・・・Ｍを、それぞれ、フォワーディング処理プロセッサコア４１−２乃至４１−ｎに転送した例が示されている。
【００３４】
前述のように、このときの廃棄処理用の第Ｎバケット３１−Ｎはパケットを保持しておらず空の状態にある。廃棄処理用の第Ｎバケット３１−Ｎが空である場合、フォワーディング処理プロセッサコア４１−２乃至４１−ｎは、パケット廃棄処理は実行せずに、優先制御プロセッサコア４１−０から転送されたパケットを外部に転送するパケットフォワーディング処理のみを実行していく。このように、輻輳状態ではない場合には通常に優先制御が実行される。
【００３５】
［パケット交換装置の動作（輻輳回避処理が必要と判定された場合）］
続いて、図２を参照して、輻輳回避処理が必要と判定された場合に応じたパケット交換装置１の動作例について説明する。図２には、図１と同じ構成のパケット交換装置１が示されている。そのうえで、輻輳回避処理を伴うパケットフォワーディング処理に応じたパケットの経路例が示されている。この図において、図１と同一部分には同一符号を付している。また、図２においてもパケット０、１・・・Ｍが入力されており、パケット０、１・・・Ｍの順で優先度が低くなっていくことを前提とする。
いることを前提とする。
【００３６】
バッファ状態監視プロセッサコア４１−１は、輻輳回避処理が必要と判定した場合には、輻輳状態に至ることを回避するための輻輳回避処理として次の制御を実行する。すなわち、第Ｍバッファ２１−Ｍのパケットの転送先について、優先制御用の第Ｍバケット３１−Ｍからパケット廃棄用の第Ｎバケット３１−Ｎに切り替わるように制御を実行する。これにより、第Ｍバッファ２１−Ｍに格納されたパケットＭは、第Ｍバケット３１−Ｍではなく、第Ｎバケット３１−Ｎに転送されることになる。
【００３７】
マルチコアプロセッサ４０におけるフォワーディング処理プロセッサコア４１−２乃至４２−ｎは、バケット部３０における状態としてパケット廃棄用の第Ｎバケット３１−Ｎにパケットが保持されている状態のときには、次のように動作する。すなわち、フォワーディング処理プロセッサコア４１−２乃至４２−ｎの各々は、輻輳回避処理として、所定の実行比率にしたがってパケットフォワーディング処理とパケット廃棄処理とを実行する。ここでのパケットフォワーディング処理とは、非輻輳状態のときと同様に優先制御プロセッサコア４１−０から転送されてくる優先度の高いパケット０、１・・・を外部に転送する処理をいう。また、パケット廃棄処理は、パケット廃棄用の第Ｎバケット３１−Ｎに保持されたパケットＭを取り込んだうえで廃棄する処理をいう。
【００３８】
ここで、上記の実行比率の設定例について説明しておく。例えばこの実行比率について、パケットフォワーディング処理：パケット廃棄処理＝Ｘ：１のように設定しているものとする。この実行比率に応じては、パケットフォワーディング処理をＸ回連続して実行した後にパケット廃棄処理を１回実行するというシーケンスを繰り返し実行させることとすればよい。この実行比率についても、コンフィグレーションによって設定が可能である。また、フォワーディング処理プロセッサコア４１−２乃至４２−ｎごとに異なる実行比率の値を設定することができる。
【００３９】
ここで、フォワーディング処理プロセッサコア４１−２乃至４２−ｎは、互いに他のフォワーディング処理プロセッサコア４１に依存することなく独立して動作する。したがって、上記の輻輳回避処理も、フォワーディング処理プロセッサコア４１−２乃至４２−ｎごとに異なるタイミングにより実行することになる。これにより、輻輳回避のためのパケット廃棄処理は、１つのフォワーディング処理プロセッサコアに集中することなく、複数のフォワーディング処理プロセッサコア４１−２乃至４２−ｎの間で適切に分散されることになる。
【００４０】
このように、本実施の形態においては、バッファ状態を監視して輻輳回避処理の要否を決定する機能を１つのバッファ状態監視プロセッサコア４１−１のみに与えることとしている。これにより、フォワーディング処理に多くのプロセッサコアを割り当てることができる。そのうえで、フォワーディング処理プロセッサコア４１−２乃至４２−ｎは、パケットフォワーディング処理とバッファ廃棄処理と所定の実行比率にしたがって時分割で実行する。この際、輻輳回避のためのパケット廃棄処理は、複数のフォワーディング処理プロセッサコア４１−２乃至４２−ｎ間で分散して実行される。これにより、パケットフォワーディング処理と輻輳回避処理のいずれについても高い性能を確保することが可能になる。そして、このように輻輳回避処理が実行される結果として輻輳状態に至ることが回避されるため、パケット分散デバイス１０が受信パケットを廃棄する動作も回避されることになる。これにより、本実施の形態のパケット交換装置１は、輻輳状態に至ったために優先制御が実行されなくなるという状況に陥ることがなくなる。
【００４１】
［パケット分散デバイスの処理手順例］
続いて、これまでに説明したパケット交換装置１の動作に対応して主要の各部が実行する処理手順例について説明することとし、まず、図３のフローチャートを参照してパケット分散デバイス１０が実行する処理手順例について説明する。
【００４２】
パケット分散デバイス１０は、ステップＳ１０１においてパケットを受信するとともに、ステップＳ１０２において、現在、輻輳状態にあるか否かについて判定する。
【００４３】
上記ステップＳ１０２において輻輳状態ではないと判定した場合、パケット分散デバイス１０は、ステップＳ１０３により、受信パケットが格納する優先情報を参照して優先度を認識する。そして、パケット分散デバイス１０は、ステップＳ１０４により、受信パケットバッファ２０におけるバッファ２１のうちで、認識した優先度に対応するバッファ２１に対して適宜パケットを転送して格納させる。これに対して、ステップＳ１０２において輻輳状態であると判定した場合、パケット分散デバイス１０は、ステップＳ１０５において受信したパケットを廃棄する。
【００４４】
［バッファ状態監視プロセッサコアの処理手順例］
続いて、図４のフローチャートを参照してバッファ状態監視プロセッサコア４１−１が実行する処理手順例について説明する。バッファ状態監視プロセッサコア４１−１はステップＳ２０１において監視タイミングに至るのを待機している。そして、前回の監視タイミングから一定時間が経過して今回の監視タイミングに至るとステップＳ２０１において監視タイミングに至ったと判定し、ステップＳ２０２以降の手順を実行する。
【００４５】
ステップＳ２０２において、バッファ状態監視プロセッサコア４１−１はバッファ状態として、最低優先度に対応する第Ｍバッファ２１−Ｍにおけるパケット滞留数を認識する。次に、ステップＳ２０３により認識したパケット滞留数が閾値以下であるか否かについて判定する。この判定に際しては、例えば、所定数以上のバッファ２１のパケット滞留数が閾値を越えていれば、肯定の判定結果が得られるようなアルゴリズムとすることが考えられる。また、すべてのバッファ２１ごとに個別に認識されたパケット滞留数を利用して平均値演算などにより求めた値を、閾値と比較すべきパケット滞留数として扱うようにすることが考えられる。
【００４６】
バッファ状態監視プロセッサコア４１−１は、ステップＳ２０３にてパケット滞留数が閾値以下であるとの肯定の判定結果が得られた場合、ステップＳ２０４により、輻輳回避処理が不要であると判定する。これに対して、パケット滞留数が閾値以下ではないとの否定の判定結果が得られた場合には、輻輳回避処理が必要であると判定する。
【００４７】
［受信パケットバッファの処理手順例］
図５のフローチャートは、受信パケットバッファ２０が実行する処理手順例を示している。受信パケットバッファ２０は、ステップＳ３０１において、パケット分散デバイス１０から分配されるパケットを、その優先度に応じたバッファ２１に格納する。
【００４８】
続いて、受信パケットバッファ２０は、ステップＳ３０２において、バッファ状態監視プロセッサコア４１−１により輻輳回避処理が必要との判定結果が得られているか否かについて判定する。ここで、輻輳回避処理が必要ではないとの判定結果が得られている場合、受信パケットバッファ２０は、ステップＳ３０３において、すべてのバッファ２１−０乃至２１−Ｍに格納されているパケットを、それぞれ、対応の優先制御用のバケット３１に転送させる。
【００４９】
これに対して、ステップＳ３０２において輻輳回避処理が必要であるとの判定結果が得られている場合、受信パケットバッファ２０は、ステップＳ３０４において、高優先度に対応するバッファ２１に格納されているパケットを、それぞれ、対応の優先制御用のバケット３１に転送する。当該ステップＳ３０４の処理は、図１および図２との対応では、例えば第Ｍバッファ２１−Ｍ以外のバッファ２１に格納されたパケットを、それぞれ、対応の第Ｍバケット３１−Ｍ以外のバケット３１に転送する処理となる。
【００５０】
また、受信パケットバッファ２０は、ステップＳ３０５により、低優先度に対応するバッファ２１に格納されているパケットを、対応のバケット３１に転送する。この処理は、図１および図２との対応では、例えば第Ｍバッファ２１−Ｍに格納されたパケットを、第Ｍバケット３１−Ｍに転送する処理となる。このステップＳ３０４からステップＳ３０５に至る処理は、バッファ状態監視プロセッサコア４１−１により、輻輳回避処理が必要であるときには低優先度のパケットを廃棄処理用のバケットに転送するように受信パケットバッファ２０が制御されていることを示している。
【００５１】
［パケット優先制御プロセッサコアの処理手順例］
続いて、図６のフローチャートを参照してパケット優先制御プロセッサコア４１−０が実行する処理手順例について説明する。優先制御プロセッサコア４１−０は、ステップＳ４０１において、バッファ状態監視プロセッサコア４１−１により輻輳回避処理が必要と判定されている状態であるか否かについて判定する。輻輳回避処理が必要と判定されていない場合には、バケット部３０におけるすべての優先制御用のバケット（３１−０乃至３１−Ｍ・・・）にパケットが転送されて保持される。そこで、優先制御プロセッサコア４１−０は、ステップＳ４０２において、バケット部３０におけるすべての優先制御用のバケット（３１−０乃至３１−Ｍ・・・）からバケットを取り込む処理を実行する。
【００５２】
一方、輻輳回避処理が必要と判定されている場合には、バケット部３０における優先制御用のバケットのうち、高優先度に対応するバケット（３１−０乃至３１−（Ｍ−１））のみに対してバケットが転送される。これに応じて、優先制御プロセッサコア４１−０は、ステップＳ４０３により、バケット部３０における高優先度に対応した優先制御用のバケット（３１−０乃至３１−（Ｍ−１））からバケットを取り込む処理を実行する。なお、上記ステップＳ４０２またはＳ４０３におけるパケットの取込処理は、いずれも前述のようにＷＲＲ方式にしたがって実行される。
【００５３】
そして、優先制御プロセッサコア４１−０は、上記ステップＳ４０２またはＳ４０３により取り込んだパケットを、ステップＳ４０４の処理によって、例えばラウンドロビン方式にしたがってフォワーディング処理プロセッサ４１−２乃至４１−ｎに対して分配する。
【００５４】
［フォワーディング処理プロセッサコアの処理手順例］
図７のフローチャートは、フォワーディング処理プロセッサコア４１−２乃至４１−ｎの各々が実行する処理手順例を示している。まず、フォワーディング処理プロセッサコア４１−２乃至４１−ｎは、ステップＳ５０１において、廃棄処理用の第Ｎバケット３１−Ｎにパケットが格納されている状態であるか否かについて判定する。
【００５５】
上記ステップＳ５０１においてパケットが格納されていないと判定した場合、フォワーディング処理プロセッサコア４１−２乃至４１−ｎは、ステップＳ５０２において優先制御プロセッサコア４１−０から自己宛に転送されてくるパケットを取り込む。次に、ステップＳ５０３により、取り込んだパケットを外部に転送するパケットフォワーディング処理を実行する。そして、次のステップＳ５０４により、今回のステップＳ５０３のパケットフォワーディング処理が反映されるように、パケットフォワーディング処理の実行履歴を更新し、この後ステップＳ５０１に戻る。
【００５６】
一方、ステップＳ５０１において自己が廃棄すべきパケットが格納されていると判定した場合にはステップＳ５０１からステップＳ５０５に進む。ステップＳ５０５においては、現在のフォワーディング処理についての実行履歴を参照し、ステップＳ５０３によるパケットフォワーディング処理が連続してＸ回実行されたか否かについて判定する。なお、ここで閾値として扱われるＸは、コンフィグレーションによって設定されるフォワーディング処理とパケット廃棄処理の実行比率に基づいて決定される。
【００５７】
上記ステップＳ５０５においてＸ回連続して実行されていないと判定した場合には、ステップＳ５０２以降に進むことでパケットフォワーディング処理と、その実行履歴の更新を実行する。これに対して、ステップＳ５０５においてＸ回連続して実行されたと判定した場合には、ステップＳ５０６により廃棄処理用のバケット３１−Ｎからパケットを取り込み、続くステップＳ５０７により、その取り込んだパケットの廃棄処理を実行する。ステップＳ５０７の処理を実行した後はステップＳ５０１に戻る。このように各部が処理を実行することで、本実施の形態のパケット交換装置１は、パケットフォワーディング処理と輻輳回避処理の双方について十分な性能を確保してファームウェアによる優先制御(パケット制御)を実現可能とされている。
【００５８】
［他の実施の形態］
続いて、本発明における他の実施の形態について説明する。他の実施の形態における機能部位の構成は、図１および図２と同様となる。そのうえで、この他の実施の形態においては、輻輳回避処理に際して、フォワーディング処理プロセッサコア４１−２乃至４１−ｎに加えて、バッファ状態監視プロセッサコア４１−１に対しても廃棄処理用の第Ｎバケット３１−Ｎを割り当てる。これにより、輻輳回避処理において、フォワーディング処理プロセッサコア４１−２乃至４１−ｎとともにバッファ状態監視プロセッサコア４１−１もパケット廃棄処理を実行することになる。なお、バッファ状態監視プロセッサコア４１−１のパケット廃棄処理のタイミングについては、例えば先に説明した実行比率に相当する所定時間ごとに実行されるように設定すればよい。このような構成とすることで、パケット廃棄処理を分散して実行するプロセッサコア数が増加することとなって輻輳回避処理性能をさらに向上させることが可能になる。
【００５９】
なお、これまでにおいては説明を簡単なものとすることの便宜上、廃棄処理用のバケットについては第Ｎバケット３１−Ｎの１つのみとした構成を例に挙げている。しかし、例えば、廃棄処理用のバケットを複数として構成することも可能である。また、本実施の形態のパケット交換装置１はＩＰパケットを扱うこととしているが、例えばＴＣＰ／ＩＰ以外の通信プロトコルに対応するパケットにも対応可能である。
【００６０】
また、本発明の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えることができる。また、これら一連の手順をコンピュータに実行させるためのプログラムまたはそのプログラムを記憶する記録媒体として捉えることができる。この記録媒体としては、例えば、ブルーレイディスク（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ（登録商標））、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、ＨＤＤ（ハードディスク）、メモリカード等を挙げることができる。
【符号の説明】
【００６１】
１  パケット交換装置
１０  パケット分散デバイス
２０  受信パケットバッファ
２１−０乃至２１−０  第０乃至第Ｍバッファ
３０  バケット部
３１−０乃至３１−Ｍ  （優先制御用）バケット
３１−ｎ  （廃棄処理用)バケット
４０  マルチコアプロセッサ
４１−０  優先制御プロセッサコア
４１−１  バッファ状態監視プロセッサコア
４１−２乃至４１−ｎ  フォワーディング処理プロセッサコア
【図１】
0005709210.tif 000002
【図２】
0005709210.tif 000003
【図３】
0005709210.tif 000004
【図４】
0005709210.tif 000005
【図５】
0005709210.tif 000006
【図６】
0005709210.tif 000007
【図７】
0005709210.tif 000008