(57)【要約】【課題】受信処理の各機能の処理負荷を分散化できるパケット処理装置等を提供する。【解決手段】パケット処理装置は、受信部と、複数の実行部と、決定部と、付加部とを有する。受信部は、パケットを受信する。実行部は、前記受信部にて受信されたパケットに対する受信処理内の機能を実行する。決定部は、前記実行部毎の受信処理時間に基づき、前記受信処理内の機能毎に使用する前記実行部を指定する方路情報を決定する。付加部は、前記受信部にて前記パケットを受信し、前記実行部にて当該受信パケットに対する機能を実行する前に、当該受信パケットに前記決定部にて決定された前記方路情報を付加する。【選択図】図２
2018136782.tif 000002
【特許請求の範囲】
【請求項１】
パケットを受信する受信部と、
前記受信部にて受信されたパケットに対する受信処理内の機能を実行する複数の実行部と、
前記実行部毎の受信処理時間に基づき、前記受信処理内の機能毎に使用する前記実行部を指定する方路情報を決定する決定部と、
前記受信部にて前記パケットを受信し、前記実行部にて当該受信パケットに対する機能を実行する前に、当該受信パケットに前記決定部にて決定された前記方路情報を付加する付加部と
を有することを特徴とするパケット処理装置。
【請求項２】
前記実行部は、
前記受信パケットに付加された前記方路情報に基づき、当該受信パケットが自分宛のパケットの場合に、当該受信パケットに対する機能を実行することを特徴とする請求項１に記載のパケット処理装置。
【請求項３】
前記受信処理時間は、
前記受信パケットの処理開始時刻と当該受信パケットの処理終了時刻との差分に基づき算出することを特徴とする請求項１又は２に記載のパケット処理装置。
【請求項４】
前記決定部は、
前記機能毎の前記実行部単位の平均処理時間が所定閾値を超えた場合に、当該所定閾値を超えた当該機能に、前記複数の実行部の内、任意の実行部を追加する前記方路情報を決定することを特徴とする請求項１〜３の何れか一つに記載のパケット処理装置。
【請求項５】
パケットを受信する受信部と、受信されたパケットに対する受信処理内の機能を実行する複数の実行部とを有するパケット処理装置が、
前記実行部毎の受信処理時間に基づき、前記受信処理内の機能毎に使用する前記実行部を指定する方路情報を決定し、
前記受信部にて前記パケットを受信し、前記実行部にて当該受信パケットに対する機能を実行する前に、当該受信パケットに前記決定部にて決定された前記方路情報を付加する
処理を実行することを特徴とするパケット処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット処理装置及びパケット処理方法に関する。
【背景技術】
【０００２】
従来、パケット処理装置では、ルーティングテーブルを用いて受信パケットを最適ルートに転送する技術がある。パケット処理装置では、パケットの転送遅延等の処理時間を測定し、測定結果に基づき、ルーティングテーブルを生成する。その結果、パケット処理装置は、受信パケットに関わる最適ルートの選定を効率的に実現できる。
【０００３】
また、近年、パケット処理装置では、マルチコア内の複数のコアを利用して、パケットの受信処理の各機能を実行する処理を分散化する技術がある。尚、受信処理の機能には、例えば、ＭＡＣ（Media  Access  Control）学習機能やＶＬＡＮ(Virtual  Local  Area  Network)演算機能等がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平９−３２１７９５号公報
【特許文献２】特開平６−２７４５３２号公報
【特許文献３】特開平８−３２０８４９号公報
【特許文献４】特開２０１３−２５５１８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、パケット処理装置では、受信処理の各機能の処理負荷が変動するため、各機能を実行するコアの処理稼働率に偏りが生じ、マルチコア全体での受信処理の効率化が求められている。
【０００６】
一つの側面では、受信処理の各機能の処理負荷を分散化できるパケット処理装置及びパケット処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
一つの態様のパケット処理装置は、受信部と、複数の実行部と、決定部と、付加部とを有する。受信部は、パケットを受信する。実行部は、受信部にて受信されたパケットに対する受信処理内の機能を実行する。決定部は、実行部毎の受信処理時間に基づき、受信処理内の機能毎に使用する実行部を指定する方路情報を決定する。付加部は、受信部にてパケットを受信し、実行部にて当該受信パケットに対する機能を実行する前に、当該受信パケットに決定部にて決定された方路情報を付加する。
【発明の効果】
【０００８】
一つの態様では、受信処理の各機能の処理負荷を分散化できる。
【図面の簡単な説明】
【０００９】
【図１】図１は、本実施例の通信装置のシェルフ構造の一例を示す説明図である。
【図２】図２は、ＩＦカードのハードウェア構成の一例を示す説明図である。
【図３】図３は、マルチコア内のコア配置構成の一例を示す説明図である。
【図４】図４は、監視部の機能構成の一例を示す説明図である。
【図５】図５は、コアテーブルの一例を示す説明図である。
【図６】図６は、受信パケットのフォーマット構成の一例を示す説明図である。
【図７】図７は、割当テーブルの一例を示す説明図である。
【図８】図８は、コアルーティング処理に関わる制御部の処理動作の一例を示すフローチャートである。
【図９】図９は、コア実行処理に関わるマルチコア内の各コアの処理動作の一例を示すフローチャートである。
【図１０】図１０は、コア割当処理に関わる制御部の処理動作の一例を示すフローチャートである。
【図１１Ａ】図１１Ａは、機能Ｆ１の処理時間変化反映後の割当テーブルの一例を示す説明図である。
【図１１Ｂ】図１１Ｂは、機能Ｆ１のコア単位時間超過反映後の割当テーブルの一例を示す説明図である。
【図１１Ｃ】図１１Ｃは、機能Ｆ３のコアＣ９の削除反映後及び機能Ｆ１のコアＣ９の追加反映後の割当テーブルの一例を示す説明図である。
【図１１Ｄ】図１１Ｄは、機能Ｆ３のコアＣ９の削除反映後のコアテーブルの一例を示す説明図である。
【図１１Ｅ】図１１Ｅは、機能Ｆ１のコアＣ９の追加反映後のコアテーブルの一例を示す説明図である。
【図１１Ｆ】図１１Ｆは、機能Ｆ１のコアＣ９の処理時間変化反映後の割当テーブルの一例を示す説明図である。
【図１２】図１２は、パケット処理プログラムを実行する情報処理装置の一例を示す説明図である。
【発明を実施するための形態】
【００１０】
以下、図面に基づいて、本願の開示するパケット処理装置及びパケット処理方法の実施例を詳細に説明する。尚、各実施例により、開示技術が限定されるものではない。また、以下に示す各実施例は、矛盾を起こさない範囲で適宜組み合わせても良い。
【実施例】
【００１１】
図１は、本実施例の通信装置１のシェルフ構造の一例を示す説明図である。図１に示す通信装置１は、ＩＦ（Interface）カード２と、ＳＷ(Switch)カード３と、Ｓｙｎｃ／ＭＣカード４と、ＣＰＵ(Central  Processing  Unit)カード５とを実装している。ＩＦカード２は、例えば、パケット通信を実行する＃１〜＃８の８枚の通信カードである。ＳＷカード３は、ＩＦカード同士を切替接続するカードであって、冗長構成を確保するため、Ｗ（Working）用及びＰ（Protect）用の２枚のカードである。Ｓｙｎｃ／ＭＣカード４は、Ｗ（Working）用及びＰ（Protect）用の２枚のカードである。ＣＰＵカード５は、通信装置１全体を制御するカードである。
【００１２】
図２は、ＩＦカード２のハードウェア構成の一例を示す説明図である。図２に示すＩＦカード２は、入力ＩＦ１１と、ＭＡＣ／ＰＨＹ（Media  Access  Control/Physical）１２と、ＮＰＵ（Network  Processor  Unit）１３と、出力ＩＦ１４とを有する。
【００１３】
入力ＩＦ１１は、パケットを入力するインタフェースである。ＭＡＣ／ＰＨＹ１２は、レイヤ１の物理層及びレイヤ２のＭＡＣ層間のインタフェースである。ＮＰＵ１３は、ＩＦカード２全体を制御する処理部である。ＮＰＵ１３は、受信パケットに対して受信処理の各機能を実行する。尚、受信処理の各機能とは、例えば、ＭＡＣ学習機能、ＯＡＭ（Operations  Administration  Maintenance）パケット受信処理機能やＶＬＡＮ演算機能等のＬ２処理機能や、ＴＣＰ（Transmission  Control  Protocol）の組み上げ処理やトネリングパケット処理等のＬ４以上の高レイヤ処理機能等の機能である。例えば、ＭＡＣ学習機能やＯＡＭパケット受信処理機能は、ＣＰＵカード５と連携する処理が必要になるため、通常のＬ２フレーム処理に比較して処理時間を要する。また、ＶＬＡＮ演算機能は、ＶＬＡＮタグが多段化されているため、タグ段数に応じて処理時間が増加する。更に、Ｌ４以上の高レイヤ処理機能は、処理負荷が大きいパケットを使用するため、処理時間が増加する。従って、例えば、マルチコア２１内の複数のコア２１Ａに各機能を固定で割当てた場合、コア２１Ａ毎に処理負荷が変動する。従って、ＮＰＵ１３では、後述するように、機能の負荷変動に応じて機能に割当てるコア２１Ａを動的に変更する。出力ＩＦ１４は、受信処理後の受信パケットを出力するインタフェースである。
【００１４】
ＮＰＵ１３は、マルチコア２１と、アクセラレータ２２と、受信部２３とを有する。受信部２３は、パケットを受信する部位である。マルチコア２１は、複数のコア２１Ａで構成する。各コア２１Ａは、例えば、受信処理内の各機能の処理を実行する。図３は、マルチコア２１のコア配置構成の一例を示す説明図である。図３に示すマルチコア２１は、例えば、Ｃ１〜Ｃ３０の３０個のコア２１Ａである。尚、マルチコア２１内のコア２１Ａの数は、適宜変更可能である。
【００１５】
アクセラレータ２２は、マルチコア２１の処理能力を高めるための部位である。アクセラレータ２２は、監視部３１と、コアテーブル３２と、割当テーブル３３と、ＡＲＰ(Address  Resolution  Protocol)テーブル３４と、制御部３５とを有する。
【００１６】
監視部３１は、マルチコア２１内のコア２１Ａを監視する。図４は、監視部３１の機能構成の一例を示す説明図である。監視部３１は、マルチコア２１内のコア２１Ａ単位で監視するＣ１〜Ｃ３０のコア監視部３１Ａを有する。図４に示すＣ１のコア監視部３１Ａは、例えば、コアＣ１を監視する。Ｃ２のコア監視部３１Ａは、コアＣ２を監視する。Ｃ３０のコア監視部３１Ａは、コアＣ３０を監視する。
【００１７】
コア監視部３１Ａは、パケットカウンタ４１と、ＭＳＧ（Message）カウンタ４２と、ＭＳＧキュー４３とを有する。パケットカウンタ４１は、該当コア２１Ａを使用するパケットを受信した場合にパケットカウント値を＋１インクリメントする。ＭＳＧカウンタ４２は、該当コア２１ＡからのＭＳＧを受信した場合にＭＳＧカウント値を＋１インクリメントする。尚、各コア２１ＡからのＭＳＧがＭＳＧキュー４３に到着した場合、ＭＳＧを受信したコア２１ＡのＭＳＧカウンタのＭＳＧ数だけカウントすることになる。ＭＳＧは、コア２１Ａからの通知メッセージである。ＭＳＧキュー４３は、コア２１ＡからのＭＳＧを受信した場合に一時格納する領域である。
【００１８】
図５は、コアテーブル３２の一例を示す説明図である。コアテーブル３２は、受信パケットを識別する到着番号３２Ａと、受信処理内の各機能に使用するコア２１Ａを識別するコア番号３２Ｂを対応付けた方路情報を管理するテーブルである。到着番号３２Ａは、到着した受信パケットを識別する番号である。コア番号３２Ｂは、受信パケットに使用する受信処理内の各機能に割り当てられるコア２１Ａを識別する番号である。制御部３５は、コアテーブル３２を参照し、例えば、到着番号Ｎの受信パケットに対して機能Ｆ１を実行する場合にコア番号Ｃ１のコア２１Ａの使用、機能Ｆ２を実行する場合にコア番号Ｃ２のコア２１Ａの使用を識別する。更に、制御部３５は、機能Ｆ３を実行する場合にコア番号Ｃ３のコア２１Ａの使用を識別する。制御部３５は、例えば、到着番号Ｎ＋１の受信パケットに対して機能Ｆ１を実行する場合にコア番号Ｃ４のコア２１Ａの使用、機能Ｆ２を実行する場合にコア番号Ｃ５のコア２１Ａの使用、機能Ｆ３を実行する場合にコア番号Ｃ６のコア２１Ａの使用を認識する。尚、図５に示すコアテーブル３２は、例えば、機能Ｆ１〜Ｆ３に使用するコア番号３２Ｂを管理したが、３個の機能に限定されるものではなく、適宜変更可能である。
【００１９】
制御部３５は、コアテーブル３２を参照し、受信パケット毎に各機能のコア番号３２Ｂを特定し、特定された機能毎のコア番号３２Ｂでコア番号ヘッダを生成する。制御部３５は、受信パケットの先頭部分にコア番号ヘッダを付加してマルチコア２１に転送する。図６は、受信パケット５０のフォーマット構成の一例を示す説明図である。図６に示す受信パケット５０の先頭部分には、コア番号ヘッダ５１、例えば、機能Ｆ１のコア番号５１Ａ、機能Ｆ２のコア番号５１Ｂ及び機能Ｆ３のコア番号５１Ｃを付加している。マルチコア２１内の各コア２１Ａは、受信パケットのコア番号ヘッダ５１のコア番号を参照し、自分宛の受信パケットであるか否かを判定するものである。
【００２０】
図７は、割当テーブル３３の一例を示す説明図である。割当テーブル３３は、機能３３Ａ毎に、コア番号３３Ｂ、処理時間３３Ｃ及びコア単位時間３３Ｄを対応付けて管理するテーブルである。機能３３Ａは、受信処理内の機能である。コア番号３３Ｂは、機能に使用するコア２１Ａを識別する番号である。処理時間３３Ｃは、その機能を実行する際にかかる各コア２１Ａの処理時間である。コア単位時間３３Ｄは、その機能を実行する際のコア２１Ａ単位の処理時間である。コア単位時間３３Ｄは、機能のコア２１Ａ毎の処理時間の平均時間を機能内の割当コア数で除算して得た時間である。尚、図７に示す割当テーブル３３は、例えば、機能Ｆ１〜Ｆ３に使用するコア番号３３Ｂ及び処理時間３３Ｃを管理したが、３個の機能に限定されるものではなく、適宜変更可能である。
【００２１】
制御部３５は、割当テーブル３３を参照し、機能Ｆ１の場合、コア番号Ｃ１の処理時間が１０μ秒、コア番号Ｃ４の処理時間が１０μ秒、コア単位時間が５μ秒を識別できる。また、制御部３５は、機能Ｆ３の場合、コア番号Ｃ３の処理時間が１６μ秒、コア番号Ｃ６の処理時間が１７μ秒、コア番号Ｃ８の処理時間が１５μ秒、コア番号Ｃ９の処理時間が１６μ秒、そのコア単位時間が４μ秒を識別できる。
【００２２】
制御部３５は、ＮＰＵ１３全体を制御する。制御部３５は、決定部３５Ａと、付加部３５Ｂとを有する。決定部３５Ａは、コア２１Ａ毎の処理時間に基づき、受信処理内の機能毎に使用するコア２１Ａを指定するコア番号を管理するコアテーブル３２を決定する。付加部３５Ｂは、パケットを受信し、コア２１Ａにて当該受信パケットに対する機能を実行する前に、当該受信パケットに使用するコア２１Ａのコア番号、すなわちコア番号ヘッダ５１を付加する。また、マルチコア２１の初回起動時や再起動時は、コアテーブル３２及び割当テーブル３３内のデフォルト値に基づき、コア２１Ａを割当てるものとする。
【００２３】
次に本実施例の通信装置１の動作について説明する。図８は、コアルーティング処理に関わる制御部３５の処理動作の一例を示すフローチャートである。
【００２４】
制御部３５は、パケットを受信したか否かを判定する（ステップＳ１１）。制御部３５は、パケットを受信した場合（ステップＳ１１肯定）、受信パケットが自分宛であるか否かを判定する（ステップＳ１２）。
【００２５】
制御部３５は、受信パケットが自分宛の場合（ステップＳ１２肯定）、コアテーブル３２を参照し、受信パケットの到着番号に対応する機能毎のコア番号を特定する（ステップＳ１３）。制御部３５は、特定された機能毎のコア番号で、図６に示すようにコア番号ヘッダ５１を生成する（ステップＳ１４）。
【００２６】
制御部３５は、受信パケットの先頭にコア番号ヘッダ５１を付加し（ステップＳ１５）、該当機能を実行するコア２１Ａに対応するコア監視部３１Ａ内のパケットカウンタ４１のカウント値に＋１インクリメントする（ステップＳ１６）。そして、制御部３５は、当該受信パケットをマルチコア２１に転送し（ステップＳ１７）、図８に示す処理動作を終了する。
【００２７】
制御部３５は、パケットを受信しなかった場合（ステップＳ１１否定）、又は、受信パケットが自分宛でない場合（ステップＳ１２否定）、図８に示す処理動作を終了する。
【００２８】
コアルーティング処理を実行する制御部３５は、受信パケットが自分宛の場合、コアテーブル３２を参照し、受信パケットに対応する機能毎のコア番号を特定し、特定された機能毎のコア番号でコア番号ヘッダ５１を生成する。更に、制御部３５は、コア番号ヘッダ５１を受信パケットの先頭部分に付加し、当該受信パケットをマルチコア２１に転送する。その結果、マルチコア２１内の各コア２１Ａは、コア番号ヘッダ５１を参照し、自分宛の受信パケットを認識できる。
【００２９】
図９は、コア実行処理に関わるコア２１Ａの処理動作の一例を示すフローチャートである。図９においてコア２１Ａは、制御部３５からパケットを受信したか否かを判定する（ステップＳ２１）。コア２１Ａは、パケットを受信した場合（ステップＳ２１肯定）、受信パケット内のコア番号ヘッダ５１を参照し、受信パケットが自分宛であるか否かを判定する（ステップＳ２２）。
【００３０】
コア２１Ａは、受信パケットが自分宛の場合（ステップＳ２２肯定）、受信パケットの処理開始時刻Ｘを取得する（ステップＳ２３）。尚、処理開始時刻は、例えば、パケット処理を開始する直前の時刻である。コア２１Ａは、処理開始時刻Ｘを取得した後、受信処理を実行する（ステップＳ２４）。
【００３１】
コア２１Ａは、受信パケットの受信処理を実行した後、受信パケットの処理終了時刻Ｙを取得する（ステップＳ２５）。尚、処理終了時刻は、例えば、パケット処理が終了した時点の時刻である。コア２１Ａは、受信処理後の受信パケットを転送する（ステップＳ２６）。
【００３２】
コア２１Ａは、（Ｙ−Ｘ）に基づき、コア２１Ａの処理時間Ｚを算出し（ステップＳ２７）、処理時間ＺをＭＳＧとしてＭＳＧキュー４３に転送し（ステップＳ２８）、図９に示す処理動作を終了する。コア２１Ａは、パケットを受信していない場合（ステップＳ２１否定）、図９に示す処理動作を終了する。
【００３３】
コア２１Ａは、受信パケットが自分宛でない場合（ステップＳ２２否定）、受信パケットを次のコア２１Ａに転送し（ステップＳ２９）、図９に示す処理動作を終了する。
【００３４】
コア実行処理を実行するコア２１Ａは、コア番号ヘッダ５１を参照し、自分宛の受信パケットを判定する。その結果、コア２１Ａは、自分宛の受信パケットを認識できる。
【００３５】
更に、コア２１Ａは、受信パケットの受信処理の処理開始時刻と、受信処理の処理終了時刻との差分に基づき、コア２１Ａの処理時間を算出し、処理時間をＭＳＧとしてアクセラレータ２２に通知する。その結果、アクセラレータ２２は、コア２１Ａの処理時間を認識できる。
【００３６】
図１０は、コア割当処理に関わる制御部３５の処理動作の一例を示すフローチャートである。図１０において制御部３５は、ＭＳＧキュー４３をチェックし（ステップＳ４１）、ＭＳＧキュー４３内のＭＳＧの内容に基づき、割当テーブル３３内の割当機能の該当コア２１Ａの処理時間を更新する（ステップＳ４２）。尚、ＭＳＧは、例えば、コア２１Ａの処理時間の変動等を含むメッセージである。更に、制御部３５は、該当コア２１Ａの処理時間を更新後、割当テーブル３３内の機能毎のコア単位時間を更新する（ステップＳ４３）。
【００３７】
制御部３５は、割当テーブル３３内に割当済みのコア番号であって、コアテーブル３２内にないコア番号があるか否かを判定する（ステップＳ４４）。制御部３５は、割当テーブル３３内に割当済みのコア番号であって、コアテーブル３２内にないコア番号がある場合（ステップＳ４４肯定）、パケットカウンタ４１のパケットカウント値とＭＳＧカウンタ４２のＭＳＧカウント値とが同一であるか否かを判定する（ステップＳ４５）。
【００３８】
制御部３５は、パケットカウント値とＭＳＧカウント値とが同一の場合（ステップＳ４５肯定）、処理が完了したと判断し、割当テーブル３３内の機能の内、コア単位時間が閾値αを超えている機能があるか否かを判定する（ステップＳ４６）。尚、閾値αは、コア２１Ａの負荷が大とするコア単位時間であって、例えば、８μ秒とする。閾値αは、利用者の設定変更に応じて適宜変更可能である。
【００３９】
制御部３５は、コア単位時間が閾値を超えている機能がある場合（ステップＳ４６肯定）、割当テーブル３３内のコア単位時間が閾値を超えている機能を特定する（ステップＳ４７）。尚、コア単位時間が閾値を超えている機能とは、例えば、割当コア２１Ａが不足している機能である。更に、制御部３５は、コアテーブル３２を参照し、コアテーブル３２内にないコア番号を特定する（ステップＳ４８）。制御部３５は、ステップＳ４７にて特定された機能にステップＳ４８にて特定されたコア番号のコア２１Ａを割り当て（ステップＳ４８Ａ）、この割当コア２１Ａに特定された機能プログラムをロードする（ステップＳ４９）。そして、制御部３５は、割当テーブル３３及びコアテーブル３２のテーブル内容を更新する（ステップＳ５０）。そして、制御部３５は、１μ秒待機し（ステップＳ５１）、ＭＳＧキュー４３をチェックすべく、ステップＳ４１に移行する。尚、ステップＳ５１では１μ秒待機としたが、これに限定されるものではなく、適宜変更可能である。
【００４０】
制御部３５は、パケットカウント値とＭＳＧカウント値とが同一でない場合（ステップＳ４５否定）、又は、割当テーブル３３内にコア単位時間が閾値を超える機能がない場合（ステップＳ４６否定）、１μ秒待機すべく、ステップＳ５１に移行する。
【００４１】
制御部３５は、コアテーブル３２内に該当するコア番号がない場合（ステップＳ４４否定）、割当テーブル３３内に、コア単位時間が閾値を超えている機能があるか否かを判定する（ステップＳ５２）。制御部３５は、割当テーブル３３内に、コア単位時間が閾値を超えている機能がある場合（ステップＳ５２肯定）、割当テーブル３３内の割当済みコア数が全コア数であるか否かを判定する（ステップＳ５３）。尚、図３に示すマルチコア２１内のコア２１ＡがＣ１〜Ｃ３０の３０個のため、全コア数は３０となる。
【００４２】
制御部３５は、割当テーブル３３内の割当済みコア数が全コア数の場合（ステップＳ５３肯定）、割当テーブル３３を参照し、コア単位時間が閾値を超えている機能を特定する（ステップＳ５４）。更に、制御部３５は、割当テーブル３３を参照し、コア単位時間が最短の機能を特定する（ステップＳ５４Ａ）。制御部３５は、割当テーブル３３を参照し、コア単位時間が最短の機能に対応するコア番号の内、最大のコア番号を特定する（ステップＳ５５）。尚、最大のコア番号のコア２１Ａとは、例えば、該当機能のコア２１Ａの内、一番後に使用されるコア２１Ａである。
【００４３】
制御部３５は、コアテーブル３２及び割当テーブル３３から、コア単位時間が最短の機能に対応する、ステップＳ５５にて特定された最大のコア番号を削除する（ステップＳ５６）。更に、制御部３５は、割当テーブル３３及びコアテーブル３２のテーブル内容を更新し（ステップＳ５７）、１μ秒待機すべく、ステップＳ５１に移行する。
【００４４】
制御部３５は、割当テーブル３３内の割当済みコア数が全コア数でない場合（ステップＳ５３否定）、割当テーブル３３内からコア単位時間が閾値を超えている機能を特定する（ステップＳ５８）。制御部３５は、ステップＳ５８にて特定された機能に、割当テーブル３３内に未割当のコア２１Ａのコア番号を割当てる（ステップＳ５９）。制御部３５は、割当コア２１Ａに特定された機能プログラムをロードし（ステップＳ６０）、割当テーブル３３及びコアテーブル３２のテーブル内容を更新し（ステップＳ６１）、１μ秒待機すべく、ステップＳ５１に移行する。制御部３５は、コア単位時間が閾値を超えている機能がない場合（ステップＳ５２否定）、１μ秒待機すべく、ステップＳ５１に移行する。
【００４５】
コア割当処理を実行する制御部３５は、割当テーブル３３内に割当済みのコア番号であって、コアテーブル３２内にないコア番号があり、コア単位時間が閾値を超えている機能を特定した場合、コアテーブル３２内にないコア番号を特定する。制御部３５は、コア単位時間が閾値を超えている機能にコアテーブル３２内にないコア番号を割当てる。その結果、コア単位時間が閾値を超えている機能の処理負荷を分散できる。
【００４６】
制御部３５は、割当テーブル３３内に割当済みのコア番号であって、コアテーブル３２内にないコア番号がなく、コア単位時間が閾値を超えている機能があって、割当済みコア数が全コア数の場合、コア単位時間が閾値を超えている機能を特定する。更に、制御部３５は、コア単位時間が最短の機能を特定する。更に、制御部３５は、コア単位時間が最短の機能に割り当てられたコア番号の内、最大のコア番号を特定する。制御部３５は、最大のコア番号を、コア単位時間が閾値を超えている機能に割当てる。その結果、コア単位時間が閾値を超えている機能の処理負荷を分散できる。
【００４７】
制御部３５は、割当テーブル３３内に割当済みのコア番号であって、コアテーブル３２内にないコア番号がなく、コア単位時間が閾値を超えている機能があって、割当済みコア数が全コア数でない場合、コア単位時間が閾値を超えている機能を特定する。更に、制御部３５は、コア単位時間が閾値を超えている機能に未割当のコア番号を割当てる。その結果、コア単位時間が閾値を超えている機能の処理負荷を分散できる。
【００４８】
次に機能Ｆ１のＣ１のコア２１Ａの処理時間が変動した場合の制御部３５の処理動作につき、コアテーブル３２及び割当テーブル３３のテーブル遷移を例示しながら説明する。図１１Ａは、機能Ｆ１の処理時間変化反映後の割当テーブル３３の一例を示す説明図である。制御部３５は、Ｃ１のコア監視部３１Ａ内のＭＳＧキュー４３内のＭＳＧに基づき、Ｃ１のコア２１Ａの処理時間が“３０”μ秒に変化したことを認識する。その結果、制御部３５は、図１１Ａに示す割当テーブル３３内の機能Ｆ１のコア番号Ｃ１の処理時間３３Ｃを“１０”μ秒から“３０”μ秒、コア単位時間３３Ｄを“５”μ秒から“１０”μ秒に更新する。
【００４９】
図１１Ｂは、機能Ｆ１のコア単位時間超過反映後の割当テーブル３３の一例を示す説明図である。制御部３５は、割当テーブル３３を参照し、機能Ｆ１のコア単位時間“１０”μ秒が所定閾値“８”μ秒を超えた場合、コア単位時間３３Ｄが最小“４”μ秒の機能Ｆ３を特定する。
【００５０】
図１１Ｃは、機能Ｆ３のコアＣ９の削除反映後及び機能Ｆ１のコアＣ９の追加反映後の割当テーブル３３の一例を示す説明図である。制御部３５は、コア単位時間が最短の機能Ｆ３を特定した後、機能Ｆ３内のコア番号の内、最大のコア番号“Ｃ９”を特定する。更に、制御部３５は、機能Ｆ３から特定したコア番号“Ｃ９”及び、コア番号“Ｃ９”の処理時間を削除し、機能Ｆ３のコア単位時間３３Ｄを“４”μ秒から“５．２５”μ秒に更新する。更に、制御部３５は、機能Ｆ３から削除したコア番号“Ｃ９”をコア単位時間超過の機能Ｆ１に追加更新する。
【００５１】
図１１Ｄは、機能Ｆ３のコアＣ９の削除反映後のコアテーブル３２の一例を示す説明図である。制御部３５は、コアテーブル３２内の機能Ｆ３のコア番号“Ｃ９”の削除に伴って、“Ｃ３”に更新する。更に、図１１Ｅは、機能Ｆ１のコアＣ９の追加反映後のコアテーブル３２の一例を示す説明図である。制御部３５は、コアテーブル３２内の機能Ｆ１のコア番号“Ｃ９”に追加更新する。
【００５２】
図１１Ｆは、機能Ｆ１のコアＣ９の処理時間変化反映後の割当テーブル３３の一例を示す説明図である。制御部３５は、Ｃ９のコア監視部３１Ａ内のＭＳＧキュー４３内のＭＳＧに基づき、Ｃ９のコア２１Ａの処理時間が“１５”に変化したことを認識する。その結果、制御部３５は、図１１Ｆに示す割当テーブル３３内の機能Ｆ１のコア番号Ｃ９の処理時間３３Ｃを“‐”から“１５”μ秒、コア単位時間３３Ｄを“１０”μ秒から“５”μ秒に更新する。そして、機能Ｆ１のコア単位時間が減少する。
【００５３】
本実施例の制御部３５は、コア２１Ａ毎の受信処理時間に基づき、受信処理内の機能毎に使用するコア２１Ａを指定するコアテーブル３２を決定する。制御部３５は、パケットを受信し、コア２１Ａにて当該受信パケットに対する機能を実行する前に、当該受信パケットにコア番号ヘッダ５１を付加する。その結果、マルチコア２１の受信処理に関わる処理負担を分散化できる。コア２１Ａは、受信パケットに付加されたコア番号ヘッダ５１に基づき、自分宛の受信パケットを識別できる。
【００５４】
更に、コア２１Ａは、受信パケットに付加されたコア番号ヘッダ５１に基づき、当該受信パケットが自分宛のパケットの場合に、当該受信パケットに対する機能を実行する。その結果、コア２１Ａは、受信パケットに付加されたコア番号ヘッダ５１に基づき、自分宛の受信パケットの機能処理を実行できる。
【００５５】
制御部３５は、受信パケットの処理開始時刻と当該受信パケットの処理終了時刻との差分に基づき受信処理時間を算出する。その結果、受信パケットの受信処理時間を簡単に特定できる。
【００５６】
制御部３５は、機能毎のコア単位時間が所定閾値を超えた場合に、当該所定閾値を超えた当該機能に、複数のコア２１Ａの内、任意のコア２１Ａを追加する。すなわち、コア単位時間が所定閾値を超えた機能に割当てるコア２１Ａを動的に変更する。その結果、マルチコア２１全体の受信処理に関わる処理負担を分散できる。
【００５７】
本実施例では、コア２１Ａの稼働率により、受信処理内の機能に割り当てるコア数を動的に変更する。その結果、受信パケットに対する各機能を、複数のコア２１Ａにおける処理稼働率の偏り無く使用して、マルチコア２１全体として効率的な処理を可能にし、マルチコア性能を最大限に活用できる。
【００５８】
尚、上記実施例では、割当テーブル３３を参照し、機能毎のコア単位時間が閾値を超えた場合に当該機能に新たなコアを追加した。しかしながら、機能毎に割当済みのコアの内、処理時間が最大のコアを外して新たなコアに入れ替え、若しくは、入れ替えて、更に、新たなコアを追加しても良く、適宜変更可能である。
【００５９】
また、上記実施例では、ＮＰＵ１３内にマルチコア２１及びアクセラレータ２２を内蔵したが、これに限定されるものではない。例えば、マルチコア２１内の一部のコア２１Ａに、アクセラレータ２２の機能を実行させるようにしても良い。ＮＰＵ１３にＦＰＧＡ(Field-Programmable  Gate  Array)を接続し、ＦＰＧＡにアクセラレータ２２を実装しても良く、適宜変更可能である。
【００６０】
また、図示した各部の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
【００６１】
更に、各装置で行われる各種処理機能は、ＣＰＵ（Central  Processing  Unit）（又はＭＰＵ（Micro  Processing  Unit）、ＭＣＵ（Micro  Controller  Unit）等のマイクロ・コンピュータ）上で、その全部又は任意の一部を実行するようにしても良い。また、各種処理機能は、ＣＰＵ（又はＭＰＵ、ＭＣＵ等のマイクロ・コンピュータ）で解析実行するプログラム上、又はワイヤードロジックによるハードウェア上で、その全部又は任意の一部を実行するようにしても良いことは言うまでもない。
【００６２】
ところで、本実施例で説明した各種の処理は、予め用意されたプログラムを情報処理装置内のＣＰＵ等のプロセッサで実行させることによって実現できる。そこで、以下では、上記実施例と同様の機能を有するプログラムを実行する情報処理装置の一例を説明する。図１２は、パケット処理プログラムを実行する情報処理装置の一例を示す説明図である。
【００６３】
図１２に示すパケット処理プログラムを実行する情報処理装置１００は、通信部１１０と、マルチコアプロセッサ１２０と、ＲＡＭ（Random  Access  Memory）１３０と、ＲＯＭ(read  Only  Memory)１４０と、ＣＰＵ１５０とを有する。更に、通信部１１０、マルチコアプロセッサ１２０、ＲＡＭ１３０、ＲＯＭ１４０及びＣＰＵ１５０は、バス１６０を介して接続される。通信部１１０は、パケットを受信する。マルチコアプロセッサ１２０は、受信パケットの受信処理内の機能を実行する複数のコアを有する。
【００６４】
そして、ＲＯＭ１４０には、上記実施例と同様の機能を発揮するパケット処理プログラムが予め記憶されている。ＲＯＭ１４０は、パケット処理プログラムとして決定プログラム１４０Ａ及び付加プログラム１４０Ｂが記憶されている。尚、ＲＯＭ１４０ではなく、図示せぬドライブでコンピュータ読取可能な記録媒体にパケット処理プログラムが記録されていても良い。また、記録媒体としては、例えば、ＣＤ−ＲＯＭ、ＤＶＤディスク、ＵＳＢメモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ等でも良い。
【００６５】
そして、ＣＰＵ１５０は、決定プログラム１４０ＡをＲＯＭ１４０から読み出して決定プロセス１５０Ａとして機能する。更に、ＣＰＵ１５０は、付加プログラム１４０ＢをＲＯＭ１４０から読み出して付加プロセス１５０Ｂとして機能する。
【００６６】
ＣＰＵ１５０は、コア毎の受信処理時間に基づき、受信処理内の機能毎に使用するコアを指定する方路情報を決定する。ＣＰＵ１５０は、パケットを受信し、コアにて当該受信パケットに対する機能を実行する前に、当該受信パケットに決定された方路情報を付加する。その結果、マルチコアプロセッサ１２０全体の受信処理の各機能の処理負荷を分散化できる。
【符号の説明】
【００６７】
２  ＩＦカード
１３  ＮＰＵ
２１  マルチコア
２１Ａ  コア
２２  アクセラレータ
２３  受信部
３２  コアテーブル
３３  割当テーブル
３５  制御部
３５Ａ  決定部
３５Ｂ  付加部
【図１】
2018136782.tif 000003
【図２】
2018136782.tif 000004
【図３】
2018136782.tif 000005
【図４】
2018136782.tif 000006
【図５】
2018136782.tif 000007
【図６】
2018136782.tif 000008
【図７】
2018136782.tif 000009
【図８】
2018136782.tif 000010
【図９】
2018136782.tif 000011
【図１０】
2018136782.tif 000012
【図１１Ａ】
2018136782.tif 000013
【図１１Ｂ】
2018136782.tif 000014
【図１１Ｃ】
2018136782.tif 000015
【図１１Ｄ】
2018136782.tif 000016
【図１１Ｅ】
2018136782.tif 000017
【図１１Ｆ】
2018136782.tif 000018
【図１２】
2018136782.tif 000019